Files
lckt-server/api/v1/app/redeem_code.go
2025-09-27 17:17:47 +08:00

218 lines
6.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package app
import (
"fmt"
"git.echol.cn/loser/lckt/global"
"git.echol.cn/loser/lckt/model/app"
"git.echol.cn/loser/lckt/model/app/request"
common "git.echol.cn/loser/lckt/model/common/request"
r "git.echol.cn/loser/lckt/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"time"
)
type RedeemCodeApi struct{}
// Create 创建兑换码库
func (rc *RedeemCodeApi) Create(ctx *gin.Context) {
var p app.RedeemCode
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("创建兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("创建兑换码库失败", zap.Error(err))
return
}
err := redeemCodeService.Create(p)
if err != nil {
r.FailWithMessage("创建兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("创建兑换码库失败", zap.Error(err))
return
}
r.OkWithMessage("创建兑换码库成功", ctx)
}
// Delete 删除兑换码库
func (rc *RedeemCodeApi) Delete(ctx *gin.Context) {
var p app.RedeemCode
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("删除兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("删除兑换码库失败", zap.Error(err))
return
}
err := redeemCodeService.Delete(p)
if err != nil {
r.FailWithMessage("删除兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("删除兑换码库失败", zap.Error(err))
return
}
r.OkWithMessage("删除兑换码库成功", ctx)
}
// Update 更新兑换码库
func (rc *RedeemCodeApi) Update(ctx *gin.Context) {
var p app.RedeemCode
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("更新兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("更新兑换码库失败", zap.Error(err))
return
}
err := redeemCodeService.Update(p)
if err != nil {
r.FailWithMessage("更新兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("更新兑换码库失败", zap.Error(err))
return
}
r.OkWithMessage("更新兑换码库成功", ctx)
}
// GetList 获取兑换码库列表
func (rc *RedeemCodeApi) GetList(ctx *gin.Context) {
var p common.PageInfo
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("获取兑换码库列表失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取兑换码库列表失败", zap.Error(err))
return
}
list, total, err := redeemCodeService.GetList(p)
if err != nil {
r.FailWithMessage("获取兑换码库列表失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取兑换码库列表失败", zap.Error(err))
return
}
r.OkWithDetailed(r.PageResult{
List: list,
Total: total,
Page: p.Page,
PageSize: p.PageSize,
}, "获取兑换码库列表成功", ctx)
}
// GetById 根据ID获取兑换码库
func (rc *RedeemCodeApi) GetById(ctx *gin.Context) {
var p common.GetById
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("获取兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取兑换码库失败", zap.Error(err))
return
}
redeem, err := redeemCodeService.GetById(p.ID)
if err != nil {
r.FailWithMessage("获取兑换码库失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取兑换码库失败", zap.Error(err))
return
}
r.OkWithDetailed(redeem, "获取兑换码库成功", ctx)
}
// ========================CDK相关========================
// CreateCDK 生成兑换码
func (rc *RedeemCodeApi) CreateCDK(ctx *gin.Context) {
var p request.GenerateCDK
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("生成兑换码失败:"+err.Error(), ctx)
global.GVA_LOG.Error("生成兑换码失败", zap.Error(err))
return
}
cdkVo, err := redeemCodeService.CreateCDK(p)
if err != nil {
r.FailWithMessage("生成兑换码失败:"+err.Error(), ctx)
global.GVA_LOG.Error("生成兑换码失败", zap.Error(err))
return
}
r.OkWithDetailed(cdkVo, "生成兑换码成功", ctx)
}
// GetCDKList 获取兑换码列表
func (rc *RedeemCodeApi) GetCDKList(ctx *gin.Context) {
var p request.GetCDKList
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("获取兑换码列表失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取兑换码列表失败", zap.Error(err))
return
}
list, total, err := redeemCodeService.GetCDKList(p)
if err != nil {
r.FailWithMessage("获取兑换码列表失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取兑换码列表失败", zap.Error(err))
return
}
r.OkWithDetailed(r.PageResult{
List: list,
Total: total,
Page: p.Page,
PageSize: p.PageSize,
}, "获取兑换码列表成功", ctx)
}
// DeleteCDK 删除兑换码
func (rc *RedeemCodeApi) DeleteCDK(ctx *gin.Context) {
var p app.CDK
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("删除兑换码失败:"+err.Error(), ctx)
global.GVA_LOG.Error("删除兑换码失败", zap.Error(err))
return
}
err := redeemCodeService.DeleteCDK(p)
if err != nil {
r.FailWithMessage("删除兑换码失败:"+err.Error(), ctx)
global.GVA_LOG.Error("删除兑换码失败", zap.Error(err))
return
}
r.OkWithMessage("删除兑换码成功", ctx)
}
// Redeem 兑换码兑换
func (rc *RedeemCodeApi) Redeem(context *gin.Context) {
var p request.RedeemCDK
if err := context.ShouldBind(&p); err != nil {
r.FailWithMessage("兑换失败:"+err.Error(), context)
global.GVA_LOG.Error("兑换失败", zap.Error(err))
return
}
err := redeemCodeService.Redeem(p, context)
if err != nil {
r.FailWithMessage(err.Error(), context)
global.GVA_LOG.Error("兑换失败", zap.Error(err))
return
}
r.OkWithMessage("兑换成功", context)
}
// ExportCDK 导出Excel
func (rc *RedeemCodeApi) ExportCDK(ctx *gin.Context) {
var p request.ExportCDK
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("导出Excel失败"+err.Error(), ctx)
global.GVA_LOG.Error("导出Excel失败", zap.Error(err))
return
}
f, err := redeemCodeService.ExportCDK(p)
if err != nil {
r.FailWithMessage("导出Excel失败"+err.Error(), ctx)
global.GVA_LOG.Error("导出Excel失败", zap.Error(err))
return
}
// Return the excel file.
ctx.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
filename := fmt.Sprintf("好运助手兑换码%v.xlsx", time.Now().Format("2006-01-02T15:04:05"))
ctx.Header("Content-Disposition", "attachment; filename="+filename)
if err := f.Write(ctx.Writer); err != nil {
r.FailWithMessage("导出Excel失败"+err.Error(), ctx)
return
}
r.OkWithMessage("导出Excel成功", ctx)
}