|
@@ -2,6 +2,7 @@ package services
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "errors"
|
|
|
"fmt"
|
|
|
"github.com/tealeg/xlsx"
|
|
|
"hongze/hongze_cygx/models"
|
|
@@ -1381,3 +1382,63 @@ func ActivityButtonShow(item *models.ActivityDetail) (articleDetail *models.Acti
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// GetActivityNewLabelMap 获取活动【新】标签Map
|
|
|
+func GetActivityNewLabelMap(activityIds []int) (labelMap map[int]bool, err error) {
|
|
|
+ labelMap = make(map[int]bool, 0)
|
|
|
+ if len(activityIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取活动关联的产业
|
|
|
+ var groupCond string
|
|
|
+ var groupPars []interface{}
|
|
|
+ groupCond += ` AND a.activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `)`
|
|
|
+ groupPars = append(groupPars, activityIds)
|
|
|
+ groups, e := models.GetActivityIndustryRelationList(groupCond, groupPars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("获取活动产业关联列表失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ activityIndustryMap := make(map[int][]int, 0)
|
|
|
+ industryIds := make([]int, 0)
|
|
|
+ for i := range groups {
|
|
|
+ industryIds = append(industryIds, groups[i].IndustrialManagementId)
|
|
|
+ activityIndustryMap[groups[i].ActivityId] = append(activityIndustryMap[groups[i].ActivityId], groups[i].IndustrialManagementId)
|
|
|
+ }
|
|
|
+ industryIdLen := len(industryIds)
|
|
|
+
|
|
|
+ // 获取产业关联的报告最早发布时间及最近的发布时间
|
|
|
+ var timeCond string
|
|
|
+ var timePars []interface{}
|
|
|
+ timeCond += ` AND b.publish_status = 1`
|
|
|
+ if industryIdLen > 0 {
|
|
|
+ timeCond += ` AND a.industrial_management_id IN (` + utils.GetOrmInReplace(industryIdLen) + `)`
|
|
|
+ timePars = append(timePars, industryIds)
|
|
|
+ }
|
|
|
+ industryTimeList, e := models.GetIndustryArticleMinMaxPublishTime(timeCond, timePars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("获取产业文章最大最小发布时间失败, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断产业是否为新
|
|
|
+ nowTime := time.Now().Local()
|
|
|
+ threeMonthBefore := nowTime.AddDate(0, -3, 0)
|
|
|
+ nullTime, _ := time.Parse(utils.FormatDateTime, "0001-01-01 00:00:00")
|
|
|
+ for i := range industryTimeList {
|
|
|
+ // 最早发布时间为空 / 最早发布时间在三个月前之后
|
|
|
+ if industryTimeList[i].MinPublishTime == nullTime || (industryTimeList[i].MinPublishTime.After(threeMonthBefore)) {
|
|
|
+ for k, v := range activityIndustryMap {
|
|
|
+ if labelMap[k] {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if utils.InArrayByInt(v, industryTimeList[i].IndustrialManagementId) {
|
|
|
+ labelMap[k] = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|