瀏覽代碼

Merge branch 'cygx_9.3.1_0' of http://8.136.199.33:3000/hongze/hongze_cygx into debug

xingzai 2 年之前
父節點
當前提交
6d327c64be
共有 6 個文件被更改,包括 133 次插入50 次删除
  1. 3 2
      models/activity.go
  2. 12 12
      models/chart.go
  3. 6 7
      models/company.go
  4. 4 4
      models/company_activity_trip.go
  5. 93 25
      services/activity.go
  6. 15 0
      services/admin.go

+ 3 - 2
models/activity.go

@@ -84,8 +84,9 @@ type ActivitySingnupRep struct {
 }
 
 type ActivityCcustomerType struct {
-	CustomerTypeId int    `description:"活动类型id"`
-	CustomerName   string `description:"活动名称"`
+	CustomerTypeId  int    `description:"活动类型id"`
+	CustomerName    string `description:"活动名称"`
+	PermissionValue string `description:"用户权限对应的值"`
 }
 
 type ActivityCcustomerTypeList struct {

+ 12 - 12
models/chart.go

@@ -98,14 +98,14 @@ func GetChartCountById(chartId int) (count int, err error) {
 	return
 }
 
-//新增图表
+// 新增图表
 func AddCygxChart(item *CygxChart) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
 	return
 }
 
-//标签分类
+// 标签分类
 type ChartPtagResultApi struct {
 	Data []ChartPtagResultApidate `json:"data"`
 	Code int                      `json:"code"`
@@ -167,7 +167,7 @@ type ChartCollectReq struct {
 	ChartId int `description:"图表ID"`
 }
 
-//获取图表列表
+// 获取图表列表
 func GetChartList(condition string, pars []interface{}, startSize, pageSize int) (items []*HomeChartListResp, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM cygx_chart AS a WHERE a.publish_status=1 `
@@ -179,7 +179,7 @@ func GetChartList(condition string, pars []interface{}, startSize, pageSize int)
 	return
 }
 
-//获取所有同步过来的图表
+// 获取所有同步过来的图表
 func GetChartListAll() (items []*HomeChartListResp, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT chart_id FROM cygx_chart  `
@@ -195,7 +195,7 @@ func GetChartListAll() (items []*HomeChartListResp, err error) {
 //	return
 //}
 
-//获取图表列表
+// 获取图表列表
 func GetChartListCollection(chartIds string, userId, startSize, pageSize int) (items []*HomeChartListResp, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT a.*,
@@ -208,7 +208,7 @@ func GetChartListCollection(chartIds string, userId, startSize, pageSize int) (i
 			LEFT JOIN cygx_chart_top AS t ON t.chart_id = a.chart_id
 			LEFT JOIN cygx_chart_collect AS c ON c.chart_id = a.chart_id 
 		WHERE
-			a.publish_status = 1 
+			1=1
 			AND a.chart_id IN (` + chartIds + `) 
 		GROUP BY
 			a.chart_id 
@@ -219,7 +219,7 @@ func GetChartListCollection(chartIds string, userId, startSize, pageSize int) (i
 	return
 }
 
-//获取图表列表
+// 获取图表列表
 func GetChartListCollectionNew(condition string, pars []interface{}, userId, startSize, pageSize int) (items []*HomeChartListResp, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT a.*,
@@ -244,7 +244,7 @@ func GetChartListCollectionNew(condition string, pars []interface{}, userId, sta
 	return
 }
 
-//获取图表列表本地
+// 获取图表列表本地
 func GetChartListCollectionWithCygx(userId, startSize, pageSize int) (items []*HomeChartListResp, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT
@@ -258,7 +258,7 @@ func GetChartListCollectionWithCygx(userId, startSize, pageSize int) (items []*H
 			INNER JOIN cygx_chart AS a ON c.chart_id = a.chart_id
 			LEFT JOIN cygx_chart_top AS t ON t.chart_id = a.chart_id 
 		WHERE
-			a.publish_status = 1 
+			1=1 
 			AND c.user_id =? 
 		GROUP BY
 			a.chart_id 
@@ -276,7 +276,7 @@ func GetChartListConfig() (items []*HomeChartListResp, err error) {
 	return
 }
 
-//获取图表数量
+// 获取图表数量
 func GetChartCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT COUNT(1) AS count
@@ -289,12 +289,12 @@ func GetChartCount(condition string, pars []interface{}) (count int, err error)
 	return
 }
 
-//获取图表数量
+// 获取图表数量
 func GetChartCollentCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT COUNT(1) AS count
                 FROM cygx_chart_all AS a
-                WHERE a.publish_status=1 `
+                WHERE  1=1  `
 	if condition != "" {
 		sql += condition
 	}

+ 6 - 7
models/company.go

@@ -128,7 +128,7 @@ func GetCompanyPermissionList(companyId int) (items []*PermissionItem, 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
@@ -142,7 +142,7 @@ func GetCompanyPermissionByUserNoStatus(companyId int) (permission string, err e
 	return
 }
 
-//获取正式权限
+// 获取正式权限
 func GetCompanyPermissionByUserZhengShi(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
@@ -186,7 +186,7 @@ func GetCompanyDetailAllById(companyId int) (item *CompanyDetail, err error) {
 	return
 }
 
-//获取对应销售以及销售的手机号
+// 获取对应销售以及销售的手机号
 func GetSellerDetailAllByCompanyId(companyId int) (item *CompanyDetail, err error) {
 	sql := ` SELECT c.mobile ,c.real_name as seller_name
 			FROM
@@ -213,7 +213,6 @@ func GetCompanySellerName(companyId int) (sellerName string, err error) {
 	return
 }
 
-
 type CompanyProductStatus struct {
 	IsSuspend int `description:"1:暂停,0:启用"`
 }
@@ -230,7 +229,7 @@ func GetCompanyProductDetail(companyId, productId int) (item *CompanyProductDeti
 	return
 }
 
-//获取公司详情详情
+// 获取公司详情详情
 func GetCompanyByName(companyName string) (item *Company, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT *  FROM company WHERE company_name = ? LIMIT 1`
@@ -238,7 +237,7 @@ func GetCompanyByName(companyName string) (item *Company, err error) {
 	return
 }
 
-//获取公司详情详情
+// 获取公司详情详情
 func GetCompanyByThirdName(tripartiteCompanyCode string) (item *Company, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT *  FROM company WHERE tripartite_company_code = ? LIMIT 1`
@@ -246,7 +245,7 @@ func GetCompanyByThirdName(tripartiteCompanyCode string) (item *Company, err err
 	return
 }
 
-//更新机构互动量
+// 更新机构互动量
 func UpdateComapanyInteractionNum(interactionNum, companyId int) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE company SET interaction_num = ? WHERE company_id=? `

+ 4 - 4
models/company_activity_trip.go

@@ -60,9 +60,9 @@ func GetCompanyPermissionByUserTrip(companyId int) (permission string, err error
 	return
 }
 
-//获取正式权限
+// 获取正式权限
 func GetCompanyPermissionByUserZhengShiTrip(companyId int) (permission string, err error) {
-	sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark  ORDER BY b.sort ASC  SEPARATOR ',') AS permission
+	sql := ` SELECT GROUP_CONCAT(DISTINCT b.chart_permission_name  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
@@ -76,7 +76,7 @@ func GetCompanyPermissionByUserZhengShiTrip(companyId int) (permission string, e
 	return
 }
 
-//GetCompanyReportPermissionUpgrade 获取升级的权限类型
+// GetCompanyReportPermissionUpgrade 获取升级的权限类型
 func GetCompanyReportPermissionUpgrade(companyId, productId int) (items []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
@@ -109,7 +109,7 @@ func GetChartPermissionByIds(permissionIds []string) (list []*ChartPermission, e
 	return
 }
 
-//GetCompanyPermissionNameCheck 通过名称判断客户是否开了某一类型的权限
+// GetCompanyPermissionNameCheck 通过名称判断客户是否开了某一类型的权限
 func GetCompanyPermissionNameCheck(companyId, productId int, permissionName string) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT

+ 93 - 25
services/activity.go

@@ -330,7 +330,7 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				err = errs
 				return
 			}
-			permissionStr, errs = models.GetCompanyPermissionByUser(companyId)
+			permissionStr, errs = models.GetCompanyPermission(companyId)
 			if errs != nil {
 				err = errs
 				return
@@ -341,32 +341,34 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				return
 			}
 
-			//1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户
+			//1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户、 10: 30W套餐客户
 			//大套餐客户定义:医药、消费、科技、智造、策略。5个行业中任意4个及以上是正式权限的,属于大套餐客户(医药、消费、科技、智造需要主客观都开)
 			if companyDetail.Status == "永续" {
 				userType = 1
 			} else if companyDetail.Status == "试用" {
 				userType = 5
 			} else if companyDetail.Status == "正式" {
-				if permissionStr == "专家" {
-					userType = 4
-				} else if strings.Count(permissionZhengShiStr, "医药") == 2 && strings.Count(permissionZhengShiStr, "消费") == 2 && strings.Count(permissionZhengShiStr, "科技") == 2 && strings.Count(permissionZhengShiStr, "智造") == 2 {
-					userType = 2
-				} else {
-					userType = 3
-				}
-				if userType == 3 {
-					if !strings.Contains(permissionStr, "医药") && !strings.Contains(permissionStr, "消费") && !strings.Contains(permissionStr, "科技") && !strings.Contains(permissionStr, "智造") {
-						userType = 4
-					}
-				}
+				userType = 0
+				//if permissionStr == "专家" {
+				//	userType = 4
+				//}
+				//else if strings.Count(permissionZhengShiStr, "医药") == 2 && strings.Count(permissionZhengShiStr, "消费") == 2 && strings.Count(permissionZhengShiStr, "科技") == 2 && strings.Count(permissionZhengShiStr, "智造") == 2 && strings.Count(permissionZhengShiStr, "策略") == 1 {
+				//	userType = 2
+				//} else {
+				//	userType = 3
+				//}
+				//if userType == 3 {
+				//	if !strings.Contains(permissionStr, "医药") && !strings.Contains(permissionStr, "消费") && !strings.Contains(permissionStr, "科技") && !strings.Contains(permissionStr, "智造") {
+				//		userType = 4
+				//	}
+				//}
 			} else if companyDetail.Status == "冻结" {
 				userType = 6
 			} else if companyDetail.Status == "流失" {
 				userType = 7
 			}
 			//大套餐客户定义:医药、消费、科技、智造、策略。5个行业中任意4个及以上是正式权限的,属于大套餐客户(医药、消费、科技、智造需要主客观都开)
-			if userType == 3 {
+			if userType == 0 && companyDetail.Status == "正式" {
 				var permissionZhegnshiNum int
 				if strings.Count(permissionZhengShiStr, "医药") == 2 {
 					permissionZhegnshiNum++
@@ -383,8 +385,19 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				if strings.Count(permissionZhengShiStr, "策略") == 1 {
 					permissionZhegnshiNum++
 				}
-				if permissionZhegnshiNum >= 4 {
+				if permissionZhegnshiNum == 5 {
 					userType = 2
+				} else if permissionZhegnshiNum == 4 {
+					userType = 10
+				} else {
+					permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(companyId)
+					if errs != nil {
+						err = errs
+						return
+					}
+					if permissionShengji != "" {
+						userType = 9
+					}
 				}
 			}
 		}
@@ -534,25 +547,31 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	permissionNameStr = strings.Replace(permissionNameStr, "(客观)", "", -1)
 	permissionNameStr = strings.TrimRight(permissionNameStr, ",")
 
+	mapUserType, e := GetActivityCcustomerTypeList()
+	if e != nil {
+		err = e
+		return
+	}
+	var userTypeStr string
+	userTypeStr = mapUserType[userType]
 	// 查研观向7.4-始终查询宏观的权限(无论是否有权限)
 	if permissionNameStr == `` {
 		permissionNameStr = `'宏观'`
 	} else {
 		permissionNameStr += `, '宏观'`
 	}
-
 	var condition string
 	var conditionAdmin string
 	var conditionHz string // 弘则权限处理
 	var sqlExport string   // 专家权限处理
 	permissionSqlStr = `  AND art.chart_permission_name  IN (` + permissionNameStr + `)`
-	sqlExport = ` AND (art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
-	if userType == 2 {
-		sqlExport += ` OR  art.customer_type_ids LIKE '%3%' `
-	}
-	if (userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
-		sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
-	}
+	sqlExport = ` AND (art.customer_type_ids LIKE '%` + userTypeStr + `%' `
+	//if userType == 2 {
+	//	sqlExport += ` OR  art.customer_type_ids LIKE '%3%' `
+	//}
+	//if (userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
+	//	sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
+	//}
 	sqlExport += `) `
 	// 如果是C类电话会就不展示内容,且合并到分析师电话会
 	if activityTypeId != "" {
@@ -686,6 +705,55 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	//查询全部可见的数据(是否全部客户可见)
 	//condition += ` AND art.visible_range != 1  AND art.publish_status = 1 `
 	condition += `   AND art.publish_status = 1 `
+
+	permissionZhengShiStr, errs := models.GetCompanyPermissionByUserZhengShi(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	//3:该活动对应行业为正式状态的客户 查询处理
+	if permissionZhengShiStr != "" {
+		slicePerZhengshi := strings.Split(permissionZhengShiStr, ",")
+		permissionZhengShiStr = ""
+		for _, v := range slicePerZhengshi {
+			if userType == 1 {
+				//研选权限处理(永续客户无法查看研选)
+				if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
+					permissionZhengShiStr += "'" + v + "',"
+				}
+			} else {
+				permissionZhengShiStr += "'" + v + "',"
+			}
+		}
+		permissionZhengShiStr = strings.Replace(permissionZhengShiStr, "(主观)", "", -1)
+		permissionZhengShiStr = strings.Replace(permissionZhengShiStr, "(客观)", "", -1)
+		permissionZhengShiStr = strings.TrimRight(permissionZhengShiStr, ",")
+		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%3%'	   AND art.chart_permission_name  IN (` + permissionZhengShiStr + `)` + condition + `) `
+	}
+
+	// 8: 行业升级套餐客户:该活动对应行业为升级权限的客户
+	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	if permissionShengji != "" {
+		slicePerShengji := strings.Split(permissionShengji, ",")
+		permissionShengji = ""
+		for _, v := range slicePerShengji {
+			if userType == 1 {
+				//研选权限处理(永续客户无法查看研选)
+				if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
+					permissionShengji += "'" + v + "',"
+				}
+			} else {
+				permissionShengji += "'" + v + "',"
+			}
+		}
+		permissionShengji = strings.TrimRight(permissionShengji, ",")
+		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%8%'	   AND art.chart_permission_name  IN (` + permissionShengji + `)` + condition + `) `
+	}
+
 	conditionHz = condition
 
 	//活动仅决策人可见
@@ -715,7 +783,7 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	}
 
 	if adminIds != "" {
-		conditionOr += ` OR (  art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' ` + ` AND  art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
+		conditionOr += ` OR (  art.customer_type_ids LIKE '%` + userTypeStr + `%' ` + ` AND  art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
 		if companyProduct != nil {
 			if companyProduct.Scale != "" {
 				conditionOr += ` OR (  art.scale LIKE '%` + companyProduct.Scale + `%'` + ` AND  art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `

+ 15 - 0
services/admin.go

@@ -15,3 +15,18 @@ func GetAdminMobileMap() (mapItem map[string]string, err error) {
 	mapItem = mapMobile
 	return
 }
+
+func GetActivityCcustomerTypeList() (mapItem map[int]string, err error) {
+	list, e := models.GetActivityCcustomerTypeList()
+	if e != nil {
+		err = e
+		return
+	}
+	mapUserType := make(map[int]string)
+	for _, v := range list {
+		mapUserType[v.CustomerTypeId] = v.PermissionValue
+	}
+	mapUserType[0] = "0"
+	mapItem = mapUserType
+	return
+}