+GetOrderPay

GetOrders添加参数isPurchase
This commit is contained in:
gazebo
2019-11-27 10:05:26 +08:00
parent 4b1b011459
commit 7410da75fd
10 changed files with 121 additions and 30 deletions

View File

@@ -8,13 +8,13 @@ import (
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/partner/delivery"
"git.rosy.net.cn/jx-callback/globals"
)
const (
@@ -112,7 +112,7 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64,
outJxOrder.OrderID = GenOrderNo(ctx)
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress)
if err = err2; err == nil {
order.Status = model.OrderStatusPayed
order.Status = model.OrderStatusCreated
partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
}
}
@@ -433,29 +433,26 @@ func SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error)
func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
if order.Status < model.OrderStatusDelivering {
orderPay := &model.OrderPay{
VendorOrderID: order.VendorOrderID,
VendorID: jxutils.GetPossibleVendorIDFromVendorOrderID(order.VendorOrderID),
Status: model.PayStatusYes,
}
orderPay.DeletedAt = utils.DefaultTimeValue
db := dao.GetDB()
if err = dao.GetEntity(db, orderPay, "VendorOrderID", "VendorID", "Status", "DeletedAt"); err == nil || dao.IsNoRowsError(err) {
if err == nil {
refundID := utils.Int64ToStr(GenRefundID(order))
orderPayRefund, err2 := refundOrderByWX(ctx, orderPay, refundID)
if err = err2; err == nil {
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), orderPay)
}
} else {
if order.Status >= model.OrderStatusNew {
globals.SugarLogger.Warnf("订单:%s找不到有效的支付方式", order.VendorOrderID)
payList, err2 := dao.GetOrderPayList(db, order.VendorOrderID, jxutils.GetPossibleVendorIDFromVendorOrderID(order.VendorOrderID))
if err = err2; err == nil {
errList := errlist.New()
for _, orderPay := range payList {
if orderPay.Status == model.PayStatusYes {
refundID := utils.Int64ToStr(GenRefundID(order))
orderPayRefund, err2 := refundOrderByWX(ctx, orderPay, refundID)
if err = err2; err == nil {
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
errList.AddErr(dao.CreateEntity(dao.GetDB(), orderPay))
}
} else {
orderPay.Status = model.PayStatusCanceled
_, err2 := dao.UpdateEntity(db, orderPay)
errList.AddErr(err2)
}
}
if err == nil {
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, reason)
}
errList.AddErr(changeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, reason))
err = errList.GetErrListAsOne()
}
} else {
err = fmt.Errorf("当前订单状态:%s不允许取消", model.OrderStatusName[order.Status])
@@ -477,3 +474,9 @@ func changeOrderStatus(vendorOrderID string, status int, remark string) (err err
}
return partner.CurOrderManager.OnOrderStatusChanged(orderStatus)
}
func GetOrderPay(ctx *jxcontext.Context, vendorOrderID string) (payList []*model.OrderPay, err error) {
db := dao.GetDB()
payList, err = dao.GetOrderPayList(db, vendorOrderID, jxutils.GetPossibleVendorIDFromVendorOrderID(vendorOrderID))
return payList, err
}

View File

@@ -99,15 +99,27 @@ func onWxpayRefund(msg *wxpay.RefundResultMsg) (err error) {
db := dao.GetDB()
if err = dao.GetEntity(db, orderPayRefund, "RefundID"); err == nil {
if msg.ResultCode == wxpay.ResponseCodeSuccess {
orderPayRefund.Status = model.PayStatusYes
orderPayRefund.Status = model.RefundStatusYes
} else {
orderPayRefund.Status = model.PayStatusFailed
orderPayRefund.Status = model.RefundStatusFailed
}
orderPayRefund.OriginalData = utils.Format4Output(msg, true)
dao.UpdateEntity(db, orderPayRefund)
} else if dao.IsNoRowsError(err) {
globals.SugarLogger.Warnf("收到异常的退款事件, msg:%s", utils.Format4Output(msg, true))
}
orderPay := &model.OrderPay{
VendorOrderID: orderPayRefund.VendorOrderID,
VendorID: jxutils.GetPossibleVendorIDFromVendorOrderID(orderPayRefund.VendorOrderID),
PayType: model.PayTypeWX,
Status: model.PayStatusYes,
}
orderPay.DeletedAt = utils.DefaultTimeValue
if err = dao.GetEntity(db, orderPay, "VendorOrderID", "VendorID", "PayType", "Status", "DeletedAt"); err == nil {
orderPay.Status = model.PayStatusRefund
dao.UpdateEntity(db, orderPay)
}
return err
}
@@ -125,7 +137,7 @@ func refundOrderByWX(ctx *jxcontext.Context, orderPay *model.OrderPay, refundID
VendorRefundID: result.RefundID,
VendorOrderID: orderPay.VendorOrderID,
VendorID: orderPay.VendorID,
Status: model.PayStatusNo,
Status: model.RefundStatusNo,
TransactionID: orderPay.TransactionID,
RefundFee: orderPay.TotalFee,
RefundCreatedAt: time.Now(),