Browse Source

no message

xingzai 2 năm trước cách đây
mục cha
commit
8728ed1dbb
3 tập tin đã thay đổi với 138 bổ sung90 xóa
  1. 4 0
      controllers/activity.go
  2. 132 62
      services/activity_special.go
  3. 2 28
      services/user.go

+ 4 - 0
controllers/activity.go

@@ -79,6 +79,10 @@ func (this *ActivityController) LabelTypeList() {
 	}
 	list, err = services.HandleActivityTypeHomeList(list, activityList, user)
 
+	//专项产业调研未开始状态不查询
+	if activeState == "1" {
+		activeState = ""
+	}
 	conditionActivitySpecial := services.ActivityLabelSpecialSql(chartPermissionIds, whichDay, activeState)
 	speciaItem, err := services.GetActivityLabelSpecialList(user, conditionActivitySpecial)
 	if err != nil {

+ 132 - 62
services/activity_special.go

@@ -67,6 +67,10 @@ func ActivityLabelSpecialSql(chartPermissionIds, whichDay, activeState string) (
 		condition += ` AND art.days > 0  AND art.activity_time_end <= ` + "'" + time.Now().Format(utils.FormatDateTime) + " '"
 	}
 
+	//if activeState != "3" {
+	//	condition += `  AND art.activity_time_end  > ` + "'" + time.Now().Format(utils.FormatDateTime) + " '"
+	//}
+
 	//if activeState == "" && whichDay == "" {
 	//	condition += ` AND art.activity_time_end > ` + "'" + time.Now().Format(utils.FormatDateTime) + " '"
 	//}
@@ -77,14 +81,61 @@ func ActivityLabelSpecialSql(chartPermissionIds, whichDay, activeState string) (
 	condition += `  AND art.label != ''  AND art.is_offline = 0   `
 
 	if activeState == "1" {
-		//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
+		condition = condition + ` AND art.days > 0    AND art.activity_time_end > ` + "'" + time.Now().Format(utils.FormatDateTime) + " '"
 	}
 
 	return
 }
 
+// ActivityLabelSpecialUserSql 专项产业调研用户权限查询数据预处理
+func ActivityLabelSpecialUserSql(user *models.WxUserItem) (conditionShengji, conditionZhengshi string, err error) {
+	_, userType, e := HandleActivityLabelSpecialTripPermission(user)
+	if e != nil {
+		err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
+		return
+	}
+	// 8: 行业升级套餐客户:该活动对应行业为升级权限的客户
+	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	if permissionShengji != "" {
+		slicePerShengji := strings.Split(permissionShengji, ",")
+		permissionShengji = ""
+		for _, v := range slicePerShengji {
+			permissionShengji += "'" + v + "',"
+		}
+		permissionShengji = strings.TrimRight(permissionShengji, ",")
+		conditionShengji = ` art.customer_type_ids LIKE '%8%' AND art.chart_permission_name  IN (` + permissionShengji + `)`
+	}
+	//9:其他行业正式客户:前述所有正式客户以外的正式客户 查询处理
+	permissionZhengShiStr, errs := models.GetCompanyPermissionByUserZhengShi(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	if permissionZhengShiStr != "" && userType == 9 {
+		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, ",")
+		conditionZhengshi = `  art.customer_type_ids LIKE '%9%'	   AND art.chart_permission_name  NOT  IN (` + permissionZhengShiStr + `)`
+	}
+	return
+}
+
 // 处理专项调研的展示
 func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpecial string) (item *models.ActivityTypeHome, err error) {
 	itemList := new(models.ActivityTypeHome)
@@ -93,16 +144,6 @@ 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
-	//}
 	companyDetail, e := models.GetCompanyDetailByIdGroupTrip(user.CompanyId)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
@@ -114,7 +155,7 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 	//如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
 	var condition string
 	var conditionUser string
-	var userType int
+	//var userType int
 	if companyDetail.Status == "永续" {
 		conditionUser, e = HandleActivityLabelSpecialPermission(user)
 		if e != nil {
@@ -122,7 +163,7 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 			return
 		}
 	} else {
-		conditionUser, userType, e = HandleActivityLabelSpecialTripPermission(user)
+		conditionUser, _, e = HandleActivityLabelSpecialTripPermission(user)
 		if e != nil {
 			err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
 			return
@@ -130,42 +171,55 @@ 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
+	conditionTrip := condition
+	conditionTripSql := condition
+	conditionNoTrip := condition
+	conditionNoTripSql := condition
+	//condition += conditionUser
+	conditionShengji, conditionZhengshi, e := ActivityLabelSpecialUserSql(user)
+	conditionTrip += ` AND art.days > 0   AND art.activity_time_end  > '` + time.Now().Format(utils.FormatDateTime) + ` '`
+
+	var conditionZhengshiTrip string
+	var conditionShengjiTrip string
+
+	//处理专项调研确认行程的其它正式客户权限查询
+	if conditionZhengshi != "" {
+		conditionZhengshiTrip = ` OR ( ` + conditionZhengshi + conditionTrip + ` )`
 	}
-	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)
+	//处理专项调研确认行程的升级权限查询
+	if conditionShengji != "" {
+		conditionShengjiTrip = ` OR ( ` + conditionShengji + conditionTrip + ` )`
+	}
+	if conditionZhengshi != "" {
+		conditionTrip += conditionZhengshiTrip
+	}
+	if conditionShengjiTrip != "" {
+		conditionTrip += conditionShengjiTrip
 	}
 
-	condition += conditionUser + conditionOr
-	////行业名称
-	//if isPower == 1 {
-	//	condition += ` AND art.chart_permission_name  IN (` + permissionNameStr + `) `
-	//}
-	//if chartPermissionIds != "" {
-	//	condition += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `) `
-	//}
-	conditionTrip := condition
-	conditionTrip += ` AND art.days > 0  ORDER BY art.activity_time ASC `
-
-	specialList, err := models.GetActivityLabelSpecialListAll(conditionTrip, pars, 0, 8)
+	conditionTripSql += conditionUser + conditionTrip + `  ORDER BY art.activity_time ASC `
+	specialList, err := models.GetActivityLabelSpecialListAll(conditionTripSql, pars, 0, 80)
 	if err != nil {
 		return
 	}
-	if len(specialList) < 8 {
-		condition += ` AND art.days = 0  ORDER BY art.last_updated_time DESC`
-		specialListNotrip, e := models.GetActivityLabelSpecialListAll(condition, pars, 0, 20)
+	if len(specialList) < 80 {
+		conditionNoTrip += ` AND art.days = 0  `
+		var conditionShengjiNoTrip string
+		var conditionZhengshiNoTrip string
+		if conditionShengji != "" {
+			conditionShengjiNoTrip = ` OR ( ` + conditionShengji + conditionNoTrip + ` )`
+		}
+		if conditionZhengshi != "" {
+			conditionZhengshiNoTrip = ` OR ( ` + conditionZhengshi + conditionNoTrip + ` )`
+		}
+		if conditionShengji != "" {
+			conditionNoTrip += conditionShengjiNoTrip
+		}
+		if conditionZhengshi != "" {
+			conditionNoTrip += conditionZhengshiNoTrip
+		}
+		conditionNoTripSql += conditionUser + conditionNoTrip + ` ORDER BY art.last_updated_time DESC`
+		specialListNotrip, e := models.GetActivityLabelSpecialListAll(conditionNoTripSql, pars, 0, 200)
 		if e != nil {
 			err = e
 			return
@@ -286,16 +340,16 @@ func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize
 	condition += ` AND art.days = 0  AND art.publish_status = 1 AND art.is_offline = 0   ` + conditionActivity
 	if keywords != "" {
 		keywords = "%" + keywords + "%"
-		condition += ` AND art.research_theme LIKE ? `
-		pars = append(pars, keywords)
+		condition += ` AND art.research_theme LIKE  ` + keywords
 	}
+	// 8: 行业升级套餐客户:该活动对应行业为升级权限的客户
 	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
 	if errs != nil {
 		err = errs
 		return
 	}
 	var conditionOr string
-	if permissionShengji != "" && userType != 2 {
+	if permissionShengji != "" {
 		slicePerShengji := strings.Split(permissionShengji, ",")
 		permissionShengji = ""
 		for _, v := range slicePerShengji {
@@ -303,7 +357,30 @@ func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize
 		}
 		permissionShengji = strings.TrimRight(permissionShengji, ",")
 		conditionOr += ` OR (  art.customer_type_ids LIKE '%8%' AND art.chart_permission_name  IN (` + permissionShengji + `)` + condition + `) `
-		pars = append(pars, pars)
+	}
+	//9:其他行业正式客户:前述所有正式客户以外的正式客户 查询处理
+	permissionZhengShiStr, errs := models.GetCompanyPermissionByUserZhengShi(user.CompanyId)
+	if errs != nil {
+		err = errs
+		return
+	}
+	if permissionZhengShiStr != "" && userType == 9 {
+		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.customer_type_ids LIKE '%9%'	   AND art.chart_permission_name  NOT  IN (` + permissionZhengShiStr + `)` + condition + `) `
 	}
 	condition += conditionUser + conditionOr
 	totalPrepare, e = models.GetActivitySpecialCount(condition, pars)
@@ -360,27 +437,21 @@ func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, page
 	var pars []interface{}
 	condition += ` AND art.days >0  AND art.publish_status =1   AND art.is_offline = 0  ` + conditionActivity
 	if state == 1 {
-		condition += ` AND art.activity_time > ? `
-		pars = append(pars, time.Now())
+		condition += ` AND art.activity_time >  '` + time.Now().Format(utils.FormatDateTime) + `'`
 	}
 	if state == 2 {
-		condition += ` AND art.activity_time < ? `
-		pars = append(pars, time.Now())
-		condition += ` AND art.activity_time_end > ? `
-		pars = append(pars, time.Now())
+		condition += ` AND art.activity_time < '` + time.Now().Format(utils.FormatDateTime) + `'`
+		condition += ` AND art.activity_time_end > '` + time.Now().Format(utils.FormatDateTime) + `'`
 	}
 	if state == 3 {
-		condition += ` AND art.activity_time_end < ? `
-		pars = append(pars, time.Now())
+		condition += ` AND art.activity_time_end < '` + time.Now().Format(utils.FormatDateTime) + `'`
 	}
 	if state == 4 {
-		condition += ` AND art.activity_time_end > ? `
-		pars = append(pars, time.Now())
+		condition += ` AND art.activity_time_end > '` + time.Now().Format(utils.FormatDateTime) + `'`
 	}
 	if keywords != "" {
 		keywords = "%" + keywords + "%"
-		condition += ` AND art.research_theme LIKE ? `
-		pars = append(pars, keywords)
+		condition += ` AND art.research_theme LIKE  ` + keywords
 	}
 	// 8: 行业升级套餐客户:该活动对应行业为升级权限的客户
 	permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
@@ -397,7 +468,6 @@ func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, page
 		}
 		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

+ 2 - 28
services/user.go

@@ -49,7 +49,6 @@ func GetWxUserItemByOpenId(unionId string) (item *models.WxUserItem, err error)
 
 // 获取 用户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户;6、冻结客户;7、流失客户
 func GetUserType(companyId int) (userType int, permissionStrnew string, err error) {
-
 	var permissionStr, permissionZhengShiStr string
 	if companyId <= 1 {
 		userType = 0
@@ -67,7 +66,7 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				err = errs
 				return
 			}
-			permissionStr, errs = models.GetCompanyPermissionRemark(companyId)
+			permissionStr, errs = models.GetCompanyPermission(companyId)
 			if errs != nil {
 				err = errs
 				return
@@ -77,28 +76,12 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				err = errs
 				return
 			}
-
 			//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 == "正式" {
-				//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 == "流失" {
@@ -127,16 +110,7 @@ func GetUserType(companyId int) (userType int, permissionStrnew string, err erro
 				} 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
-					}
+					userType = 9
 				}
 			}
 		}