wkyuer 4 månader sedan
förälder
incheckning
f778c6b846
2 ändrade filer med 53 tillägg och 15 borttagningar
  1. 1 1
      internal/controller/orderHandler.go
  2. 52 14
      internal/logic/product/subvip/check.go

+ 1 - 1
internal/controller/orderHandler.go

@@ -30,7 +30,7 @@ var checkOrderProduct = func(ctx context.Context, orderCode string, param model.
 	if len(oldOrderRes) > 0 {
 		orderMap, update = oldOrderRes[0], true
 	}
-	//订单参数基础校验
+	// 订单参数基础校验
 	if param.EmptyPhone != 1 && param.PersonPhone == "" {
 		err = fmt.Errorf("订单参数异常")
 		return

+ 52 - 14
internal/logic/product/subvip/check.go

@@ -1,12 +1,17 @@
 package subvip
 
 import (
+	"app.yhyue.com/moapp/jybase/mongodb"
 	"context"
 	"fmt"
 	"github.com/gogf/gf/v2/errors/gerror"
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/util/gconv"
 	"github.com/pkg/errors"
+	"jyOrderManager/internal/jyutil"
 	"jyOrderManager/internal/logic/product"
 	"jyOrderManager/internal/model"
+	"time"
 )
 
 // Check 参数校验 0获取价格 1订单提交
@@ -50,21 +55,54 @@ func (p jySubVipProduct) Check(ctx context.Context, t int) error {
 		}
 		fmt.Println(productItem, productClass)
 		//g.Dump(productItem, productClass)
-		//校验会员状态
+		//校验是否满足创建订单
 		if t == 1 {
-			//mgoId, baseUserId, entId, entUserId := jyutil.GetUserFullId(p.OrderDetail.Phone, p.OrderDetail.ReqCompanyName)
-			//if baseUserId == 0 && (p.OrderDetail.ServiceType == 2 || p.OrderDetail.ServiceType == 3) { //续费升级
-			//	return fmt.Errorf("超级订阅-当前账户不支持此操作")
-			//}
-			//
-			//switch p.OrderDetail.ReqBuySet {
-			//case 1: //个人
-			//	jyutil.Middleground.UserCenter.IdentityByUserId(baseUserId)
-			//case 2: //企业
-			//	jyutil.Middleground.UserCenter.IdentityByEntUserId(entUserId)
-			//}
-			//
-			//p := jyutil.Middleground.PowerCheckCenter.Check("10000", mgoId,baseUserId)
+			uData, entId, _, err := jyutil.GetCreateUserData(p.OrderDetail.Phone, p.OrderDetail.ReqCompanyName, false)
+			if err != nil {
+				return gerror.Wrapf(err, "查询账户状态异常")
+			}
+			switch p.OrderDetail.ReqSubject {
+			case 1: //个人
+				if p.OrderDetail.ServiceType == 1 || p.OrderDetail.ServiceType == 4 { //校验是否有待生效的订单
+					num, err := g.DB().GetCount(ctx, "SELECT COUNT(*) FROM dataexport_order d inner join jy_order_detail jyd on(d.order_code=jyd.order_code) WHERE d.user_phone=? and jyd.product_type= 'VIP订阅' and (jyd.vip_type=0 or jyd.vip_type=3)", p.OrderDetail.Phone)
+					if err != nil {
+						return gerror.Wrapf(err, "查询账户订单信息异常")
+					}
+					if num > 0 {
+						return errors.New("已存在同类型订单")
+					}
+				} else { //关联id是否存在
+					num, err := g.DB().GetCount(ctx, "SELECT COUNT(*) FROM jy_order_detail  WHERE status =1 and is_service_open=1 and  product_type ='VIP订阅' and d.linked_detail_id=? and  service_endtime>? ", p.OrderDetail.LinkedOrderId, time.Now().Format(time.DateTime))
+					if err != nil {
+						return gerror.Wrapf(err, "查询账户权益信息异常")
+					}
+					if num == 0 {
+						return errors.New("当前账户不支持当前操作")
+					}
+				}
+				uMap := jyutil.Compatible.Select(mongodb.BsonIdToSId(uData["_id"]), `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1,"l_vip_starttime":1}`)
+				if uMap == nil {
+					return errors.New("获取用户会员状态异常")
+				}
+				var (
+					i_vip_status = gconv.Int((*uMap)["i_vip_status"])
+				)
+				if ((p.OrderDetail.ServiceType == 1 || p.OrderDetail.ServiceType == 4) && i_vip_status > 0) || //已经是会员重复购买
+					(p.OrderDetail.ServiceType == 2 || p.OrderDetail.ServiceType == 3) || i_vip_status <= 0 { //不是会员,续费升级
+					return errors.New("当前账户不支持当前操作")
+				}
+			case 2: //企业
+				//校验当前套餐内容是否满足升级续费
+				if p.OrderDetail.ServiceType == 3 || p.OrderDetail.ServiceType == 5 {
+					num, err := g.DB().GetCount(ctx, "SELECT COUNT(*) FROM jy_order_detail d inner join entniche_order eo (on d.id =eo.order_detail_id) inner join entniche_wait_empower ewe on(eo.wait_empower_id=ewe.id ) WHERE  d.status =1 and d.is_service_open=1 and  d.product_type ='VIP订阅' and d.linked_detail_id=? and ewe.ent_id=? and end_time>?", p.OrderDetail.LinkedOrderId, entId, time.Now().Format(time.DateTime))
+					if err != nil {
+						return gerror.Wrapf(err, "查询账户权益信息异常")
+					}
+					if num == 0 {
+						return errors.New("当前账户不支持当前操作")
+					}
+				}
+			}
 		}
 	}
 	return nil