功能简介
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)
- MySQL:
方法说明
构造方法
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 类型条件
- 特性:空关键词时返回空条件
注意事项
- 必须提供有效的 xorm.Engine 实例
- 关键词为空时返回空条件
- 表别名是可选的,不设置时直接使用字段名
- 所有搜索条件之间是 OR 关系