xingzai пре 1 година
родитељ
комит
f549494d71
2 измењених фајлова са 85 додато и 17 уклоњено
  1. 15 0
      models/cygx/activity_special_permission_points.go
  2. 70 17
      services/cygx/activity_special.go

+ 15 - 0
models/cygx/activity_special_permission_points.go

@@ -18,6 +18,13 @@ type CygxActivitySpecialPermissionPoints struct {
 	ModifyTime          time.Time `description:"更新时间"`
 }
 
+// 添加
+func AddCygxActivitySpecialPermissionPoints(item *CygxActivitySpecialPermissionPoints) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	_, err = o.Insert(item)
+	return
+}
+
 // MultiAddCygxActivitySpecialPermissionPoints 批量添加
 func MultiAddCygxActivitySpecialPermissionPoints(items []*CygxActivitySpecialPermissionPoints) (err error) {
 	if len(items) == 0 {
@@ -89,3 +96,11 @@ func UpdateCygxActivitySpecialPermissionPoints(points, companyId, chartPermissio
 	_, err = o.Raw(sql, points, companyId, chartPermissionId).Exec()
 	return
 }
+
+// 获取客户是否有研选扣点点数
+func GetCygxActivitySpecialPermissionPointsCount(companyId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_permission_points  WHERE company_id=?  `
+	err = o.Raw(sqlCount, companyId).QueryRow(&count)
+	return
+}

+ 70 - 17
services/cygx/activity_special.go

@@ -666,11 +666,22 @@ func ActivitySpecialCompanyApproval(companyId, companyContractId int, companyNam
 			return
 		}
 		var itemBillTotal []string
+		itemBillTotalMap := make(map[string]string)
 		for _, v := range activitySpecialPermissionPointsList {
 			itemBillTotal = append(itemBillTotal, fmt.Sprint(v.ChartPermissionName, v.Points, "次"))
+			itemBillTotalMap[v.ChartPermissionName] = fmt.Sprint(v.ChartPermissionName, v.Points, "次")
 		}
 		itemBill.BillDetailed = 5 * len(items)
-		itemBill.Total = strings.Join(itemBillTotal, "+")
+		permissionNameSlice := []string{"医药", "消费", "科技", "智造"}
+		var itemBillTotalNew []string
+		for _, v := range permissionNameSlice {
+			if itemBillTotalMap[v] == "" {
+				itemBillTotalNew = append(itemBillTotalNew, fmt.Sprint(v, "0次"))
+			} else {
+				itemBillTotalNew = append(itemBillTotalNew, itemBillTotalMap[v])
+			}
+		}
+		itemBill.Total = strings.Join(itemBillTotalNew, "+")
 	}
 
 	//如果有升级行业权限,或者大套餐客户就写入流水信息
@@ -770,20 +781,16 @@ func DeductTripRemainingtimesByUser(user *cygx.UserAndCompanyName, activityInfo
 		err = errors.New("GetCompanyProductByCompanyIdAndProductId, Err:" + e.Error())
 		return
 	}
-	//永续客户不做判断
-	if companyProduct.Status == utils.COMPANY_STATUS_FOREVER {
-		return
-	}
 
 	var condition string
 	var pars []interface{}
-	condition = " AND  company_id  = ?  AND points  > 0   ORDER BY  points DESC LIMIT 1   "
+	condition = " AND  company_id  = ?    ORDER BY  points DESC LIMIT 1   "
 	pars = append(pars, companyId)
 
 	//判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
 	if chartPermissionName != utils.CE_LUE_NAME {
 		pars = make([]interface{}, 0)
-		condition = " AND  company_id  = ?   AND  (chart_permission_id  = ?   OR chart_permission_id = 0 )   AND points  > 0   ORDER BY  points DESC LIMIT 1   "
+		condition = " AND  company_id  = ?   AND  (chart_permission_id  = ?   OR chart_permission_id = 0 )    ORDER BY  points DESC LIMIT 1   "
 		pars = append(pars, companyId, activityInfo.ChartPermissionId)
 	}
 	activitySpecialPermissionPointsList, e := cygx.GetCygxActivitySpecialPermissionPointsList(condition, pars)
@@ -792,17 +799,46 @@ func DeductTripRemainingtimesByUser(user *cygx.UserAndCompanyName, activityInfo
 		return
 	}
 
-	//如果没有剩余的点数,就返回
-	if len(activitySpecialPermissionPointsList) == 0 && roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
-		err = errors.New(msgTemplate)
+	var maxPoints int // 获取最大剩余点数,(写的有点多余)
+	for _, v := range activitySpecialPermissionPointsList {
+		if maxPoints < v.Points {
+			maxPoints = v.Points
+		}
+	}
+
+	//如果是超管给一个没有行业权限的试用,冻结等相关客户报名,就写入一条对应的行业权限点数信息
+	if roleTypeCode == utils.ROLE_TYPE_CODE_ADMIN && len(activitySpecialPermissionPointsList) == 0 {
+		item := new(cygx.CygxActivitySpecialPermissionPoints)
+		item.CompanyId = companyProduct.CompanyId
+		item.Points = -1
+		item.CompanyName = companyProduct.CompanyName
+		item.ChartPermissionId = activityInfo.ChartPermissionId
+		item.ChartPermissionName = activityInfo.ChartPermissionName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		e = cygx.AddCygxActivitySpecialPermissionPoints(item)
+		if e != nil {
+			err = errors.New("AddCygxActivitySpecialPermissionPoints, Err:" + e.Error())
+			return
+		}
 		return
 	}
+
+	//永续客户不做判断、超管不做判断
+	if companyProduct.Status != utils.COMPANY_STATUS_FOREVER {
+		//如果没有剩余的点数,就返回
+		if maxPoints <= 0 && roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
+			err = errors.New(msgTemplate)
+			return
+		}
+	}
 	var maxChartPermissionId int // 剩余点数最多的行业
 	var points int               // 剩余点数
 	for _, v := range activitySpecialPermissionPointsList {
 		maxChartPermissionId = v.ChartPermissionId
 		points = v.Points - 1
 	}
+
 	//更新对应行业剩余点数
 	e = cygx.UpdateCygxActivitySpecialPermissionPoints(points, companyId, maxChartPermissionId)
 	if e != nil {
@@ -867,11 +903,7 @@ func HandleActivitySpecialTripBillTotalText(user *cygx.UserAndCompanyName) (tota
 		err = errors.New("GetCompanyDetailByIdGroup, Err:" + e.Error())
 		return
 	}
-	//永续客户不限制次数
-	if companyDetail.Status == utils.COMPANY_STATUS_FOREVER {
-		totalText = "0次"
-		return
-	}
+
 	var condition string
 	var pars []interface{}
 	pars = make([]interface{}, 0)
@@ -882,18 +914,39 @@ func HandleActivitySpecialTripBillTotalText(user *cygx.UserAndCompanyName) (tota
 		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
 		return
 	}
+	//永续客户次数累加
+	if companyDetail.Status == utils.COMPANY_STATUS_FOREVER {
+		var points int
+		for _, v := range activitySpecialPermissionPointsList {
+			points += v.Points
+		}
+		totalText = fmt.Sprint(points, "次") //追加永续客户展示规则(2024-02-23)
+		return
+	}
 
 	var itemBillTotal []string
+	itemBillTotalMap := make(map[string]string)
 	for _, v := range activitySpecialPermissionPointsList {
 		if v.ChartPermissionId > 0 {
 			itemBillTotal = append(itemBillTotal, fmt.Sprint(v.ChartPermissionName, v.Points, "次")) // 行业套餐客户展示规则
+			itemBillTotalMap[v.ChartPermissionName] = fmt.Sprint(v.ChartPermissionName, v.Points, "次")
 		}
 		if v.ChartPermissionId == 0 {
-			totalText = fmt.Sprint(v.Points, "次") // 大套餐客户展示规则
+			totalText = fmt.Sprint(v.Points, "次") // 大套餐客户展示规则
 		}
 	}
+
 	if len(itemBillTotal) > 0 {
-		totalText = strings.Join(itemBillTotal, "+")
+		permissionNameSlice := []string{"医药", "消费", "科技", "智造"}
+		var itemBillTotalNew []string
+		for _, v := range permissionNameSlice {
+			if itemBillTotalMap[v] == "" {
+				itemBillTotalNew = append(itemBillTotalNew, fmt.Sprint(v, "0次"))
+			} else {
+				itemBillTotalNew = append(itemBillTotalNew, itemBillTotalMap[v])
+			}
+		}
+		totalText = strings.Join(itemBillTotalNew, "+")
 	}
 	return
 }