mh_server/controller/activity.go
2022-06-23 12:21:01 +08:00

103 lines
2.3 KiB
Go

package controller
import (
"github.com/codinl/go-logger"
"github.com/gin-gonic/gin"
"mh-server/lib/auth"
"mh-server/lib/status"
"mh-server/lib/utils"
"mh-server/model"
)
func UserRedeemCodeList(c *gin.Context) {
uc := auth.GetCurrentUser(c)
if uc == nil {
RespJson(c, status.Unauthorized, nil)
return
}
codeList, err := model.UserRedeemCodeList(uc.Uid)
if err != nil {
logger.Errorf("err:%#v", err)
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, codeList)
}
func UserConvertRedeemCode(c *gin.Context) {
req := &struct {
SerialCode string `json:"serial_code"`
}{}
if c.ShouldBindJSON(req) != nil {
logger.Errorf("para err")
RespJson(c, status.BadRequest, nil)
return
}
uc := auth.GetCurrentUser(c)
if uc == nil {
RespJson(c, status.Unauthorized, nil)
return
}
err := model.UserRedeemCodeConvert(uc.Uid, req.SerialCode)
if err != nil {
logger.Errorf("err:%#v", err)
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, nil)
}
func UserMemberRenewalState(c *gin.Context) {
uc := auth.GetCurrentUser(c)
if uc == nil {
RespJson(c, status.Unauthorized, nil)
return
}
var activityMemberRenewal model.ActivityMemberRenewal
err := model.NewActivityMemberRenewalQuerySet(model.DB).UidEq(uc.Uid).StateEq(1).
One(&activityMemberRenewal)
if err != nil && err != model.RecordNotFound {
logger.Error("activity member renewal err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
isPop := true
if err == model.RecordNotFound {
user := model.GetUserByUid(uc.Uid)
if user.MemberExpire.After(utils.Now().AddDate(0, -1, 0)) &&
user.MemberExpire.Before(utils.Now()) {
activityMemberRenewal = model.ActivityMemberRenewal{
ActivityId: 1,
Uid: uc.Uid,
State: 1,
StartTime: utils.Now(),
IsPop: true,
MemberLevel: user.MemberLevel,
}
err = model.DB.Create(&activityMemberRenewal).Error
if err != nil {
logger.Error("create activity member renewal err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
isPop = false
}
}
isMemberRenewal := false
if activityMemberRenewal.State == 1 {
isMemberRenewal = true
}
ret := make(map[string]interface{}, 0)
ret["is_pop"] = isPop
ret["is_member_renewal"] = isMemberRenewal
RespOK(c, ret)
return
}