searchListLogic.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package logic
  2. import (
  3. IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/api/init"
  4. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/api/internal/svc"
  5. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/api/internal/types"
  6. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/api/internal/util"
  7. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/type/bxcore"
  8. "context"
  9. "github.com/zeromicro/go-zero/core/logx"
  10. "log"
  11. "net/http"
  12. "strings"
  13. "time"
  14. "app.yhyue.com/moapp/jybase/common"
  15. )
  16. type SearchListLogic struct {
  17. logx.Logger
  18. ctx context.Context
  19. svcCtx *svc.ServiceContext
  20. r *http.Request
  21. w http.ResponseWriter
  22. }
  23. func NewSearchListLogic(ctx context.Context, svcCtx *svc.ServiceContext, r *http.Request, w http.ResponseWriter) *SearchListLogic {
  24. return &SearchListLogic{
  25. Logger: logx.WithContext(ctx),
  26. ctx: ctx,
  27. svcCtx: svcCtx,
  28. r: r,
  29. w: w,
  30. }
  31. }
  32. func (l *SearchListLogic) SearchList(req *types.SearchReq) (resp *types.CommonResp, err error) {
  33. defer common.Catch()
  34. t := time.Now()
  35. limitFlag, isNew := util.GetFlag(l.r, l.w, req.UserId)
  36. //var (
  37. // mobileTag = []string{}
  38. //)
  39. ////工作台内
  40. //if strings.Contains(l.r.Referer(), "BI") {
  41. // mobileTag = req.MobileTag
  42. //}
  43. log.Println("req", req)
  44. res, err := l.svcCtx.BxCore.GetSearchList(l.ctx, &bxcore.SearchReq{
  45. AppId: req.AppId,
  46. UserId: req.UserId,
  47. Phone: req.Phone,
  48. NewUserId: req.NewUserId,
  49. EntId: req.EntId,
  50. EntUserId: req.EntUserId,
  51. PageNum: req.PageNum,
  52. PageSize: req.PageSize,
  53. Province: req.Province,
  54. City: req.City,
  55. Subtype: req.Subtype,
  56. TopType: req.TopType,
  57. PublishTime: req.PublishTime,
  58. SelectType: req.SelectType,
  59. Price: req.Price,
  60. Industry: req.Industry,
  61. BuyerClass: req.BuyerClass,
  62. BuyerTel: req.BuyerTel,
  63. WinnerTel: req.WinnerTel,
  64. FileExists: req.FileExists,
  65. SearchGroup: req.SearchGroup,
  66. SearchMode: req.SearchMode,
  67. WordsMode: req.WordsMode,
  68. KeyWords: util.RemoveInvisibleChars(req.KeyWords),
  69. AdditionalWords: util.RemoveInvisibleChars(req.AdditionalWords),
  70. ExclusionWords: util.RemoveInvisibleChars(req.ExclusionWords),
  71. UserType: req.UserType,
  72. Platform: util.CheckPlatform(l.r),
  73. BidField: req.BidField,
  74. PositionType: req.PositionType,
  75. PositionId: req.PositionId,
  76. AccountId: req.AccountId,
  77. EntAccountId: req.EntAccountId,
  78. MgoUserId: req.MgoUserId,
  79. LimitFlag: limitFlag,
  80. IsNew: isNew,
  81. District: req.District,
  82. Buyer: util.RemoveInvisibleChars(req.Buyer),
  83. Winner: util.RemoveInvisibleChars(req.Winner),
  84. Agency: util.RemoveInvisibleChars(req.Agency),
  85. PropertyForm: req.PropertyForm,
  86. ExpireTime: req.ExpireTime,
  87. SubInformation: req.SubInformation,
  88. Period: req.Period,
  89. ChangeHand: int64(req.ChangeHand),
  90. Scale: req.Scale,
  91. MobileTag: req.MobileTag,
  92. UserAgent: l.r.UserAgent(),
  93. UserName: req.UserName,
  94. })
  95. log.Println("请求接口耗时:", time.Since(t).Seconds())
  96. if err != nil {
  97. return &types.CommonResp{
  98. Err_code: res.ErrCode,
  99. Err_msg: res.ErrMsg,
  100. Data: nil,
  101. }, err
  102. }
  103. //未登录 且是 招标搜索(非bi 非医械通)
  104. if req.UserId == "" && req.BidField == "" {
  105. var data []map[string]interface{}
  106. detailMosaicTxt := IC.C.DetailMosaicTxt
  107. sm := common.StructToMapMore(IC.C.SearchMosaic)
  108. for _, v := range res.Data.List {
  109. d := common.StructToMapMore(v)
  110. for name, t1 := range sm {
  111. ts, _ := t1.(bool)
  112. if !ts {
  113. continue
  114. }
  115. d[name] = detailMosaicTxt
  116. //if v1, ok := d[name]; ok && v1 != "" && v1 != 0 && ts {
  117. // d[name] = detailMosaicTxt
  118. //}
  119. }
  120. data = append(data, d)
  121. }
  122. dataAll := common.StructToMapMore(res.Data)
  123. dataAll["list"] = data
  124. return &types.CommonResp{
  125. Err_code: res.ErrCode,
  126. Err_msg: res.ErrMsg,
  127. Data: dataAll,
  128. }, nil
  129. }
  130. data := map[string]interface{}{
  131. "ip": common.GetIp(l.r),
  132. "count": res.Data.Count,
  133. "s_userid": req.UserId,
  134. "platform": strings.ToLower(util.CheckPlatform(l.r)),
  135. "source": "超级搜索",
  136. "createtime": time.Now().Unix(),
  137. "userAgent": l.r.Header.Get("User-Agent"),
  138. "pagenum": req.PageNum,
  139. "pagesize": req.PageSize,
  140. "search_area": req.Province,
  141. "search_city": req.City,
  142. "search_subType": req.Subtype,
  143. "search_topType": req.TopType,
  144. "search_selectType": req.SelectType,
  145. "search_price": req.Price,
  146. "search_industry": req.Industry,
  147. "search_buyerClass": req.BuyerClass,
  148. "search_buyerTel": req.BuyerTel,
  149. "search_winnerTel": req.WinnerTel,
  150. "fileExists": req.FileExists,
  151. "searchGroup": func(searchGroup int64) string {
  152. switch searchGroup {
  153. case 1:
  154. return "招标采购公告"
  155. case 2:
  156. return "超前项目"
  157. }
  158. return ""
  159. }(req.SearchGroup), //搜索分组:默认0:全部;1:招标采购公告;2:超前项目
  160. "searchMode": common.If(req.SearchMode == 1, "模糊搜索", "精准搜索"), //搜索模式:0:精准搜索;1:模糊搜索
  161. "wordsMode": common.If(req.WordsMode == 1, "包含任意", "包含所有"), //搜索关键词模式;默认0:包含所有,1:包含任意
  162. "search_word": req.KeyWords,
  163. "additionalWords": req.AdditionalWords,
  164. "exclusionWords": req.ExclusionWords,
  165. "search_publishtime": req.PublishTime,
  166. "userName": req.UserName,
  167. }
  168. go IC.SearchLog.SendLogs(data)
  169. return &types.CommonResp{
  170. Err_code: res.ErrCode,
  171. Err_msg: res.ErrMsg,
  172. Data: res.Data,
  173. }, nil
  174. }