Browse Source

Merge branch 'cygx/cygx_need_945' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

xingzai 11 months ago
parent
commit
1d88fe1482
4 changed files with 144 additions and 13 deletions
  1. 102 5
      controllers/company.go
  2. 15 0
      controllers/company_apply_v2.go
  3. 26 7
      models/company/company.go
  4. 1 1
      utils/constants.go

+ 102 - 5
controllers/company.go

@@ -2856,10 +2856,28 @@ func (this *CompanyController) Add() {
 		}
 	}
 
-	// 每个权益销售手中的试用客户最多30个
-	if productId == utils.COMPANY_PRODUCT_RAI_ID && tryOutCount >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
-		br.Msg = "您的试用客户总数,已超过上限,不可继续新增"
-		return
+	//// 每个权益销售手中的试用客户最多30个
+	//if productId == utils.COMPANY_PRODUCT_RAI_ID && tryOutCount >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
+	//	br.Msg = "您的试用客户总数,已超过上限,不可继续新增"
+	//	return
+	//}
+
+	//如果是权益客户,在选择非研选行业试用时,需要判断当前有多少非研选的试用客户(试用状态,且行业是非研选)
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		permissionArr := strings.Split(req.PermissionIds, ",")
+		//如果所选行业不属于研选订阅跟研选扣点包,那就是非研选试用客户
+		if !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)) && !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.YAN_XUAN_KOU_DIAN_BAO_ID)) {
+			tryOutCountRai, err := company.GetRaiCompanyTryOutCountNoResearch(seller.AdminId)
+			if err != nil {
+				br.Msg = "判断试用客户量失败"
+				br.ErrMsg = "判断试用客户量失败,Err:" + err.Error()
+				return
+			}
+			if tryOutCountRai >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
+				br.Msg = "非研选试用客户最多30家"
+				return
+			}
+		}
 	}
 
 	if seller == nil {
@@ -3941,6 +3959,31 @@ func (this *CompanyController) Edit() {
 
 	productId := services.GetProductId(sysUser.RoleTypeCode) //产品权限id
 	for _, v := range req.Products {
+
+		if productId == utils.COMPANY_PRODUCT_RAI_ID {
+
+			//查询客户的产品权限
+			companyReportPermissionListOld, err := company.GetCompanyReportPermission(req.CompanyId, productId)
+			if err != nil {
+				br.Msg = "查询客户的产品权限异常"
+				br.ErrMsg = "查询客户的产品权限异常:" + err.Error()
+				return
+			}
+			permissionArr := strings.Split(v.PermissionIds, ",")
+			//如果所选行业不属于研选订阅跟研选扣点包,那就是非研选试用客户
+			if !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)) && !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.YAN_XUAN_KOU_DIAN_BAO_ID)) && len(companyReportPermissionListOld) != len(permissionArr) {
+				tryOutCountRai, err := company.GetRaiCompanyTryOutCountNoResearch(sysUser.AdminId)
+				if err != nil {
+					br.Msg = "判断试用客户量失败"
+					br.ErrMsg = "判断试用客户量失败,Err:" + err.Error()
+					return
+				}
+				if tryOutCountRai >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
+					br.Msg = "非研选试用客户最多30家"
+					return
+				}
+			}
+		}
 		if v.IndustryId <= 0 {
 			br.Msg = "请选择行业"
 			br.IsSendEmail = false
@@ -4913,6 +4956,33 @@ func (this *CompanyController) Receive() {
 		productName = utils.COMPANY_PRODUCT_RAI_NAME
 	}
 
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		//查询客户的产品权限
+		companyReportPermissionListOld, err := company.GetCompanyReportPermission(req.CompanyId, productId)
+		if err != nil {
+			br.Msg = "查询客户的产品权限异常"
+			br.ErrMsg = "查询客户的产品权限异常:" + err.Error()
+			return
+		}
+		var permissionArr []string
+		for _, v := range companyReportPermissionListOld {
+			permissionArr = append(permissionArr, strconv.Itoa(v.ChartPermissionId))
+		}
+		//如果所选行业不属于研选订阅跟研选扣点包,那就是非研选试用客户
+		if !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)) && !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.YAN_XUAN_KOU_DIAN_BAO_ID)) {
+			tryOutCountRai, err := company.GetRaiCompanyTryOutCountNoResearch(req.SellsId)
+			if err != nil {
+				br.Msg = "判断试用客户量失败"
+				br.ErrMsg = "判断试用客户量失败,Err:" + err.Error()
+				return
+			}
+			if tryOutCountRai >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
+				br.Msg = "非研选试用客户最多30家"
+				return
+			}
+		}
+	}
+
 	if cp != nil {
 		if cp.Status != utils.COMPANY_STATUS_LOSE {
 			br.Msg = "客户状态为:" + cp.Status + ";不可领取"
@@ -5164,6 +5234,34 @@ func (this *CompanyController) MoveSeller() {
 		br.ErrMsg = "无效的客户类型"
 		return
 	}
+
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		//查询客户的产品权限
+		companyReportPermissionListOld, err := company.GetCompanyReportPermission(req.CompanyId, productId)
+		if err != nil {
+			br.Msg = "查询客户的产品权限异常"
+			br.ErrMsg = "查询客户的产品权限异常:" + err.Error()
+			return
+		}
+		var permissionArr []string
+		for _, v := range companyReportPermissionListOld {
+			permissionArr = append(permissionArr, strconv.Itoa(v.ChartPermissionId))
+		}
+		//如果所选行业不属于研选订阅跟研选扣点包,那就是非研选试用客户
+		if !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)) && !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.YAN_XUAN_KOU_DIAN_BAO_ID)) {
+			tryOutCountRai, err := company.GetRaiCompanyTryOutCountNoResearch(req.SellsId)
+			if err != nil {
+				br.Msg = "判断试用客户量失败"
+				br.ErrMsg = "判断试用客户量失败,Err:" + err.Error()
+				return
+			}
+			if tryOutCountRai >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
+				br.Msg = seller.RealName + "的非研选试用客户已超过30家"
+				return
+			}
+		}
+	}
+
 	cp, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		if err.Error() == utils.ErrNoRow() {
@@ -5175,7 +5273,6 @@ func (this *CompanyController) MoveSeller() {
 		br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 		return
 	}
-	fmt.Println(cp)
 	if cp == nil {
 		br.Msg = "客户信息不存在,请刷新页面"
 		br.ErrMsg = "客户信息不存在"

+ 15 - 0
controllers/company_apply_v2.go

@@ -1464,6 +1464,21 @@ func (this *CompanyApplyController) ApplyThaw() {
 			br.ErrMsg = "获取客户申请的次数失败,Err:" + err.Error()
 			return
 		}
+
+		permissionArr := strings.Split(req.PermissionIds, ",")
+		//如果所选行业不属于研选订阅跟研选扣点包,那就是非研选试用客户
+		if !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)) && !utils.InArrayByStr(permissionArr, strconv.Itoa(utils.YAN_XUAN_KOU_DIAN_BAO_ID)) {
+			tryOutCountRai, err := company.GetRaiCompanyTryOutCountNoResearch(sysUser.AdminId)
+			if err != nil {
+				br.Msg = "判断试用客户量失败"
+				br.ErrMsg = "判断试用客户量失败,Err:" + err.Error()
+				return
+			}
+			if tryOutCountRai >= utils.COMPANY_STATUS_TRY_OUT_COUNT_RAI {
+				br.Msg = "非研选试用客户最多30家"
+				return
+			}
+		}
 	}
 	companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId)
 	if err != nil {

+ 26 - 7
models/company/company.go

@@ -90,7 +90,7 @@ type CompanySearchItem struct {
 	RegionType          string `description:"地区类型,国内,国外"`
 	ShareSeller         string `description:"共享销售员"`
 	ShareSellerId       int    `description:"共享销售员id"`
-	ShareSellerIds  	string `description:"共享销售员id"`
+	ShareSellerIds      string `description:"共享销售员id"`
 	IsShare             int    `description:"0:非共享用户,1:共享客户"`
 	IsScrounge          int    `description:"是否白嫖 0不是 1是"`
 	IsSigning           int    `description:"是否签约过,1是,0否"`
@@ -160,7 +160,7 @@ type CompanyItem struct {
 	FreezeReason        string `description:"冻结理由"`
 	LossTime            string `description:"流失时间"`
 	Status              string `description:"客户状态:'试用','永续','冻结','流失','正式' "`
-	StatusStr       	string `description:"客户状态:'试用','永续','冻结','流失','正式' 如果是共享客户会加上 '(共享)'" `
+	StatusStr           string `description:"客户状态:'试用','永续','冻结','流失','正式' 如果是共享客户会加上 '(共享)'" `
 	CompanyType         string `description:"客户类型:ficc/权益"`
 	ApproveStatus       string `description:"审批状态:'待审批','已审批','驳回' 审批状态为空时,表示没有审批申请"`
 	SellerName          string `description:"销售:吉根龙/颖丹"`
@@ -168,7 +168,7 @@ type CompanyItem struct {
 	SellerIds           string `description:"销售ID集合,包含ficc和权益的销售id"`
 	ShareSeller         string `description:"共享销售员"`
 	ShareSellerId       int    `description:"共享销售员id"`
-	ShareSellerIds   	string `description:"共享销售员ids"`
+	ShareSellerIds      string `description:"共享销售员ids"`
 	PackageTypes        string `description:"套餐类型集合,包含ficc和权益的套餐类型" json:"-"`
 	FiccPackageType     int    `description:"ficc的套餐类型"`
 	ExpireDay           string `description:"到期天数"`
@@ -219,9 +219,10 @@ type CompanyItem struct {
 	IsSigning           int                  `description:"是否签约过,1是,0否"`
 	SigningStatus       string               `description:"签约状态,已签约过/未签约过"`
 	CompanyStatusButton *CompanyStatusButton
-	Nation              string 				 `description:"所属国家"`
-	LatestServiceRecord time.Time               `description:"最近沟通时间"`
-	FirstDate           time.Time            `description:"首次服务时间"`}
+	Nation              string    `description:"所属国家"`
+	LatestServiceRecord time.Time `description:"最近沟通时间"`
+	FirstDate           time.Time `description:"首次服务时间"`
+}
 
 type CompanyListItem struct {
 	CompanyId           int    `orm:"column(company_id);pk"`
@@ -281,7 +282,7 @@ type CompanyListItem struct {
 	IsShare             int                  `description:"0:非共享用户,1:共享客户"`
 	ShareSeller         string               `description:"共享销售员"`
 	ShareSellerId       int                  `description:"共享销售员id"`
-	ShareSellerIds   	string 				 `description:"共享销售员ids"`
+	ShareSellerIds      string               `description:"共享销售员ids"`
 	LastServiceTime     string               `description:"最后服务时间"`
 	ServiceTimes        int                  `description:"服务次数"`
 	CloseReason         string               `description:"关闭客户原因"`
@@ -708,6 +709,24 @@ func GetCompanyTryOutCount(status string, sellerId int) (count int, err error) {
 	return
 }
 
+// 获取权益销售开通的非研选试用客户数量
+func GetRaiCompanyTryOutCountNoResearch(sellerId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			COUNT( DISTINCT a.company_id ) AS count
+		FROM
+			company AS a
+			INNER JOIN company_product AS b ON a.company_id = b.company_id
+			INNER JOIN company_report_permission AS p ON p.company_id = a.company_id 
+		WHERE
+			b.status = '试用' 
+			AND p.status = '试用' 
+			AND b.seller_id = ? 
+			AND p.chart_permission_id  NOT IN(31,52) `
+	err = o.Raw(sql, sellerId).QueryRow(&count)
+	return
+}
+
 type CompanySearchResp struct {
 	List []*CompanyItem
 }

+ 1 - 1
utils/constants.go

@@ -105,7 +105,7 @@ const (
 	COMPANY_STATUS_CLOSE             = "关闭"
 	COMPANY_STATUS_CLOSE_FLAG        = "close"
 	COMPANY_STATUS_TRY_OUT_COUNT     = 60
-	COMPANY_STATUS_TRY_OUT_COUNT_RAI = 30 // 权益试用客户上限
+	COMPANY_STATUS_TRY_OUT_COUNT_RAI = 3 // 权益试用客户上限
 
 	COMPANY_APPROVE_STATUS = "待审批"
 )