This commit is contained in:
li 2022-04-23 15:47:13 +08:00
parent 1ed696a93b
commit 95c7e963bc
6 changed files with 535 additions and 260 deletions

View File

@ -253,11 +253,12 @@ func PushWXPayNotice(c *gin.Context) {
RespBodyXML(c, ret)
return
}
fundRecord := new(model.FundRecord)
if notify.Attach == wxpay.WxPayRentCard {
logger.Info("租借游戏卡 支付成功:")
var order model.Order
err := model.NewOrderQuerySet(model.DB).OrderSnEq(notify.OutTradeNo).PayStatusEq(PayStatusUnPay).CardStatusNe(OrderCardStatusCancel).One(&order)
err := model.NewOrderQuerySet(model.DB).OrderSnEq(notify.OutTradeNo).
PayStatusEq(PayStatusUnPay).CardStatusNe(OrderCardStatusCancel).One(&order)
if err != nil {
logger.Error("err:", err)
return
@ -337,6 +338,9 @@ func PushWXPayNotice(c *gin.Context) {
return
}
go model.ShoppingCartCreateOrderByOrder(order)
fundRecord.Uid = uint32(order.Uid)
fundRecord.FundType = model.FundTypeExpressFee
//count, err := model.NewOrderQuerySet(model.DB).UidEq(order.Uid).IDEq(order.ID).Count()
//if err != nil {
// logger.Error("err:", err)
@ -360,6 +364,18 @@ func PushWXPayNotice(c *gin.Context) {
if err != nil {
logger.Error("err:", err)
}
remark := ""
if record.MemberLevel == 2 {
remark = "黄金会员费"
} else if record.MemberLevel == 4 {
remark = "白金会员费"
} else if record.MemberLevel == 5 {
remark = "黑金会员费"
}
fundRecord.Uid = uint32(record.Uid)
fundRecord.FundType = model.FundTypeMemberFee
fundRecord.Remark = remark
var user model.User
err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
if err != nil {
@ -397,7 +413,7 @@ func PushWXPayNotice(c *gin.Context) {
}
var invite model.UserInvite
err = model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).One(&invite)
err = model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).OrderDescByID().Limit(1).One(&invite)
if err != nil && err != model.RecordNotFound {
logger.Error("err:", err)
} else {
@ -446,10 +462,22 @@ func PushWXPayNotice(c *gin.Context) {
logger.Error("send user vm err:", err)
}
}
err = model.SendUserVm(user.Uid, record.MemberLevel, 0)
if err != nil {
logger.Error("send user vm err:", err)
}
openMemberChannel := model.OpenMemberChannelUserInvite
if inviteUser.UserType == 2 {
openMemberChannel = model.OpenMemberChannelStorePromotion
}
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().
SetOpenMemberChannel(openMemberChannel).UpdateNum()
if err != nil {
logger.Error("err:", err)
return
}
}
}
}
@ -493,6 +521,18 @@ func PushWXPayNotice(c *gin.Context) {
return
}
remark := ""
if user.MemberLevel == 2 {
remark = "黄金会员押金"
} else if user.MemberLevel == 4 {
remark = "白金会员押金"
} else if user.MemberLevel == 5 {
remark = "黑金会员押金"
}
fundRecord.Uid = uint32(record.Uid)
fundRecord.FundType = model.FundTypeMemberDeposit
fundRecord.Remark = remark
num, err := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetDeposit(memberConfig.MemberDeposit).UpdateNum()
if err != nil {
logger.Error("update deposit err:", err)
@ -522,6 +562,10 @@ func PushWXPayNotice(c *gin.Context) {
if err != nil {
logger.Error("err:", err)
}
fundRecord.Uid = uint32(goodsOrder.Uid)
fundRecord.FundType = model.FundTypeExpressFee
fundRecord.Remark = "积分兑换快递费"
} else if notify.Attach == wxpay.WxPayUpgradeMember {
record := &model.UserOpenMemberRecord{OpenNo: notify.OutTradeNo}
err := record.GetByOpenNo()
@ -564,6 +608,10 @@ func PushWXPayNotice(c *gin.Context) {
}
model.CreateUserRentCardByMemberLevel(record.Uid, record.MemberLevel, memberConfig.CardMax)
fundRecord.Uid = uint32(record.Uid)
fundRecord.FundType = model.FundTypeUpgradeMember
fundRecord.Remark = "升级会员"
} else if notify.Attach == wxpay.WxPayMemberExpireDelay {
record := &model.UserOpenMemberRecord{OpenNo: notify.OutTradeNo}
err := record.GetByOpenNo()
@ -584,6 +632,9 @@ func PushWXPayNotice(c *gin.Context) {
logger.Error("err:", err)
return
}
fundRecord.Uid = uint32(record.Uid)
fundRecord.FundType = model.FundTypeMemberExpireDelay
fundRecord.Remark = "会员过期滞纳金"
} else if notify.Attach == wxpay.WxPayShareCardRetrieve {
record := &model.UserOpenMemberRecord{OpenNo: notify.OutTradeNo}
err := record.GetByOpenNo()
@ -608,8 +659,19 @@ func PushWXPayNotice(c *gin.Context) {
if err != nil {
logger.Error("update pay state err:", err)
}
fundRecord.Uid = uint32(record.Uid)
fundRecord.FundType = model.FundTypeExpressFee
fundRecord.Remark = "共享卡收回卡快递费"
}
fundRecord.Amount = int64(notify.TotalFee)
fundRecord.TransactionId = notify.TransactionId
fundRecord.OutTradeNo = notify.OutTradeNo
fundRecord.Status = 2
err = model.DB.Create(&fundRecord).Error
if err != nil {
logger.Error("create fund record err:", err)
}
logger.Debug("微信推动支付通知")
ret.ReturnCode = "SUCCESS"
RespBodyXML(c, ret)

View File

@ -335,10 +335,24 @@ func RentCardOrderCreate(c *gin.Context) {
RespJson(c, status.OrderStockOut, nil)
return
}
go func() {
if user.OpenMemberChannel == model.OpenMemberChannelStorePromotion {
go func() {
exist, err := model.QueryRecordExist(fmt.Sprintf("SELECT * FROM `order` WHERE uid = %d", uc.Uid))
if err != nil {
logger.Error("order exist err:", err)
return
}
}()
fmt.Println("PayPrice:", order.PayPrice)
if !exist && user.OpenMemberTime.Format(model.DateTimeFormat) == time.Now().Format(model.DateTimeFormat) {
_, err = model.NewUserQuerySet(model.DB).UidEq(uc.Uid).GetUpdater().SetStoreId(uint64(req.StoreId)).UpdateNum()
if err != nil {
logger.Error("update user err:", err)
}
}
}()
}
//fmt.Println("PayPrice:", order.PayPrice)
if req.Price == 0 {
tx := model.TransactionBegin()
order.PayStatus = model.PayStatusPaid

File diff suppressed because it is too large Load Diff

View File

@ -120,6 +120,7 @@ func InitTestDB() {
//&GameShareCardVm{},
&GameCard{},
&FundRecord{},
)
fmt.Println("DB init success")

View File

@ -829,6 +829,18 @@ func (m *Order) CreatOrderCard(cards []CardInfo, storeId uint32, gdb *gorm.DB) e
return nil
}
func QueryRecordExist(sql string) {
DB.Where("").Count("")
type RecordExist struct {
RecordExist int64 `json:"record_exist"`
}
func QueryRecordExist(sql string) (bool, error) {
var recordExist RecordExist
existSql := fmt.Sprintf("SELECT EXISTS (%s) AS record_exist;", sql)
err := DB.Raw(existSql).Scan(&recordExist).Error
if err != nil {
logger.Error("err:", err)
return false, err
}
return recordExist.RecordExist == 1, nil
}

View File

@ -65,7 +65,7 @@ const (
TimeFormat = "2006-01-02 15:04:05"
)
const (
OpenMemberChannelStorePromotion = "store_promotion"
OpenMemberChannelStorePromotion = "store_promotion" // 门店推荐
OpenMemberChannelUserInvite = "user_invite"
OpenMemberChannelRedeemCode = "redeem_code"
)
@ -107,26 +107,32 @@ type DepositRefundRecord struct {
User User `json:"user" gorm:"-"`
}
// 黄金会员 member_gold 白金会员 member_platinum 黑金会员 member_black_gold
// member_gold_deposit member_platinum_deposit member_black_gold_platinum
// express_fee
const (
UserConsumeTypeMemberGold = "member_gold"
UserConsumeTypeMemberPlatinum = "member_platinum"
UserConsumeTypeMemberBlackGold = "member_black_gold"
UserConsumeTypeMemberGoldDeposit = "member_gold_deposit"
UserConsumeTypeMemberPlatinumDeposit = "member_platinum_deposit"
UserConsumeTypeMemberBlackGoldDeposit = "member_black_gold_platinum"
UserConsumeTypeExpressFee = "express_fee"
FundTypeMemberFee = "member_fee"
FundTypeMemberDeposit = "member_deposit"
//FundTypeMemberGold = "member_gold" // 黄金会员
//FundTypeMemberPlatinum = "member_platinum" // 白金会员
//FundTypeMemberBlackGold = "member_black_gold" // 黑金会员
//FundTypeMemberGoldDeposit = "member_gold_deposit" // 黄金会员押金
//FundTypeMemberPlatinumDeposit = "member_platinum_deposit" // 白金会员押金
//FundTypeMemberBlackGoldDeposit = "member_black_gold_platinum" // 黑金会员押金
FundTypeExpressFee = "express_fee" // 邮费
FundTypeUpgradeMember = "upgrade_member" // 升级会员
FundTypeMemberExpireDelay = "member_expire_delay" // 滞纳金
)
// gen:qs
type UserConsumeRecord struct {
type FundRecord struct {
Model
Uid uint32 `json:"uid"`
ConsumeType string `json:"consume_type"` // 黄金会员 member_gold 白金会员 member_platinum 黑金会员 member_black_gold
Amount uint32 `json:"amount"`
Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款
Uid uint32 `json:"uid"`
FundType string `json:"fund_type"` // -member_gold -member_platinum -member_black_gold
Amount int64 `json:"amount"`
TransactionId string `json:"transaction_id"` // 支付单号
OutTradeNo string `json:"out_trade_no"`
Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款
Remark string `json:"remark"` // 备注
}
// gen:qs