xingzai hai 1 ano
pai
achega
d54fdbece6
Modificáronse 2 ficheiros con 221 adicións e 15 borrados
  1. 82 15
      controllers/activity.go
  2. 139 0
      services/activity.go

+ 82 - 15
controllers/activity.go

@@ -23,6 +23,8 @@ type ActivityController struct {
 // @Param   ActiveState   query   string  false       "活动进行状态 未开始:1、进行中2、已结束3 多个用 , 隔开"
 // @Param   WhichDay   query   string  false       "哪一天 今天:1、明天:2,多个用 , 隔开"
 // @Param   IsPower   query   int  false       "是否选择有权限行业 ,1是 0 否 默认0"
+// @Param   IsExternalLabel   query   int  false       "是否仅展示外部资源 1:是、0:否 默认0"
+// @Param   IsResearchPoints   query   int  false       "是否仅展示研选扣点 1:是、0:否 默认0"
 // @Success 200 {object} models.ActivityTypeListHomeResp
 // @router /labelTypeList [get]
 func (this *ActivityController) LabelTypeList() {
@@ -41,7 +43,10 @@ func (this *ActivityController) LabelTypeList() {
 	isPower, _ := this.GetInt("IsPower")
 	whichDay := this.GetString("WhichDay")
 	activeState := this.GetString("ActiveState")
+	isExternalLabel, _ := this.GetInt("IsExternalLabel")   //
+	isResearchPoints, _ := this.GetInt("IsResearchPoints") //
 	var condition string
+	var conditioninit string
 	var pars []interface{}
 
 	// 查研观向7.4-始终查询宏观的活动
@@ -49,10 +54,74 @@ func (this *ActivityController) LabelTypeList() {
 		chartPermissionIds += ",1"
 	}
 
-	condition += `AND art.activity_time > ?  `
-	pars = append(pars, time.Now().AddDate(0, -3, 0).Format(utils.FormatDate))
+	//condition += `AND art.activity_time > ?  `
+	//pars = append(pars, time.Now().AddDate(0, -3, 0).Format(utils.FormatDate))
+
+	//行业名称
+	if len(chartPermissionIds) > 0 {
+		conditioninit += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `)`
+	}
+	//哪一天
+	if whichDay != "" {
+		var startDate string
+		var endDate string
+		if whichDay == "1" {
+			startDate = time.Now().Format(utils.FormatDate)
+			endDate = startDate
+		} else if whichDay == "2" {
+			startDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
+			endDate = startDate
+		} else if whichDay == "3" {
+			startDate = utils.GetNowWeekMonday().Format(utils.FormatDate)
+			endDate = utils.GetNowWeekSunday().Format(utils.FormatDate)
+		} else if whichDay == "4" {
+			startDate = utils.GetLastWeekMonday().Format(utils.FormatDate)
+			endDate = utils.GetLastWeekSunday().Format(utils.FormatDate)
+		} else if whichDay == "5" {
+			startDate = utils.GetNowMonthFirstDay().Format(utils.FormatDate)
+			endDate = utils.GetNowMonthLastDay().Format(utils.FormatDate)
+		} else if whichDay == "6" {
+			startDate = utils.GetLastMonthFirstDay().Format(utils.FormatDate)
+			endDate = utils.GetLastMonthLastDay().Format(utils.FormatDate)
+		} else if whichDay == "1,2" {
+			startDate = time.Now().Format(utils.FormatDate)
+			endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
+		} else if whichDay == "3,4" {
+			startDate = utils.GetLastWeekMonday().Format(utils.FormatDate)
+			endDate = utils.GetNowWeekSunday().Format(utils.FormatDate)
+		} else if whichDay == "5,6" {
+			startDate = utils.GetLastMonthFirstDay().Format(utils.FormatDate)
+			endDate = utils.GetNowMonthLastDay().Format(utils.FormatDate)
+		} else {
+			startDate = time.Now().Format(utils.FormatDate)
+			endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
+		}
+		conditioninit += ` AND art.activity_time >= ` + "'" + startDate + " 00:00:00'"
+		conditioninit += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
+	}
+
+	//活动状态搜索
+	if activeState != "" {
+		// 默认查看未开始跟进行中
+		if activeState == "1" {
+			conditioninit += ` AND art.active_state  IN (1,2)`
+		} else {
+			conditioninit += ` AND art.active_state  IN (` + activeState + `)`
+		}
+	} else {
+		conditioninit += ` AND art.active_state  IN (1,2)`
+	}
+
+	//是否为外部资源
+	if isExternalLabel == 1 {
+		conditioninit += ` AND art.is_external_label = 1 `
+	}
+	if isResearchPoints == 1 {
+		conditioninit += ` AND art.is_research_points = 1 `
+	}
 
-	conditionActivity, err := services.GetActivityonditionList(user, "", chartPermissionIds, whichDay, activeState, "", isPower, 0, "", 0, 1)
+	conditionActivity, err := services.ActivityConditioninitSql(user, conditioninit, isPower)
+	//conditionActivity, err := services.GetActivityonditionList(user, "", chartPermissionIds, whichDay, activeState, "", isPower, 0, "", 0, 1)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
@@ -140,7 +209,7 @@ func (this *ActivityController) ActivityListNew() {
 	uid := user.UserId
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
-	source, _ := this.GetInt("Source")
+	//source, _ := this.GetInt("Source")
 	label := this.GetString("Label")
 	chartPermissionIds := this.GetString("ChartPermissionIds")
 	whichDay := this.GetString("WhichDay")
@@ -150,6 +219,7 @@ func (this *ActivityController) ActivityListNew() {
 	keyWord := this.GetString("KeyWord")
 	playBack, _ := this.GetInt("PlayBack")
 	filter, _ := this.GetInt("Filter")
+	isPower, _ := this.GetInt("IsPower")
 	activityId, _ := this.GetInt("ActivityId")             // 仅用于判断【新】标签
 	isExternalLabel, _ := this.GetInt("IsExternalLabel")   //
 	isResearchPoints, _ := this.GetInt("IsResearchPoints") //
@@ -263,28 +333,22 @@ func (this *ActivityController) ActivityListNew() {
 	}
 	//是否为外部资源
 	if isExternalLabel == 1 {
-		conditioninit += ` AND art.is_external_label == 1 `
+		conditioninit += ` AND art.is_external_label = 1 `
 	}
 	if isResearchPoints == 1 {
-		conditioninit += ` AND art.is_research_points == 1 `
+		conditioninit += ` AND art.is_research_points = 1 `
 	}
-	fmt.Println(conditioninit)
-
-	//var activityList []*models.ActivityDetail
-	//mapDingActivityId := make(map[int]int)
 	condition = ""
 	//活动可见限制
-	conditionActivity, err := services.GetActivityonditionList(user, activityTypeId, chartPermissionIds, whichDay, activeState, label, 0, source, keyWord, playBack, 1)
+	//conditionActivity, err := services.GetActivityonditionList(user, activityTypeId, chartPermissionIds, whichDay, activeState, label, 0, source, keyWord, playBack, 1)
+	conditionActivity, err := services.ActivityConditioninitSql(user, conditioninit, isPower)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
 		return
 	}
-	if source == 1 {
-		condition += ` AND art.yidong_activity_id = '' `
-	}
 
-	condition += ` AND art.is_limit_people = 1 AND art.publish_status = 1 ` + conditionActivity
+	condition += `  AND art.publish_status = 1 ` + conditionActivity
 	total, err := models.GetActivityCount(condition, playBack, pars, filter)
 	if err != nil {
 		br.Msg = "获取失败"
@@ -526,6 +590,9 @@ func (this *ActivityController) ActivityListNew() {
 	//if keyWord != "" {
 	//	go services.AddActivitykeyWordSearch(keyWord, user)
 	//}
+	if len(activityList) == 0 {
+		activityList = make([]*models.ActivityListResp, 0)
+	}
 
 	//预处理返给前端的字段
 	resp.List = activityList

+ 139 - 0
services/activity.go

@@ -313,6 +313,145 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	return
 }
 
+// 根据用户身份处理活动可见
+func ActivityConditioninitSql(user *models.WxUserItem, condition string, isPower int) (conditionActivity string, err error) {
+	condition += `   AND art.publish_status = 1 `
+	conditionActivity = condition
+	//弘则可以查看所有活动
+	if GetBelongingRai(user.Mobile) && user.CompanyId == utils.HZ_COMPANY_ID {
+		return
+	}
+	adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
+	if err != nil {
+		return
+	}
+	userType, permissionStr, permissionStrZhengShi, err := GetUserTypeZhengShi(user.CompanyId)
+	if err != nil {
+		return
+	}
+	//判断客户规模是否属于可见范围的活动
+	companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+	isMaker := user.IsMaker
+	slicePer := strings.Split(permissionStr, ",")
+	var permissionSqlStr string
+	var permissionNameStr string
+	for _, v := range slicePer {
+		if userType == 1 {
+			//研选权限处理
+			if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
+				permissionNameStr += "'" + v + "',"
+			}
+		} else {
+			permissionNameStr += "'" + v + "',"
+		}
+	}
+	permissionNameStr = strings.Replace(permissionNameStr, "(主观)", "", -1)
+	permissionNameStr = strings.Replace(permissionNameStr, "(客观)", "", -1)
+	permissionNameStr = strings.TrimRight(permissionNameStr, ",")
+	slicePerZhengShi := strings.Split(permissionStrZhengShi, ",")
+	var permissionNameStrZhengShi string
+	for _, v := range slicePerZhengShi {
+		if userType == 1 {
+			//研选权限处理
+			if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
+				permissionNameStrZhengShi += "'" + v + "',"
+			}
+		} else {
+			permissionNameStrZhengShi += "'" + v + "',"
+		}
+	}
+	permissionNameStrZhengShi = strings.Replace(permissionNameStrZhengShi, "(主观)", "", -1)
+	permissionNameStrZhengShi = strings.Replace(permissionNameStrZhengShi, "(客观)", "", -1)
+	permissionNameStrZhengShi = strings.TrimRight(permissionNameStrZhengShi, ",")
+
+	mapUserType, e := GetActivityCcustomerTypeList()
+	if e != nil {
+		err = e
+		return
+	}
+	var userTypeStr string
+	userTypeStr = mapUserType[userType]
+
+	// 查研观向7.4-始终查询宏观的权限(无论是否有权限)
+	if permissionNameStr == `` {
+		permissionNameStr = `'宏观'`
+	} else {
+		permissionNameStr += `, '宏观'`
+	}
+	var sqlExport string // 专家权限处理
+	sqlExport = ` AND (art.customer_type_ids LIKE '%` + userTypeStr + `%' `
+	if (userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
+		sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
+	}
+	sqlExport += `) `
+
+	if isPower == 1 {
+		permissionSqlStr = `  AND art.chart_permission_name  IN (` + permissionNameStr + `)`
+		condition += permissionSqlStr
+	}
+
+	var conditionOr string
+
+	//查询全部可见的数据(是否全部客户可见)
+	if adminIds != "" {
+		condition += ` 	AND ( art.visible_range != 1  OR  (	 art.admin_id IN ( ` + adminIds + ` )  AND art.visible_range = 1 ))  `
+	}
+
+	//活动仅决策人可见
+	if isMaker == 0 {
+		condition += ` AND art.is_maker_show = 0  `
+	}
+
+	//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 + `) `
+	}
+	if (userType == 5) && strings.Contains(permissionStr, "专家") {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%5%'	 ` + condition + `) `
+	}
+	if userType == 1 {
+		conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + permissionSqlStr + `) `
+	} else {
+		conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + `) `
+	}
+	if userType == 6 || userType == 7 {
+		conditionOr += ` OR (   art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%'	 ` + condition + `) `
+	}
+	if companyProduct != nil {
+		if companyProduct.Scale != "" {
+			conditionOr += ` OR (  art.scale LIKE '%` + companyProduct.Scale + `%'	 ` + condition + `) `
+		}
+	}
+
+	conditionShengji, conditionZhengshi, conditionHangYe, e := ActivityLabelSpecialUserSql(user)
+	if e != nil {
+		err = errors.New("ActivityLabelSpecialUserSql, Err: " + e.Error())
+		return
+	}
+	// 升级客户可查看范围
+	if conditionShengji != "" {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND ` + conditionShengji + condition + ` ) `
+	}
+	// 正式客户可查看范围
+	if conditionZhengshi != "" {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND ` + conditionZhengshi + condition + ` ) `
+	}
+	// 行业客户可查看范围
+	if conditionHangYe != "" {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND ` + conditionHangYe + condition + ` ) `
+	}
+
+	if userType == 3 {
+		condition += `  AND art.chart_permission_name  IN (` + permissionNameStrZhengShi + `) `
+	}
+	condition += `    AND  art.is_limit_people = 0  `
+	conditionActivity = condition + permissionSqlStr + sqlExport + conditionOr
+	return
+}
+
 // 获取可见的活动
 func HandleActivityPowerList(listActivity []*models.CygxActivity, user *models.WxUserItem) (items []*models.CygxActivity, err error) {