fix:
This commit is contained in:
parent
75b20230c6
commit
2c672c795f
|
@ -4,6 +4,7 @@ import (
|
|||
"crypto/md5"
|
||||
"encoding/json"
|
||||
"encoding/xml"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
|
@ -237,7 +238,6 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
ReturnCode: "FAIL",
|
||||
}
|
||||
correctSign, err := PayCallBackHandle(notify, config.AppConfig.WxMchSecret)
|
||||
|
||||
if err != nil {
|
||||
logger.Error("PushWXPayNotice sign create fail")
|
||||
RespBodyXML(c, ret)
|
||||
|
@ -280,6 +280,49 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
// 库存不足取消订单
|
||||
orderSn := model.GetOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uint32(order.Uid), OpenNo: orderSn, OrderId: order.ID, OrderType: 2}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
//RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
orderRefund := wxpay.OrderRefund{
|
||||
//OutTradeNo: outTradeNo,
|
||||
OutTradeNo: notify.OutTradeNo,
|
||||
OutRefundNo: orderSn,
|
||||
NotifyUrl: "",
|
||||
Amount: wxpay.OrderRefundAmount{
|
||||
Refund: order.PayPrice,
|
||||
Total: order.PayPrice,
|
||||
Currency: "CNY",
|
||||
},
|
||||
}
|
||||
bytes, _ := json.Marshal(order)
|
||||
fmt.Println("订单取消:", string(bytes))
|
||||
orderRefundJson, _ := json.Marshal(&orderRefund)
|
||||
fmt.Println("订单取消 orderRefundJson:", string(orderRefundJson))
|
||||
//err = wxpay.WxPayOrderRefund(orderRefund)
|
||||
err = wxpay.TransactionOrderRefund(orderRefund)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
//RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
_, err := model.NewOrderQuerySet(model.DB).IDEq(order.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
_, err = model.NewOrderCardQuerySet(model.DB).OrderIdEq(order.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
|
|
|
@ -92,7 +92,7 @@ func OrderInfo(c *gin.Context) {
|
|||
//OrderId uint32 `json:"order_id"`
|
||||
//GameCardId uint64 `json:"game_card_id"` // 游戏id
|
||||
//GameCardGoodsId uint64 `json:"game_card_goods_id" ` // 游戏卡id
|
||||
OrderCardId uint32 `json:"order_card_id"`
|
||||
OrderCardId uint32 `json:"order_card_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
|
@ -860,13 +860,13 @@ func OrderCancel(c *gin.Context) {
|
|||
fmt.Println("OrderId:", order.ID)
|
||||
//order := &model.Order{}
|
||||
//order.ID = req.OrderId
|
||||
isRecede, err := order.Cancel()
|
||||
isRecede, orderInfo, err := order.Cancel()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.OrderDelivered, nil)
|
||||
return
|
||||
}
|
||||
|
||||
order = orderInfo
|
||||
fmt.Println("order:", order)
|
||||
if isRecede {
|
||||
|
||||
|
@ -897,6 +897,8 @@ func OrderCancel(c *gin.Context) {
|
|||
}
|
||||
bytes, _ := json.Marshal(order)
|
||||
fmt.Println("订单取消:", string(bytes))
|
||||
orderRefundJson, _ := json.Marshal(&orderRefund)
|
||||
fmt.Println("订单取消 orderRefundJson:", string(orderRefundJson))
|
||||
//err = wxpay.WxPayOrderRefund(orderRefund)
|
||||
err = wxpay.TransactionOrderRefund(orderRefund)
|
||||
if err != nil {
|
||||
|
|
|
@ -243,7 +243,7 @@ func OpenMember(c *gin.Context) {
|
|||
|
||||
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", memberConfig.MemberFee, memberConfig.MemberDeposit)
|
||||
|
||||
totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
|
||||
totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit - user.Deposit
|
||||
if user.Deposit == memberConfig.MemberDeposit {
|
||||
totalFee = memberConfig.MemberFee
|
||||
}
|
||||
|
|
2
go.mod
2
go.mod
|
@ -20,5 +20,5 @@ require (
|
|||
github.com/spf13/viper v1.7.1
|
||||
github.com/wechatpay-apiv3/wechatpay-go v0.2.6
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
|
||||
qiniupkg.com/x v7.0.8+incompatible
|
||||
qiniupkg.com/x v7.0.8+incompatible // indirect
|
||||
)
|
||||
|
|
|
@ -19,5 +19,6 @@ func TestExpressInfo(t *testing.T) {
|
|||
//paramJson, _ := json.Marshal(paramMap)
|
||||
//fmt.Println("paramJson:", string(paramJson))
|
||||
|
||||
ExpressInfo("zhongtong","73155364431352")
|
||||
//ExpressInfo("zhongtong","73155364431352")
|
||||
ExpressInfo("emsbg","9868015085913")
|
||||
}
|
||||
|
|
|
@ -34,10 +34,10 @@ const (
|
|||
//wxPayNotifyUrl = "api/v1/wxpay/notice"
|
||||
wxPayNotifyUrl = "/api/v1/wxpay/notice"
|
||||
|
||||
WxPayMember = "member_pay" // 会员
|
||||
WxPayRentCard = "rent_card_pay" // 租卡
|
||||
WxPayDeposit = "deposit_pay" // 押金
|
||||
WxPayUpgradeMember = "upgrade_member" // 押金
|
||||
WxPayMember = "member_pay" // 会员
|
||||
WxPayRentCard = "rent_card_pay" // 租卡
|
||||
WxPayDeposit = "deposit_pay" // 押金
|
||||
WxPayUpgradeMember = "upgrade_member" // 押金
|
||||
|
||||
//NotifyUrl = "https://switch.deovo.com:8001/api/v1/wxpay/notice" // TODO 数据库配置 生产
|
||||
//NotifyUrl = "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice" // TODO 测试
|
||||
|
@ -244,11 +244,11 @@ type (
|
|||
|
||||
CouponFee1 uint `xml:"coupon_fee_1,CDATA" json:"coupon_fee_1"`
|
||||
CouponId1 string `xml:"coupon_id_1,CDATA" json:"coupon_id_1"`
|
||||
CouponFee2 uint `xml:"coupon_fee_2,CDATA" json:"coupon_fee_2"`
|
||||
CouponFee2 uint `xml:"coupon_fee_2,CDATA" json:"coupon_fee_2"`
|
||||
CouponId2 string `xml:"coupon_id_2,CDATA" json:"coupon_id_2"`
|
||||
CouponFee3 uint `xml:"coupon_fee_3,CDATA" json:"coupon_fee_3"`
|
||||
CouponFee3 uint `xml:"coupon_fee_3,CDATA" json:"coupon_fee_3"`
|
||||
CouponId3 string `xml:"coupon_id_3,CDATA" json:"coupon_id_3"`
|
||||
CouponFee4 uint `xml:"coupon_fee_4,CDATA" json:"coupon_fee_4"`
|
||||
CouponFee4 uint `xml:"coupon_fee_4,CDATA" json:"coupon_fee_4"`
|
||||
CouponId4 string `xml:"coupon_id_4,CDATA" json:"coupon_id_4"`
|
||||
|
||||
TransactionId string `xml:"transaction_id,CDATA" json:"transaction_id"`
|
||||
|
|
|
@ -61,6 +61,8 @@ type Order struct {
|
|||
RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长
|
||||
OutTradeNo string `json:"out_trade_no"` // 支付订单
|
||||
Mchid string `json:"mchid"` // 商户
|
||||
|
||||
OrderCardId uint32 `json:"order_card_id" gorm:"-"` //
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
|
@ -287,7 +289,9 @@ func (m *Order) Revert() error {
|
|||
//}
|
||||
fmt.Println("GameCardGoodsId------:", m.GameCardGoodsId)
|
||||
fmt.Println("ID------:", m.ID)
|
||||
err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
|
||||
fmt.Println("OrderCardId------:", m.OrderCardId)
|
||||
err := NewOrderCardQuerySet(DB).IDEq(m.OrderCardId).One(&orderCard)
|
||||
//err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
|
||||
if err != nil {
|
||||
logger.Errorf("err:%#v", err)
|
||||
return err
|
||||
|
@ -315,7 +319,8 @@ func (m *Order) Revert() error {
|
|||
//order.RevertExpressCompanyNo = m.RevertExpressCompanyNo
|
||||
//order.RevertExpressNo = m.RevertExpressNo
|
||||
|
||||
_, err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).GetUpdater().
|
||||
_, err = NewOrderCardQuerySet(DB).IDEq(m.OrderCardId).GetUpdater().
|
||||
//_, err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).GetUpdater().
|
||||
SetCardStatus(OrderCardStatusReturning).
|
||||
SetRevertTime(time.Now()).
|
||||
SetRevertStoreId(m.RevertStoreId).
|
||||
|
@ -353,7 +358,8 @@ func (m *Order) RevertCancel() (bool, error) {
|
|||
// logger.Error("order card status completed")
|
||||
// return false, errors.New("order card status completed")
|
||||
//}
|
||||
err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
|
||||
err := NewOrderCardQuerySet(DB).IDEq(m.OrderCardId).One(&orderCard)
|
||||
//err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
|
||||
if err != nil {
|
||||
logger.Errorf("err:%#v", err)
|
||||
return false, err
|
||||
|
@ -379,7 +385,8 @@ func (m *Order) RevertCancel() (bool, error) {
|
|||
//order.RevertExpressCompany = m.RevertExpressCompany
|
||||
//order.RevertExpressCompanyNo = m.RevertExpressCompanyNo
|
||||
//order.RevertExpressNo = m.RevertExpressNo
|
||||
_, err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).GetUpdater().
|
||||
_, err = NewOrderCardQuerySet(DB).IDEq(m.OrderCardId).GetUpdater().
|
||||
//_, err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).GetUpdater().
|
||||
SetCardStatus(OrderCardStatusPlaying).
|
||||
//SetRevertTime(time.Time{}).
|
||||
SetRevertStoreId(0).
|
||||
|
@ -530,7 +537,7 @@ func GetPickupCode() string {
|
|||
|
||||
}
|
||||
|
||||
func (m *Order) Cancel() (bool, error) {
|
||||
func (m *Order) Cancel() (bool, Order, error) {
|
||||
var (
|
||||
order Order
|
||||
orderCard OrderCard
|
||||
|
@ -538,20 +545,24 @@ func (m *Order) Cancel() (bool, error) {
|
|||
err := NewOrderQuerySet(DB).IDEq(m.ID).One(&order)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return false, err
|
||||
return false, order, 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).GameCardIdEq(uint32(m.GameCardId)).CardStatusEq(OrderCardStatusUnPick).Limit(1).One(&orderCard)
|
||||
err = NewOrderCardQuerySet(DB).IDEq(m.OrderCardId).One(&orderCard)
|
||||
//err = NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardIdEq(uint32(m.GameCardId)).CardStatusEq(OrderCardStatusUnPick).Limit(1).One(&orderCard)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Errorf("err:%#v", err)
|
||||
return false, err
|
||||
return false, order, err
|
||||
}
|
||||
if err == RecordNotFound {
|
||||
logger.Error("order card status not unpick")
|
||||
return false, errors.New("order card status not unpick")
|
||||
return false, order, errors.New("order card status not unpick")
|
||||
}
|
||||
if orderCard.CardStatus != OrderCardStatusUnPick {
|
||||
logger.Error("order card status not unpick")
|
||||
return false, order, errors.New("order card status not unpick")
|
||||
}
|
||||
//if userOrder.CardStatus != OrderCardStatusUnPick {
|
||||
// logger.Error("card status not unpick err: ")
|
||||
|
@ -584,7 +595,7 @@ func (m *Order) Cancel() (bool, error) {
|
|||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return false, err
|
||||
return false, order, err
|
||||
}
|
||||
sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock+1 WHERE store_id=%d AND game_card_id=%d;", orderCard.StoreId, orderCard.GameCardId)
|
||||
fmt.Println("sql:", sql)
|
||||
|
@ -592,7 +603,7 @@ func (m *Order) Cancel() (bool, error) {
|
|||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Errorf("err:%#v", err)
|
||||
return false, err
|
||||
return false, order, 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)
|
||||
|
@ -601,24 +612,24 @@ func (m *Order) Cancel() (bool, error) {
|
|||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Errorf("err:%#v", err)
|
||||
return false, err
|
||||
return false, order, err
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Errorf("err:%#v", err)
|
||||
return false, err
|
||||
return false, order, err
|
||||
}
|
||||
isHaveOnDeliver, err := IsHaveOnDeliverOrderCards(m.ID)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return false, err
|
||||
return false, order, err
|
||||
}
|
||||
if !isHaveOnDeliver {
|
||||
err = NewOrderQuerySet(DB).IDEq(order.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).Update()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return false, err
|
||||
return false, order, err
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -628,9 +639,10 @@ func (m *Order) Cancel() (bool, error) {
|
|||
isRecede = true
|
||||
}
|
||||
}
|
||||
|
||||
m = &order
|
||||
return isRecede, nil
|
||||
//m.ID = order.ID
|
||||
//m.Uid = order.Uid
|
||||
//m.PayPrice = order.PayPrice
|
||||
return isRecede, order, nil
|
||||
}
|
||||
|
||||
func UnPayOrderSetCancel(uid uint32) {
|
||||
|
@ -739,10 +751,20 @@ func (m *Order) InventoryReduction(gdb *gorm.DB) error {
|
|||
|
||||
//fmt.Println("cards:", cards)
|
||||
for i, _ := range cards {
|
||||
var gameCardGoodsStock GameCardGoodsStock
|
||||
err := NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(cards[i].GameCardId)).StoreIdEq(m.StoreId).One(&gameCardGoodsStock)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
//fmt.Println("cards:", cards[i].GameCardId, cards[i].StoreId, cards[i].Uid)
|
||||
if gameCardGoodsStock.RentStock < 1 {
|
||||
logger.Error("rent stock not enough:")
|
||||
return errors.New("rent stock not enough")
|
||||
}
|
||||
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)
|
||||
err := gdb.Exec(sql).Error
|
||||
err = gdb.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
|
|
|
@ -399,7 +399,8 @@ func (m *User) Edit() {
|
|||
|
||||
func GetWxPayExpressFeeRefundRecord(orderId uint32) (string, error) {
|
||||
var openMemberRecord UserOpenMemberRecord
|
||||
err := NewUserOpenMemberRecordQuerySet(DB).OrderIdEq(orderId).OrderTypeEq(1).OrderDescByID().Limit(1).One(&openMemberRecord)
|
||||
//err := NewUserOpenMemberRecordQuerySet(DB).OrderIdEq(orderId).OrderTypeEq(1).OrderDescByID().Limit(1).One(&openMemberRecord)
|
||||
err := NewUserOpenMemberRecordQuerySet(DB).OrderIdEq(orderId).OrderDescByID().Limit(1).One(&openMemberRecord)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return "", err
|
||||
|
|
Loading…
Reference in New Issue
Block a user