|
@@ -23,9 +23,17 @@ var ErrTokenVersionMismatch = errors.New("token version mismatch")
|
|
|
var _ SysUserModel = (*customSysUserModel)(nil)
|
|
var _ SysUserModel = (*customSysUserModel)(nil)
|
|
|
|
|
|
|
|
type (
|
|
type (
|
|
|
|
|
+ UserListFilter struct {
|
|
|
|
|
+ Username string
|
|
|
|
|
+ Nickname string
|
|
|
|
|
+ Status int64
|
|
|
|
|
+ DeptId *int64
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
SysUserModel interface {
|
|
SysUserModel interface {
|
|
|
sysUserModel
|
|
sysUserModel
|
|
|
FindListByPage(ctx context.Context, page, pageSize int64) ([]*SysUser, int64, error)
|
|
FindListByPage(ctx context.Context, page, pageSize int64) ([]*SysUser, int64, error)
|
|
|
|
|
+ FindListByFilter(ctx context.Context, filter UserListFilter, page, pageSize int64) ([]*SysUser, int64, error)
|
|
|
FindListByProductMembers(ctx context.Context, productCode string, page, pageSize int64) ([]*SysUser, map[int64]string, int64, error)
|
|
FindListByProductMembers(ctx context.Context, productCode string, page, pageSize int64) ([]*SysUser, map[int64]string, int64, error)
|
|
|
FindByIds(ctx context.Context, ids []int64) ([]*SysUser, error)
|
|
FindByIds(ctx context.Context, ids []int64) ([]*SysUser, error)
|
|
|
FindIdsByDeptId(ctx context.Context, deptId int64) ([]int64, error)
|
|
FindIdsByDeptId(ctx context.Context, deptId int64) ([]int64, error)
|
|
@@ -118,6 +126,48 @@ func (m *customSysUserModel) FindListByPage(ctx context.Context, page, pageSize
|
|
|
return list, total, nil
|
|
return list, total, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (m *customSysUserModel) FindListByFilter(ctx context.Context, filter UserListFilter, page, pageSize int64) ([]*SysUser, int64, error) {
|
|
|
|
|
+ var conditions []string
|
|
|
|
|
+ var args []interface{}
|
|
|
|
|
+
|
|
|
|
|
+ if filter.Username != "" {
|
|
|
|
|
+ conditions = append(conditions, "`username` LIKE ?")
|
|
|
|
|
+ args = append(args, "%"+filter.Username+"%")
|
|
|
|
|
+ }
|
|
|
|
|
+ if filter.Nickname != "" {
|
|
|
|
|
+ conditions = append(conditions, "`nickname` LIKE ?")
|
|
|
|
|
+ args = append(args, "%"+filter.Nickname+"%")
|
|
|
|
|
+ }
|
|
|
|
|
+ if filter.Status > 0 {
|
|
|
|
|
+ conditions = append(conditions, "`status` = ?")
|
|
|
|
|
+ args = append(args, filter.Status)
|
|
|
|
|
+ }
|
|
|
|
|
+ if filter.DeptId != nil {
|
|
|
|
|
+ conditions = append(conditions, "`deptId` = ?")
|
|
|
|
|
+ args = append(args, *filter.DeptId)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ where := ""
|
|
|
|
|
+ if len(conditions) > 0 {
|
|
|
|
|
+ where = " WHERE " + strings.Join(conditions, " AND ")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var total int64
|
|
|
|
|
+ countQuery := fmt.Sprintf("SELECT COUNT(*) FROM %s%s", m.table, where)
|
|
|
|
|
+ if err := m.QueryRowNoCacheCtx(ctx, &total, countQuery, args...); err != nil {
|
|
|
|
|
+ return nil, 0, err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var list []*SysUser
|
|
|
|
|
+ queryArgs := append(args, (page-1)*pageSize, pageSize)
|
|
|
|
|
+ query := fmt.Sprintf("SELECT %s FROM %s%s ORDER BY id DESC LIMIT ?,?", sysUserRows, m.table, where)
|
|
|
|
|
+ if err := m.QueryRowsNoCacheCtx(ctx, &list, query, queryArgs...); err != nil {
|
|
|
|
|
+ return nil, 0, err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return list, total, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type UserWithMemberType struct {
|
|
type UserWithMemberType struct {
|
|
|
SysUser
|
|
SysUser
|
|
|
MemberType string `db:"memberType"`
|
|
MemberType string `db:"memberType"`
|