|
@@ -674,16 +674,17 @@ func GetArticleListByApi(cont context.Context) (err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
-//func init() {
|
|
|
|
-//allList, err := models.GetArticleAll()
|
|
|
|
-//
|
|
|
|
-//fmt.Println(err)
|
|
|
|
-//for _, v := range allList {
|
|
|
|
-// HandleArticleListByApi(v.ArticleId)
|
|
|
|
-//}
|
|
|
|
-//HandleArticleListByApi(7930)
|
|
|
|
|
|
+func init() {
|
|
|
|
+ // allList, err := models.GetArticleAll()
|
|
|
|
+ //
|
|
|
|
+ // fmt.Println(err)
|
|
|
|
+ //
|
|
|
|
+ // for _, v := range allList {
|
|
|
|
+ // HandleArticleListByApi(v.ArticleId)
|
|
|
|
+ // }
|
|
|
|
+ HandleArticleListByApi(8340)
|
|
|
|
|
|
-//}
|
|
|
|
|
|
+}
|
|
|
|
|
|
// 处理同步过来的文章
|
|
// 处理同步过来的文章
|
|
func HandleArticleListByApi(artcleId int) (err error) {
|
|
func HandleArticleListByApi(artcleId int) (err error) {
|
|
@@ -1165,7 +1166,7 @@ func HandleArticleListByApi(artcleId int) (err error) {
|
|
}
|
|
}
|
|
|
|
|
|
//func init() {
|
|
//func init() {
|
|
-// DoArticleOnenIdWxTemplateMsg(8081)
|
|
|
|
|
|
+// DoArticleOnenIdWxTemplateMsg(4042)
|
|
//}
|
|
//}
|
|
|
|
|
|
// 过滤策略平台报告,研选报告重复推送,以及权限勾选的推送
|
|
// 过滤策略平台报告,研选报告重复推送,以及权限勾选的推送
|
|
@@ -1225,74 +1226,76 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
if chartPermissionId == utils.CE_LUE_ID || chartPermissionId == utils.GU_SHOU_ID {
|
|
if chartPermissionId == utils.CE_LUE_ID || chartPermissionId == utils.GU_SHOU_ID {
|
|
industryName = reportMapDetail.SubCategoryName
|
|
industryName = reportMapDetail.SubCategoryName
|
|
} else {
|
|
} else {
|
|
- detailIndustryNameList, err := models.GetIndustrialManagemenDetailByAaticleID(articleId)
|
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- //如果不存在关联的产业则不推送
|
|
|
|
- if len(detailIndustryNameList) == 0 {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- for _, v := range detailIndustryNameList {
|
|
|
|
- industryName += v.IndustryName + ","
|
|
|
|
- industrialManagementId += strconv.Itoa(v.IndustrialManagementId) + ","
|
|
|
|
- }
|
|
|
|
- industryName = strings.TrimRight(industryName, ",")
|
|
|
|
- industrialManagementId = strings.TrimRight(industrialManagementId, ",")
|
|
|
|
-
|
|
|
|
- //处理勾选了全部行业赛道的用户
|
|
|
|
- var allIn string
|
|
|
|
- allIn = DoXzsChooseSend(reportMapDetail.ChartPermissionName)
|
|
|
|
- if allIn != "" {
|
|
|
|
- allInList, err := models.GetCygxXzsChooseSendByAllIn(allIn)
|
|
|
|
|
|
+ if articleInfo.ReportType == 2 {
|
|
|
|
+ detailIndustryNameList, err := models.GetIndustrialManagemenDetailByAaticleID(articleId)
|
|
if err != nil && err.Error() != utils.ErrNoRow() {
|
|
if err != nil && err.Error() != utils.ErrNoRow() {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- if len(allInList) > 0 {
|
|
|
|
- var allInUserId string
|
|
|
|
- for _, v := range allInList {
|
|
|
|
- allInUserId += strconv.Itoa(v.UserId) + ","
|
|
|
|
- }
|
|
|
|
- allInUserId = strings.TrimRight(allInUserId, ",")
|
|
|
|
-
|
|
|
|
- userFllowIndustrialList, err := models.GetUserFllowIndustrialListByUserIdAndIndustrial(allInUserId, industrialManagementId)
|
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- mapUserFllowed := make(map[string]int)
|
|
|
|
- for _, v := range userFllowIndustrialList {
|
|
|
|
- //用户ID与其关注的产业组成唯一索引,判断是否存在,如果不存在就进行自动关注
|
|
|
|
- mapUserFllowed[fmt.Sprint("uid:", v.UserId, "_Industrial:", v.IndustrialManagementId)] = v.UserId
|
|
|
|
- }
|
|
|
|
- //获取这些allIN用户的的信息进行遍历生成需要插入的数据
|
|
|
|
- userList, err := models.GetWxUserListByUserIds(allInUserId)
|
|
|
|
|
|
+ //如果不存在关联的产业则不推送
|
|
|
|
+ if len(detailIndustryNameList) == 0 {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ for _, v := range detailIndustryNameList {
|
|
|
|
+ industryName += v.IndustryName + ","
|
|
|
|
+ industrialManagementId += strconv.Itoa(v.IndustrialManagementId) + ","
|
|
|
|
+ }
|
|
|
|
+ industryName = strings.TrimRight(industryName, ",")
|
|
|
|
+ industrialManagementId = strings.TrimRight(industrialManagementId, ",")
|
|
|
|
+
|
|
|
|
+ //处理勾选了全部行业赛道的用户
|
|
|
|
+ var allIn string
|
|
|
|
+ allIn = DoXzsChooseSend(reportMapDetail.ChartPermissionName)
|
|
|
|
+ if allIn != "" {
|
|
|
|
+ allInList, err := models.GetCygxXzsChooseSendByAllIn(allIn)
|
|
if err != nil && err.Error() != utils.ErrNoRow() {
|
|
if err != nil && err.Error() != utils.ErrNoRow() {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- var industryFllowItems []*models.CygxIndustryFllow
|
|
|
|
- for _, v := range detailIndustryNameList {
|
|
|
|
- for _, vUser := range userList {
|
|
|
|
- //如果用户这个用户没有关注这个产业就进行自动关注
|
|
|
|
- if mapUserFllowed[fmt.Sprint("uid:", vUser.UserId, "_Industrial:", v.IndustrialManagementId)] == 0 {
|
|
|
|
- item := new(models.CygxIndustryFllow)
|
|
|
|
- item.IndustrialManagementId = v.IndustrialManagementId
|
|
|
|
- item.UserId = vUser.UserId
|
|
|
|
- item.Email = vUser.Email
|
|
|
|
- item.Mobile = vUser.Mobile
|
|
|
|
- item.RealName = vUser.RealName
|
|
|
|
- item.CompanyId = vUser.CompanyId
|
|
|
|
- item.CompanyName = vUser.CompanyName
|
|
|
|
- item.Source = 3
|
|
|
|
- item.Type = 1
|
|
|
|
- item.CreateTime = time.Now()
|
|
|
|
- item.ModifyTime = time.Now()
|
|
|
|
- industryFllowItems = append(industryFllowItems, item)
|
|
|
|
|
|
+ if len(allInList) > 0 {
|
|
|
|
+ var allInUserId string
|
|
|
|
+ for _, v := range allInList {
|
|
|
|
+ allInUserId += strconv.Itoa(v.UserId) + ","
|
|
|
|
+ }
|
|
|
|
+ allInUserId = strings.TrimRight(allInUserId, ",")
|
|
|
|
+
|
|
|
|
+ userFllowIndustrialList, err := models.GetUserFllowIndustrialListByUserIdAndIndustrial(allInUserId, industrialManagementId)
|
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ mapUserFllowed := make(map[string]int)
|
|
|
|
+ for _, v := range userFllowIndustrialList {
|
|
|
|
+ //用户ID与其关注的产业组成唯一索引,判断是否存在,如果不存在就进行自动关注
|
|
|
|
+ mapUserFllowed[fmt.Sprint("uid:", v.UserId, "_Industrial:", v.IndustrialManagementId)] = v.UserId
|
|
|
|
+ }
|
|
|
|
+ //获取这些allIN用户的的信息进行遍历生成需要插入的数据
|
|
|
|
+ userList, err := models.GetWxUserListByUserIds(allInUserId)
|
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ var industryFllowItems []*models.CygxIndustryFllow
|
|
|
|
+ for _, v := range detailIndustryNameList {
|
|
|
|
+ for _, vUser := range userList {
|
|
|
|
+ //如果用户这个用户没有关注这个产业就进行自动关注
|
|
|
|
+ if mapUserFllowed[fmt.Sprint("uid:", vUser.UserId, "_Industrial:", v.IndustrialManagementId)] == 0 {
|
|
|
|
+ item := new(models.CygxIndustryFllow)
|
|
|
|
+ item.IndustrialManagementId = v.IndustrialManagementId
|
|
|
|
+ item.UserId = vUser.UserId
|
|
|
|
+ item.Email = vUser.Email
|
|
|
|
+ item.Mobile = vUser.Mobile
|
|
|
|
+ item.RealName = vUser.RealName
|
|
|
|
+ item.CompanyId = vUser.CompanyId
|
|
|
|
+ item.CompanyName = vUser.CompanyName
|
|
|
|
+ item.Source = 3
|
|
|
|
+ item.Type = 1
|
|
|
|
+ item.CreateTime = time.Now()
|
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
|
+ industryFllowItems = append(industryFllowItems, item)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
- err = models.AddCygxIndustryFllowMulti(industryFllowItems)
|
|
|
|
- if err != nil {
|
|
|
|
- go utils.SendAlarmMsg("用户关注全部赛道,出现新赛道批量添加失败 ,AddCygxIndustryFllowMulti ErrMsg:"+err.Error(), 2)
|
|
|
|
|
|
+ err = models.AddCygxIndustryFllowMulti(industryFllowItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ go utils.SendAlarmMsg("用户关注全部赛道,出现新赛道批量添加失败 ,AddCygxIndustryFllowMulti ErrMsg:"+err.Error(), 2)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1318,7 +1321,20 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- //return
|
|
|
|
|
|
+
|
|
|
|
+ //行业综述报告,对所有开通了对应行业权限的客户都推送。
|
|
|
|
+ if articleInfo.ReportType == 1 {
|
|
|
|
+ for _, item := range openidPowerList {
|
|
|
|
+ first := "您关注的赛道,有新的报告发布/更新,欢迎查看"
|
|
|
|
+ keyword1 := "所属赛道:" + articleInfo.SubCategoryName
|
|
|
|
+ openIditem := new(models.OpenIdList)
|
|
|
|
+ openIditem.OpenId = item.OpenId
|
|
|
|
+ openIditem.UserId = item.UserId
|
|
|
|
+ SendWxMsgWithArticleUpdate(first, keyword1, articleInfo.Title, articleInfo.PublishDate, articleInfo.Abstract, openIditem, articleId)
|
|
|
|
+ }
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
for _, v := range openidPowerList {
|
|
for _, v := range openidPowerList {
|
|
mapOpenidPower[v.UserId] = v.OpenId
|
|
mapOpenidPower[v.UserId] = v.OpenId
|
|
}
|
|
}
|
|
@@ -1453,27 +1469,23 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
if mapOpenidPushed[k] != "" {
|
|
if mapOpenidPushed[k] != "" {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
- chooseSendtList, err := models.GetCygxXzsChooseSend()
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
mapUserIdChooseSendType := make(map[int]int)
|
|
mapUserIdChooseSendType := make(map[int]int)
|
|
- for _, v := range chooseSendtList {
|
|
|
|
- if v.IsRefuse == 1 {
|
|
|
|
|
|
+ for _, vS := range chooseSendtList {
|
|
|
|
+ if vS.IsRefuse == 1 {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
//获取选择主客观赛道的用户
|
|
//获取选择主客观赛道的用户
|
|
if reportMapDetail.PermissionType == 1 {
|
|
if reportMapDetail.PermissionType == 1 {
|
|
- if v.IsSubjective == 1 {
|
|
|
|
- mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
|
|
|
+ if vS.IsSubjective == 1 {
|
|
|
|
+ mapUserIdChooseSendType[vS.UserId] = vS.UserId
|
|
}
|
|
}
|
|
} else if reportMapDetail.PermissionType == 2 {
|
|
} else if reportMapDetail.PermissionType == 2 {
|
|
- if v.IsObjective == 1 {
|
|
|
|
- mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
|
|
|
+ if vS.IsObjective == 1 {
|
|
|
|
+ mapUserIdChooseSendType[vS.UserId] = vS.UserId
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if v.IsSubjective == 1 || v.IsObjective == 1 {
|
|
|
|
- mapUserIdChooseSendType[v.UserId] = v.UserId
|
|
|
|
|
|
+ if vS.IsSubjective == 1 || vS.IsObjective == 1 {
|
|
|
|
+ mapUserIdChooseSendType[vS.UserId] = vS.UserId
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1519,14 +1531,6 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //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
|
|
|
|
- //}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
//如果有权限而且小助手没有提交过信息的 就做正常推送
|
|
//如果有权限而且小助手没有提交过信息的 就做正常推送
|
|
@@ -1543,63 +1547,6 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
|
|
mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
mapAlreadySend[openIditem.UserId] = openIditem.UserId
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- //获取提交过推送规则的用户的 openid 并推送模版消息
|
|
|
|
-
|
|
|
|
- //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
|
|
|
|
- // //}
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //openIditem := new(models.OpenIdList)
|
|
|
|
- //first := "您关注的赛道,有新的报告发布/更新,欢迎查看"
|
|
|
|
- //keyword1 := "所属赛道:" + industryName
|
|
|
|
- //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)
|
|
utils.Rc.Put(cacheKey, articleId, time.Hour*12)
|
|
return
|
|
return
|
|
@@ -1994,10 +1941,6 @@ func GetReportLinkToArticleid(reportLink string) (articleId int, err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
-//func init() {
|
|
|
|
-// GetArticleStockMap()
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
// GetArticleStockMap 获取个股标签所对应的文章ID
|
|
// GetArticleStockMap 获取个股标签所对应的文章ID
|
|
func GetArticleStockMap() (mapResp map[string]int, err error) {
|
|
func GetArticleStockMap() (mapResp map[string]int, err error) {
|
|
defer func() {
|
|
defer func() {
|