Explorar el Código

fix:开通权益计费校验修改

duxin hace 1 mes
padre
commit
dd17c276d7

+ 1 - 0
internal/controller/orderSurplusPrice.go

@@ -24,6 +24,7 @@ func OrderSurplusPrice(r *ghttp.Request) {
 			if orderData.IsEmpty() {
 				continue
 			}
+
 			param.OrderArr[key]["money"] = common.IntAll(orderData.Map()["outstandingPayment"])
 			price += common.IntAll(orderData.Map()["outstandingPayment"])
 		}

+ 9 - 0
internal/logic/product/bigmember/bigcommon.go

@@ -636,3 +636,12 @@ WHERE eo.order_detail_id = %s`, p.param.LinkedOrderId))
 	log.Printf("企业%d开通大会员子账号 %s 数量%d  \n", entId, productType, p.param.Filter.FinalAccountCount)
 	return nil, pid
 }
+
+func BigMemberComboServiceIds(ctx context.Context, comboId int) (serviceIds []string, err error) {
+	combo, err := g.DB().Ctx(ctx).GetOne(ctx, fmt.Sprintf(`SELECT * FROM bigmember_combo WHERE id = %d`, comboId))
+	if err != nil || combo.IsEmpty() {
+		return
+	}
+	serviceIds = strings.Split(gconv.String(combo.Map()["s_servers"]), ",")
+	return
+}

+ 10 - 11
internal/logic/product/bigmember/bigmember.go

@@ -16,7 +16,6 @@ import (
 	"jyOrderManager/internal/service"
 	"jyOrderManager/utility"
 	"log"
-	"strings"
 	"time"
 )
 
@@ -212,11 +211,11 @@ func (p jyBigProduct) SaveUpdate(ctx context.Context, masterKey string) error {
 			return err
 		}*/
 		if p.param.Filter.ComboId > 0 {
-			combo, err := g.DB().Ctx(ctx).GetOne(ctx, fmt.Sprintf(`SELECT * FROM bigmember_combo WHERE id = %d`, p.param.Filter.ComboId))
-			if err != nil || combo.IsEmpty() {
+			serviceIds, err := BigMemberComboServiceIds(ctx, p.param.Filter.ComboId)
+			if err != nil {
 				return errors.New("套餐查询错误")
 			}
-			filter.ServiceIds = strings.Split(gconv.String(combo.Map()["s_servers"]), ",")
+			filter.ServiceIds = serviceIds
 		}
 		filter.FinalAreaCount = productItem.UnitNum
 		filter.CutAccount = productItem.CutAccount
@@ -239,11 +238,11 @@ func (p jyBigProduct) SaveUpdate(ctx context.Context, masterKey string) error {
 			filter.FinalAccountCount = oldFilter.FinalAccountCount
 			filter.ServiceIds = oldFilter.ServiceIds
 			if len(oldFilter.ServiceIds) == 0 && p.param.Filter.ComboId > 0 {
-				combo, err := g.DB().Ctx(ctx).GetOne(ctx, fmt.Sprintf(`SELECT * FROM bigmember_combo WHERE id = %d`, p.param.Filter.ComboId))
-				if err != nil || combo.IsEmpty() {
+				serviceIds, err := BigMemberComboServiceIds(ctx, p.param.Filter.ComboId)
+				if err != nil {
 					return errors.New("套餐查询错误")
 				}
-				filter.ServiceIds = strings.Split(gconv.String(combo.Map()["s_servers"]), ",")
+				filter.ServiceIds = serviceIds
 			}
 			var newStartTime time.Time
 			if endTime.Unix() < time.Now().Unix() { //原服务已过期
@@ -341,11 +340,11 @@ func (p jyBigProduct) OpenService(ctx context.Context, serviceOpenTime time.Time
 	switch p.param.ServiceType {
 	case Buy, Try: //购买 试用
 		if p.param.Filter.ComboId > 0 {
-			combo, err := g.DB().Ctx(ctx).GetOne(ctx, fmt.Sprintf(`SELECT * FROM bigmember_combo WHERE id = %d`, p.param.Filter.ComboId))
-			if err != nil || combo.IsEmpty() {
-				return errors.New("套餐查询错误")
+			serviceIds, err := BigMemberComboServiceIds(ctx, p.param.Filter.ComboId)
+			if err != nil {
+				return errors.New("套餐id异常")
 			}
-			p.param.Filter.ServiceIds = strings.Split(gconv.String(combo.Map()["s_servers"]), ",")
+			p.param.Filter.ServiceIds = serviceIds
 		}
 		err = p.BigMemberBuyTry(ctx, serviceOpenTime, orderData.Map(), userData, productDetail)
 	case Renew: // 续费

+ 7 - 0
internal/logic/product/bigmember/price.go

@@ -209,6 +209,13 @@ func (p jyBigProduct) GetPrice() (price int64, err error) {
 		if p.param.ProductCode != "dyh001" { //升级子账号
 			price = thisPriceSetting.UnityPrice(gconv.Float64(utility.GetMonthDayNum(now, entTime)), 2, gconv.Int(finalAccountCount), 0, p.param.ReqSubject == 2, "1")
 		} else { //补充服务和升级子账号
+			if len(filter.ServiceIds) == 0 && filter.ComboId > 0 {
+				serviceIds, err := BigMemberComboServiceIds(context.Background(), filter.ComboId)
+				if err != nil {
+					return 0, fmt.Errorf("套餐id异常")
+				}
+				filter.ServiceIds = serviceIds
+			}
 			price = DiyBigMember(context.Background(), 2, gconv.Int(finalAccountCount), utility.GetMonthNumTime(now, entTime), filter.ServiceIds, p.param.Filter.SupServiceIds, p.param.ReqSubject == 2)
 		}
 

+ 10 - 5
internal/logic/user/getService.go

@@ -9,6 +9,7 @@ import (
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/util/gconv"
 	"jyOrderManager/internal/jyutil"
+	"jyOrderManager/internal/logic/product/bigmember"
 	"jyOrderManager/internal/model"
 	"strings"
 	"time"
@@ -123,8 +124,11 @@ WHERE a.status = 1 and a.is_service_open=1 and b.user_phone = ? and b.buy_subjec
 								pCode = gconv.String(m2["product_code"])
 								paySubNum = ttt.FinalAccountCount
 								if len(ttt.ServiceIds) == 0 && ttt.ComboId > 0 {
-									combo, _ := g.DB().Ctx(ctx).GetOne(ctx, fmt.Sprintf(`SELECT * FROM bigmember_combo WHERE id = %d`, ttt.ComboId))
-									ttt.ServiceIds = strings.Split(gconv.String(combo.Map()["s_servers"]), ",")
+									serviceIds, err := bigmember.BigMemberComboServiceIds(ctx, ttt.ComboId)
+									if err != nil {
+										continue
+									}
+									ttt.ServiceIds = serviceIds
 								}
 								for _, id := range ttt.ServiceIds {
 									serviceList = append(serviceList, gconv.Int(id))
@@ -322,10 +326,11 @@ WHERE a.ent_id = '%s'  %s and a.product_type like '%s'  ORDER BY a.end_time desc
 						continue
 					}
 					if len(ttt.ServiceIds) == 0 && ttt.ComboId > 0 {
-						combo, _ := g.DB().Ctx(ctx).GetOne(ctx, fmt.Sprintf(`SELECT * FROM bigmember_combo WHERE id = %d`, ttt.ComboId))
-						if !combo.IsEmpty() {
-							ttt.ServiceIds = strings.Split(gconv.String(combo.Map()["s_servers"]), ",")
+						serviceIds, err := bigmember.BigMemberComboServiceIds(ctx, ttt.ComboId)
+						if err != nil {
+							continue
 						}
+						ttt.ServiceIds = serviceIds
 					}
 					for _, id := range ttt.ServiceIds {
 						if id == "12" {