123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- package models
- import (
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "time"
- )
- // 报告推送给同花顺的表结构体
- type ReportSendThsDetail struct {
- SendId int `orm:"column(send_id);pk" description:"发送给同花顺的Id"`
- ReportId int `description:"报告id"`
- ReportType string `description:"报告类型"`
- Status int8 `description:"发送结果,0:待发送,-1发送失败,1发送成功"`
- Remark string `description:"失败原因"`
- MsgType int `description:"消息类型,1:h5链接;2:小程序,3:文字;4:图片"`
- Title string `description:"推送标题"`
- LabelStr string `description:"推送标签"`
- Content string `description:"推送内容"`
- JumpUrl string `description:"跳转地址"`
- Pic string `description:"推送图片"`
- Level int `description:"等级,1:紧急,2:优先,3:普通"`
- PushTime time.Time `description:"实际开始推送时间/预推送时间"`
- CreateTime time.Time `description:"发送时间"`
- }
- type ReportSendThsListResp struct {
- Paging *paging.PagingItem
- List []*ReportSendThsListItem
- }
- type ReportSendThsTypeListResp struct {
- List []*ReportSendThsTypeListItem
- }
- type ReportSendThsTypeListItem struct {
- ReportType string `description:"报告类型"`
- }
- type ReportSendThsListItem struct {
- SendId int `description:"发送给同花顺的Id"`
- ReportId int `description:"报告id"`
- ReportType string `description:"报告类型"`
- Status int8 `description:"发送结果,0:待发送,-1发送失败,1发送成功"`
- Remark string `description:"失败原因"`
- Title string `description:"推送标题"`
- LabelStr string `description:"推送标签"`
- PushTime string `description:"实际开始推送时间/预推送时间"`
- CreateTime string `description:"发送时间"`
- Level int `description:"等级,1:紧急,2:优先,3:普通"`
- }
- // 新增报告发送给同花顺的记录
- func AddReportSendThsDetail(item *ReportSendThsDetail) (lastId int64, err error) {
- o := orm.NewOrm()
- //o.Using("rddp")
- lastId, err = o.Insert(item)
- return
- }
- // 修改报告发送给同花顺的记录状态
- func ModifyReportSendThsDetailStatus(sendId int, status int8, remark string) (err error) {
- o := orm.NewOrm()
- //o.Using("rddp")
- sql := `UPDATE report_send_ths_detail SET status = ?,remark=? WHERE send_id = ? `
- _, err = o.Raw(sql, status, remark, sendId).Exec()
- return
- }
- // 根据报告id获取发送记录
- func GetReportSendThsDetailByReportId(reportId int, reportType string) (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM report_send_ths_detail WHERE report_id=? and report_type=? order by send_id desc`
- //o.Using("rddp")
- err = o.Raw(sql, reportId, reportType).QueryRow(&item)
- return
- }
- // GetLatelyReportSendThsDetail 获取发送中/发送成功的 距离现在最近的一条记录
- func GetLatelyReportSendThsDetail() (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM report_send_ths_detail WHERE status >=0 order by push_time desc,send_id desc`
- //o.Using("rddp")
- err = o.Raw(sql).QueryRow(&item)
- return
- }
- // GetLatelyWaitReportSendThs 获取待发送的 距离现在最近的一条记录
- func GetLatelyWaitReportSendThs() (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM report_send_ths_detail WHERE status =2 order by push_time desc,send_id desc`
- //o.Using("rddp")
- err = o.Raw(sql).QueryRow(&item)
- return
- }
- // GetNearlyWaitReportSendThsByPushTime 查询是否存在和设置时间相近的待推送记录
- func GetNearlyWaitReportSendThsByPushTime(sendId int, pushTimeStart, pushTimeEnd time.Time) (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM report_send_ths_detail WHERE send_id !=? and status =2 and (push_time >= ? and push_time <= ?) order by push_time desc,send_id desc`
- //o.Using("rddp")
- err = o.Raw(sql, sendId, pushTimeStart, pushTimeEnd).QueryRow(&item)
- return
- }
- func GetWaitReportSendThsList(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM report_send_ths_detail WHERE status = 2 `
- if condition != "" {
- sql += condition
- }
- sql += ` order by push_time asc,send_id asc limit ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
- return
- }
- func GetWaitReportSendThsType() (items []*ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM report_send_ths_detail WHERE status = 2 group by report_type`
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- func GetWaitReportSendThsCount(condition string, pars []interface{}) (count int64, err error) {
- o := orm.NewOrm()
- sql := `SELECT COUNT(1) AS count FROM report_send_ths_detail WHERE status = 2 `
- if condition != "" {
- sql += condition
- }
- err = o.Raw(sql, pars).QueryRow(&count)
- return
- }
- func GetWaitReportSendThsAll(condition string, pars []interface{}) (items []*ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM report_send_ths_detail WHERE status = 2 `
- if condition != "" {
- sql += condition
- }
- sql += ` order by push_time asc,send_id asc`
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- // 根据sendId获取发送记录
- func GetReportSendThsBySendId(sendId int) (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM report_send_ths_detail WHERE send_id=? `
- //o.Using("rddp")
- err = o.Raw(sql, sendId).QueryRow(&item)
- return
- }
- // MultiUpdateReportSendThsPushTime 批量修改配置时间
- func MultiUpdateReportSendThsPushTime(sendId int, newTime, multiSql, updateSendIds string) (err error) {
- o := orm.NewOrm()
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- //修改单条数据
- sql := ` UPDATE report_send_ths_detail SET push_time = ? WHERE send_id = ? `
- _, err = to.Raw(sql, newTime, sendId).Exec()
- if err != nil {
- return
- }
- if multiSql != "" {
- //修改定时推送时间
- sql = `UPDATE report_send_ths_detail
- SET push_time =
- CASE send_id ` + multiSql + ` END
- WHERE
- status = 2 AND send_id IN (` + updateSendIds + ` ) AND push_time > ? `
- _, err = to.Raw(sql, newTime).Exec()
- }
- return
- }
- // GetLatelyWaitLevelReportSendThs 获取相同推送等级level下待发送的 距离现在最近的一条记录
- func GetLatelyWaitLevelReportSendThs(level int) (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM report_send_ths_detail WHERE status =2 AND level=? order by push_time desc,send_id desc`
- err = o.Raw(sql, level).QueryRow(&item)
- return
- }
- // GetEarliestWaitGtLevelReportSendThs 获取大于该推送等级level(推送级别更低)下待发送的 距离现在最早的一条记录
- func GetEarliestWaitGtLevelReportSendThs(level int) (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- sql := ` SELECT * FROM report_send_ths_detail WHERE status = 2 AND level > ? order by push_time asc,send_id asc`
- err = o.Raw(sql, level).QueryRow(&item)
- return
- }
- // UpdateReportSendThsPushTime 批量修改配置时间
- func UpdateReportSendThsPushTime(pushTime time.Time, newTime string) (err error) {
- o := orm.NewOrm()
- //UPDATE comment c set c.time = DATE_ADD(c.time, INTERVAL 7 DAY) ;
- //select date_add(@dt, interval 1 minute); - 加1分钟
- //修改定时推送时间
- sql := `UPDATE report_send_ths_detail
- SET push_time = ` + newTime + ` WHERE status = 2 AND push_time > ? `
- _, err = o.Raw(sql, pushTime).Exec()
- return
- }
- // UpdateReportSendThsPushTimeByEqGtPushTime 根据发布时间批量修改配置时间(大于等于该发布时间)
- func UpdateReportSendThsPushTimeByEqGtPushTime(pushTime time.Time, newTime string) (err error) {
- o := orm.NewOrm()
- //修改定时推送时间
- sql := `UPDATE report_send_ths_detail
- SET push_time = ` + newTime + ` WHERE status = 2 AND push_time >= ? `
- _, err = o.Raw(sql, pushTime).Exec()
- return
- }
- // GetLatelyIsSendSendThsDetail 获取发送中/发送成功/发送失败的 距离现在最近的一条记录
- func GetLatelyIsSendSendThsDetail() (item *ReportSendThsDetail, err error) {
- o := orm.NewOrm()
- //`status` tinyint(1) DEFAULT '0' COMMENT '发送结果,0:待发送,1发送成功,2:等待系统定时发送',
- sql := ` SELECT * FROM report_send_ths_detail WHERE status in (0,1) order by push_time desc,send_id desc`
- err = o.Raw(sql).QueryRow(&item)
- return
- }
|