This commit is contained in:
li 2022-01-27 22:24:29 +08:00
parent 0a4c7f2c4b
commit 75b20230c6
9 changed files with 546 additions and 207 deletions

View File

@ -252,11 +252,13 @@ func PushWXPayNotice(c *gin.Context) {
if notify.Attach == wxpay.WxPayRentCard { if notify.Attach == wxpay.WxPayRentCard {
logger.Info("租借游戏卡 支付成功:") logger.Info("租借游戏卡 支付成功:")
var order model.Order var order model.Order
err := model.NewOrderQuerySet(model.DB).OrderSnEq(notify.OutTradeNo).One(&order) err := model.NewOrderQuerySet(model.DB).OrderSnEq(notify.OutTradeNo).PayStatusEq(PayStatusUnPay).One(&order)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
return return
} }
//orderJson, _ := json.Marshal(&order)
//fmt.Println("orderJson:", string(orderJson))
begin := model.DB.Begin() begin := model.DB.Begin()
err = model.NewOrderQuerySet(begin).IDEq(order.ID).GetUpdater(). err = model.NewOrderQuerySet(begin).IDEq(order.ID).GetUpdater().
@ -287,13 +289,13 @@ func PushWXPayNotice(c *gin.Context) {
return return
} }
count, err := model.NewOrderQuerySet(begin).IDEq(order.ID).Count() //count, err := model.NewOrderQuerySet(model.DB).UidEq(order.Uid).IDEq(order.ID).Count()
if err != nil { //if err != nil {
logger.Error("err:", err) // logger.Error("err:", err)
return // return
} //}
go model.OrderCardUserRentCard(uint32(order.Uid), uint32(count), nil) //go model.OrderCardUserRentCard(uint32(order.Uid), uint32(count), nil)
} else if notify.Attach == wxpay.WxPayMember { } else if notify.Attach == wxpay.WxPayMember {
logger.Info("开通会员 支付成功:") logger.Info("开通会员 支付成功:")
@ -334,10 +336,16 @@ func PushWXPayNotice(c *gin.Context) {
logger.Error("GetMemberConfig err:", err) logger.Error("GetMemberConfig err:", err)
return return
} }
openMemberTime := time.Now()
err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: record.MemberLevel, MemberExpire: expireTime, Deposit: memberConfig.MemberDeposit}) if !user.OpenMemberTime.IsZero() {
openMemberTime = user.OpenMemberTime
}
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).SetMemberExpire(expireTime).
SetDeposit(memberConfig.MemberDeposit).SetOpenMemberTime(openMemberTime).UpdateNum()
//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)
return
} }
var invite model.UserInvite var invite model.UserInvite
@ -418,7 +426,7 @@ func PushWXPayNotice(c *gin.Context) {
memberConfig, err := model.GetMemberConfig(user.MemberLevel) memberConfig, err := model.GetMemberConfig(user.MemberLevel)
if err != nil { if err != nil {
logger.Error("err:",err) logger.Error("err:", err)
return return
} }
@ -429,6 +437,48 @@ func PushWXPayNotice(c *gin.Context) {
if num == 0 { if num == 0 {
logger.Error("update deposit num is 0") logger.Error("update deposit num is 0")
} }
} else if notify.Attach == wxpay.WxPayUpgradeMember {
record := &model.UserOpenMemberRecord{OpenNo: notify.OutTradeNo}
err := record.GetByOpenNo()
if err != nil {
logger.Error("err:", err)
}
fmt.Println("UpgradeMember:", record.Uid)
var user model.User
err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
if err != nil {
logger.Error("err:", err)
return
}
memberConfig, err := model.GetMemberConfig(record.MemberLevel)
if err != nil {
logger.Error("GetMemberConfig err:", err)
return
}
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).SetMemberExpire(record.MemberExpire).
SetDeposit(memberConfig.MemberDeposit).UpdateNum()
//err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: record.MemberLevel, MemberExpire: expireTime, Deposit: memberConfig.MemberDeposit})
if err != nil {
logger.Error("err:", err)
return
}
// 添加会员时长 等级 借卡数量
var userRentCard model.UserRentCard
err = model.NewUserRentCardQuerySet(model.DB).UidEq(record.Uid).One(&userRentCard)
if err != nil {
logger.Error("err:", err)
return
}
_, err = model.NewUserRentCardQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
SetLevelRentCount(memberConfig.CardMax).SetCanRentCount(memberConfig.CardMax - userRentCard.HaveRentCount).UpdateNum()
if err != nil {
logger.Error("err:", err)
return
}
} }
logger.Debug("微信推动支付通知") logger.Debug("微信推动支付通知")

View File

@ -71,7 +71,6 @@ func RentCardOrderList(c *gin.Context) {
} }
req.Uid = uc.Uid req.Uid = uc.Uid
orderCardList, totalPage, err := req.GetOrderCardList() // TODO orderCardList, totalPage, err := req.GetOrderCardList() // TODO
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
@ -90,9 +89,10 @@ func RentCardOrderList(c *gin.Context) {
func OrderInfo(c *gin.Context) { func OrderInfo(c *gin.Context) {
req := struct { req := struct {
OrderId uint32 `json:"order_id"` //OrderId uint32 `json:"order_id"`
GameCardId uint64 `json:"game_card_id"` // 游戏id //GameCardId uint64 `json:"game_card_id"` // 游戏id
GameCardGoodsId uint64 `json:"game_card_goods_id" ` // 游戏卡id //GameCardGoodsId uint64 `json:"game_card_goods_id" ` // 游戏卡id
OrderCardId uint32 `json:"order_card_id"`
}{} }{}
if c.ShouldBindJSON(&req) != nil { if c.ShouldBindJSON(&req) != nil {
logger.Error("ShouldBindJSON err") logger.Error("ShouldBindJSON err")
@ -100,9 +100,9 @@ func OrderInfo(c *gin.Context) {
return return
} }
order := model.Order{} order := model.Order{}
order.ID = req.OrderId //order.ID = req.OrderId
order.GameCardId = req.GameCardId //order.GameCardId = req.GameCardId
info, err := order.Info() info, err := order.Info(req.OrderCardId)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
@ -324,7 +324,7 @@ func RentCardOrderCreate(c *gin.Context) {
stockEnough, err := model.IsCardGoodsStockEnough(req.GameCardList, req.StoreId) stockEnough, err := model.IsCardGoodsStockEnough(req.GameCardList, req.StoreId)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.OrderStockOut, nil)
return return
} }
if stockEnough { if stockEnough {
@ -376,7 +376,7 @@ func RentCardOrderCreate(c *gin.Context) {
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
return return
} }
go model.OrderCardUserRentCard(uc.Uid, cardCount, memberConfig) go model.OrderCardUserRentCard(uc.Uid, cardCount, memberConfig, nil)
ret := map[string]interface{}{ ret := map[string]interface{}{
"web_pay": "", "web_pay": "",
"order_id": order.ID, "order_id": order.ID,
@ -869,12 +869,6 @@ func OrderCancel(c *gin.Context) {
fmt.Println("order:", order) fmt.Println("order:", order)
if isRecede { if isRecede {
err = model.NewOrderQuerySet(model.DB).IDEq(order.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).Update()
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
outTradeNo, err := model.GetWxPayExpressFeeRefundRecord(order.ID) outTradeNo, err := model.GetWxPayExpressFeeRefundRecord(order.ID)
if err != nil { if err != nil {
@ -901,8 +895,8 @@ func OrderCancel(c *gin.Context) {
Currency: "CNY", Currency: "CNY",
}, },
} }
//bytes, _ := json.Marshal(orderRefund) bytes, _ := json.Marshal(order)
//fmt.Println("订单取消:", string(bytes)) fmt.Println("订单取消:", string(bytes))
//err = wxpay.WxPayOrderRefund(orderRefund) //err = wxpay.WxPayOrderRefund(orderRefund)
err = wxpay.TransactionOrderRefund(orderRefund) err = wxpay.TransactionOrderRefund(orderRefund)
if err != nil { if err != nil {

View File

@ -298,32 +298,73 @@ func UpgradeMember(c *gin.Context) {
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
return return
} }
//configInfo, err := model.PayConfigInfo()
//if err != nil { originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel)
// 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) memberConfig, err := model.GetMemberConfig(req.MemberLevel)
////totalFee = uint32(3) // TODO 测试 if err != nil {
//if user.Deposit == 300 { logger.Error("err:", err)
// totalFee = MemberFee RespJson(c, status.InternalServerError, nil)
// // //totalFee = uint32(1) // TODO 测试 return
//}
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", memberConfig.MemberFee, memberConfig.MemberDeposit)
totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
if user.Deposit == memberConfig.MemberDeposit {
totalFee = memberConfig.MemberFee
} }
raiseTime, err := time.Parse("2006-01-02 15:04:05", "2022-01-01 00:00:00")
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
memberFee := originalMemberConfig.MemberFee
if user.OpenMemberTime.Before(raiseTime) {
memberFee = 29900
}
// 补押金
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit)
count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).StatusEq(model.RedeemCodeStatusUsed).Count()
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
fmt.Println("count:", count)
// 抵扣天数
deductionDays := int64(0)
deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 12*3600
if deductionTime < 0 {
deductionTime = 0
}
if deductionTime > 0 {
deductionDays = deductionTime / int64(24*3600)
}
// 抵扣金
deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
// 补会员费
memberMendFee := int64(memberConfig.MemberFee) - deductionFee
totalFee := int64(depositMendFee) + memberMendFee
//if memberMendFee < 0 {
// depositMendFee = depositMendFee + memberMendFee
//}
fmt.Println("depositMendFee : memberMendFee", depositMendFee, memberMendFee)
if totalFee == 0 {
logger.Error(errors.New("totalFee is 0"))
RespJson(c, status.InternalServerError, nil)
return
}
//totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
//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"))
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
@ -336,15 +377,17 @@ func UpgradeMember(c *gin.Context) {
// return // return
//} //}
//orderSn := utils.GetSerialNo32HEXString() //orderSn := utils.GetSerialNo32HEXString()
memberExpire := time.Now().AddDate(1, 0, count*30)
orderSn := model.GetOrderSn() orderSn := model.GetOrderSn()
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel}.Insert() err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,
MemberLevel: req.MemberLevel, OrderType: 3, MemberExpire: memberExpire}.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)
return return
} }
webPay, err := wxpay.WebPay(orderSn, totalFee, user.WxOpenID, "N", wxpay.WxPayMember) webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember)
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)
@ -354,6 +397,105 @@ func UpgradeMember(c *gin.Context) {
RespOK(c, webPay) RespOK(c, webPay)
} }
func UpgradeMemberInfo(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)
return
}
user := model.GetUserByUid(uc.Uid)
if user.MemberLevel != 2 && user.MemberLevel != 4 {
logger.Error("MemberLevel err:")
RespJson(c, status.InternalServerError, nil)
return
}
//configInfo, err := model.PayConfigInfo()
//if err != nil {
// logger.Error("err:", err)
// RespJson(c, status.InternalServerError, nil)
// return
//}
originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel)
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
}
raiseTime, err := time.Parse("2006-01-02 15:04:05", "2022-01-01 00:00:00")
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
memberFee := originalMemberConfig.MemberFee
if user.OpenMemberTime.Before(raiseTime) {
memberFee = 29900
}
// 补押金
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit)
count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).StatusEq(model.RedeemCodeStatusUsed).Count()
if err != nil {
logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
fmt.Println("count:", count)
// 抵扣天数
deductionDays := int64(0)
deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 12*3600
if deductionTime < 0 {
deductionTime = 0
}
if deductionTime > 0 {
deductionDays = deductionTime / int64(24*3600)
}
// 抵扣金
deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
// 补会员费
memberMendFee := int64(memberConfig.MemberFee) - deductionFee
totalFee := int64(depositMendFee) + memberMendFee
//if memberMendFee < 0 {
// depositMendFee = depositMendFee + memberMendFee
//}
fmt.Println("depositMendFee : memberMendFee", depositMendFee, memberMendFee)
if totalFee == 0 {
logger.Error(errors.New("totalFee is 0"))
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, map[string]interface{}{
"deduction_fee": deductionFee, // 会员抵扣费
"deduction_days": deductionDays, // 会员抵扣天数
"member_mend_fee": memberMendFee, // 会员补费
"deposit_mend_fee": depositMendFee, // 补押金
"total_fee": totalFee, // 总费用
})
}
func PayDeposit(c *gin.Context) { func PayDeposit(c *gin.Context) {
uc := auth.GetCurrentUser(c) uc := auth.GetCurrentUser(c)
if uc == nil { if uc == nil {

View File

@ -37,6 +37,7 @@ const (
WxPayMember = "member_pay" // 会员 WxPayMember = "member_pay" // 会员
WxPayRentCard = "rent_card_pay" // 租卡 WxPayRentCard = "rent_card_pay" // 租卡
WxPayDeposit = "deposit_pay" // 押金 WxPayDeposit = "deposit_pay" // 押金
WxPayUpgradeMember = "upgrade_member" // 押金
//NotifyUrl = "https://switch.deovo.com:8001/api/v1/wxpay/notice" // TODO 数据库配置 生产 //NotifyUrl = "https://switch.deovo.com:8001/api/v1/wxpay/notice" // TODO 数据库配置 生产
//NotifyUrl = "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice" // TODO 测试 //NotifyUrl = "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice" // TODO 测试

View File

@ -3439,6 +3439,42 @@ func (qs UserOpenMemberRecordQuerySet) Limit(limit int) UserOpenMemberRecordQuer
return qs.w(qs.db.Limit(limit)) return qs.w(qs.db.Limit(limit))
} }
// MemberExpireEq is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberExpireEq(memberExpire time.Time) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_expire = ?", memberExpire))
}
// MemberExpireGt is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberExpireGt(memberExpire time.Time) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_expire > ?", memberExpire))
}
// MemberExpireGte is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberExpireGte(memberExpire time.Time) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_expire >= ?", memberExpire))
}
// MemberExpireLt is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberExpireLt(memberExpire time.Time) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_expire < ?", memberExpire))
}
// MemberExpireLte is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberExpireLte(memberExpire time.Time) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_expire <= ?", memberExpire))
}
// MemberExpireNe is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberExpireNe(memberExpire time.Time) UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Where("member_expire != ?", memberExpire))
}
// MemberLevelEq is an autogenerated method // MemberLevelEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserOpenMemberRecordQuerySet) MemberLevelEq(memberLevel uint32) UserOpenMemberRecordQuerySet { func (qs UserOpenMemberRecordQuerySet) MemberLevelEq(memberLevel uint32) UserOpenMemberRecordQuerySet {
@ -3557,6 +3593,12 @@ func (qs UserOpenMemberRecordQuerySet) OrderAscByID() UserOpenMemberRecordQueryS
return qs.w(qs.db.Order("id ASC")) return qs.w(qs.db.Order("id ASC"))
} }
// OrderAscByMemberExpire is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderAscByMemberExpire() UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Order("member_expire ASC"))
}
// OrderAscByMemberLevel is an autogenerated method // OrderAscByMemberLevel is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderAscByMemberLevel() UserOpenMemberRecordQuerySet { func (qs UserOpenMemberRecordQuerySet) OrderAscByMemberLevel() UserOpenMemberRecordQuerySet {
@ -3605,6 +3647,12 @@ func (qs UserOpenMemberRecordQuerySet) OrderDescByID() UserOpenMemberRecordQuery
return qs.w(qs.db.Order("id DESC")) return qs.w(qs.db.Order("id DESC"))
} }
// OrderDescByMemberExpire is an autogenerated method
// nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderDescByMemberExpire() UserOpenMemberRecordQuerySet {
return qs.w(qs.db.Order("member_expire DESC"))
}
// OrderDescByMemberLevel is an autogenerated method // OrderDescByMemberLevel is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserOpenMemberRecordQuerySet) OrderDescByMemberLevel() UserOpenMemberRecordQuerySet { func (qs UserOpenMemberRecordQuerySet) OrderDescByMemberLevel() UserOpenMemberRecordQuerySet {
@ -3860,6 +3908,13 @@ func (u UserOpenMemberRecordUpdater) SetID(ID uint32) UserOpenMemberRecordUpdate
return u return u
} }
// SetMemberExpire is an autogenerated method
// nolint: dupl
func (u UserOpenMemberRecordUpdater) SetMemberExpire(memberExpire time.Time) UserOpenMemberRecordUpdater {
u.fields[string(UserOpenMemberRecordDBSchema.MemberExpire)] = memberExpire
return u
}
// SetMemberLevel is an autogenerated method // SetMemberLevel is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserOpenMemberRecordUpdater) SetMemberLevel(memberLevel uint32) UserOpenMemberRecordUpdater { func (u UserOpenMemberRecordUpdater) SetMemberLevel(memberLevel uint32) UserOpenMemberRecordUpdater {
@ -3930,41 +3985,44 @@ 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 MemberLevel UserOpenMemberRecordDBSchemaField
MemberExpire 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"), MemberLevel: UserOpenMemberRecordDBSchemaField("member_level"),
MemberExpire: UserOpenMemberRecordDBSchemaField("member_expire"),
} }
// 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, "member_level": o.MemberLevel,
"member_expire": o.MemberExpire,
} }
u := map[string]interface{}{} u := map[string]interface{}{}
for _, f := range fields { for _, f := range fields {
@ -4722,6 +4780,42 @@ func (qs UserQuerySet) One(ret *User) error {
return qs.db.First(ret).Error return qs.db.First(ret).Error
} }
// OpenMemberTimeEq is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OpenMemberTimeEq(openMemberTime time.Time) UserQuerySet {
return qs.w(qs.db.Where("open_member_time = ?", openMemberTime))
}
// OpenMemberTimeGt is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OpenMemberTimeGt(openMemberTime time.Time) UserQuerySet {
return qs.w(qs.db.Where("open_member_time > ?", openMemberTime))
}
// OpenMemberTimeGte is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OpenMemberTimeGte(openMemberTime time.Time) UserQuerySet {
return qs.w(qs.db.Where("open_member_time >= ?", openMemberTime))
}
// OpenMemberTimeLt is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OpenMemberTimeLt(openMemberTime time.Time) UserQuerySet {
return qs.w(qs.db.Where("open_member_time < ?", openMemberTime))
}
// OpenMemberTimeLte is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OpenMemberTimeLte(openMemberTime time.Time) UserQuerySet {
return qs.w(qs.db.Where("open_member_time <= ?", openMemberTime))
}
// OpenMemberTimeNe is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OpenMemberTimeNe(openMemberTime time.Time) UserQuerySet {
return qs.w(qs.db.Where("open_member_time != ?", openMemberTime))
}
// OrderAscByBond is an autogenerated method // OrderAscByBond is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserQuerySet) OrderAscByBond() UserQuerySet { func (qs UserQuerySet) OrderAscByBond() UserQuerySet {
@ -4776,6 +4870,12 @@ func (qs UserQuerySet) OrderAscByMemberLevel() UserQuerySet {
return qs.w(qs.db.Order("member_level ASC")) return qs.w(qs.db.Order("member_level ASC"))
} }
// OrderAscByOpenMemberTime is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OrderAscByOpenMemberTime() UserQuerySet {
return qs.w(qs.db.Order("open_member_time ASC"))
}
// OrderAscByStoreId is an autogenerated method // OrderAscByStoreId is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserQuerySet) OrderAscByStoreId() UserQuerySet { func (qs UserQuerySet) OrderAscByStoreId() UserQuerySet {
@ -4866,6 +4966,12 @@ func (qs UserQuerySet) OrderDescByMemberLevel() UserQuerySet {
return qs.w(qs.db.Order("member_level DESC")) return qs.w(qs.db.Order("member_level DESC"))
} }
// OrderDescByOpenMemberTime is an autogenerated method
// nolint: dupl
func (qs UserQuerySet) OrderDescByOpenMemberTime() UserQuerySet {
return qs.w(qs.db.Order("open_member_time DESC"))
}
// OrderDescByStoreId is an autogenerated method // OrderDescByStoreId is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserQuerySet) OrderDescByStoreId() UserQuerySet { func (qs UserQuerySet) OrderDescByStoreId() UserQuerySet {
@ -5515,6 +5621,13 @@ func (u UserUpdater) SetMemberLevel(memberLevel uint32) UserUpdater {
return u return u
} }
// SetOpenMemberTime is an autogenerated method
// nolint: dupl
func (u UserUpdater) SetOpenMemberTime(openMemberTime time.Time) UserUpdater {
u.fields[string(UserDBSchema.OpenMemberTime)] = openMemberTime
return u
}
// SetProvince is an autogenerated method // SetProvince is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserUpdater) SetProvince(province string) UserUpdater { func (u UserUpdater) SetProvince(province string) UserUpdater {
@ -5627,95 +5740,98 @@ func (f UserDBSchemaField) String() string {
// UserDBSchema stores db field names of User // UserDBSchema stores db field names of User
var UserDBSchema = struct { var UserDBSchema = struct {
ID UserDBSchemaField ID UserDBSchemaField
CreatedAt UserDBSchemaField CreatedAt UserDBSchemaField
UpdatedAt UserDBSchemaField UpdatedAt UserDBSchemaField
DeletedAt UserDBSchemaField DeletedAt UserDBSchemaField
Uid UserDBSchemaField Uid UserDBSchemaField
MemberLevel UserDBSchemaField MemberLevel UserDBSchemaField
MemberExpire UserDBSchemaField MemberExpire UserDBSchemaField
Bond UserDBSchemaField OpenMemberTime UserDBSchemaField
WxName UserDBSchemaField Bond UserDBSchemaField
WxAvatar UserDBSchemaField WxName UserDBSchemaField
WxOpenID UserDBSchemaField WxAvatar UserDBSchemaField
AppOpenID UserDBSchemaField WxOpenID UserDBSchemaField
WxUnionID UserDBSchemaField AppOpenID UserDBSchemaField
Tel UserDBSchemaField WxUnionID UserDBSchemaField
Gender UserDBSchemaField Tel UserDBSchemaField
City UserDBSchemaField Gender UserDBSchemaField
Province UserDBSchemaField City UserDBSchemaField
Country UserDBSchemaField Province UserDBSchemaField
Deposit UserDBSchemaField Country UserDBSchemaField
UserType UserDBSchemaField Deposit UserDBSchemaField
StoreId UserDBSchemaField UserType UserDBSchemaField
InviteCodeUrl UserDBSchemaField StoreId UserDBSchemaField
LastLoginAt UserDBSchemaField InviteCodeUrl UserDBSchemaField
IP UserDBSchemaField LastLoginAt UserDBSchemaField
InBlack UserDBSchemaField IP UserDBSchemaField
StoreType UserDBSchemaField InBlack UserDBSchemaField
Version UserDBSchemaField StoreType UserDBSchemaField
Version UserDBSchemaField
}{ }{
ID: UserDBSchemaField("id"), ID: UserDBSchemaField("id"),
CreatedAt: UserDBSchemaField("created_at"), CreatedAt: UserDBSchemaField("created_at"),
UpdatedAt: UserDBSchemaField("updated_at"), UpdatedAt: UserDBSchemaField("updated_at"),
DeletedAt: UserDBSchemaField("deleted_at"), DeletedAt: UserDBSchemaField("deleted_at"),
Uid: UserDBSchemaField("uid"), Uid: UserDBSchemaField("uid"),
MemberLevel: UserDBSchemaField("member_level"), MemberLevel: UserDBSchemaField("member_level"),
MemberExpire: UserDBSchemaField("member_expire"), MemberExpire: UserDBSchemaField("member_expire"),
Bond: UserDBSchemaField("bond"), OpenMemberTime: UserDBSchemaField("open_member_time"),
WxName: UserDBSchemaField("wx_name"), Bond: UserDBSchemaField("bond"),
WxAvatar: UserDBSchemaField("wx_avatar"), WxName: UserDBSchemaField("wx_name"),
WxOpenID: UserDBSchemaField("wx_open_id"), WxAvatar: UserDBSchemaField("wx_avatar"),
AppOpenID: UserDBSchemaField("app_open_id"), WxOpenID: UserDBSchemaField("wx_open_id"),
WxUnionID: UserDBSchemaField("wx_union_id"), AppOpenID: UserDBSchemaField("app_open_id"),
Tel: UserDBSchemaField("tel"), WxUnionID: UserDBSchemaField("wx_union_id"),
Gender: UserDBSchemaField("gender"), Tel: UserDBSchemaField("tel"),
City: UserDBSchemaField("city"), Gender: UserDBSchemaField("gender"),
Province: UserDBSchemaField("province"), City: UserDBSchemaField("city"),
Country: UserDBSchemaField("country"), Province: UserDBSchemaField("province"),
Deposit: UserDBSchemaField("deposit"), Country: UserDBSchemaField("country"),
UserType: UserDBSchemaField("user_type"), Deposit: UserDBSchemaField("deposit"),
StoreId: UserDBSchemaField("store_id"), UserType: UserDBSchemaField("user_type"),
InviteCodeUrl: UserDBSchemaField("invite_code_url"), StoreId: UserDBSchemaField("store_id"),
LastLoginAt: UserDBSchemaField("last_login_at"), InviteCodeUrl: UserDBSchemaField("invite_code_url"),
IP: UserDBSchemaField("ip"), LastLoginAt: UserDBSchemaField("last_login_at"),
InBlack: UserDBSchemaField("in_black"), IP: UserDBSchemaField("ip"),
StoreType: UserDBSchemaField("store_type"), InBlack: UserDBSchemaField("in_black"),
Version: UserDBSchemaField("version"), StoreType: UserDBSchemaField("store_type"),
Version: UserDBSchemaField("version"),
} }
// Update updates User fields by primary key // Update updates User fields by primary key
// nolint: dupl // nolint: dupl
func (o *User) Update(db *gorm.DB, fields ...UserDBSchemaField) error { func (o *User) Update(db *gorm.DB, fields ...UserDBSchemaField) 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,
"member_level": o.MemberLevel, "member_level": o.MemberLevel,
"member_expire": o.MemberExpire, "member_expire": o.MemberExpire,
"bond": o.Bond, "open_member_time": o.OpenMemberTime,
"wx_name": o.WxName, "bond": o.Bond,
"wx_avatar": o.WxAvatar, "wx_name": o.WxName,
"wx_open_id": o.WxOpenID, "wx_avatar": o.WxAvatar,
"app_open_id": o.AppOpenID, "wx_open_id": o.WxOpenID,
"wx_union_id": o.WxUnionID, "app_open_id": o.AppOpenID,
"tel": o.Tel, "wx_union_id": o.WxUnionID,
"gender": o.Gender, "tel": o.Tel,
"city": o.City, "gender": o.Gender,
"province": o.Province, "city": o.City,
"country": o.Country, "province": o.Province,
"deposit": o.Deposit, "country": o.Country,
"user_type": o.UserType, "deposit": o.Deposit,
"store_id": o.StoreId, "user_type": o.UserType,
"invite_code_url": o.InviteCodeUrl, "store_id": o.StoreId,
"last_login_at": o.LastLoginAt, "invite_code_url": o.InviteCodeUrl,
"ip": o.IP, "last_login_at": o.LastLoginAt,
"in_black": o.InBlack, "ip": o.IP,
"store_type": o.StoreType, "in_black": o.InBlack,
"version": o.Version, "store_type": o.StoreType,
"version": o.Version,
} }
u := map[string]interface{}{} u := map[string]interface{}{}
for _, f := range fields { for _, f := range fields {

View File

@ -71,7 +71,7 @@ type OrderCard struct {
GameCardId uint32 `json:"game_card_id" gorm:"index"` // 游戏id GameCardId uint32 `json:"game_card_id" gorm:"index"` // 游戏id
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
CardStatus uint32 `json:"card_status"` // 1-待取货中 2-游玩中 3-归还中 4-已完成 5-已取消 CardStatus uint32 `json:"card_status"` // 1-待取货中 2-游玩中 3-归还中 4-已完成 5-已取消
DeliveryTime time.Time `json:"delivery_time"` // 发货时间 DeliveryTime time.Time `json:"delivery_time"` // 发货时间
ReceiptTime time.Time `json:"receipt_time"` // 收货时间 ReceiptTime time.Time `json:"receipt_time"` // 收货时间
DeliveryType uint8 `json:"delivery_type"` // 取货类型 1-门店自取 2-快递 DeliveryType uint8 `json:"delivery_type"` // 取货类型 1-门店自取 2-快递
@ -233,13 +233,12 @@ func (m *OrderListReq) GetOrderCardList() ([]OrderCard, uint32, error) {
} }
totalPage = uint32(count/m.PageSize + 1) totalPage = uint32(count/m.PageSize + 1)
orderCards = OrderCardListSetGameInfo(orderCards) orderCards = OrderCardListSetGameInfo(orderCards)
return orderCards, totalPage, nil return orderCards, totalPage, nil
} }
func (m *Order) Info() ([]OrderCard, error) { func (m *Order) Info(orderCardId uint32) ([]OrderCard, error) {
//err := NewOrderQuerySet(DB).IDEq(m.ID).One(&order) //err := NewOrderQuerySet(DB).IDEq(m.ID).One(&order)
//if err != nil { //if err != nil {
@ -253,10 +252,11 @@ func (m *Order) Info() ([]OrderCard, error) {
// return nil, err // return nil, err
//} //}
qs := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardIdEq(uint32(m.GameCardId)) qs := NewOrderCardQuerySet(DB).IDEq(orderCardId)
if m.GameCardGoodsId != 0 { //qs := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardIdEq(uint32(m.GameCardId))
qs = qs.GameCardGoodsIdEq(uint32(m.GameCardGoodsId)) //if m.GameCardGoodsId != 0 {
} // qs = qs.GameCardGoodsIdEq(uint32(m.GameCardGoodsId))
//}
var orderCards []OrderCard var orderCards []OrderCard
err := qs.All(&orderCards) err := qs.All(&orderCards)
if err != nil { if err != nil {
@ -285,8 +285,8 @@ func (m *Order) Revert() error {
// logger.Error("order card status completed") // logger.Error("order card status completed")
// return errors.New("order card status completed") // return errors.New("order card status completed")
//} //}
fmt.Println("GameCardGoodsId------:",m.GameCardGoodsId) fmt.Println("GameCardGoodsId------:", m.GameCardGoodsId)
fmt.Println("ID------:",m.ID) fmt.Println("ID------:", m.ID)
err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard) err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
if err != nil { if err != nil {
logger.Errorf("err:%#v", err) logger.Errorf("err:%#v", err)
@ -467,7 +467,7 @@ func (m *UserRentCard) IsHaveUnreturnedOrders(RentCount uint32) (bool, error) {
} }
func IsHaveOnDeliverOrderCards(orderId uint32) (bool, error) { func IsHaveOnDeliverOrderCards(orderId uint32) (bool, error) {
count, err := NewOrderCardQuerySet(DB).OrderIdEq(orderId).CardStatusEq(1).Count() count, err := NewOrderCardQuerySet(DB).OrderIdEq(orderId).CardStatusEq(OrderCardStatusUnPick).Count()
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
return false, err return false, err
@ -540,6 +540,8 @@ func (m *Order) Cancel() (bool, error) {
logger.Error("err:", err) logger.Error("err:", err)
return false, err return false, err
} }
orderJson, _ := json.Marshal(m)
fmt.Println("orderJson:", string(orderJson))
//err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard) //err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardIdEq(uint32(m.GameCardId)).CardStatusEq(OrderCardStatusUnPick).Limit(1).One(&orderCard) err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardIdEq(uint32(m.GameCardId)).CardStatusEq(OrderCardStatusUnPick).Limit(1).One(&orderCard)
@ -592,19 +594,36 @@ func (m *Order) Cancel() (bool, error) {
logger.Errorf("err:%#v", err) logger.Errorf("err:%#v", err)
return false, err return false, err
} }
//UserRentCard{}
sqlRent := fmt.Sprintf("UPDATE user_rent_card SET have_rent_count = have_rent_count-1,can_rent_count=can_rent_count+1 WHERE uid =%d;", order.Uid)
fmt.Println("sqlRent:", sqlRent)
err = begin.Exec(sqlRent).Error
if err != nil {
begin.Rollback()
logger.Errorf("err:%#v", err)
return false, err
}
err = begin.Commit().Error err = begin.Commit().Error
if err != nil { if err != nil {
begin.Rollback() begin.Rollback()
logger.Errorf("err:%#v", err) logger.Errorf("err:%#v", err)
return false, err return false, err
} }
isRecede := false isHaveOnDeliver, err := IsHaveOnDeliverOrderCards(m.ID)
if order.DeliveryType == 2 && order.Postage > 0 { if err != nil {
isHaveOnDeliver, err := IsHaveOnDeliverOrderCards(m.ID) logger.Error("err:", err)
return false, err
}
if !isHaveOnDeliver {
err = NewOrderQuerySet(DB).IDEq(order.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).Update()
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
return false, err return false, err
} }
}
isRecede := false
if order.DeliveryType == 2 && order.Postage > 0 {
if !isHaveOnDeliver { if !isHaveOnDeliver {
isRecede = true isRecede = true
} }
@ -681,10 +700,14 @@ func IsCardGoodsStockEnough(cards []CardInfo, storeId uint32) (bool, error) {
var gameCardGoodsStock GameCardGoodsStock var gameCardGoodsStock GameCardGoodsStock
err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(cards[i].GameCardId)). err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(cards[i].GameCardId)).
One(&gameCardGoodsStock) One(&gameCardGoodsStock)
if err != nil { if err != nil && err != RecordNotFound {
logger.Error("err:", err) logger.Error("err:", err)
return false, err return false, err
} }
if err == RecordNotFound {
logger.Error("order stock out:")
return false, err
}
if gameCardGoodsStock.RentStock < cards[i].Count { if gameCardGoodsStock.RentStock < cards[i].Count {
logger.Error("order stock out ") logger.Error("order stock out ")
return false, errors.New("order stock out") return false, errors.New("order stock out")
@ -708,13 +731,15 @@ func GameCardGoodsInventoryReduction(cards []CardInfo, storeId uint32, gdb *gorm
func (m *Order) InventoryReduction(gdb *gorm.DB) error { func (m *Order) InventoryReduction(gdb *gorm.DB) error {
var cards []OrderCard var cards []OrderCard
err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).All(&cards) err := NewOrderCardQuerySet(DB).UidEq(uint32(m.Uid)).OrderIdEq(m.ID).All(&cards)
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
return err return err
} }
//fmt.Println("cards:", cards)
for i, _ := range cards { for i, _ := range cards {
//fmt.Println("cards:", cards[i].GameCardId, cards[i].StoreId, cards[i].Uid)
sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock-1 WHERE store_id=%d AND game_card_id=%d;", m.StoreId, cards[i].GameCardId) sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock-1 WHERE store_id=%d AND game_card_id=%d;", m.StoreId, cards[i].GameCardId)
fmt.Println("sql:", sql) fmt.Println("sql:", sql)
err := gdb.Exec(sql).Error err := gdb.Exec(sql).Error
@ -723,6 +748,10 @@ func (m *Order) InventoryReduction(gdb *gorm.DB) error {
return err return err
} }
} }
err = OrderCardUserRentCard(uint32(m.Uid), uint32(len(cards)), nil, gdb)
if err != nil {
logger.Error("err:", err)
}
return nil return nil
} }

View File

@ -167,7 +167,7 @@ func UserRedeemCodeConvert(uid uint32, serialCode string) error {
return nil return nil
} }
func CodeSendToUser(uid uint32, codeType string,activityType uint32) error { func CodeSendToUser(uid uint32, codeType string, activityType uint32) error {
count, err := NewUserRedeemCodeQuerySet(DB).UidEq(uid).Count() count, err := NewUserRedeemCodeQuerySet(DB).UidEq(uid).Count()
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
@ -198,7 +198,7 @@ func CodeSendToUser(uid uint32, codeType string,activityType uint32) error {
Status: UserRedeemCodeStatusHold, Status: UserRedeemCodeStatusHold,
SerialCode: redeemCode.SerialCode, SerialCode: redeemCode.SerialCode,
CodeType: redeemCode.CodeType, CodeType: redeemCode.CodeType,
ActivityType: activityType , ActivityType: activityType,
//ActivityType: RedeemCodeActivityTypeUserInvite, //ActivityType: RedeemCodeActivityTypeUserInvite,
} }
err = begin.Create(userRedeemCode).Error err = begin.Create(userRedeemCode).Error

View File

@ -4,6 +4,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/codinl/go-logger" "github.com/codinl/go-logger"
"github.com/jinzhu/gorm"
"mh-server/lib/utils" "mh-server/lib/utils"
"sync" "sync"
"time" "time"
@ -14,29 +15,30 @@ import (
type User struct { type User struct {
Model Model
Uid uint32 `json:"uid" gorm:"column:uid;unique_index"` Uid uint32 `json:"uid" gorm:"column:uid;unique_index"`
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
MemberExpire time.Time `json:"member_expire"` // 会员到期时间 MemberExpire time.Time `json:"member_expire"` // 会员到期时间
Bond uint32 `json:"bond"` // 保证金 OpenMemberTime time.Time `json:"open_member_time"` // 开通会员
WxName string `json:"wx_name"` // 昵称 Bond uint32 `json:"bond"` // 保证金
WxAvatar string `json:"wx_avatar"` // 头像 WxName string `json:"wx_name"` // 昵称
WxOpenID string `json:"wx_open_id"` WxAvatar string `json:"wx_avatar"` // 头像
AppOpenID string `json:"app_open_id"` WxOpenID string `json:"wx_open_id"`
WxUnionID string `json:"wx_union_id"` AppOpenID string `json:"app_open_id"`
Tel string `json:"tel"` // 电话 WxUnionID string `json:"wx_union_id"`
Gender uint8 `json:"gender"` // 性别 Tel string `json:"tel"` // 电话
City string `json:"city"` // 城市 Gender uint8 `json:"gender"` // 性别
Province string `json:"province"` // 省 City string `json:"city"` // 城市
Country string `json:"country"` // 市 Province string `json:"province"` // 省
Deposit uint32 `json:"deposit"` // Country string `json:"country"` // 市
UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员 Deposit uint32 `json:"deposit"` //
StoreId uint64 `json:"store_id"` // 门店id UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员
InviteCodeUrl string `json:"invite_code_url"` // 分享二维码 StoreId uint64 `json:"store_id"` // 门店id
LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间 InviteCodeUrl string `json:"invite_code_url"` // 分享二维码
IP string `json:"-" gorm:"type:varchar(60)"` // ip LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间
InBlack bool `json:"in_black"` // 是否在黑名单 IP string `json:"-" gorm:"type:varchar(60)"` // ip
StoreType uint8 `json:"store_type"` // 1-订单门店 InBlack bool `json:"in_black"` // 是否在黑名单
Version uint32 `json:"-"` StoreType uint8 `json:"store_type"` // 1-订单门店
Version uint32 `json:"-"`
} }
func (o *User) TableName() string { func (o *User) TableName() string {
@ -180,11 +182,12 @@ 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-物流支付 2-取消物流租卡
MemberLevel uint32 `json:"member_level"` MemberLevel uint32 `json:"member_level"`
MemberExpire time.Time `json:"member_expire"` // 会员到期时间
} }
func (o *UserOpenMemberRecord) TableName() string { func (o *UserOpenMemberRecord) TableName() string {
@ -439,8 +442,11 @@ func GetUserMutex(mutexKey string) *sync.Mutex {
var AuthLoginMutex = sync.Mutex{} var AuthLoginMutex = sync.Mutex{}
func OrderCardUserRentCard(uid uint32, count uint32, memberConfig *MemberConfig) error { func OrderCardUserRentCard(uid uint32, count uint32, memberConfig *MemberConfig,gdb *gorm.DB) error {
//UserRentCard{} //UserRentCard{}
if gdb == nil {
gdb = DB
}
var userRentCard UserRentCard var userRentCard UserRentCard
err := NewUserRentCardQuerySet(DB).UidEq(uid).One(&userRentCard) err := NewUserRentCardQuerySet(DB).UidEq(uid).One(&userRentCard)
if err != nil && err != RecordNotFound { if err != nil && err != RecordNotFound {
@ -468,7 +474,7 @@ func OrderCardUserRentCard(uid uint32, count uint32, memberConfig *MemberConfig)
CanRentCount: uint32(memberConfig.CardMax - count), CanRentCount: uint32(memberConfig.CardMax - count),
Status: 0, Status: 0,
} }
err := DB.Create(rentCard).Error err := gdb.Create(rentCard).Error
if err != nil { if err != nil {
logger.Error("err", err) logger.Error("err", err)
return err return err
@ -476,7 +482,7 @@ func OrderCardUserRentCard(uid uint32, count uint32, memberConfig *MemberConfig)
return nil return nil
} }
sql := fmt.Sprintf("UPDATE user_rent_card SET have_rent_count=have_rent_count+%d ,can_rent_count=can_rent_count-%d WHERE uid = %d", count, count, uid) sql := fmt.Sprintf("UPDATE user_rent_card SET have_rent_count=have_rent_count+%d ,can_rent_count=can_rent_count-%d WHERE uid = %d", count, count, uid)
err = DB.Exec(sql).Error err = gdb.Exec(sql).Error
if err != nil { if err != nil {
logger.Error("err", err) logger.Error("err", err)
return err return err

View File

@ -75,7 +75,8 @@ func ConfigAppRouter(r gin.IRouter) {
user.POST("user_info/tel", controller.UserTel) // 获取用户手机号 user.POST("user_info/tel", controller.UserTel) // 获取用户手机号
user.POST("user_info/update", controller.UserInfoUpdate) // 修改用户信息 user.POST("user_info/update", controller.UserInfoUpdate) // 修改用户信息
user.POST("open_member", controller.OpenMember) // 开通会员 user.POST("open_member", controller.OpenMember) // 开通会员
user.POST("upgrade_member", controller.UpgradeMember) // 开通会员 user.POST("upgrade_member", controller.UpgradeMember) // 升级会员
user.POST("upgrade_member_info", controller.UpgradeMemberInfo) // 升级详情
user.POST("pay_deposit", controller.PayDeposit) // 支付押金 user.POST("pay_deposit", controller.PayDeposit) // 支付押金
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) // 押金记录
@ -126,14 +127,14 @@ func ConfigAppRouter(r gin.IRouter) {
order.POST("express", controller.OrderExpress) // 订单物流 order.POST("express", controller.OrderExpress) // 订单物流
order.POST("express_company/list", controller.ExpressCompanyList) // 物流公司列表 order.POST("express_company/list", controller.ExpressCompanyList) // 物流公司列表
order.POST("order/wx_pay/success", controller.WXPaySuccess) // 微信支付成功 order.POST("order/wx_pay/success", controller.WXPaySuccess) // 微信支付成功
order.POST("cancel", controller.OrderCancel) // 订单取消 order.POST("cancel", controller.OrderCancel) // 取消租卡
order.Use(auth.UserAccessAuth) // TODO order.Use(auth.UserAccessAuth) // TODO
order.POST("create", controller.RentCardOrderCreate) // 创建租卡 order.POST("create", controller.RentCardOrderCreate) // 创建租卡
order.POST("pay", controller.OrderPay) // 租卡订单支付 order.POST("pay", controller.OrderPay) // 租卡订单支付
order.POST("list", controller.RentCardOrderList) // 租卡订单列表 order.POST("list", controller.RentCardOrderList) // 租卡订单列表
order.POST("revert", controller.OrderRevert) // 租卡订单归还 order.POST("revert", controller.OrderRevert) // 租卡订单归还
order.POST("revert/cancel", controller.OrderRevertCancel) // 租卡订单取消归还 order.POST("revert/cancel", controller.OrderRevertCancel) // 取消归还
//order.POST("express_fee/refund", controller.ExpressFeeRefund) // 物流费退款 //order.POST("express_fee/refund", controller.ExpressFeeRefund) // 物流费退款
order.POST("confirm_receipt", controller.ConfirmReceipt) // 订单确认收货 order.POST("confirm_receipt", controller.ConfirmReceipt) // 订单确认收货