作者 yangfu

公司搜索修改

@@ -55,16 +55,18 @@ type ( @@ -55,16 +55,18 @@ type (
55 Flag int `json:"flag,optional"` // 1:用户已加入的 2:用户未加入的公司 55 Flag int `json:"flag,optional"` // 1:用户已加入的 2:用户未加入的公司
56 UserId int64 `json:"userId,optional"` // 按用户搜索(用户所加入的企业) 56 UserId int64 `json:"userId,optional"` // 按用户搜索(用户所加入的企业)
57 Code string `json:"code,optional"` // 按编码搜索 57 Code string `json:"code,optional"` // 按编码搜索
  58 + Content string `json:"content,optional"` // 按公司名/编码搜索
58 } 59 }
59 CompanySearchResponse { 60 CompanySearchResponse {
60 List []Company `json:"list"` 61 List []Company `json:"list"`
61 Total int64 `json:"total"` 62 Total int64 `json:"total"`
62 } 63 }
63 Company { 64 Company {
64 - Id int64 `json:"id,omitempty"` // 唯一标识 65 + Id int64 `json:"id,string,omitempty"` // 唯一标识
65 Name string `json:"name,omitempty"` // 名称 66 Name string `json:"name,omitempty"` // 名称
66 Code string `json:"code,omitempty"` // 编码(搜索使用,4位字母数字) 67 Code string `json:"code,omitempty"` // 编码(搜索使用,4位字母数字)
67 Logo string `json:"logo,omitempty"` // 公司LOGO 68 Logo string `json:"logo,omitempty"` // 公司LOGO
  69 + JoinedFlag int `json:"joinedFlag"` // 已加入标识(1:已加入 其他:未加入)
68 } 70 }
69 ) 71 )
70 72
@@ -145,6 +145,7 @@ type( @@ -145,6 +145,7 @@ type(
145 MiniUserFollowedSearchRequest{ 145 MiniUserFollowedSearchRequest{
146 Page int `json:"page,optional"` 146 Page int `json:"page,optional"`
147 Size int `json:"size,optional"` 147 Size int `json:"size,optional"`
  148 + Name string `json:"name,optional"`
148 } 149 }
149 MiniUserFollowedSearchResponse{ 150 MiniUserFollowedSearchResponse{
150 List []*UserFollowItem `json:"users"` 151 List []*UserFollowItem `json:"users"`
@@ -40,6 +40,7 @@ func (l *MiniCompanySearchJoinedLogic) MiniCompanySearchJoined(req *types.Compan @@ -40,6 +40,7 @@ func (l *MiniCompanySearchJoinedLogic) MiniCompanySearchJoined(req *types.Compan
40 if req.Page != 0 { 40 if req.Page != 0 {
41 queryOptions.WithOffsetLimit(req.Page, req.Size) 41 queryOptions.WithOffsetLimit(req.Page, req.Size)
42 } 42 }
  43 + queryOptions.WithKV("likeCodeOrName", req.Content)
43 user, err = l.svcCtx.UserRepository.FindOne(l.ctx, conn, userToken.UserId) 44 user, err = l.svcCtx.UserRepository.FindOne(l.ctx, conn, userToken.UserId)
44 if err != nil { 45 if err != nil {
45 return nil, xerr.NewErrMsgErr("账号有误", err) 46 return nil, xerr.NewErrMsgErr("账号有误", err)
@@ -59,14 +60,23 @@ func (l *MiniCompanySearchJoinedLogic) MiniCompanySearchJoined(req *types.Compan @@ -59,14 +60,23 @@ func (l *MiniCompanySearchJoinedLogic) MiniCompanySearchJoined(req *types.Compan
59 if err != nil { 60 if err != nil {
60 return nil, xerr.NewErrMsgErr("公司列表获取失败", err) 61 return nil, xerr.NewErrMsgErr("公司列表获取失败", err)
61 } 62 }
62 - } else { 63 + } else if req.Flag == 2 {
63 total, companyList, err = l.svcCtx.CompanyRepository.Find(l.ctx, conn, queryOptions.MustWithKV("excludeIds", companyIds)) 64 total, companyList, err = l.svcCtx.CompanyRepository.Find(l.ctx, conn, queryOptions.MustWithKV("excludeIds", companyIds))
64 if err != nil { 65 if err != nil {
65 return nil, xerr.NewErrMsgErr("公司列表获取失败", err) 66 return nil, xerr.NewErrMsgErr("公司列表获取失败", err)
66 } 67 }
  68 + } else {
  69 + total, companyList, err = l.svcCtx.CompanyRepository.Find(l.ctx, conn, queryOptions)
  70 + if err != nil {
  71 + return nil, xerr.NewErrMsgErr("公司列表获取失败", err)
  72 + }
67 } 73 }
68 lo.ForEach(companyList, func(item *domain.Company, index int) { 74 lo.ForEach(companyList, func(item *domain.Company, index int) {
69 - resp.List = append(resp.List, NewCompany(item)) 75 + company := NewCompany(item)
  76 + if lo.Contains(companyIds, company.Id) {
  77 + company.JoinedFlag = 1
  78 + }
  79 + resp.List = append(resp.List, company)
70 }) 80 })
71 resp.Total = total 81 resp.Total = total
72 return 82 return
@@ -6,6 +6,7 @@ import ( @@ -6,6 +6,7 @@ import (
6 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" 6 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" 7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" 8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
  9 + "strings"
9 10
10 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" 11 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
11 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" 12 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
@@ -47,22 +48,37 @@ func (l *MiniUserFollowerLogic) MiniUserFollower(req *types.MiniUserFollowedSear @@ -47,22 +48,37 @@ func (l *MiniUserFollowerLogic) MiniUserFollower(req *types.MiniUserFollowedSear
47 Total: total, 48 Total: total,
48 List: make([]*types.UserFollowItem, 0), 49 List: make([]*types.UserFollowItem, 0),
49 } 50 }
50 - lo.ForEach(users, func(item int64, index int) {  
51 - if foundUser, _ := l.svcCtx.UserRepository.FindOne(l.ctx, conn, item); foundUser != nil {  
52 - var companyName = ""  
53 - if company, _ := domain.LazyLoad(companyMap, l.ctx, conn, foundUser.CompanyId, l.svcCtx.CompanyRepository.FindOne); company != nil {  
54 - companyName = company.Name 51 + for {
  52 + if offset > len(user.Follower) {
  53 + break
  54 + }
  55 + users = lo.Slice(users, offset, offset+limit)
  56 + lo.ForEach(users, func(item int64, index int) {
  57 + if foundUser, _ := l.svcCtx.UserRepository.FindOne(l.ctx, conn, item); foundUser != nil {
  58 + if len(req.Name) > 0 && !strings.Contains(foundUser.Name, req.Name) {
  59 + return
  60 + }
  61 + var companyName = ""
  62 + if company, _ := domain.LazyLoad(companyMap, l.ctx, conn, foundUser.CompanyId, l.svcCtx.CompanyRepository.FindOne); company != nil {
  63 + companyName = company.Name
  64 + }
  65 + resp.List = append(resp.List, &types.UserFollowItem{
  66 + Id: foundUser.Id,
  67 + Name: foundUser.Name,
  68 + CompanyName: companyName,
  69 + Avatar: foundUser.Avatar,
  70 + Position: foundUser.Position,
  71 + Followed: true,
  72 + MutualFollowed: lo.Contains(user.Following, item),
  73 + })
55 } 74 }
56 - resp.List = append(resp.List, &types.UserFollowItem{  
57 - Id: foundUser.Id,  
58 - Name: foundUser.Name,  
59 - CompanyName: companyName,  
60 - Avatar: foundUser.Avatar,  
61 - Position: foundUser.Position,  
62 - Followed: true,  
63 - MutualFollowed: lo.Contains(user.Following, item),  
64 - }) 75 + })
  76 + if len(resp.List) >= limit {
  77 + break
65 } 78 }
66 - }) 79 + req.Page += 1
  80 + offset, limit = domain.OffsetLimit(req.Page, req.Size)
  81 + }
  82 +
67 return 83 return
68 } 84 }
@@ -3,12 +3,12 @@ package user @@ -3,12 +3,12 @@ package user
3 import ( 3 import (
4 "context" 4 "context"
5 "github.com/samber/lo" 5 "github.com/samber/lo"
  6 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
  7 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
6 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" 8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" 9 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" 10 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
9 -  
10 - "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"  
11 - "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" 11 + "strings"
12 12
13 "github.com/zeromicro/go-zero/core/logx" 13 "github.com/zeromicro/go-zero/core/logx"
14 ) 14 )
@@ -42,27 +42,40 @@ func (l *MiniUserFollowingLogic) MiniUserFollowing(req *types.MiniUserFollowedSe @@ -42,27 +42,40 @@ func (l *MiniUserFollowingLogic) MiniUserFollowing(req *types.MiniUserFollowedSe
42 total = int64(len(users)) 42 total = int64(len(users))
43 offset, limit = domain.OffsetLimit(req.Page, req.Size) 43 offset, limit = domain.OffsetLimit(req.Page, req.Size)
44 ) 44 )
45 - users = lo.Slice(users, offset, offset+limit)  
46 resp = &types.MiniUserFollowedSearchResponse{ 45 resp = &types.MiniUserFollowedSearchResponse{
47 Total: total, 46 Total: total,
48 List: make([]*types.UserFollowItem, 0), 47 List: make([]*types.UserFollowItem, 0),
49 } 48 }
50 - lo.ForEach(users, func(item int64, index int) {  
51 - if foundUser, _ := l.svcCtx.UserRepository.FindOne(l.ctx, conn, item); foundUser != nil {  
52 - var companyName = ""  
53 - if company, _ := domain.LazyLoad(companyMap, l.ctx, conn, foundUser.CompanyId, l.svcCtx.CompanyRepository.FindOne); company != nil {  
54 - companyName = company.Name 49 + for {
  50 + if offset > len(user.Following) {
  51 + break
  52 + }
  53 + users = lo.Slice(users, offset, offset+limit)
  54 + lo.ForEach(users, func(item int64, index int) {
  55 + if foundUser, _ := l.svcCtx.UserRepository.FindOne(l.ctx, conn, item); foundUser != nil {
  56 + if len(req.Name) > 0 && !strings.Contains(foundUser.Name, req.Name) {
  57 + return
  58 + }
  59 + var companyName = ""
  60 + if company, _ := domain.LazyLoad(companyMap, l.ctx, conn, foundUser.CompanyId, l.svcCtx.CompanyRepository.FindOne); company != nil {
  61 + companyName = company.Name
  62 + }
  63 + resp.List = append(resp.List, &types.UserFollowItem{
  64 + Id: foundUser.Id,
  65 + Name: foundUser.Name,
  66 + CompanyName: companyName,
  67 + Avatar: foundUser.Avatar,
  68 + Position: foundUser.Position,
  69 + Followed: true,
  70 + //MutualFollowed: lo.Contains(user.Following, foundUser.Id),
  71 + })
55 } 72 }
56 - resp.List = append(resp.List, &types.UserFollowItem{  
57 - Id: foundUser.Id,  
58 - Name: foundUser.Name,  
59 - CompanyName: companyName,  
60 - Avatar: foundUser.Avatar,  
61 - Position: foundUser.Position,  
62 - Followed: true,  
63 - //MutualFollowed: lo.Contains(user.Following, foundUser.Id),  
64 - }) 73 + })
  74 + if len(resp.List) >= limit {
  75 + break
65 } 76 }
66 - }) 77 + req.Page += 1
  78 + offset, limit = domain.OffsetLimit(req.Page, req.Size)
  79 + }
67 return 80 return
68 } 81 }
@@ -481,8 +481,9 @@ type UserNewsItem struct { @@ -481,8 +481,9 @@ type UserNewsItem struct {
481 } 481 }
482 482
483 type MiniUserFollowedSearchRequest struct { 483 type MiniUserFollowedSearchRequest struct {
484 - Page int `json:"page,optional"`  
485 - Size int `json:"size,optional"` 484 + Page int `json:"page,optional"`
  485 + Size int `json:"size,optional"`
  486 + Name string `json:"name,optional"`
486 } 487 }
487 488
488 type MiniUserFollowedSearchResponse struct { 489 type MiniUserFollowedSearchResponse struct {
@@ -711,11 +712,12 @@ type SystemUserAccountSearchResponse struct { @@ -711,11 +712,12 @@ type SystemUserAccountSearchResponse struct {
711 } 712 }
712 713
713 type CompanySearchRequest struct { 714 type CompanySearchRequest struct {
714 - Page int `json:"page,optional"`  
715 - Size int `json:"size,optional"`  
716 - Flag int `json:"flag,optional"` // 1:用户已加入的 2:用户未加入的公司  
717 - UserId int64 `json:"userId,optional"` // 按用户搜索(用户所加入的企业)  
718 - Code string `json:"code,optional"` // 按编码搜索 715 + Page int `json:"page,optional"`
  716 + Size int `json:"size,optional"`
  717 + Flag int `json:"flag,optional"` // 1:用户已加入的 2:用户未加入的公司
  718 + UserId int64 `json:"userId,optional"` // 按用户搜索(用户所加入的企业)
  719 + Code string `json:"code,optional"` // 按编码搜索
  720 + Content string `json:"content,optional"` // 按公司名/编码搜索
719 } 721 }
720 722
721 type CompanySearchResponse struct { 723 type CompanySearchResponse struct {
@@ -724,10 +726,11 @@ type CompanySearchResponse struct { @@ -724,10 +726,11 @@ type CompanySearchResponse struct {
724 } 726 }
725 727
726 type Company struct { 728 type Company struct {
727 - Id int64 `json:"id,omitempty"` // 唯一标识  
728 - Name string `json:"name,omitempty"` // 名称  
729 - Code string `json:"code,omitempty"` // 编码(搜索使用,4位字母数字)  
730 - Logo string `json:"logo,omitempty"` // 公司LOGO 729 + Id int64 `json:"id,string,omitempty"` // 唯一标识
  730 + Name string `json:"name,omitempty"` // 名称
  731 + Code string `json:"code,omitempty"` // 编码(搜索使用,4位字母数字)
  732 + Logo string `json:"logo,omitempty"` // 公司LOGO
  733 + JoinedFlag int `json:"joinedFlag"` // 已加入标识(1:已加入 其他:未加入)
731 } 734 }
732 735
733 type CompanyPositionsSearchRequest struct { 736 type CompanyPositionsSearchRequest struct {
@@ -2,6 +2,7 @@ package repository @@ -2,6 +2,7 @@ package repository
2 2
3 import ( 3 import (
4 "context" 4 "context"
  5 + "fmt"
5 "github.com/jinzhu/copier" 6 "github.com/jinzhu/copier"
6 "github.com/pkg/errors" 7 "github.com/pkg/errors"
7 "github.com/tiptok/gocomm/pkg/cache" 8 "github.com/tiptok/gocomm/pkg/cache"
@@ -145,6 +146,9 @@ func (repository *CompanyRepository) Find(ctx context.Context, conn transaction. @@ -145,6 +146,9 @@ func (repository *CompanyRepository) Find(ctx context.Context, conn transaction.
145 if v, ok := queryOptions["excludeIds"]; ok { 146 if v, ok := queryOptions["excludeIds"]; ok {
146 tx.Where("id not in (?)", v) 147 tx.Where("id not in (?)", v)
147 } 148 }
  149 + if v, ok := queryOptions["likeCodeOrName"]; ok {
  150 + tx.Where(fmt.Sprintf("code like '%%%v%%' or name like '%%%v%%'", v, v))
  151 + }
148 if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { 152 if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil {
149 return dms, tx.Error 153 return dms, tx.Error
150 } 154 }