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
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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