diff --git a/internal/model/user/model.go b/internal/model/user/model.go index b03f399..d457520 100644 --- a/internal/model/user/model.go +++ b/internal/model/user/model.go @@ -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_no(8位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").