瀏覽代碼

Merge branch 'cygx_8.0' of http://8.136.199.33:3000/hongze/hongze_cygx into debug

xingzai 2 年之前
父節點
當前提交
9c4d36f8c4

+ 3 - 3
controllers/activity.go

@@ -949,7 +949,7 @@ func (this *ActivityCoAntroller) Detail() {
 				var condition string
 				condition = ` AND m.industrial_management_id IN (` + industrialManagementId + `)`
 				condition += ` AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId)
-				listIndustrialGrop, err := models.GetSearchResourceList(condition)
+				listIndustrialGrop, err := models.GetSearchResourceList(condition, 0, 0)
 				if err != nil && err.Error() != utils.ErrNoRow() {
 					br.Msg = "获取信息失败"
 					br.ErrMsg = "GetSearchResourceList,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
@@ -2785,7 +2785,7 @@ func (this *ActivityCoAntroller) ActivityListNew() {
 	activityTypeId := this.GetString("ActivityTypeId")
 	keyWord := this.GetString("KeyWord")
 	playBack, _ := this.GetInt("PlayBack")
-	activityId, _ := this.GetInt("ActivityId")	// 仅用于判断【新】标签
+	activityId, _ := this.GetInt("ActivityId") // 仅用于判断【新】标签
 
 	if label == "undefined" {
 		label = ""
@@ -3627,7 +3627,7 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 	}
 
 	//获取对应活动的数量并排序
-	activityIds := make([]int, 0)	// 用于查询活动【新】标签Map
+	activityIds := make([]int, 0) // 用于查询活动【新】标签Map
 	intArr := make([]int, 0)
 	var items []*models.ActivityTypeHome
 	for _, v := range list {

+ 173 - 4
controllers/report.go

@@ -2333,8 +2333,6 @@ func (this *ReportController) SearchReport() {
 	condition = `AND ( a.title LIKE '%` + keyWord + `%' OR  a.body LIKE '%` + keyWord + `%' OR  a.annotation LIKE '%` + keyWord + `%' OR  a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 `
 	sqlGroup = ` GROUP BY  a.article_id  ORDER BY a.publish_date DESC  `
 	//对应产业名称、标的名称。
-	//OR a.article_id IN ( SELECT article_id FROM cygx_industrial_article_group_subject WHERE industrial_subject_id IN ( SELECT industrial_subject_id FROM cygx_industrial_subject WHERE subject_name LIKE '%` + keyWord + `%' ) )
-	//OR a.article_id IN ( SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE industry_name LIKE '%` + keyWord + `%' ) )
 	listYx, err := models.GetArticleCollectionList(` AND a.article_id >= 1000000 `+condition+sqlGroup, user.UserId)
 	if err != nil {
 		br.Msg = "获取信息失败"
@@ -2420,7 +2418,7 @@ func (this *ReportController) SearchResource() {
 	conditionOr += ` OR ( m.subject_names LIKE '%` + keyWord + `%' AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + `  AND publish_status = 1 ) `
 	condition = ` AND m.industry_name LIKE '%` + keyWord + `%' AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + conditionOr
 
-	listHz, err := models.GetSearchResourceList(condition)
+	listHz, err := models.GetSearchResourceList(condition, 0, 0)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
@@ -2430,7 +2428,7 @@ func (this *ReportController) SearchResource() {
 	conditionOr = ` OR ( m.subject_names LIKE '%` + keyWord + `%' AND a.article_id >= ` + strconv.Itoa(utils.SummaryArticleId) + `  AND publish_status = 1 ) `
 	condition = ` AND m.industry_name LIKE '%` + keyWord + `%' AND a.article_id >= ` + strconv.Itoa(utils.SummaryArticleId) + conditionOr
 
-	listYx, err := models.GetSearchResourceList(condition)
+	listYx, err := models.GetSearchResourceList(condition, 0, 0)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取文章列表失败,Err:" + err.Error()
@@ -2510,3 +2508,174 @@ func (this *ReportController) SearchResource() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 报告搜索、资源包搜索接口
+// @Description 报告搜索、资源包搜索接口接口
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Success 200 {object} models.SearchReportAndResourceResp
+// @router /searchReportAndResource [get]
+func (this *ReportController) SearchReportAndResource() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	keyWord := this.GetString("KeyWord")
+	pageSize, _ := this.GetInt("PageSize")
+	var condition string
+	var sqlGroup string
+	//匹配报告标题、
+	condition = `AND ( a.title LIKE '%` + keyWord + `%' OR  a.body LIKE '%` + keyWord + `%' OR  a.annotation LIKE '%` + keyWord + `%' OR  a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 `
+	sqlGroup = ` GROUP BY  a.article_id  ORDER BY a.publish_date DESC  `
+	if pageSize > 0 {
+		sqlGroup += ` LIMIT 5 `
+	}
+	ListYxReport, err := models.GetArticleCollectionList(` AND a.article_id >= 1000000 `+condition+sqlGroup, user.UserId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取文章列表失败,Err:" + err.Error()
+		return
+	}
+	for k, v := range ListYxReport {
+		ListYxReport[k].Source = 2
+		if v.MyCollectNum > 0 {
+			ListYxReport[k].IsCollect = true
+		}
+	}
+	ListHzReport, err := models.GetReoprtSearchList(` AND a.article_id < 1000000 `+condition+` OR ( article_type = 'lyjh' `+condition+` ) `+sqlGroup, user.UserId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取文章列表失败,Err:" + err.Error()
+		return
+	}
+	for k, v := range ListHzReport {
+		ListHzReport[k].Source = 1
+		if v.MyCollectNum > 0 {
+			ListHzReport[k].IsCollect = true
+		}
+	}
+
+	if len(ListYxReport) == 0 {
+		ListYxReport = make([]*models.ArticleCollectionResp, 0)
+	}
+	if len(ListHzReport) == 0 {
+		ListHzReport = make([]*models.ArticleCollectionResp, 0)
+	}
+
+	fllowList, err := models.GetUserFllowIndustrialList(uid)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetUserFllowIndustrialList Err:" + err.Error()
+		return
+	}
+	fllowMap := make(map[int]int)
+	if len(fllowList) > 0 {
+		for _, v := range fllowList {
+			fllowMap[v.IndustrialManagementId] = v.IndustrialManagementId
+		}
+	}
+
+	var conditionOr string
+	conditionOr += ` OR ( m.subject_names LIKE '%` + keyWord + `%' AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + `  AND publish_status = 1 ) `
+	condition = ` AND m.industry_name LIKE '%` + keyWord + `%' AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + conditionOr
+
+	listHzResource, err := models.GetSearchResourceList(condition, 0, pageSize)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+
+	conditionOr = ` OR ( m.subject_names LIKE '%` + keyWord + `%' AND a.article_id >= ` + strconv.Itoa(utils.SummaryArticleId) + `  AND publish_status = 1 ) `
+	condition = ` AND m.industry_name LIKE '%` + keyWord + `%' AND a.article_id >= ` + strconv.Itoa(utils.SummaryArticleId) + conditionOr
+
+	listYxResource, err := models.GetSearchResourceList(condition, 0, pageSize)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取文章列表失败,Err:" + err.Error()
+		return
+	}
+	//合并产业关联的标的
+	listSubjcet, err := models.GetThemeHeatSubjectList("")
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取标的信息失败,Err:" + err.Error()
+		return
+	}
+	industrialIdArr := make([]int, 0)
+	for k, v := range listHzResource {
+		listHzResource[k].Source = 1
+		if fllowMap[v.IndustrialManagementId] > 0 {
+			listHzResource[k].IsFollw = true
+		}
+		industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
+	}
+
+	for k, v := range listYxResource {
+		listYxResource[k].Source = 2
+		if fllowMap[v.IndustrialManagementId] > 0 {
+			listYxResource[k].IsFollw = true
+		}
+		industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
+	}
+
+	if len(industrialIdArr) > 0 {
+		//合并产业关联的标的
+		listSubjcet, err = models.GetIndustrialSubjectAllByIndustrialId(industrialIdArr)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取标的信息失败,Err:" + err.Error()
+			return
+		}
+		mapIndustrial := make(map[string]int)
+		for _, v := range listSubjcet {
+			for k2, v2 := range listYxResource {
+				if v2.IndustrialManagementId == v.IndustrialManagementId && mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Yx", v.SubjectName)] == 0 {
+					listYxResource[k2].IndustrialSubjectList = append(listYxResource[k2].IndustrialSubjectList, v)
+					mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Yx", v.SubjectName)] = v2.IndustrialManagementId
+				}
+			}
+			for k2, v2 := range listHzResource {
+				if v2.IndustrialManagementId == v.IndustrialManagementId && mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] == 0 {
+					listHzResource[k2].IndustrialSubjectList = append(listHzResource[k2].IndustrialSubjectList, v)
+					mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] = v2.IndustrialManagementId
+				}
+			}
+		}
+	}
+
+	resp := new(models.SearchReportAndResourceResp)
+	if len(listYxResource) == 0 {
+		listYxResource = make([]*models.IndustrialManagementHotResp, 0)
+	}
+	if len(listHzResource) == 0 {
+		listHzResource = make([]*models.IndustrialManagementHotResp, 0)
+	}
+
+	if keyWord != "" {
+		keyWordItem := new(models.CygxUserSearchKeyWord)
+		keyWordItem.UserId = user.UserId
+		keyWordItem.KeyWord = keyWord
+		keyWordItem.PageType = "ReortSearch"
+		keyWordItem.CreateTime = time.Now()
+		go models.AddUserSearchKeyWord(keyWordItem)
+		go services.AddUserSearchLog(user, keyWord, 5)
+	}
+
+	resp.ListHzResource = listHzResource
+	resp.ListYxResource = listYxResource
+	resp.ListYxReport = ListYxReport
+	resp.ListHzReport = ListHzReport
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 8 - 0
models/activity_attendance_detail.go

@@ -185,3 +185,11 @@ func GetActivityAttendanceDetailList(activityIds string) (items []*CygxActivityA
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+//我的日程列表
+func GetActivityAttendanceDetailListAll() (items []*CygxActivityAttendanceDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_attendance_detail WHERE  activity_id >= 1000 ORDER BY activity_id  ASC  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 143 - 0
models/activity_signup_detail.go

@@ -0,0 +1,143 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
+	"time"
+)
+
+type CygxActivitySignupDetail struct {
+	Id                    int       `orm:"column(id);pk"`
+	ActivityId            int       `description:"活动ID"`
+	UserId                int       `description:"用户ID"`
+	CreateTime            time.Time `description:"创建时间"`
+	Mobile                string    `description:"手机号"`
+	Email                 string    `description:"邮箱"`
+	CompanyId             int       `description:"公司id"`
+	CompanyName           string    `description:"公司名称"`
+	FailType              int       `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
+	SignupType            int       `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
+	DoFailType            int       `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
+	OutboundMobile        string    `description:"外呼手机号"`
+	CountryCode           string    `description:"手机国家区号"`
+	RealName              string    `description:"用户实际名称"`
+	SellerName            string    `description:"所属销售"`
+	FirstMeetingTime      string    `description:"首次入会时间"`
+	LastMeetingTime       string    `description:"最后退出时间"`
+	Duration              string    `description:"参会时长"`
+	MeetingTypeStr        string    `description:"参会方式"`
+	MeetingAuthentication string    `description:"参会权鉴"`
+	MeetingStatusStr      string    `description:"参会状态"`
+	Position              string    `description:"职位"`
+	IsMeeting             int       `description:"是否到会,1到会,0未到会"`
+	UseridEntity          int       `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
+	ActivityTime          string    `description:"活动时间"`
+	CrmCompanyMapStatusId int       `description:"转换后的对应状态信息:1=正式客户, 2=曾使用客户, 3=其他"`
+}
+
+//获取当天已结束的活动
+func GetActivitySattusToComplete() (items []*CygxActivity, err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("修改活动状态至已结束"+err.Error(), 2)
+		}
+	}()
+	o := orm.NewOrm()
+	resultTime_30 := time.Now().Add(-time.Minute * 30).Format(utils.FormatDateTime)
+	resultTime_60 := time.Now().Add(-time.Minute * 60).Format(utils.FormatDateTime)
+	startTime := time.Now().Format(utils.FormatDate)
+	var condition string
+	condition += ` AND (activity_type_id IN ( 1, 2, 3, 7 ) AND  activity_time < '` + resultTime_30 + `'  AND  activity_time > '` + startTime + `')`
+	//condition += ` AND (activity_type_id IN ( 1, 2, 3, 7 ) AND  activity_time < '` + resultTime_30 + `')`
+	condition += ` OR(activity_type_id IN ( 4, 5, 6 ) AND  activity_time < '` + resultTime_60 + `')`
+	//condition += ` OR(activity_type_id IN ( 4, 5, 6 ) AND  activity_time < '` + resultTime_60 + `'  AND  activity_time > '` + startTime + `')`
+	sql := " SELECT * FROM cygx_activity   WHERE 1 = 1 " + condition
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 获取今天报名的用户信息,存入到参会记录表中
+func GetSignupDetailBySignup(condition string, pars []interface{}) (list []*CygxActivitySignupDetail, err error) {
+	sql := `SELECT * FROM cygx_activity_signup  WHERE  1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	return
+}
+
+// 获取参会记录表列表
+func GetSignupDetailList(condition string, pars []interface{}) (list []*CygxActivitySignupDetail, err error) {
+	sql := `SELECT * FROM cygx_activity_signup_detail  WHERE  1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	return
+}
+
+//添加
+func AddCygxActivitySignupDetail(items []*CygxActivitySignupDetail) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	if len(items) > 0 {
+		//批量添加
+		_, err = o.InsertMulti(len(items), items)
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+// UpdateActivitySignupDetailMulti 批量修改用户报名信息且报名的人
+func UpdateActivitySignupDetailMulti(items []*CygxActivitySignupDetail) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw(` UPDATE cygx_activity_signup_detail SET 
+							first_meeting_time = ?,
+							last_meeting_time = ?,
+							duration = ?,
+							meeting_type_str = ?,
+							meeting_authentication = ?,
+							meeting_status_str = ?,
+							position = ?,
+							is_meeting = ?,
+							userid_entity = ?,
+							activity_time = ?,
+							crm_company_map_status_id = ?
+							WHERE mobile = ? AND activity_id = ? `).Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(
+			v.FirstMeetingTime,
+			v.LastMeetingTime,
+			v.Duration,
+			v.MeetingTypeStr,
+			v.MeetingAuthentication,
+			v.MeetingStatusStr,
+			v.Position,
+			v.IsMeeting,
+			v.UseridEntity,
+			v.ActivityTime,
+			v.CrmCompanyMapStatusId,
+			v.Mobile, v.ActivityId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 1 - 0
models/db.go

@@ -122,6 +122,7 @@ func init() {
 		new(ArticleTopHistoryRecord),
 		new(CygxMicroRoadshowVideoHistory),
 		new(MicroRoadshowVideo),
+		new(CygxActivitySignupDetail),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 13 - 1
models/report.go

@@ -664,8 +664,16 @@ type SearchResourceResp struct {
 	ListYx []*IndustrialManagementHotResp `description:"研选"`
 }
 
+//搜索资源包 start
+type SearchReportAndResourceResp struct {
+	ListHzResource []*IndustrialManagementHotResp `description:"弘则资源包"`
+	ListYxResource []*IndustrialManagementHotResp `description:"研选资源包"`
+	ListYxReport   []*ArticleCollectionResp       `description:"研选报告"`
+	ListHzReport   []*ArticleCollectionResp       `description:"弘则报告"`
+}
+
 //产业列表
-func GetSearchResourceList(condition string) (items []*IndustrialManagementHotResp, err error) {
+func GetSearchResourceList(condition string, startSize, pageSize int) (items []*IndustrialManagementHotResp, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
 			m.industry_name,
@@ -679,6 +687,10 @@ func GetSearchResourceList(condition string) (items []*IndustrialManagementHotRe
 		WHERE
 			1 = 1
 			AND publish_status = 1 ` + condition + `  GROUP BY m.industrial_management_id  ORDER BY publish_date_order DESC `
+
+	if startSize > 0 || pageSize > 0 {
+		sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
+	}
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }

+ 9 - 0
routers/commentsRouter.go

@@ -862,6 +862,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"],
+        beego.ControllerComments{
+            Method: "SearchReportAndResource",
+            Router: `/searchReportAndResource`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"],
         beego.ControllerComments{
             Method: "SearchResource",

+ 3 - 0
services/activity.go

@@ -1005,6 +1005,8 @@ func ActivityAttendanceDetail(cont context.Context) (err error) {
 						fmt.Println("AddCygxActivityRestrictSignupByAdmin Err:", err.Error())
 						return err
 					}
+
+					go AddctivitySignupDetailByJmcj(needAddAttendanc, activityDetail.ActivityId)
 				}
 			}
 		}
@@ -1112,6 +1114,7 @@ func ActivityAttendanceDetail(cont context.Context) (err error) {
 						return err
 					}
 					activityIds += strconv.Itoa(vAct.ActivityId) + ","
+					go AddctivitySignupDetailByJmcj(needAddAttendanc, vAct.ActivityId)
 				}
 			}
 		}

+ 190 - 0
services/activity_signup_detail.go

@@ -0,0 +1,190 @@
+package services
+
+import (
+	"context"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+)
+
+//AddctivitySignupDetail  获取当天已结束的活动的报名信息。添加到到会详情
+func AddctivitySignupDetail(cont context.Context) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(" 获取当天已结束的活动的报名信息。添加到到会详情失败, ErrMsg:"+err.Error(), 2)
+		}
+	}()
+	actList, err := models.GetActivitySattusToComplete()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+
+		return err
+	}
+	if len(actList) == 0 {
+		return err
+	}
+	activityIds := make([]int, 0)
+	for _, v := range actList {
+		activityIds = append(activityIds, v.ActivityId)
+	}
+	actLen := len(activityIds)
+
+	var condition string
+	var pars []interface{}
+	if actLen > 0 {
+		//condition += ` AND activity_id IN (` + utils.GetOrmInReplace(actLen) + `)`
+		//pars = append(pars, activityIds)
+	} else {
+		return err
+	}
+	condition = ""
+	//获取当天已经结束了 活动的报名人数
+	signUpList, err := models.GetSignupDetailBySignup(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+
+	signUpDetailList, err := models.GetSignupDetailList(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+
+	mapsignUpDetai := make(map[string]string)
+	if len(signUpDetailList) > 0 {
+		for _, v := range signUpDetailList {
+			mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)] = v.Mobile
+		}
+	}
+	var items []*models.CygxActivitySignupDetail
+	if len(signUpList) > 0 {
+		for _, v := range signUpList {
+			if _, ok := mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)]; !ok {
+				item := new(models.CygxActivitySignupDetail)
+				item.UserId = v.UserId
+				item.RealName = v.RealName
+				item.SellerName = v.SellerName
+				item.ActivityId = v.ActivityId
+				item.CreateTime = v.CreateTime
+				item.Mobile = v.Mobile
+				item.Email = v.Email
+				item.CompanyId = v.CompanyId
+				item.CompanyName = v.CompanyName
+				item.SignupType = v.SignupType
+				item.FailType = v.FailType
+				item.DoFailType = v.DoFailType
+				items = append(items, item)
+				if len(items)%2000 == 0 {
+					err = models.AddCygxActivitySignupDetail(items)
+					if err != nil {
+						return
+					}
+					items = make([]*models.CygxActivitySignupDetail, 0)
+				}
+			}
+		}
+	}
+	if len(items) > 0 {
+		err = models.AddCygxActivitySignupDetail(items)
+		if err != nil {
+			return
+		}
+	}
+	return err
+}
+
+//AddctivitySignupDetailByJmcj 通过进门财经添加用户参数信息
+func AddctivitySignupDetailByJmcj(itemsDetail []*models.CygxActivityAttendanceDetail, activityId int) (err error) {
+	fmt.Println()
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("通过进门财经添加用户参数信息失败 ErrMsg:"+err.Error(), 2)
+		}
+	}()
+	fmt.Println("活动ID", activityId)
+	activityIds := make([]int, 0)
+	activityIds = append(activityIds, activityId)
+	actLen := len(activityIds)
+	var condition string
+	var pars []interface{}
+	if actLen > 0 {
+		condition += ` AND activity_id IN (` + utils.GetOrmInReplace(actLen) + `)`
+		pars = append(pars, activityIds)
+	}
+
+	signUpDetailList, err := models.GetSignupDetailList(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+
+	mapsignUpDetai := make(map[string]string)
+	if len(signUpDetailList) > 0 {
+		for _, v := range signUpDetailList {
+			mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)] = v.Mobile
+		}
+	}
+	var itemsAdd []*models.CygxActivitySignupDetail
+	var itemsUpdate []*models.CygxActivitySignupDetail
+
+	for _, v := range itemsDetail {
+		var item = new(models.CygxActivitySignupDetail)
+		item.ActivityId = v.ActivityId
+		item.RealName = v.RealName
+		item.Mobile = v.Mobile
+		item.CompanyName = v.CompanyName
+		item.CompanyId = v.CompanyId
+		item.SellerName = v.SellerName
+		item.FirstMeetingTime = v.FirstMeetingTime
+		item.LastMeetingTime = v.LastMeetingTime
+		item.Duration = v.Duration
+		item.MeetingTypeStr = v.MeetingTypeStr
+		item.MeetingAuthentication = v.MeetingAuthentication
+		item.MeetingStatusStr = v.MeetingStatusStr
+		item.CreateTime = v.CreateTime
+		item.Position = v.Position
+		item.IsMeeting = 1
+		item.UseridEntity = v.UseridEntity
+		item.ActivityTime = v.ActivityTime
+		item.CrmCompanyMapStatusId = v.CrmCompanyMapStatusId
+		//fmt.Println(item)
+		//return err
+		if _, ok := mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)]; !ok {
+			itemsAdd = append(itemsAdd, item)
+		} else {
+			itemsUpdate = append(itemsUpdate, item)
+		}
+	}
+
+	if len(itemsAdd) > 0 {
+		err = models.AddCygxActivitySignupDetail(itemsAdd)
+		if err != nil {
+			return
+		}
+	}
+
+	if len(itemsAdd) > 0 {
+		err = models.UpdateActivitySignupDetailMulti(itemsUpdate)
+		if err != nil {
+			return
+		}
+	}
+
+	return err
+}
+
+func GetCygxActivityAttendanceDetail() {
+	listAll, err := models.GetActivityAttendanceDetailListAll()
+	if err != nil {
+		fmt.Println(err)
+	}
+	mapDetal := make(map[int][]*models.CygxActivityAttendanceDetail)
+
+	for _, v := range listAll {
+		mapDetal[v.ActivityId] = append(mapDetal[v.ActivityId], v)
+	}
+
+	for k, v := range mapDetal {
+		AddctivitySignupDetailByJmcj(v, k)
+	}
+	//fmt.Println(mapDetal)
+}

+ 5 - 2
services/article.go

@@ -678,7 +678,7 @@ func GetArticleListByApi(cont context.Context) (err error) {
 }
 
 //func init() {
-//	HandleArticleListByApi(7164)
+//	HandleArticleListByApi(7370)
 //}
 
 //处理同步过来的文章
@@ -1200,7 +1200,10 @@ func HandleArticleListByApi(artcleId int) (err error) {
 		//【公司调研】系列纪要发布/更新后 end
 
 		//查研观向6.9模板消息推送规则
-		go DoArticleOnenIdWxTemplateMsg(v.ArticleId)
+		//但是如果报告的发布时间是在10天以前的,公众号就不推送了
+		if time.Now().AddDate(0, 0, -10).Before(articleResult.PublishDate.Add(time.Hour * 8)) {
+			go DoArticleOnenIdWxTemplateMsg(v.ArticleId)
+		}
 	}
 	go models.UpdateCygxArticleCeluePush(artcleId)
 

+ 11 - 9
services/task.go

@@ -23,13 +23,13 @@ func Task() {
 		task.AddTask("getArticleListByApi", getArticleListByApi)
 
 		//会议提醒模板消息推送
-		sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 8-22 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
+		sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 6-23 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
 		task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
-		sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 8-22 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
+		sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 6-23 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
 		task.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
 
 		//预约外呼名单,会前1小时自动发送邮件给专家组
-		sendEmailFileToExpert := task.NewTask("sendEmailFileToExpert", "0 */5 8-22 * * *", SendEmailFileToExpert) //预约外呼名单,会前1小时自动发送邮件给专家组
+		sendEmailFileToExpert := task.NewTask("sendEmailFileToExpert", "0 */5 6-23 * * *", SendEmailFileToExpert) //预约外呼名单,会前1小时自动发送邮件给专家组
 		task.AddTask("sendEmailFileToExpert", sendEmailFileToExpert)
 
 		sendEmailUserWhiteListChange := task.NewTask("sendEmailUserWhiteListChange", "0 00 17 * * *", SendEmailUserWhiteListChange) //新增 和冻结的客户白名单
@@ -44,7 +44,7 @@ func Task() {
 
 	if utils.IsTask {
 		//修改任务状
-		updateActivitySattus := task.NewTask("syncTacticsListAddreport", "0 */1 8-22 * * *", UpdateActivitySattus)
+		updateActivitySattus := task.NewTask("syncTacticsListAddreport", "0 */1 6-23 * * *", UpdateActivitySattus)
 		task.AddTask("updateActivitySattus", updateActivitySattus)
 
 		//更新深 和新的标签
@@ -57,10 +57,10 @@ func Task() {
 		activityAttendanceDetail := task.NewTask("activityAttendanceDetail", "0 00 3 * * *", ActivityAttendanceDetail) //同步进门财经的路演信息
 		task.AddTask("sendEmailUserWhiteListChange", activityAttendanceDetail)
 
-		sendEmailFileForAskMsgResearch := task.NewTask("sendEmailFileForAskMsgResearch", "0 */5 8-22 * * *", SendEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
+		sendEmailFileForAskMsgResearch := task.NewTask("sendEmailFileForAskMsgResearch", "0 */5 6-23 * * *", SendEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
 		task.AddTask("sendEmailFileForAskMsgResearch", sendEmailFileForAskMsgResearch)
 
-		sendEmailFileForAskMsg := task.NewTask("sendEmailFileForAskMsg", "0 */5 8-22 * * *", SendEmailFileForAskMsg) //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
+		sendEmailFileForAskMsg := task.NewTask("sendEmailFileForAskMsg", "0 */5 6-23 * * *", SendEmailFileForAskMsg) //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
 		task.AddTask("sendEmailFileForAskMsg", sendEmailFileForAskMsg)
 
 		updateWxUserLabel := task.NewTask("updateWxUserLabel", "0 01 0 * * *", UpdateWxUserLabel) //更新用户的标签
@@ -75,8 +75,8 @@ func Task() {
 		reportBillboardUpdate := task.NewTask("reportBillboardUpdate", "0 10 0 * * *", ReportBillboardUpdate) //报告榜单更新
 		task.AddTask("reportBillboardUpdate", reportBillboardUpdate)
 
-		doActivityOnenIdWxTemplateMsg := task.NewTask("doActivityOnenIdWxTemplateMsg", "0 30 16 * * 0", DoActivityOnenIdWxTemplateMsg) //周日下午四点半推送全部活动
-		task.AddTask("doActivityOnenIdWxTemplateMsg", doActivityOnenIdWxTemplateMsg)
+		//doActivityOnenIdWxTemplateMsg := task.NewTask("doActivityOnenIdWxTemplateMsg", "0 30 16 * * 0", DoActivityOnenIdWxTemplateMsg) //周日下午四点半推送全部活动
+		//task.AddTask("doActivityOnenIdWxTemplateMsg", doActivityOnenIdWxTemplateMsg)
 
 		updateCygxActivitySpecialSignupNum := task.NewTask("updateCygxActivitySpecialSignupNum", "0 25 0 * * *", UpdateCygxActivitySpecialSignupNum) //修改专项调研,用户与公司的参与数量
 		task.AddTask("updateCygxActivitySpecialSignupNum", updateCygxActivitySpecialSignupNum)
@@ -93,12 +93,14 @@ func Task() {
 		dotongbuShangHai := task.NewTask("dotongbuShangHai", "0 */20 * * * *", DotongbuShangHai) //把信息同步到上海策略品台
 		task.AddTask("同步用户到上海", dotongbuShangHai)
 
+		addctivitySignupDetail := task.NewTask("addctivitySignupDetail", "0 0 23 * * *", AddctivitySignupDetail) // 获取当天已结束的活动的报名信息。添加到到会详情
+		task.AddTask("addctivitySignupDetail", addctivitySignupDetail)
 	}
 	if utils.RunMode != "release" {
 		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */60 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章
 		task.AddTask("getArticleListByApi", getArticleListByApi)
 	}
-
+	//GetCygxActivityAttendanceDetail()
 	//CreateIndexNameArticleHistory()
 	//AddAllArticleHistory()
 	//DoCompany()

+ 1 - 2
utils/config.go

@@ -135,8 +135,7 @@ func init() {
 	SummaryArticleId = 1000000         //手动添加的纪要库开始ID
 	YanxSummaryPermissionId = 1001     //研选纪要分类ID
 	YanxViewpointPermissionId = 1002   //研选观点分类ID
-	WxMsgTemplateIdAskMsgMobileAll = "15557270714,18767183922,18621268829"
-
+	WxMsgTemplateIdAskMsgMobileAll = "15557270714,18767183922,18621268829,15618524605"
 	HtgjDefaultSaleName = "王芳"
 	HtgjSalt = "HTGJ&HZ"
 	HtgjName = "海通国际"