xingzai 2 gadi atpakaļ
vecāks
revīzija
f6e8537781

+ 1 - 1
controllers/activity.go

@@ -70,6 +70,7 @@ func (this *ActivityController) LabelTypeList() {
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
+	//return
 
 	list, err := models.GetActivityTypeHomeList()
 	if err != nil {
@@ -80,7 +81,6 @@ func (this *ActivityController) LabelTypeList() {
 	list, err = services.HandleActivityTypeHomeList(list, activityList, user)
 
 	conditionActivitySpecial := services.ActivityLabelSpecialSql(chartPermissionIds, whichDay, activeState)
-
 	speciaItem, err := services.GetActivityLabelSpecialList(user, conditionActivitySpecial)
 	if err != nil {
 		br.Msg = "获取失败"

+ 17 - 3
models/activity_type.go

@@ -16,7 +16,7 @@ type ActivityTypeListResp struct {
 	List []*ActivityType
 }
 
-//列表
+// 列表
 func GetActivityTypeList() (items []*ActivityType, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM cygx_activity_type ORDER BY sort DESC`
@@ -44,7 +44,7 @@ type ActivityTypeHome struct {
 	List             []*CygxActivityLabelList
 }
 
-//活动详情
+// 活动详情
 type CygxActivityLabelList struct {
 	KeyWord           string `orm:"column(label)";description:"主题"`
 	ImgUrlBg          string `description:"背景图片"`
@@ -57,10 +57,24 @@ type CygxActivityLabelList struct {
 	TemporaryLabel    string `description:"临时标签"`
 }
 
-//列表
+// 列表
 func GetActivityTypeHomeList() (items []*ActivityTypeHome, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM cygx_activity_type WHERE activity_type_id != 7   ORDER BY sort DESC`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+type ActivityCcustomerType struct {
+	CustomerTypeId  int    `description:"活动类型id"`
+	CustomerName    string `description:"活动名称"`
+	PermissionValue string `description:"用户权限对应的值"`
+}
+
+// 列表
+func GetActivityCcustomerTypeList() (items []*ActivityCcustomerType, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_customer_type ORDER BY sort DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 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

+ 49 - 4
services/activity.go

@@ -53,6 +53,14 @@ 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 = `'宏观'`
@@ -65,10 +73,10 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	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%' `
-	}
+	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%' `
 	}
@@ -205,6 +213,32 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	//查询全部可见的数据(是否全部客户可见)
 	//condition += ` AND art.visible_range != 1  AND art.publish_status = 1 `
 	condition += `   AND art.publish_status = 1 `
+
+	if userType != 2 {
+		// 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
 
 	//活动仅决策人可见
@@ -819,6 +853,17 @@ func GetShareNoPowe(activityInfo *models.ActivityDetail, permissionStr string, u
 	if userType == 3 && !strings.Contains(permissionStr, "专家") && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(3)) {
 		noPower = true
 	}
+	if userType == 8 {
+		permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
+		if errs != nil {
+			err = errs
+			return
+		}
+		if !strings.Contains(permissionShengji, activityInfo.ChartPermissionName) {
+			noPower = true
+			return
+		}
+	}
 	if !noPower {
 		noPower, err = CheckUserPowerByActivityChoose(user, activityInfo)
 	}

+ 96 - 28
services/activity_special.go

@@ -77,8 +77,9 @@ func ActivityLabelSpecialSql(chartPermissionIds, whichDay, activeState string) (
 	condition += `  AND art.label != ''  AND art.is_offline = 0   `
 
 	if activeState == "1" {
-		conditionor := " OR  ( art.days = 0 )  " + condition
-		condition = condition + `  AND art.activity_time_end > ` + "'" + time.Now().Format(utils.FormatDateTime) + " '" + conditionor
+		//conditionor := " OR  ( art.days = 0 " + condition + " )  "
+		conditionor := ""
+		condition = condition + ` AND ( art.days > 0    AND art.activity_time_end > ` + "'" + time.Now().Format(utils.FormatDateTime) + " ' OR  ( art.days = 0 ) )" + conditionor
 	}
 
 	return
@@ -92,18 +93,17 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 		item = itemList
 		return
 	}
-	userType, e := GetSpecialUserType(user)
-	if e != nil {
-		err = errors.New("GetSpecialUserType, Err: " + e.Error())
-		return
-	}
-	if userType == 0 {
-		itemList.List = make([]*models.CygxActivityLabelList, 0)
-		item = itemList
-		return
-	}
+	//userType, e := GetSpecialUserType(user)
+	//if e != nil {
+	//	err = errors.New("GetSpecialUserType, Err: " + e.Error())
+	//	return
+	//}
+	//if userType == 0 {
+	//	itemList.List = make([]*models.CygxActivityLabelList, 0)
+	//	item = itemList
+	//	return
+	//}
 	companyDetail, e := models.GetCompanyDetailByIdGroupTrip(user.CompanyId)
-	fmt.Println(e)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
 		return
@@ -113,14 +113,16 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 	}
 	//如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
 	var condition string
+	var conditionUser string
+	var userType int
 	if companyDetail.Status == "永续" {
-		condition, e = HandleActivityLabelSpecialPermission(user)
+		conditionUser, e = HandleActivityLabelSpecialPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
 		}
 	} else {
-		condition, e = HandleActivityLabelSpecialTripPermission(user)
+		conditionUser, userType, e = HandleActivityLabelSpecialTripPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
@@ -128,7 +130,25 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 	}
 	var pars []interface{}
 	condition += ` AND art.publish_status = 1  AND art.label != ''  AND art.is_offline = 0 ` + conditionActivitySpecial
+	// 8: 行业升级套餐客户:该活动对应行业为升级权限的客户
+	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	var conditionOr string
+	if permissionShengji != "" && userType != 2 {
+		slicePerShengji := strings.Split(permissionShengji, ",")
+		permissionShengji = ""
+		for _, v := range slicePerShengji {
+			permissionShengji += "'" + v + "',"
+		}
+		permissionShengji = strings.TrimRight(permissionShengji, ",")
+		conditionOr += ` OR (  art.customer_type_ids LIKE '%8%' AND art.chart_permission_name  IN (` + permissionShengji + `)` + condition + `) `
+		pars = append(pars, pars)
+	}
 
+	condition += conditionUser + conditionOr
 	////行业名称
 	//if isPower == 1 {
 	//	condition += ` AND art.chart_permission_name  IN (` + permissionNameStr + `) `
@@ -138,6 +158,7 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 	//}
 	conditionTrip := condition
 	conditionTrip += ` AND art.days > 0  ORDER BY art.activity_time ASC `
+
 	specialList, err := models.GetActivityLabelSpecialListAll(conditionTrip, pars, 0, 8)
 	if err != nil {
 		return
@@ -194,21 +215,22 @@ func HandleActivityLabelSpecialPermission(user *models.WxUserItem) (condition st
 	}
 	permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
 	condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.is_offline = 0  `
-	if permissionSqlStr != "" {
-		condition += ` AND art.chart_permission_name  IN (` + permissionSqlStr + `) `
-	}
+	//if permissionSqlStr != "" {
+	//	condition += ` AND art.chart_permission_name  IN (` + permissionSqlStr + `) `
+	//}
 	condition += ` AND  art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
 	return
 }
 
 // HandleActivityLabelSpecialPermisseion 处理专项产业调研的查询权限sql
-func HandleActivityLabelSpecialTripPermission(user *models.WxUserItem) (condition string, err error) {
+func HandleActivityLabelSpecialTripPermission(user *models.WxUserItem) (condition string, userType int, err error) {
 	permissionStr, e := GetCompanyPermission(user.CompanyId)
 	if e != nil {
 		err = errors.New("GetCompanyPermission, Err: " + e.Error())
 		return
 	}
-	userType, e := GetSpecialUserType(user)
+	//userType, e := GetSpecialUserType(user)
+	userType, _, e = GetUserType(user.CompanyId)
 	if e != nil {
 		err = errors.New("GetSpecialUserType, Err: " + e.Error())
 		return
@@ -226,9 +248,9 @@ func HandleActivityLabelSpecialTripPermission(user *models.WxUserItem) (conditio
 	}
 	permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
 	condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.is_offline = 0  `
-	if permissionSqlStr != "" {
-		condition += ` AND art.chart_permission_name  IN (` + permissionSqlStr + `) `
-	}
+	//if permissionSqlStr != "" {
+	//	condition += ` AND art.chart_permission_name  IN (` + permissionSqlStr + `) `
+	//}
 	condition += ` AND  art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
 	return
 }
@@ -245,14 +267,16 @@ func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize
 	}
 	//如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
 	var condition string
+	var conditionUser string
+	var userType int
 	if companyDetail.Status == "永续" {
-		condition, e = HandleActivityLabelSpecialPermission(user)
+		conditionUser, e = HandleActivityLabelSpecialPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
 		}
 	} else {
-		condition, e = HandleActivityLabelSpecialTripPermission(user)
+		conditionUser, userType, e = HandleActivityLabelSpecialTripPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
@@ -265,6 +289,28 @@ func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize
 		condition += ` AND art.research_theme LIKE ? `
 		pars = append(pars, keywords)
 	}
+	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	var conditionOr string
+	if permissionShengji != "" && userType != 2 {
+		slicePerShengji := strings.Split(permissionShengji, ",")
+		permissionShengji = ""
+		for _, v := range slicePerShengji {
+			permissionShengji += "'" + v + "',"
+		}
+		permissionShengji = strings.TrimRight(permissionShengji, ",")
+		conditionOr += ` OR (  art.customer_type_ids LIKE '%8%' AND art.chart_permission_name  IN (` + permissionShengji + `)` + condition + `) `
+		pars = append(pars, pars)
+	}
+	condition += conditionUser + conditionOr
+	totalPrepare, e = models.GetActivitySpecialCount(condition, pars)
+	if e != nil {
+		err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
+		return
+	}
 	totalPrepare, e = models.GetActivitySpecialCount(condition, pars)
 	if e != nil {
 		err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
@@ -296,14 +342,16 @@ func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, page
 
 	//如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
 	var condition string
+	var conditionUser string
+	var userType int
 	if companyDetail.Status == "永续" {
-		condition, e = HandleActivityLabelSpecialPermission(user)
+		conditionUser, e = HandleActivityLabelSpecialPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
 		}
 	} else {
-		condition, e = HandleActivityLabelSpecialTripPermission(user)
+		conditionUser, userType, e = HandleActivityLabelSpecialTripPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
@@ -334,6 +382,25 @@ func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, page
 		condition += ` AND art.research_theme LIKE ? `
 		pars = append(pars, keywords)
 	}
+	// 8: 行业升级套餐客户:该活动对应行业为升级权限的客户
+	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	var conditionOr string
+	if permissionShengji != "" && userType != 2 {
+		slicePerShengji := strings.Split(permissionShengji, ",")
+		permissionShengji = ""
+		for _, v := range slicePerShengji {
+			permissionShengji += "'" + v + "',"
+		}
+		permissionShengji = strings.TrimRight(permissionShengji, ",")
+		conditionOr += ` OR (  art.customer_type_ids LIKE '%8%' AND art.chart_permission_name  IN (` + permissionShengji + `)` + condition + `) `
+		pars = append(pars, pars)
+	}
+
+	condition += conditionUser + conditionOr
 	totalConfirm, e = models.GetActivitySpecialCount(condition, pars)
 	if e != nil {
 		err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
@@ -735,7 +802,8 @@ func GetSpecialDetailUserPower(user *models.WxUserItem, activityInfo *models.Cyg
 	if !strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
 		return
 	}
-	userType, e := GetSpecialUserType(user)
+	//userType, e := GetSpecialUserType(user)
+	userType, _, e := GetUserType(user.CompanyId)
 	if e != nil {
 		err = errors.New("GetSpecialUserType, Err: " + e.Error())
 		return

+ 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
+}

+ 60 - 22
services/user.go

@@ -11,7 +11,7 @@ import (
 var ERR_NO_USER_RECORD = errors.New("用户关系没有入库")
 var ERR_USER_NOT_BIND = errors.New("用户没有绑定")
 
-//通过用户 关系表记录  和  用户记录  格式化返回 用户数据
+// 通过用户 关系表记录  和  用户记录  格式化返回 用户数据
 func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.UserRecord) {
 	wxUser.OpenId = userRecord.OpenId
 	wxUser.UnionId = userRecord.UnionId
@@ -47,10 +47,10 @@ func GetWxUserItemByOpenId(unionId string) (item *models.WxUserItem, err error)
 	return
 }
 
-//获取 用户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户;6、冻结客户;7、流失客户
+// 获取 用户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户;6、冻结客户;7、流失客户
 func GetUserType(companyId int) (userType int, permissionStrnew string, err error) {
 
-	var permissionStr, permissionZhegnshiStr string
+	var permissionStr, permissionZhengShiStr string
 	if companyId <= 1 {
 		userType = 0
 	} else {
@@ -67,47 +67,85 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				err = errs
 				return
 			}
-			permissionStr, errs = models.GetCompanyPermissionByUserNoStatus(companyId)
+			permissionStr, errs = models.GetCompanyPermission(companyId)
 			if errs != nil {
 				err = errs
 				return
 			}
-			permissionZhegnshiStr, errs = models.GetCompanyPermissionByUserZhengShi(companyId)
+			permissionZhengShiStr, errs = models.GetCompanyPermissionByUserZhengShi(companyId)
 			if errs != nil {
 				err = errs
 				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(permissionZhegnshiStr, "医药") == 2 && strings.Count(permissionZhegnshiStr, "消费") == 2 && strings.Count(permissionZhegnshiStr, "科技") == 2 && strings.Count(permissionZhegnshiStr, "智造") == 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 == 0 && companyDetail.Status == "正式" {
+				var permissionZhegnshiNum int
+				if strings.Count(permissionZhengShiStr, "医药") == 2 {
+					permissionZhegnshiNum++
+				}
+				if strings.Count(permissionZhengShiStr, "消费") == 2 {
+					permissionZhegnshiNum++
+				}
+				if strings.Count(permissionZhengShiStr, "科技") == 2 {
+					permissionZhegnshiNum++
+				}
+				if strings.Count(permissionZhengShiStr, "智造") == 2 {
+					permissionZhegnshiNum++
+				}
+				if strings.Count(permissionZhengShiStr, "策略") == 1 {
+					permissionZhegnshiNum++
+				}
+				if permissionZhegnshiNum == 5 {
+					userType = 2
+				} else if permissionZhegnshiNum == 4 {
+					userType = 10
+				} else {
+					permissionShengji, errs := models.GetCompanyPermissionByUserZhengShi(companyId)
+					if errs != nil {
+						err = errs
+						return
+					}
+					if permissionShengji != "" {
+						userType = 8
+					} else {
+						userType = 3
+					}
+				}
+			}
 		}
 	}
 	permissionStrnew = permissionStr
 	return
 }
 
-//用户绑定
+// 用户绑定
 func BindWxUser(mobile, countryCode string) (wxUser *models.WxUserItem, err error) {
 	if mobile == "" {
 		err = errors.New("手机号或邮箱必填一个")
@@ -161,7 +199,7 @@ func BindWxUser(mobile, countryCode string) (wxUser *models.WxUserItem, err erro
 	return
 }
 
-//用户绑定用户手机号以及openid
+// 用户绑定用户手机号以及openid
 func BindWxUserMobileAndOpenid(mobile, openid, countryCode string) (wxUser *models.WxUserItem, err error) {
 	if mobile == "" {
 		err = errors.New("手机号或邮箱必填一个")
@@ -249,7 +287,7 @@ func BindWxUserMobileAndOpenid(mobile, openid, countryCode string) (wxUser *mode
 	return
 }
 
-//添加第三方用户(微信)记录
+// 添加第三方用户(微信)记录
 func AddUserRecord(openId, unionId, nickName, realName, province, city, country, headimgurl, sessionKey string, platform, sex, subscribe int) (userRecord *models.UserRecord, err error) {
 	find, err := models.GetUserRecordByOpenId(openId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -282,7 +320,7 @@ func AddUserRecord(openId, unionId, nickName, realName, province, city, country,
 	return
 }
 
-//用户绑定
+// 用户绑定
 func BindSession(mobile, countryCode string) (wxUser *models.WxUserItem, err error) {
 	if mobile == "" {
 		err = errors.New("手机号或邮箱必填一个")