This commit is contained in:
li 2022-06-23 12:21:01 +08:00
parent 266eb091a1
commit 77038e1c7a
6 changed files with 3847 additions and 64 deletions

View File

@ -5,6 +5,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"mh-server/lib/auth" "mh-server/lib/auth"
"mh-server/lib/status" "mh-server/lib/status"
"mh-server/lib/utils"
"mh-server/model" "mh-server/model"
) )
@ -48,3 +49,54 @@ func UserConvertRedeemCode(c *gin.Context) {
RespOK(c, nil) 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
}

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,12 @@ const (
CouponTypeDeduction = "deduction" CouponTypeDeduction = "deduction"
) )
const (
CouponTypeMemberRenewal = "member_renewal"
)
//go:generate goqueryset -in coupon.go
// gen:qs
type Coupon struct { type Coupon struct {
Model Model
Name string `json:"name"` Name string `json:"name"`
@ -18,6 +24,7 @@ type Coupon struct {
ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束
} }
// gen:qs
type UserCoupon struct { type UserCoupon struct {
Model Model
@ -25,7 +32,32 @@ type UserCoupon struct {
CouponId uint32 `json:"coupon_id"` CouponId uint32 `json:"coupon_id"`
CouponType string `json:"coupon_type"` CouponType string `json:"coupon_type"`
Value uint32 `json:"value"` Value uint32 `json:"value"`
State uint32 `json:"state"` // State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期
ActiveStart time.Time `json:"active_start"` // 有效期开始 ActiveStart time.Time `json:"active_start"` // 有效期开始
ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束
} }
// gen:qs
type Activity struct {
Model
Name string `json:"name" gorm:"column:name;comment:'活动名称'"` // 活动名称
ActivityType uint32 `json:"activity_type" gorm:"column:activity_type;comment:'活动类型'"` // 活动类型 1-会员续费
State uint32 `json:"state" gorm:"column:state;comment:'状态'"` // 1-未开启 2-进行中 3-已结束
StartTime time.Time `json:"start_time" gorm:"column:start_time;comment:'开始时间'"` // 开始时间
EndTime time.Time `json:"end_time" gorm:"column:end_time;comment:'结束时间'"` // 结束时间 零值永不结束
}
// gen:qs
type ActivityMemberRenewal struct {
Model
ActivityId uint32 `json:"activity_id"`
Uid uint32 `json:"uid"`
State uint32 `json:"state" gorm:"column:state;comment:'状态'"` // 1-进行中 2-已完成 3-已过期
StartTime time.Time `json:"start_time" gorm:"column:start_time;comment:'开始时间'"` // 开始时间
IsPop bool `json:"is_pop" gorm:"column:is_pop;comment:'是否弹窗'"` // 是否弹窗
MemberLevel uint32 `json:"member_level" gorm:"column:member_level;comment:'会员等级'"` // 会员等级
//StartUseTime time.Time `json:"start_use_time" gorm:"column:start_use_time;comment:'开始使用时间'"` // 开始使用时间
}

View File

@ -105,16 +105,18 @@ func InitTestDB() {
//&CooperativeDeductSettle{}, //&CooperativeDeductSettle{},
//&XcxRole{}, //&XcxRole{},
&Goods{}, //&Goods{},
&GoodsCat{}, //&GoodsCat{},
&GoodsAttribute{}, //&GoodsAttribute{},
&GoodsAttributeCombo{}, //&GoodsAttributeCombo{},
&Spec{}, //&Spec{},
&SpecValue{}, //&SpecValue{},
&GoodsOrder{}, //&GoodsOrder{},
&OperationLog{}, //&OperationLog{},
&DeliverTask{}, //&DeliverTask{},
&DeliverTaskSub{}, //&DeliverTaskSub{},
&ActivityMemberRenewal{},
) )
fmt.Println("DB init success") fmt.Println("DB init success")
@ -150,63 +152,64 @@ func InitDBProd() {
DBProd.LogMode(false) DBProd.LogMode(false)
DBProd.SingularTable(true) DBProd.SingularTable(true)
DBProd.AutoMigrate( DBProd.AutoMigrate(
//&RedeemCode{}, //&RedeemCode{},
//&UserRedeemCode{}, //&UserRedeemCode{},
//&GameCardGoods{}, //&GameCardGoods{},
//&UserShareCardBill{}, //&UserShareCardBill{},
//&ShareCardBillGame{}, //&ShareCardBillGame{},
//&UserShareCard{}, //&UserShareCard{},
//&ShareCardVmRecord{}, //&ShareCardVmRecord{},
//&UserShareCardVm{}, //&UserShareCardVm{},
//&ShareCardDateVm{}, //&ShareCardDateVm{},
//&ShareCardGameVm{}, //&ShareCardGameVm{},
//&ShareCardRetrieve{}, //&ShareCardRetrieve{},
//&ShareCardRetrieveCard{}, //&ShareCardRetrieveCard{},
//&GameCardLabel{}, //&GameCardLabel{},
//&CardIssueFeedback{}, //&CardIssueFeedback{},
//&GameCard{}, //&GameCard{},
//&FundRecord{}, //&FundRecord{},
//&User{}, //&User{},
//&GameCard{}, //&GameCard{},
//&FundRecord{}, //&FundRecord{},
//&User{}, //&User{},
//&UserAttendance{}, //&UserAttendance{},
//&UserAttendanceRecord{}, //&UserAttendanceRecord{},
//&Store{}, //&Store{},
//&GameCard{}, //&GameCard{},
//&GameCardGoods{}, //&GameCardGoods{},
//&GameCardGoodsStock{}, //&GameCardGoodsStock{},
//&User{}, //&User{},
//&Order{}, //&Order{},
//&OrderCard{}, //&OrderCard{},
// //
//&OperationLog{}, //&OperationLog{},
//&CooperativeBusiness{}, //&CooperativeBusiness{},
//&CooperativeMemberDeduct{}, //&CooperativeMemberDeduct{},
//&CooperativeAssistantMemberDeduct{}, //&CooperativeAssistantMemberDeduct{},
// //
//&CooperativeMemberPromotion{}, //&CooperativeMemberPromotion{},
//&CooperativeMemberPromotionStore{}, //&CooperativeMemberPromotionStore{},
//&CooperativeMemberPromotionDay{}, //&CooperativeMemberPromotionDay{},
//&CooperativeMemberPromotionStoreDay{}, //&CooperativeMemberPromotionStoreDay{},
//&InviteMemberReport{}, //&InviteMemberReport{},
//&CooperativeDeductSettle{}, //&CooperativeDeductSettle{},
//&XcxRole{}, //&XcxRole{},
//&Goods{},
//&GoodsCat{},
//&GoodsAttribute{},
//&GoodsAttributeCombo{},
//&Spec{},
//&SpecValue{},
//&GoodsOrder{},
//&OperationLog{},
//&DeliverTask{},
//&DeliverTaskSub{},
&Goods{},
&GoodsCat{},
&GoodsAttribute{},
&GoodsAttributeCombo{},
&Spec{},
&SpecValue{},
&GoodsOrder{},
&OperationLog{},
&DeliverTask{},
&DeliverTaskSub{},
) )
if err := DBProd.DB().Ping(); err != nil { if err := DBProd.DB().Ping(); err != nil {

View File

@ -156,6 +156,7 @@ type FundRecord struct {
PaymentNo string `json:"payment_no" gorm:"index"` // 付款单号 PaymentNo string `json:"payment_no" gorm:"index"` // 付款单号
Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款 Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款
Remark string `json:"remark"` // 备注 Remark string `json:"remark"` // 备注
} }
// gen:qs // gen:qs

View File

@ -162,6 +162,10 @@ func ConfigAppRouter(r gin.IRouter) {
activity.Use(auth.UserAccessAuth) activity.Use(auth.UserAccessAuth)
activity.POST("redeem_code/user_redeem_code/list", controller.UserRedeemCodeList) // 详情 activity.POST("redeem_code/user_redeem_code/list", controller.UserRedeemCodeList) // 详情
activity.POST("redeem_code/user/convert", controller.UserConvertRedeemCode) // 会员兑换码 activity.POST("redeem_code/user/convert", controller.UserConvertRedeemCode) // 会员兑换码
// 会员续费
activity.POST("member_renewal/state", controller.UserMemberRenewalState)
} }
mall := api.Group("mall") mall := api.Group("mall")