Merge branch 'dev' of http://gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss into dev
正在显示
8 个修改的文件
包含
81 行增加
和
15 行删除
@@ -48,6 +48,7 @@ type ( | @@ -48,6 +48,7 @@ type ( | ||
48 | DepartmentUpdateRequest { | 48 | DepartmentUpdateRequest { |
49 | Id int64 `path:"id"` | 49 | Id int64 `path:"id"` |
50 | Name string `json:"name"` | 50 | Name string `json:"name"` |
51 | + Ids []int64 `json:"ids"` // 用户ID | ||
51 | } | 52 | } |
52 | 53 | ||
53 | DepartmentListRequest { | 54 | DepartmentListRequest { |
@@ -14,14 +14,19 @@ info( | @@ -14,14 +14,19 @@ info( | ||
14 | jwt: SystemAuth | 14 | jwt: SystemAuth |
15 | ) | 15 | ) |
16 | service Core { | 16 | service Core { |
17 | + @doc "角色详情" | ||
17 | @handler systemGetRole | 18 | @handler systemGetRole |
18 | get /system/role/:id (RoleGetRequest) returns (RoleGetResponse) | 19 | get /system/role/:id (RoleGetRequest) returns (RoleGetResponse) |
20 | + @doc "角色新增" | ||
19 | @handler systemSaveRole | 21 | @handler systemSaveRole |
20 | post /system/role (RoleSaveRequest) returns (RoleSaveResponse) | 22 | post /system/role (RoleSaveRequest) returns (RoleSaveResponse) |
23 | + @doc "角色删除" | ||
21 | @handler systemDeleteRole | 24 | @handler systemDeleteRole |
22 | delete /system/role/:id (RoleDeleteRequest) returns (RoleDeleteResponse) | 25 | delete /system/role/:id (RoleDeleteRequest) returns (RoleDeleteResponse) |
26 | + @doc "角色更新" | ||
23 | @handler systemUpdateRole | 27 | @handler systemUpdateRole |
24 | put /system/role/:id (RoleUpdateRequest) returns (RoleUpdateResponse) | 28 | put /system/role/:id (RoleUpdateRequest) returns (RoleUpdateResponse) |
29 | + @doc "角色列表搜索" | ||
25 | @handler systemSearchRole | 30 | @handler systemSearchRole |
26 | post /system/role/search (RoleSearchRequest) returns (RoleSearchResponse) | 31 | post /system/role/search (RoleSearchRequest) returns (RoleSearchResponse) |
27 | } | 32 | } |
@@ -31,14 +31,14 @@ func (l *SystemAddLogic) SystemAdd(req *types.DepartmentAddRequest) (resp *types | @@ -31,14 +31,14 @@ func (l *SystemAddLogic) SystemAdd(req *types.DepartmentAddRequest) (resp *types | ||
31 | var userToken = contextdata.GetUserTokenFromCtx(l.ctx) | 31 | var userToken = contextdata.GetUserTokenFromCtx(l.ctx) |
32 | var conn = l.svcCtx.DefaultDBConn() | 32 | var conn = l.svcCtx.DefaultDBConn() |
33 | 33 | ||
34 | - _, list, err := l.svcCtx.DepartmentRepository.Find(l.ctx, conn, domain.NewQueryOptions(). | ||
35 | - WithOffsetLimit(1, 1).WithFindOnly(). | 34 | + total, _, err := l.svcCtx.DepartmentRepository.Find(l.ctx, conn, domain.NewQueryOptions(). |
35 | + WithCountOnly(). | ||
36 | WithKV("companyId", userToken.CompanyId). | 36 | WithKV("companyId", userToken.CompanyId). |
37 | WithKV("name", req.Name)) | 37 | WithKV("name", req.Name)) |
38 | if err != nil { | 38 | if err != nil { |
39 | return nil, err | 39 | return nil, err |
40 | } | 40 | } |
41 | - if len(list) > 0 { | 41 | + if total > 0 { |
42 | return nil, xerr.NewErrMsg("该分组名称已存在(不能重复)") | 42 | return nil, xerr.NewErrMsg("该分组名称已存在(不能重复)") |
43 | } | 43 | } |
44 | 44 |
@@ -31,15 +31,15 @@ func (l *SystemUpdateLogic) SystemUpdate(req *types.DepartmentUpdateRequest) (re | @@ -31,15 +31,15 @@ func (l *SystemUpdateLogic) SystemUpdate(req *types.DepartmentUpdateRequest) (re | ||
31 | var userToken = contextdata.GetUserTokenFromCtx(l.ctx) | 31 | var userToken = contextdata.GetUserTokenFromCtx(l.ctx) |
32 | var conn = l.svcCtx.DefaultDBConn() | 32 | var conn = l.svcCtx.DefaultDBConn() |
33 | 33 | ||
34 | - _, list, err := l.svcCtx.DepartmentRepository.Find(l.ctx, conn, domain.NewQueryOptions(). | ||
35 | - WithOffsetLimit(1, 1).WithCountOnly(). | 34 | + total, _, err := l.svcCtx.DepartmentRepository.Find(l.ctx, conn, domain.NewQueryOptions(). |
35 | + WithCountOnly(). | ||
36 | WithKV("companyId", userToken.CompanyId). | 36 | WithKV("companyId", userToken.CompanyId). |
37 | WithKV("notId", req.Id). // 排除自己 | 37 | WithKV("notId", req.Id). // 排除自己 |
38 | WithKV("name", req.Name)) | 38 | WithKV("name", req.Name)) |
39 | if err != nil { | 39 | if err != nil { |
40 | return nil, err | 40 | return nil, err |
41 | } | 41 | } |
42 | - if len(list) > 0 { | 42 | + if total > 0 { |
43 | return nil, xerr.NewErrMsg("该分组名称已存在(不能重复)") | 43 | return nil, xerr.NewErrMsg("该分组名称已存在(不能重复)") |
44 | } | 44 | } |
45 | 45 | ||
@@ -49,10 +49,59 @@ func (l *SystemUpdateLogic) SystemUpdate(req *types.DepartmentUpdateRequest) (re | @@ -49,10 +49,59 @@ func (l *SystemUpdateLogic) SystemUpdate(req *types.DepartmentUpdateRequest) (re | ||
49 | } | 49 | } |
50 | one.Name = req.Name | 50 | one.Name = req.Name |
51 | 51 | ||
52 | + // 更新分组中的用户Id | ||
53 | + var newIdMap = map[int64]int{} | ||
54 | + for i := range req.Ids { | ||
55 | + newIdMap[req.Ids[i]] = 0 | ||
56 | + } | ||
57 | + | ||
52 | // 更新 | 58 | // 更新 |
53 | err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | 59 | err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { |
54 | _, err = l.svcCtx.DepartmentRepository.UpdateWithVersion(l.ctx, conn, one) | 60 | _, err = l.svcCtx.DepartmentRepository.UpdateWithVersion(l.ctx, conn, one) |
55 | - return err | 61 | + if err != nil { |
62 | + return err | ||
63 | + } | ||
64 | + | ||
65 | + // 获取公司下的所有用户 | ||
66 | + _, users, err := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions(). | ||
67 | + WithFindOnly(). | ||
68 | + WithKV(" companyId", one.CompanyId)) | ||
69 | + if err != nil { | ||
70 | + return err | ||
71 | + } | ||
72 | + | ||
73 | + var findIndex = func(ids []int64, id int64) int { | ||
74 | + for i, _ := range ids { | ||
75 | + if ids[i] == id { | ||
76 | + return i | ||
77 | + } | ||
78 | + } | ||
79 | + return -1 | ||
80 | + } | ||
81 | + for i := range users { | ||
82 | + var user = users[i] | ||
83 | + if _, ok := newIdMap[user.Id]; ok { | ||
84 | + var targetIndex = findIndex(user.Departments, req.Id) | ||
85 | + if targetIndex == -1 { // 归属分组不存在,则新增 | ||
86 | + user.Departments = append(user.Departments) | ||
87 | + _, err = l.svcCtx.UserRepository.UpdateWithVersion(l.ctx, conn, user) | ||
88 | + if err != nil { | ||
89 | + return err | ||
90 | + } | ||
91 | + } | ||
92 | + } else { | ||
93 | + var targetIndex = findIndex(user.Departments, req.Id) | ||
94 | + if targetIndex != -1 { // 归属分组存在,则移除 | ||
95 | + user.Departments = append(user.Departments[:targetIndex], user.Departments[targetIndex+1:]...) // 移除分组ID | ||
96 | + _, err = l.svcCtx.UserRepository.UpdateWithVersion(l.ctx, conn, user) | ||
97 | + if err != nil { | ||
98 | + return err | ||
99 | + } | ||
100 | + } | ||
101 | + } | ||
102 | + } | ||
103 | + | ||
104 | + return nil | ||
56 | }, true) | 105 | }, true) |
57 | if err != nil { | 106 | if err != nil { |
58 | return nil, xerr.NewErrMsgErr("分组修改失败", err) | 107 | return nil, xerr.NewErrMsgErr("分组修改失败", err) |
@@ -33,9 +33,10 @@ func (l *MiniUserDepartmentUsersLogic) MiniUserDepartmentUsers(req *types.MiniUs | @@ -33,9 +33,10 @@ func (l *MiniUserDepartmentUsersLogic) MiniUserDepartmentUsers(req *types.MiniUs | ||
33 | userToken = contextdata.GetUserTokenFromCtx(l.ctx) | 33 | userToken = contextdata.GetUserTokenFromCtx(l.ctx) |
34 | users []*domain.User | 34 | users []*domain.User |
35 | departments []*domain.Department | 35 | departments []*domain.Department |
36 | + groups = make([]DepartmentUser, 0) | ||
36 | ) | 37 | ) |
37 | resp = map[string]interface{}{ | 38 | resp = map[string]interface{}{ |
38 | - "list": make([]DepartmentUser, 0), | 39 | + "list": groups, |
39 | } | 40 | } |
40 | _, departments, err = l.svcCtx.DepartmentRepository.Find(l.ctx, conn, domain.IndexCompanyId(userToken.CompanyId)().WithFindOnly()) | 41 | _, departments, err = l.svcCtx.DepartmentRepository.Find(l.ctx, conn, domain.IndexCompanyId(userToken.CompanyId)().WithFindOnly()) |
41 | if err != nil { | 42 | if err != nil { |
@@ -58,13 +59,17 @@ func (l *MiniUserDepartmentUsersLogic) MiniUserDepartmentUsers(req *types.MiniUs | @@ -58,13 +59,17 @@ func (l *MiniUserDepartmentUsersLogic) MiniUserDepartmentUsers(req *types.MiniUs | ||
58 | } | 59 | } |
59 | if lo.Contains(user.Departments, item.Id) && !groupUserSet.Contains(user.Id) { | 60 | if lo.Contains(user.Departments, item.Id) && !groupUserSet.Contains(user.Id) { |
60 | group.Users = append(group.Users, &domain.User{ | 61 | group.Users = append(group.Users, &domain.User{ |
61 | - Id: user.Id, | ||
62 | - Name: user.Name, | 62 | + Id: user.Id, |
63 | + Name: user.Name, | ||
64 | + PinYinName: user.PinYinName, | ||
63 | }) | 65 | }) |
64 | } | 66 | } |
65 | } | 67 | } |
68 | + groups = append(groups, group) | ||
66 | }) | 69 | }) |
67 | - | 70 | + resp = map[string]interface{}{ |
71 | + "list": groups, | ||
72 | + } | ||
68 | return | 73 | return |
69 | } | 74 | } |
70 | 75 |
@@ -2,6 +2,7 @@ package user | @@ -2,6 +2,7 @@ package user | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "context" | 4 | "context" |
5 | + "github.com/samber/lo" | ||
5 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" | 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" |
6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" |
7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" |
@@ -33,6 +34,9 @@ func (l *SystemUserAccountEnableLogic) SystemUserAccountEnable(req *types.System | @@ -33,6 +34,9 @@ func (l *SystemUserAccountEnableLogic) SystemUserAccountEnable(req *types.System | ||
33 | users []*domain.User | 34 | users []*domain.User |
34 | userToken = contextdata.GetUserTokenFromCtx(l.ctx) | 35 | userToken = contextdata.GetUserTokenFromCtx(l.ctx) |
35 | ) | 36 | ) |
37 | + if !lo.Contains([]int{domain.UserEnable, domain.UserDisable}, req.Status) { | ||
38 | + return nil, xerr.NewErrMsg("启用状态有误") | ||
39 | + } | ||
36 | if _, users, err = l.svcCtx.UserRepository.Find(l.ctx, conn, domain.IndexCompanyId(userToken.CompanyId)().MustWithKV("ids", req.UserIds).WithFindOnly()); err != nil { | 40 | if _, users, err = l.svcCtx.UserRepository.Find(l.ctx, conn, domain.IndexCompanyId(userToken.CompanyId)().MustWithKV("ids", req.UserIds).WithFindOnly()); err != nil { |
37 | return nil, xerr.NewErrMsgErr("公司不存在", err) | 41 | return nil, xerr.NewErrMsgErr("公司不存在", err) |
38 | } | 42 | } |
@@ -50,5 +54,6 @@ func (l *SystemUserAccountEnableLogic) SystemUserAccountEnable(req *types.System | @@ -50,5 +54,6 @@ func (l *SystemUserAccountEnableLogic) SystemUserAccountEnable(req *types.System | ||
50 | }, true); err != nil { | 54 | }, true); err != nil { |
51 | return nil, xerr.NewErrMsgErr("更新启用状态失败", err) | 55 | return nil, xerr.NewErrMsgErr("更新启用状态失败", err) |
52 | } | 56 | } |
57 | + resp = &types.SystemUserAccountEnableResponse{} | ||
53 | return | 58 | return |
54 | } | 59 | } |
@@ -914,8 +914,9 @@ type DepartmentGetResponse struct { | @@ -914,8 +914,9 @@ type DepartmentGetResponse struct { | ||
914 | } | 914 | } |
915 | 915 | ||
916 | type DepartmentUpdateRequest struct { | 916 | type DepartmentUpdateRequest struct { |
917 | - Id int64 `path:"id"` | ||
918 | - Name string `json:"name"` | 917 | + Id int64 `path:"id"` |
918 | + Name string `json:"name"` | ||
919 | + Ids []int64 `json:"ids"` // 用户ID | ||
919 | } | 920 | } |
920 | 921 | ||
921 | type DepartmentListRequest struct { | 922 | type DepartmentListRequest struct { |
@@ -211,8 +211,8 @@ func (repository *UserRepository) FindDepartmentUsers(ctx context.Context, conn | @@ -211,8 +211,8 @@ func (repository *UserRepository) FindDepartmentUsers(ctx context.Context, conn | ||
211 | total int64 | 211 | total int64 |
212 | ) | 212 | ) |
213 | queryFunc := func() (interface{}, error) { | 213 | queryFunc := func() (interface{}, error) { |
214 | - tx = tx.Model(&ms).Order("id desc") | ||
215 | - tx.Select("id", "name", "departments") | 214 | + tx = tx.Model(&ms).Order("pin_yin_name asc") |
215 | + tx.Select("id", "name", "departments", "pin_yin_name") | ||
216 | tx.Where("company_id = ?", companyId) | 216 | tx.Where("company_id = ?", companyId) |
217 | tx.Where("audit_status in (?)", domain.UserAuditStatusPassed) | 217 | tx.Where("audit_status in (?)", domain.UserAuditStatusPassed) |
218 | tx.Where("enable = ?", domain.UserEnable) | 218 | tx.Where("enable = ?", domain.UserEnable) |
-
请 注册 或 登录 后发表评论