|
|
|
@ -9,10 +9,14 @@ import (
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
"log"
|
|
|
|
|
"path"
|
|
|
|
|
"recook/internal/dbc"
|
|
|
|
|
"recook/internal/libs/bean"
|
|
|
|
|
order4 "recook/internal/model/order"
|
|
|
|
|
"recook/internal/v2/lib/supply"
|
|
|
|
|
after2 "recook/internal/v2/logic/manage/after"
|
|
|
|
|
"recook/internal/v2/model/recook/after"
|
|
|
|
|
"recook/internal/v2/model/recook/goods"
|
|
|
|
|
manage3 "recook/internal/v2/model/recook/manage"
|
|
|
|
|
manage2 "recook/internal/v2/model/recook/order"
|
|
|
|
|
manage "recook/internal/v2/model/third"
|
|
|
|
|
"recook/tools"
|
|
|
|
@ -743,17 +747,17 @@ func (s *supplyLogic) SyncData(skuIds []uint) error {
|
|
|
|
|
// OrderSplit @Title 拆单
|
|
|
|
|
func (s *supplyLogic) OrderSplit(orderSplit supply.OrderSplit) error {
|
|
|
|
|
var orderInfo manage2.RecookOrderInfoModel
|
|
|
|
|
mysql.Db.Preload("OrderSku").First(&orderInfo, "third_party_order_sn = ?", orderSplit.OrderSn)
|
|
|
|
|
mysql.Db.Preload("OrderSku").First(&orderInfo, "third_party_order_sn = ? and third_party_type = ?", orderSplit.OrderSn, goods.RecookGoodsInfoThirdPartyTypeSupply)
|
|
|
|
|
if orderInfo.Id > 0 {
|
|
|
|
|
log.Println("重复拆单请求")
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
var parentOrderInfo manage2.RecookOrderInfoModel
|
|
|
|
|
if err := mysql.Db.Preload("OrderSku").First(&parentOrderInfo, "third_party_order_sn = ?", orderSplit.ParentOrderSn).Error; err != nil {
|
|
|
|
|
if err := mysql.Db.Preload("OrderSku").First(&parentOrderInfo, "third_party_order_sn = ? and third_party_type = ?", orderSplit.ParentOrderSn, goods.RecookGoodsInfoThirdPartyTypeSupply).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
var rod manage2.RecookOrderInfoModel
|
|
|
|
|
if err := mysql.Db.Preload("OrderSku").First(&rod, "third_party_order_sn = ?", orderSplit.RootOrderSn).Error; err != nil {
|
|
|
|
|
if err := mysql.Db.Preload("OrderSku").First(&rod, "third_party_order_sn = ? and third_party_type = ?", orderSplit.RootOrderSn, goods.RecookGoodsInfoThirdPartyTypeSupply).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
return mysql.Db.Transaction(func(tx *gorm.DB) error {
|
|
|
|
@ -902,3 +906,102 @@ func (s *supplyLogic) OrderSplit(orderSplit supply.OrderSplit) error {
|
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// OrderCancel @Title 订单取消
|
|
|
|
|
func (s *supplyLogic) OrderCancel(orderCancel supply.OrderCancel) error {
|
|
|
|
|
var orderInfo manage2.RecookOrderInfoModel
|
|
|
|
|
if err := mysql.Db.First(&orderInfo, "third_party_order_sn = ? and third_party_type = ?", orderCancel.OrderSn, goods.RecookGoodsInfoThirdPartyTypeSupply).Error; err != nil {
|
|
|
|
|
if err != gorm.ErrRecordNotFound {
|
|
|
|
|
log.Println(err.Error())
|
|
|
|
|
return err
|
|
|
|
|
} else {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
switch orderCancel.Status {
|
|
|
|
|
case supply.OrderCancelSuccess: // 取消成功
|
|
|
|
|
if orderInfo.Status == 0 {
|
|
|
|
|
// 未支付订单直接取消
|
|
|
|
|
return nil
|
|
|
|
|
} else {
|
|
|
|
|
tx := dbc.DB.Begin()
|
|
|
|
|
{
|
|
|
|
|
var asGoods []after.RecookAfterSalesGoodsModel
|
|
|
|
|
tx.Find(&asGoods, "order_id = ?", orderInfo.Id)
|
|
|
|
|
for _, v := range asGoods {
|
|
|
|
|
if v.RefundStatus == 1 {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
t := &after2.UpdateOrderCheckStatusReq{
|
|
|
|
|
AsID: v.Id,
|
|
|
|
|
}
|
|
|
|
|
if err := after2.Refund(tx, v, orderInfo, t, manage3.RecookManageUserInfoModel{}); err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Model(orderInfo).Update("deal_status", 11).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
tx.Commit()
|
|
|
|
|
}
|
|
|
|
|
case supply.OrderCancelFail: // 取消失败
|
|
|
|
|
tx := dbc.DB.Begin()
|
|
|
|
|
{
|
|
|
|
|
orderInfo.DealStatus = 12
|
|
|
|
|
if err := tx.Save(&orderInfo).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var asGoods []after.RecookAfterSalesGoodsModel
|
|
|
|
|
if err := tx.Find(&asGoods, "order_id = ?", orderInfo.Id).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, v := range asGoods {
|
|
|
|
|
if err := tx.Model(v).Updates(after.RecookAfterSalesGoodsModel{
|
|
|
|
|
ReturnStatus: 2,
|
|
|
|
|
RejectReason: "系统自动拒绝",
|
|
|
|
|
FinishTime: formatime.NewSecondNow(),
|
|
|
|
|
}).Error; err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := tx.Model(&manage2.RecookOrderGoodsDetailModel{Id: v.OrderGoodsId}).Updates(map[string]interface{}{
|
|
|
|
|
"ass_type": 0,
|
|
|
|
|
}).Error; err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//这里插入日志
|
|
|
|
|
Log1 := after.RecookAfterSalesLogsModel{
|
|
|
|
|
AsID: v.Id,
|
|
|
|
|
Title: "平台拒绝退款",
|
|
|
|
|
Content: "拒绝买家退款申请,如有疑问,请联系客服",
|
|
|
|
|
CTime: formatime.NewSecondNow(),
|
|
|
|
|
User: "系统",
|
|
|
|
|
UserId: 0,
|
|
|
|
|
}
|
|
|
|
|
tx.Create(&Log1)
|
|
|
|
|
Log2 := after.RecookAfterSalesLogsModel{
|
|
|
|
|
AsID: v.Id,
|
|
|
|
|
Title: "退款关闭",
|
|
|
|
|
Content: "系统自动关闭",
|
|
|
|
|
CTime: formatime.NewSecondNow(),
|
|
|
|
|
User: "系统",
|
|
|
|
|
UserId: 0,
|
|
|
|
|
}
|
|
|
|
|
tx.Create(&Log2)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tx.Commit()
|
|
|
|
|
case supply.OrderCancelReject: // 拒收/商家主动取消case supply.
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|