wkyuer 3 mesiacov pred
rodič
commit
f33f924d1c

+ 9 - 0
internal/controller/orderHandler.go

@@ -57,6 +57,8 @@ var checkOrderProduct = func(ctx context.Context, orderCode string, param model.
 	var (
 		maxPrice int64
 	)
+	//大会员超级订阅同订单不能多次购买
+	hasVipCheckMap := map[string]bool{}
 	for _, tParam := range param.ProductArr {
 		orderDetailId := gconv.Int64(tParam["id"])
 		if update {
@@ -74,6 +76,13 @@ var checkOrderProduct = func(ctx context.Context, orderCode string, param model.
 		tParam["reqSubject"] = param.BuySubject      //购买主体
 		tParam["reqCompanyName"] = param.CompanyName //公司名称
 		productCode := gconv.String(tParam["product_code"])
+		if classCode := jyutil.GetOnlyProductClassCode(productCode); classCode == "dyh" || classCode == "cjdy" {
+			if hasVipCheckMap[classCode] {
+				err = fmt.Errorf("请勿重复选购会员商品")
+				return
+			}
+			hasVipCheckMap[classCode] = true
+		}
 		pFunc, pErr := product.JyProFunc.GetProductInitFuncByCode(productCode)
 		if pErr != nil {
 			err = gerror.Wrapf(pErr, "获取商品异常")

+ 21 - 0
internal/jyutil/product.go

@@ -0,0 +1,21 @@
+package jyutil
+
+import "unicode"
+
+// GetOnlyProductClassCode 获取产品code的class
+func GetOnlyProductClassCode(code string) string {
+	if len(code) == 0 {
+		return ""
+	}
+	// 先检查是否是字母开头
+	if !unicode.IsLetter(rune(code[0])) {
+		return ""
+	}
+	i := 0
+	for ; i < len(code); i++ {
+		if unicode.IsDigit(rune(code[i])) {
+			break
+		}
+	}
+	return code[:i]
+}

+ 2 - 22
internal/logic/product/jyProductInterface.go

@@ -8,8 +8,6 @@ import (
 	"jyOrderManager/internal/jyutil"
 	"jyOrderManager/internal/model"
 	"jyOrderManager/internal/service"
-
-	"unicode"
 )
 
 var JyProFunc = jyProductFuncMapping{
@@ -31,30 +29,12 @@ type (
 	}
 )
 
-// getOnlyProductClassCode 获取
-func getOnlyProductClassCode(code string) string {
-	if len(code) == 0 {
-		return ""
-	}
-	// 先检查是否是字母开头
-	if !unicode.IsLetter(rune(code[0])) {
-		return ""
-	}
-	i := 0
-	for ; i < len(code); i++ {
-		if unicode.IsDigit(rune(code[i])) {
-			break
-		}
-	}
-	return code[:i]
-}
-
 func (t *jyProductFuncMapping) RegisterJyProductCreateFunc(code string, f ProductInitFunc) {
 	t.initFuncMapping[code] = f
 }
 
 func (t *jyProductFuncMapping) GetProductInitFuncByCode(code interface{}) (ProductInitFunc, error) {
-	tCOde := getOnlyProductClassCode(gconv.String(code))
+	tCOde := jyutil.GetOnlyProductClassCode(gconv.String(code))
 	productObj, ok := t.initFuncMapping[tCOde]
 	if !ok {
 		return nil, fmt.Errorf("未知订单类型")
@@ -63,7 +43,7 @@ func (t *jyProductFuncMapping) GetProductInitFuncByCode(code interface{}) (Produ
 }
 
 func (t *jyProductFuncMapping) MustGetProductInitFuncByCode(code interface{}) ProductInitFunc {
-	return t.initFuncMapping[getOnlyProductClassCode(gconv.String(code))]
+	return t.initFuncMapping[jyutil.GetOnlyProductClassCode(gconv.String(code))]
 }
 
 func GetProductMsgAndCheckPower(ctx context.Context, pCode string, paramCheck ...model.ProductCommonCheck) (*model.Product, *model.ProductClass, error) {