package msg import ( "rocommon" "rocommon/service" "rocommon/util" "roserver/baseserver/model" dbmodel "roserver/db/model" gmmodel "roserver/gmweb/model" "roserver/serverproto" "runtime/debug" "strconv" "time" ) const RoleCdkInfo = "cdk_info_" const CdkTotal = "cdk_Total_" // other service func init() { //serverproto.Handle_GMWEB_SSWebGMAddMailAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.SSWebGMAddMailAck) // util.InfoF("SSWebGMAddMailAck msgid=%v", msg) // // model2.GetMailUpdateMag().AttachMail2Update() //}) serverproto.Handle_GMWEB_CSGiftRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSGiftRewardReq) //util.InfoF("uid=%v CSGiftRewardReq msg=%v", msg.Uuid, msg) //model2.GetMailUpdateMag().AttachMail2Update() go func(code string, uuid uint64) { defer func() { //打印奔溃信息 if err := recover(); err != nil { util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack())) } }() uidStr := strconv.FormatUint(uuid, 10) res := &serverproto.SCGiftRewardAck{ Uuid: uuid, } //非通码 if len(code) == length { award, err := RedisCdk2.RedisCli().HGet(dbmodel.CdkNormal, code).Result() if err != nil { res.Error = 3 util.ErrorF("uid:%v cdk get is nil,code:%v error:%v", uuid, code, err) gmmodel.SendSocial(res) } a := &serverproto.SCUseHeadFrameItemAck{ ItemList: make([]*serverproto.KeyValueType, 0), } err = model.GetDecodeMessage(a, award) if err != nil { res.Error = 3 util.ErrorF("uid:%v cdk unmarshall error,%v", uuid, err) gmmodel.SendSocial(res) } _, err = RedisCdk2.RedisCli().HDel(dbmodel.CdkNormal, code).Result() if err != nil { res.Error = 3 util.ErrorF("uid:%v cdk del error,code:%v error:%v", uuid, code, err) gmmodel.SendSocial(res) } util.ErrorF("uid:%v cdk get:%v", uuid, code) res.RewardList = a.ItemList } else { //util.InfoF("aaaa:%v", model.ConvertCdkRewardMap) if _, ok := model.ConvertCdkRewardMap[code]; !ok { res.Error = 3 util.ErrorF("uid:%v cdk get config is nil,%v", uuid, model.ConvertCdkRewardMap) gmmodel.SendSocial(res) return } v := model.ConvertCdkRewardMap[code] if v == nil { util.ErrorF("uid:%v cdk get config is nil", uuid) res.Error = 3 gmmodel.SendSocial(res) return } now := time.Now() if now.Before(v.Start) || now.After(v.End) { res.Error = 2 gmmodel.SendSocial(res) return } if v.Total > 0 { ker := CdkTotal + strconv.Itoa(int(v.Id)) num, _ := service.GetRedis().Incr(ker).Result() if num >= int64(v.Total) { res.Error = 1 gmmodel.SendSocial(res) return } } key := RoleCdkInfo + strconv.FormatUint(uuid, 10) field := strconv.FormatInt(int64(v.Id), 10) b, err := service.GetRedis().HExists(key, field).Result() if err != nil { util.ErrorF("uid:%v cdk get redis err:%v", uuid, err) res.Error = 3 gmmodel.SendSocial(res) return } if b { res.Error = 1 gmmodel.SendSocial(res) return } res.RewardList = v.RewardList _, er := service.GetRedis().HSet(key, field, "11").Result() if er != nil { util.ErrorF("uid:%v cdk set redis err:%v", uuid, err) res.Error = 3 gmmodel.SendSocial(res) return } } //this.GiftReward(res) //util.InfoF("uid:%v cdk get reward:%v", this.GetUUid(), res.RewardList) //this.ReplayGate(res, true) //error //1礼包吗已经使用 //2礼包吗已经过期 //3 没有找到礼包吗 util.InfoF("uid=%v CSGiftRewardReq msg=%v res=%v", uidStr, msg, res) gmmodel.SendSocial(res) }(msg.GiftCode, msg.Uuid) }) serverproto.Handle_GMWEB_SSWebGMChatMsgNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWebGMChatMsgNtf) util.InfoF("uid=%v SSWebGMChatMsgNtf msg=%v", msg.Uid, msg) gmmodel.GetChatUpdateMag().AddChatMsg(msg) }) }