123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- 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 isRead=0 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{
- Id: int64(m.Id),
- 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 FindMessageDetail(id int64) (entity.Message, error) {
- orm := entity.Engine.NewSession()
- defer orm.Close()
- mess := entity.Message{}
- err := orm.Table("message").Select("*").Where("id = ?", id).Find(&mess)
- if err != nil {
- return mess, err
- }
- return mess, nil
- }
- // 获取用户未读消息分类及数量 及分类下的最新一条消息
- func (service *MessageService) ClassCountAndMessage(userId string, appId string) ([]*message.ResCount, error) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- //m := []*message.Messages{}
- query, err := orm.QueryInterface("SELECT msg_type,COUNT(CASE WHEN isRead=0 THEN 1 END) as count FROM message where receive_userid=? and isdel=1 and appid=? GROUP BY msg_type ORDER BY FIELD(`msg_type`,\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\")", userId, appId)
- log.Println(query)
- if err != nil {
- return nil, err
- }
- if err != nil {
- log.Println(err)
- log.Println("咋回事")
- return nil, errors.New("查询未读消息失败")
- }
- typeCount := []*message.ResCount{}
- log.Println(query)
- // 未读消息分类及数量
- 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)})
- }
- }
- return typeCount, nil
- }
- // 已接收到消息的分类
- func (service *MessageService) ReceiveMsgType(userId string, appId string) ([]int64, error) {
- orm := entity.Engine.NewSession()
- log.Println("123")
- defer orm.Close()
- m := []entity.Message{}
- err := orm.Distinct("msg_type").Where("receive_userid=? and isdel=1 and appid=?", userId, appId).Find(&m)
- if err != nil {
- log.Println(err)
- return nil, err
- }
- msgTypeList := []int64{}
- for _, v := range m {
- msgTypeList = append(msgTypeList, int64(v.MsgType))
- }
- return msgTypeList, nil
- }
- func (service *MessageService) UpdateMessageReadStatus(msgType int, receiveUserid, appId string) (int, error) {
- orm := entity.Engine.NewSession()
- defer orm.Close()
- msg := entity.Message{}
- msg.IsRead = 1
- c, err := orm.Where("receive_userid=? and msg_type = ? and appid = ?", receiveUserid, msgType, appId).Cols("isRead").Update(&msg)
- log.Println("更新后返回值:", c, err)
- if c < 0 && err != nil {
- return 0, err
- }
- return 1, nil
- }
|