瀏覽代碼

活动列表页权限优化

xingzai 3 年之前
父節點
當前提交
1a8ff65d52
共有 1 個文件被更改,包括 22 次插入29 次删除
  1. 22 29
      controllers/activity.go

+ 22 - 29
controllers/activity.go

@@ -123,28 +123,22 @@ func (this *ActivityCoAntroller) ActivityList() {
 			br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
 			return
 		}
+		permissionStr, err = models.GetCompanyPermission(user.CompanyId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+			return
+		}
 		//1、永续客户
 		//2、大套餐客户(4个行业全开通的正式客户)
 		//3、分行业套餐客户(开通对应行业的正式客户)
 		//4、仅开通专家套餐的正式客户
 		//5、开通对应行业套餐或专家套餐的试用客户
 		if companyDetail.Status == "永续" {
-			permissionStr, err = models.GetCompanyPermission(user.CompanyId)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				return
-			}
 			userType = 1
 		} else if companyDetail.Status == "试用" {
 			userType = 5
 		} else if companyDetail.Status == "正式" {
-			permissionStr, err = models.GetCompanyPermission(user.CompanyId)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				return
-			}
 			if permissionStr == "专家" {
 				userType = 4
 			} else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
@@ -176,29 +170,28 @@ func (this *ActivityCoAntroller) ActivityList() {
 		permissionSqlStr += "'" + v + "',"
 	}
 	permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
-	fmt.Println(permissionSqlStr)
 	permissionSqlStr = ` AND art.chart_permission_name  IN (` + permissionSqlStr + `)`
-	if userType == 3 && strings.Contains(permissionStr, "专家") {
-		sqlExport = `	OR ( art.is_limit_people = 1 AND   art.customer_type_ids LIKE '%4%'   ` + permissionSqlStr + `) `
+	sqlExport = ` AND (art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
+	if userType == 1 || userType == 2 {
+		sqlExport += ` OR  art.customer_type_ids LIKE '%3%' `
+	}
+	if (userType == 1 || userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
+		sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
 	}
+	sqlExport += `) `
 
 	if keyWord != "" {
 		slicekeyWord := strings.Split(keyWord, ",")
-		var sqlOr string
+		var sqlKeyOr string
 		if len(slicekeyWord) >= 2 {
 			for _, v := range slicekeyWord {
-				sqlOr += `  OR art.activity_name LIKE '%` + v + `%' `
+				sqlKeyOr += `  OR art.activity_name LIKE '%` + v + `%' `
 			}
-			condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ` + sqlOr + ` )`
+			condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ` + sqlKeyOr + ` )`
 		} else {
 			condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' )`
 		}
 	}
-
-	//if userType == 3 {
-
-	//}
-
 	//行业名称
 	if len(chartPermissionIds) > 0 {
 		condition += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `)`
@@ -223,17 +216,17 @@ func (this *ActivityCoAntroller) ActivityList() {
 		condition += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
 	}
 
-	condition += ` AND (art.is_limit_people = 0 OR(art.is_limit_people = 1 AND art.customer_type_ids LIKE'%` + strconv.Itoa(userType) + `%')  ` + sqlExport + permissionSqlStr + `) `
 	if activeState != "" {
 		condition += ` AND art.active_state  IN (` + activeState + `)`
 	}
+	condition += ` AND art.publish_status = 1 `
 	var conditionOr string
-	if strings.Contains(permissionStr, "专家") {
-		conditionOr = `	OR ( art.activity_type_id IN ( 1,2,3 ) AND art.publish_status = 1 ` + condition + `) `
+	if strings.Contains(permissionStr, "专家") && (userType == 1 || userType == 2 || userType == 3 || userType == 4) {
+		conditionOr = `	OR (  art.is_limit_people = 0 	AND art.activity_type_id IN ( 1,3 )  ` + condition + `) `
+		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%'	AND art.activity_type_id IN ( 1,3 )  ` + condition + `) `
 	}
-	condition += ` AND art.publish_status = 1 `
-
-	condition += ` AND art.chart_permission_name  ` + permissionSqlStr + conditionOr
+	conditionOr += `	OR ( art.is_limit_people = 0 	  ` + permissionSqlStr + condition + `) `
+	condition += ` AND art.is_limit_people = 1 ` + permissionSqlStr + sqlExport + conditionOr
 	total, err := models.GetActivityCount(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"