|
@@ -629,7 +629,7 @@ func GetArticleListByApi(cont context.Context) (err error) {
|
|
|
}
|
|
|
for _, v := range listUpdateArticle {
|
|
|
// 这里直接go出去会出现并发,导致文章md5ID唯一索引限制报错
|
|
|
- err = HandleArticleListByApi(v.ArticleId, v.Id)
|
|
|
+ err = HandleArticleListByApi(v.ArticleId)
|
|
|
if err != nil {
|
|
|
utils.FileLog.Info("WxGetToken Result:%s ", err.Error())
|
|
|
}
|
|
@@ -638,7 +638,7 @@ func GetArticleListByApi(cont context.Context) (err error) {
|
|
|
}
|
|
|
|
|
|
//处理同步过来的文章
|
|
|
-func HandleArticleListByApi(artcleId, celuePushId int) (err error) {
|
|
|
+func HandleArticleListByApi(artcleId int) (err error) {
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
go utils.SendAlarmMsg("处理同步策略平台数据失败"+"GetArticleListByApi ErrMsg:"+err.Error(), 2)
|
|
@@ -744,7 +744,7 @@ func HandleArticleListByApi(artcleId, celuePushId int) (err error) {
|
|
|
fmt.Println("UpdateArticlePublish Err:", err.Error())
|
|
|
return err
|
|
|
}
|
|
|
- go models.UpdateCygxArticleCeluePush(celuePushId)
|
|
|
+ go models.UpdateCygxArticleCeluePush(artcleId)
|
|
|
return err
|
|
|
|
|
|
}
|
|
@@ -1002,142 +1002,512 @@ func HandleArticleListByApi(artcleId, celuePushId int) (err error) {
|
|
|
|
|
|
//类型ID 医药(医享会:28 、药调研:301)、消费【渠道新声:32】、科技【科技前言:79】、智造【匠心智造:84】或者是纪要做消息模板推送
|
|
|
fmt.Println(v.CategoryId)
|
|
|
- if v.IsSummary == 1 || (v.CategoryId == 28 || v.CategoryId == 301 || v.CategoryId == 32 || v.CategoryId == 79 || v.CategoryId == 84) {
|
|
|
- sliceSubjects := strings.Split(v.Stock, "/")
|
|
|
- fmt.Println(sliceSubjects)
|
|
|
- if len(sliceSubjects) > 0 {
|
|
|
- var subjectStr string
|
|
|
- for _, vSubject := range sliceSubjects {
|
|
|
- sliceKuohao := strings.Split(vSubject, "(") //过滤括号
|
|
|
- sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
|
|
|
- subject := sliceXiahuaxian[0]
|
|
|
- subjectStr += "'" + subject + "',"
|
|
|
- }
|
|
|
- if subjectStr != "" {
|
|
|
- subjectStr = strings.TrimRight(subjectStr, ",")
|
|
|
- activityIdList, err := models.GetActivityIdListBySubjecName(subjectStr)
|
|
|
+ //if v.IsSummary == 1 || (v.CategoryId == 28 || v.CategoryId == 301 || v.CategoryId == 32 || v.CategoryId == 79 || v.CategoryId == 84) {
|
|
|
+ // sliceSubjects := strings.Split(v.Stock, "/")
|
|
|
+ // fmt.Println(sliceSubjects)
|
|
|
+ // if len(sliceSubjects) > 0 {
|
|
|
+ // var subjectStr string
|
|
|
+ // for _, vSubject := range sliceSubjects {
|
|
|
+ // sliceKuohao := strings.Split(vSubject, "(") //过滤括号
|
|
|
+ // sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
|
|
|
+ // subject := sliceXiahuaxian[0]
|
|
|
+ // subjectStr += "'" + subject + "',"
|
|
|
+ // }
|
|
|
+ // if subjectStr != "" {
|
|
|
+ // subjectStr = strings.TrimRight(subjectStr, ",")
|
|
|
+ // activityIdList, err := models.GetActivityIdListBySubjecName(subjectStr)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetActivityIdListBySubjecName Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // if len(activityIdList) > 0 {
|
|
|
+ // var activityIdStr string
|
|
|
+ // for _, vAct := range activityIdList {
|
|
|
+ // activityIdStr += strconv.Itoa(vAct.ActivityId) + ","
|
|
|
+ // }
|
|
|
+ // activityIdStr = strings.TrimRight(activityIdStr, ",")
|
|
|
+ // if activityIdStr != "" {
|
|
|
+ // appointmentList, err := models.GetAppointmentListByActivityId(activityIdStr, "1,2,5")
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // if len(appointmentList) > 0 {
|
|
|
+ // for _, vApp := range appointmentList {
|
|
|
+ //
|
|
|
+ // appointmentByMobileList, err := models.GetAppointmentListByActivityIdAndMobile(activityIdStr, vApp.Mobile)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // var appointmentActivityName string
|
|
|
+ // if len(appointmentByMobileList) > 0 {
|
|
|
+ // for _, vAppM := range appointmentByMobileList {
|
|
|
+ // appointmentActivityName += vAppM.ActivityName + ","
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // appointmentActivityName = strings.TrimRight(appointmentActivityName, ",")
|
|
|
+ // if vApp.ActivityTypeId == 5 && v.CategoryId != 301 {
|
|
|
+ // continue
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // if vApp.Mobile != "" {
|
|
|
+ // openIdListByAppointment, err := models.GetUserRecordListByMobile(4, vApp.Mobile)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println(err)
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // keyword1 := "您预约的调研,有关联的纪要发布/更新了"
|
|
|
+ // keyword2 := appointmentActivityName
|
|
|
+ // keyword3 := v.Title
|
|
|
+ // keyword4 := v.PublishDate.Format(utils.FormatDateTime)
|
|
|
+ // SendWxMsgWithArticleClassToAdmin(keyword1, keyword2, keyword3, keyword4, openIdListByAppointment, artcleId)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ ////【公司调研】系列纪要发布/更新后
|
|
|
+ //if v.CategoryId == 45 || v.CategoryId == 74 || v.CategoryId == 86 || v.CategoryId == 88 {
|
|
|
+ // fmt.Println("处理预约纪要")
|
|
|
+ // sliceSubjects := strings.Split(v.Stock, "/")
|
|
|
+ // if len(sliceSubjects) > 0 {
|
|
|
+ // var subjectStr string
|
|
|
+ // for _, vSubject := range sliceSubjects {
|
|
|
+ // sliceKuohao := strings.Split(vSubject, "(") //过滤括号
|
|
|
+ // sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
|
|
|
+ // subject := sliceXiahuaxian[0]
|
|
|
+ // subjectStr += "'" + subject + "',"
|
|
|
+ // }
|
|
|
+ // if subjectStr != "" {
|
|
|
+ // subjectStr = strings.TrimRight(subjectStr, ",")
|
|
|
+ // activityIdList, err := models.GetActivityIdListBySubjecName(subjectStr)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetActivityIdListBySubjecName Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // if len(activityIdList) > 0 {
|
|
|
+ // var activityIdStr string
|
|
|
+ // for _, vAct := range activityIdList {
|
|
|
+ // activityIdStr += strconv.Itoa(vAct.ActivityId) + ","
|
|
|
+ // }
|
|
|
+ // activityIdStr = strings.TrimRight(activityIdStr, ",")
|
|
|
+ // if activityIdStr != "" {
|
|
|
+ // appointmentList, err := models.GetAppointmentListByActivityId(activityIdStr, "3,4")
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // if len(appointmentList) > 0 {
|
|
|
+ // for _, vApp := range appointmentList {
|
|
|
+ // appointmentByMobileList, err := models.GetAppointmentListByActivityIdAndMobile(activityIdStr, vApp.Mobile)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // var appointmentActivityName string
|
|
|
+ // if len(appointmentByMobileList) > 0 {
|
|
|
+ // for _, vAppM := range appointmentByMobileList {
|
|
|
+ // appointmentActivityName += vAppM.ActivityName + ","
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // appointmentActivityName = strings.TrimRight(appointmentActivityName, ",")
|
|
|
+ // if vApp.Mobile != "" {
|
|
|
+ // openIdListByAppointment, err := models.GetUserRecordListByMobile(4, vApp.Mobile)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println(err)
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // keyword1 := "您预约的调研,有关联的纪要发布/更新了"
|
|
|
+ // keyword2 := appointmentActivityName
|
|
|
+ // keyword3 := v.Title
|
|
|
+ // keyword4 := v.PublishDate.Format(utils.FormatDateTime)
|
|
|
+ // SendWxMsgWithArticleClassToAdmin(keyword1, keyword2, keyword3, keyword4, openIdListByAppointment, artcleId)
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ //【公司调研】系列纪要发布/更新后 end
|
|
|
+
|
|
|
+ //查研观向6.9模板消息推送规则
|
|
|
+ go DoArticleOnenIdWxTemplateMsg(v.ArticleId)
|
|
|
+ }
|
|
|
+ go models.UpdateCygxArticleCeluePush(artcleId)
|
|
|
+
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
+//func init() {
|
|
|
+// DoArticleOnenIdWxTemplateMsg(6940)
|
|
|
+//}
|
|
|
+
|
|
|
+//过滤策略平台报告,研选报告重复推送,以及权限勾选的推送
|
|
|
+func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
|
+ //策略平台同步过来的文章ID,做微信模板消息推送,同一篇报告12小时只推送一次
|
|
|
+ cacheKey := fmt.Sprint(utils.CACHE_KEY_ARTICLE_ID_TEMPLATE, ":ArticleId", articleId)
|
|
|
+ ttlTime := utils.Rc.GetRedisTTL(cacheKey)
|
|
|
+ if ttlTime > 0 {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ var msg string
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg("处理同步策略平台数据失败"+"GetArticleListByApi ErrMsg:"+err.Error(), 2)
|
|
|
+ go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+ if msg != "" {
|
|
|
+ utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ //获取文章详情
|
|
|
+ articleInfo, err := models.GetArticleDetailById(articleId)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ articleInfo.Abstract, _ = GetReportContentTextSub(articleInfo.Abstract)
|
|
|
+ var chartPermissionId int
|
|
|
+
|
|
|
+ var chartPermissionName string
|
|
|
+ reportMapDetail, err := models.GetdetailByCategoryIdPush(articleInfo.CategoryId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if reportMapDetail.ChartPermissionId == utils.CE_LUE_ID {
|
|
|
+ chartPermissionId = utils.CE_LUE_ID
|
|
|
+ } else {
|
|
|
+ if reportMapDetail.PermissionType == 1 {
|
|
|
+ chartPermissionName = reportMapDetail.ChartPermissionName + "(主观)"
|
|
|
+ } else {
|
|
|
+ chartPermissionName = reportMapDetail.ChartPermissionName + "(客观)"
|
|
|
+ }
|
|
|
+ chartPermissionDetail, err := models.GetChartPermissionByRemark(chartPermissionName)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ chartPermissionId = chartPermissionDetail.ChartPermissionId
|
|
|
+ }
|
|
|
+ // 获取所有有权的用户的 openid
|
|
|
+ mapOpenidPower := make(map[int]string)
|
|
|
+ permissionIdList := make([]string, 0)
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ slicepermissionId := strings.Split(strconv.Itoa(chartPermissionId), ",")
|
|
|
+ if len(slicepermissionId) > 0 {
|
|
|
+ for _, v := range slicepermissionId {
|
|
|
+ permissionIdList = append(permissionIdList, v)
|
|
|
+ }
|
|
|
+ condition += ` AND p.chart_permission_id IN (` + utils.GetOrmInReplace(len(slicepermissionId)) + ` ) `
|
|
|
+ pars = append(pars, permissionIdList)
|
|
|
+ }
|
|
|
+ openidPowerList, err := models.GetCygxUserRecordPower(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, v := range openidPowerList {
|
|
|
+ mapOpenidPower[v.UserId] = v.OpenId
|
|
|
+ }
|
|
|
+ //获取关注这个文章对应产业的用户的 openid
|
|
|
+ mapOpenidFllow := make(map[int]string)
|
|
|
+ if chartPermissionId != utils.CE_LUE_ID {
|
|
|
+ openidFllowList, err := models.GetCygxUserFllowOpenid(articleId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, v := range openidFllowList {
|
|
|
+ mapOpenidFllow[v.UserId] = v.OpenId
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取拒绝接收推送的的用户的 openid
|
|
|
+ mapOpenidRefuset := make(map[int]string)
|
|
|
+ openidRefusetList, err := models.GetCygxUserRefusetOpenid()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, v := range openidRefusetList {
|
|
|
+ mapOpenidRefuset[v.UserId] = v.OpenId
|
|
|
+ }
|
|
|
+ //获取提交过推送规则的用户的 openid
|
|
|
+ mapUserIdChooseSend := make(map[int]int)
|
|
|
+ mapUserIdChooseSendTypeNoPermission := make(map[int]int)
|
|
|
+ chooseSendtList, err := models.GetCygxXzsChooseSend()
|
|
|
+ for _, v := range chooseSendtList {
|
|
|
+ mapUserIdChooseSend[v.UserId] = v.UserId
|
|
|
+ if v.IsRefuse == 1 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ //获取选择主客观赛道的用户
|
|
|
+ if reportMapDetail.PermissionType == 1 {
|
|
|
+ if v.IsSubjective == 1 {
|
|
|
+ mapUserIdChooseSendTypeNoPermission[v.UserId] = v.UserId
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if v.IsObjective == 1 {
|
|
|
+ mapUserIdChooseSendTypeNoPermission[v.UserId] = v.UserId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经推送了的openid
|
|
|
+ mapOpenidPushed := make(map[int]string)
|
|
|
+ //文章关联的产业
|
|
|
+ var industryName string
|
|
|
+ if chartPermissionId != utils.CE_LUE_ID {
|
|
|
+ detailIndustryNameList, err := models.GetIndustrialManagemenDetailByAaticleID(articleId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, v := range detailIndustryNameList {
|
|
|
+ industryName += v.IndustryName + ","
|
|
|
+ }
|
|
|
+ industryName = strings.TrimRight(industryName, ",")
|
|
|
+ } else {
|
|
|
+ industryName = reportMapDetail.SubCategoryName
|
|
|
+ }
|
|
|
+ keyword2 := articleInfo.Title
|
|
|
+ keyword3 := articleInfo.PublishDate
|
|
|
+ keyword4 := articleInfo.Abstract
|
|
|
+ mapAlreadySend := make(map[int]int)
|
|
|
+ //如果是策略就按照策略的推送方式来写
|
|
|
+ if reportMapDetail.ChartPermissionName == utils.CE_LUE_NAME {
|
|
|
+ //获取提交过推送规则的用户的 openid
|
|
|
+ mapUserFllowCeLue := make(map[int]string)
|
|
|
+ userFllowCeLueList, err := models.GetCygxUserFllowCeLueOpenid(articleInfo.CategoryId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, v := range userFllowCeLueList {
|
|
|
+ mapUserFllowCeLue[v.UserId] = v.OpenId
|
|
|
+ }
|
|
|
+ for k, v := range mapOpenidPower {
|
|
|
+ if mapOpenidPushed[k] != "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ openIditem := new(models.OpenIdList)
|
|
|
+ openIditem.UserId = k
|
|
|
+ openIditem.OpenId = v
|
|
|
+ first := "您关注的赛道,有新的报告发布/更新,欢迎查看"
|
|
|
+ keyword1 := "所属赛道:" + industryName
|
|
|
+ mapActivityUserId := make(map[int]string)
|
|
|
+ if articleInfo.IsSummary == 1 {
|
|
|
+ sliceSubjectId, _ := models.GetSubjectIds(articleId)
|
|
|
+ if sliceSubjectId != "" {
|
|
|
+ appointmentList, err := models.GetCygxAppointmentSummaryBySubjectId(sliceSubjectId)
|
|
|
if err != nil {
|
|
|
- fmt.Println("GetActivityIdListBySubjecName Err:", err.Error())
|
|
|
+ fmt.Println("GetCygxAppointmentSummaryListBySubjectId Err:", err.Error())
|
|
|
return err
|
|
|
}
|
|
|
- if len(activityIdList) > 0 {
|
|
|
- var activityIdStr string
|
|
|
- for _, vAct := range activityIdList {
|
|
|
- activityIdStr += strconv.Itoa(vAct.ActivityId) + ","
|
|
|
+ var userIds []string
|
|
|
+ if len(appointmentList) > 0 {
|
|
|
+ for _, v := range appointmentList {
|
|
|
+ //fmt.Println("mapActivityUserId:", v.UserId)
|
|
|
+ userIds = append(userIds, strconv.Itoa(v.UserId))
|
|
|
+ mapActivityUserId[v.UserId] += v.ActivityName + ","
|
|
|
}
|
|
|
- activityIdStr = strings.TrimRight(activityIdStr, ",")
|
|
|
- if activityIdStr != "" {
|
|
|
- appointmentList, err := models.GetAppointmentListByActivityId(activityIdStr, "1,2,5")
|
|
|
- if err != nil {
|
|
|
- fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- if len(appointmentList) > 0 {
|
|
|
- for _, vApp := range appointmentList {
|
|
|
-
|
|
|
- appointmentByMobileList, err := models.GetAppointmentListByActivityIdAndMobile(activityIdStr, vApp.Mobile)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- var appointmentActivityName string
|
|
|
- if len(appointmentByMobileList) > 0 {
|
|
|
- for _, vAppM := range appointmentByMobileList {
|
|
|
- appointmentActivityName += vAppM.ActivityName + ","
|
|
|
- }
|
|
|
- }
|
|
|
- appointmentActivityName = strings.TrimRight(appointmentActivityName, ",")
|
|
|
- if vApp.ActivityTypeId == 5 && v.CategoryId != 301 {
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- if vApp.Mobile != "" {
|
|
|
- openIdListByAppointment, err := models.GetUserRecordListByMobile(4, vApp.Mobile)
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
- return err
|
|
|
- }
|
|
|
- keyword1 := "您预约的调研,有关联的纪要发布/更新了"
|
|
|
- keyword2 := appointmentActivityName
|
|
|
- keyword3 := v.Title
|
|
|
- keyword4 := v.PublishDate.Format(utils.FormatDateTime)
|
|
|
- SendWxMsgWithArticleClassToAdmin(keyword1, keyword2, keyword3, keyword4, openIdListByAppointment, artcleId)
|
|
|
- }
|
|
|
- }
|
|
|
+ userIdstr := strings.Join(userIds, ",")
|
|
|
+ openIdLists, err := models.GetOpenIdByUserIds(userIdstr)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetOpenIdByUserIds Err:", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, item := range openIdLists {
|
|
|
+ first := "您预约的调研,有关联的纪要发布/更新了1"
|
|
|
+ keyword1 := industryName
|
|
|
+ openIditem := new(models.OpenIdList)
|
|
|
+ openIditem.OpenId = item.OpenId
|
|
|
+ openIditem.UserId = item.UserId
|
|
|
+ if _, ok := mapAlreadySend[openIditem.UserId]; !ok {
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ fmt.Println("AlreadySend:", openIditem.UserId)
|
|
|
+ mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //fmt.Println("openIditem.UserId:", openIditem.UserId)
|
|
|
+ //if _,ok := mapActivityUserId[openIditem.UserId]; ok{
|
|
|
+ // first = "您预约的调研,有关联的纪要发布/更新了"
|
|
|
+ // keyword1 = industryName
|
|
|
+ // SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ // delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ // mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ _, ok := mapAlreadySend[openIditem.UserId]
|
|
|
+ //如果有权限而且小助手没有提交过信息的 就做正常推送
|
|
|
+ if mapUserIdChooseSend[openIditem.UserId] == 0 && !ok {
|
|
|
+ fmt.Println("1:", articleId)
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ }
|
|
|
+ //如果小助手勾选了对应的权限信息 就做正常推送
|
|
|
+ if mapUserIdChooseSend[openIditem.UserId] != 0 && mapUserFllowCeLue[openIditem.UserId] != "" && !ok {
|
|
|
+ fmt.Println("2:", articleId)
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- //【公司调研】系列纪要发布/更新后
|
|
|
- if v.CategoryId == 45 || v.CategoryId == 74 || v.CategoryId == 86 || v.CategoryId == 88 {
|
|
|
- fmt.Println("处理预约纪要")
|
|
|
- sliceSubjects := strings.Split(v.Stock, "/")
|
|
|
- if len(sliceSubjects) > 0 {
|
|
|
- var subjectStr string
|
|
|
- for _, vSubject := range sliceSubjects {
|
|
|
- sliceKuohao := strings.Split(vSubject, "(") //过滤括号
|
|
|
- sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
|
|
|
- subject := sliceXiahuaxian[0]
|
|
|
- subjectStr += "'" + subject + "',"
|
|
|
+ } else {
|
|
|
+ for k, v := range mapOpenidPower {
|
|
|
+ if mapOpenidPushed[k] != "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ chooseSendtList, err := models.GetCygxXzsChooseSend()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ mapUserIdChooseSendType := make(map[int]int)
|
|
|
+ for _, v := range chooseSendtList {
|
|
|
+ if v.IsRefuse == 1 {
|
|
|
+ continue
|
|
|
}
|
|
|
- if subjectStr != "" {
|
|
|
- subjectStr = strings.TrimRight(subjectStr, ",")
|
|
|
- activityIdList, err := models.GetActivityIdListBySubjecName(subjectStr)
|
|
|
+ //获取选择主客观赛道的用户
|
|
|
+ if reportMapDetail.PermissionType == 1 {
|
|
|
+ if v.IsSubjective == 1 {
|
|
|
+ mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
+ }
|
|
|
+ } else if reportMapDetail.PermissionType == 2 {
|
|
|
+ if v.IsObjective == 1 {
|
|
|
+ mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if v.IsSubjective == 1 || v.IsObjective == 1 {
|
|
|
+ mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ openIditem := new(models.OpenIdList)
|
|
|
+ openIditem.UserId = k
|
|
|
+ openIditem.OpenId = v
|
|
|
+ first := "您关注的赛道,有新的报告发布/更新,欢迎查看"
|
|
|
+ keyword1 := "所属赛道:" + industryName
|
|
|
+ mapActivityUserId := make(map[int]string)
|
|
|
+ if articleInfo.IsSummary == 1 {
|
|
|
+ sliceSubjectId, _ := models.GetSubjectIds(articleId)
|
|
|
+ if sliceSubjectId != "" {
|
|
|
+ appointmentList, err := models.GetCygxAppointmentSummaryBySubjectId(sliceSubjectId)
|
|
|
if err != nil {
|
|
|
- fmt.Println("GetActivityIdListBySubjecName Err:", err.Error())
|
|
|
+ fmt.Println("GetCygxAppointmentSummaryListBySubjectId Err:", err.Error())
|
|
|
return err
|
|
|
}
|
|
|
- if len(activityIdList) > 0 {
|
|
|
- var activityIdStr string
|
|
|
- for _, vAct := range activityIdList {
|
|
|
- activityIdStr += strconv.Itoa(vAct.ActivityId) + ","
|
|
|
+ var userIds []string
|
|
|
+ if len(appointmentList) > 0 {
|
|
|
+ for _, v := range appointmentList {
|
|
|
+ //fmt.Println("mapActivityUserId:", v.UserId)
|
|
|
+ userIds = append(userIds, strconv.Itoa(v.UserId))
|
|
|
+ mapActivityUserId[v.UserId] += v.ActivityName + ","
|
|
|
}
|
|
|
- activityIdStr = strings.TrimRight(activityIdStr, ",")
|
|
|
- if activityIdStr != "" {
|
|
|
- appointmentList, err := models.GetAppointmentListByActivityId(activityIdStr, "3,4")
|
|
|
- if err != nil {
|
|
|
- fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- if len(appointmentList) > 0 {
|
|
|
- for _, vApp := range appointmentList {
|
|
|
- appointmentByMobileList, err := models.GetAppointmentListByActivityIdAndMobile(activityIdStr, vApp.Mobile)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- var appointmentActivityName string
|
|
|
- if len(appointmentByMobileList) > 0 {
|
|
|
- for _, vAppM := range appointmentByMobileList {
|
|
|
- appointmentActivityName += vAppM.ActivityName + ","
|
|
|
- }
|
|
|
- }
|
|
|
- appointmentActivityName = strings.TrimRight(appointmentActivityName, ",")
|
|
|
- if vApp.Mobile != "" {
|
|
|
- openIdListByAppointment, err := models.GetUserRecordListByMobile(4, vApp.Mobile)
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
- return err
|
|
|
- }
|
|
|
- keyword1 := "您预约的调研,有关联的纪要发布/更新了"
|
|
|
- keyword2 := appointmentActivityName
|
|
|
- keyword3 := v.Title
|
|
|
- keyword4 := v.PublishDate.Format(utils.FormatDateTime)
|
|
|
- SendWxMsgWithArticleClassToAdmin(keyword1, keyword2, keyword3, keyword4, openIdListByAppointment, artcleId)
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ userIdstr := strings.Join(userIds, ",")
|
|
|
+ openIdLists, err := models.GetOpenIdByUserIds(userIdstr)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetOpenIdByUserIds Err:", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, item := range openIdLists {
|
|
|
+ first := "您预约的调研,有关联的纪要发布/更新了1"
|
|
|
+ keyword1 := industryName
|
|
|
+ openIditem := new(models.OpenIdList)
|
|
|
+ openIditem.OpenId = item.OpenId
|
|
|
+ openIditem.UserId = item.UserId
|
|
|
+ if _, ok := mapAlreadySend[openIditem.UserId]; !ok {
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ fmt.Println("AlreadySend:", openIditem.UserId)
|
|
|
+ mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //fmt.Println("openIditem.UserId:", openIditem.UserId)
|
|
|
+ //if _,ok := mapActivityUserId[openIditem.UserId]; ok{
|
|
|
+ // first = "您预约的调研,有关联的纪要发布/更新了"
|
|
|
+ // keyword1 = industryName
|
|
|
+ // SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ // delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ // mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
+ //}
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果有权限而且小助手没有提交过信息的 就做正常推送
|
|
|
+ _, ok := mapAlreadySend[openIditem.UserId]
|
|
|
+ if mapUserIdChooseSend[openIditem.UserId] == 0 && !ok {
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
+ }
|
|
|
+ //如果小助手勾选了对应的权限信息 就做正常推送
|
|
|
+ if mapUserIdChooseSend[openIditem.UserId] != 0 && mapOpenidFllow[openIditem.UserId] != "" && mapUserIdChooseSendType[openIditem.UserId] > 0 && !ok {
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取提交过推送规则的用户的 openid 并推送模版消息
|
|
|
+ openIditem := new(models.OpenIdList)
|
|
|
+ first := "您关注的赛道,有新的报告发布/更新,欢迎查看"
|
|
|
+ keyword1 := "所属赛道:" + industryName
|
|
|
+ //mapActivityUserId := make(map[int]string)
|
|
|
+ //if articleInfo.IsSummary == 1 {
|
|
|
+ // sliceSubjectId, _ := models.GetSubjectIds(articleId)
|
|
|
+ // if sliceSubjectId != ""{
|
|
|
+ // appointmentList, err := models.GetCygxAppointmentSummaryBySubjectId(sliceSubjectId)
|
|
|
+ // if err != nil {
|
|
|
+ // fmt.Println("GetCygxAppointmentSummaryListBySubjectId Err:", err.Error())
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // if len(appointmentList) > 0 {
|
|
|
+ // for _, v := range appointmentList {
|
|
|
+ // fmt.Println("mapActivityUserId:", v.UserId)
|
|
|
+ // mapActivityUserId[v.UserId] += v.ActivityName + ","
|
|
|
+ // first = "您预约的调研,有关联的纪要发布/更新了"
|
|
|
+ // keyword1 = industryName
|
|
|
+ // if _, ok := mapAlreadySend[openIditem.UserId]; !ok{
|
|
|
+ // SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ // delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ // mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // //fmt.Println("openIditem.UserId:", openIditem.UserId)
|
|
|
+ // //if _,ok := mapActivityUserId[openIditem.UserId]; ok{
|
|
|
+ // // first = "您预约的调研,有关联的纪要发布/更新了"
|
|
|
+ // // keyword1 = industryName
|
|
|
+ // // SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ // // delete(mapUserIdChooseSendTypeNoPermission, openIditem.UserId)
|
|
|
+ // // mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
|
+ // //}
|
|
|
+ //}
|
|
|
+ var ids []string
|
|
|
+ for k, _ := range mapUserIdChooseSendTypeNoPermission {
|
|
|
+ ids = append(ids, strconv.Itoa(k))
|
|
|
+ }
|
|
|
+ if len(ids) > 0 {
|
|
|
+ idStr := strings.Join(ids, ",")
|
|
|
+ openidIlist, err := models.GetCygxXzsChooseSendOpenIdByUserIds(idStr)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, item := range openidIlist {
|
|
|
+ openIditem.OpenId = item.OpenId
|
|
|
+ openIditem.UserId = item.UserId
|
|
|
+ if _, ok := mapAlreadySend[openIditem.UserId]; !ok {
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- //【公司调研】系列纪要发布/更新后 end
|
|
|
}
|
|
|
- go models.UpdateCygxArticleCeluePush(celuePushId)
|
|
|
- return err
|
|
|
+ utils.Rc.Put(cacheKey, articleId, time.Hour*12)
|
|
|
+ return
|
|
|
}
|