Browse Source

修复支付订单bug

kobe6258 3 months ago
parent
commit
417d276d1d

+ 2 - 2
domian/order/product_order.go

@@ -256,8 +256,8 @@ func GetOrderPage(pageInfo page.PageInfo, userId int, orderStatus string) (order
 	return
 }
 
-func GetUserOrderByProduct(productId int, userId int) (orderDTO ProductOrderDTO, err error) {
-	order, err := orderDao.GetUserOrderByProduct(productId, userId)
+func GetUserOrderByProduct(productId int, userId int, status string) (orderDTO ProductOrderDTO, err error) {
+	order, err := orderDao.GetUserOrderByProduct(productId, userId, productOrderStatusMap[status])
 	if err != nil {
 		logger.Error("查询订单详情失败:%v", err)
 		return

+ 17 - 1
domian/user/user_message_service.go

@@ -1,12 +1,14 @@
 package user
 
 import (
+	"bytes"
 	"encoding/json"
 	logger "eta/eta_mini_ht_api/common/component/log"
 	userDao "eta/eta_mini_ht_api/models/user"
 	"fmt"
 	"strconv"
 	"strings"
+	"text/template"
 )
 
 type MessageDTO struct {
@@ -28,6 +30,8 @@ const (
 	ReportMessageTemplate = "您关注的研究员%v更新了一篇报告"
 	VideoMessageTemplate  = "您关注的研究员%v更新了一个视频"
 	AudioMessageTemplate  = "您关注的研究员%v更新了一个音频"
+
+	RefundMessageTemplate = "订单:{{.ProductOrderNo}},姓名:{{.RealName}},退款{{.Result}}!"
 )
 
 type MessageInfo struct {
@@ -53,6 +57,8 @@ func CreateMessage(meta MetaInfoDTO) (err error) {
 		message = fmt.Sprintf(VideoMessageTemplate, content.AuthorName)
 	case userDao.AudioSourceType:
 		message = fmt.Sprintf(AudioMessageTemplate, content.AuthorName)
+	case userDao.RefundSourceType:
+		message, _ = generateMessage(nil, RefundMessageTemplate)
 	}
 	for _, user := range users {
 		id, _ := strconv.Atoi(user)
@@ -74,7 +80,17 @@ func CreateMessage(meta MetaInfoDTO) (err error) {
 	}
 	return
 }
-
+func generateMessage(data interface{}, tmpl string) (message string, err error) {
+	t := template.Must(template.New("messageTemplate").Parse(tmpl))
+	var buffer bytes.Buffer
+	err = t.Execute(&buffer, data)
+	if err != nil {
+		logger.Error("生成消息模板失败:%v", err)
+		return
+	}
+	message = buffer.String()
+	return
+}
 func NeedNotice(userId int, analystId int) bool {
 	return userDao.NeedNotice(userId, analystId)
 }

+ 2 - 2
models/order/product_order.go

@@ -122,9 +122,9 @@ func GetOrderDetail(orderId string, userId int) (order ProductOrder, err error)
 	err = db.Model(&ProductOrder{}).Select("*").Where("order_id = ? and template_user_id = ? and is_deleted=0 ", orderId, userId).First(&order).Error
 	return
 }
-func GetUserOrderByProduct(productId int, userId int) (order ProductOrder, err error) {
+func GetUserOrderByProduct(productId int, userId int, status OrderStatus) (order ProductOrder, err error) {
 	db := models.Main()
-	err = db.Model(&ProductOrder{}).Select("*").Where("product_id = ? and template_user_id = ? and is_deleted=0 ", productId, userId).First(&order).Error
+	err = db.Model(&ProductOrder{}).Select("*").Where("product_id = ? and template_user_id = ? and is_deleted=0 and status =?", productId, userId, status).First(&order).Error
 	return
 }
 

+ 1 - 0
models/user/meta_info.go

@@ -21,6 +21,7 @@ const (
 	ReportSourceType SourceType = "REPORT"
 	VideoSourceType  SourceType = "VIDEO"
 	AudioSourceType  SourceType = "AUDIO"
+	RefundSourceType SourceType = "REFUND"
 )
 
 // MetaInfo 表示 meta_infos 表的模型

+ 1 - 1
service/order/order_service.go

@@ -84,7 +84,7 @@ func CreateProductOrder(templateUser user.User, productId int, orderNo string) (
 	}
 	//校验是否有相同待支付的产品订单
 	var existOrder orderService.ProductOrderDTO
-	existOrder, err = orderService.GetUserOrderByProduct(productId, templateUser.Id)
+	existOrder, err = orderService.GetUserOrderByProduct(productId, templateUser.Id, productOrderStatusMap[orderDao.OrderStatusPending])
 	if (err != nil && !errors.Is(err, gorm.ErrRecordNotFound)) || existOrder.Status == productOrderStatusMap[orderDao.OrderStatusPending] {
 		err = exception.NewWithException(exception.DuplicateSubscribe, "当前产品有正在进行中的订单,请勿重复下单")
 		return

+ 0 - 1
task/message/notice_task.go

@@ -14,7 +14,6 @@ var (
 
 // Execute Task ETA取研报的数据
 func (au *NoticeTask) Execute(taskDetail *base.TaskDetail) (err error) {
-	//logger.Info(contants.TaskFormat, "监听更新通知开始")
 	metaInfoList := userService.GetInitMetaInfos()
 	var wg sync.WaitGroup
 	wg.Add(len(metaInfoList))