订单完成

master
kanade 3 years ago
parent 99a4833a2b
commit d954048516

@ -52,6 +52,8 @@ func (s *supplyTask) run() {
go s.orderCancel()
// 订单出库
go s.orderStockOut()
// 订单完成
go s.orderFinish()
}
// @Title 价格更新通知
@ -192,3 +194,34 @@ func (s *supplyTask) orderStockOut() {
})
})
}
// @Title 订单完成通知
func (s *supplyTask) orderFinish() {
defer func() {
if recoverErr := recover(); recoverErr != nil {
log.Println("订单完成mq错误", recoverErr)
}
time.Sleep(time.Second * 3)
s.orderFinish()
}()
pool, _ := ants.NewPool(5)
rabbitmq.Rabbitmq.Consume(supply.Api.Mq.OrderFinish(), false, 5, func(delivery amqp.Delivery) {
pool.Submit(func() {
defer func() {
if recoverErr := recover(); recoverErr != nil {
log.Println("消息队列调用错误,err:", recoverErr)
}
}()
var orderFinish supply.OrderFinish
json.Unmarshal(delivery.Body, &orderFinish)
if err := third.SupplyLogic.OrderFinish(orderFinish); err != nil {
log.Println("订单出库处理失败,skuId:", string(delivery.Body), ",err:", err)
delivery.Reject(true)
return
} else {
defer delivery.Ack(false)
}
})
})
}

@ -16,6 +16,8 @@ const (
queueOrderCancel = "supplyOrderCancel:%s"
// queueOrderStockOut 订单出库
queueOrderStockOut = "supplyOrderStockOut:%s"
// queueOrderFinish 订单出库
queueOrderFinish = "supplyOrderFinish:%s"
OrderCancelSuccess = 1 // 取消成功
OrderCancelFail = 2 // 取消失败
@ -87,6 +89,17 @@ func (m *mq) OrderStockOut() string {
return getQuesuName(queueOrderCancel)
}
type OrderFinish struct {
OrderSn string `json:"orderSn"`
ParentOrderSn string `json:"parentOrderSn"`
RootOrderSn string `json:"rootOrderSn"`
}
// OrderFinish @Title 订单完成
func (m *mq) OrderFinish() string {
return getQuesuName(queueOrderFinish)
}
// @Title 获取队列名称
func getQuesuName(queue string) string {
return fmt.Sprintf(queue, Api.Config.AppKey)

@ -1042,3 +1042,22 @@ func (s *supplyLogic) OrderStockOut(orderStockOut supply.OrderStockOut) error {
}
return nil
}
// OrderFinish @Title 订单完成
func (s *supplyLogic) OrderFinish(orderFinish supply.OrderFinish) error {
var orderInfo manage2.RecookOrderInfoModel
if err := mysql.Db.First(&orderInfo, "third_party_order_sn = ? and third_party_type = ?", orderFinish.OrderSn, goods.RecookGoodsInfoThirdPartyTypeSupply).Error; err != nil {
if err != gorm.ErrRecordNotFound {
log.Println(err.Error())
return err
} else {
return nil
}
}
if mysql.Db.Model(&orderInfo).Updates(map[string]interface{}{
"third_party_status": 1,
}).Error != nil {
return errors.New("保存失败")
}
return nil
}

Loading…
Cancel
Save