|
|
@@ -84,6 +84,7 @@ func (s *UserService) Login(username, password string) (*request.UserInfo, error
|
|
|
|
|
|
func (s *UserService) GetUserList(req *model.SysUserSearchReq) (total int, userList []*model.SysUserRes, err error) {
|
|
|
userModel := s.Dao.As("u")
|
|
|
+ isNeedGroup := false
|
|
|
if req.KeyWords != "" {
|
|
|
keyWords := "%" + req.KeyWords + "%"
|
|
|
userModel = userModel.Where("u.user_name like ? or u.nick_name like ?", keyWords, keyWords)
|
|
|
@@ -107,17 +108,26 @@ func (s *UserService) GetUserList(req *model.SysUserSearchReq) (total int, userL
|
|
|
userModel = userModel.WhereLTE("u.created_time", req.EndTime)
|
|
|
}
|
|
|
if len(req.Roles) > 0 {
|
|
|
+ isNeedGroup = true
|
|
|
insql := dao.NewSysRoleDao(s.Tenant).Fields(dao.SysRole.C.Id).WhereIn(dao.SysRole.C.RoleKey, req.Roles).M
|
|
|
userModel = userModel.LeftJoin(dao.SysUserRole.Table, "ur", "u.id=ur.user_id").WhereIn("ur.role_id", insql)
|
|
|
}
|
|
|
if len(req.Posts) > 0 {
|
|
|
+ isNeedGroup = true
|
|
|
insql := dao.NewSysPostDao(s.Tenant).Fields(dao.SysPost.C.Id).WhereIn(dao.SysPost.C.PostCode, req.Posts).M
|
|
|
userModel = userModel.LeftJoin(dao.SysUserPost.Table, "up", "u.id=up.user_id").WhereIn("up.post_id", insql)
|
|
|
}
|
|
|
if len(req.Groups) > 0 {
|
|
|
+ isNeedGroup = true
|
|
|
insql := dao.NewSysGroupDao(s.Tenant).Fields(dao.SysGroup.C.Id).WhereIn(dao.SysGroup.C.GroupCode, req.Groups).M
|
|
|
userModel = userModel.LeftJoin(dao.SysUserGroup.Table, "ug", "u.id=ug.user_id").WhereIn("ug.group_id", insql)
|
|
|
}
|
|
|
+
|
|
|
+ // 连表查询导致数据重复
|
|
|
+ if isNeedGroup {
|
|
|
+ userModel = userModel.GroupBy("u.id")
|
|
|
+ }
|
|
|
+
|
|
|
total, err = userModel.Count()
|
|
|
if err != nil {
|
|
|
return
|