mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-16 07:33:06 +08:00
- 新增全局模式开关 RECHARGE_BONUS_MODE(bonus / discount),接入支付配置、后台设置接口与 checkout-info - 折扣模式:到账不变,实付基数按百分比打折(按币种精度取整),手续费 / 每日限额 / 渠道选实例沿用折后基数; 百分比须 < 100,运行时 ≥ 100 按无优惠处理 - 充值页角标改为单行红色价签(赠金「+20%」/ 折扣「20% OFF」),第二行按模式显示到账或折后实付; 摘要卡折扣模式显示优惠行,渠道限额校验改用折后实付 - 后台「充值优惠阶梯」拆为独立卡片:赠金 / 折扣切换、紧凑档位表格、区间预览、活动文案 - 补前后端单测与 zh/en 文案
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
package admin
|
|
|
|
import (
|
|
"github.com/Wei-Shaw/sub2api/internal/handler/dto"
|
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
|
)
|
|
|
|
// rechargeBonusTiersFromDTO 请求 nil 表示未携带该字段(保持现值);空数组表示清空阶梯。
|
|
func rechargeBonusTiersFromDTO(items *[]dto.RechargeBonusTier) *[]service.RechargeBonusTier {
|
|
if items == nil {
|
|
return nil
|
|
}
|
|
out := make([]service.RechargeBonusTier, 0, len(*items))
|
|
for _, item := range *items {
|
|
out = append(out, service.RechargeBonusTier{MinAmount: item.MinAmount, BonusPercent: item.BonusPercent})
|
|
}
|
|
return &out
|
|
}
|
|
|
|
// rechargeBonusModeToDTO 输出已归一化的模式(空/非法按 bonus)。
|
|
func rechargeBonusModeToDTO(mode string) string {
|
|
normalized, _ := service.NormalizeRechargeBonusMode(mode)
|
|
return normalized
|
|
}
|
|
|
|
// rechargeBonusTiersToDTO 始终返回非 nil 切片,空配置输出 []。
|
|
func rechargeBonusTiersToDTO(items []service.RechargeBonusTier) []dto.RechargeBonusTier {
|
|
out := make([]dto.RechargeBonusTier, 0, len(items))
|
|
for _, item := range items {
|
|
out = append(out, dto.RechargeBonusTier{MinAmount: item.MinAmount, BonusPercent: item.BonusPercent})
|
|
}
|
|
return out
|
|
}
|