56 lines
1.9 KiB
Go
56 lines
1.9 KiB
Go
package controller
|
||
|
||
import (
|
||
"context"
|
||
|
||
adminv1 "tool-api/api/admin/v1"
|
||
userv1 "tool-api/api/user/v1"
|
||
"tool-api/internal/logic"
|
||
)
|
||
|
||
// ============================================================================
|
||
// 优惠码控制器
|
||
//
|
||
// 拆成两个对象分别挂到 UserAuth / AdminAuth 两组:
|
||
// - Promo 用户端(P1 /promo/validate)
|
||
// - AdminPromo 管理端(A1–A5)
|
||
//
|
||
// ⚠️ 不能把同一个对象同时 Bind 到两组:group.Bind 会把该对象的**全部**方法都注册到该组,
|
||
// 导致管理端方法暴露在用户组(或反之)。
|
||
// ============================================================================
|
||
|
||
// cPromo 用户端优惠码接口(需用户登录)
|
||
type cPromo struct{}
|
||
|
||
// cAdminPromo 管理端优惠码接口(需管理员登录)
|
||
type cAdminPromo struct{}
|
||
|
||
var (
|
||
Promo = &cPromo{}
|
||
AdminPromo = &cAdminPromo{}
|
||
)
|
||
|
||
func (c *cPromo) PromoValidate(ctx context.Context, req *userv1.PromoValidateReq) (res *userv1.PromoValidateRes, err error) {
|
||
return logic.PromoValidate(ctx, req.Code, req.OrderType, req.TargetKey)
|
||
}
|
||
|
||
func (c *cAdminPromo) PromoList(ctx context.Context, req *adminv1.PromoListReq) (res *adminv1.PromoListRes, err error) {
|
||
return logic.AdminPromoList(ctx, req)
|
||
}
|
||
|
||
func (c *cAdminPromo) PromoSave(ctx context.Context, req *adminv1.PromoSaveReq) (res *adminv1.PromoSaveRes, err error) {
|
||
return logic.AdminPromoSave(ctx, req)
|
||
}
|
||
|
||
func (c *cAdminPromo) PromoToggle(ctx context.Context, req *adminv1.PromoToggleReq) (res *adminv1.PromoToggleRes, err error) {
|
||
return logic.AdminPromoToggle(ctx, req.Id, req.Status)
|
||
}
|
||
|
||
func (c *cAdminPromo) PromoDelete(ctx context.Context, req *adminv1.PromoDeleteReq) (res *adminv1.PromoDeleteRes, err error) {
|
||
return logic.AdminPromoDelete(ctx, req.Id)
|
||
}
|
||
|
||
func (c *cAdminPromo) PromoUsages(ctx context.Context, req *adminv1.PromoUsagesReq) (res *adminv1.PromoUsagesRes, err error) {
|
||
return logic.AdminPromoUsages(ctx, req)
|
||
}
|