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)
}
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 {
logger.Error("err:", err)
logger.Error("GetMemberConfig err:", err)
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 {
logger.Error("err:", err)
}
@ -313,6 +318,7 @@ func PushWXPayNotice(c *gin.Context) {
MemberType: 2,
ToUid: record.Uid,
MemberStatus: 2,
MemberLevel: record.MemberLevel,
}
err := userInvite.Create(model.DB)
if err != nil {
@ -321,7 +327,7 @@ func PushWXPayNotice(c *gin.Context) {
} else {
qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
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()
if err != nil {
@ -333,8 +339,8 @@ func PushWXPayNotice(c *gin.Context) {
if invite.FromUid != 0 {
inviteUser := model.GetUserByUid(invite.FromUid)
if inviteUser.UserType != 2 && user.MemberLevel != 2 {
err := model.CodeSendToUser(invite.FromUid, model.CodeTypeMemberCard30,model.RedeemCodeActivityTypeUserInvite)
if inviteUser.UserType != 2 && user.MemberLevel != 2 { // 邀请 新用户推送一次
err := model.CodeSendToUser(invite.FromUid, model.CodeTypeMemberCard30, model.RedeemCodeActivityTypeUserInvite)
if err != nil {
logger.Error("err:", err)
}
@ -344,7 +350,7 @@ func PushWXPayNotice(c *gin.Context) {
}
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 {
logger.Error("err:", err)
}

View File

@ -161,7 +161,7 @@ func OrderCreate(c *gin.Context) {
//}
req := struct {
GameCardId uint64 `json:"game_card_id"`
GameCardList []model.CardInfo `json:"game_card_list"`
StoreId uint64 `json:"store_id"`
UserAddressId uint64 `json:"user_address_id"`
Price uint32 `json:"price"`
@ -222,7 +222,21 @@ func OrderCreate(c *gin.Context) {
RespJson(c, status.OrderUnpaidDeposit, nil)
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)
orderCreateLocker.Lock()
@ -240,7 +254,7 @@ func OrderCreate(c *gin.Context) {
return
}
online, err := model.IsGameCardOnline(uint32(req.GameCardId))
online, err := model.IsGameCardListOnline(req.GameCardList)
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
@ -262,7 +276,7 @@ func OrderCreate(c *gin.Context) {
order := model.Order{
Uid: uint64(uc.Uid),
GameCardId: req.GameCardId,
GameCardId: 0,
StoreId: req.StoreId,
UserAddressId: req.UserAddressId,
DeliveryType: req.DeliveryType,
@ -278,80 +292,80 @@ func OrderCreate(c *gin.Context) {
//tx := model.TransactionBegin()
////TODO 以支付成功作为订单下单成功的依据,不是订单创建 已修改
var gameCardGoodsStock model.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()
//var gameCardGoodsStock model.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
//}
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
}
//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 {
//// 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 = "100000"

View File

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

View File

@ -205,6 +205,14 @@ func UserInfoUpdate(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)
if uc == nil {
RespJson(c, status.Unauthorized, nil)
@ -213,12 +221,19 @@ func OpenMember(c *gin.Context) {
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 {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
//totalFee := uint32(MemberFee + DepositFee)
////totalFee = uint32(3) // TODO 测试
//if user.Deposit == 300 {
@ -226,10 +241,11 @@ func OpenMember(c *gin.Context) {
// // //totalFee = uint32(1) // TODO 测试
//}
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", configInfo.MemberFee, configInfo.DepositFee)
totalFee := configInfo.MemberFee + configInfo.DepositFee
if user.Deposit == configInfo.DepositFee {
totalFee = configInfo.MemberFee
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", memberConfig.MemberFee, memberConfig.MemberDeposit)
totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
if user.Deposit == memberConfig.MemberDeposit {
totalFee = memberConfig.MemberFee
}
if totalFee == 0 {
logger.Error(errors.New("totalFee is 0"))
@ -244,7 +260,7 @@ func OpenMember(c *gin.Context) {
//}
//orderSn := utils.GetSerialNo32HEXString()
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 {
logger.Error(errors.New("WebPay err"))
RespJson(c, status.InternalServerError, nil)
@ -276,14 +292,23 @@ func PayDeposit(c *gin.Context) {
RespJson(c, status.InternalServerError, nil)
return
}
configInfo, err := model.PayConfigInfo()
level := user.MemberLevel
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 {
logger.Error("err:", err)
logger.Error("GetMemberConfig err:",err)
RespJson(c, status.InternalServerError, nil)
return
}
totalFee := configInfo.DepositFee
totalFee := memberConfig.MemberDeposit
if totalFee == 0 || user.Deposit == totalFee {
logger.Error(errors.New("totalFee is 0"))
RespJson(c, status.InternalServerError, nil)
@ -379,6 +404,23 @@ func UserDepositRefundRecordList(c *gin.Context) {
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-黑金会员
// 开通会员
// 升级会员
@ -386,3 +428,5 @@ func UserDepositRefundRecordList(c *gin.Context) {
// 购物车
// 押金
// 会员列表 开通会员 下订单 借卡 还卡
// 会员升级

View File

@ -87,9 +87,9 @@ const (
OrderDelivered = 500503 // 订单已发货
OrderCompleted = 500504 // 订单已完成
OrderStockOut = 500505 // 没有库存
OrderUnpaidDeposit = 500506 // 没有库存
OrderUnpaidDeposit = 500506 // 未交押金
RefundDepositSubmitted = 500507 // 已提交押金退款
OrderMemberLevelLow = 500508 // 会员等级低
ToastErr = 600 // 报错
)

View File

@ -1679,6 +1679,62 @@ func (qs UserInviteQuerySet) Limit(limit int) UserInviteQuerySet {
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
// nolint: dupl
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"))
}
// 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
// nolint: dupl
func (qs UserInviteQuerySet) OrderAscByMemberOpenTime() UserInviteQuerySet {
@ -1935,6 +1997,12 @@ func (qs UserInviteQuerySet) OrderDescByID() UserInviteQuerySet {
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
// nolint: dupl
func (qs UserInviteQuerySet) OrderDescByMemberOpenTime() UserInviteQuerySet {
@ -2271,6 +2339,13 @@ func (u UserInviteUpdater) SetID(ID uint32) UserInviteUpdater {
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
// nolint: dupl
func (u UserInviteUpdater) SetMemberOpenTime(memberOpenTime time.Time) UserInviteUpdater {
@ -2367,6 +2442,7 @@ var UserInviteDBSchema = struct {
MemberStatus UserInviteDBSchemaField
ToUid UserInviteDBSchemaField
StoreType UserInviteDBSchemaField
MemberLevel UserInviteDBSchemaField
}{
ID: UserInviteDBSchemaField("id"),
@ -2381,6 +2457,7 @@ var UserInviteDBSchema = struct {
MemberStatus: UserInviteDBSchemaField("member_status"),
ToUid: UserInviteDBSchemaField("to_uid"),
StoreType: UserInviteDBSchemaField("store_type"),
MemberLevel: UserInviteDBSchemaField("member_level"),
}
// 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,
"to_uid": o.ToUid,
"store_type": o.StoreType,
"member_level": o.MemberLevel,
}
u := map[string]interface{}{}
for _, f := range fields {
@ -2656,6 +2734,62 @@ func (qs UserOpenMemberRecordQuerySet) Limit(limit int) UserOpenMemberRecordQuer
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
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) Offset(offset int) UserOpenMemberRecordQuerySet {
@ -2718,6 +2852,12 @@ func (qs UserOpenMemberRecordQuerySet) OrderAscByID() UserOpenMemberRecordQueryS
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
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderAscByOrderId() UserOpenMemberRecordQuerySet {
@ -2760,6 +2900,12 @@ func (qs UserOpenMemberRecordQuerySet) OrderDescByID() UserOpenMemberRecordQuery
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
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderDescByOrderId() UserOpenMemberRecordQuerySet {
@ -3009,6 +3155,13 @@ func (u UserOpenMemberRecordUpdater) SetID(ID uint32) UserOpenMemberRecordUpdate
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
// nolint: dupl
func (u UserOpenMemberRecordUpdater) SetOpenNo(openNo string) UserOpenMemberRecordUpdater {
@ -3080,6 +3233,7 @@ var UserOpenMemberRecordDBSchema = struct {
OpenNo UserOpenMemberRecordDBSchemaField
OrderId UserOpenMemberRecordDBSchemaField
OrderType UserOpenMemberRecordDBSchemaField
MemberLevel UserOpenMemberRecordDBSchemaField
}{
ID: UserOpenMemberRecordDBSchemaField("id"),
@ -3090,6 +3244,7 @@ var UserOpenMemberRecordDBSchema = struct {
OpenNo: UserOpenMemberRecordDBSchemaField("open_no"),
OrderId: UserOpenMemberRecordDBSchemaField("order_id"),
OrderType: UserOpenMemberRecordDBSchemaField("order_type"),
MemberLevel: UserOpenMemberRecordDBSchemaField("member_level"),
}
// Update updates UserOpenMemberRecord fields by primary key
@ -3104,6 +3259,7 @@ func (o *UserOpenMemberRecord) Update(db *gorm.DB, fields ...UserOpenMemberRecor
"open_no": o.OpenNo,
"order_id": o.OrderId,
"order_type": o.OrderType,
"member_level": o.MemberLevel,
}
u := map[string]interface{}{}
for _, f := range fields {

View File

@ -2,6 +2,7 @@ package model
import (
"encoding/json"
"errors"
"github.com/codinl/go-logger"
)
@ -26,6 +27,7 @@ type PayConfig struct {
const (
ConfigNamePay = "pay_config" // 支付配置
ConfigNameMember = "member_config" // 会员配置
)
func PayConfigInfo() (*PayConfig, error) {
@ -46,15 +48,54 @@ func PayConfigInfo() (*PayConfig, error) {
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 {
// Encode() string
//}
//
//type CheckConfig struct {
// Check uint8 `json:"check"`
//}
//
//func (c *CheckConfig) Encode() string {
// configBytes, err := json.Marshal(c)
// 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"
}
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) {
var (
cards []GameCard = make([]GameCard, 0)
@ -166,6 +171,21 @@ func IsGameCardOnline(gameCardId uint32) (bool, error) {
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) {
var stock GameCardGoodsStock
err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(gameCardId)).One(&stock)

View File

@ -62,6 +62,16 @@ type Order struct {
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 {
return "order"
}
@ -295,7 +305,6 @@ func IsHaveUnreturnedOrders(uid uint32) (bool, error) {
return unreturned.Count != 0, nil
}
func IsUserHaveUnreturnedOrder(uid uint32) (bool, error) {
fmt.Println("uid", uid)
@ -378,7 +387,6 @@ func (m *Order) Cancel() error {
return errors.New("card status expire")
}
begin := DB.Begin()
err = NewOrderQuerySet(begin).IDEq(m.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).Update()
if err != nil {

View File

@ -43,8 +43,16 @@ func (o *User) TableName() string {
}
const (
MemberTypeConsumer = 1
MemberTypeMember = 2
MemberTypeConsumer = 1 // 普通用户
MemberTypeMember = 2 // 黄金会员
)
const (
MemberLevelConsumer = 1 // 普通用户
MemberLevelGold = 2 // 黄金会员
MemberLevelPeriod = 3
MemberLevelPlatinum = 4 // 白金会员
MemberLevelBlackGold = 5 // 黑金会员
)
const DateTimeFormat = "2006-01-02"
@ -61,6 +69,7 @@ type UserInvite struct {
MemberStatus uint8 `json:"member_status"` // 被邀请用户 1-未开通 2-已开通 3-已取消会员
ToUid uint32 `json:"to_uid"` // 被邀请用户
StoreType uint32 `json:"store_type"` // 门店类型
MemberLevel uint32 `json:"member_level"` // 会员等级
}
const (
@ -132,7 +141,7 @@ type UserOpenMemberRecord struct {
OpenNo string `json:"open_no" gorm:"index"`
OrderId uint32 `json:"order_id"`
OrderType uint32 `json:"order_type"` // 1-物流支付
MemberLevel uint32 `json:"member_level"`
}
func (o *UserOpenMemberRecord) TableName() string {
@ -166,7 +175,6 @@ type CommonProblem struct {
Sort uint32 `json:"sort" gorm:"index"`
}
type GroupSendMessageTemplate struct {
Model
@ -178,7 +186,6 @@ type GroupSendMessageTemplate struct {
Status uint32 `json:"status"` // 1-待发送 2-已发送
}
func (*CommonProblem) TableName() string {
return "common_problem"
}
@ -364,7 +371,6 @@ func GetDepositRefundRecordList(uid uint32) ([]DepositRefundRecord, error) {
return deposits, nil
}
var userMutexMap 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))
//}
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_record", controller.UserDepositRefundRecordList) // 押金记录
user.POST("member_config", controller.MemberConfigList) // 开通会员配置
user.POST("common_problem/list", controller.CommonProblemList) // 常见问题列表
//user.POST("service/wechat_id", controller.GetCustomerServiceWechatId) // 获取客服微信号
user.POST("invite_applet_code", controller.UserInviteAppletQRCode) // 小程序分享二维码