From b0130f39d58c399a94d0e524e7172b81261b4092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Wed, 11 Mar 2026 00:43:17 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(user):=20=E6=B7=BB=E5=8A=A0=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E5=95=86=E5=BA=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增ReqShop接口用于用户申请成为商店角色 - 验证用户是否满足申请条件(任务完成状态) - 将符合条件的用户分配到商店角色ID 27 feat(pet): 设置宠物价格最小值限制 - 为宠物价格设置最低5的限制 - 防止价格过低影响游戏平衡 feat(task): 实现商店申请条件检查 - 添加CanShop方法检查用户是否完成特定任务 - 使用位集验证任务ID 500 --- .../base/controller/admin/base_sys_user.go | 17 +++++++++++ modules/player/controller/admin/pet.go | 3 ++ modules/player/service/task.go | 29 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/modules/base/controller/admin/base_sys_user.go b/modules/base/controller/admin/base_sys_user.go index b849ee97..2d3c9822 100644 --- a/modules/base/controller/admin/base_sys_user.go +++ b/modules/base/controller/admin/base_sys_user.go @@ -7,6 +7,7 @@ import ( "blazing/cool" + "blazing/modules/base/model" "blazing/modules/base/service" config "blazing/modules/config/service" @@ -47,6 +48,22 @@ func (c *BaseSysUserController) Move(ctx context.Context, req *UserMoveReq) (res return } +type ReqShopReq struct { + g.Meta `path:"/reqshop" method:"POST"` + Authorization string `json:"Authorization" in:"header"` +} + +func (c *BaseSysUserController) ReqShop(ctx context.Context, req *ReqShopReq) (res *cool.BaseRes, err error) { + t := cool.GetAdmin(ctx) + + if !playerservice.NewTaskService(uint32(t.UserId)).CanShop() { + return cool.Fail("不满足申请条件"), nil + } + cool.DBM(&model.BaseSysUserRole{}).Data("roleId", "27", "userId", t.UserId).Save() + res = cool.Ok(nil) + return +} + type SessionReq struct { g.Meta `path:"/getSession" method:"GET"` Authorization string `json:"Authorization" in:"header"` diff --git a/modules/player/controller/admin/pet.go b/modules/player/controller/admin/pet.go index 97f273d3..35723efd 100644 --- a/modules/player/controller/admin/pet.go +++ b/modules/player/controller/admin/pet.go @@ -94,6 +94,9 @@ func (c *PetBagController) ModPrise(ctx context.Context, req *PriseReq) (res *co admin := cool.GetAdmin(ctx) res = &cool.BaseRes{} + if req.Price < 5 { + req.Price = 5 + } service.NewPetService(uint32(admin.UserId)).UPdatePrice(req.Ctime, req.Price) return diff --git a/modules/player/service/task.go b/modules/player/service/task.go index 8e4932db..46cf4a27 100644 --- a/modules/player/service/task.go +++ b/modules/player/service/task.go @@ -6,8 +6,37 @@ import ( "time" "github.com/gogf/gf/v2/os/gtime" + "github.com/pointernil/bitset32" ) +func (s *TaskService) CanShop() bool { + var gg *model.Task + + s.dbm(s.Model).Where("task_id", 500).Scan(&gg) + + if gg == nil { + return false + } + + r := bitset32.From(gg.Data) + // 分支未完成时,标记完成并发放奖励 + if !r.Test(70) { + return false + } + var ggg *model.Task + s.dbm(s.Model).Where("task_id", 500).Scan(&ggg) + if ggg == nil { + return false + } + + // 分支未完成时,标记完成并发放奖励 + if !bitset32.From(ggg.Data).Test(50) { + return false + } + + return true +} + // 获取任务信息 func (s *TaskService) Exec(id uint32, t func(*model.Task) bool) { var gg model.Task