Browse Source

no message

xingzai 2 years ago
parent
commit
bc7e642dbb

+ 7 - 7
controllers/activity.go

@@ -52,7 +52,7 @@ func (this *ActivityController) LabelTypeList() {
 	condition += `AND art.activity_time > ?  `
 	pars = append(pars, time.Now().AddDate(0, -3, 0).Format(utils.FormatDate))
 
-	conditionActivity, err := services.GetActivityonditionList(user, "", chartPermissionIds, whichDay, activeState, "", isPower, 0, "", 0)
+	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()
@@ -160,7 +160,7 @@ func (this *ActivityController) ActivityListNew() {
 	//mapDingActivityId := make(map[int]int)
 	condition = ""
 	//活动可见限制
-	conditionActivity, err := services.GetActivityonditionList(user, activityTypeId, chartPermissionIds, whichDay, activeState, label, 0, source, keyWord, playBack)
+	conditionActivity, err := services.GetActivityonditionList(user, activityTypeId, chartPermissionIds, whichDay, activeState, label, 0, source, keyWord, playBack, 1)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
@@ -196,7 +196,7 @@ func (this *ActivityController) ActivityListNew() {
 	}
 
 	condition += conditionOrder
-	list, errList := models.GetActivityListNew(condition, pars, uid, startSize, pageSize, playBack, filter)
+	list, errList := models.GetActivityListNew(condition, pars, uid, startSize, pageSize, playBack, filter, "")
 	if errList != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + errList.Error()
@@ -1613,7 +1613,7 @@ func (this *ActivityController) ActivityListSearch() {
 	startSize = utils.StartIndex(currentIndex, pageSize)
 	var condition string
 	//活动可见限制
-	conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "3", "", 0, 1, keyWord, playBack)
+	conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "3", "", 0, 1, keyWord, playBack, 1)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
@@ -1623,7 +1623,7 @@ func (this *ActivityController) ActivityListSearch() {
 		condition += ` AND art.yidong_activity_id = '' `
 	}
 	condition += ` AND art.is_limit_people = 1 AND art.publish_status = 1 ` + conditionActivity
-	listActivity, total, err := services.GetActivitySpecialSearcheList(user, condition, startSize, pageSize, keyWord, playBack)
+	listActivity, total, err := services.GetActivitySpecialSearcheList(user, condition, startSize, pageSize, keyWord)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
@@ -1890,7 +1890,7 @@ func (this *ActivityController) ScheduleList() {
 			//list[k].ImgUrlText = "https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202112/20211221/bIdfv8t86xrFRpDOeGGHXOmKEuKl.png"
 			list[k].ImgUrlText = utils.YAN_XUAN_IMG
 		}
-		if v.ActivityType == 0 && v.SourceType == 1{
+		if v.ActivityType == 0 && v.SourceType == 1 {
 			if mapAddress[v.City] != "" {
 				list[k].ImgUrl = mapAddress[v.City]
 			} else {
@@ -1958,4 +1958,4 @@ func (this *ActivityController) ScheduleList() {
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
-}
+}

+ 1 - 1
controllers/home.go

@@ -289,7 +289,7 @@ func (this *MobileHomeController) NewList() {
 		pageSize = utils.PageSize5
 	} else {
 		condition += ` AND source NOT IN ('activity','activityspecial','newchart') ` + conditionInit
-		conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "1,2,3", "", 0, 0, "", 0)
+		conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "1,2,3", "", 0, 0, "", 0, 1)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()

+ 1 - 1
controllers/report.go

@@ -12,7 +12,7 @@ import (
 	"time"
 )
 
-//报告
+// 报告
 type ReportController struct {
 	BaseAuthController
 }

+ 2 - 1
controllers/user.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hongze_clpt/models"
 	"hongze/hongze_clpt/services"
 	"hongze/hongze_clpt/utils"
+	"sort"
 	"strconv"
 	"strings"
 	"time"
@@ -1329,7 +1330,7 @@ func (this *UserController) Mycollect() {
 	var sortList models.MicroList
 
 	sortList = list
-	//sort.Sort(sortList)
+	sort.Sort(sortList)
 
 	resp := new(models.MicroRoadShowListResp)
 	page := paging.GetPaging(currentIndex, pageSize, total)

+ 31 - 15
models/activity.go

@@ -3,10 +3,11 @@ package models
 import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"strings"
 	"time"
 )
 
-//活动详情
+// 活动详情
 type CygxActivity struct {
 	ActivityId              int       `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
 	ActivityTypeId          int       `description:"活动类型id"`
@@ -59,7 +60,7 @@ type CygxActivity struct {
 	YidongActivityId        string    `description:"易董活动ID"`
 }
 
-//活动详情
+// 活动详情
 type ActivityDetail struct {
 	ActivityId              int                        `orm:"column(activity_id);pk";description:"活动ID "`
 	ActivityTypeId          int                        `description:"活动类型id"`
@@ -142,7 +143,7 @@ type ActivityDetail struct {
 	Title                   string                     `description:"标题"`
 }
 
-//活动详情
+// 活动详情
 type ActivityListResp struct {
 	ActivityId              int                        `description:"活动ID "`
 	ActivityTypeId          int                        `description:"活动类型id"`
@@ -220,7 +221,7 @@ type CygxActivityResp struct {
 	Detail        *ActivityListResp
 }
 
-//列表
+// 列表
 func GetCygxActivityList(condition string, pars []interface{}, sortTime string, startSize, pageSize int) (items []*CygxActivity, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT	activity_id, label,temporary_label,is_show_subject_name, MAX( art.activity_time ) AS timesort, MIn( art.activity_time ) AS mintimesort , yidong_activity_id , activity_type_id 
@@ -233,7 +234,7 @@ func GetCygxActivityList(condition string, pars []interface{}, sortTime string,
 	return
 }
 
-//通过纪要ID获取活动详情
+// 通过纪要ID获取活动详情
 func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM cygx_activity  WHERE activity_id=? AND publish_status = 1 `
@@ -241,7 +242,7 @@ func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
 	return
 }
 
-//获取数量
+// 获取数量
 func GetActivityCount(condition string, playBack int, pars []interface{}, filter int) (count int, err error) {
 	var sqlJiontable string
 	if playBack == 1 {
@@ -263,8 +264,7 @@ func GetActivityCount(condition string, playBack int, pars []interface{}, filter
 	return
 }
 
-//列表
-func GetActivityListNew(condition string, pars []interface{}, uid, startSize, pageSize, playBack, filter int) (items []*ActivityDetail, err error) {
+func GetActivityListNew(condition string, pars []interface{}, uid, startSize, pageSize, playBack, filter int, typeName string) (items []*ActivityDetail, err error) {
 	var sqlJiontable string
 	if playBack == 1 {
 		//sqlJiontable = ` INNER JOIN cygx_activity_voice AS ac ON ac.activity_id = art.activity_id `
@@ -288,11 +288,27 @@ func GetActivityListNew(condition string, pars []interface{}, uid, startSize, pa
 		sql += condition
 	}
 	sql += ` LIMIT ?,?`
+
+	if typeName != "" {
+		typeSlice := strings.Split(typeName, ",")
+		tempCondition := ""
+		for _, s := range typeSlice {
+			if s == "1" {
+				tempCondition += "'专家电话会',"
+			} else if s == "2" {
+				tempCondition += "'分析师电话会',"
+			} else if s == "1,2" {
+				tempCondition += "'专家电话会','分析师电话会',"
+			}
+		}
+		tempCondition = strings.TrimRight(tempCondition, ",")
+		sql = `SELECT * FROM(` + sql + `) AS t WHERE t.activity_type_name IN (` + tempCondition + `)`
+	}
 	_, err = o.Raw(sql, uid, uid, uid, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
 
-//列表
+// 列表
 func GetActivityListHomeNew(condition string, startSize, pageSize int) (items []*ActivityDetail, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT activity_id
@@ -331,7 +347,7 @@ type GetCygxActivityListSearchResp struct {
 	ChartPermissionId      int    `description:"权限id"`
 }
 
-//通过纪要ID获取活动详情
+// 通过纪要ID获取活动详情
 func GetAddActivityInfoByIdShow(uid, ActivityId int) (item *ActivityDetail, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT *,( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = a.activity_id AND s.user_id = ?   AND s.is_cancel = 0  AND s.do_fail_type = 0) AS is_signup,
@@ -343,7 +359,7 @@ func GetAddActivityInfoByIdShow(uid, ActivityId int) (item *ActivityDetail, err
 	return
 }
 
-//GetActivitySpecialSearcheList 活动与专项调研的搜索
+// GetActivitySpecialSearcheList 活动与专项调研的搜索
 func GetActivitySpecialSearcheList(condition string, pars []interface{}, conditionSpecil string, parsSpecil []interface{}, startSize, pageSize int) (items []*ActivityDetail, total int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
@@ -412,7 +428,7 @@ func GetActivitySpecialSearcheList(condition string, pars []interface{}, conditi
 	return
 }
 
-//获取我的日程数量
+// 获取我的日程数量
 func GetScheduleCount(condition string, uid int) (count int, err error) {
 	o := orm.NewOrm()
 	sqlCount := `SELECT COUNT( 1 ) AS count 
@@ -427,7 +443,7 @@ func GetScheduleCount(condition string, uid int) (count int, err error) {
 	return
 }
 
-//获取我的日程数量
+// 获取我的日程数量
 func GetSpecialScheduleCount(uid int) (count int, err error) {
 	o := orm.NewOrm()
 	sqlCount := `
@@ -440,7 +456,7 @@ SELECT COUNT( 1 ) AS count FROM
 	return
 }
 
-//我的日程列表
+// 我的日程列表
 func GetScheduleList(condition string, pars []interface{}, uid, startSize, pageSize int) (items []*ActivityDetail, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT art.*,t.activity_type,t.img_url_text,c.image_url as  img_url,
@@ -462,7 +478,7 @@ func GetScheduleList(condition string, pars []interface{}, uid, startSize, pageS
 	return
 }
 
-//我的日程列表 活动以及专项调研一起
+// 我的日程列表 活动以及专项调研一起
 func GetScheduleAndSpecilList(condition string, pars []interface{}, conditionSpecil string, parsSpecil []interface{}, startSize, pageSize int) (items []*ActivityDetail, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT

+ 11 - 11
models/micro_roadshow.go

@@ -294,17 +294,17 @@ func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string,
 
 type MicroList []*MicroRoadShowPageList
 
-//func (m MicroList) Len() int {
-//	return len(m)
-//}
-//
-//func (m MicroList) Less(i, j int) bool {
-//	return m[i].CollectTime.After(m[j].CollectTime)
-//}
-//
-//func (m MicroList) Swap(i, j int) {
-//	m[i], m[j] = m[j], m[i]
-//}
+func (m MicroList) Len() int {
+	return len(m)
+}
+
+func (m MicroList) Less(i, j int) bool {
+	return m[i].CollectTime.After(m[j].CollectTime)
+}
+
+func (m MicroList) Swap(i, j int) {
+	m[i], m[j] = m[j], m[i]
+}
 
 // CountMicroRoadShowVideoPageList 获取微路演视频数量
 func CountMicroRoadShowVideoPageList(condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}) (total int, err error) {

+ 41 - 24
services/activity.go

@@ -10,7 +10,7 @@ import (
 	"time"
 )
 
-//获取活动列表查询权限的SQL
+// 获取活动列表查询权限的SQL
 // @Param   ChartPermissionIds   query   string  false     "行业id 多个用 , 隔开"
 // @Param   ActivityTypeIds   query   string  false     "活动类型id 多个用 , 隔开"
 // @Param   ActiveState   query   string  false       "活动进行状态 未开始:1、进行中2、已结束3"
@@ -19,7 +19,9 @@ import (
 // @Param   Label   query   string  false       "搜索主题 多个用 , 隔开"
 // @Param   PlayBack   query   int  false       "是否仅展示回放 1:是、0:否 默认0"
 // @Param   KeyWord   query   string  false       "搜索关键词"
-func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermissionIds, whichDay, activeState, label string, isPower, source int, keyWord string, playBack int) (conditionActivity string, err error) {
+// @Param   ikType   query   int  false       "联想词类型 , 1不做联想,2,做除初始词的联想,3所有联想"
+func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermissionIds, whichDay, activeState, label string, isPower, source int, keyWord string, playBack, ikType int) (conditionActivity string, err error) {
+	keyWordNoIk := keyWord
 	adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
 	if err != nil {
 		return
@@ -62,7 +64,7 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	var conditionAdmin string
 	var conditionHz string // 弘则权限处理
 	var sqlExport string   // 专家权限处理
-	//permissionSqlStr = `  AND art.chart_permission_name  IN (` + permissionNameStr + `)`
+	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%' `
@@ -76,14 +78,13 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 		if activityTypeId == strconv.Itoa(utils.ANALYST_TELL_ACTIVITY_TYPE_ID) {
 			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id IN (` + activityTypeId + "," + strconv.Itoa(utils.C_CLASS_ACTIVITY_TYPE_ID) + `)`
 		} else {
-			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id = ` + activityTypeId
+			condition = ` AND art.publish_status = 1  AND art.label != ''  AND art.activity_type_id IN (` + activityTypeId + `)`
 		}
 	}
 
 	//主题
 	if label != "" {
 		condition = ` AND art.label  LIKE '%` + label + `%' `
-
 	}
 
 	if isPower == 1 {
@@ -92,7 +93,6 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 
 	//行业名称
 	if len(chartPermissionIds) > 0 {
-
 		condition += ` AND art.chart_permission_id  IN (` + chartPermissionIds + `)`
 	}
 	//如果是PC的,则不看易董的
@@ -110,9 +110,6 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 		} else if whichDay == "2" {
 			startDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
 			endDate = startDate
-		} else if whichDay == "1,2" || whichDay == "2,1" {
-			startDate = time.Now().Format(utils.FormatDate)
-			endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
 		} else if whichDay == "3" {
 			startDate = utils.GetNowWeekMonday().Format(utils.FormatDate)
 			endDate = utils.GetNowWeekSunday().Format(utils.FormatDate)
@@ -125,24 +122,43 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 		} else if whichDay == "6" {
 			startDate = utils.GetLastMonthFirstDay().Format(utils.FormatDate)
 			endDate = utils.GetLastMonthLastDay().Format(utils.FormatDate)
-		} else if whichDay == "3,4" || whichDay == "4,3" {
+		} 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" || whichDay == "6,5" {
+		} else if whichDay == "5,6" {
 			startDate = utils.GetLastMonthFirstDay().Format(utils.FormatDate)
 			endDate = utils.GetNowMonthLastDay().Format(utils.FormatDate)
 		} else {
-			startDate = utils.GetNowWeekMonday().Format(utils.FormatDate)
-			endDate = utils.GetNowWeekSunday().Format(utils.FormatDate)
+			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 keyWord != "" {
-		condition += ` AND (art.label  LIKE '%` + keyWord + `%' OR art.activity_name  LIKE '%` + keyWord + `%' ) `
+		if ikType == 2 || ikType == 3 {
+			keyWordArr, e := GetIndustryMapNameSliceV3(keyWord)
+			if e != nil {
+				err = errors.New("获取分词失败,GetIndustryMapNameSliceV3, Err: " + keyWord + e.Error())
+				return
+			}
+			keyWordArr = RemoveDuplicatesAndEmpty(keyWordArr)
+			//var keywords string
+			if len(keyWordArr) > 1 {
+				if ikType == 2 {
+					keyWord = KeyWordArrSqlRegexp(keyWordArr)
+					condition += `	AND (art.label NOT LIKE  '%` + keyWordNoIk + `%' AND   art.activity_name NOT LIKE '%` + keyWordNoIk + `%' ) `
+				} else if ikType == 3 {
+					keyWord = KeyWordArrSqlRegexpAll(keyWordArr)
+				}
+			}
+		}
+		condition += ` AND (art.label   REGEXP '` + keyWord + `' OR art.activity_name  REGEXP '` + keyWord + `' ) `
 	} else {
 		if activeState != "" {
 			// 默认查看未开始跟进行中
@@ -187,6 +203,7 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	}
 
 	//查询全部可见的数据(是否全部客户可见)
+	//condition += ` AND art.visible_range != 1  AND art.publish_status = 1 `
 	condition += `   AND art.publish_status = 1 `
 	conditionHz = condition
 
@@ -241,13 +258,13 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	return
 }
 
-//获取可见的活动
+// 获取可见的活动
 func HandleActivityPowerList(listActivity []*models.CygxActivity, user *models.WxUserItem) (items []*models.CygxActivity, err error) {
 
 	return
 }
 
-//5.3版本活动标签字符串处理
+// 5.3版本活动标签字符串处理
 func LabelStr(label string, isShowSubjectName int, temporaryLabel string) (labelNew string) {
 	slicebr := strings.Split(label, "-")
 	if len(slicebr) > 1 {
@@ -265,7 +282,7 @@ func LabelStr(label string, isShowSubjectName int, temporaryLabel string) (label
 	return labelNew
 }
 
-//列表
+// 列表
 func HandleActivityTypeHomeList(listType []*models.ActivityTypeHome, listActivity []*models.CygxActivity, user *models.WxUserItem) (items []*models.ActivityTypeHome, err error) {
 	mapActivity := make(map[int][]*models.CygxActivityLabelList)
 	activityIds := make([]int, 0) // 用于查询活动【新】标签Map
@@ -324,7 +341,7 @@ func HandleActivityTypeHomeList(listType []*models.ActivityTypeHome, listActivit
 	return
 }
 
-//GetActivityVoiceResp 处理活动音频回放
+// GetActivityVoiceResp 处理活动音频回放
 func GetActivityVoiceResp(mapActivityId []int) (mapItem map[int]*models.CygxActivityVoiceReq, err error) {
 	activityVoiceList, err := models.GetCygxActivityVoiceReqList(mapActivityId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -341,7 +358,7 @@ func GetActivityVoiceResp(mapActivityId []int) (mapItem map[int]*models.CygxActi
 	return
 }
 
-//GetActivityVideoResp 处理活动视频频回放
+// GetActivityVideoResp 处理活动视频频回放
 func GetActivityVideoResp(mapActivityId []int) (mapItem map[int]*models.CygxActivityVideoListResp, err error) {
 	var condition string
 	var ativityVIdstr string
@@ -711,7 +728,7 @@ func GetIndustryNewLabelMap(industryIds []int) (labelMap map[int]bool, err error
 	return
 }
 
-//GetSpecialDetailUserPower 处理用户查看专项调研详情的权限
+// GetSpecialDetailUserPower 处理用户查看专项调研详情的权限
 func GetActivityDetailUserPower(user *models.WxUserItem, activityInfo *models.ActivityDetail) (havePower bool, err error) {
 	var companyDetailStatus string
 	userType, permissionStr, e := GetUserType(user.CompanyId)
@@ -808,7 +825,7 @@ func GetShareNoPowe(activityInfo *models.ActivityDetail, permissionStr string, u
 	return
 }
 
-//处理活动本组们是否决策人权限
+// 处理活动本组们是否决策人权限
 func CheckUserPowerByActivityChoose(user *models.WxUserItem, activityInfo *models.ActivityDetail) (noPower bool, err error) {
 	//处理 见范围 1,仅本组可见 、2,全部客户可见
 	if activityInfo.VisibleRange == 1 {
@@ -837,7 +854,7 @@ func CheckUserPowerByActivityChoose(user *models.WxUserItem, activityInfo *model
 	return
 }
 
-//判断预约纪要按钮是否显示
+// 判断预约纪要按钮是否显示
 func IsShowAppointment(activityTypeId int, chartPermissionName string) (isShowAppointment bool) {
 	if activityTypeId == 1 || activityTypeId == 2 || activityTypeId == 3 || activityTypeId == 4 {
 		isShowAppointment = true
@@ -848,7 +865,7 @@ func IsShowAppointment(activityTypeId int, chartPermissionName string) (isShowAp
 	return
 }
 
-//GetindustryVideoDetailById 通过视频ID获取视频详情
+// GetindustryVideoDetailById 通过视频ID获取视频详情
 func GetActivityVideoDetailById(user *models.WxUserItem, videoId int) (industryVideo *models.CygxActivityVideoDetailResp, AuthInfo *models.UserPermissionAuthInfo, err error) {
 	total, e := models.GetActivityVideoByVideoIdCount(videoId)
 	if e != nil {

+ 57 - 21
services/activity_special.go

@@ -77,7 +77,7 @@ func ActivityLabelSpecialSql(chartPermissionIds, whichDay, activeState string) (
 	return
 }
 
-//处理专项调研的展示
+// 处理专项调研的展示
 func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpecial string) (item *models.ActivityTypeHome, err error) {
 	itemList := new(models.ActivityTypeHome)
 	if user.CompanyId <= 1 {
@@ -162,7 +162,7 @@ func GetActivityLabelSpecialList(user *models.WxUserItem, conditionActivitySpeci
 	return
 }
 
-//HandleActivityLabelSpecialPermission 处理专项产业调研的查询权限sql 永续
+// HandleActivityLabelSpecialPermission 处理专项产业调研的查询权限sql 永续
 func HandleActivityLabelSpecialPermission(user *models.WxUserItem) (condition string, err error) {
 	permissionStr, e := GetCompanyPermission(user.CompanyId)
 	if e != nil {
@@ -194,7 +194,7 @@ func HandleActivityLabelSpecialPermission(user *models.WxUserItem) (condition st
 	return
 }
 
-//HandleActivityLabelSpecialPermisseion 处理专项产业调研的查询权限sql
+// HandleActivityLabelSpecialPermisseion 处理专项产业调研的查询权限sql
 func HandleActivityLabelSpecialTripPermission(user *models.WxUserItem) (condition string, err error) {
 	permissionStr, e := GetCompanyPermission(user.CompanyId)
 	if e != nil {
@@ -226,7 +226,7 @@ func HandleActivityLabelSpecialTripPermission(user *models.WxUserItem) (conditio
 	return
 }
 
-//获取预报名列表
+// 获取预报名列表
 func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize int, keywords, conditionActivity string) (list []*models.CygxActivitySpecialDetail, totalPrepare int, err error) {
 	companyDetail, e := models.GetCompanyDetailByIdGroupTrip(user.CompanyId)
 	if e != nil && e.Error() != utils.ErrNoRow() {
@@ -371,7 +371,7 @@ func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, page
 	return
 }
 
-//获取用户已经报名的活动
+// 获取用户已经报名的活动
 func GetSpecialTripUserMap(activityIds []int, userId int) (mapUserId map[int]int, err error) {
 	var condition string
 	var pars []interface{}
@@ -395,7 +395,7 @@ func GetSpecialTripUserMap(activityIds []int, userId int) (mapUserId map[int]int
 	return
 }
 
-//获取用户已经报名的活动数量
+// 获取用户已经报名的活动数量
 func GetSpecialTripUserSchedule(userId int) (total int, err error) {
 	var condition string
 	var pars []interface{}
@@ -409,7 +409,7 @@ func GetSpecialTripUserSchedule(userId int) (total int, err error) {
 	return
 }
 
-//GetActivitySpecialList 获取专项调研列表
+// GetActivitySpecialList 获取专项调研列表
 func GetActivitySpecialList(user *models.WxUserItem, currentIndex, pageSize int, keywords, conditionActivity, activeState string) (list []*models.CygxActivitySpecialDetail, total int, err error) {
 
 	state := 4
@@ -503,7 +503,7 @@ func GetActivitySpecialList(user *models.WxUserItem, currentIndex, pageSize int,
 	return
 }
 
-//HandleActivitySpecialShow 处理活动的状态
+// HandleActivitySpecialShow 处理活动的状态
 func HandleActivitySpecialShow(activityDetail *models.CygxActivitySpecialDetail, user *models.WxUserItem) (item *models.CygxActivitySpecialDetail, err error) {
 	var activityIds []int
 	resultTimeStart := utils.StrTimeToTime(activityDetail.ActivityTime)  //时间字符串格式转时间格式
@@ -540,35 +540,71 @@ func HandleActivitySpecialShow(activityDetail *models.CygxActivitySpecialDetail,
 	return
 }
 
-//活动与专项调研搜索 GetActivitySpecialSearcheList
-func GetActivitySpecialSearcheList(user *models.WxUserItem, condition string, startSize, pageSize int, keywords string, playBack int) (items []*models.ActivityDetail, total int, err error) {
+// 活动与专项调研搜索 GetActivitySpecialSearcheList
+// 活动与专项调研搜索 GetActivitySpecialSearcheList
+func GetActivitySpecialSearcheList(user *models.WxUserItem, condition string, startSize, pageSize int, keywords string) (items []*models.ActivityDetail, total int, err error) {
 	var conditionSpecil string
 	var pars, parsSpecil []interface{}
+	keyword := keywords
 	if keywords != "" {
 		keywords = "%" + keywords + "%"
-		conditionSpecil += ` AND art.days > 0 AND art.publish_status = 1 AND (art.research_theme LIKE ? OR art.label LIKE ? OR art.industrial_name LIKE ? OR art.industrial_subject_name LIKE ? ) `
+		conditionSpecil += ` AND art.days > 0 AND (art.research_theme LIKE ? OR art.label LIKE ? OR art.industrial_name LIKE ? OR art.industrial_subject_name LIKE ? ) `
 		parsSpecil = append(parsSpecil, keywords, keywords, keywords, keywords)
 	}
-
-	if playBack == 1 {
-		conditionSpecil += ` AND art.activity_id = 0 `
-	}
 	list, totalSearche, e := models.GetActivitySpecialSearcheList(condition, pars, conditionSpecil, parsSpecil, startSize, pageSize)
 	if e != nil {
 		err = errors.New("GetActivitySpecialSearcheList, Err: " + e.Error())
 		return
 	}
 
+	// 查询IK分词后那一部分的数据
+	conditionActivityIk, e := GetActivityonditionList(user, "", "", "", "", "", 0, 1, keyword, 0, 2)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetActivityonditionList, Err: " + e.Error())
+		return
+	}
+	conditionActivityIk += " AND art.is_limit_people = 1 AND art.publish_status = 1  "
+
+	totalIk, e := models.GetActivityCount(conditionActivityIk, 0, pars, 0)
+	if e != nil {
+		err = errors.New("GetActivityonditionList, Err: " + e.Error())
+		return
+	}
+	total = totalSearche + totalIk
+	keyWordArr, e := GetIndustryMapNameSliceV3(keywords)
+	if e != nil {
+		err = errors.New("GetActivityonditionList, Err: " + e.Error())
+		return
+	}
+	keyWordArr = RemoveDuplicatesAndEmpty(keyWordArr)
+	startSizeIk := startSize - totalSearche
+	if startSizeIk < 0 {
+		startSizeIk = 0
+	}
+	var pageSizeIk int
+	pageSizeIk = pageSize - len(list)
+	if pageSizeIk > 0 {
+		//搜索关键词联想
+		conditionActivityIk += ` ORDER BY art.activity_time DESC ,  art.active_state ASC   `
+		listIk, e := models.GetActivityListNew(conditionActivityIk, pars, user.UserId, startSizeIk, pageSizeIk, 0, 0, "")
+		if e != nil {
+			err = errors.New("GetActivityonditionList, Err: " + e.Error())
+			return
+		}
+		for _, item := range listIk {
+			list = append(list, item)
+		}
+	}
+
 	items, e = HandleActivityListButton(list, user)
 	if e != nil {
 		err = errors.New("HandleActivityListButton, Err: " + e.Error())
 		return
 	}
-	total = totalSearche
 	return
 }
 
-//获取 专项调研客户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //8、行业升级套餐客户 //9、其余正式客户;5、试用客户
+// 获取 专项调研客户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //8、行业升级套餐客户 //9、其余正式客户;5、试用客户
 func GetActivitySpecialUserType(companyId int) (userType int, permissionStrnew string, err error) {
 	var permissionStr string
 	if companyId <= 1 {
@@ -626,8 +662,8 @@ func GetActivitySpecialUserType(companyId int) (userType int, permissionStrnew s
 	return
 }
 
-//GetSpecialUserType 获取专项产业调研的用户身份类型
-//获取 专项调研客户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //8、行业升级套餐客户 //9、其余正式客户;5、试用客户
+// GetSpecialUserType 获取专项产业调研的用户身份类型
+// 获取 专项调研客户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //8、行业升级套餐客户 //9、其余正式客户;5、试用客户
 func GetSpecialUserType(user *models.WxUserItem) (userType int, err error) {
 	companyId := user.CompanyId
 	companyDetail, e := models.GetCompanyDetailByIdGroupTrip(companyId)
@@ -674,7 +710,7 @@ func GetSpecialUserType(user *models.WxUserItem) (userType int, err error) {
 	return
 }
 
-//GetSpecialDetailUserPower 处理用户查看专项调研详情的权限
+// GetSpecialDetailUserPower 处理用户查看专项调研详情的权限
 func GetSpecialDetailUserPower(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (havePower bool, err error) {
 	permissionStr, e := GetCompanyPermissionUpgrade(user.CompanyId)
 	if e != nil {
@@ -716,7 +752,7 @@ func GetSpecialDetailUserPower(user *models.WxUserItem, activityInfo *models.Cyg
 	return
 }
 
-//预报名活动,感兴趣人数满10人时,推送给活动负责人和王芳
+// 预报名活动,感兴趣人数满10人时,推送给活动负责人和王芳
 func SendWxMsgActivitySpecial10(activityInfo *models.CygxActivitySpecialDetail) (err error) {
 	activityId := activityInfo.ActivityId
 	var msg string

+ 1 - 1
services/resource_data.go

@@ -121,7 +121,7 @@ func GetResourceDataList(condition string, pars []interface{}, startSize, pageSi
 		pars = make([]interface{}, 0)
 		condition = ` AND art.activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `)   `
 		pars = append(pars, activityIds)
-		activityList, e := models.GetActivityListNew(condition, pars, uid, 0, len(activityIds), 0, 0)
+		activityList, e := models.GetActivityListNew(condition, pars, uid, 0, len(activityIds), 0, 0, "")
 		if e != nil {
 			err = errors.New("GetResourceDataList, Err: " + e.Error())
 			return

+ 10 - 10
utils/constants.go

@@ -4,7 +4,7 @@ const (
 	Md5Key = "Ks@h64WJ#tcVgG8$&WlNfqvLAtMgpxWN"
 )
 
-//常量定义
+// 常量定义
 const (
 	FormatTime             = "15:04:05"                //时间格式
 	FormatDate             = "2006-01-02"              //日期格式
@@ -29,14 +29,14 @@ const (
 	REGISTER_PLATFORM   = 2 // 来源 1小程序,2:网页
 )
 
-//手机号,电子邮箱正则
+// 手机号,电子邮箱正则
 const (
 	RegularMobile         = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0-9])|(17[0-9])|(16[0-9])|(19[0-9]))\\d{8}$" //手机号码
 	RegularFixedTelephone = "^(\\(\\d{3,4}\\)|\\d{3,4}-|\\s)?\\d{7,14}$"                                              //手机号码
 	RegularEmail          = `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`                                             //匹配电子邮箱
 )
 
-//聚合短信
+// 聚合短信
 var (
 	JhGnTplId = "65692" //聚合国内模板编码
 	JhGjTplId = "10054" //聚合国内模板编码
@@ -45,7 +45,7 @@ var (
 	JhGjAppKey = "3326ad2c1047a4cd92ace153e6044ca3"
 )
 
-//OSS
+// OSS
 var (
 	Endpoint   string = "oss-cn-shanghai.aliyuncs.com"
 	Bucketname string = "hongze"
@@ -84,9 +84,10 @@ const (
 	OnlineTime                       string = "2021-06-01 00:00:01" //上线时间
 	HONG_GUAN_ID                     int    = 1
 	HZ_COMPANY_ID                    int    = 16
+	YAN_XUAN_ARTICLE_TYPE_IDS        string = "1,2,12" // 属于研选的报告类型ID
 )
 
-//模板消息推送类型
+// 模板消息推送类型
 const (
 	TEMPLATE_MSG_CYGX_ACTIVITY_ADD = 12 //查研观向小程序活动更新推送 12
 	TEMPLATE_MSG_CYGX_ARTICLE_ADD  = 13 //查研观向报告更新推送  13
@@ -104,7 +105,7 @@ const (
 	TIME_CATEGORYID = 99999 //时间线的分类ID
 )
 
-//活动相关
+// 活动相关
 const (
 	C_CLASS_ACTIVITY_TYPE_ID      int = 7 //C类电话会会议ID
 	ANALYST_TELL_ACTIVITY_TYPE_ID int = 2 //分析师电话会ID
@@ -131,21 +132,20 @@ const (
 	ACTIVITY_ZXDY_ImgUrl3 = "https://hzstatic.hzinsights.com/cygx/special_list_bg.png"
 )
 
-//模板消息地址路由
+// 模板消息地址路由
 const (
 	ACtIVITY_SPECIAL_EXPLAIN      = "此类调研具体行程尚未确定,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确定行程中再次报名才完成占位。"                        //专项调研说明
 	ACtIVITY_SPECIAL_TRIP_EXPLAIN = "此类调研时间安排已经确定,点击报名后按人次扣除对应机构的服务点数。由于每场活动人数有限,如果不能参加请提前48小时取消,未及时取消导致影响其他客户报名将会维持扣点。" //专项调研说明
 
 )
 
-//模板消息地址路由
+// 模板消息地址路由
 const (
 	WX_MSG_PATH_ARTICLE_DETAIL          = "pageMy/reportDetail/reportDetail?id="          //文章详情模板消息地址
 	WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL = "activityPages/specialDetail/specialDetail?id=" //专项调研活动模板消息地址
 )
 
-//微信模板消息推送公共接口的秘钥
+// 微信模板消息推送公共接口的秘钥
 const (
 	SendTemplateMsgAuthorization = "dc855fce962a639faa779cbdd4cd332f"
 )
-