diff --git a/controllers/ht-cardholder.go b/controllers/ht-cardholder.go index e3487bb..ea22038 100644 --- a/controllers/ht-cardholder.go +++ b/controllers/ht-cardholder.go @@ -10,6 +10,7 @@ type HtCardHolderController struct { BaseController } +// Info 卡包信息 func (c *HtCardHolderController) Info() { req := new(dto.ReqHtCardHolderInfo) if !c.GetPostData(req) { @@ -21,6 +22,7 @@ func (c *HtCardHolderController) Info() { c.RetRspCodeData(code, rsp) } +// GetNew 获取卡包 func (c *HtCardHolderController) GetNew() { req := new(dto.ReqHtCardHolderGetNew) if !c.GetPostData(req) { @@ -32,6 +34,7 @@ func (c *HtCardHolderController) GetNew() { c.RetRspCodeData(code, rsp) } +// Open 卡包打开 func (c *HtCardHolderController) Open() { req := new(dto.ReqHtCardHolderOpen) if !c.GetPostData(req) { @@ -42,3 +45,15 @@ func (c *HtCardHolderController) Open() { c.RetRspCodeData(code, rsp) } + +// GetRewardAlbum 领取卡组奖励 +func (c *HtCardHolderController) GetRewardAlbum() { + req := new(dto.ReqHtCardHolderGetRewardAlbum) + if !c.GetPostData(req) { + return + } + + code, rsp := ht_cardholder.HandleGetRewardAlbum(req) + + c.RetRspCodeData(code, rsp) +} diff --git a/dto/ht-cardholder.go b/dto/ht-cardholder.go index 1b6073e..03347c6 100644 --- a/dto/ht-cardholder.go +++ b/dto/ht-cardholder.go @@ -46,3 +46,16 @@ type RspHtCardHolderOpen struct { HtCardHolderInfo NewCards []int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 } + +// ReqHtCardHolderGetRewardAlbum 请求 领取卡组奖励 +type ReqHtCardHolderGetRewardAlbum struct { + BaseSign + BaseLoginInfo + Id int `form:"id" json:"id" valid:"Required"` // 卡组ID +} + +// RspHtCardHolderGetRewardAlbum 返回 领取卡组奖励 +type RspHtCardHolderGetRewardAlbum struct { + HtCardHolderInfo + Award string `form:"award" json:"award"` // 奖励字符串 +} diff --git a/routers/router.go b/routers/router.go index 9c66f8b..509f7ef 100644 --- a/routers/router.go +++ b/routers/router.go @@ -17,6 +17,8 @@ func init() { beego.Router(prefix+"/ht/cardholder/getnew", &controllers.HtCardHolderController{}, "post:GetNew") // 卡包打开 beego.Router(prefix+"/ht/cardholder/open", &controllers.HtCardHolderController{}, "post:Open") + // 领取卡组奖励 + beego.Router(prefix+"/ht/cardholder/getrewardalbum", &controllers.HtCardHolderController{}, "post:GetRewardAlbum") beego.ErrorController(&controllers.ErrorController{}) } diff --git a/service/constd/index.go b/service/constd/index.go index c7982ad..b2c73ed 100644 --- a/service/constd/index.go +++ b/service/constd/index.go @@ -45,6 +45,9 @@ const ( RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR = "2103" RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR = "2104" RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR = "2105" + RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR = "2106" + RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR = "2107" + RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR = "2108" ) var recodeText = map[string]string{ @@ -90,6 +93,9 @@ var recodeText = map[string]string{ RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR: "卡包ID错误", RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR: "数目不合法", RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR: "卡包不足", + RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR: "卡组ID错误", + RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR: "卡组奖励已领取", + RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR: "卡组卡牌未集齐", } func RecodeText(code string) string { diff --git a/service/ht-cardholder/handle.go b/service/ht-cardholder/handle.go index 4c21db6..bf8a1b7 100644 --- a/service/ht-cardholder/handle.go +++ b/service/ht-cardholder/handle.go @@ -158,3 +158,56 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol return } + +// HandleGetRewardAlbum 领取卡组奖励 +func HandleGetRewardAlbum(req *dto.ReqHtCardHolderGetRewardAlbum) (code string, rsp dto.RspHtCardHolderGetRewardAlbum) { + rsp = dto.RspHtCardHolderGetRewardAlbum{} + code = constd.RECODE_OK + + // 尝试更新配置 + TryUpdateConfigs() + + // 检查活动状态 + code = CheckStatus() + if code != constd.RECODE_OK { + return + } + // 检查卡组ID + albumId := strconv.Itoa(req.Id) + confAlbum, okAlbum := Config.AlbumConfig[albumId] + if !okAlbum { + code = constd.RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR + return + } + + // 读取游戏数据 + gameData := LoadData(req.UID) + + // 是否已领过 + countGot := gameData.Details.Album[albumId] + if countGot > 0 { + code = constd.RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR + return + } + // 检查卡组内卡是否集齐 + for _, config := range Config.CardConfig { + if config.SetId == albumId { + count := gameData.Details.Cards[config.Id] + if count < 1 { + code = constd.RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR + return + } + } + } + + gameData.Details.Album[albumId] += 1 + SaveData(gameData) + + // 返回奖励 + rsp.Award = confAlbum.Rewards + + // 返回信息 + rsp.HtCardHolderInfo = gameData.GetInfo() + + return +} -- libgit2 0.21.0