瀏覽代碼

订单增加商品类型

kobe6258 5 月之前
父節點
當前提交
48b22d8dec
共有 4 個文件被更改,包括 36 次插入19 次删除
  1. 2 0
      common/exception/exc_enums.go
  2. 12 0
      domian/order/product_order.go
  3. 21 19
      models/order/product_order.go
  4. 1 0
      service/order/order_service.go

+ 2 - 0
common/exception/exc_enums.go

@@ -128,6 +128,7 @@ const (
 	MerchantInfoNotConfig
 
 	GetProductListFailed
+	IllegalProductType
 )
 const (
 	WebhookErrCode int = iota + 80000
@@ -245,6 +246,7 @@ var ErrorMap = map[int]string{
 	IllegalProductOrderId: "非法的产品订单ID",
 	MerchantInfoNotConfig: "商户信息未配置",
 	GetProductListFailed:  "获取产品列表失败",
+	IllegalProductType:    "非法的产品类型",
 	//webhook
 	SyncRiskError:               "同步风险等级失败",
 	GetCapTokenFailed:           "获取cap token失败",

+ 12 - 0
domian/order/product_order.go

@@ -18,6 +18,7 @@ type ProductOrderDTO struct {
 	UserID             int
 	TemplateUserID     int
 	ProductID          int
+	ProductType        string
 	TotalAmount        string
 	ProductPrice       string
 	ProductName        string
@@ -53,6 +54,12 @@ var (
 		orderDao.RefundStatusProcessing: "退款中",
 		orderDao.RefundStatusSuccess:    "退款成功",
 	}
+	transProductMap = map[string]productDao.MerchantProductType{
+		"report":  productDao.Report,
+		"video":   productDao.Video,
+		"audio":   productDao.Audio,
+		"package": productDao.Package,
+	}
 
 	productOrderStatusMap = map[string]orderDao.OrderStatus{
 		"closed":  orderDao.OrderStatusClosed,
@@ -74,6 +81,10 @@ func GenerateProductOrderNo() string {
 
 func CreateProductOrder(orderDTO ProductOrderDTO) (orderNo string, err error) {
 	order := convertProductOrder(orderDTO)
+	if order.ProductType == "" {
+		err = exception.New(exception.IllegalProductType)
+		return
+	}
 	orderNo, err = orderDao.CreateProductOrder(order)
 	return
 }
@@ -153,6 +164,7 @@ func convertProductOrder(order ProductOrderDTO) orderDao.ProductOrder {
 		UserID:         order.UserID,
 		TemplateUserID: order.TemplateUserID,
 		ProductID:      order.ProductID,
+		ProductType:    transProductMap[order.ProductType],
 		TotalAmount:    order.TotalAmount,
 	}
 }

+ 21 - 19
models/order/product_order.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	logger "eta/eta_mini_ht_api/common/component/log"
 	"eta/eta_mini_ht_api/models"
+	merchantDao "eta/eta_mini_ht_api/models/merchant"
 	"fmt"
 	"github.com/go-sql-driver/mysql"
 	"gorm.io/gorm"
@@ -34,25 +35,26 @@ const (
 )
 
 type ProductOrder struct {
-	ID               int          `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
-	OrderID          string       `gorm:"column:order_id;size:255;comment:'订单编号'" json:"order_id"`
-	UserID           int          `gorm:"column:user_id;default:null;comment:'用户id'" json:"user_id"`
-	TemplateUserID   int          `gorm:"column:template_user_id;default:null;comment:'临时用户id'" json:"template_user_id"`
-	ProductID        int          `gorm:"column:product_id;default:null;comment:'产品id'" json:"product_id"`
-	TotalAmount      string       `gorm:"column:total_amount;size:255;default:null;comment:'金额'" json:"total_amount"`
-	TradeID          int          `gorm:"column:trade_id;default:null;comment:'支付订单'" json:"trade_id"`
-	TradeNO          string       `gorm:"column:trade_no;default:null;comment:'支付订单'" json:"trade_no"`
-	RefundAmount     string       `gorm:"column:refund_amount;size:255;default:null;comment:'退款金额'" json:"refund_amount"`
-	PaymentWay       PaymentWay   `gorm:"column:payment_way;enum('wechat','alipay');default:null;comment:'支付渠道'"`
-	PaymentTime      time.Time    `gorm:"column:payment_time;default:null;comment:'支付时间'" json:"payment_time"`
-	ExpiredTime      time.Time    `gorm:"column:expired_time;default:null;comment:'超时时间'" json:"expired_time"`
-	Status           OrderStatus  `gorm:"column:status;type:enum('pending','processing','paid','closed','refund');default:'pending';comment:'订单状态'" json:"status"`
-	RefundStatus     RefundStatus `gorm:"column:refund_status;type:enum('pending','processing','failed','success');default:null;comment:'退款状态'" json:"refund_status"`
-	RefundFinishTime time.Time    `gorm:"column:refund_finish_time;default:null;comment:'退款完成时间'" json:"refund_finish_time"`
-	Remark           string       `gorm:"column:remark;size:255;default:null;comment:'备注'" json:"remark"`
-	IsDeleted        int          `gorm:"column:is_deleted;size:1;default:0;comment:'是否删除'" json:"is_deleted"`
-	CreatedTime      time.Time    `gorm:"column:created_time;default:null;comment:'创建时间'" json:"created_time"`
-	UpdatedTime      time.Time    `gorm:"column:updated_time;default:null;comment:'更新时间'" json:"updated_time"`
+	ID               int                             `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
+	OrderID          string                          `gorm:"column:order_id;size:255;comment:'订单编号'" json:"order_id"`
+	UserID           int                             `gorm:"column:user_id;default:null;comment:'用户id'" json:"user_id"`
+	TemplateUserID   int                             `gorm:"column:template_user_id;default:null;comment:'临时用户id'" json:"template_user_id"`
+	ProductID        int                             `gorm:"column:product_id;default:null;comment:'产品id'" json:"product_id"`
+	ProductType      merchantDao.MerchantProductType `gorm:"column:product_type;default:null;comment:'产品类型'" json:"product_type"`
+	TotalAmount      string                          `gorm:"column:total_amount;size:255;default:null;comment:'金额'" json:"total_amount"`
+	TradeID          int                             `gorm:"column:trade_id;default:null;comment:'支付订单'" json:"trade_id"`
+	TradeNO          string                          `gorm:"column:trade_no;default:null;comment:'支付订单'" json:"trade_no"`
+	RefundAmount     string                          `gorm:"column:refund_amount;size:255;default:null;comment:'退款金额'" json:"refund_amount"`
+	PaymentWay       PaymentWay                      `gorm:"column:payment_way;enum('wechat','alipay');default:null;comment:'支付渠道'"`
+	PaymentTime      time.Time                       `gorm:"column:payment_time;default:null;comment:'支付时间'" json:"payment_time"`
+	ExpiredTime      time.Time                       `gorm:"column:expired_time;default:null;comment:'超时时间'" json:"expired_time"`
+	Status           OrderStatus                     `gorm:"column:status;type:enum('pending','processing','paid','closed','refund');default:'pending';comment:'订单状态'" json:"status"`
+	RefundStatus     RefundStatus                    `gorm:"column:refund_status;type:enum('pending','processing','failed','success');default:null;comment:'退款状态'" json:"refund_status"`
+	RefundFinishTime time.Time                       `gorm:"column:refund_finish_time;default:null;comment:'退款完成时间'" json:"refund_finish_time"`
+	Remark           string                          `gorm:"column:remark;size:255;default:null;comment:'备注'" json:"remark"`
+	IsDeleted        int                             `gorm:"column:is_deleted;size:1;default:0;comment:'是否删除'" json:"is_deleted"`
+	CreatedTime      time.Time                       `gorm:"column:created_time;default:null;comment:'创建时间'" json:"created_time"`
+	UpdatedTime      time.Time                       `gorm:"column:updated_time;default:null;comment:'更新时间'" json:"updated_time"`
 }
 
 func (pr *ProductOrder) BeforeCreate(db *gorm.DB) (err error) {

+ 1 - 0
service/order/order_service.go

@@ -68,6 +68,7 @@ func CreateProductOrder(templateUser user.User, productId int, orderNo string) (
 		UserID:         officialUser.ID,
 		TemplateUserID: templateUser.Id,
 		ProductID:      productId,
+		ProductType:    productInfo.Type,
 		TotalAmount:    productInfo.Price.String(),
 	})
 	if err != nil {