VipSearchBuilder 技术文档

功能简介

VipSearchBuilder 是一个用于构建会员(Vip)搜索条件的工具类,支持多种搜索方式的组合查询,适用于 xorm 查询框架。

使用方法

基础用法

go 复制代码
cond := NewVipSearchBuilder(engine).
    SetKeywords("关键词").
    Build()

// 在查询中使用
session.Where(cond).Find(&vips)

带表别名的用法

go 复制代码
cond := NewVipSearchBuilder(engine).
    SetKeywords("关键词").
    SetTableAlias("v").  // 设置表别名为 v
    Build()

// 在 JOIN 查询中使用
session.Join("LEFT", "vip_level l", "v.level_id = l.id").
    Where(cond).
    Find(&results)

搜索规则

1. ID 搜索

  • 格式:以 # 开头加数字
  • 示例:#1001 将精确匹配 ID 为 1001 的会员
  • 实现:buildIDCondition

2. 手机号搜索

  • 11位完整手机号:精确匹配
  • 4位数字:匹配手机号后4位
  • 其他位数数字:前缀匹配
  • 示例:
    • 13800138000:精确匹配此手机号
    • 8000:匹配手机号后4位为 8000 的记录
    • 138:匹配手机号以 138 开头的记录
  • 实现:buildPhoneCondition

3. 姓名搜索

  • 条件:关键词包含中文字符
  • 匹配方式:模糊匹配(包含)
  • 示例:张三 将匹配姓名中包含"张三"的记录
  • 实现:buildNameCondition

4. 拼音搜索

  • 条件:关键词全部为英文字母
  • 匹配范围:全拼和首字母缩写
  • 不区分大小写
  • 示例:
    • zhang:匹配拼音包含 "zhang" 的记录
    • zs:匹配首字母缩写包含 "zs" 的记录
  • 实现:buildPinyinCondition

数据库兼容性

  • 自动识别 MySQL 和 SQLite 数据库
  • 针对手机号后4位匹配使用不同的 SQL 函数:
    • MySQL: RIGHT(phone, 4)
    • SQLite: substr(phone, -4)

方法说明

构造方法

go 复制代码
func NewVipSearchBuilder(engine *xorm.Engine) *VipSearchBuilder
  • 参数:xorm 引擎实例
  • 返回:搜索构建器实例

设置方法

SetKeywords

go 复制代码
func (b *VipSearchBuilder) SetKeywords(keywords string) *VipSearchBuilder
  • 功能:设置搜索关键词
  • 参数:搜索关键词
  • 特性:自动去除前后空白字符
  • 返回:构建器实例(支持链式调用)

SetTableAlias

go 复制代码
func (b *VipSearchBuilder) SetTableAlias(alias string) *VipSearchBuilder
  • 功能:设置表别名
  • 参数:表别名
  • 返回:构建器实例(支持链式调用)

构建方法

go 复制代码
func (b *VipSearchBuilder) Build() builder.Cond
  • 功能:构建最终的查询条件
  • 返回:xorm 的 builder.Cond 类型条件
  • 特性:空关键词时返回空条件

注意事项

  1. 必须提供有效的 xorm.Engine 实例
  2. 关键词为空时返回空条件
  3. 表别名是可选的,不设置时直接使用字段名
  4. 所有搜索条件之间是 OR 关系

依赖

相关推荐
任沫7 小时前
Agent之Function Call
javascript·人工智能·go
唐青枫14 小时前
别再把 interface 当万能盒子:Go 接口从隐式实现到项目解耦
go
tyung3 天前
Go 手写有界 SPSC 环形队列:无 CAS、无锁、Cache 友好的无锁模型
后端·go
喵个咪4 天前
技术复盘:基于 go-wind-cms 的官网+商城双业务渐进拆分实战
后端·架构·go
止语Lab4 天前
Go context 超时传播:你以为设了就安全了
go
踏着七彩祥云的小丑4 天前
Go学习第9天:并发编程 + 文件操作 + 正则表达式
学习·golang·正则表达式·go
止语Lab5 天前
Go 代码生成的三层认知:从忍住不用到自己造轮子
go
协享科技5 天前
AI 视频理解:让 Agent 看视频并总结内容
人工智能·go·音视频·agent·ai编程
曲幽5 天前
掏出手机就能搭个 WebDAV 同步服务器?这操作有点香
go·termux·tampermonkey·sync·webdav·filebrowser·gowebdav·koreader
Code_Artist6 天前
🦜用 GoAI 从零打造一个 AI Agent 脚手架工程:重新定义智能体开发范式!
go·agent·ai编程