package models import ( "rdluck_tools/orm" "rdluck_tools/paging" "strconv" //"rdluck_tools/paging" ) type IndustrialManagementList struct { Paging *paging.PagingItem List []*IndustrialManagement } type IndustrialManagement struct { IndustrialManagementId int `orm:"column(industrial_management_id);pk" description:"产业id"` IndustryName string `description:"产业名称"` RecommendedIndex int `description:"推荐指数"` CategoryId int `description:"文章分类ID"` LayoutTime string `description:"布局时间"` UpdateTime string `description:"更新时间"` IsRed bool `description:"是否标记红点"` IsTop bool `description:"是否置顶"` AnalystList []*IndustrialAnalyst `description:"分析师列表"` Analyst string `description:"分析师"` IndustrialSubjectList []*IndustrialSubject `description:"标的列表"` IsHot bool `description:"是否是热门"` IsFollow int `description:"是否关注"` } type IndustrialAnalyst struct { AnalystName string `description:"分析师名称"` IndustrialManagementId int `description:"产业id"` } type IndustrialSubject struct { IndustrialSubjectId int `orm:"column(industrial_subject_id);pk" description:"标的id"` IndustrialManagementId int `description:"产业id"` SubjectName string `description:"标的名称"` } //获取产业报告数量 func GetReportIndustrialCount(categoryId, industrialManagementId int) (count int, err error) { o := orm.NewOrm() sql := `SELECT COUNT(1) count FROM cygx_article AS a INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id WHERE a.publish_status = 1 AND category_id IN (SELECT category_id FROM cygx_report_mapping WHERE chart_permission_id = any( SELECT chart_permission_id FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) AND match_type_name = any( SELECT match_type_name FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) ) AND a.is_class = 1 AND man_g.industrial_management_id = ?` err = o.Raw(sql, industrialManagementId).QueryRow(&count) return } //获取产业报告列表 func GetReportIndustrialList(pars []interface{}, categoryId, industrialManagementId, userId, startSize, pageSize int) (items []*ReportArticle, err error) { o := orm.NewOrm() sql := `SELECT *,( SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(userId) + ` AND rec.article_id = a.article_id ) AS readnum FROM cygx_article AS a INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id WHERE a.publish_status = 1 AND category_id IN (SELECT category_id FROM cygx_report_mapping WHERE chart_permission_id = any( SELECT chart_permission_id FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) AND match_type_name = any( SELECT match_type_name FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) ) AND a.is_class = 1 AND man_g.industrial_management_id = ?` sql += ` ORDER BY publish_date DESC LIMIT ?,? ` _, err = o.Raw(sql, pars, industrialManagementId, startSize, pageSize).QueryRows(&items) return } //产业下所关联的文章分类列表 func IndustrialToArticleCategory(industrialManagementId int) (items []*IndustrialToArticleCategoryRep, err error) { o := orm.NewOrm() sql := `SELECT map.match_type_name,map.category_id FROM cygx_report_mapping AS map INNER JOIN cygx_article AS art ON art.category_id = map.category_id INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = art.article_id WHERE map.report_type = 2 AND art.is_report = 1 AND man_g.industrial_management_id =? GROUP BY map.match_type_name` _, err = o.Raw(sql, industrialManagementId).QueryRows(&items) return } //判断用户是否阅读该产业下,某一分类的文章 func IndustrialUserRecordArticleCount(userId, industrialManagementId, categoryId int) (count int, err error) { o := orm.NewOrm() sql := `SELECT COUNT(1) count FROM cygx_article_history_record WHERE article_id = ( SELECT article_id FROM cygx_article WHERE article_id IN (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? ) AND category_id = ? ORDER BY publish_date DESC LIMIT 0, 1 ) AND user_id = ? ` err = o.Raw(sql, industrialManagementId, categoryId, userId).QueryRow(&count) return } //获取最新文章 func GetNewIndustrialUserRecordArticle(industrialManagementId, categoryId int) (item *ArticleDetail, err error) { o := orm.NewOrm() sql := ` SELECT * FROM cygx_article WHERE article_id IN (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? ) AND category_id = ? ORDER BY publish_date DESC LIMIT 0, 1` err = o.Raw(sql, industrialManagementId, categoryId).QueryRow(&item) return } //获取最新文章 func GetNewArticleByCategoryId(categoryId int) (item *ArticleDetail, err error) { o := orm.NewOrm() sql := ` SELECT * FROM cygx_article WHERE category_id = ? ORDER BY publish_date DESC LIMIT 0, 1` err = o.Raw(sql, categoryId).QueryRow(&item) return } func GetIndustrialManagementIdsBykeyWord(condition string) (industrialManagementIds string, err error) { sql := `SELECT GROUP_CONCAT(DISTINCT industrial_management_id SEPARATOR ',') AS industrial_management_ids FROM cygx_industrial_management WHERE` + condition o := orm.NewOrm() err = o.Raw(sql).QueryRow(&industrialManagementIds) return }