Răsfoiți Sursa

C类电话会

xingzai 2 ani în urmă
părinte
comite
49c5e70176
6 a modificat fișierele cu 110 adăugiri și 4 ștergeri
  1. 64 2
      controllers/activity.go
  2. 14 0
      models/company.go
  3. 23 0
      models/seller.go
  4. 1 0
      models/wx_user.go
  5. 6 2
      services/activity.go
  6. 2 0
      utils/constants.go

+ 64 - 2
controllers/activity.go

@@ -3256,6 +3256,12 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 	if activeState == "undefined" || activeState == "" {
 		activeState = "1"
 	}
+	adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取本组下的销售失败,Err:" + err.Error()
+		return
+	}
 	userType, permissionStr, err := services.GetUserType(user.CompanyId)
 	if err != nil {
 		br.Msg = "获取失败"
@@ -3296,10 +3302,17 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 		br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 		return
 	}
+	isMaker := user.IsMaker
+
 	var sqlExport string
 	resp := new(models.ActivityTypeListHomeResp)
 	for k, v := range list {
+		// 如果是C类电话会就不展示内容,且合并到分析师电话会
+		if v.ActivityTypeId == utils.C_CLASS_ACTIVITY_TYPE_ID {
+			continue
+		}
 		var condition string
+		var conditionAdmin string
 		permissionSqlStr = ` AND art.chart_permission_name  IN (` + permissionNameStr + `)`
 		sqlExport = ` AND (art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
 		if userType == 2 {
@@ -3309,7 +3322,16 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 			sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
 		}
 		sqlExport += `) `
-		condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + strconv.Itoa(v.ActivityTypeId)
+		if v.ActivityTypeId == utils.ANALYST_TELL_ACTIVITY_TYPE_ID {
+			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id IN (` + strconv.Itoa(v.ActivityTypeId) + "," + strconv.Itoa(utils.C_CLASS_ACTIVITY_TYPE_ID) + `)`
+		} else {
+			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + strconv.Itoa(v.ActivityTypeId)
+		}
+		//活动仅决策人可见
+		if isMaker == 0 {
+			condition += ` AND art.is_maker_show = 0  `
+		}
+
 		if isPower == 1 {
 			condition += permissionSqlStr
 		}
@@ -3344,6 +3366,10 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 		} else {
 			condition += ` AND art.active_state  IN (1,2)`
 		}
+		conditionAdmin = condition
+		//查询全部可见的数据(是否全部客户可见)
+		condition += ` AND art.visible_range != 1  `
+
 		if (userType == 2 || userType == 3 || userType == 4) && strings.Contains(permissionStr, "专家") {
 			conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%'	 ` + condition + `) `
 		}
@@ -3360,6 +3386,10 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 				conditionOr += ` OR (  art.scale LIKE '%` + companyProduct.Scale + `%'	 ` + condition + `) `
 			}
 		}
+		if adminIds != "" {
+			conditionOr += ` OR ( art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
+		}
+
 		condition += `AND art.is_limit_people = 1 ` + permissionSqlStr + sqlExport + conditionOr
 		sortTime = ` mintimesort ASC `
 		labelList, err := models.GetActivityLabelListAll(condition, sortTime, pars, startSize, pageSize)
@@ -4273,12 +4303,19 @@ func (this *ActivityCoAntroller) LabelTypeListV6Pc() {
 	if activeState == "undefined" || activeState == "" || activeState == "1" {
 		activeState = "1,2"
 	}
+	adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取本组下的销售失败,Err:" + err.Error()
+		return
+	}
 	userType, permissionStr, err := services.GetUserType(user.CompanyId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	isMaker := user.IsMaker
 
 	var startSize int
 	pageSize = 8
@@ -4326,9 +4363,24 @@ func (this *ActivityCoAntroller) LabelTypeListV6Pc() {
 	sqlExport += `) `
 	resp := new(models.ActivityTypeListHomeRespPc)
 	for k, v := range list {
+		// 如果是C类电话会就不展示内容,且合并到分析师电话会
+		if v.ActivityTypeId == utils.C_CLASS_ACTIVITY_TYPE_ID {
+			continue
+		}
 		var condition string
+		var conditionAdmin string
 		permissionSqlStr = ` AND art.chart_permission_name  IN (` + permissionNameStr + `)`
-		condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + strconv.Itoa(v.ActivityTypeId)
+		if v.ActivityTypeId == utils.ANALYST_TELL_ACTIVITY_TYPE_ID {
+			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id IN (` + strconv.Itoa(v.ActivityTypeId) + "," + strconv.Itoa(utils.C_CLASS_ACTIVITY_TYPE_ID) + `)`
+		} else {
+			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + strconv.Itoa(v.ActivityTypeId)
+		}
+		//活动仅决策人可见
+		if isMaker == 0 {
+			condition += ` AND art.is_maker_show = 0  `
+		}
+
+		//condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + strconv.Itoa(v.ActivityTypeId)
 		if isPower == 1 {
 			condition += permissionSqlStr
 		}
@@ -4353,11 +4405,17 @@ func (this *ActivityCoAntroller) LabelTypeListV6Pc() {
 			condition += ` AND art.activity_time >= ` + "'" + startDate + " 00:00:00'"
 			condition += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
 		}
+
 		if activeState != "" {
 			condition += ` AND art.active_state  IN (` + activeState + `)`
 		} else {
 			condition += ` AND art.active_state  IN (1,2)`
 		}
+
+		conditionAdmin = condition
+		//查询全部可见的数据(是否全部客户可见)
+		condition += ` AND art.visible_range != 1  `
+
 		if (userType == 2 || userType == 3 || userType == 4) && strings.Contains(permissionStr, "专家") {
 			conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%'	 ` + condition + `) `
 		}
@@ -4375,6 +4433,10 @@ func (this *ActivityCoAntroller) LabelTypeListV6Pc() {
 				conditionOr += ` OR (  art.scale LIKE '%` + companyProduct.Scale + `%'	 ` + condition + `) `
 			}
 		}
+
+		if adminIds != "" {
+			conditionOr += ` OR ( art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
+		}
 		condition += `AND art.is_limit_people = 1 ` + permissionSqlStr + sqlExport + conditionOr
 		sortTime = ` mintimesort ASC `
 		labelList, err := models.GetActivityLabelListAll(condition, sortTime, pars, startSize, pageSize)

+ 14 - 0
models/company.go

@@ -106,6 +106,20 @@ func GetCompanyPermissionByUser(companyId int) (permission string, err error) {
 	return
 }
 
+//获取用户权限不限制状态
+func GetCompanyPermissionByUserNoStatus(companyId int) (permission string, err error) {
+	sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark  ORDER BY b.sort ASC  SEPARATOR ',') AS permission
+			FROM company_report_permission AS a
+			INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
+			INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
+			WHERE  a.company_id=?
+			AND c.is_suspend=0
+            AND b.cygx_auth=1`
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId).QueryRow(&permission)
+	return
+}
+
 //获取正式权限
 func GetCompanyPermissionByUserZhengShi(companyId int) (permission string, err error) {
 	sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark  ORDER BY b.sort ASC  SEPARATOR ',') AS permission

+ 23 - 0
models/seller.go

@@ -46,3 +46,26 @@ func GetSellerByName(userName string) (item *AdminItem, err error) {
 	err = o.Raw(sql, userName).QueryRow(&item)
 	return
 }
+
+//获取本组的销售ID
+func GetSelleridWhichGroup(companyId, productId int) (adminId string, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+			GROUP_CONCAT( DISTINCT admin_id SEPARATOR ',' ) AS adminId
+			FROM
+			admin
+			WHERE
+			group_id IN (
+			SELECT
+			a.group_id
+			FROM
+			company_product AS a
+			INNER JOIN admin AS b ON a.seller_id = b.admin_id
+			INNER JOIN wx_user AS c ON b.mobile = c.mobile
+			WHERE
+			a.company_id = ?
+			AND a.product_id = ?
+)`
+	err = o.Raw(sql, companyId, productId).QueryRow(&adminId)
+	return
+}

+ 1 - 0
models/wx_user.go

@@ -82,6 +82,7 @@ type WxUserItem struct {
 	OutboundMobile      string    `description:"外呼手机号"`
 	OutboundCountryCode string    `description:"外呼手机号区号"`
 	IsMsgOutboundMobile int       `description:"是否弹窗过绑定外呼手机号区号"`
+	IsMaker             int       `description:"是否是决策人"`
 	Source              int
 }
 

+ 6 - 2
services/activity.go

@@ -308,7 +308,7 @@ func EditUserOutboundMobile(cont context.Context) (err error) {
 	return
 }
 
-//获取 用户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户
+//获取 用户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户;6、冻结客户;7、流失客户
 func GetUserType(companyId int) (userType int, permissionStrnew string, err error) {
 
 	var permissionStr, permissionZhegnshiStr string
@@ -328,7 +328,7 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				err = errs
 				return
 			}
-			permissionStr, errs = models.GetCompanyPermissionByUser(companyId)
+			permissionStr, errs = models.GetCompanyPermissionByUserNoStatus(companyId)
 			if errs != nil {
 				err = errs
 				return
@@ -357,6 +357,10 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 						userType = 4
 					}
 				}
+			} else if companyDetail.Status == "冻结" {
+				userType = 6
+			} else if companyDetail.Status == ";流失" {
+				userType = 7
 			}
 		}
 	}

+ 2 - 0
utils/constants.go

@@ -75,4 +75,6 @@ const (
 	CHART_PERMISSION_NAME_YANXUAN    = "研选"
 	CHART_PERMISSION_NAME_MF_YANXUAN = "买方研选"
 	CHART_PERMISSION_ID_YANXUAN      = 31
+	C_CLASS_ACTIVITY_TYPE_ID         = 7 //C类电话会会议ID
+	ANALYST_TELL_ACTIVITY_TYPE_ID    = 2 //分析师电话会ID
 )