package logic import ( "context" "app.yhyue.com/moapp/jyInfo/rpc/model" "app.yhyue.com/moapp/jyInfo/rpc/util" "time" "app.yhyue.com/moapp/jyInfo/rpc/common/internal/svc" "app.yhyue.com/moapp/jyInfo/rpc/common/type/common" mc "app.yhyue.com/moapp/jybase/common" "github.com/zeromicro/go-zero/core/logx" ) type StateMethodLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewStateMethodLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StateMethodLogic { return &StateMethodLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *StateMethodLogic) StateMethod(in *common.StateRequest) (*common.StateResponse, error) { var ( resp common.StateResponse ) query := make(map[string]interface{}) query["id"] = in.Id upData := make(map[string]interface{}) upData["published"] = 2 upData["publish_id"] = in.PublishId upData["publish_time"] = time.Now().Format("2006-01-02 15:04:05") data := model.Mysql.FindOne("information", query, "", "") if data == nil || len(*data) < 1 { resp.ErrCode = 1 resp.ErrMsg = "nsq回调发布状态,获取信息失败" return &resp, nil } //处理对于发布删除冲突问题,在回调发布后查看是否已删除,如已删除在回调删除nsq 未删除继续正常发布流程 if mc.IntAll((*data)["is_de"]) == -1 { nsq, err := util.NewNsqInfo(model.NsqConfig.Ip, model.NsqConfig.Topic, mc.InterfaceToStr((*data)["id"]), "3", mc.InterfaceToStr((*data)["type"]), false, upData) if err != nil || nsq.NsqPushInfo() != nil { resp.ErrCode = 1 resp.ErrMsg = "信息已删除,同步删除信息失败" } return &resp, nil } if !model.Mysql.Update("information", query, upData) { resp.ErrCode = 1 resp.ErrMsg = "nsq回调发布状态,更新信息状态失败" } return &resp, nil }