Files
junhong_cmp_fiber/internal/handler/admin/my_commission.go
huang e87513541b
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m41s
feat: 实现一次性佣金功能
- 新增佣金计算服务,支持一次性佣金和返佣计算
- 新增 ShopSeriesOneTimeCommissionTier 模型和存储层
- 新增两个数据库迁移:一次性佣金表和订单佣金字段
- 更新 Commission 模型,新增佣金来源和关联字段
- 更新 CommissionRecord 存储层,支持一次性佣金查询
- 更新 MyCommission 服务,集成一次性佣金计算逻辑
- 更新 ShopCommission 服务,支持一次性佣金统计
- 新增佣金计算异步任务处理器
- 更新 API 路由,新增一次性佣金相关端点
- 归档 OpenSpec 变更文档,同步规范到主规范库
2026-01-29 09:36:12 +08:00

98 lines
2.6 KiB
Go

package admin
import (
"github.com/gofiber/fiber/v2"
"github.com/break/junhong_cmp_fiber/internal/model/dto"
myCommissionService "github.com/break/junhong_cmp_fiber/internal/service/my_commission"
"github.com/break/junhong_cmp_fiber/pkg/errors"
"github.com/break/junhong_cmp_fiber/pkg/response"
)
type MyCommissionHandler struct {
service *myCommissionService.Service
}
func NewMyCommissionHandler(service *myCommissionService.Service) *MyCommissionHandler {
return &MyCommissionHandler{service: service}
}
func (h *MyCommissionHandler) GetSummary(c *fiber.Ctx) error {
result, err := h.service.GetCommissionSummary(c.UserContext())
if err != nil {
return err
}
return response.Success(c, result)
}
func (h *MyCommissionHandler) CreateWithdrawal(c *fiber.Ctx) error {
var req dto.CreateMyWithdrawalReq
if err := c.BodyParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
}
result, err := h.service.CreateWithdrawalRequest(c.UserContext(), &req)
if err != nil {
return err
}
return response.Success(c, result)
}
func (h *MyCommissionHandler) ListWithdrawals(c *fiber.Ctx) error {
var req dto.MyWithdrawalListReq
if err := c.QueryParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
}
result, err := h.service.ListMyWithdrawalRequests(c.UserContext(), &req)
if err != nil {
return err
}
return response.SuccessWithPagination(c, result.Items, result.Total, result.Page, result.Size)
}
func (h *MyCommissionHandler) ListRecords(c *fiber.Ctx) error {
var req dto.MyCommissionRecordListReq
if err := c.QueryParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
}
result, err := h.service.ListMyCommissionRecords(c.UserContext(), &req)
if err != nil {
return err
}
return response.SuccessWithPagination(c, result.Items, result.Total, result.Page, result.Size)
}
func (h *MyCommissionHandler) GetStats(c *fiber.Ctx) error {
var req dto.CommissionStatsRequest
if err := c.QueryParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
}
result, err := h.service.GetStats(c.UserContext(), &req)
if err != nil {
return err
}
return response.Success(c, result)
}
func (h *MyCommissionHandler) GetDailyStats(c *fiber.Ctx) error {
var req dto.DailyCommissionStatsRequest
if err := c.QueryParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
}
result, err := h.service.GetDailyStats(c.UserContext(), &req)
if err != nil {
return err
}
return response.Success(c, result)
}