feat(用户管理): 添加设备ID筛选用户列表功能
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m38s

在用户列表查询中新增设备ID筛选条件,支持通过设备ID或设备标识符查询关联用户
This commit is contained in:
shanshanzhong 2025-12-14 19:10:15 -08:00
parent d7b56f3edc
commit 1f5eb2784d
4 changed files with 81 additions and 69 deletions

View File

@ -21,6 +21,7 @@ type (
UserId *int64 `form:"user_id,omitempty"`
SubscribeId *int64 `form:"subscribe_id,omitempty"`
UserSubscribeId *int64 `form:"user_subscribe_id,omitempty"`
DeviceId string `form:"device_id,omitempty"`
}
// GetUserListResponse
GetUserListResponse {
@ -292,4 +293,3 @@ service ppanel {
@handler GetUserLoginLogs
get /login/logs (GetUserLoginLogsRequest) returns (GetUserLoginLogsResponse)
}

View File

@ -32,6 +32,7 @@ func (l *GetUserListLogic) GetUserList(req *types.GetUserListRequest) (*types.Ge
Search: req.Search,
SubscribeId: req.SubscribeId,
UserSubscribeId: req.UserSubscribeId,
DeviceId: req.DeviceId,
Order: "DESC",
})
if err != nil {

View File

@ -3,6 +3,7 @@ package user
import (
"context"
"fmt"
"strconv"
"time"
"github.com/perfect-panel/server/internal/model/order"
@ -60,6 +61,7 @@ type UserFilterParams struct {
UserId *int64
SubscribeId *int64
UserSubscribeId *int64
DeviceId string
Order string // Order by id, e.g., "desc"
}
@ -140,6 +142,14 @@ func (m *customUserModel) QueryPageList(ctx context.Context, page, size int, fil
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.DeviceId != "" {
conn = conn.Joins("LEFT JOIN user_device ON user.id = user_device.user_id")
if id, err := strconv.ParseInt(filter.DeviceId, 10, 64); err == nil {
conn = conn.Where("user_device.id = ? OR user_device.identifier = ?", id, filter.DeviceId)
} else {
conn = conn.Where("user_device.identifier = ?", filter.DeviceId)
}
}
if filter.UserSubscribeId != nil {
conn = conn.Joins("LEFT JOIN user_subscribe ON user.id = user_subscribe.user_id").
Where("user_subscribe.id =? and `status` IN (0,1)", *filter.UserSubscribeId)

View File

@ -1064,6 +1064,7 @@ type GetUserListRequest struct {
UserId *int64 `form:"user_id,omitempty"`
SubscribeId *int64 `form:"subscribe_id,omitempty"`
UserSubscribeId *int64 `form:"user_subscribe_id,omitempty"`
DeviceId string `form:"device_id,omitempty"`
}
type GetUserListResponse struct {