|
@@ -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
|
|
|
|
|
|
}
|
|
@@ -1142,7 +1142,7 @@ func HandleArticleListByApi(artcleId, celuePushId int) (err error) {
|
|
|
//查研观向6.9模板消息推送规则
|
|
|
go DoArticleOnenIdWxTemplateMsg(v.ArticleId)
|
|
|
}
|
|
|
- go models.UpdateCygxArticleCeluePush(celuePushId)
|
|
|
+ go models.UpdateCygxArticleCeluePush(artcleId)
|
|
|
|
|
|
return err
|
|
|
}
|
|
@@ -1153,6 +1153,12 @@ func HandleArticleListByApi(artcleId, celuePushId int) (err error) {
|
|
|
|
|
|
//过滤策略平台报告,研选报告重复推送,以及权限勾选的推送
|
|
|
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 {
|
|
@@ -1235,9 +1241,23 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
|
}
|
|
|
//获取提交过推送规则的用户的 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)
|
|
@@ -1258,6 +1278,7 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
|
keyword2 := articleInfo.Title
|
|
|
keyword3 := articleInfo.PublishDate
|
|
|
keyword4 := articleInfo.Abstract
|
|
|
+ mapAlreadySend := make(map[int]int)
|
|
|
//如果是策略就按照策略的推送方式来写
|
|
|
if reportMapDetail.ChartPermissionName == utils.CE_LUE_NAME {
|
|
|
//获取提交过推送规则的用户的 openid
|
|
@@ -1278,12 +1299,61 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
|
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("GetCygxAppointmentSummaryListBySubjectId Err:", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ 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 + ","
|
|
|
+ }
|
|
|
+ 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 {
|
|
|
+ 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] != "" {
|
|
|
+ if mapUserIdChooseSend[openIditem.UserId] != 0 && mapUserFllowCeLue[openIditem.UserId] != "" && !ok {
|
|
|
+ fmt.Println("2:", articleId)
|
|
|
SendWxMsgWithArticleUpdate(first, keyword1, keyword2, keyword3, keyword4, openIditem, articleId)
|
|
|
}
|
|
|
}
|
|
@@ -1306,8 +1376,12 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
|
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 {
|
|
|
+ if v.IsSubjective == 1 || v.IsObjective == 1 {
|
|
|
mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
}
|
|
|
}
|
|
@@ -1317,15 +1391,123 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
|
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("GetCygxAppointmentSummaryListBySubjectId Err:", err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ 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 + ","
|
|
|
+ }
|
|
|
+ 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
|
|
|
+ //}
|
|
|
+ }
|
|
|
+
|
|
|
//如果有权限而且小助手没有提交过信息的 就做正常推送
|
|
|
- if mapUserIdChooseSend[openIditem.UserId] == 0 {
|
|
|
+ _, 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 {
|
|
|
+ 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)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ utils.Rc.Put(cacheKey, articleId, time.Hour*12)
|
|
|
return
|
|
|
}
|