🎨 新增兑换码功能,新增vip过期检测定时任务

This commit is contained in:
2025-09-09 22:25:27 +08:00
parent a30ab925d1
commit c588e9efe7
19 changed files with 914 additions and 56 deletions

View File

@@ -1,9 +1,11 @@
package app
import (
"git.echol.cn/loser/lckt/global"
"git.echol.cn/loser/lckt/model/app"
common "git.echol.cn/loser/lckt/model/common/request"
"git.echol.cn/loser/lckt/model/common/response"
"git.echol.cn/loser/lckt/task"
"github.com/gin-gonic/gin"
)
@@ -94,3 +96,13 @@ func (b *BannerApi) GetIndexBanners(context *gin.Context) {
}
response.OkWithData(list, context)
}
func (b *BannerApi) GetVIPBanners(context *gin.Context) {
err := task.CheckVip(global.GVA_DB)
if err != nil {
response.FailWithMessage("获取VIPBanner失败: "+err.Error(), context)
return
}
response.OkWithMessage("检测vip成功", context)
}

View File

@@ -7,6 +7,7 @@ type ApiGroup struct {
BannerApi
OrderApi
TeacherVip
RedeemCodeApi
}
var userService = service.ServiceGroupApp.UserServiceGroup.UserService
@@ -14,3 +15,4 @@ var appUserService = service.ServiceGroupApp.AppServiceGroup.AppUserService
var bannerService = service.ServiceGroupApp.AppServiceGroup.BannerService
var orderService = service.ServiceGroupApp.AppServiceGroup.OrderService
var teacherVipService = service.ServiceGroupApp.AppServiceGroup.TeacherVipService
var redeemCodeService = service.ServiceGroupApp.AppServiceGroup.RedeemCodeService

188
api/v1/app/redeem_code.go Normal file
View File

@@ -0,0 +1,188 @@
package app
import (
"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"
)
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)
}
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)
}