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 关系

依赖

相关推荐
啊汉1 天前
古文观芷App搜索方案深度解析:打造极致性能的古文搜索引擎
go·软件随想
asaotomo2 天前
一款 AI 驱动的新一代安全运维代理 —— DeepSentry(深哨)
运维·人工智能·安全·ai·go
码界奇点2 天前
基于Gin与GORM的若依后台管理系统设计与实现
论文阅读·go·毕业设计·gin·源代码管理
迷迭香与樱花3 天前
Gin 框架
go·gin
只是懒得想了3 天前
用Go通道实现并发安全队列:从基础到最佳实践
开发语言·数据库·golang·go·并发安全
fenglllle4 天前
使用fyne做一个桌面ipv4网段计算程序
开发语言·go
码界奇点5 天前
基于Wails框架的Ollama模型桌面管理系统设计与实现
go·毕业设计·llama·源代码管理
csdn_aspnet6 天前
Go语言常用算法深度解析:并发与性能的优雅实践
后端·golang·go
吴老弟i7 天前
Go 多版本管理实战指南
golang·go
Grassto7 天前
HTTP请求超时?大数据量下的网关超时问题处理方案,流式处理,附go语言实现
后端·http·golang·go