getsearchlistnologinlogic.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package logic
  2. import (
  3. MC "app.yhyue.com/moapp/jybase/common"
  4. "context"
  5. "fmt"
  6. "jyBXCore/rpc/entity"
  7. IC "jyBXCore/rpc/init"
  8. "jyBXCore/rpc/util"
  9. "log"
  10. "strings"
  11. "time"
  12. "jyBXCore/rpc/internal/svc"
  13. "jyBXCore/rpc/type/bxcore"
  14. "github.com/zeromicro/go-zero/core/logx"
  15. )
  16. type GetSearchListNoLoginLogic struct {
  17. ctx context.Context
  18. svcCtx *svc.ServiceContext
  19. logx.Logger
  20. }
  21. func NewGetSearchListNoLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetSearchListNoLoginLogic {
  22. return &GetSearchListNoLoginLogic{
  23. ctx: ctx,
  24. svcCtx: svcCtx,
  25. Logger: logx.WithContext(ctx),
  26. }
  27. }
  28. // 未登录用户搜索结果列表
  29. func (l *GetSearchListNoLoginLogic) GetSearchListNoLogin(in *bxcore.SearchReq) (*bxcore.SearchResp, error) {
  30. defer MC.Catch()
  31. res := &bxcore.SearchData{
  32. Count: 0,
  33. List: []*bxcore.SearchList{},
  34. InterceptLimit: int64(MC.IntAllDef(IC.C.KeywordsLimit, 35)),
  35. }
  36. //初始化搜索对象
  37. ks := entity.NewKeyWordsSearch()
  38. var selectType []string
  39. selectTypeSplit := strings.Split(in.SelectType, ",")
  40. // 未登录用户只能搜标题和正文
  41. for i := 0; i < len(selectTypeSplit); i++ {
  42. if selectTypeSplit[i] == "title" || selectTypeSplit[i] == "content" {
  43. selectType = append(selectType, selectTypeSplit[i])
  44. }
  45. }
  46. if len(selectType) == 0 {
  47. selectType = []string{"title", "content"}
  48. }
  49. //
  50. in.SelectType = strings.Join(selectType, ",")
  51. //处理搜索条件
  52. heightWords := ks.SearchParamsHandle(in)
  53. if in.PageNum < 0 && in.PageSize < 0 {
  54. return &bxcore.SearchResp{
  55. Data: res,
  56. ErrMsg: "",
  57. ErrCode: 0,
  58. }, nil
  59. }
  60. //判断是否是空搜索,如果是空搜索,查缓存数据
  61. if ks.IsEmptySearch(in) {
  62. res.List, res.Count, res.Total = ks.GetBidSearchListByCacheNoLogin(in, l.svcCtx.Config.NoLoginSearch.Switch)
  63. return &bxcore.SearchResp{
  64. Data: res,
  65. ErrMsg: "",
  66. ErrCode: 0,
  67. }, nil
  68. }
  69. in.Subtype = "招标预告,招标公告,招标结果,招标信用信息" //"招标预告,招标公告,招标结果,招标信用信息"
  70. in.PublishTime = fmt.Sprintf("%d-%d", time.Now().AddDate(-1, 0, 0).Unix(), time.Now().Unix())
  71. t := time.Now()
  72. //招标信息有效查询
  73. res.IsLimit = 1
  74. //查询数据
  75. searchLimit := util.IsSearchLimit(strings.Split(in.SelectType, ","))
  76. //全文检索限制
  77. if searchLimit {
  78. res.IsLimit = util.IsLimited(in.LimitFlag, in.UserId, in.UserType != "fType", in.IsNew)
  79. if res.IsLimit == 1 { //没有被限制
  80. defer util.Limit()
  81. }
  82. }
  83. //无限制
  84. if res.IsLimit == 1 {
  85. t2 := time.Now()
  86. res.Count, res.Total, res.List = ks.GetBidSearchListNoLogin(in, l.svcCtx.Config.NoLoginSearch.Switch) //util.GetBidSearchData(in)
  87. log.Println("未登录查询耗时:", time.Since(t2))
  88. res.KeyWords = strings.Join(heightWords, " ")
  89. res.InterceptOtherWords = in.InterceptOtherWords
  90. res.InterceptKeyWords = in.InterceptKeyWords
  91. }
  92. log.Println("关键词 -全部- 查询耗时:", time.Since(t).Seconds())
  93. return &bxcore.SearchResp{
  94. Data: res,
  95. ErrMsg: "",
  96. ErrCode: 0,
  97. }, nil
  98. }