package logic import ( "app.yhyue.com/moapp/jyInfo/rpc/consumer/consumer" "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 *consumer.PublishInfoReq) (*consumer.PublishInfoResp, error) { // todo: add your logic here and delete this line res := consumer.PublishInfoResp{} 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"] = 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"] = in.Contact.Overt //是否公开 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(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: publishData["validity_time"] = in.Deadline //信息有效期 id = model.Mysql.Insert("supply_info", publishData) default: res.ErrCode = -1 res.ErrMsg = "数据类型有误" return &res, nil } log.Println("id:", id) if id < 1 { res.ErrCode = -1 res.ErrMsg = fmt.Sprintf("数据类型 %d 创建信息失败", in.MsgType) return &res, nil } var InfoId consumer.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 != "" { appendInfo["attach"] = mc.StringToMap(in.Attach) } 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 { res.ErrCode = -1 res.ErrMsg = fmt.Sprintf("添加nsq失败;%s", err.Error()) } entNameKye := fmt.Sprintf("userEntName_%s_%d_%s", in.UserId, id, in.MsgType) redis.Put("other", entNameKye, in.EntName, 3*24*60*60) return &res, nil }