refactor: 一次性佣金配置从套餐级别提升到系列级别
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m29s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m29s
主要变更: - 新增 tb_shop_series_allocation 表,存储系列级别的一次性佣金配置 - ShopPackageAllocation 移除 one_time_commission_amount 字段 - PackageSeries 新增 enable_one_time_commission 字段控制是否启用一次性佣金 - 新增 /api/admin/shop-series-allocations CRUD 接口 - 佣金计算逻辑改为从 ShopSeriesAllocation 获取一次性佣金金额 - 删除废弃的 ShopSeriesOneTimeCommissionTier 模型 - OpenAPI Tag '系列分配' 和 '单套餐分配' 合并为 '套餐分配' 迁移脚本: - 000042: 重构佣金套餐模型 - 000043: 简化佣金分配 - 000044: 一次性佣金分配重构 - 000045: PackageSeries 添加 enable_one_time_commission 字段 测试: - 新增验收测试 (shop_series_allocation, commission_calculation) - 新增流程测试 (one_time_commission_chain) - 删除过时的单元测试(已被验收测试覆盖)
This commit is contained in:
@@ -146,3 +146,14 @@ func RedisCommissionStatsKey(allocationID uint, period string) string {
|
||||
func RedisCommissionStatsLockKey() string {
|
||||
return "commission:stats:sync:lock"
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// 系列分配相关 Redis Key
|
||||
// ========================================
|
||||
|
||||
// RedisShopSeriesAllocationKey 生成店铺系列分配缓存的 Redis 键
|
||||
// 用途:缓存店铺+系列的分配配置
|
||||
// 过期时间:30 分钟
|
||||
func RedisShopSeriesAllocationKey(shopID, seriesID uint) string {
|
||||
return fmt.Sprintf("shop_series_alloc:%d:%d", shopID, seriesID)
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ func (h *Handler) registerDeviceImportHandler() {
|
||||
|
||||
func (h *Handler) registerCommissionStatsHandlers() {
|
||||
statsStore := postgres.NewShopSeriesCommissionStatsStore(h.db)
|
||||
allocationStore := postgres.NewShopSeriesAllocationStore(h.db)
|
||||
allocationStore := postgres.NewShopPackageAllocationStore(h.db)
|
||||
|
||||
updateHandler := task.NewCommissionStatsUpdateHandler(h.redis, statsStore, allocationStore, h.logger)
|
||||
syncHandler := task.NewCommissionStatsSyncHandler(h.db, h.redis, statsStore, h.logger)
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package utils
|
||||
|
||||
import "github.com/break/junhong_cmp_fiber/internal/model"
|
||||
|
||||
func CalculateCostPrice(allocation *model.ShopSeriesAllocation, orderAmount int64) int64 {
|
||||
if allocation.BaseCommissionMode == model.CommissionModeFixed {
|
||||
return orderAmount - allocation.BaseCommissionValue
|
||||
} else if allocation.BaseCommissionMode == model.CommissionModePercent {
|
||||
commission := orderAmount * allocation.BaseCommissionValue / 1000
|
||||
return orderAmount - commission
|
||||
}
|
||||
return orderAmount
|
||||
}
|
||||
Reference in New Issue
Block a user