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"
"mh-server/lib/auth"
"mh-server/lib/status"
"mh-server/lib/utils"
"mh-server/model"
)
@ -48,3 +49,54 @@ func UserConvertRedeemCode(c *gin.Context) {
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"
)
const (
CouponTypeMemberRenewal = "member_renewal"
)
//go:generate goqueryset -in coupon.go
// gen:qs
type Coupon struct {
Model
Name string `json:"name"`
@ -18,6 +24,7 @@ type Coupon struct {
ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束
}
// gen:qs
type UserCoupon struct {
Model
@ -25,7 +32,32 @@ type UserCoupon struct {
CouponId uint32 `json:"coupon_id"`
CouponType string `json:"coupon_type"`
Value uint32 `json:"value"`
State uint32 `json:"state"` //
State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期
ActiveStart time.Time `json:"active_start"` // 有效期开始
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{},
//&XcxRole{},
&Goods{},
&GoodsCat{},
&GoodsAttribute{},
&GoodsAttributeCombo{},
&Spec{},
&SpecValue{},
&GoodsOrder{},
&OperationLog{},
&DeliverTask{},
&DeliverTaskSub{},
//&Goods{},
//&GoodsCat{},
//&GoodsAttribute{},
//&GoodsAttributeCombo{},
//&Spec{},
//&SpecValue{},
//&GoodsOrder{},
//&OperationLog{},
//&DeliverTask{},
//&DeliverTaskSub{},
&ActivityMemberRenewal{},
)
fmt.Println("DB init success")
@ -150,63 +152,64 @@ func InitDBProd() {
DBProd.LogMode(false)
DBProd.SingularTable(true)
DBProd.AutoMigrate(
//&RedeemCode{},
//&UserRedeemCode{},
//&GameCardGoods{},
//&RedeemCode{},
//&UserRedeemCode{},
//&GameCardGoods{},
//&UserShareCardBill{},
//&ShareCardBillGame{},
//&UserShareCard{},
//&ShareCardVmRecord{},
//&UserShareCardVm{},
//&ShareCardDateVm{},
//&ShareCardGameVm{},
//&ShareCardRetrieve{},
//&ShareCardRetrieveCard{},
//&GameCardLabel{},
//&CardIssueFeedback{},
//&UserShareCardBill{},
//&ShareCardBillGame{},
//&UserShareCard{},
//&ShareCardVmRecord{},
//&UserShareCardVm{},
//&ShareCardDateVm{},
//&ShareCardGameVm{},
//&ShareCardRetrieve{},
//&ShareCardRetrieveCard{},
//&GameCardLabel{},
//&CardIssueFeedback{},
//&GameCard{},
//&FundRecord{},
//&User{},
//&GameCard{},
//&FundRecord{},
//&User{},
//&GameCard{},
//&FundRecord{},
//&User{},
//&UserAttendance{},
//&UserAttendanceRecord{},
//&GameCard{},
//&FundRecord{},
//&User{},
//&UserAttendance{},
//&UserAttendanceRecord{},
//&Store{},
//&GameCard{},
//&GameCardGoods{},
//&GameCardGoodsStock{},
//&User{},
//&Order{},
//&OrderCard{},
//
//&OperationLog{},
//&CooperativeBusiness{},
//&CooperativeMemberDeduct{},
//&CooperativeAssistantMemberDeduct{},
//
//&CooperativeMemberPromotion{},
//&CooperativeMemberPromotionStore{},
//&CooperativeMemberPromotionDay{},
//&CooperativeMemberPromotionStoreDay{},
//&InviteMemberReport{},
//&CooperativeDeductSettle{},
//&XcxRole{},
//&Store{},
//&GameCard{},
//&GameCardGoods{},
//&GameCardGoodsStock{},
//&User{},
//&Order{},
//&OrderCard{},
//
//&OperationLog{},
//&CooperativeBusiness{},
//&CooperativeMemberDeduct{},
//&CooperativeAssistantMemberDeduct{},
//
//&CooperativeMemberPromotion{},
//&CooperativeMemberPromotionStore{},
//&CooperativeMemberPromotionDay{},
//&CooperativeMemberPromotionStoreDay{},
//&InviteMemberReport{},
//&CooperativeDeductSettle{},
//&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 {

View File

@ -47,7 +47,7 @@ type User struct {
ShopAssistantName string `json:"shop_assistant_name"` // 店员名称
Version uint32 `json:"-"` //
UserVm *UserVm `json:"user_vm" gorm:"-"` //
//RoleId uint32 `json:"role_id"` // 角色id
}
@ -156,6 +156,7 @@ type FundRecord struct {
PaymentNo string `json:"payment_no" gorm:"index"` // 付款单号
Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款
Remark string `json:"remark"` // 备注
}
// gen:qs

View File

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