浏览代码

主题列表展示

xingzai 3 年之前
父节点
当前提交
ba10001ee1
共有 2 个文件被更改,包括 219 次插入2 次删除
  1. 195 2
      controllers/activity.go
  2. 24 0
      models/activity.go

+ 195 - 2
controllers/activity.go

@@ -61,6 +61,7 @@ func (this *ActivityCoAntroller) List() {
 // @Param   ActiveState   query   string  false       "活动进行状态 未开始:1、进行中2、已结束3"
 // @Param   WhichDay   query   string  false       "哪一天 今天:1、明天:2,多个用 , 隔开"
 // @Param   IsShowJurisdiction   query   int  false       "是否仅展示有权限的,1是,2否 默认为零"
+// @Param   Label   query   string  false       "搜索主题 多个用 , 隔开"
 // @Success 200 {object} models.GetCygxActivityListRep
 // @router /list [get]
 func (this *ActivityCoAntroller) ActivityList() {
@@ -69,14 +70,12 @@ func (this *ActivityCoAntroller) ActivityList() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-
 	user := this.User
 	if user == nil {
 		br.Msg = "请登录"
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		return
 	}
-	fmt.Println(user.Mobile)
 	uid := user.UserId
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
@@ -87,6 +86,7 @@ func (this *ActivityCoAntroller) ActivityList() {
 
 	keyWord := this.GetString("KeyWord")
 	activeState := this.GetString("ActiveState")
+	label := this.GetString("Label")
 
 	itemSearch := new(models.CygxActivityUserSearchContent)
 	itemSearch.UserId = uid
@@ -231,6 +231,17 @@ func (this *ActivityCoAntroller) ActivityList() {
 			condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' )`
 		}
 	}
+	//主题
+	if label != "" {
+		sliceLabel := strings.Split(label, ",")
+		var labelSqlStr string
+		for _, v := range sliceLabel {
+			labelSqlStr += "'" + v + "',"
+		}
+		labelSqlStr = strings.TrimRight(labelSqlStr, ",")
+		condition = ` AND art.label  IN (` + labelSqlStr + `)`
+	}
+
 	//行业名称
 	if len(chartPermissionIds) > 0 {
 		condition += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `)`
@@ -1505,3 +1516,185 @@ func (this *ActivityABaseController) FastSearch() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 主题列表
+// @Description 获取活动主题列表接口
+// @Param   ChartPermissionIds   query   string  false     "行业id 多个用 , 隔开"
+// @Param   ActivityTypeIds   query   string  false     "活动类型id 多个用 , 隔开"
+// @Param   ActiveState   query   string  false       "活动进行状态 未开始:1、进行中2、已结束3"
+// @Param   WhichDay   query   string  false       "哪一天 今天:1、明天:2,多个用 , 隔开"
+// @Param   Label   query   string  false       "搜索主题 多个用 , 隔开 (空为活动主题,非空为更多主题)"
+// @Success 200 {object} models.GetCygxActivityLabelListRep
+// @router /labelList [get]
+func (this *ActivityCoAntroller) LabelList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		return
+	}
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	chartPermissionIds := this.GetString("ChartPermissionIds")
+	activityTypeIds := this.GetString("ActivityTypeIds")
+	whichDay := this.GetString("WhichDay")
+	isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
+	activeState := this.GetString("ActiveState")
+	label := this.GetString("Label")
+	var userType int
+	var permissionStr string
+	if user.CompanyId <= 1 {
+		userType = 0
+	} else {
+		total, err := models.GetCountCompanyDetailByIdGroup(user.CompanyId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		if total == 0 {
+			userType = 0
+		} else {
+			companyDetail, err := models.GetCompanyDetailByIdGroup(user.CompanyId)
+			if err != nil {
+				br.Msg = "获取信息失败!"
+				br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
+				return
+			}
+			if companyDetail == nil {
+				br.Msg = "获取信息失败!"
+				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 == "永续" {
+				userType = 1
+			} else if companyDetail.Status == "试用" {
+				userType = 5
+			} else if companyDetail.Status == "正式" {
+				if permissionStr == "专家" {
+					userType = 4
+				} else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
+					userType = 2
+				} else {
+					userType = 3
+				}
+				if userType == 3 {
+					if !strings.Contains(permissionStr, "医药") && !strings.Contains(permissionStr, "消费") && !strings.Contains(permissionStr, "科技") && !strings.Contains(permissionStr, "智造") {
+						userType = 4
+					}
+				}
+			}
+		}
+	}
+	if isShowJurisdiction == 1 && chartPermissionIds == "" && userType == 4 {
+		activityTypeIds = "1,3"
+	}
+	var startSize int
+	//if pageSize <= 0 {
+	//	pageSize = utils.PageSize20
+	//}
+	currentIndex = 1
+	pageSize = 16
+	startSize = utils.StartIndex(currentIndex, pageSize)
+	var condition string
+	var pars []interface{}
+	//活动可见限制
+	var sqlExport string
+
+	slicePer := strings.Split(permissionStr, ",")
+	var permissionSqlStr string
+	for _, v := range slicePer {
+		permissionSqlStr += "'" + v + "',"
+	}
+	permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
+	permissionSqlStr = ` AND art.chart_permission_name  IN (` + permissionSqlStr + `)`
+	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 += `) `
+
+	//主题
+	if label != "" {
+		sliceLabel := strings.Split(label, ",")
+		var labelSqlStr string
+		for _, v := range sliceLabel {
+			labelSqlStr += "'" + v + "',"
+		}
+		labelSqlStr = strings.TrimRight(labelSqlStr, ",")
+		condition = `  AND art.label  NOT IN (` + labelSqlStr + `)`
+	} else {
+		//行业名称
+		if len(chartPermissionIds) > 0 {
+			condition += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `)`
+		}
+		if activityTypeIds != "" {
+			condition += ` AND art.activity_type_id  IN (` + activityTypeIds + `)`
+		}
+		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 {
+				startDate = time.Now().Format(utils.FormatDate)
+				endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
+			}
+			condition += ` AND art.activity_time >= ` + "'" + startDate + " 00:00:00'"
+			condition += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
+		}
+		if activeState != "" {
+			condition += ` AND art.active_state  IN (` + activeState + `)`
+		} else {
+			condition += ` AND art.active_state  IN (1)`
+		}
+	}
+	condition += ` AND art.publish_status = 1  AND art.label != '' `
+	var conditionOr string
+	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 + `) `
+	}
+	conditionOr += `	OR ( art.is_limit_people = 0 	  ` + condition + `) `
+	condition += `AND art.is_limit_people = 1 ` + permissionSqlStr + sqlExport + conditionOr
+
+	condition += `	GROUP BY art.label ORDER BY art.active_state ASC, art.activity_time ASC  `
+	list, errList := models.GetActivityLabelListAll(condition, pars, startSize, pageSize)
+	if errList != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + errList.Error()
+		return
+	}
+	resp := new(models.GetCygxActivityLabelListRep)
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 24 - 0
models/activity.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"fmt"
 	"rdluck_tools/orm"
 	"rdluck_tools/paging"
 	"time"
@@ -417,3 +418,26 @@ func UPdateActivityIdToSendFile(activityId int) (err error) {
 	_, err = o.Raw(sql, activityId).Exec()
 	return
 }
+
+//活动详情
+type CygxActivityLabelList struct {
+	KeyWord string `orm:"column(label)";description:"主题"`
+}
+
+//主题列表
+func GetActivityLabelListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivityLabelList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT label 
+		FROM cygx_activity as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,? `
+	fmt.Println(sql)
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+type GetCygxActivityLabelListRep struct {
+	List []*CygxActivityLabelList
+}