package services import ( "errors" "fmt" "hongze/hongze_clpt/models" "hongze/hongze_clpt/utils" "strings" ) // GetArticleGroupSubjectMap 获取文章所关联的标的 func GetArticleGroupSubjectMap(articleIds []int) (mapResp map[int][]*models.IndustrialSubject, subjectMap map[int]string, err error) { lenArticleIds := len(articleIds) if lenArticleIds == 0 { return } var condition string var pars []interface{} condition = ` AND g.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `)` pars = append(pars, articleIds) list, e := models.GetArticleGroupSubjectList(pars, condition) if e != nil { err = errors.New("GetArticleGroupSubjectList " + e.Error()) return } listMap := make(map[int][]*models.IndustrialSubject) subMap := make(map[int]string) mapName := make(map[int]int) if len(list) > 0 { for _, v := range list { item := models.IndustrialSubject{ IndustrialSubjectId: v.IndustrialSubjectId, IndustrialManagementId: v.IndustrialManagementId, SubjectName: v.SubjectName, } listMap[v.ArticleId] = append(listMap[v.ArticleId], &item) subMap[v.IndustrialSubjectId] = v.SubjectName mapName[v.IndustrialSubjectId] = v.IndustrialManagementId } } mapResp = listMap subjectMap = subMap return } // GetArticleGroupSubjectMapByIndustrialManagementId 通过文章ID,产业;获取文章所关联的标的 func GetArticleGroupSubjectMapByIndustrialManagementId(articleIds []int, industrialManagementId int) (mapResp map[int][]*models.CygxIndustrialSubject) { var err error lenArticleIds := len(articleIds) if lenArticleIds == 0 { return } defer func() { if err != nil { go utils.SendAlarmMsg(fmt.Sprint("通过文章ID,产业;获取文章所关联的标的失败 ,GetArticleGroupSubjectMapByIndustrialManagementId err"+err.Error(), "articleIds:", articleIds), 2) } }() mapSubject := make(map[string]int) listSub, e := models.GetcygxIndustrialSubject(industrialManagementId) if e != nil { err = errors.New("GetcygxIndustrialSubject, Err: " + e.Error()) return } for _, v := range listSub { mapSubject[v.SubjectName] = v.IndustrialSubjectId } var condition string var pars []interface{} condition += ` AND article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `) ` pars = append(pars, articleIds) articleList, e := models.GetArticleList(condition, pars) if e != nil { err = errors.New("GetArticleList, Err: " + e.Error()) return } listMap := make(map[int][]*models.CygxIndustrialSubject, 0) for _, v := range articleList { sliceSubjects := strings.Split(v.Stock, "/") for _, vSubject := range sliceSubjects { sliceKuohao := strings.Split(vSubject, "(") //过滤括号 sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线 subject := sliceXiahuaxian[0] if mapSubject[subject] == 0 { continue } item := models.CygxIndustrialSubject{ IndustrialSubjectId: mapSubject[subject], IndustrialManagementId: industrialManagementId, SubjectName: subject, } listMap[v.ArticleId] = append(listMap[v.ArticleId], &item) } } //condition = ` AND g.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `) AND s.industrial_management_id = ? ` //pars = append(pars, articleIds, industrialManagementId) //list, e := models.GetArticleGroupSubjectList(pars, condition) //if e != nil { // err = errors.New("GetArticleGroupSubjectList " + e.Error()) // return //} // //if len(list) > 0 { // for _, v := range list { // item := models.CygxIndustrialSubject{ // IndustrialSubjectId: v.IndustrialSubjectId, // IndustrialManagementId: v.IndustrialManagementId, // SubjectName: v.SubjectName, // } // listMap[v.ArticleId] = append(listMap[v.ArticleId], &item) // } //} mapResp = listMap return }