作者 yangfu

可见用户分组

@@ -59,6 +59,7 @@ type ( @@ -59,6 +59,7 @@ type (
59 DepartmentListRequest { 59 DepartmentListRequest {
60 Page int `json:"page"` 60 Page int `json:"page"`
61 Size int `json:"size"` 61 Size int `json:"size"`
  62 + IncludeRootCompany bool `json:"includeRootCompany,optional"` // 包含公司(把公司当作部门作为顶级节点 部门ID:0)
62 } 63 }
63 64
64 DepartmentListResponse { 65 DepartmentListResponse {
@@ -209,7 +209,7 @@ type( @@ -209,7 +209,7 @@ type(
209 ArticleId int64 `json:"articleId,optional"` // 按文章ID(返回文章可见的用户) 209 ArticleId int64 `json:"articleId,optional"` // 按文章ID(返回文章可见的用户)
210 RoleId int64 `json:"roleId,optional"` // 按角色角色关联的用户 210 RoleId int64 `json:"roleId,optional"` // 按角色角色关联的用户
211 Keywords string `json:"keywords,optional"` // 按关键字搜索(名称) 211 Keywords string `json:"keywords,optional"` // 按关键字搜索(名称)
212 - DepartmentId int64 `json:"departmentId,optional"` // 按部门过滤 212 + DepartmentId *int64 `json:"departmentId,optional"` // 按部门过滤
213 } 213 }
214 MiniUserNewsRequest{ 214 MiniUserNewsRequest{
215 AuthorId int64 `json:"authorId,optional"` // 特定作者ID 215 AuthorId int64 `json:"authorId,optional"` // 特定作者ID
@@ -274,7 +274,7 @@ type( @@ -274,7 +274,7 @@ type(
274 Position string `json:"position"`// 职位 274 Position string `json:"position"`// 职位
275 } 275 }
276 Department struct { 276 Department struct {
277 - Id int64 `json:"id,omitempty"` // 部门ID 277 + Id int64 `json:"id"` // 部门ID
278 CompanyId int64 `json:"companyId"` // 公司ID 278 CompanyId int64 `json:"companyId"` // 公司ID
279 ParentId int64 `json:"parentId"` // 父级ID 279 ParentId int64 `json:"parentId"` // 父级ID
280 Name string `json:"name"` // 部门名称 280 Name string `json:"name"` // 部门名称
@@ -39,6 +39,17 @@ func (l *SystemListLogic) SystemList(req *types.DepartmentListRequest) (resp *ty @@ -39,6 +39,17 @@ func (l *SystemListLogic) SystemList(req *types.DepartmentListRequest) (resp *ty
39 Total: total, 39 Total: total,
40 List: make([]types.Department, 0), 40 List: make([]types.Department, 0),
41 } 41 }
  42 + if req.IncludeRootCompany {
  43 + company, _ := l.svcCtx.CompanyRepository.FindOne(l.ctx, conn, userToken.CompanyId)
  44 + if company != nil {
  45 + resp.List = append(resp.List, types.Department{
  46 + Id: 0,
  47 + CompanyId: company.Id,
  48 + ParentId: -1,
  49 + Name: company.Name,
  50 + })
  51 + }
  52 + }
42 for _, item := range list { 53 for _, item := range list {
43 to := types.Department{ 54 to := types.Department{
44 Id: item.Id, 55 Id: item.Id,
@@ -43,11 +43,15 @@ func (l *MiniAtUsersListLogic) MiniAtUsersList(req *types.MiniUsersListRequest) @@ -43,11 +43,15 @@ func (l *MiniAtUsersListLogic) MiniAtUsersList(req *types.MiniUsersListRequest)
43 onlyUsers = article.WhoRead 43 onlyUsers = article.WhoRead
44 } 44 }
45 } 45 }
46 - if _, users, err = l.svcCtx.UserRepository.FindDepartmentUsers(l.ctx, conn, userToken.CompanyId, domain.NewQueryOptions().  
47 - WithKV("name", req.Keywords).WithKV("departmentId", req.DepartmentId).WithFindOnly()); err != nil { 46 + queryOptions := domain.NewQueryOptions().
  47 + WithKV("name", req.Keywords).WithFindOnly()
  48 + if req.DepartmentId != nil && *req.DepartmentId > 0 {
  49 + queryOptions.WithKV("departmentId", *req.DepartmentId)
  50 + }
  51 + if _, users, err = l.svcCtx.UserRepository.FindDepartmentUsers(l.ctx, conn, userToken.CompanyId, queryOptions); err != nil {
48 return nil, xerr.NewErrMsgErr("用户列表获取失败", err) 52 return nil, xerr.NewErrMsgErr("用户列表获取失败", err)
49 } 53 }
50 - if len(onlyUsers) > 0 { 54 + if len(onlyUsers) > 0 || (req.DepartmentId != nil && *req.DepartmentId == 0) {
51 onlyUsersMap := lo.KeyBy(onlyUsers, func(item int64) int64 { 55 onlyUsersMap := lo.KeyBy(onlyUsers, func(item int64) int64 {
52 return item 56 return item
53 }) 57 })
@@ -55,6 +59,11 @@ func (l *MiniAtUsersListLogic) MiniAtUsersList(req *types.MiniUsersListRequest) @@ -55,6 +59,11 @@ func (l *MiniAtUsersListLogic) MiniAtUsersList(req *types.MiniUsersListRequest)
55 if _, ok := onlyUsersMap[item.Id]; ok { 59 if _, ok := onlyUsersMap[item.Id]; ok {
56 return false 60 return false
57 } 61 }
  62 + if req.DepartmentId != nil && *req.DepartmentId == 0 {
  63 + if len(item.Departments) > 0 {
  64 + return false
  65 + }
  66 + }
58 return true 67 return true
59 }) 68 })
60 } 69 }
@@ -562,7 +562,7 @@ type MiniUsersListRequest struct { @@ -562,7 +562,7 @@ type MiniUsersListRequest struct {
562 ArticleId int64 `json:"articleId,optional"` // 按文章ID(返回文章可见的用户) 562 ArticleId int64 `json:"articleId,optional"` // 按文章ID(返回文章可见的用户)
563 RoleId int64 `json:"roleId,optional"` // 按角色角色关联的用户 563 RoleId int64 `json:"roleId,optional"` // 按角色角色关联的用户
564 Keywords string `json:"keywords,optional"` // 按关键字搜索(名称) 564 Keywords string `json:"keywords,optional"` // 按关键字搜索(名称)
565 - DepartmentId int64 `json:"departmentId,optional"` // 按部门过滤 565 + DepartmentId *int64 `json:"departmentId,optional"` // 按部门过滤
566 } 566 }
567 567
568 type MiniUserNewsRequest struct { 568 type MiniUserNewsRequest struct {
@@ -632,7 +632,7 @@ type Account struct { @@ -632,7 +632,7 @@ type Account struct {
632 } 632 }
633 633
634 type Department struct { 634 type Department struct {
635 - Id int64 `json:"id,omitempty"` // 部门ID 635 + Id int64 `json:"id"` // 部门ID
636 CompanyId int64 `json:"companyId"` // 公司ID 636 CompanyId int64 `json:"companyId"` // 公司ID
637 ParentId int64 `json:"parentId"` // 父级ID 637 ParentId int64 `json:"parentId"` // 父级ID
638 Name string `json:"name"` // 部门名称 638 Name string `json:"name"` // 部门名称
@@ -1729,6 +1729,7 @@ type DepartmentUpdateRequest struct { @@ -1729,6 +1729,7 @@ type DepartmentUpdateRequest struct {
1729 type DepartmentListRequest struct { 1729 type DepartmentListRequest struct {
1730 Page int `json:"page"` 1730 Page int `json:"page"`
1731 Size int `json:"size"` 1731 Size int `json:"size"`
  1732 + IncludeRootCompany bool `json:"includeRootCompany,optional"` // 包含公司(把公司当作部门作为顶级节点 部门ID:0)
1732 } 1733 }
1733 1734
1734 type DepartmentListResponse struct { 1735 type DepartmentListResponse struct {