123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package service
- import (
- "app.yhyue.com/moapp/MessageCenter/entity"
- "app.yhyue.com/moapp/MessageCenter/rpc/message"
- "errors"
- "log"
- )
- type MessageService struct {
- }
- // 修改消息阅读状态
- func (service *MessageService) ChangeReadStatus(data *message.ChangeReadStatusRequest) (int64, string) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- m := entity.Message{}
- count, err1 := orm.Where("id=? and isdel=1 and appid=?", data.Id, data.Appid).Count(m)
- if count == 0 || err1 != nil {
- return 0, "该消息不存在"
- }
- m.IsRead = int(data.ReadStatus)
- _, err := orm.Where("id=? and isdel=1", data.Id).Cols("isRead").Update(&m)
- if err != nil {
- orm.Rollback()
- return 0, "修改消息阅读状态失败"
- }
- err2 := orm.Commit()
- if err2 != nil {
- return 0, "修改消息阅读状态失败"
- }
- return 1, "修改消息阅读状态成功"
- }
- // 删除消息
- func (service *MessageService) DeleteMessage(id []int64, appId string) (int64, string) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- m := entity.Message{}
- m.Isdel = -1
- count, err := orm.Where("appid=?", appId).In("id", id).Cols("isdel").Update(&m)
- if err != nil || count == 0 {
- log.Println(err)
- log.Println(count)
- orm.Rollback()
- return 0, "删除消息失败"
- }
- err2 := orm.Commit()
- if err2 != nil {
- return 0, "删除消息失败"
- }
- return 1, "删除消息成功"
- }
- // 未读消息合计
- func (service *MessageService) CountUnread(userId string, appId string) (int64, string, int64) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- m := entity.Message{}
- count, err := orm.Where("receive_userid=? and isdel=1 and appid=?", userId, appId).Count(m)
- if err != nil {
- log.Println(err)
- log.Println(count)
- return 0, "查询未读消息失败", 0
- }
- log.Println(count)
- return 1, "查询未读消息成功", count
- }
- // 获取指定用户指定分类最新一条未读消息
- func (service *MessageService) LastMessage(userId string, appId string, msgType int64) (*message.Messages, error) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- m1 := []*entity.Message{}
- //m := []*message.Messages{}
- err := orm.Select("*").Where("receive_userid=? and isdel=1 and appid=? and isRead=0 and msg_type=?", userId, appId, msgType).OrderBy("createtime desc").Limit(1, 0).Find(&m1)
- if err != nil {
- log.Println(err)
- log.Println("咋回事")
- return nil, errors.New("查询未读消息失败")
- }
- if len(m1) > 0 {
- m := m1[0]
- msg := message.Messages{
- Appid: m.AppId,
- ReceiveUserId: m.ReceiveUserid,
- ReceiveName: m.ReceiveName,
- SendUserId: m.SendUserid,
- SendName: m.SendName,
- Createtime: m.CreateTime.Format("2006-01-02 15:04:05"),
- Title: m.Title,
- MsgType: int64(m.MsgType),
- Link: m.Link,
- CiteId: int64(m.CiteId),
- Content: m.Content,
- IsRead: int64(m.IsRead),
- }
- return &msg, nil
- } else {
- return nil, nil
- }
- }
- // 获取用户未读消息分类及数量 及分类下的最新一条消息
- func (service *MessageService) ClassCountAndMessage(userId string, appId string) ([]message.ResCount, []*message.Messages, error) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- //m := []*message.Messages{}
- query, err := orm.QueryInterface("select count(*) as count,msg_type from message where receive_userid=? and isdel=1 and appid=? and isRead=0", userId, appId)
- if err != nil {
- return nil, nil, err
- }
- if err != nil {
- log.Println(err)
- log.Println("咋回事")
- return nil, nil, errors.New("查询未读消息失败")
- }
- typeCount := []message.ResCount{}
- // 未读消息分类及数量
- if query != nil && len(query) > 0 {
- for _, v := range query {
- log.Println(v)
- typeCount = append(typeCount, message.ResCount{MsgType: v["msg_type"].(int64), Count: v["count"].(int64)})
- }
- }
- var m1 []*entity.Message
- var m2 []*message.Messages
- // 已经有的消息类型
- existType := map[int64]bool{}
- // 分类下最新一条消息 先查出来所有所有的 然后再取出来最新的一条
- err = orm.Select("*").Where("receive_userid=? and isdel=1 and appid=? ", userId, appId).OrderBy("createtime desc").Find(&m1)
- if err != nil {
- return typeCount, m2, errors.New("获取类型下最新消息失败")
- }
- if m1 != nil && (len(m1) > 0) {
- for _, v1 := range m1 {
- if !existType[int64(v1.MsgType)] {
- existType[int64(v1.MsgType)] = true
- m2 = append(m2, &message.Messages{
- Appid: v1.AppId,
- ReceiveUserId: v1.ReceiveUserid,
- ReceiveName: v1.ReceiveName,
- SendUserId: v1.SendUserid,
- SendName: v1.SendName,
- Createtime: v1.CreateTime.Format("2006-01-02 15:04:05"),
- Title: v1.Title,
- MsgType: int64(v1.MsgType),
- Link: v1.Link,
- CiteId: int64(v1.CiteId),
- Content: v1.Content,
- IsRead: int64(v1.IsRead),
- })
- }
- }
- }
- return typeCount, m2, nil
- }
|