diff --git a/server/wheelserver/api/v1/activity/activity.go b/server/wheelserver/api/v1/activity/activity.go index cb6e8e06..f27e7c04 100644 --- a/server/wheelserver/api/v1/activity/activity.go +++ b/server/wheelserver/api/v1/activity/activity.go @@ -146,11 +146,15 @@ func (this *ActivityApi) RollDice(c *gin.Context) { rspObj.GetOrCreateAward().AddItem(constant.VIRTUAL_ITEM_SCORE, score) } - bageffect, taskupdate := service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) + bageffect, taskupdate, bufeffect := service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) if bageffect { q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "bag") } + if bufeffect { + q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "buff") + } + if fullgrid { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "fullgrid") } @@ -160,7 +164,7 @@ func (this *ActivityApi) RollDice(c *gin.Context) { itemtype = constant.ITEM_TYPE_DICE } - if service.Task.UpdateTaskProgress(s.GetAccountId(), int32(itemtype), 1, nil) || taskupdate { + if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.TASK_COND_BACK_USE, int32(itemtype), 1, nil) || taskupdate { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") } rspObj.GetOrCreateSideEffect().GetOrCreateUser().FromModel(user) @@ -215,11 +219,15 @@ func (this *ActivityApi) Claim(c *gin.Context) { rspObj.GetOrCreateAward().AddItem(item.ItemId, item.ItemNum) } - bageffect, taskupdate := service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) + bageffect, taskupdate, bufeffect := service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) if bageffect { q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "bag") } + if bufeffect { + q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "buff") + } + if taskupdate { q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "task") } diff --git a/server/wheelserver/api/v1/bag/bag.go b/server/wheelserver/api/v1/bag/bag.go index 46879464..75d4ca03 100644 --- a/server/wheelserver/api/v1/bag/bag.go +++ b/server/wheelserver/api/v1/bag/bag.go @@ -82,7 +82,7 @@ func (this *BagApi) UseItem(c *gin.Context) { bagItem.DecItemNum(1, int32(nowTime)) q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "buff") q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "bag") - if service.Task.UpdateTaskProgress(s.GetAccountId(), itemMeta.GetItemType(), reqJson.ItemNum, nil) { + if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.TASK_COND_BACK_USE, itemMeta.GetItemType(), reqJson.ItemNum, nil) { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") } c.JSON(200, rspObj) diff --git a/server/wheelserver/api/v1/inapp_shop/inapp_shop.go b/server/wheelserver/api/v1/inapp_shop/inapp_shop.go index fb83130d..449be6f5 100644 --- a/server/wheelserver/api/v1/inapp_shop/inapp_shop.go +++ b/server/wheelserver/api/v1/inapp_shop/inapp_shop.go @@ -195,9 +195,14 @@ func (this *InAppShopApi) Callback(c *gin.Context) { } } case constant.ITEM_TYPE_SCORE_DOUBLE_CARD: - service.Award.AddItem(orderModel.AccountId, itemcfg.GetId(), ordergoods.GetAmount(), nil) + // service.Award.AddItem(orderModel.AccountId, itemcfg.GetId(), ordergoods.GetAmount(), nil) + for i := int32(0); i < ordergoods.GetAmount(); i++ { + service.Buff.Add(user.AccountId, itemcfg.GetBuffList()) + } + + service.Task.UpdateTaskProgress(user.AccountId, constant.TASK_COND_BACK_USE, itemcfg.GetItemType(), ordergoods.GetAmount(), nil) } - service.Task.UpdateTaskProgress(orderModel.AccountId, itemcfg.GetItemType(), ordergoods.GetAmount(), nil) + service.Task.UpdateTaskProgress(orderModel.AccountId, constant.TASK_COND_BACK_BUY, itemcfg.GetItemType(), ordergoods.GetAmount(), nil) user.UpdateUserFields() } diff --git a/server/wheelserver/api/v1/mission/mission.go b/server/wheelserver/api/v1/mission/mission.go index c74273b5..e07b926b 100644 --- a/server/wheelserver/api/v1/mission/mission.go +++ b/server/wheelserver/api/v1/mission/mission.go @@ -148,7 +148,7 @@ func (this *MissionApi) ClaimTaskAward(c *gin.Context) { if taskMeta.GetRewardType() == constant.TASK_AWARD_SCORE { user.AddScore(taskMeta.GetReward()) - if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.ITEM_TYPE_SCORE, taskMeta.GetReward(), &tasks) { + if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.TASK_COND_BACK_GAIN, constant.ITEM_TYPE_SCORE, taskMeta.GetReward(), &tasks) { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") } rspObj.GetOrCreateAward().AddItem(constant.VIRTUAL_ITEM_SCORE, taskMeta.GetReward()) diff --git a/server/wheelserver/api/v1/shop/shop.go b/server/wheelserver/api/v1/shop/shop.go index 162b408d..ef7c962f 100644 --- a/server/wheelserver/api/v1/shop/shop.go +++ b/server/wheelserver/api/v1/shop/shop.go @@ -97,7 +97,7 @@ func (this *ShopApi) Buy(c *gin.Context) { rspObj.SideEffect.User = new(vo.User) rspObj.SideEffect.User.FromModel(user) rspObj.SideEffect.User.HourlyEarnings = service.Chip.GetHourEarning(user.AccountId) - if service.Task.UpdateTaskProgress(s.GetAccountId(), itemMeta.GetItemType(), 1, nil) { + if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.TASK_COND_BACK_BUY, itemMeta.GetItemType(), 1, nil) { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") } diff --git a/server/wheelserver/api/v1/user/user.go b/server/wheelserver/api/v1/user/user.go index 7be96edc..819ca539 100644 --- a/server/wheelserver/api/v1/user/user.go +++ b/server/wheelserver/api/v1/user/user.go @@ -54,7 +54,7 @@ func (this *UserApi) Login(c *gin.Context) { f5.GetMsgQueue().FireEvent(constant.MSG_CREATE_USER, q5.Args{user}) service.Task.List(s.GetAccountId(), nil) if user.Invited != "" { - service.Task.UpdateTaskProgress(user.Invited, 0, 1, nil) + service.Task.UpdateTaskProgress(user.Invited, constant.TASK_COND_BACK_GAIN, 0, 1, nil) invitor := new(model.User) err, found := invitor.Find(user.Invited, nowTime) if err == nil && found { @@ -79,7 +79,7 @@ func (this *UserApi) Login(c *gin.Context) { earning := service.Chip.CalcScore(s.GetAccountId()) if earning > 0 { user.AddScore(earning) - if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.ITEM_TYPE_SCORE, earning, nil) { + if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.TASK_COND_BACK_GAIN, constant.ITEM_TYPE_SCORE, earning, nil) { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") } } diff --git a/server/wheelserver/service/award.go b/server/wheelserver/service/award.go index 52be99d1..2bde2a05 100644 --- a/server/wheelserver/service/award.go +++ b/server/wheelserver/service/award.go @@ -54,14 +54,13 @@ func (this *award) AddItem(accountId string, itemId int32, itemNum int32, baseVo } } -func (aa *award) HandleAwards(user *model.User, totalaward *vo.Award) (bageffect bool, taskupdate bool) { +func (aa *award) HandleAwards(user *model.User, totalaward *vo.Award) (bageffect bool, taskupdate bool, buffeffect bool) { bageffect = false for _, awarditem := range totalaward.Items { itemcfg := mt.Table.Item.GetById(int64(awarditem.ItemId)) switch itemcfg.GetItemType() { case constant.ITEM_TYPE_SCORE: user.AddScore(awarditem.ItemNum) - taskupdate = Task.UpdateTaskProgress(user.AccountId, constant.ITEM_TYPE_SCORE, awarditem.ItemNum, nil) case constant.ITEM_TYPE_DICE: user.AddDice(awarditem.ItemNum) case constant.ITEM_TYPE_SPEC_DICE: @@ -81,14 +80,25 @@ func (aa *award) HandleAwards(user *model.User, totalaward *vo.Award) (bageffect } } case constant.ITEM_TYPE_SCORE_DOUBLE_CARD: - fallthrough + for i := int32(0); i < awarditem.ItemNum; i++ { + Buff.Add(user.AccountId, itemcfg.GetBuffList()) + } + buffeffect = true + + if !taskupdate { + taskupdate = Task.UpdateTaskProgress(user.AccountId, constant.TASK_COND_BACK_USE, constant.ITEM_TYPE_SCORE_DOUBLE_CARD, awarditem.ItemNum, nil) + } case constant.ITEM_TYPE_SCORE_SMALL_GIFT_PACK: fallthrough case constant.ITEM_TYPE_SCORE_BIG_GIFT_PACK: aa.AddItem(user.AccountId, awarditem.ItemId, awarditem.ItemNum, nil) bageffect = true } + + if !taskupdate { + taskupdate = Task.UpdateTaskProgress(user.AccountId, constant.TASK_COND_BACK_GAIN, itemcfg.GetItemType(), awarditem.ItemNum, nil) + } } - return bageffect, taskupdate + return bageffect, taskupdate, buffeffect } diff --git a/server/wheelserver/service/chip.go b/server/wheelserver/service/chip.go index 213a7029..3b66f814 100644 --- a/server/wheelserver/service/chip.go +++ b/server/wheelserver/service/chip.go @@ -97,7 +97,7 @@ func (this *chip) checkEarningLoop() { if err == nil && found { userearning := this.CalcScore(accountId) user.AddScore(userearning) - Task.UpdateTaskProgress(accountId, constant.ITEM_TYPE_SCORE, userearning, nil) + Task.UpdateTaskProgress(accountId, constant.TASK_COND_BACK_GAIN, constant.ITEM_TYPE_SCORE, userearning, nil) user.UpdateUserFields() } } else { diff --git a/server/wheelserver/service/task.go b/server/wheelserver/service/task.go index d17a465a..9cc1b95a 100644 --- a/server/wheelserver/service/task.go +++ b/server/wheelserver/service/task.go @@ -129,7 +129,7 @@ func (this *task) List(accountId string, data *[]*vo.Mission) (errcode int32, ms return 0, "" } -func (this *task) UpdateTaskProgress(accountId string, itemtypeid int32, amount int32, extasks *map[int32]*model.TaskItem) (taskupdate bool) { +func (this *task) UpdateTaskProgress(accountId string, condition int32, itemtypeid int32, amount int32, extasks *map[int32]*model.TaskItem) (taskupdate bool) { var tasks map[int32]*model.TaskItem var task *model.Task if extasks == nil { @@ -155,6 +155,10 @@ func (this *task) UpdateTaskProgress(accountId string, itemtypeid int32, amount continue } + if taskMeta.GetCondition() != condition { + continue + } + if taskMeta.GetParam2() != itemtypeid { continue }