biddistributorlogic.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package logic
  2. import (
  3. IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/init"
  4. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/model"
  5. "context"
  6. "database/sql"
  7. "fmt"
  8. "strings"
  9. "time"
  10. "app.yhyue.com/moapp/jybase/common"
  11. "app.yhyue.com/moapp/jybase/encrypt"
  12. P "app.yhyue.com/moapp/jybase/mapping"
  13. "app.yhyue.com/moapp/jybase/redis"
  14. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/internal/svc"
  15. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/type/bxsubscribe"
  16. "app.yhyue.com/moapp/jybase/date"
  17. "github.com/zeromicro/go-zero/core/logx"
  18. )
  19. type BidDistributorLogic struct {
  20. ctx context.Context
  21. svcCtx *svc.ServiceContext
  22. logx.Logger
  23. }
  24. func NewBidDistributorLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BidDistributorLogic {
  25. return &BidDistributorLogic{
  26. ctx: ctx,
  27. svcCtx: svcCtx,
  28. Logger: logx.WithContext(ctx),
  29. }
  30. }
  31. // 标讯信息分发
  32. func (l *BidDistributorLogic) BidDistributor(in *bxsubscribe.BidDistributorReq) (*bxsubscribe.StatusResp, error) {
  33. userEnt := model.EntInfo(common.IntAll(in.EntId), common.IntAll(in.EntUserId))
  34. if !(userEnt.Role_admin_system || userEnt.Role_admin_department) {
  35. return &bxsubscribe.StatusResp{ErrorCode: -1, ErrorMsg: "无权限"}, nil
  36. }
  37. //根据信息查询区域列表
  38. var staffs []string
  39. staffs = strings.Split(in.Staffs, ",")
  40. var pushCas []*model.PushCa
  41. if len(in.InfoIds) == 0 || in.Staffs == "" {
  42. return &bxsubscribe.StatusResp{ErrorCode: -1, ErrorMsg: "缺少参数"}, nil
  43. }
  44. for _, v := range in.InfoIds {
  45. pushCas = append(pushCas, &model.PushCa{InfoId: v})
  46. }
  47. infoList := model.NewSubscribePush().GetInfoByIds(IC.MgoBidding, IC.DB.Mongo.Bidding.Collection, IC.DB.Mongo.Bidding.CollectionBack, pushCas, false, false)
  48. //分发数据库修改
  49. ok := IC.BaseServiceMysql.ExecTx("分发数据库修改", func(tx *sql.Tx) bool {
  50. insertRow := []string{"entid", "deptid", "userid", "infoid", "area", "city", "buyerclass", "toptype", "subtype", "subscopeclass", "budget", "bidamount", "attachment_count", "source", "date"}
  51. row := []string{"userid", "entid", "infoid", "createtime"}
  52. dateNew := time.Now().Unix()
  53. insertValue := []interface{}{}
  54. values := []interface{}{}
  55. for _, m := range staffs {
  56. for _, v := range infoList {
  57. area := common.If((*v).Area == "", nil, P.BidCodeMapping.Area[(*v).Area])
  58. buyerclass := common.If((*v).BuyerClass == "", nil, P.BidCodeMapping.Buyerclass[(*v).BuyerClass])
  59. city := common.If((*v).City == "", nil, P.BidCodeMapping.Area[(*v).City])
  60. toptype := common.If((*v).Toptype == "", nil, P.BidCodeMapping.Toptype[(*v).Toptype])
  61. subtype := common.If((*v).Subtype == "", nil, P.BidCodeMapping.Subtype[(*v).Subtype])
  62. scopeclass := common.If((*v).Industry == "", nil, P.BidCodeMapping.Subscopeclass[(*v).Industry])
  63. budget := common.If((*v).Budget > 0, (*v).Budget, nil)
  64. bidamount := common.If((*v).BidAmount > 0, (*v).BidAmount, nil)
  65. attachment_count := common.If((*v).IsValidFile, 1, nil)
  66. infoidArr := encrypt.DecodeArticleId2ByCheck((*v).XId)
  67. infoid := ""
  68. if len(infoidArr) > 0 {
  69. infoid = infoidArr[0]
  70. }
  71. if infoid == "" {
  72. continue
  73. }
  74. insertValue = append(insertValue, in.EntId, 0, m, infoid, area, city, buyerclass, toptype, subtype, scopeclass, budget, bidamount, attachment_count, 3, dateNew)
  75. values = append(values, m, in.EntId, infoid, date.NowFormat(date.Date_Full_Layout))
  76. }
  77. }
  78. IC.BaseServiceMysql.InsertBatchByTx(tx, "push.pushentniche", insertRow, insertValue)
  79. IC.BaseServiceMysql.InsertBatchByTx(tx, "base_service.ent_bid_distribute", row, values)
  80. return true
  81. })
  82. //清除推送列表缓存
  83. for _, staff := range staffs {
  84. //today
  85. redis.Del("pushcache_2_b", fmt.Sprintf("entnichepush_%s", staff))
  86. //all
  87. redis.Del("pushcache_2_a", fmt.Sprintf("all_entnichepush_%s", staff))
  88. redis.Del("pushcache_2_a", fmt.Sprintf("all_entnichepush_vip_%s", staff))
  89. redis.Del("pushcache_2_a", fmt.Sprintf("all_entnichepush_member_%s", staff))
  90. }
  91. if !ok {
  92. return &bxsubscribe.StatusResp{ErrorCode: -1, ErrorMsg: "数据分发异常"}, nil
  93. }
  94. return &bxsubscribe.StatusResp{Status: 1}, nil
  95. }