瀏覽代碼

Merge branch 'cygx_need_p1_885' of http://8.136.199.33:3000/cxzhang/hongze_clpt into debug

xingzai 1 年之前
父節點
當前提交
ed705dcbc1

+ 78 - 34
controllers/activity_special.go

@@ -7,7 +7,6 @@ import (
 	"hongze/hongze_clpt/services"
 	"hongze/hongze_clpt/utils"
 	"strconv"
-	"strings"
 	"time"
 )
 
@@ -261,10 +260,22 @@ func (this *ActivitySpecialController) SpecialTripAdd() {
 			itemBill.Source = 1
 			itemBill.DoType = 1
 			itemBill.BillDetailed = -1 // 流水减一
-			itemBill.RegisterPlatform = 1
+			itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
 			itemBill.ChartPermissionId = activityInfo.ChartPermissionId
 			itemBill.ChartPermissionName = activityInfo.ChartPermissionName
 
+			if activityInfo.ChartPermissionName == utils.CE_LUE_NAME {
+				//如果是策略行业,把代扣行业信息放入流水表,取消报名的时候,返点使用
+				maxChartPermissionId, maxChartPermissionName, err := services.GetSpecialBillMaxChartPermissionId(user)
+				if err != nil {
+					br.Msg = "操作失败"
+					br.ErrMsg = "获取销售信息失败,GetSpecialBillMaxChartPermissionId Err:" + err.Error()
+					return
+				}
+				itemBill.ChartPermissionId = maxChartPermissionId
+				itemBill.ChartPermissionName = maxChartPermissionName
+			}
+
 			var itemMeeting = new(models.CygxActivitySpecialMeetingDetail)
 			itemMeeting.UserId = user.UserId
 			itemMeeting.ActivityId = activityId
@@ -276,7 +287,7 @@ func (this *ActivitySpecialController) SpecialTripAdd() {
 			itemMeeting.RealName = user.RealName
 
 			go services.ActivitySpecialUserRmind(user, activityId, 2)
-			//判断是删除还是添加
+			//判断是添加还是删除
 			if total == 0 {
 				//获取销售信息
 				sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
@@ -313,6 +324,14 @@ func (this *ActivitySpecialController) SpecialTripAdd() {
 						item.CountryCode = user.CountryCode
 					}
 				}
+
+				err = services.DeductTripRemainingtimesByUser(user, activityInfo) //扣除用户专项调研剩余次数
+				if err != nil {
+					br.Msg = "操作失败"
+					br.ErrMsg = "操作失败,Err:" + err.Error()
+					return
+				}
+
 				err = models.AddCygxActivitySpecialTrip(item)
 				if err != nil {
 					br.Msg = "操作失败"
@@ -320,6 +339,7 @@ func (this *ActivitySpecialController) SpecialTripAdd() {
 					return
 				}
 				//SignupStatus  int    `description:"返回状态:1:成功 、2 :人数已满 、3:调研次数已用完、 4:超时"`
+
 			} else {
 				updateParams := make(map[string]interface{})
 				updateParams["IsValid"] = 1
@@ -338,24 +358,32 @@ func (this *ActivitySpecialController) SpecialTripAdd() {
 					itemBill.BillDetailed = 0 //48小时之内,取消报名之后二次报名,不扣除流水记录
 				}
 			}
-			userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
+			//userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
+			//if err != nil {
+			//	br.Msg = "获取专项调研剩余次数失败"
+			//	br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+			//	return
+			//}
+			//if userType == 2 {
+			//	tripRemaining = tripRemaining + itemBill.BillDetailed
+			//	itemBill.Total = strconv.Itoa(tripRemaining) + "次"
+			//} else {
+			//	for k, num := range mapChartName {
+			//		if activityInfo.ChartPermissionName == k {
+			//			num = num + itemBill.BillDetailed
+			//		}
+			//		itemBill.Total += k + strconv.Itoa(num) + "次+"
+			//	}
+			//	itemBill.Total = strings.TrimRight(itemBill.Total, "+")
+			//}
+
+			totalText, err := services.HandleActivitySpecialTripBillTotalText(user)
 			if err != nil {
-				br.Msg = "获取专项调研剩余次数失败"
-				br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+				br.Msg = "报名失败,"
+				br.ErrMsg = "二次报名,更改报名是否有效状态失败,Err:" + err.Error()
 				return
 			}
-			if userType == 2 {
-				tripRemaining = tripRemaining + itemBill.BillDetailed
-				itemBill.Total = strconv.Itoa(tripRemaining) + "次"
-			} else {
-				for k, num := range mapChartName {
-					if activityInfo.ChartPermissionName == k {
-						num = num + itemBill.BillDetailed
-					}
-					itemBill.Total += k + strconv.Itoa(num) + "次+"
-				}
-				itemBill.Total = strings.TrimRight(itemBill.Total, "+")
-			}
+			itemBill.Total = totalText
 
 			//添加流水记录
 			err = models.AddCygxActivitySpecialTripBill(itemBill)
@@ -442,7 +470,7 @@ func (this *ActivitySpecialController) Tripcancel() {
 	itemBill.Source = 1
 	itemBill.DoType = 2
 	itemBill.BillDetailed = 1 // 流水加一
-	itemBill.RegisterPlatform = 1
+	itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
 	itemBill.ChartPermissionId = activityInfo.ChartPermissionId
 	itemBill.ChartPermissionName = activityInfo.ChartPermissionName
 	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
@@ -451,25 +479,41 @@ func (this *ActivitySpecialController) Tripcancel() {
 	if time.Now().Add(+time.Hour * 48).After(resultTime) {
 		isValid = 1
 		itemBill.BillDetailed = 0 //48小时之内取消的活动扣点不返回
+	} else {
+		err = services.RebateTripRemainingtimesByUser(user, activityInfo) // 返点
+		if err != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "操作失败,RebateTripRemainingtimesByUserErr:" + err.Error()
+			return
+		}
 	}
-	userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
+	//userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
+	//if err != nil {
+	//	br.Msg = "获取专项调研剩余次数失败"
+	//	br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+	//	return
+	//}
+	//if userType == 2 {
+	//	tripRemaining += itemBill.BillDetailed
+	//	itemBill.Total = strconv.Itoa(tripRemaining) + "次"
+	//} else {
+	//	for k, num := range mapChartName {
+	//		if activityInfo.ChartPermissionName == k {
+	//			num += itemBill.BillDetailed
+	//		}
+	//		itemBill.Total += k + strconv.Itoa(num) + "次+"
+	//	}
+	//	itemBill.Total = strings.TrimRight(itemBill.Total, "+")
+	//}
+
+	totalText, err := services.HandleActivitySpecialTripBillTotalText(user)
 	if err != nil {
-		br.Msg = "获取专项调研剩余次数失败"
-		br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+		br.Msg = "报名失败,"
+		br.ErrMsg = "二次报名,更改报名是否有效状态失败,Err:" + err.Error()
 		return
 	}
-	if userType == 2 {
-		tripRemaining += itemBill.BillDetailed
-		itemBill.Total = strconv.Itoa(tripRemaining) + "次"
-	} else {
-		for k, num := range mapChartName {
-			if activityInfo.ChartPermissionName == k {
-				num += itemBill.BillDetailed
-			}
-			itemBill.Total += k + strconv.Itoa(num) + "次+"
-		}
-		itemBill.Total = strings.TrimRight(itemBill.Total, "+")
-	}
+	itemBill.Total = totalText
+
 	err = models.CancelActivitySpecialTripIsValid(isValid, activityInfo.ActivityId, uid)
 	if err != nil {
 		br.Msg = "操作失败"

+ 5 - 5
controllers/report.go

@@ -286,11 +286,11 @@ func (this *MobileReportController) IndustryList() {
 			condition += ` AND man.industrial_management_id IN (` + utils.GetOrmInReplace(activeIndustryLen) + `)`
 			parsBd = append(parsBd, activeIndustryIds)
 		}
-		nowTime := time.Now().Local()
-		startTime := nowTime.AddDate(0, -1, 0)
-		endTime := nowTime.AddDate(0, 0, -1)
-		condition += ` AND idf.create_time BETWEEN ? AND ?`
-		parsBd = append(parsBd, startTime, endTime)
+		//nowTime := time.Now().Local()
+		//startTime := nowTime.AddDate(0, -1, 0)
+		//endTime := nowTime.AddDate(0, 0, -1)
+		//condition += ` AND idf.create_time BETWEEN ? AND ?`
+		//parsBd = append(parsBd, startTime, endTime)
 		list, e = models.GetTopIndustryFollowData(0, pageSize, condition, parsBd)
 		if e != nil {
 			br.Msg = "获取失败"

+ 3 - 1
controllers/research.go

@@ -123,18 +123,20 @@ func (this *MobileResearchController) ArticleNewList() {
 		br.ErrMsg = "GetArticleResearchCount,Err:" + err.Error()
 		return
 	}
-	list, err := models.GetArticleResearchList(condition, pars, startSize, pageSize, user.UserId, needYanxuanSpecial)
+	list, err := models.GetArticleResearchListYx(condition, pars, startSize, pageSize, user.UserId, needYanxuanSpecial)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
+
 	list, err = services.HandleArticleCategoryImg(list, user)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "HandleArticleCategoryImg,Err:" + err.Error()
 		return
 	}
+
 	//处理对应的文章类型标签按钮
 	nameMap, styleMap, err := services.GetArticleTypeMap()
 	if err != nil {

+ 36 - 0
models/activity_special_permission_points.go

@@ -0,0 +1,36 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxActivitySpecialPermissionPoints struct {
+	Id                  int       `orm:"column(id);pk"`
+	CompanyId           int       `description:"公司ID"`
+	Points              int       `description:"剩余点数"`
+	CompanyName         string    `description:"公司名称"`
+	ChartPermissionId   int       `description:"行业id"`
+	ChartPermissionName string    `description:"行业名称"`
+	CreateTime          time.Time `description:"创建时间"`
+	ModifyTime          time.Time `description:"更新时间"`
+}
+
+// 获取公司每个行业剩余研选点数列表
+func GetCygxActivitySpecialPermissionPointsList(condition string, pars []interface{}) (items []*CygxActivitySpecialPermissionPoints, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_special_permission_points WHERE 1 = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 更新公司每个行业剩余研选点数
+func UpdateCygxActivitySpecialPermissionPoints(points, companyId, chartPermissionId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_activity_special_permission_points SET points = ?  WHERE company_id=?  AND chart_permission_id=? `
+	_, err = o.Raw(sql, points, companyId, chartPermissionId).Exec()
+	return
+}

+ 11 - 0
models/activity_special_trip_bill.go

@@ -79,3 +79,14 @@ func GetCygxActivitySpecialTripBillList(condition string, pars []interface{}) (i
 	_, err = o.Raw(sql, pars).QueryRows(&item)
 	return
 }
+
+// GetCygxActivitySpecialTripBillLastDetialByActivityId  根据活动ID获取最后一条扣点明细
+func GetCygxActivitySpecialTripBillLastDetialByActivityId(activityId, userId int) (item *CygxActivitySpecialTripBill, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *
+			FROM
+			cygx_activity_special_trip_bill  
+			WHERE 1 = 1  AND activity_id =?  AND  user_id = ?  `
+	err = o.Raw(sql, activityId, userId).QueryRow(&item)
+	return
+}

+ 8 - 0
models/cygx_yanxuan_special_collect.go

@@ -48,3 +48,11 @@ func GetCygxYanxuanSpecialCollectCount(condition string, pars []interface{}) (co
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
+
+// GetCygxYanxuanSpecialCollectByUser 根据用户ID获取所有文章收藏
+func GetCygxYanxuanSpecialCollectByUser(userId int) (items []*CygxYanxuanSpecialCollect, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_yanxuan_special_collect  WHERE 1 =1  AND  user_id =?  `
+	_, err = o.Raw(sql, userId).QueryRows(&items)
+	return
+}

+ 24 - 6
models/industrial_management.go

@@ -326,22 +326,40 @@ func GetTopOneMonthArtReadNumIndustryAll(condition string, pars []interface{}) (
 	return
 }
 
+//// GetTopIndustryFollowData 获取关注度最高的产业关注数据
+//func GetTopIndustryFollowData(startSize, pageSize int, condition string, pars []interface{}) (list []*IndustrialManagement, err error) {
+//	sql := `SELECT
+//				COUNT(1) AS one_month_follow_num,
+//				man.*
+//			FROM
+//				cygx_industry_fllow AS idf
+//			JOIN cygx_industrial_management AS man ON idf.industrial_management_id = man.industrial_management_id
+//			WHERE 1 = 1 `
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` GROUP BY
+//				idf.industrial_management_id
+//			ORDER BY
+//				one_month_follow_num DESC
+//			LIMIT ?,?`
+//	_, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+//	return
+//}
+
 // GetTopIndustryFollowData 获取关注度最高的产业关注数据
 func GetTopIndustryFollowData(startSize, pageSize int, condition string, pars []interface{}) (list []*IndustrialManagement, err error) {
 	sql := `SELECT
-				COUNT(1) AS one_month_follow_num,
 				man.*
-			FROM
-				cygx_industry_fllow AS idf
-			JOIN cygx_industrial_management AS man ON idf.industrial_management_id = man.industrial_management_id
+			FROM  cygx_industrial_management AS man
 			WHERE 1 = 1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` GROUP BY
-				idf.industrial_management_id
+				man.industrial_management_id
 			ORDER BY
-				one_month_follow_num DESC
+				man.one_month_follow_num DESC
 			LIMIT ?,?`
 	_, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
 	return

+ 60 - 0
models/report.go

@@ -941,6 +941,66 @@ func GetArticleResearchList(condition string, pars []interface{}, startSize, pag
 	return
 }
 
+func GetArticleResearchListYx(condition string, pars []interface{}, startSize, pageSize, userId int, needYanxuanSpecial bool) (items []*ArticleListResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			a.article_id,
+			a.title,
+			a.body,
+			a.annotation,
+			a.abstract,
+			a.publish_date,
+			a.article_type_id,
+			d.nick_name,
+			d.department_id,
+			0 AS is_special,
+			0 as pv,
+			0 as collect_num,
+			0 AS special_type,
+			0 AS special_column_id,
+			'' AS company_tags, 
+			'' AS industry_tags
+		FROM
+			cygx_article AS a
+			INNER JOIN cygx_article_department AS d ON d.department_id = a.department_id 
+		WHERE
+			1 = 1  AND a.publish_status = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	if needYanxuanSpecial {
+		sql += `UNION ALL
+	SELECT
+		a.id AS article_id,
+		a.title AS title,
+		'' AS body,
+		a.content AS annotation,
+		'' AS abstract,
+		a.publish_time AS publish_date,
+		-1 AS article_type_id,
+		b.nick_name AS nick_name,
+		0 AS department_id,
+		1 AS is_special,
+		a.pv,
+		a.article_collect_num as collect_num,
+		a.type AS special_type,
+		b.id AS special_column_id,
+		a.company_tags AS company_tags, 
+		a.industry_tags AS industry_tags 
+	FROM
+	cygx_yanxuan_special AS a
+	JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id
+	WHERE
+	1 = 1  AND a.status = 3 `
+		sql += ` GROUP BY article_id ORDER  BY publish_date DESC  LIMIT ?,? `
+		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	} else {
+		sql += ` GROUP BY a.article_id ORDER  BY a.publish_date DESC  LIMIT ?,? `
+		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	}
+	return
+}
+
 func GetArticleResearchAndYxSpecialList(condition, conditionYxSpecial string, pars []interface{}, startSize, pageSize, userId int, needYanxuanSpecial bool) (total int, items []*ArticleListResp, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT

+ 8 - 0
services/activity_special.go

@@ -950,6 +950,14 @@ func GetSpecialDetailUserPower(user *models.WxUserItem, activityInfo *models.Cyg
 		err = errors.New("GetCompanyPermissionUpgrade, Err: " + e.Error())
 		return
 	}
+
+	//如果有升级权限的自动添加策略的升级权限
+	if permissionStr != "" {
+		if activityInfo.ChartPermissionName == utils.CE_LUE_NAME {
+			permissionStr += "," + utils.CE_LUE_NAME
+		}
+	}
+
 	//如果没有对应的升级权限,则返回
 	if !strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
 		return

+ 172 - 1
services/activity_special_trip.go

@@ -20,7 +20,7 @@ func SpecialTripPopupMsg(activityInfo *models.CygxActivitySpecialDetail, user *m
 		return
 	}
 
-	errMsg, _, e := GetTripRemainingtimesBycompany(user, activityInfo)
+	errMsg, e := CheckTripRemainingtimesBycompany(user, activityInfo)
 	if e != nil {
 		err = errors.New("获取客户剩余报名次数失败 GetActivitySpecialUserType, Err: " + e.Error())
 		return
@@ -159,6 +159,177 @@ func GetTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *model
 	return
 }
 
+// 校验是否还有剩余次数
+func CheckTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (errMsg string, err error) {
+	msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
+	companyId := user.CompanyId
+	chartPermissionName := activityInfo.ChartPermissionName
+	var condition string
+	var pars []interface{}
+	condition = " AND  company_id  = ?  AND points  > 0   ORDER BY  chart_permission_id DESC  "
+	pars = append(pars, companyId)
+	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
+		return
+	}
+	//如果没有剩余的点数,就返回
+	if len(activitySpecialPermissionPointsList) == 0 {
+		errMsg = msgTemplate
+		return
+	}
+
+	//判断是不是策略行业的活动,策略的任何一个行业有剩余点数都能参加
+	if chartPermissionName == utils.CE_LUE_NAME {
+		return
+	} else {
+		for _, v := range activitySpecialPermissionPointsList {
+			if v.ChartPermissionName == chartPermissionName || v.ChartPermissionId == 0 {
+				return
+			} // 如果对应行业有剩余次数,或者是属于大套餐且有次数,那么校验也通过
+		}
+	}
+	errMsg = msgTemplate
+	return
+
+}
+
+// GetSpecialBillMaxChartPermissionId  获取专项调研剩余点数最多的行业
+func GetSpecialBillMaxChartPermissionId(user *models.WxUserItem) (maxChartPermissionId int, maxChartPermissionName string, err error) {
+	companyId := user.CompanyId
+	var condition string
+	var pars []interface{}
+	condition = " AND  company_id  = ?  AND points  > 0   ORDER BY  points DESC LIMIT 1   "
+	pars = append(pars, companyId)
+
+	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
+		return
+	}
+	for _, v := range activitySpecialPermissionPointsList {
+		maxChartPermissionId = v.ChartPermissionId
+		maxChartPermissionName = v.ChartPermissionName
+	}
+	return
+}
+
+// DeductTripRemainingtimesByUser 扣除用户专项调研剩余次数
+func DeductTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (err error) {
+	msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
+	companyId := user.CompanyId
+	chartPermissionName := activityInfo.ChartPermissionName
+	var condition string
+	var pars []interface{}
+	condition = " AND  company_id  = ?  AND points  > 0   ORDER BY  points DESC LIMIT 1   "
+	pars = append(pars, companyId)
+
+	//判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
+	if chartPermissionName != utils.CE_LUE_NAME {
+		pars = make([]interface{}, 0)
+		condition = " AND  company_id  = ?  AND  chart_permission_id  = ?   AND points  > 0   ORDER BY  points DESC LIMIT 1   "
+		pars = append(pars, companyId, activityInfo.ChartPermissionId)
+	}
+	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
+		return
+	}
+	//如果没有剩余的点数,就返回
+	if len(activitySpecialPermissionPointsList) == 0 {
+		err = errors.New(msgTemplate)
+		return
+	}
+	var maxChartPermissionId int // 剩余点数最多的行业
+	var points int               // 剩余点数
+	for _, v := range activitySpecialPermissionPointsList {
+		maxChartPermissionId = v.ChartPermissionId
+		points = v.Points - 1
+	}
+	//更新对应行业剩余点数
+	e = models.UpdateCygxActivitySpecialPermissionPoints(points, companyId, maxChartPermissionId)
+	if e != nil {
+		err = errors.New("UpdateCygxActivitySpecialPermissionPoints, Err:" + e.Error())
+		return
+	}
+	return
+}
+
+// RebateTripRemainingtimesByUser 返点用户专项调研剩余次数
+func RebateTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (err error) {
+	companyId := user.CompanyId
+	chartPermissionName := activityInfo.ChartPermissionName
+	var condition string
+	var pars []interface{}
+	condition = " AND  company_id  = ?    ORDER BY  points DESC LIMIT 1   "
+	pars = append(pars, companyId)
+
+	//判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
+	if chartPermissionName != utils.CE_LUE_NAME {
+		pars = make([]interface{}, 0)
+		condition = " AND  company_id  = ?  AND  chart_permission_id  = ?   LIMIT 1   "
+		pars = append(pars, companyId, activityInfo.ChartPermissionId)
+	} else {
+		listLastTripBill, e := models.GetCygxActivitySpecialTripBillLastDetialByActivityId(activityInfo.ActivityId, user.UserId)
+		if e != nil {
+			err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+			return
+		}
+
+		pars = make([]interface{}, 0)
+		condition = " AND  company_id  = ?  AND  chart_permission_id  = ?    LIMIT 1   "
+		pars = append(pars, companyId, listLastTripBill.ChartPermissionId)
+	}
+	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
+		return
+	}
+
+	var maxChartPermissionId int // 剩余点数最多的行业(返点行业)
+	var points int               // 剩余点数
+	for _, v := range activitySpecialPermissionPointsList {
+		maxChartPermissionId = v.ChartPermissionId
+		points = v.Points + 1
+	}
+	//更新对应行业剩余点数
+	e = models.UpdateCygxActivitySpecialPermissionPoints(points, companyId, maxChartPermissionId)
+	if e != nil {
+		err = errors.New("UpdateCygxActivitySpecialPermissionPoints, Err:" + e.Error())
+		return
+	}
+	return
+}
+
+// 预处理专项调研流水明细表描述内容
+func HandleActivitySpecialTripBillTotalText(user *models.WxUserItem) (totalText string, err error) {
+	companyId := user.CompanyId
+	var condition string
+	var pars []interface{}
+	pars = make([]interface{}, 0)
+	condition = " AND  company_id  = ?  AND points  != 0   ORDER BY  chart_permission_id DESC  "
+	pars = append(pars, companyId)
+	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
+		return
+	}
+
+	var itemBillTotal []string
+	for _, v := range activitySpecialPermissionPointsList {
+		if v.ChartPermissionId > 0 {
+			itemBillTotal = append(itemBillTotal, fmt.Sprint(v.ChartPermissionName, v.Points, "次")) // 行业套餐客户展示规则
+		}
+		if v.ChartPermissionId == 0 {
+			totalText = fmt.Sprint(v.Points, "次") // 大套餐客户展示规则
+		}
+	}
+	if len(itemBillTotal) > 0 {
+		totalText = strings.Join(itemBillTotal, "+")
+	}
+	return
+}
+
 // 用户搜专项调研操作操作行为,模板消息推送
 func ActivitySpecialUserRmind(user *models.WxUserItem, activityId, TripStatus int) (err error) {
 	defer func() {

+ 3 - 1
services/article.go

@@ -206,7 +206,7 @@ func HandleArticleCategoryImg(list []*models.ArticleListResp, user *models.WxUse
 	articleMapPv := GetArticleHistoryByArticleId(articleIds)                       //文章Pv
 	articleCollectMap, _ := GetCygxArticleCollectMap(user.UserId)                  //用户收藏的文章
 	articleCollectNumMap, _ := GetCygxArticleCollectNumMapByArtcileIds(articleIds) //文章收藏的数量
-
+	articleCollectYanxuanSpecialMap, _ := GetYanxuanSpecialCollectMap(user.UserId) //用户收藏的研选专栏
 	for k, v := range list {
 		if len(industryMap[v.ArticleId]) > 0 {
 			list[k].List = industryMap[v.ArticleId]
@@ -220,6 +220,8 @@ func HandleArticleCategoryImg(list []*models.ArticleListResp, user *models.WxUse
 			list[k].Pv = articleMapPv[v.ArticleId]
 			list[k].IsCollect = articleCollectMap[v.ArticleId]
 			list[k].CollectNum = articleCollectNumMap[v.ArticleId]
+		} else {
+			v.IsCollect = articleCollectYanxuanSpecialMap[v.ArticleId]
 		}
 	}
 

+ 22 - 0
services/cygx_yanxuan_special.go

@@ -510,3 +510,25 @@ func UdpateYanxuanSpecialauthorArticleNum(authoruserId int) {
 	}
 	return
 }
+
+// GetYanxuanSpecialCollectMap 根据用户ID获取所有研选专栏的收藏
+func GetYanxuanSpecialCollectMap(userId int) (mapResp map[int]bool, err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("GetYanxuanSpecialCollectMap 根据用户ID获取所有研选专栏的收藏失败 ErrMsg:"+err.Error(), 2)
+
+		}
+	}()
+	list, e := models.GetCygxYanxuanSpecialCollectByUser(userId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("根据用户ID获取所有文章收藏,GetCygxYanxuanSpecialCollectByUser " + e.Error())
+		return
+	}
+	mapResp = make(map[int]bool, 0)
+	if len(list) > 0 {
+		for _, v := range list {
+			mapResp[v.YanxuanSpecialId] = true
+		}
+	}
+	return
+}

+ 1 - 0
services/es_comprehensive.go

@@ -893,6 +893,7 @@ func SqlComprehensiveSearch(keyWord string, startSize, pageSize int) (result []*
 		}
 	} else if totalTitle <= searchTotal-pageSize {
 		//全部都是内容搜索
+		startSize = startSize - totalTitle
 		list, e = models.GetResourceDataListCondition(conditionContent, parsContent, startSize, pageSize)
 		if e != nil && e.Error() != utils.ErrNoRow() {
 			err = errors.New("GetResourceDataListCondition, Err: " + e.Error())