feat: 增强用户搜索功能,支持通过设备ID哈希进行查找。
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 8m42s

This commit is contained in:
shanshanzhong 2026-03-15 22:02:23 -07:00
parent 79a1eeca1f
commit 1d2f2a594a

View File

@ -8,6 +8,7 @@ import (
"github.com/perfect-panel/server/internal/model/order"
"github.com/perfect-panel/server/internal/model/subscribe"
"github.com/perfect-panel/server/pkg/tool"
"github.com/redis/go-redis/v9"
"gorm.io/gorm"
@ -173,8 +174,16 @@ func (m *customUserModel) QueryPageList(ctx context.Context, page, size int, fil
conn = conn.Where("user.id =?", *filter.UserId)
}
if filter.Search != "" {
conn = conn.Joins("LEFT JOIN user_auth_methods ON user.id = user_auth_methods.user_id").
Where("user_auth_methods.auth_identifier LIKE ?", "%"+filter.Search+"%").Or("user.refer_code like ?", "%"+filter.Search+"%")
// 尝试将搜索词解码为 device_no8位hex → device id
if deviceId, err := tool.HashToDeviceId(filter.Search); err == nil && deviceId > 0 {
conn = conn.Joins("LEFT JOIN user_auth_methods ON user.id = user_auth_methods.user_id").
Joins("LEFT JOIN user_device ON user.id = user_device.user_id").
Where("user_auth_methods.auth_identifier LIKE ? OR user.refer_code LIKE ? OR user_device.id = ?",
"%"+filter.Search+"%", "%"+filter.Search+"%", deviceId)
} else {
conn = conn.Joins("LEFT JOIN user_auth_methods ON user.id = user_auth_methods.user_id").
Where("user_auth_methods.auth_identifier LIKE ?", "%"+filter.Search+"%").Or("user.refer_code like ?", "%"+filter.Search+"%")
}
}
if filter.UserSubscribeId != nil {
conn = conn.Joins("LEFT JOIN user_subscribe ON user.id = user_subscribe.user_id").