package service import ( "fmt" "log" "time" "app.yhyue.com/moapp/MessageCenter/entity" "app.yhyue.com/moapp/MessageCenter/rpc/message" ) func SendMsg(this message.SendMsgRequest) (int64, string) { orm := entity.Engine.NewSession() defer orm.Close() err := orm.Begin() fmt.Println(err) count, _ := orm.Table("conversation").Where("user_id = ? or user_id = ?", this.ReceiveUserId, this.SendUserId).Count() if count < 1 { conversation := entity.Conversation{ AppId: this.Appid, ReceiveId: this.ReceiveUserId, ReceiveName: this.ReceiveName, SendId: this.SendUserId, SendName: this.SendName, CreateTime: time.Now(), Sort: 0, UserId: this.SendUserId, Key: "", } _, err = orm.Table("conversation").Insert(&conversation) if err != nil { log.Panicln("会话创建失败:", err) orm.Rollback() return 0, "会话创建失败" } conversations := entity.Conversation{ AppId: this.Appid, ReceiveId: this.ReceiveUserId, ReceiveName: this.ReceiveName, SendId: this.SendUserId, SendName: this.SendName, CreateTime: time.Now(), Sort: 0, UserId: this.ReceiveUserId, Key: "", } _, err = orm.Table("conversation").Insert(&conversations) if err != nil { log.Panicln("会话创建失败:", err) orm.Rollback() return 0, "会话创建失败" } } message := entity.Message{ AppId: this.Appid, ReceiveUserid: this.ReceiveUserId, ReceiveName: this.ReceiveName, SendUserid: this.SendUserId, SendName: this.SendName, CreateTime: time.Now(), Title: this.Title, MsgType: int(this.MsgType), Link: this.Link, CiteId: int(this.CiteId), Content: this.Content, IsRead: 0, Isdel: 1, } _, err = orm.Table("message").Insert(&message) if err != nil { log.Panicln("消息发送失败:", err) orm.Rollback() return 0, "消息发送失败" } orm.Commit() return 1, "消息发送成功" } func FindUserMsg(this message.FindUserMsgReq) message.FindUserMsgRes { orm := entity.Engine var messages []*entity.Message var err error var count int64 q := "" if this.MsgType !=-1{ q += fmt.Sprintf(" and msg_type = %d",this.MsgType) } if this.Read !=-1{ q += fmt.Sprintf(" and isRead = %d",this.Read) } count, err = orm.Table("message").Where("((receive_userid = ? and send_userid = ?) or (receive_userid = ? and send_userid = ?)) and isdel = ? and appid = ?"+q, this.UserId, this.ReceiveUserId, this.ReceiveUserId, this.UserId, 1, this.Appid).Count() log.Println("数量:", count) data := message.FindUserMsgRes{} if count > 0 { err = orm.Table("message").Select("*").Where("((receive_userid = ? and send_userid = ?) or (receive_userid = ? and send_userid = ?)) and isdel = ? and appid = ?" +q, this.UserId, this.ReceiveUserId, this.ReceiveUserId, this.UserId, 1, this.Appid). OrderBy("FIELD(`msg_type`,4,1),createtime"). Limit(int(this.PageSize), (int(this.OffSet)-1)*int(this.PageSize)). Find(&messages) log.Println("数据:", messages) log.Println("数据:", messages) for _, v := range messages { data.Data = append(data.Data, &message.Messages{ Appid: v.AppId, ReceiveUserId: v.ReceiveUserid, ReceiveName: v.ReceiveName, SendUserId: v.SendUserid, SendName: v.SendName, Createtime: v.CreateTime.Format("2006-01-02 15:04:05"), Title: v.Title, MsgType: int64(v.MsgType), Link: v.Link, CiteId: int64(v.CiteId), Content: v.Content, IsRead: int64(v.IsRead), }) } } data.Count = count if err != nil { data.Code = 0 data.Message = "查询失败" } else { data.Code = 1 data.Message = "查询成功" } return data } // 指定分类未读消息合计 func ClassCountUnread(msgType int, userId string, appId string) (int64, string, int64) { orm := entity.Engine count, err := orm.Table("message").Where("msg_type=? and receive_userid=? and isdel=1 and appid=? and isRead=0", msgType, userId, appId).Count() // data, err := orm.Sql("explain select count(*) from message where msg_type = ? and receive_userid=? and isdel=1 and appid=?", msgType, userId, appId).QueryInterface() if err != nil { log.Println(err) log.Println(count) return 0, "查询未读消息失败", 0 } log.Println(count) return 1, "查询指定分类未读消息成功", count }