123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447 |
- package models
- import (
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "hongze/hz_crm_api/utils"
- "strings"
- "time"
- )
- type Report struct {
- Id int `orm:"column(id)" description:"报告Id"`
- AddType int `description:"新增方式:1:新增报告,2:继承报告"`
- ClassifyIdFirst int `description:"一级分类id"`
- ClassifyNameFirst string `description:"一级分类名称"`
- ClassifyIdSecond int `description:"二级分类id"`
- ClassifyNameSecond string `description:"二级分类名称"`
- Title string `description:"标题"`
- Abstract string `description:"摘要"`
- Author string `description:"作者"`
- Frequency string `description:"频度"`
- CreateTime string `description:"创建时间"`
- ModifyTime time.Time `description:"修改时间"`
- State int `description:"1:未发布,2:已发布"`
- PublishTime time.Time `description:"发布时间"`
- Stage int `description:"期数"`
- MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
- ThsMsgIsSend int `description:"客户群消息是否已发送,0:否,1:是"`
- Content string `description:"内容"`
- VideoUrl string `description:"音频文件URL"`
- VideoName string `description:"音频文件名称"`
- VideoPlaySeconds string `description:"音频播放时长"`
- VideoSize string `description:"音频文件大小,单位M"`
- ContentSub string `description:"内容前两个章节"`
- ReportCode string `description:"报告唯一编码"`
- ReportVersion int `description:"1:旧版,2:新版"`
- HasChapter int `description:"是否有章节 0-否 1-是"`
- ChapterType string `description:"章节类型 day-晨报 week-周报"`
- OldReportId int `description:"research_report表ID, 大于0则表示该报告为老后台同步过来的"`
- MsgSendTime time.Time `description:"模版消息发送时间"`
- AdminId int `description:"创建者账号"`
- AdminRealName string `description:"创建者姓名"`
- ClassifyIdThird int `description:"三级分类id"`
- ClassifyNameThird string `description:"三级分类名称"`
- CollaborateType int8 `description:"协作方式,1:个人,2:多人协作。默认:1"`
- ReportLayout int8 `description:"报告布局,1:常规布局,2:智能布局。默认:1"`
- IsPublicPublish int8 `description:"是否公开发布,1:是,2:否"`
- ReportCreateTime time.Time `description:"报告时间创建时间"`
- InheritReportId int `description:"待继承的报告ID"`
- }
- type ReportList struct {
- Id int `description:"报告Id"`
- AddType int `description:"新增方式:1:新增报告,2:继承报告"`
- ClassifyIdFirst int `description:"一级分类id"`
- ClassifyNameFirst string `description:"一级分类名称"`
- ClassifyIdSecond int `description:"二级分类id"`
- ClassifyNameSecond string `description:"二级分类名称"`
- Title string `description:"标题"`
- Abstract string `description:"摘要"`
- Author string `description:"作者"`
- Frequency string `description:"频度"`
- CreateTime string `description:"创建时间"`
- ModifyTime time.Time `description:"修改时间"`
- State int `description:"1:未发布,2:已发布"`
- PublishTime string `description:"发布时间"`
- Stage int `description:"期数"`
- MsgIsSend int `description:"模板消息是否已发送,0:否,1:是"`
- Content string `description:"内容"`
- VideoUrl string `description:"音频文件URL"`
- VideoName string `description:"音频文件名称"`
- VideoPlaySeconds string `description:"音频播放时长"`
- ContentSub string `description:"内容前两个章节"`
- Pv int `description:"Pv"`
- Uv int `description:"Uv"`
- ReportCode string `description:"报告唯一编码"`
- ReportVersion int `description:"1:旧版,2:新版"`
- ThsMsgIsSend int `description:"客户群消息是否已发送,0:否,1:是"`
- NeedThsMsg int `description:"是否需要推送客群消息 0-否 1-是"`
- HasChapter int `description:"是否有章节 0-否 1-是"`
- ChapterType string `description:"章节类型 day-晨报 week-周报"`
- //ChapterVideoList []*ReportChapterVideoList `description:"章节音频列表"`
- OldReportId int `description:"research_report表ID, 大于0则表示该报告为老后台同步过来的"`
- MsgSendTime string `description:"模版消息发送时间"`
- CanEdit bool `description:"是否可编辑"`
- Editor string `description:"编辑人"`
- AdminId int `description:"创建者账号"`
- AdminRealName string `description:"创建者姓名"`
- }
- type ReportListResp struct {
- List []*ReportList
- Paging *paging.PagingItem `description:"分页数据"`
- }
- type ReportDetail struct {
- Id int `orm:"column(id)" description:"报告Id"`
- AddType int `description:"新增方式:1:新增报告,2:继承报告"`
- ClassifyIdFirst int `description:"一级分类id"`
- ClassifyNameFirst string `description:"一级分类名称"`
- ClassifyIdSecond int `description:"二级分类id"`
- ClassifyNameSecond string `description:"二级分类名称"`
- Title string `description:"标题"`
- Abstract string `description:"摘要"`
- Author string `description:"作者"`
- Frequency string `description:"频度"`
- CreateTime string `description:"创建时间"`
- ModifyTime string `description:"修改时间"`
- State int `description:"1:未发布,2:已发布"`
- PublishTime string `description:"发布时间"`
- Stage int `description:"期数"`
- MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
- Content string `description:"内容"`
- VideoUrl string `description:"音频文件URL"`
- VideoName string `description:"音频文件名称"`
- VideoPlaySeconds string `description:"音频播放时长"`
- ContentSub string `description:"内容前两个章节"`
- ThsMsgIsSend int `description:"客户群消息是否已发送,0:否,1:是"`
- HasChapter int `description:"是否有章节 0-否 1-是"`
- ChapterType string `description:"章节类型 day-晨报 week-周报"`
- }
- func GetReportById(reportId int) (item *ReportDetail, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM report WHERE id=?`
- err = o.Raw(sql, reportId).QueryRow(&item)
- return
- }
- func GetReportByIds(reportIds string) (list []*ReportDetail, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM report WHERE id in ` + reportIds
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- // GetReportByIdList 根据报告id列表获取报告列表
- func GetReportByIdList(reportIdList []int) (list []*ReportDetail, err error) {
- num := len(reportIdList)
- if num <= 0 {
- return
- }
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM report WHERE id in (` + utils.GetOrmInReplace(num) + `)`
- _, err = o.Raw(sql, reportIdList).QueryRows(&list)
- return
- }
- // GetSimpleReportByIds 根据报告ID查询报告基本信息
- func GetSimpleReportByIds(reportIds string) (list []*ReportDetail, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT id, title FROM report WHERE id IN (` + reportIds + `)`
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- func ModifyReportVideo(reportId int, videoUrl, videoName, videoSize string, playSeconds float64) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `UPDATE report SET video_url=?,video_name=?,video_play_seconds=?,video_size=? WHERE id=? `
- _, err = o.Raw(sql, videoUrl, videoName, playSeconds, videoSize, reportId).Exec()
- return
- }
- type ReportItem struct {
- Id int `orm:"column(id)" description:"报告Id"`
- AddType int `description:"新增方式:1:新增报告,2:继承报告"`
- ClassifyIdFirst int `description:"一级分类id"`
- ClassifyNameFirst string `description:"一级分类名称"`
- ClassifyIdSecond int `description:"二级分类id"`
- ClassifyNameSecond string `description:"二级分类名称"`
- Title string `description:"标题"`
- Abstract string `description:"摘要"`
- Author string `description:"作者"`
- Frequency string `description:"频度"`
- CreateTime time.Time `description:"创建时间"`
- ModifyTime time.Time `description:"修改时间"`
- State int `description:"1:未发布,2:已发布"`
- PublishTime time.Time `description:"发布时间"`
- Stage int `description:"期数"`
- MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
- Content string `description:"内容"`
- VideoUrl string `description:"音频文件URL"`
- VideoName string `description:"音频文件名称"`
- VideoPlaySeconds string `description:"音频播放时长"`
- ContentSub string `description:"内容前两个章节"`
- }
- func GetReportItemById(reportId int) (item *ReportItem, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM report WHERE id=?`
- err = o.Raw(sql, reportId).QueryRow(&item)
- return
- }
- // GetCommentReportByReportId 查询有留言的报告列表
- func GetCommentReportByReportId(condition string, pars []interface{}, startSize, pageSize int) (list []*Report, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- id,
- create_time,
- title,
- classify_name_first,
- classify_id_first,
- classify_name_second,
- classify_id_second,
- state,
- IF
- ( publish_time, publish_time, create_time ) AS publish_time
- FROM
- report
- WHERE
- 1=1
- `
- if condition != "" {
- sql += condition
- }
- sql += ` ORDER BY publish_time DESC , title ASC LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // GetCommentReportByReportIdOrderBy 查询有留言的报告列表(指定排序)
- func GetCommentReportByReportIdOrderBy(condition string, pars []interface{}, startSize, pageSize int, orderBy string) (list []*Report, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- id,
- create_time,
- title,
- classify_name_first,
- classify_id_first,
- classify_name_second,
- classify_id_second,
- state,
- IF
- ( publish_time, publish_time, create_time ) AS publish_time
- FROM
- report
- WHERE
- 1=1
- `
- if condition != "" {
- sql += condition
- }
- if orderBy == `` {
- sql += ` ORDER BY publish_time DESC , title ASC `
- } else {
- sql += orderBy
- }
- sql += ` LIMIT ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // GetCommentReportTotalByReportId 查询有留言的报告列表总数
- func GetCommentReportTotalByReportId(condition string, pars []interface{}) (total int64, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT count(*)
- FROM report WHERE 1=1`
- if condition != "" {
- sql += condition
- }
- err = o.Raw(sql, pars).QueryRow(&total)
- return
- }
- // 点赞相关的报告列表
- type LikeReportItem struct {
- ReportId int `description:"报告Id"`
- ReportChapterId int `description:"报告章节Id"`
- ClassifyIdFirst int `description:"一级分类id"`
- ClassifyNameFirst string `description:"一级分类名称"`
- ClassifyIdSecond int `description:"二级分类id"`
- ClassifyNameSecond string `description:"二级分类名称"`
- ReportChapterTypeId int `description:"章节类型"`
- ReportChapterTypeName string `description:"品种名称"`
- PublishTime time.Time `description:"发布时间" `
- Title string `description:"标题"`
- }
- // GetLikeReportByReportIdReportChapterId 获取有被点赞的报告列表
- func GetLikeReportByReportIdReportChapterId(reportIds string, chapterIds string, orderStr string, startSize, pageSize int) (list []*LikeReportItem, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `( SELECT
- id AS report_id,
- 0 AS report_chapter_id,
- classify_id_first,
- classify_id_second,
- classify_name_first,
- classify_name_second,
- 0 as report_chapter_type_id,
- "" as report_chapter_type_name,
- publish_time,
- title
- FROM
- report
- WHERE
- classify_name_first != "晨报"
- AND classify_name_first != "周报"
- AND id in (` + reportIds + `)
- )
- UNION
-
- ( SELECT
- report_id,
- report_chapter_id,
- classify_id_first,
- 0 as classify_id_second,
- classify_name_first,
- null as classify_name_second,
- type_id as report_chapter_type_id,
- type_name as report_chapter_type_name,
- publish_time,
- title
- FROM
- report_chapter
- WHERE
- report_chapter_id in (` + chapterIds + `)
- )`
- if orderStr != "" {
- sql += ` ORDER BY FIELD(CONCAT(report_id, "-",report_chapter_id),` + orderStr + `)`
- } else {
- sql += ` ORDER BY publish_time DESC, report_id Desc`
- }
- sql += ` LIMIT ?,?`
- _, err = o.Raw(sql, startSize, pageSize).QueryRows(&list)
- return
- }
- // GetLikeReportTotalByReportIdReportChapterId 获取有被点赞的报告列表总数
- func GetLikeReportTotalByReportIdReportChapterId(reportIds string, chapterIds string) (total int64, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `select count(*) from (( SELECT
- id AS report_id,
- 0 AS report_chapter_id,
- classify_id_first,
- classify_id_second,
- classify_name_first,
- classify_name_second,
- 0 as report_chapter_type_id,
- publish_time,
- title
- FROM
- report
- WHERE
- classify_name_first != "晨报"
- AND classify_name_first != "周报"
- AND id in (` + reportIds + `)
- )
- UNION
-
- ( SELECT
- report_id,
- report_chapter_id,
- classify_id_first,
- 0 as classify_id_second,
- classify_name_first,
- null as classify_name_second,
- type_id as report_chapter_type_id,
- publish_time,
- title
- FROM
- report_chapter
- WHERE
- report_chapter_id in (` + chapterIds + `)
- )) r`
- err = o.Raw(sql).QueryRow(&total)
- return
- }
- // GetPageReportList 分页获取报告列表
- func GetPageReportList(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*ReportList, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM report WHERE 1=1 `
- sql += condition
- sql += ` ORDER BY modify_time DESC`
- totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
- err = o.Raw(totalSql, pars).QueryRow(&total)
- if err != nil {
- return
- }
- sql += ` LIMIT ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
- return
- }
- // YbPcSuncode 活动海报表
- type YbPcSuncode struct {
- SuncodeID uint32 `orm:"column(suncode_id);pk" `
- Scene string `gorm:"column:scene;type:varchar(255);not null;default:0" json:"scene"` // 微信scene
- SceneMd5 string `gorm:"column:scene_md5;type:varchar(255);not null" json:"sceneMd5"`
- CodePage string `gorm:"column:code_page;type:varchar(255);not null;default:''" json:"codePage"` // 路径
- SuncodeUrl string `gorm:"column:suncode_url;type:varchar(255);not null;default:''" json:"suncodeUrl"` // 太阳码储存地址
- CreateTime time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"`
- }
- // GetYbPcSunCode 获取太阳码
- func GetYbPcSunCode(scene, page string) (item *YbPcSuncode, err error) {
- o := orm.NewOrmUsingDB("default")
- sql := `SELECT * FROM yb_pc_suncode WHERE scene = ? AND code_page = ? `
- err = o.Raw(sql, scene, page).QueryRow(&item)
- return
- }
- func AddYbPcSunCode(item *YbPcSuncode) (err error) {
- o := orm.NewOrmUsingDB("default")
- _, err = o.Insert(item)
- return
- }
- // YbSuncodePars 小程序太阳码scene参数
- type YbSuncodePars struct {
- ID uint32 `orm:"column(id);pk" `
- Scene string `gorm:"column:scene;type:varchar(255);not null;default:''" json:"scene"` // scene参数
- SceneKey string `gorm:"column:scene_key;type:varchar(32);not null;default:''" json:"scene_key"` // MD5值
- CreateTime time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"createTime"`
- }
- func AddYbSuncodePars(item *YbSuncodePars) (err error) {
- o := orm.NewOrmUsingDB("default")
- _, err = o.Insert(item)
- return
- }
- // GetReportByCondition 获取报告
- func GetReportByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, isPage bool, startSize, pageSize int) (items []*Report, err error) {
- o := orm.NewOrmUsingDB("rddp")
- fields := `*`
- if len(fieldArr) > 0 {
- fields = strings.Join(fieldArr, ",")
- }
- sql := `SELECT ` + fields + ` FROM report WHERE 1=1 `
- sql += condition
- order := ` ORDER BY modify_time DESC`
- if orderRule != `` {
- order = orderRule
- }
- sql += order
- if isPage {
- sql += ` LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
- } else {
- _, err = o.Raw(sql, pars).QueryRows(&items)
- }
- return
- }
|