package logic import ( "app.yhyue.com/moapp/jyInfo/rpc/consumer/consumerinfo" "app.yhyue.com/moapp/jyInfo/rpc/consumer/internal/svc" "app.yhyue.com/moapp/jyInfo/rpc/model" "app.yhyue.com/moapp/jyInfo/rpc/util" "context" "fmt" "log" "strings" "time" se "app.yhyue.com/moapp/jybase/encrypt" mc "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jybase/redis" "github.com/zeromicro/go-zero/core/logx" ) type PublishInfoLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewPublishInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PublishInfoLogic { return &PublishInfoLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 发布信息 func (l *PublishInfoLogic) PublishInfo(in *consumerinfo.PublishInfoReq) (*consumerinfo.PublishInfoResp, error) { res := consumerinfo.PublishInfoResp{} log.Println("信息发布in数据:", in) var id int64 //信息类型1:招标信息 2:采购信息 3:供应信息 publishData := make(map[string]interface{}) publishData["user_id"] = in.UserId //发布人用户ID publishData["phone"] = in.Phone //注册手机号 publishData["title"] = in.Title //信息标题 publishData["province"] = in.Province //项目省份 publishData["city"] = in.City //项目城市 publishData["detail"] = util.NewCut().ClearHtml(in.Detail) //正文信息 publishData["create_time"] = time.Now().Format("2006-01-02 15:04:05") //申请时间 publishData["attach"] = in.Attach //附件(多个附件逗号分割) publishData["contact_person"] = in.Contact.Person //联系人 publishData["contact_phone"] = in.Contact.Phone //联系人电话 publishData["contact_overt"] = mc.If(in.Contact.Overt == 0, 2, in.Contact.Overt).(int) //是否公开 默认不公开 publishData["is_del"] = 1 // 0:全部;1:未删除;-1:删除 publishData["published"] = 1 // 0:全部;1:未发布;2:已发布 publishData["type"] = mc.IntAll(in.MsgType) //1:招标信息|2:采购信息|3:供应信息 publishData["ent_id"] = mc.IntAll(in.EntId) publishData["app_id"] = in.AppId // 0:全部;1:待审核;2:待人工审核(敏感词审核不通过||敏感词审核通过);3:自动审核通过;4:人工审核通过;-1:自动审核不通过(机构冻结);-2:人工审核不通过; publishData["status"] = 1 log.Println(in.MsgType, "-------------------") switch in.MsgType { case 1, 2: publishData["related_id"] = mc.IntAll(se.SE.DecodeString(in.RelatedId)) //关联公告id publishData["project_code"] = in.Code //项目编号 publishData["industry"] = strings.Join(in.Industry, ",") //项目行业,多个逗号分隔 publishData["buyer"] = in.Buyer //采购单位 publishData["budget"] = in.Budget // 预算单位元 publishData["winner"] = in.Winner //中标单位 publishData["amount"] = in.Amount //中标金额 id = model.Mysql.Insert("information", publishData) case 3: if in.Deadline != "" { publishData["validity_time"] = in.Deadline //信息有效期 } id = model.Mysql.Insert("supply_info", publishData) default: res.ErrCode = -1 res.ErrMsg = "数据类型有误" return &res, nil } if id < 1 { res.ErrCode = -1 res.ErrMsg = "信息发布失败" return &res, nil } var InfoId consumerinfo.PublishId InfoId.InformationId = se.SE.EncodeString(mc.InterfaceToStr(id)) //信息id加密 res.PublishId = &InfoId appendInfo := make(map[string]interface{}) if in.Title != "" { appendInfo["title"] = in.Title } if in.Detail != "" { appendInfo["detail"] = in.Detail } if in.Attach != "" && in.Attach != "{}" { appendInfo["attach"] = mc.StringToMap(in.Attach) } log.Println("发送nsq敏感词信息", model.NsqConfig, appendInfo) nsq, err := util.NewNsqInfo(model.NsqConfig.Ip, model.NsqConfig.Topic, mc.InterfaceToStr(id), "1", mc.InterfaceToStr(in.MsgType), false, appendInfo) if err != nil || nsq.NsqPushInfo() != nil { log.Println("信息发布失败nsq++++++++++++", model.NsqConfig, appendInfo) res.ErrCode = -1 res.ErrMsg = fmt.Sprintf("信息发布失败") } if in.MsgType == 3 { entNameKye := fmt.Sprintf("userEntName_%s_%d_%d", in.UserId, id, in.MsgType) redis.Put("other", entNameKye, in.EntName, 3*24*60*60) } return &res, nil }