218 lines
6.4 KiB
Go
218 lines
6.4 KiB
Go
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)
|
||
}
|