新增会员订单取消订单
This commit is contained in:
parent
98ccf380af
commit
0cb771ecbb
@ -60,7 +60,7 @@ func CancelUnPayOrder(msg amqp091.Delivery) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
utils.LogJsonErr("consumer.CouponExpire:", r)
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", r)
|
||||||
_ = msg.Reject(false)
|
_ = msg.Reject(false)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -75,7 +75,7 @@ func CancelUnPayOrder(msg amqp091.Delivery) {
|
|||||||
orderSingle, err := orderSingleDao.GetOrderSingle(maps)
|
orderSingle, err := orderSingleDao.GetOrderSingle(maps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
utils.LogJsonErr("consumer.CouponExpire:", "订单异常")
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", "订单异常")
|
||||||
_ = msg.Reject(true)
|
_ = msg.Reject(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -84,14 +84,46 @@ func CancelUnPayOrder(msg amqp091.Delivery) {
|
|||||||
res, err := orderSingleService.CancelOrderSingle(tx, orderSingle, 3)
|
res, err := orderSingleService.CancelOrderSingle(tx, orderSingle, 3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
utils.LogJsonErr("consumer.CouponExpire:", err)
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", err)
|
||||||
_ = msg.Reject(true)
|
_ = msg.Reject(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if res == false {
|
if res == false {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
utils.LogJsonErr("consumer.CouponExpire:", "取消失败")
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", "取消失败")
|
||||||
|
_ = msg.Reject(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 会员订单
|
||||||
|
if data.OrderType == 1 {
|
||||||
|
// 获取订单数据
|
||||||
|
orderMemberDao := dao.OrderMemberDao{}
|
||||||
|
maps := make(map[string]interface{})
|
||||||
|
maps["user_id"] = userId
|
||||||
|
maps["order_id"] = orderId
|
||||||
|
orderMember, err := orderMemberDao.GetOrderMember(maps)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", "订单异常")
|
||||||
|
_ = msg.Reject(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
orderMemberService := service.OrderMemberService{}
|
||||||
|
res, err := orderMemberService.CancelOrderMember(tx, orderMember, 3)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", err)
|
||||||
|
_ = msg.Reject(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if res == false {
|
||||||
|
tx.Rollback()
|
||||||
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", "取消失败")
|
||||||
_ = msg.Reject(true)
|
_ = msg.Reject(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -101,13 +133,13 @@ func CancelUnPayOrder(msg amqp091.Delivery) {
|
|||||||
if data.PayChannel == 1 {
|
if data.PayChannel == 1 {
|
||||||
// h5支付
|
// h5支付
|
||||||
err = weChat.CloseJsapiOrder(data.OrderNo)
|
err = weChat.CloseJsapiOrder(data.OrderNo)
|
||||||
utils.LogJsonErr("consumer.CouponExpire:", err)
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if data.PayChannel == 2 {
|
if data.PayChannel == 2 {
|
||||||
// app支付
|
// app支付
|
||||||
err = weChat.CloseAppOrder(data.OrderNo)
|
err = weChat.CloseAppOrder(data.OrderNo)
|
||||||
utils.LogJsonErr("consumer.CouponExpire:", err)
|
utils.LogJsonErr("consumer.CancelUnPayOrder:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tx.Commit()
|
tx.Commit()
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
"hepa-calc-api/api/dao"
|
"hepa-calc-api/api/dao"
|
||||||
"hepa-calc-api/api/model"
|
"hepa-calc-api/api/model"
|
||||||
"hepa-calc-api/config"
|
"hepa-calc-api/config"
|
||||||
|
"hepa-calc-api/extend/rabbitMq"
|
||||||
"hepa-calc-api/extend/weChat"
|
"hepa-calc-api/extend/weChat"
|
||||||
"hepa-calc-api/global"
|
"hepa-calc-api/global"
|
||||||
"hepa-calc-api/utils"
|
"hepa-calc-api/utils"
|
||||||
@ -181,12 +182,41 @@ func (r *OrderMemberService) AddOrderMember(tx *gorm.DB, UserId, SystemMemberId
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 增加未支付取消订单延迟队列
|
||||||
|
if payChannel == 1 || payChannel == 2 {
|
||||||
|
delay := 30 * time.Minute
|
||||||
|
|
||||||
|
if config.C.Env == "dev" {
|
||||||
|
delay = 1 * time.Minute
|
||||||
|
}
|
||||||
|
|
||||||
|
data := make(map[string]interface{})
|
||||||
|
data["order_id"] = fmt.Sprintf("%d", orderMember.OrderId)
|
||||||
|
data["order_no"] = orderMember.OrderNo
|
||||||
|
data["user_id"] = fmt.Sprintf("%d", orderMember.UserId)
|
||||||
|
data["order_type"] = 2
|
||||||
|
data["pay_channel"] = orderMember.PayChannel
|
||||||
|
|
||||||
|
p := rabbitMq.PublishS{
|
||||||
|
QueueName: "cancel.unpay.order.delay.queue",
|
||||||
|
ExchangeName: "amqp.delay.direct",
|
||||||
|
RoutingKey: "CancelUnPayOrder",
|
||||||
|
Message: data,
|
||||||
|
Delay: delay,
|
||||||
|
}
|
||||||
|
err := p.PublishWithDelay()
|
||||||
|
if err != nil {
|
||||||
|
utils.LogJsonErr("添加处理取消未支付订单队列失败:", err.Error())
|
||||||
|
return nil, errors.New("订单创建失败")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return orderMember, nil
|
return orderMember, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CancelOrderSingle 取消会员订单
|
// CancelOrderMember 取消会员订单
|
||||||
// cancelReason:订单取消原因(1:主动取消 2:后台取消 3:支付超时取消)
|
// cancelReason:订单取消原因(1:主动取消 2:后台取消 3:支付超时取消)
|
||||||
func (r *OrderMemberService) CancelOrderSingle(tx *gorm.DB, orderMember *model.OrderMember, cancelReason int) (bool, error) {
|
func (r *OrderMemberService) CancelOrderMember(tx *gorm.DB, orderMember *model.OrderMember, cancelReason int) (bool, error) {
|
||||||
// 检测多次请求
|
// 检测多次请求
|
||||||
redisKey := "CancelOrderMember" + fmt.Sprintf("%d", orderMember.UserId) + fmt.Sprintf("%d", orderMember.OrderId)
|
redisKey := "CancelOrderMember" + fmt.Sprintf("%d", orderMember.UserId) + fmt.Sprintf("%d", orderMember.OrderId)
|
||||||
res, _ := global.Redis.Get(context.Background(), redisKey).Result()
|
res, _ := global.Redis.Get(context.Background(), redisKey).Result()
|
||||||
|
|||||||
@ -186,7 +186,7 @@ func (r *OrderSingleService) AddOrderSingle(tx *gorm.DB, UserId, QuestionId int6
|
|||||||
delay := 30 * time.Minute
|
delay := 30 * time.Minute
|
||||||
|
|
||||||
if config.C.Env == "dev" {
|
if config.C.Env == "dev" {
|
||||||
delay = 3 * time.Minute
|
delay = 1 * time.Minute
|
||||||
}
|
}
|
||||||
|
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]interface{})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user