123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package service
- import (
- "errors"
- "gorm.io/gorm"
- "kpt.notice/apiserver/model"
- "kpt.notice/apiserver/model/http"
- "kpt.notice/pkg/log"
- "kpt.notice/pkg/util"
- )
- func (svc *Service) UpdateMessage(statics int, id int, val map[string]interface{}) (err error) {
- var res *gorm.DB
- if statics == 1 {
- // update update_at
- res = svc.DB.Model(&model.Message{}).Where("id= ?", id).Updates(val)
- }
- if statics == 2 {
- // update push_count,update_at,status
- res = svc.DB.Model(&model.Message{}).Where("id= ?", id).Updates(val)
- }
- if statics == 3 {
- // update status
- res = svc.DB.Model(&model.Message{}).Where("id= ?", id).Updates(val)
- }
- if res.Error != nil {
- return res.Error
- }
- return
- }
- // send message
- //type statics ,1:instant,
- func (svc *Service) getMsgByType(statics int) (msgs []model.Message, err error) {
- // instant message
- var sql string
- if statics == 1 {
- sql = `select * from message m join message_type mt on m.msg_type_id = mt.id
- where m.status = 1 and mt.remind_type_id = 1 and timestampdiff(second,m.update_at,now())>7200`
- err = svc.DB.Exec(sql).Find(&msgs).Error
- // err = svc.DB.Where("msg_type_id =? and status =0 and timestampdiff(second,update_at,now())>7200", 1).Find(&msgs).Error
- }
- if statics == 2 {
- sql = `select m.* from message m join message_type mt on m.msg_type_id = mt.id
- where m.status = 1 and mt.remind_type_id = 2 and timestampdiff(hour,m.create_at,now())>=48
- and timestampdiff(hour,m.update_at,now())>=24 and m.push_count mt.notice_count`
- }
- if statics == 3 {
- sql = `select * from message m join message_type mt on m.msg_type_id = mt.id
- where m.status = 1 and mt.remind_type_id = 3
- and ( mt.push_date=concat('w', weekday(now() ) +1) mt.push_date=concat('w', day(now() ) +1) )`
- }
- return
- }
- func (svc *Service) InsertMessage(msg *http.MessageReq) (resp *http.MessageResp, err error) {
- log.Error("InsertMessage=============enter")
- tmp := make(map[string]interface{})
- tmp["miniprogram"] = msg.Miniprogram
- mt := svc.QueryMsgType(msg.MsgTypeID)
- if mt == nil {
- log.Errorf("InsertMessage=====QueryMsgType====%v", errors.New("没有匹配的模板"))
- return nil, errors.New("没有匹配的模板")
- }
- tmp["template_id"] = mt[0].TemplateID
- data := make(map[string]http.Tag)
- for i, v := range msg.Keys {
- data[v] = msg.Content[i]
- }
- tmp["data"] = data
- msgDb := model.Message{
- Target: util.MarshalToString(msg.Target),
- MsgTypeID: msg.MsgTypeID,
- RemindTypeID: mt[0].RemindTypeID,
- MsgContent: util.MarshalToString(tmp),
- }
- result := svc.DB.Create(&msgDb)
- if result.Error != nil {
- log.Errorf("InsertMessage=====Create%v", result.Error)
- return nil, result.Error
- }
- resp = &http.MessageResp{
- Rows: int(result.RowsAffected),
- }
- err = result.Error
- return
- }
- // query the id or remind_type of the message by name
- func (svc *Service) QueryRemindTypeID(name string) (int, error) {
- m := new(model.MessageType)
- tx := svc.DB.Where("type_name = ?").First(m)
- if tx.RowsAffected == 0 {
- return 0, errors.New("没有匹配的类型")
- }
- return m.ID, nil
- }
- func (svc *Service) InsertMessageType(req *http.MessageTypeReq) (m *model.MessageType, err error) {
- m = &model.MessageType{
- SysName: req.SysName,
- TypeName: req.TypeName,
- RemindTypeID: req.RemindTypeID,
- RemindType: req.RemindType,
- PushDate: req.PushDate,
- PushTime: req.PushTime,
- IntervalTime: req.IntervalTime,
- PushLimit: req.PushLimit,
- TemplateID: req.TemplateID,
- }
- result := svc.DB.Create(m)
- if result.Error != nil {
- return nil, result.Error
- }
- return m, nil
- }
- // func (svc *Service) queryMsgType(id int) (m *model.MessageType, err error) {
- // if tx.RowsAffected == 0 {
- // return nil, errors.New("没有匹配的模板")
- // }
- // return m, nil
- // }
- func (svc *Service) QueryMsgType(id int) (m []model.MessageType) {
- log.Error("QueryMsgType=============enter")
- log.Errorf("QueryMsgType========params:%v", id)
- var tx *gorm.DB
- if id > 0 {
- tx = svc.DB.Where("id = ?", id).First(&m)
- log.Errorf("QueryMsgType========sql:%v", tx)
- } else if id == 0 {
- tx = svc.DB.Find(m)
- }
- if tx.RowsAffected == 0 {
- log.Errorf("QueryMsgType=====%v", errors.New("没有匹配的模板"))
- return nil
- }
- log.Error("QueryMsgType=====out=====")
- return m
- }
|