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) }