package ht_cardholder import ( "apigame/dto" "apigame/lx-util/lxalilog" "apigame/lx-util/lxtime" "apigame/models" "apigame/service/constd" "github.com/astaxie/beego/orm" "strconv" ) // HandleInfo 卡包信息 func HandleInfo(req *dto.ReqHtCardHolderInfo) (code string, rsp dto.RspHtCardHolderInfo) { rsp = dto.RspHtCardHolderInfo{} code = constd.RECODE_OK // 尝试更新配置 TryUpdateConfigs() // 读取游戏数据 gameData := LoadData(req.UID) rsp.HtCardHolderInfo = gameData.GetInfo() return } // HandleGetNew 获取卡包 func HandleGetNew(req *dto.ReqHtCardHolderGetNew) (code string, rsp dto.RspHtCardHolderGetNew) { rsp = dto.RspHtCardHolderGetNew{} code = constd.RECODE_OK // 尝试更新配置 TryUpdateConfigs() // 检查活动状态 code = CheckStatus() if code != constd.RECODE_OK { return } // 检查卡包ID _, okCardholderConfig := Registry.Config.CardholderConfig[strconv.Itoa(req.Id)] if !okCardholderConfig { code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR return } // 检查卡包数量 if req.Count < 1 { code = constd.RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR return } // 读取游戏数据 gameData := LoadData(req.UID) gameData.DetailsData.Cardholder[req.Id] += req.Count SaveData(gameData) rsp.HtCardHolderInfo = gameData.GetInfo() return } // HandleOpen 打开卡包 func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHolderOpen) { rsp = dto.RspHtCardHolderOpen{} code = constd.RECODE_OK // 尝试更新配置 TryUpdateConfigs() // 检查活动状态 code = CheckStatus() if code != constd.RECODE_OK { return } //// 检查卡包ID //confCardholder, okCardholderConfig := Registry.Config.CardholderConfig[strconv.Itoa(req.Id)] //if !okCardholderConfig { // code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR // return //} // //// 读取游戏数据 //gameData := LoadData(req.UID) // //// 判断卡包数目 //countOld, _ := gameData.DetailsData.Cardholder[req.Id] //if countOld < 1 { // code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR // return //} // //// 开始处理抽卡 //sequenceId, cohort := GetUserSequenceIdAndCohort(req.UID) //// 先抽保底卡 //if confCardholder.GuaranteedStar != "0" { // confGuaranteed, hasGuaranteed := FindCardSequenceConfig(confCardholder.GuaranteedStar, sequenceId, cohort) // if hasGuaranteed { // // } //} return } // SaveData 存储数据 func SaveData(d *models.HtCardHolderData) { d.UpdateTime = lxtime.NowUninx() d.Encode() o := orm.NewOrm() o.Using(constd.MYSQL_DEFAULT) if _, err := o.InsertOrUpdate(d); err != nil { lxalilog.Errors(err, "ht_cardholder SaveData Error", d.Uid) } } func _LoadData(uid int64) (d *models.HtCardHolderData) { d = models.NewHtCardHolderData(uid) o := orm.NewOrm() o.Using(constd.MYSQL_DEFAULT) qs := o.QueryTable(d) qs = qs.Filter("uid", uid) count, err := qs.Count() if count == 0 { d.CreateTime = lxtime.NowUninx() } else { err = qs.One(d) if err != nil { lxalilog.Errors(err, "ht_cardholder LoadData Error", uid) } else { d.DetailsData = models.NewHtCardHolderDataDetails() d.Decode() } } return } // LoadData 获取数据 外部接口 func LoadData(uid int64) (d *models.HtCardHolderData) { d = _LoadData(uid) // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 if Registry.Config.Id != 0 && Registry.Config.Id != d.ActivityId { d.ActivityId = Registry.Config.Id d.DetailsData = models.NewHtCardHolderDataDetails() SaveData(d) } return } // CheckStatus 判断活动是否开启 func CheckStatus() string { sec := lxtime.NowUninx() if Registry.Config.Id == 0 { return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR } if sec < Registry.Config.Raw.StartTime { return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR } if sec > Registry.Config.Raw.EndTime { return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR } return constd.RECODE_OK } // GetUserSequenceIdAndCohort 获取 用户序列组ID(sequenceId) 用户分组(cohort) func GetUserSequenceIdAndCohort(uid int64) (sequenceId, cohort string) { // todo 这里后续要对接 sequenceId = "1" cohort = "1" return }