修改售后

This commit is contained in:
邹宗楠
2023-04-11 17:16:12 +08:00
parent d39d080882
commit daea96600a
2 changed files with 49 additions and 5 deletions

View File

@@ -330,8 +330,9 @@ func (c *OrderManager) updateAfsOrderOtherInfo(db *dao.DaoDB, afsOrder *model.Af
afsOrder.JxStoreID = storeDetail.Store.ID afsOrder.JxStoreID = storeDetail.Store.ID
} }
} }
order, err2 := c.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID)
if afsOrder.StoreID == 0 && afsOrder.JxStoreID == 0 { if afsOrder.StoreID == 0 && afsOrder.JxStoreID == 0 {
if order, err2 := c.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); err2 == nil { if err2 == nil {
afsOrder.JxStoreID = order.JxStoreID afsOrder.JxStoreID = order.JxStoreID
if afsOrder.StoreID == 0 { if afsOrder.StoreID == 0 {
afsOrder.StoreID = order.StoreID afsOrder.StoreID = order.StoreID
@@ -349,6 +350,9 @@ func (c *OrderManager) updateAfsOrderOtherInfo(db *dao.DaoDB, afsOrder *model.Af
} }
if err = c.updateAfsOrderSkuOtherInfo(db, afsOrder); err == nil { if err = c.updateAfsOrderSkuOtherInfo(db, afsOrder); err == nil {
jxutils.RefreshAfsOrderSkuRelated(afsOrder) jxutils.RefreshAfsOrderSkuRelated(afsOrder)
if afsOrder.RefundType == model.AfsTypeFullRefund && afsOrder.VendorID == model.VendorIDJX && order.DeliveryType != model.OrderDeliveryTypeSelfTake {
afsOrder.SkuUserMoney += order.ActualPayPrice
}
} }
} }
return err return err
@@ -371,9 +375,9 @@ func (c *OrderManager) setAfsOrderID(db *dao.DaoDB, orderStatus *model.OrderStat
list := strings.Split(afsOrderList[0].AfsOrderID, "-") list := strings.Split(afsOrderList[0].AfsOrderID, "-")
if len(list) > 1 { if len(list) > 1 {
index = int(utils.Str2Int64WithDefault(list[1], 0)) index = int(utils.Str2Int64WithDefault(list[1], 0))
if afsOrderList[0].Status >= model.AfsOrderStatusFinished { //if afsOrderList[0].Status >= model.AfsOrderStatusFinished {
index++ index++
} //}
} }
} }
} else { } else {

View File

@@ -1,7 +1,9 @@
package phpjx package phpjx
import ( import (
"fmt"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"strings"
"time" "time"
"git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/jdapi"
@@ -40,9 +42,36 @@ func OnAfsOrderMsg(msg *CallbackMsg) (err error) {
return err return err
} }
func CheckOrderSkuCanRefund(db *dao.DaoDB, afsOrder *Data4AfsOrder) error {
// 获取此订单商品吃否存在售后单
refundFinancial, err := dao.GetStoreAfsOrderSkuList2(db, []string{afsOrder.VendorOrderID})
if err != nil && !strings.Contains(err.Error(), "no row found") {
return err
}
if len(refundFinancial) == model.NO {
return nil
}
for _, r := range refundFinancial {
for _, s := range afsOrder.Skus {
if r.SkuID == utils.Str2Int(s.VendorSkuID) {
return fmt.Errorf("商品:[%s],已经存在售后单无法重复申请", s.Name)
}
}
}
return nil
}
func buildAfsOrder(msg *CallbackMsg) (outAfsOrder *model.AfsOrder, err error) { func buildAfsOrder(msg *CallbackMsg) (outAfsOrder *model.AfsOrder, err error) {
var afsOrder *Data4AfsOrder var afsOrder *Data4AfsOrder
var db = dao.GetDB()
if err = utils.UnmarshalUseNumber([]byte(msg.Data), &afsOrder); err == nil { if err = utils.UnmarshalUseNumber([]byte(msg.Data), &afsOrder); err == nil {
if err := CheckOrderSkuCanRefund(db, afsOrder); err != nil {
return nil, err
}
outAfsOrder = &model.AfsOrder{ outAfsOrder = &model.AfsOrder{
VendorID: model.VendorIDJX, VendorID: model.VendorIDJX,
AfsOrderID: afsOrder.AfsOrderID, AfsOrderID: afsOrder.AfsOrderID,
@@ -65,6 +94,7 @@ func buildAfsOrder(msg *CallbackMsg) (outAfsOrder *model.AfsOrder, err error) {
skuNumber := 0 // 申请退款商品种类个数 skuNumber := 0 // 申请退款商品种类个数
skuCount := 0 // 申请商品退款总条数 skuCount := 0 // 申请商品退款总条数
refundMoney := 0 refundMoney := 0
// 当前申请退款的商品
for _, x := range afsOrder.Skus { for _, x := range afsOrder.Skus {
orderSku := &model.OrderSkuFinancial{ orderSku := &model.OrderSkuFinancial{
Count: x.Count, Count: x.Count,
@@ -81,8 +111,18 @@ func buildAfsOrder(msg *CallbackMsg) (outAfsOrder *model.AfsOrder, err error) {
skuNumber++ skuNumber++
refundMoney += x.Count * int(x.SalePrice) refundMoney += x.Count * int(x.SalePrice)
} }
// 已经退款商品
refundFinancial, err := dao.GetStoreAfsOrderSkuList2(db, []string{afsOrder.VendorOrderID})
if err != nil && !dao.IsNoRowsError(err) {
return nil, err
}
for _, f := range refundFinancial {
skuCount += f.Count
skuNumber++
refundMoney += f.Count * int(f.SalePrice)
}
// 获取订单商品列表 // 获取订单商品列表(所有的订单商品)
skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), afsOrder.VendorOrderID, nil) skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), afsOrder.VendorOrderID, nil)
if err != nil { if err != nil {
return nil, err return nil, err