feat(admin): add create-and-redeem API and payment integration docs

This commit is contained in:
erio
2026-03-01 00:41:38 +08:00
parent f7fa71bc28
commit 39ca192c41
7 changed files with 256 additions and 5 deletions

View File

@@ -174,6 +174,33 @@ func (s *RedeemService) GenerateCodes(ctx context.Context, req GenerateCodesRequ
return codes, nil
}
// CreateCode creates a redeem code with caller-provided code value.
// It is primarily used by admin integrations that require an external order ID
// to be mapped to a deterministic redeem code.
func (s *RedeemService) CreateCode(ctx context.Context, code *RedeemCode) error {
if code == nil {
return errors.New("redeem code is required")
}
code.Code = strings.TrimSpace(code.Code)
if code.Code == "" {
return errors.New("code is required")
}
if code.Type == "" {
code.Type = RedeemTypeBalance
}
if code.Type != RedeemTypeInvitation && code.Value <= 0 {
return errors.New("value must be greater than 0")
}
if code.Status == "" {
code.Status = StatusUnused
}
if err := s.redeemRepo.Create(ctx, code); err != nil {
return fmt.Errorf("create redeem code: %w", err)
}
return nil
}
// checkRedeemRateLimit 检查用户兑换错误次数是否超限
func (s *RedeemService) checkRedeemRateLimit(ctx context.Context, userID int64) error {
if s.cache == nil {