diff --git a/server/wheelserver/api/v1/activity/activity.go b/server/wheelserver/api/v1/activity/activity.go index a1117ecc..f9cbc4be 100644 --- a/server/wheelserver/api/v1/activity/activity.go +++ b/server/wheelserver/api/v1/activity/activity.go @@ -137,13 +137,23 @@ func (this *ActivityApi) RollDice(c *gin.Context) { rspObj.GetOrCreateAward().AddItem(constant.VIRTUAL_ITEM_SCORE, score) - if service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) { - q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "bag") + bageffect, taskupdate := service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) + if bageffect { + q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "bag") } if fullgrid { q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "fullgrid") } + + itemtype := constant.ITEM_TYPE_SPEC_DICE + if reqJson.ForwardPoint == 0 { + itemtype = constant.ITEM_TYPE_DICE + } + + if service.Task.UpdateTaskProgress(s.GetAccountId(), int32(itemtype), 1, nil) || taskupdate{ + q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") + } rspObj.GetOrCreateSideEffect().GetOrCreateUser().FromModel(user) c.JSON(200, rspObj) @@ -194,9 +204,14 @@ func (this *ActivityApi) Claim(c *gin.Context) { rspObj.GetOrCreateAward().AddItem(item.ItemId, item.ItemNum) } - if service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) { + bageffect, taskupdate := service.Award.HandleAwards(user, rspObj.GetOrCreateAward()) + if bageffect { q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "bag") } + + if taskupdate { + q5.AppendSlice(&rspObj.GetOrCreateSideEffect().Effects, "task") + } rspObj.GetOrCreateSideEffect().GetOrCreateUser().FromModel(user) c.JSON(200, rspObj) diff --git a/server/wheelserver/api/v1/bag/bag.go b/server/wheelserver/api/v1/bag/bag.go index 20242f8c..46879464 100644 --- a/server/wheelserver/api/v1/bag/bag.go +++ b/server/wheelserver/api/v1/bag/bag.go @@ -1,14 +1,15 @@ package bag import ( - "q5" "f5" - "main/constant" "main/common" + "main/constant" "main/model" - "main/vo" - "main/service" "main/mt" + "main/service" + "main/vo" + "q5" + "github.com/gin-gonic/gin" ) @@ -81,5 +82,8 @@ 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) { + 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 496fd9a4..464f478c 100644 --- a/server/wheelserver/api/v1/inapp_shop/inapp_shop.go +++ b/server/wheelserver/api/v1/inapp_shop/inapp_shop.go @@ -197,4 +197,6 @@ 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.Task.UpdateTaskProgress(orderModel.AccountId, itemcfg.GetItemType(), ordergoods.GetAmount(), nil) } diff --git a/server/wheelserver/api/v1/mission/mission.go b/server/wheelserver/api/v1/mission/mission.go index 9e467fa1..4f75f522 100644 --- a/server/wheelserver/api/v1/mission/mission.go +++ b/server/wheelserver/api/v1/mission/mission.go @@ -146,6 +146,13 @@ func (this *MissionApi) ClaimTaskAward(c *gin.Context) { return } + if taskMeta.GetRewardType() == constant.TASK_AWARD_SCORE { + user.AddScore(taskMeta.GetReward()) + if service.Task.UpdateTaskProgress(s.GetAccountId(), constant.ITEM_TYPE_SCORE, taskMeta.GetReward(), &tasks) { + q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") + } + } + taskitem.Award = 1 task.UpdateTasks(tasks) @@ -155,10 +162,5 @@ func (this *MissionApi) ClaimTaskAward(c *gin.Context) { q5.AppendSlice(&rspObj.Data, missionVo) } - if taskMeta.GetRewardType() == constant.TASK_AWARD_SCORE { - user.AddScore(taskMeta.GetReward()) - - } - c.JSON(200, rspObj) } diff --git a/server/wheelserver/api/v1/shop/shop.go b/server/wheelserver/api/v1/shop/shop.go index 907a37ed..95968152 100644 --- a/server/wheelserver/api/v1/shop/shop.go +++ b/server/wheelserver/api/v1/shop/shop.go @@ -97,5 +97,9 @@ 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) { + q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") + } + c.JSON(200, rspObj) } diff --git a/server/wheelserver/api/v1/user/user.go b/server/wheelserver/api/v1/user/user.go index 57594ffb..2d80dcd6 100644 --- a/server/wheelserver/api/v1/user/user.go +++ b/server/wheelserver/api/v1/user/user.go @@ -55,6 +55,9 @@ 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) { + q5.AppendSlice(&rspObj.BaseVo.GetOrCreateSideEffect().Effects, "task") + } } } diff --git a/server/wheelserver/service/award.go b/server/wheelserver/service/award.go index d5f1e4c7..2e5bbfbe 100644 --- a/server/wheelserver/service/award.go +++ b/server/wheelserver/service/award.go @@ -53,13 +53,14 @@ func (this *award) AddItem(accountId string, itemId int32, itemNum int32, baseVo } } -func (aa *award) HandleAwards(user *model.User, totalaward *vo.Award) bool { - bageffect := false +func (aa *award) HandleAwards(user *model.User, totalaward *vo.Award) (bageffect bool, taskupdate 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: @@ -88,5 +89,5 @@ func (aa *award) HandleAwards(user *model.User, totalaward *vo.Award) bool { } } - return bageffect + return bageffect, taskupdate } diff --git a/server/wheelserver/service/chip.go b/server/wheelserver/service/chip.go index e21df65b..b74828d3 100644 --- a/server/wheelserver/service/chip.go +++ b/server/wheelserver/service/chip.go @@ -97,6 +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) } } else { deletelist[accountId] = 0 diff --git a/server/wheelserver/service/task.go b/server/wheelserver/service/task.go index 7249f8cc..fe7ac0c8 100644 --- a/server/wheelserver/service/task.go +++ b/server/wheelserver/service/task.go @@ -102,19 +102,22 @@ func (this *task) List(accountId string, data *[]*vo.Mission) (errcode int32, ms return 0, "" } -func (this *task) UpdateTaskProgress(accountId string, itemid int32, amount int32, data *[]*vo.Mission) (errcode int32, msg string) { - task := new(model.Task) - err, found := task.Find(accountId) - if err != nil || !found { - return 500, "server internal error" +func (this *task) UpdateTaskProgress(accountId string, itemtypeid int32, amount int32, extasks *map[int32]*model.TaskItem) (taskupdate bool) { + var tasks map[int32]*model.TaskItem + var task *model.Task + if extasks == nil { + task := new(model.Task) + err, found := task.Find(accountId) + if err != nil || !found { + return false + } + + tasks = task.GetTaskItems() + if tasks == nil { + return false + } } - tasks := task.GetTaskItems() - if tasks == nil { - return 401, "bad request" - } - - taskupdate := false for _, taskitem := range tasks { if taskitem.Award != 0 || taskitem.Current >= taskitem.Target { continue @@ -125,7 +128,7 @@ func (this *task) UpdateTaskProgress(accountId string, itemid int32, amount int3 continue } - if taskMeta.GetParam2() != itemid { + if taskMeta.GetParam2() != itemtypeid { continue } @@ -137,15 +140,9 @@ func (this *task) UpdateTaskProgress(accountId string, itemid int32, amount int3 taskupdate = true } - if taskupdate { + if taskupdate && extasks == nil { task.UpdateTasks(tasks) } - for _, taskitem := range tasks { - missionVo := new(vo.Mission) - missionVo.FromModel(taskitem) - q5.AppendSlice(data, missionVo) - } - - return 0,"" + return taskupdate }