This commit is contained in:
li 2022-01-16 16:56:20 +08:00
parent b7f3bcac3d
commit a0a31709e5
13 changed files with 1015 additions and 145 deletions

View File

@ -288,13 +288,18 @@ func PushWXPayNotice(c *gin.Context) {
expireTime = user.MemberExpire.AddDate(1, 0, 0) expireTime = user.MemberExpire.AddDate(1, 0, 0)
} }
configInfo, err := model.PayConfigInfo() //configInfo, err := model.PayConfigInfo()
//if err != nil {
// logger.Error("err:", err)
// return
//}
memberConfig, err := model.GetMemberConfig(record.MemberLevel)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("GetMemberConfig err:", err)
return return
} }
err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: 2, MemberExpire: expireTime, Deposit: configInfo.DepositFee}) err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: record.MemberLevel, MemberExpire: expireTime, Deposit: memberConfig.MemberDeposit})
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
} }
@ -313,6 +318,7 @@ func PushWXPayNotice(c *gin.Context) {
MemberType: 2, MemberType: 2,
ToUid: record.Uid, ToUid: record.Uid,
MemberStatus: 2, MemberStatus: 2,
MemberLevel: record.MemberLevel,
} }
err := userInvite.Create(model.DB) err := userInvite.Create(model.DB)
if err != nil { if err != nil {
@ -321,7 +327,7 @@ func PushWXPayNotice(c *gin.Context) {
} else { } else {
qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater() qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
if user.MemberLevel != 2 { if user.MemberLevel != 2 {
qs = qs.SetMemberOpenTime(time.Now()) qs = qs.SetMemberOpenTime(time.Now()).SetMemberLevel(record.MemberLevel)
} }
num, err := qs.SetMemberType(2).SetMemberStatus(2).UpdateNum() num, err := qs.SetMemberType(2).SetMemberStatus(2).UpdateNum()
if err != nil { if err != nil {
@ -333,8 +339,8 @@ func PushWXPayNotice(c *gin.Context) {
if invite.FromUid != 0 { if invite.FromUid != 0 {
inviteUser := model.GetUserByUid(invite.FromUid) inviteUser := model.GetUserByUid(invite.FromUid)
if inviteUser.UserType != 2 && user.MemberLevel != 2 { if inviteUser.UserType != 2 && user.MemberLevel != 2 { // 邀请 新用户推送一次
err := model.CodeSendToUser(invite.FromUid, model.CodeTypeMemberCard30,model.RedeemCodeActivityTypeUserInvite) err := model.CodeSendToUser(invite.FromUid, model.CodeTypeMemberCard30, model.RedeemCodeActivityTypeUserInvite)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
} }
@ -344,7 +350,7 @@ func PushWXPayNotice(c *gin.Context) {
} }
if user.MemberLevel != 2 { if user.MemberLevel != 2 {
err = model.CodeSendToUser(user.Uid, model.CodeTypeMemberCard30,model.RedeemCodeActivityTypeStore) err = model.CodeSendToUser(user.Uid, model.CodeTypeMemberCard30, model.RedeemCodeActivityTypeStore)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
} }

View File

@ -161,12 +161,12 @@ func OrderCreate(c *gin.Context) {
//} //}
req := struct { req := struct {
GameCardId uint64 `json:"game_card_id"` GameCardList []model.CardInfo `json:"game_card_list"`
StoreId uint64 `json:"store_id"` StoreId uint64 `json:"store_id"`
UserAddressId uint64 `json:"user_address_id"` UserAddressId uint64 `json:"user_address_id"`
Price uint32 `json:"price"` Price uint32 `json:"price"`
DeliveryType uint8 `json:"delivery_type"` // 取货方式 DeliveryType uint8 `json:"delivery_type"` // 取货方式
ExpressFee uint32 `json:"express_fee"` ExpressFee uint32 `json:"express_fee"`
}{} }{}
bodyString, err := ioutil.ReadAll(c.Request.Body) bodyString, err := ioutil.ReadAll(c.Request.Body)
@ -222,7 +222,21 @@ func OrderCreate(c *gin.Context) {
RespJson(c, status.OrderUnpaidDeposit, nil) RespJson(c, status.OrderUnpaidDeposit, nil)
return return
} }
memberConfig, err := model.GetMemberConfig(user.MemberLevel)
if err != nil {
logger.Error("GetMemberConfig err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
cardCount := uint32(0)
for _, v := range req.GameCardList {
cardCount += v.Count
}
if memberConfig.MemberLever < cardCount {
logger.Error("GetMemberConfig err:", err)
RespJson(c, status.OrderMemberLevelLow, nil)
return
}
model.UnPayOrderSetCancel(user.Uid) model.UnPayOrderSetCancel(user.Uid)
orderCreateLocker.Lock() orderCreateLocker.Lock()
@ -240,7 +254,7 @@ func OrderCreate(c *gin.Context) {
return return
} }
online, err := model.IsGameCardOnline(uint32(req.GameCardId)) online, err := model.IsGameCardListOnline(req.GameCardList)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
@ -262,7 +276,7 @@ func OrderCreate(c *gin.Context) {
order := model.Order{ order := model.Order{
Uid: uint64(uc.Uid), Uid: uint64(uc.Uid),
GameCardId: req.GameCardId, GameCardId: 0,
StoreId: req.StoreId, StoreId: req.StoreId,
UserAddressId: req.UserAddressId, UserAddressId: req.UserAddressId,
DeliveryType: req.DeliveryType, DeliveryType: req.DeliveryType,
@ -278,80 +292,80 @@ func OrderCreate(c *gin.Context) {
//tx := model.TransactionBegin() //tx := model.TransactionBegin()
////TODO 以支付成功作为订单下单成功的依据,不是订单创建 已修改 ////TODO 以支付成功作为订单下单成功的依据,不是订单创建 已修改
var gameCardGoodsStock model.GameCardGoodsStock //var gameCardGoodsStock model.GameCardGoodsStock
err = model.NewGameCardGoodsStockQuerySet(model.DB).StoreIdEq(req.StoreId).GameCardIdEq(req.GameCardId).One(&gameCardGoodsStock) //err = model.NewGameCardGoodsStockQuerySet(model.DB).StoreIdEq(req.StoreId).GameCardIdEq(req.GameCardId).One(&gameCardGoodsStock)
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
if gameCardGoodsStock.RentStock <= 0 {
logger.Error("order stock out ")
RespJson(c, status.OrderStockOut, nil)
return
}
fmt.Println("PayPrice:", order.PayPrice)
if req.Price == 0 {
order.PayStatus = model.PayStatusPaid
fmt.Println("orderId:", order.PayStatus)
err = order.OrderCreate()
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
// 减库存
sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock-1 WHERE store_id=%d AND game_card_id=%d;", req.StoreId, req.GameCardId)
fmt.Println("sql:", sql)
err = model.DB.Exec(sql).Error
if err != nil {
logger.Errorf("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
ret := map[string]interface{}{
"web_pay": "",
"order_id": order.ID,
}
RespOK(c, ret)
return
}
begin := model.DB.Begin()
//err = order.OrderCreate()
//if err != nil { //if err != nil {
// logger.Error("err:", err) // logger.Error("err:", err)
// RespJson(c, status.InternalServerError, nil) // RespJson(c, status.InternalServerError, nil)
// return // return
//} //}
err = order.Create(begin) //if gameCardGoodsStock.RentStock <= 0 {
if err != nil { // logger.Error("order stock out ")
begin.Rollback() // RespJson(c, status.OrderStockOut, nil)
logger.Error("err:", err) // return
RespJson(c, status.InternalServerError, nil) //}
return //
} //fmt.Println("PayPrice:", order.PayPrice)
//if req.Price == 0 {
// 减库存 // order.PayStatus = model.PayStatusPaid
sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock-1 WHERE store_id=%d AND game_card_id=%d;", req.StoreId, req.GameCardId) // fmt.Println("orderId:", order.PayStatus)
fmt.Println("sql:", sql) // err = order.OrderCreate()
err = begin.Exec(sql).Error // if err != nil {
if err != nil { // logger.Error("err:", err)
begin.Rollback() // RespJson(c, status.InternalServerError, nil)
logger.Errorf("err:", err) // return
RespJson(c, status.InternalServerError, nil) // }
return //
} // // 减库存
err = begin.Commit().Error // sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock-1 WHERE store_id=%d AND game_card_id=%d;", req.StoreId, req.GameCardId)
if err != nil { // fmt.Println("sql:", sql)
begin.Rollback() // err = model.DB.Exec(sql).Error
logger.Errorf("err:", err) // if err != nil {
RespJson(c, status.InternalServerError, nil) // logger.Errorf("err:", err)
return // RespJson(c, status.InternalServerError, nil)
} // return
// }
//
// ret := map[string]interface{}{
// "web_pay": "",
// "order_id": order.ID,
// }
// RespOK(c, ret)
// return
//}
//
//begin := model.DB.Begin()
////err = order.OrderCreate()
////if err != nil {
//// logger.Error("err:", err)
//// RespJson(c, status.InternalServerError, nil)
//// return
////}
//err = order.Create(begin)
//if err != nil {
// begin.Rollback()
// logger.Error("err:", err)
// RespJson(c, status.InternalServerError, nil)
// return
//}
//
//// 减库存
//sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock-1 WHERE store_id=%d AND game_card_id=%d;", req.StoreId, req.GameCardId)
//fmt.Println("sql:", sql)
//err = begin.Exec(sql).Error
//if err != nil {
// begin.Rollback()
// logger.Errorf("err:", err)
// RespJson(c, status.InternalServerError, nil)
// return
//}
//err = begin.Commit().Error
//if err != nil {
// begin.Rollback()
// logger.Errorf("err:", err)
// RespJson(c, status.InternalServerError, nil)
// return
//}
orderId := fmt.Sprintf("%d", order.ID) orderId := fmt.Sprintf("%d", order.ID)
//orderId = "100000" //orderId = "100000"

View File

@ -57,6 +57,9 @@ func ShoppingCartAdd(c *gin.Context) {
RespJson(c, status.BadRequest, nil) RespJson(c, status.BadRequest, nil)
return return
} }
//fmt.Println("GameCardId:",req.GameCardId)
//fmt.Println("AddType:",req.AddType)
if req.GameCardId == 0 { if req.GameCardId == 0 {
logger.Error("GameCardId is 0") logger.Error("GameCardId is 0")
RespJson(c, status.BadRequest, nil) RespJson(c, status.BadRequest, nil)
@ -96,7 +99,9 @@ func ShoppingCartAdd(c *gin.Context) {
} else if req.AddType == 2 { } else if req.AddType == 2 {
shoppingCart.Count -= 1 shoppingCart.Count -= 1
} }
if shoppingCart.Count < 0 {
shoppingCart.Count = 0
}
_, err = model.NewShoppingCartQuerySet(model.DB).IDEq(shoppingCart.ID).GetUpdater().SetCount(shoppingCart.Count).UpdateNum() _, err = model.NewShoppingCartQuerySet(model.DB).IDEq(shoppingCart.ID).GetUpdater().SetCount(shoppingCart.Count).UpdateNum()
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)

View File

@ -205,6 +205,14 @@ func UserInfoUpdate(c *gin.Context) {
} }
func OpenMember(c *gin.Context) { func OpenMember(c *gin.Context) {
req := struct {
MemberLevel uint32 `json:"member_level"` // 昵称
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Error("parameter err")
RespJson(c, status.BadRequest, nil)
return
}
uc := auth.GetCurrentUser(c) uc := auth.GetCurrentUser(c)
if uc == nil { if uc == nil {
RespJson(c, status.Unauthorized, nil) RespJson(c, status.Unauthorized, nil)
@ -213,12 +221,19 @@ func OpenMember(c *gin.Context) {
user := model.GetUserByUid(uc.Uid) user := model.GetUserByUid(uc.Uid)
configInfo, err := model.PayConfigInfo() //configInfo, err := model.PayConfigInfo()
//if err != nil {
// logger.Error("err:", err)
// RespJson(c, status.InternalServerError, nil)
// return
//}
memberConfig, err := model.GetMemberConfig(req.MemberLevel)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
return return
} }
//totalFee := uint32(MemberFee + DepositFee) //totalFee := uint32(MemberFee + DepositFee)
////totalFee = uint32(3) // TODO 测试 ////totalFee = uint32(3) // TODO 测试
//if user.Deposit == 300 { //if user.Deposit == 300 {
@ -226,10 +241,11 @@ func OpenMember(c *gin.Context) {
// // //totalFee = uint32(1) // TODO 测试 // // //totalFee = uint32(1) // TODO 测试
//} //}
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", configInfo.MemberFee, configInfo.DepositFee) fmt.Println("configInfo.MemberFee : configInfo.DepositFee", memberConfig.MemberFee, memberConfig.MemberDeposit)
totalFee := configInfo.MemberFee + configInfo.DepositFee
if user.Deposit == configInfo.DepositFee { totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
totalFee = configInfo.MemberFee if user.Deposit == memberConfig.MemberDeposit {
totalFee = memberConfig.MemberFee
} }
if totalFee == 0 { if totalFee == 0 {
logger.Error(errors.New("totalFee is 0")) logger.Error(errors.New("totalFee is 0"))
@ -244,7 +260,7 @@ func OpenMember(c *gin.Context) {
//} //}
//orderSn := utils.GetSerialNo32HEXString() //orderSn := utils.GetSerialNo32HEXString()
orderSn := model.GetOrderSn() orderSn := model.GetOrderSn()
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn}.Insert() err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,MemberLevel: req.MemberLevel}.Insert()
if err != nil { if err != nil {
logger.Error(errors.New("WebPay err")) logger.Error(errors.New("WebPay err"))
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
@ -276,14 +292,23 @@ func PayDeposit(c *gin.Context) {
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
return return
} }
level := user.MemberLevel
configInfo, err := model.PayConfigInfo() if level == model.MemberLevelPeriod {
level = model.MemberLevelGold
}
//configInfo, err := model.PayConfigInfo()
//if err != nil {
// logger.Error("err:", err)
// return
//}
memberConfig, err := model.GetMemberConfig(level)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("GetMemberConfig err:",err)
RespJson(c, status.InternalServerError, nil)
return return
} }
totalFee := configInfo.DepositFee totalFee := memberConfig.MemberDeposit
if totalFee == 0 || user.Deposit == totalFee { if totalFee == 0 || user.Deposit == totalFee {
logger.Error(errors.New("totalFee is 0")) logger.Error(errors.New("totalFee is 0"))
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
@ -379,6 +404,23 @@ func UserDepositRefundRecordList(c *gin.Context) {
RespOK(c, resp) RespOK(c, resp)
} }
func MemberConfigList(c *gin.Context) {
//uc := auth.GetCurrentUser(c)
//if uc == nil {
// RespJson(c, status.Unauthorized, nil)
// return
//}
resp, err := model.MemberConfigInfo()
if err != nil {
logger.Errorf("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, resp)
}
// 升级 1-黄金会员 2-白金会员 3-黑金会员 // 升级 1-黄金会员 2-白金会员 3-黑金会员
// 开通会员 // 开通会员
// 升级会员 // 升级会员
@ -386,3 +428,5 @@ func UserDepositRefundRecordList(c *gin.Context) {
// 购物车 // 购物车
// 押金 // 押金
// 会员列表 开通会员 下订单 借卡 还卡
// 会员升级

View File

@ -82,14 +82,14 @@ const (
AwardOffShelves = 500407 //奖品下架 AwardOffShelves = 500407 //奖品下架
AwardExchangeOut = 500408 //奖品已兑完 AwardExchangeOut = 500408 //奖品已兑完
NotMember = 500501 //非会员 NotMember = 500501 //非会员
HadReceiveReward = 500502 // 已经领取过奖励 HadReceiveReward = 500502 // 已经领取过奖励
OrderDelivered = 500503 // 订单已发货 OrderDelivered = 500503 // 订单已发货
OrderCompleted = 500504 // 订单已完成 OrderCompleted = 500504 // 订单已完成
OrderStockOut = 500505 // 没有库存 OrderStockOut = 500505 // 没有库存
OrderUnpaidDeposit = 500506 // 没有库存 OrderUnpaidDeposit = 500506 // 未交押金
RefundDepositSubmitted = 500507 // 已提交押金退款 RefundDepositSubmitted = 500507 // 已提交押金退款
OrderMemberLevelLow = 500508 // 会员等级低
ToastErr = 600 // 报错 ToastErr = 600 // 报错
) )

View File

@ -1679,6 +1679,62 @@ func (qs UserInviteQuerySet) Limit(limit int) UserInviteQuerySet {
return qs.w(qs.db.Limit(limit)) return qs.w(qs.db.Limit(limit))
} }
// MemberLevelEq is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelEq(memberLevel uint32) UserInviteQuerySet {
return qs.w(qs.db.Where("member_level = ?", memberLevel))
}
// MemberLevelGt is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelGt(memberLevel uint32) UserInviteQuerySet {
return qs.w(qs.db.Where("member_level > ?", memberLevel))
}
// MemberLevelGte is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelGte(memberLevel uint32) UserInviteQuerySet {
return qs.w(qs.db.Where("member_level >= ?", memberLevel))
}
// MemberLevelIn is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelIn(memberLevel ...uint32) UserInviteQuerySet {
if len(memberLevel) == 0 {
qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("member_level IN (?)", memberLevel))
}
// MemberLevelLt is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelLt(memberLevel uint32) UserInviteQuerySet {
return qs.w(qs.db.Where("member_level < ?", memberLevel))
}
// MemberLevelLte is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelLte(memberLevel uint32) UserInviteQuerySet {
return qs.w(qs.db.Where("member_level <= ?", memberLevel))
}
// MemberLevelNe is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelNe(memberLevel uint32) UserInviteQuerySet {
return qs.w(qs.db.Where("member_level != ?", memberLevel))
}
// MemberLevelNotIn is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) MemberLevelNotIn(memberLevel ...uint32) UserInviteQuerySet {
if len(memberLevel) == 0 {
qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("member_level NOT IN (?)", memberLevel))
}
// MemberOpenTimeEq is an autogenerated method // MemberOpenTimeEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserInviteQuerySet) MemberOpenTimeEq(memberOpenTime time.Time) UserInviteQuerySet { func (qs UserInviteQuerySet) MemberOpenTimeEq(memberOpenTime time.Time) UserInviteQuerySet {
@ -1863,6 +1919,12 @@ func (qs UserInviteQuerySet) OrderAscByID() UserInviteQuerySet {
return qs.w(qs.db.Order("id ASC")) return qs.w(qs.db.Order("id ASC"))
} }
// OrderAscByMemberLevel is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) OrderAscByMemberLevel() UserInviteQuerySet {
return qs.w(qs.db.Order("member_level ASC"))
}
// OrderAscByMemberOpenTime is an autogenerated method // OrderAscByMemberOpenTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserInviteQuerySet) OrderAscByMemberOpenTime() UserInviteQuerySet { func (qs UserInviteQuerySet) OrderAscByMemberOpenTime() UserInviteQuerySet {
@ -1935,6 +1997,12 @@ func (qs UserInviteQuerySet) OrderDescByID() UserInviteQuerySet {
return qs.w(qs.db.Order("id DESC")) return qs.w(qs.db.Order("id DESC"))
} }
// OrderDescByMemberLevel is an autogenerated method
// nolint: dupl
func (qs UserInviteQuerySet) OrderDescByMemberLevel() UserInviteQuerySet {
return qs.w(qs.db.Order("member_level DESC"))
}
// OrderDescByMemberOpenTime is an autogenerated method // OrderDescByMemberOpenTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserInviteQuerySet) OrderDescByMemberOpenTime() UserInviteQuerySet { func (qs UserInviteQuerySet) OrderDescByMemberOpenTime() UserInviteQuerySet {
@ -2271,6 +2339,13 @@ func (u UserInviteUpdater) SetID(ID uint32) UserInviteUpdater {
return u return u
} }
// SetMemberLevel is an autogenerated method
// nolint: dupl
func (u UserInviteUpdater) SetMemberLevel(memberLevel uint32) UserInviteUpdater {
u.fields[string(UserInviteDBSchema.MemberLevel)] = memberLevel
return u
}
// SetMemberOpenTime is an autogenerated method // SetMemberOpenTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserInviteUpdater) SetMemberOpenTime(memberOpenTime time.Time) UserInviteUpdater { func (u UserInviteUpdater) SetMemberOpenTime(memberOpenTime time.Time) UserInviteUpdater {
@ -2367,6 +2442,7 @@ var UserInviteDBSchema = struct {
MemberStatus UserInviteDBSchemaField MemberStatus UserInviteDBSchemaField
ToUid UserInviteDBSchemaField ToUid UserInviteDBSchemaField
StoreType UserInviteDBSchemaField StoreType UserInviteDBSchemaField
MemberLevel UserInviteDBSchemaField
}{ }{
ID: UserInviteDBSchemaField("id"), ID: UserInviteDBSchemaField("id"),
@ -2381,6 +2457,7 @@ var UserInviteDBSchema = struct {
MemberStatus: UserInviteDBSchemaField("member_status"), MemberStatus: UserInviteDBSchemaField("member_status"),
ToUid: UserInviteDBSchemaField("to_uid"), ToUid: UserInviteDBSchemaField("to_uid"),
StoreType: UserInviteDBSchemaField("store_type"), StoreType: UserInviteDBSchemaField("store_type"),
MemberLevel: UserInviteDBSchemaField("member_level"),
} }
// Update updates UserInvite fields by primary key // Update updates UserInvite fields by primary key
@ -2399,6 +2476,7 @@ func (o *UserInvite) Update(db *gorm.DB, fields ...UserInviteDBSchemaField) erro
"member_status": o.MemberStatus, "member_status": o.MemberStatus,
"to_uid": o.ToUid, "to_uid": o.ToUid,
"store_type": o.StoreType, "store_type": o.StoreType,
"member_level": o.MemberLevel,
} }
u := map[string]interface{}{} u := map[string]interface{}{}
for _, f := range fields { for _, f := range fields {
@ -2656,6 +2734,62 @@ func (qs UserOpenMemberRecordQuerySet) Limit(limit int) UserOpenMemberRecordQuer
return qs.w(qs.db.Limit(limit)) return qs.w(qs.db.Limit(limit))
} }
// MemberLevelEq is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelEq(memberLevel uint32) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_level = ?", memberLevel))
}
// MemberLevelGt is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelGt(memberLevel uint32) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_level > ?", memberLevel))
}
// MemberLevelGte is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelGte(memberLevel uint32) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_level >= ?", memberLevel))
}
// MemberLevelIn is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelIn(memberLevel ...uint32) UserOpenMemberRecordQuerySet {
if len(memberLevel) == 0 {
qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("member_level IN (?)", memberLevel))
}
// MemberLevelLt is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelLt(memberLevel uint32) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_level < ?", memberLevel))
}
// MemberLevelLte is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelLte(memberLevel uint32) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_level <= ?", memberLevel))
}
// MemberLevelNe is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelNe(memberLevel uint32) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_level != ?", memberLevel))
}
// MemberLevelNotIn is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelNotIn(memberLevel ...uint32) UserOpenMemberRecordQuerySet {
if len(memberLevel) == 0 {
qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("member_level NOT IN (?)", memberLevel))
}
// Offset is an autogenerated method // Offset is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserOpenMemberRecordQuerySet) Offset(offset int) UserOpenMemberRecordQuerySet { func (qs UserOpenMemberRecordQuerySet) Offset(offset int) UserOpenMemberRecordQuerySet {
@ -2718,6 +2852,12 @@ func (qs UserOpenMemberRecordQuerySet) OrderAscByID() UserOpenMemberRecordQueryS
return qs.w(qs.db.Order("id ASC")) return qs.w(qs.db.Order("id ASC"))
} }
// OrderAscByMemberLevel is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderAscByMemberLevel() UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Order("member_level ASC"))
}
// OrderAscByOrderId is an autogenerated method // OrderAscByOrderId is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderAscByOrderId() UserOpenMemberRecordQuerySet { func (qs UserOpenMemberRecordQuerySet) OrderAscByOrderId() UserOpenMemberRecordQuerySet {
@ -2760,6 +2900,12 @@ func (qs UserOpenMemberRecordQuerySet) OrderDescByID() UserOpenMemberRecordQuery
return qs.w(qs.db.Order("id DESC")) return qs.w(qs.db.Order("id DESC"))
} }
// OrderDescByMemberLevel is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderDescByMemberLevel() UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Order("member_level DESC"))
}
// OrderDescByOrderId is an autogenerated method // OrderDescByOrderId is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderDescByOrderId() UserOpenMemberRecordQuerySet { func (qs UserOpenMemberRecordQuerySet) OrderDescByOrderId() UserOpenMemberRecordQuerySet {
@ -3009,6 +3155,13 @@ func (u UserOpenMemberRecordUpdater) SetID(ID uint32) UserOpenMemberRecordUpdate
return u return u
} }
// SetMemberLevel is an autogenerated method
// nolint: dupl
func (u UserOpenMemberRecordUpdater) SetMemberLevel(memberLevel uint32) UserOpenMemberRecordUpdater {
u.fields[string(UserOpenMemberRecordDBSchema.MemberLevel)] = memberLevel
return u
}
// SetOpenNo is an autogenerated method // SetOpenNo is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserOpenMemberRecordUpdater) SetOpenNo(openNo string) UserOpenMemberRecordUpdater { func (u UserOpenMemberRecordUpdater) SetOpenNo(openNo string) UserOpenMemberRecordUpdater {
@ -3072,38 +3225,41 @@ func (f UserOpenMemberRecordDBSchemaField) String() string {
// UserOpenMemberRecordDBSchema stores db field names of UserOpenMemberRecord // UserOpenMemberRecordDBSchema stores db field names of UserOpenMemberRecord
var UserOpenMemberRecordDBSchema = struct { var UserOpenMemberRecordDBSchema = struct {
ID UserOpenMemberRecordDBSchemaField ID UserOpenMemberRecordDBSchemaField
CreatedAt UserOpenMemberRecordDBSchemaField CreatedAt UserOpenMemberRecordDBSchemaField
UpdatedAt UserOpenMemberRecordDBSchemaField UpdatedAt UserOpenMemberRecordDBSchemaField
DeletedAt UserOpenMemberRecordDBSchemaField DeletedAt UserOpenMemberRecordDBSchemaField
Uid UserOpenMemberRecordDBSchemaField Uid UserOpenMemberRecordDBSchemaField
OpenNo UserOpenMemberRecordDBSchemaField OpenNo UserOpenMemberRecordDBSchemaField
OrderId UserOpenMemberRecordDBSchemaField OrderId UserOpenMemberRecordDBSchemaField
OrderType UserOpenMemberRecordDBSchemaField OrderType UserOpenMemberRecordDBSchemaField
MemberLevel UserOpenMemberRecordDBSchemaField
}{ }{
ID: UserOpenMemberRecordDBSchemaField("id"), ID: UserOpenMemberRecordDBSchemaField("id"),
CreatedAt: UserOpenMemberRecordDBSchemaField("created_at"), CreatedAt: UserOpenMemberRecordDBSchemaField("created_at"),
UpdatedAt: UserOpenMemberRecordDBSchemaField("updated_at"), UpdatedAt: UserOpenMemberRecordDBSchemaField("updated_at"),
DeletedAt: UserOpenMemberRecordDBSchemaField("deleted_at"), DeletedAt: UserOpenMemberRecordDBSchemaField("deleted_at"),
Uid: UserOpenMemberRecordDBSchemaField("uid"), Uid: UserOpenMemberRecordDBSchemaField("uid"),
OpenNo: UserOpenMemberRecordDBSchemaField("open_no"), OpenNo: UserOpenMemberRecordDBSchemaField("open_no"),
OrderId: UserOpenMemberRecordDBSchemaField("order_id"), OrderId: UserOpenMemberRecordDBSchemaField("order_id"),
OrderType: UserOpenMemberRecordDBSchemaField("order_type"), OrderType: UserOpenMemberRecordDBSchemaField("order_type"),
MemberLevel: UserOpenMemberRecordDBSchemaField("member_level"),
} }
// Update updates UserOpenMemberRecord fields by primary key // Update updates UserOpenMemberRecord fields by primary key
// nolint: dupl // nolint: dupl
func (o *UserOpenMemberRecord) Update(db *gorm.DB, fields ...UserOpenMemberRecordDBSchemaField) error { func (o *UserOpenMemberRecord) Update(db *gorm.DB, fields ...UserOpenMemberRecordDBSchemaField) error {
dbNameToFieldName := map[string]interface{}{ dbNameToFieldName := map[string]interface{}{
"id": o.ID, "id": o.ID,
"created_at": o.CreatedAt, "created_at": o.CreatedAt,
"updated_at": o.UpdatedAt, "updated_at": o.UpdatedAt,
"deleted_at": o.DeletedAt, "deleted_at": o.DeletedAt,
"uid": o.Uid, "uid": o.Uid,
"open_no": o.OpenNo, "open_no": o.OpenNo,
"order_id": o.OrderId, "order_id": o.OrderId,
"order_type": o.OrderType, "order_type": o.OrderType,
"member_level": o.MemberLevel,
} }
u := map[string]interface{}{} u := map[string]interface{}{}
for _, f := range fields { for _, f := range fields {

View File

@ -2,6 +2,7 @@ package model
import ( import (
"encoding/json" "encoding/json"
"errors"
"github.com/codinl/go-logger" "github.com/codinl/go-logger"
) )
@ -25,7 +26,8 @@ type PayConfig struct {
} }
const ( const (
ConfigNamePay = "pay_config" // 支付配置 ConfigNamePay = "pay_config" // 支付配置
ConfigNameMember = "member_config" // 会员配置
) )
func PayConfigInfo() (*PayConfig, error) { func PayConfigInfo() (*PayConfig, error) {
@ -46,15 +48,54 @@ func PayConfigInfo() (*PayConfig, error) {
return payConfig, nil return payConfig, nil
} }
// type MemberConfig struct {
MemberLever uint32 `json:"member_lever"` // 会员等级
MemberFee uint32 `json:"member_fee"` // 会员费
MemberDeposit uint32 `json:"member_deposit"` // 押金
CardMax uint32 `json:"card_max"`
}
func MemberConfigInfo() ([]MemberConfig, error) {
var memberConfigs []MemberConfig
var configAllocation Config
err := NewConfigQuerySet(DB).NameEq(ConfigNameMember).One(&configAllocation)
if err != nil {
logger.Error("err:", err)
return memberConfigs, err
}
err = json.Unmarshal([]byte(configAllocation.Value), &memberConfigs)
if err != nil {
logger.Error("err:", err)
return memberConfigs, err
}
return memberConfigs, nil
}
func GetMemberConfig(level uint32) (*MemberConfig, error) {
if level == 3 {
level = 2
}
info, err := MemberConfigInfo()
if err != nil {
return nil, err
}
for _, config := range info {
if config.MemberLever == level {
return &config, nil
}
}
return nil, errors.New("level err")
}
//type ConfigInterface interface { //type ConfigInterface interface {
// Encode() string // Encode() string
//} //}
//
//type CheckConfig struct { //type CheckConfig struct {
// Check uint8 `json:"check"` // Check uint8 `json:"check"`
//} //}
//
//func (c *CheckConfig) Encode() string { //func (c *CheckConfig) Encode() string {
// configBytes, err := json.Marshal(c) // configBytes, err := json.Marshal(c)
// if err != nil { // if err != nil {

38
model/config_test.go Normal file
View File

@ -0,0 +1,38 @@
package model
import (
"encoding/json"
"fmt"
"testing"
)
func TestMemberConfigInfo(t *testing.T) {
lever := []uint32{2, 4, 5}
list := make([]MemberConfig, 0)
cardCount := 0
for i, _ := range lever {
if lever[i] == 2 {
cardCount = 1
} else if lever[i] == 4 {
cardCount = 2
} else if lever[i] == 4 {
cardCount = 5
}
var config = MemberConfig{
MemberLever: lever[i],
MemberFee: lever[i],
MemberDeposit: lever[i],
CardMax: uint32(cardCount),
}
list = append(list, config)
}
bytes, err := json.Marshal(&list)
if err != nil {
fmt.Println("err:", err.Error())
}
fmt.Println("list:", string(bytes))
}

View File

@ -50,6 +50,11 @@ func (*HomeCarousel) TableName() string {
return "home_carousel" return "home_carousel"
} }
type CardInfo struct {
GameCardId uint32 `json:"game_card_id"`
Count uint32 `json:"count"`
}
func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId uint32) ([]GameCard, uint32, error) { func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId uint32) ([]GameCard, uint32, error) {
var ( var (
cards []GameCard = make([]GameCard, 0) cards []GameCard = make([]GameCard, 0)
@ -166,6 +171,21 @@ func IsGameCardOnline(gameCardId uint32) (bool, error) {
return count == 1, nil return count == 1, nil
} }
func IsGameCardListOnline(gameCards []CardInfo) (bool, error) {
for _, v := range gameCards {
count, err := NewGameCardQuerySet(DB).IDEq(v.GameCardId).StatusEq(1).Count()
if err != nil {
logger.Error("err:", err)
return false, err
}
if count < 1 {
return false, nil
}
}
return true, nil
}
func IsGameCardHaveStoke(storeId, gameCardId uint32) (bool, error) { func IsGameCardHaveStoke(storeId, gameCardId uint32) (bool, error) {
var stock GameCardGoodsStock var stock GameCardGoodsStock
err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(gameCardId)).One(&stock) err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(gameCardId)).One(&stock)

View File

@ -62,6 +62,16 @@ type Order struct {
Mchid string `json:"mchid"` // 商户 Mchid string `json:"mchid"` // 商户
} }
type OrderCard struct {
Model
OrderId uint32 `json:"order_id" gorm:"index"`
Uid uint32 `json:"uid" gorm:"index"`
GameCardId uint32 `json:"game_card_id" gorm:"index"` // 游戏id
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
Status uint8 `json:"status" gorm:"index"`
}
func (*Order) TableName() string { func (*Order) TableName() string {
return "order" return "order"
} }
@ -295,7 +305,6 @@ func IsHaveUnreturnedOrders(uid uint32) (bool, error) {
return unreturned.Count != 0, nil return unreturned.Count != 0, nil
} }
func IsUserHaveUnreturnedOrder(uid uint32) (bool, error) { func IsUserHaveUnreturnedOrder(uid uint32) (bool, error) {
fmt.Println("uid", uid) fmt.Println("uid", uid)
@ -378,7 +387,6 @@ func (m *Order) Cancel() error {
return errors.New("card status expire") return errors.New("card status expire")
} }
begin := DB.Begin() begin := DB.Begin()
err = NewOrderQuerySet(begin).IDEq(m.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).Update() err = NewOrderQuerySet(begin).IDEq(m.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).Update()
if err != nil { if err != nil {

View File

@ -43,8 +43,16 @@ func (o *User) TableName() string {
} }
const ( const (
MemberTypeConsumer = 1 MemberTypeConsumer = 1 // 普通用户
MemberTypeMember = 2 MemberTypeMember = 2 // 黄金会员
)
const (
MemberLevelConsumer = 1 // 普通用户
MemberLevelGold = 2 // 黄金会员
MemberLevelPeriod = 3
MemberLevelPlatinum = 4 // 白金会员
MemberLevelBlackGold = 5 // 黑金会员
) )
const DateTimeFormat = "2006-01-02" const DateTimeFormat = "2006-01-02"
@ -61,6 +69,7 @@ type UserInvite struct {
MemberStatus uint8 `json:"member_status"` // 被邀请用户 1-未开通 2-已开通 3-已取消会员 MemberStatus uint8 `json:"member_status"` // 被邀请用户 1-未开通 2-已开通 3-已取消会员
ToUid uint32 `json:"to_uid"` // 被邀请用户 ToUid uint32 `json:"to_uid"` // 被邀请用户
StoreType uint32 `json:"store_type"` // 门店类型 StoreType uint32 `json:"store_type"` // 门店类型
MemberLevel uint32 `json:"member_level"` // 会员等级
} }
const ( const (
@ -128,11 +137,11 @@ func UserUpdate(user *User) error {
type UserOpenMemberRecord struct { type UserOpenMemberRecord struct {
Model Model
Uid uint32 `json:"uid"` Uid uint32 `json:"uid"`
OpenNo string `json:"open_no" gorm:"index"` OpenNo string `json:"open_no" gorm:"index"`
OrderId uint32 `json:"order_id"` OrderId uint32 `json:"order_id"`
OrderType uint32 `json:"order_type"` // 1-物流支付 OrderType uint32 `json:"order_type"` // 1-物流支付
MemberLevel uint32 `json:"member_level"`
} }
func (o *UserOpenMemberRecord) TableName() string { func (o *UserOpenMemberRecord) TableName() string {
@ -166,7 +175,6 @@ type CommonProblem struct {
Sort uint32 `json:"sort" gorm:"index"` Sort uint32 `json:"sort" gorm:"index"`
} }
type GroupSendMessageTemplate struct { type GroupSendMessageTemplate struct {
Model Model
@ -178,7 +186,6 @@ type GroupSendMessageTemplate struct {
Status uint32 `json:"status"` // 1-待发送 2-已发送 Status uint32 `json:"status"` // 1-待发送 2-已发送
} }
func (*CommonProblem) TableName() string { func (*CommonProblem) TableName() string {
return "common_problem" return "common_problem"
} }
@ -364,7 +371,6 @@ func GetDepositRefundRecordList(uid uint32) ([]DepositRefundRecord, error) {
return deposits, nil return deposits, nil
} }
var userMutexMap map[string]*sync.Mutex var userMutexMap map[string]*sync.Mutex
func GetUserMutexMap() map[string]*sync.Mutex { func GetUserMutexMap() map[string]*sync.Mutex {
@ -388,5 +394,4 @@ func GetUserMutex(mutexKey string) *sync.Mutex {
// return GetUserMutex(fmt.Sprintf("AuthLogin:%d", uid)) // return GetUserMutex(fmt.Sprintf("AuthLogin:%d", uid))
//} //}
var AuthLoginMutex = sync.Mutex{}
var AuthLoginMutex = sync.Mutex{}

View File

@ -0,0 +1,531 @@
2022/01/16 14:38:12 [INFO ]base_init_db.go:38: DB init success
2022/01/16 15:29:56 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:29:57 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:29:57 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:29:57 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:29:57 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:29:57 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:30:00 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:30:00 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:30:00 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:30:01 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:30:01 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:30:01 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:30:02 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:30:02 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:30:02 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:30:02 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:30:02 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:30:02 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:30:03 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 15:30:03 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 15:30:03 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 15:30:58 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 15:30:58 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 15:30:58 [INFO ]account.go:49: resp.UnionID=
2022/01/16 15:30:58 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:31:04 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 15:31:04 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 15:31:04 [INFO ]account.go:49: resp.UnionID=
2022/01/16 15:31:04 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:31:24 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:31:25 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:31:25 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:31:26 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:31:26 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:31:37 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:31:38 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:31:38 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:34:59 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:04 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 15:35:04 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 15:35:04 [INFO ]account.go:49: resp.UnionID=
2022/01/16 15:35:04 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:04 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:05 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:05 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:08 [INFO ]init.go:30: /api/v1/user/user_info/upload
2022/01/16 15:35:08 [ERROR]account.go:279: Key: 'Code' Error:Field validation for 'Code' failed on the 'required' tag
2022/01/16 15:35:10 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:10 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:16 [INFO ]init.go:30: /api/v1/user/user_info/upload
2022/01/16 15:35:16 [INFO ]account.go:302: userInfo={OpenID: Nickname:枫 Gender:0 Province: Language:zh_CN Country: City: Avatar:https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoBbibF1ykzNbej9KZreT23p4O2MLFgNIt73BeIP6GnYOH3baeJvS30wKk866ibKuSL3prOpLJMC6Jg/132 UnionID: Watermark:{AppID:wx806c079463b5b56c Timestamp:1642318516}}
2022/01/16 15:35:16 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:18 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:19 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:19 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:20 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:35:20 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:29 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 15:35:29 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 15:35:29 [INFO ]account.go:49: resp.UnionID=
2022/01/16 15:35:29 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:35:29 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:36:36 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:38:42 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:40:22 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:40:26 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:41:56 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:42:15 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:42:23 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:44:12 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:44:16 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:44:35 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:44:37 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:44:44 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:46:59 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:47:16 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:47:19 [INFO ]init.go:30: /api/v1/user/open_member
2022/01/16 15:47:19 [INFO ]wx_pay.go:63: MchId: 1609877389
2022/01/16 15:47:19 [INFO ]wx_pay.go:64: AppId: wx806c079463b5b56c
2022/01/16 15:47:19 [INFO ]wx_pay.go:65: MchSecret: DeovoMingHuiRengTianTang45675456
2022/01/16 15:47:19 [INFO ]wx_pay.go:440: 签字符串1 : appid=wx806c079463b5b56c&attach=member_pay&body=创建订单&device_info=WEB&fee_type=CNY&mch_id=1609877389&nonce_str=vjVgoqgzYqJ6pyrK47L363Qf0wYDWV8x&notify_url=https://dev.switch.deovo.com:8004/api/v1/wxpay/notice&openid=ohuHh4tpfro8u_fUPMbHEWYx5svQ&out_trade_no=diddvhp40000&profit_sharing=N&sign_type=MD5&spbill_create_ip=39.108.188.218&time_start=20220116154719&total_fee=41&trade_type=JSAPI&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:47:19 [ERROR]wx_pay.go:464: xml: <xml><appid>wx806c079463b5b56c</appid><mch_id>1609877389</mch_id><device_info>WEB</device_info><nonce_str>vjVgoqgzYqJ6pyrK47L363Qf0wYDWV8x</nonce_str><sign>ECDE78A54BA7B9A8BC19C51B3F5CE5D8</sign><sign_type>MD5</sign_type><body>创建订单</body><attach>member_pay</attach><out_trade_no>diddvhp40000</out_trade_no><fee_type>CNY</fee_type><total_fee>41</total_fee><spbill_create_ip>39.108.188.218</spbill_create_ip><time_start>20220116154719</time_start><notify_url>https://dev.switch.deovo.com:8004/api/v1/wxpay/notice</notify_url><trade_type>JSAPI</trade_type><openid>ohuHh4tpfro8u_fUPMbHEWYx5svQ</openid><profit_sharing>N</profit_sharing></xml>
2022/01/16 15:47:19 [INFO ]wx_pay.go:440: 签字符串1 : appId=wx806c079463b5b56c&nonceStr=Mc9GYbaUaXD3BToo&package=prepay_id=wx1615471951571141d8de42ce2655ae0000&signType=MD5&timeStamp=1642319239&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:47:47 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:49:03 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:49:09 [INFO ]init.go:30: /api/v1/user/open_member
2022/01/16 15:49:09 [INFO ]wx_pay.go:63: MchId: 1609877389
2022/01/16 15:49:09 [INFO ]wx_pay.go:64: AppId: wx806c079463b5b56c
2022/01/16 15:49:09 [INFO ]wx_pay.go:65: MchSecret: DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:09 [INFO ]wx_pay.go:440: 签字符串1 : appid=wx806c079463b5b56c&attach=member_pay&body=创建订单&device_info=WEB&fee_type=CNY&mch_id=1609877389&nonce_str=cCHl1d7GEi7g9is9A2my0vbx3cFnvQuJ&notify_url=https://dev.switch.deovo.com:8004/api/v1/wxpay/notice&openid=ohuHh4tpfro8u_fUPMbHEWYx5svQ&out_trade_no=dided18o0000&profit_sharing=N&sign_type=MD5&spbill_create_ip=39.108.188.218&time_start=20220116154909&total_fee=41&trade_type=JSAPI&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:09 [ERROR]wx_pay.go:464: xml: <xml><appid>wx806c079463b5b56c</appid><mch_id>1609877389</mch_id><device_info>WEB</device_info><nonce_str>cCHl1d7GEi7g9is9A2my0vbx3cFnvQuJ</nonce_str><sign>0C404E64B119780687532816783F03EF</sign><sign_type>MD5</sign_type><body>创建订单</body><attach>member_pay</attach><out_trade_no>dided18o0000</out_trade_no><fee_type>CNY</fee_type><total_fee>41</total_fee><spbill_create_ip>39.108.188.218</spbill_create_ip><time_start>20220116154909</time_start><notify_url>https://dev.switch.deovo.com:8004/api/v1/wxpay/notice</notify_url><trade_type>JSAPI</trade_type><openid>ohuHh4tpfro8u_fUPMbHEWYx5svQ</openid><profit_sharing>N</profit_sharing></xml>
2022/01/16 15:49:10 [INFO ]wx_pay.go:440: 签字符串1 : appId=wx806c079463b5b56c&nonceStr=lOVZRmfoioPBfULu&package=prepay_id=wx161549100009358b0b65c85b76b1520000&signType=MD5&timeStamp=1642319350&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:10 [INFO ]init.go:30: /api/v1/user/open_member
2022/01/16 15:49:10 [INFO ]wx_pay.go:63: MchId: 1609877389
2022/01/16 15:49:10 [INFO ]wx_pay.go:64: AppId: wx806c079463b5b56c
2022/01/16 15:49:10 [INFO ]wx_pay.go:65: MchSecret: DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:10 [INFO ]wx_pay.go:440: 签字符串1 : appid=wx806c079463b5b56c&attach=member_pay&body=创建订单&device_info=WEB&fee_type=CNY&mch_id=1609877389&nonce_str=63cN2N1GnO3rjy8DOACK03V6Dp515q6E&notify_url=https://dev.switch.deovo.com:8004/api/v1/wxpay/notice&openid=ohuHh4tpfro8u_fUPMbHEWYx5svQ&out_trade_no=dided4ng0000&profit_sharing=N&sign_type=MD5&spbill_create_ip=39.108.188.218&time_start=20220116154910&total_fee=41&trade_type=JSAPI&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:10 [ERROR]wx_pay.go:464: xml: <xml><appid>wx806c079463b5b56c</appid><mch_id>1609877389</mch_id><device_info>WEB</device_info><nonce_str>63cN2N1GnO3rjy8DOACK03V6Dp515q6E</nonce_str><sign>03A10200FDED898D6C7DA73316D53CF4</sign><sign_type>MD5</sign_type><body>创建订单</body><attach>member_pay</attach><out_trade_no>dided4ng0000</out_trade_no><fee_type>CNY</fee_type><total_fee>41</total_fee><spbill_create_ip>39.108.188.218</spbill_create_ip><time_start>20220116154910</time_start><notify_url>https://dev.switch.deovo.com:8004/api/v1/wxpay/notice</notify_url><trade_type>JSAPI</trade_type><openid>ohuHh4tpfro8u_fUPMbHEWYx5svQ</openid><profit_sharing>N</profit_sharing></xml>
2022/01/16 15:49:10 [INFO ]wx_pay.go:440: 签字符串1 : appId=wx806c079463b5b56c&nonceStr=YtFKFOjTvYF1TAza&package=prepay_id=wx16154910775284d1d11a140b92f2bd0000&signType=MD5&timeStamp=1642319350&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:16 [INFO ]init.go:30: /api/v1/user/open_member
2022/01/16 15:49:17 [INFO ]wx_pay.go:63: MchId: 1609877389
2022/01/16 15:49:17 [INFO ]wx_pay.go:64: AppId: wx806c079463b5b56c
2022/01/16 15:49:17 [INFO ]wx_pay.go:65: MchSecret: DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:17 [INFO ]wx_pay.go:440: 签字符串1 : appid=wx806c079463b5b56c&attach=member_pay&body=创建订单&device_info=WEB&fee_type=CNY&mch_id=1609877389&nonce_str=CHz2Jj33ULa0VKk7I2q1ki7n77XfK535&notify_url=https://dev.switch.deovo.com:8004/api/v1/wxpay/notice&openid=ohuHh4tpfro8u_fUPMbHEWYx5svQ&out_trade_no=didedtp40000&profit_sharing=N&sign_type=MD5&spbill_create_ip=39.108.188.218&time_start=20220116154916&total_fee=41&trade_type=JSAPI&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:17 [ERROR]wx_pay.go:464: xml: <xml><appid>wx806c079463b5b56c</appid><mch_id>1609877389</mch_id><device_info>WEB</device_info><nonce_str>CHz2Jj33ULa0VKk7I2q1ki7n77XfK535</nonce_str><sign>11C1E2D541DC0F8284B2CCE24CEA1068</sign><sign_type>MD5</sign_type><body>创建订单</body><attach>member_pay</attach><out_trade_no>didedtp40000</out_trade_no><fee_type>CNY</fee_type><total_fee>41</total_fee><spbill_create_ip>39.108.188.218</spbill_create_ip><time_start>20220116154916</time_start><notify_url>https://dev.switch.deovo.com:8004/api/v1/wxpay/notice</notify_url><trade_type>JSAPI</trade_type><openid>ohuHh4tpfro8u_fUPMbHEWYx5svQ</openid><profit_sharing>N</profit_sharing></xml>
2022/01/16 15:49:17 [INFO ]wx_pay.go:440: 签字符串1 : appId=wx806c079463b5b56c&nonceStr=e5zoJnepNXQX6mBl&package=prepay_id=wx16154917204493a8a49858360b56130000&signType=MD5&timeStamp=1642319357&key=DeovoMingHuiRengTianTang45675456
2022/01/16 15:49:43 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:49:47 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 15:49:47 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 15:49:47 [INFO ]account.go:49: resp.UnionID=
2022/01/16 15:49:47 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:49:48 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:49:52 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:49:52 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:50:06 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:50:06 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:50:06 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:50:07 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:50:07 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:50:09 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:50:09 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:51:27 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:51:33 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:38 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:41 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:43 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:44 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:44 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:59:45 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:45 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 15:59:47 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 15:59:47 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:01:44 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:01:46 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:01:46 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:01:48 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:01:48 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:01:48 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:01:49 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:02:34 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:04:03 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:04:04 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:04:05 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:04:07 [INFO ]init.go:30: /api/v1/user/invite_list
2022/01/16 16:04:53 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:04:54 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:04:55 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:04:55 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:04:56 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:04:57 [INFO ]init.go:30: /api/v1/article/title_panel/list
2022/01/16 16:04:57 [INFO ]init.go:30: /api/v1/article/list
2022/01/16 16:04:57 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:04:57 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:04:57 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:04:59 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:04:59 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:05:00 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:05:02 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:05:03 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:05:07 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:05:11 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:05:12 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:05:14 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:05:20 [INFO ]init.go:30: /api/v1/user/user_info/tel
2022/01/16 16:05:20 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:05:20 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:05:30 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:05:31 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:06:01 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:06:01 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:06:46 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:06:47 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:06:47 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:06:48 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:06:51 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:06:53 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:06:54 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:06:54 [INFO ]init.go:30: /api/v1/user/address/list
2022/01/16 16:07:19 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:07:20 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:07:22 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:07:23 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:07:31 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:07:32 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:07:33 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:07:34 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:09:09 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:09:09 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:09:11 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:09:12 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:10:33 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:10:34 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:10:35 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:12:54 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:12:55 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:13:11 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:13:11 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:13:40 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:13:42 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:13:53 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:13:54 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:13:55 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:13:55 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:15:10 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:15:11 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:15:11 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:15:11 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:15:21 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:15:21 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:15:22 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:15:22 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:15:23 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:15:23 [INFO ]init.go:30: /api/v1/user/address/list
2022/01/16 16:15:24 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:15:36 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:15:58 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:15:58 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:17:44 [INFO ]base_init_db.go:38: DB init success
2022/01/16 16:17:45 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 16:17:45 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 16:17:45 [INFO ]account.go:49: resp.UnionID=
2022/01/16 16:17:45 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:17:45 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:17:49 [INFO ]init.go:30: /api/v1/user/user_info/upload
2022/01/16 16:17:50 [INFO ]account.go:302: userInfo={OpenID: Nickname:枫 Gender:0 Province: Language:zh_CN Country: City: Avatar:https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoBbibF1ykzNbej9KZreT23p4O2MLFgNIt73BeIP6GnYOH3baeJvS30wKk866ibKuSL3prOpLJMC6Jg/132 UnionID: Watermark:{AppID:wx806c079463b5b56c Timestamp:1642321068}}
2022/01/16 16:17:50 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:17:52 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:17:52 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:17:54 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:17:54 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:17:55 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:17:55 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:02 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:18:02 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:18:04 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:18:05 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:18:06 [INFO ]init.go:30: /api/v1/user/address/list
2022/01/16 16:18:21 [INFO ]init.go:30: /api/v1/user/address/add
2022/01/16 16:18:21 [INFO ]init.go:30: /api/v1/order/amount
2022/01/16 16:18:44 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:45 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:18:45 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:46 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:46 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:18:47 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:48 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:50 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:50 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:18:50 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:18:51 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:18:52 [INFO ]init.go:30: /api/v1/article/title_panel/list
2022/01/16 16:18:53 [INFO ]init.go:30: /api/v1/article/list
2022/01/16 16:18:54 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:18:54 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:18:54 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:18:55 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:18:55 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:18:55 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:19:04 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:19:04 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:19:05 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:19:07 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:19:09 [INFO ]init.go:30: /api/v1/user/invite_list
2022/01/16 16:19:13 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:19:14 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:19:14 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:19:19 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:19:19 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:19:20 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:19:20 [INFO ]init.go:30: /api/v1/user/address/list
2022/01/16 16:19:20 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:19:24 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:19:26 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:19:26 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:19:32 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:19:32 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:19:32 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:20:01 [INFO ]init.go:30: /api/v1/auth/login
2022/01/16 16:20:01 [INFO ]account.go:48: OpenID=ohuHh4tpfro8u_fUPMbHEWYx5svQ
2022/01/16 16:20:01 [INFO ]account.go:49: resp.UnionID=
2022/01/16 16:20:02 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:20:02 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:20:05 [INFO ]init.go:30: /api/v1/user/user_info/upload
2022/01/16 16:20:05 [INFO ]account.go:302: userInfo={OpenID: Nickname:枫 Gender:0 Province: Language:zh_CN Country: City: Avatar:https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoBbibF1ykzNbej9KZreT23p4O2MLFgNIt73BeIP6GnYOH3baeJvS30wKk866ibKuSL3prOpLJMC6Jg/132 UnionID: Watermark:{AppID:wx806c079463b5b56c Timestamp:1642321204}}
2022/01/16 16:20:05 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:20:54 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:21:06 [INFO ]init.go:30: /api/v1/user/open_member
2022/01/16 16:21:06 [INFO ]wx_pay.go:63: MchId: 1609877389
2022/01/16 16:21:06 [INFO ]wx_pay.go:64: AppId: wx806c079463b5b56c
2022/01/16 16:21:06 [INFO ]wx_pay.go:65: MchSecret: DeovoMingHuiRengTianTang45675456
2022/01/16 16:21:06 [INFO ]wx_pay.go:440: 签字符串1 : appid=wx806c079463b5b56c&attach=member_pay&body=创建订单&device_info=WEB&fee_type=CNY&mch_id=1609877389&nonce_str=4t4p3Bqd0P2oY4zIsP4IGIsRC70zgR9I&notify_url=https://dev.switch.deovo.com:8004/api/v1/wxpay/notice&openid=ohuHh4tpfro8u_fUPMbHEWYx5svQ&out_trade_no=didln10s0000&profit_sharing=N&sign_type=MD5&spbill_create_ip=39.108.188.218&time_start=20220116162106&total_fee=4&trade_type=JSAPI&key=DeovoMingHuiRengTianTang45675456
2022/01/16 16:21:06 [ERROR]wx_pay.go:464: xml: <xml><appid>wx806c079463b5b56c</appid><mch_id>1609877389</mch_id><device_info>WEB</device_info><nonce_str>4t4p3Bqd0P2oY4zIsP4IGIsRC70zgR9I</nonce_str><sign>A6A4F7BAAA85ADC1FBCA6EC3A3D18BEB</sign><sign_type>MD5</sign_type><body>创建订单</body><attach>member_pay</attach><out_trade_no>didln10s0000</out_trade_no><fee_type>CNY</fee_type><total_fee>4</total_fee><spbill_create_ip>39.108.188.218</spbill_create_ip><time_start>20220116162106</time_start><notify_url>https://dev.switch.deovo.com:8004/api/v1/wxpay/notice</notify_url><trade_type>JSAPI</trade_type><openid>ohuHh4tpfro8u_fUPMbHEWYx5svQ</openid><profit_sharing>N</profit_sharing></xml>
2022/01/16 16:21:06 [INFO ]wx_pay.go:440: 签字符串1 : appId=wx806c079463b5b56c&nonceStr=4j2i5D5vEzDZsJxu&package=prepay_id=wx16162106859233ff5ca5291acb1b5a0000&signType=MD5&timeStamp=1642321266&key=DeovoMingHuiRengTianTang45675456
2022/01/16 16:22:55 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:23:07 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:23:15 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:23:23 [INFO ]init.go:30: /api/v1/user/open_member
2022/01/16 16:23:23 [INFO ]wx_pay.go:63: MchId: 1609877389
2022/01/16 16:23:23 [INFO ]wx_pay.go:64: AppId: wx806c079463b5b56c
2022/01/16 16:23:23 [INFO ]wx_pay.go:65: MchSecret: DeovoMingHuiRengTianTang45675456
2022/01/16 16:23:23 [INFO ]wx_pay.go:440: 签字符串1 : appid=wx806c079463b5b56c&attach=member_pay&body=创建订单&device_info=WEB&fee_type=CNY&mch_id=1609877389&nonce_str=3Qftg657g46XN59t62kaaqs5Mz52poHL&notify_url=https://dev.switch.deovo.com:8004/api/v1/wxpay/notice&openid=ohuHh4tpfro8u_fUPMbHEWYx5svQ&out_trade_no=didm7n1c0000&profit_sharing=N&sign_type=MD5&spbill_create_ip=39.108.188.218&time_start=20220116162323&total_fee=8&trade_type=JSAPI&key=DeovoMingHuiRengTianTang45675456
2022/01/16 16:23:23 [ERROR]wx_pay.go:464: xml: <xml><appid>wx806c079463b5b56c</appid><mch_id>1609877389</mch_id><device_info>WEB</device_info><nonce_str>3Qftg657g46XN59t62kaaqs5Mz52poHL</nonce_str><sign>E5F4A1C61F53C0965E6F9E1DB685587F</sign><sign_type>MD5</sign_type><body>创建订单</body><attach>member_pay</attach><out_trade_no>didm7n1c0000</out_trade_no><fee_type>CNY</fee_type><total_fee>8</total_fee><spbill_create_ip>39.108.188.218</spbill_create_ip><time_start>20220116162323</time_start><notify_url>https://dev.switch.deovo.com:8004/api/v1/wxpay/notice</notify_url><trade_type>JSAPI</trade_type><openid>ohuHh4tpfro8u_fUPMbHEWYx5svQ</openid><profit_sharing>N</profit_sharing></xml>
2022/01/16 16:23:23 [INFO ]wx_pay.go:440: 签字符串1 : appId=wx806c079463b5b56c&nonceStr=l2GpwuLNzq6HeQSz&package=prepay_id=wx16162323563678392ca9ba60590a5b0000&signType=MD5&timeStamp=1642321403&key=DeovoMingHuiRengTianTang45675456
2022/01/16 16:23:42 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:24:16 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:24:17 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:24:17 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:24:34 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:24:35 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:24:35 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:25:09 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:25:10 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:25:10 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:25:11 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:25:11 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:25:42 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:25:49 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:26:44 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:27:05 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:27:05 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:27:05 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:27:06 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:27:06 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:29:03 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:29:03 [INFO ]init.go:30: //api/v1/user/member_config
2022/01/16 16:29:10 [INFO ]init.go:30: /api/v1/user/member_config
2022/01/16 16:29:10 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:35:41 [INFO ]init.go:30: /api/v1/user/member_config
2022/01/16 16:35:41 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:35:50 [INFO ]init.go:30: /api/v1/user/member_config
2022/01/16 16:35:50 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:36:04 [INFO ]init.go:30: /api/v1/user/member_config
2022/01/16 16:36:04 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:37:15 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:37:26 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:37:26 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:37:26 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:37:28 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:37:28 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:37:28 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:37:28 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:37:30 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:37:30 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:37:31 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:37:31 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:37:31 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:37:31 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:37:33 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:37:33 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:37:33 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:37:46 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:37:47 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:37:47 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:37:50 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:37:52 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:37:53 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:37:54 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:38:10 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:40:09 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:40:16 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:40:17 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:40:19 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:40:19 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:40:44 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:41:36 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:41:37 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:41:37 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:41:37 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:41:40 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:40 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:47 [INFO ]base_init_db.go:38: DB init success
2022/01/16 16:41:47 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:47 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:48 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:41:48 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:41:48 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:41:49 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:50 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:51 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:41:52 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:41:57 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:41:58 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:42:16 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:42:16 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:42:16 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:42:19 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:42:21 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:42:23 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:43:10 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:43:11 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:43:12 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:43:12 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:43:13 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:43:14 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:43:15 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:43:20 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:43:20 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:43:20 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:43:20 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:43:23 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:43:23 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:43:25 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:43:32 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:43:35 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:43:40 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:43:42 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:18 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:23 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:27 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:42 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:43 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:44:43 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:44:44 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:44:46 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:46 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:44:52 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:45:00 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:46:13 [INFO ]base_init_db.go:38: DB init success
2022/01/16 16:47:04 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:22 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:47:23 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:47:23 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:47:24 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:47:26 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:47:26 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:27 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:28 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:47:28 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:47:28 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:47:29 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:47:29 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:47:29 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:47:30 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:47:30 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:47:31 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:47:34 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:47:36 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:36 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:37 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:47:38 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:39 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:39 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:47:40 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:41 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:44 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:45 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:47:45 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:49 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:51 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:47:54 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:47:59 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:48:02 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:48:08 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:48:08 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:48:08 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:48:15 [INFO ]init.go:30: /api/v1/game_card/type/list
2022/01/16 16:48:15 [INFO ]init.go:30: /api/v1/game_card/banner
2022/01/16 16:48:15 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:49:02 [INFO ]init.go:30: /api/v1/game_card/info
2022/01/16 16:49:02 [INFO ]init.go:30: /api/v1/game_card/game_type
2022/01/16 16:49:03 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:49:05 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:49:06 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:49:12 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:49:56 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:50:02 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:50:04 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:50:04 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:50:06 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:50:41 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:51:35 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:51:37 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:51:38 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:51:38 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:39 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:50 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:51:50 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:51 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:52 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:53 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:53 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:56 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:51:56 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:57 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:58 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:51:58 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:51:59 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:00 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:52:00 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:01 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:02 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:03 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:52:03 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:04 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:05 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:52:05 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:06 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:07 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:52:07 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:08 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:09 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:52:09 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:52:10 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:53:34 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:53:36 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:53:37 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:53:37 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:53:38 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:53:39 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:53:40 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:53:41 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:53:41 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:53:42 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:53:43 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:53:43 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:53:44 [INFO ]init.go:30: /api/v1/shopping_cart/add
2022/01/16 16:53:45 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:54:45 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:54:45 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:55:02 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:55:03 [INFO ]init.go:30: /api/v1/game_card/list
2022/01/16 16:55:13 [INFO ]init.go:30: /api/v1/store/list
2022/01/16 16:55:13 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:55:14 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:55:15 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:55:15 [INFO ]init.go:30: /api/v1/shopping_cart/list
2022/01/16 16:55:26 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:55:28 [INFO ]init.go:30: /api/v1/user/data
2022/01/16 16:55:28 [INFO ]init.go:30: /api/v1/activity/redeem_code/user_redeem_code/list
2022/01/16 16:55:28 [INFO ]init.go:30: /api/v1/game_card/list

View File

@ -79,6 +79,8 @@ func ConfigAppRouter(r gin.IRouter) {
user.POST("refund_deposit", controller.RefundDeposit) // 押金 user.POST("refund_deposit", controller.RefundDeposit) // 押金
user.POST("refund_deposit_record", controller.UserDepositRefundRecordList) // 押金记录 user.POST("refund_deposit_record", controller.UserDepositRefundRecordList) // 押金记录
user.POST("member_config", controller.MemberConfigList) // 开通会员配置
user.POST("common_problem/list", controller.CommonProblemList) // 常见问题列表 user.POST("common_problem/list", controller.CommonProblemList) // 常见问题列表
//user.POST("service/wechat_id", controller.GetCustomerServiceWechatId) // 获取客服微信号 //user.POST("service/wechat_id", controller.GetCustomerServiceWechatId) // 获取客服微信号
user.POST("invite_applet_code", controller.UserInviteAppletQRCode) // 小程序分享二维码 user.POST("invite_applet_code", controller.UserInviteAppletQRCode) // 小程序分享二维码