All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m27s
- OneTimeCommissionTierDTO 补充 operator 字段映射 - GrantCommissionTierItem 补充 dimension/stat_scope 字段(从全局配置合并) - 系列授权列表/详情补充强充锁定状态和强充金额的有效值计算 - 同步 OpenSpec 主规范并归档变更文档
4.1 KiB
4.1 KiB
1. 套餐系列 DTO 修复(Operator 字段)
- 1.1
internal/model/dto/package_series_dto.go:OneTimeCommissionTierDTO新增Operator string字段,tag 为json:"operator,omitempty" validate:"omitempty,oneof=> >= < <=" description:"阈值比较运算符(>、>=、<、<=),空值时计算引擎默认 >=" - 1.2
internal/service/package_series/service.go:dtoToModelConfig()中OneTimeCommissionTier赋值新增Operator: tier.Operator - 1.3
internal/service/package_series/service.go:modelToDTO()中OneTimeCommissionTierDTO赋值新增Operator: tier.Operator - 1.4 运行
go build ./...确认无编译错误
2. 授权分配 DTO 修复(Dimension / StatScope 字段)
- 2.1
internal/model/dto/shop_series_grant_dto.go:GrantCommissionTierItem新增两个字段:Dimension string,tag 为json:"dimension,omitempty" description:"统计维度(sales_count:销售量, sales_amount:销售额),来自 PackageSeries 全局配置,响应中只读"StatScope string,tag 为json:"stat_scope,omitempty" description:"统计范围(self:仅自己, self_and_sub:自己+下级),来自 PackageSeries 全局配置,响应中只读"
- 2.2
internal/service/shop_series_grant/service.go:buildGrantResponse()梯度模式合并分支,在构造GrantCommissionTierItem时补充Dimension: globalTier.Dimension和StatScope: globalTier.StatScope - 2.3 运行
go build ./...确认无编译错误
3. 验证
- 3.1 db-validation:创建含
operator/dimension/stat_scope的梯度套餐系列,查询详情确认响应中 tiers 包含完整字段 - 3.2 db-validation:创建梯度模式系列授权,调用
GET /shop-series-grants/:id,确认commission_tiers中每档位包含operator、dimension、stat_scope、threshold、amount - 3.3 db-validation:调用
POST /shop-series-grants(Create)和PUT /shop-series-grants/:id(Update),确认响应中同样携带dimension/stat_scope - 3.4 db-validation:不传
operator的梯度档位,确认响应中operator字段缺失(omitempty 生效),不影响佣金计算逻辑
4. 强充状态有效展示修复
- 4.1
internal/model/dto/shop_series_grant_dto.go:ShopSeriesGrantListItem新增两个字段:ForceRechargeLocked bool,tag 为json:"force_recharge_locked" description:"强充是否被套餐系列锁定(true 时代理不可修改)"ForceRechargeAmount int64,tag 为json:"force_recharge_amount" description:"强充金额(分)"
- 4.2
internal/service/shop_series_grant/service.go:列表构建(for 循环内的if sr, ok := seriesMap[a.SeriesID]分支)修正强充状态字段:forceRechargeLocked := config.TriggerType == model.OneTimeCommissionTriggerFirstRecharge || config.EnableForceRecharge item.ForceRechargeLocked = forceRechargeLocked if forceRechargeLocked { item.ForceRechargeEnabled = true item.ForceRechargeAmount = config.ForceAmount } else { item.ForceRechargeEnabled = a.EnableForceRecharge item.ForceRechargeAmount = a.ForceRechargeAmount } - 4.3
internal/service/shop_series_grant/service.go:buildGrantResponse()内强充状态计算修正(当前约 L132-L135):if forceRechargeLocked { resp.ForceRechargeEnabled = true resp.ForceRechargeAmount = config.ForceAmount } else { resp.ForceRechargeEnabled = allocation.EnableForceRecharge resp.ForceRechargeAmount = allocation.ForceRechargeAmount } - 4.4 运行
go build ./...确认无编译错误
5. 强充 Bug 验证
- 5.1 db-validation:查询套餐系列中
enable_force_recharge=true的系列(如 series_id=2117,2118)对应的授权分配列表,确认force_recharge_locked=true、force_recharge_enabled=true、force_recharge_amount=系列配置值 - 5.2 db-validation:调用
GET /api/admin/shop-series-grants/:id(锁定系列的分配记录),确认详情响应中force_recharge_locked=true、force_recharge_enabled=true