package models import ( "rdluck_tools/orm" "rdluck_tools/paging" "time" ) type CygxArticleDepartment struct { DepartmentId int `orm:"column(department_id);pk;主键ID"` CreateTime time.Time `description:"创建时间"` NickName string `description:"昵称"` Remark string `description:"备注"` Remarks string `description:"备注辅助字段"` Content string `description:"初始内容"` } type CygxArticleDepartmentRep struct { DepartmentId int `description:"主键ID"` CreateTime string `description:"创建时间"` NickName string `description:"昵称"` ImgUrl string `description:"头像链接"` FollowNum int `description:"是否关注 1是 ,0 否"` IsMyFollow bool `description:"是否关注"` List []*IndustrialManagementIdInt } type CygxArticleDepartmentId struct { DepartmentId int `description:"作者ID"` } type CygxArticleDepartmentList struct { HaveResearch bool `description:"是否有研选权限"` Paging *paging.PagingItem `description:"分页数据"` ListnNew []*IndustrialManagementIdInt List []*CygxArticleDepartmentRep } //详情 func GetArticleDepartmentDateil(nickName, remarks string) (item *CygxArticleDepartmentRep, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_article_department WHERE nick_name = ? AND remarks = ? LIMIT 1 ` err = o.Raw(sql, nickName, remarks).QueryRow(&item) return } //数量 func GetArticleDepartmentCount(condition string) (count int, err error) { o := orm.NewOrm() sql := ` SELECT COUNT(*) count FROM ( SELECT COUNT(1) FROM cygx_article_department AS d INNER JOIN cygx_article AS a ON a.department_id = d.department_id INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 ` if condition != "" { sql += condition } sql += ` GROUP BY d.department_id ) AS num ` err = o.Raw(sql).QueryRow(&count) return } //列表 func GetCygxArticleDepartmentList(startSize, pageSize int, condition string, uid int) (items []*CygxArticleDepartmentRep, err error) { o := orm.NewOrm() sql := `SELECT d.*, ( SELECT COUNT( 1 ) FROM cygx_article AS a INNER JOIN cygx_article_history_record as h ON h.article_id = a.article_id WHERE a.department_id = d.department_id ) AS art_num, ( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS f WHERE f.department_id = d.department_id AND f.user_id = ? AND f.type = 1 ) AS follow_num FROM cygx_article_department AS d INNER JOIN cygx_article AS a ON a.department_id = d.department_id INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 ` if condition != "" { sql += condition } sql += ` GROUP BY d.department_id ORDER BY art_num DESC LIMIT ?,?` _, err = o.Raw(sql, uid, startSize, pageSize).QueryRows(&items) return } //产业列表 func GetIndustrialSubjectByDepartment(departmentId int) (items []*IndustrialManagementIdInt, err error) { o := orm.NewOrm() sql := `SELECT m.*, ( SELECT GROUP_CONCAT(DISTINCT s.subject_name ORDER BY s.create_time DESC SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = m.industrial_management_id) AS subject_name, ( SELECT publish_date FROM cygx_article AS a INNER JOIN cygx_industrial_article_group_management as mg ON mg.article_id = a.article_id ORDER BY publish_date DESC LIMIT 1 ) AS art_time FROM cygx_article_department AS d INNER JOIN cygx_article AS a ON a.department_id = d.department_id INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 AND d.department_id = ? AND a.publish_status = 1 GROUP BY m.industrial_management_id ORDER BY art_time DESC LIMIT 4 ` _, err = o.Raw(sql, departmentId).QueryRows(&items) return } //最新产业列表 func GetIndustrialSubjectByDepartmentNew(industrialManagementId int) (items []*IndustrialManagementIdInt, err error) { o := orm.NewOrm() sql := `SELECT m.*, MAX( a.publish_date ) art_time FROM cygx_article_department AS d INNER JOIN cygx_article AS a ON a.department_id = d.department_id INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1 = 1 AND m.chart_permission_id = ? GROUP BY m.industrial_management_id ORDER BY art_time DESC LIMIT 6 ` _, err = o.Raw(sql, industrialManagementId).QueryRows(&items) return } //获取作者数量 func GetDepartmentCount(departmentId int) (count int, err error) { sqlCount := ` SELECT COUNT(1) AS count FROM cygx_article_department WHERE department_id=? ` o := orm.NewOrm() err = o.Raw(sqlCount, departmentId).QueryRow(&count) return } type IndustrialSubjectList struct { SubjectName string `description:"标的名称"` } //最新标的列表 func GetIndustrialSubjectNewList(condition string) (items []*IndustrialSubjectList, err error) { o := orm.NewOrm() sql := `SELECT s.* FROM cygx_industrial_subject AS s INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.industrial_subject_id = s.industrial_subject_id INNER JOIN cygx_article AS art ON art.article_id = sg.article_id INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = art.article_id WHERE 1 = 1 AND art.publish_status = 1 ` if condition != "" { sql += condition } sql += ` GROUP BY s.industrial_subject_id ORDER BY s.create_time DESC LIMIT 4` _, err = o.Raw(sql).QueryRows(&items) return }