|
@@ -17,6 +17,13 @@ type MessageDTO struct {
|
|
Status string `gorm:"column:status;type:enum('UNREAD','READ')"`
|
|
Status string `gorm:"column:status;type:enum('UNREAD','READ')"`
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+type MyMessage struct {
|
|
|
|
+ Id int `json:"messageId"`
|
|
|
|
+ SourceId int `json:"SourceId"`
|
|
|
|
+ Type string `json:"Type"`
|
|
|
|
+ Message string `json:"Message"`
|
|
|
|
+}
|
|
|
|
+
|
|
const (
|
|
const (
|
|
ReportMessageTemplate = "您关注的研究员%v更新了一篇报告"
|
|
ReportMessageTemplate = "您关注的研究员%v更新了一篇报告"
|
|
VideoMessageTemplate = "您关注的研究员%v更新了一个视频"
|
|
VideoMessageTemplate = "您关注的研究员%v更新了一个视频"
|
|
@@ -31,13 +38,13 @@ func CreateMessage(meta MetaInfoDTO) (err error) {
|
|
messageType := userDao.SourceType(meta.SourceType)
|
|
messageType := userDao.SourceType(meta.SourceType)
|
|
var messageList []userDao.UserMessage
|
|
var messageList []userDao.UserMessage
|
|
users := strings.Split(meta.To, ",")
|
|
users := strings.Split(meta.To, ",")
|
|
- if err != nil {
|
|
|
|
- logger.Error("unmarshal meta info error")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
var message string
|
|
var message string
|
|
var content MetaData
|
|
var content MetaData
|
|
err = json.Unmarshal([]byte(meta.Meta), &content)
|
|
err = json.Unmarshal([]byte(meta.Meta), &content)
|
|
|
|
+ if err != nil {
|
|
|
|
+ logger.Error("生成消息信息失败:%v", err)
|
|
|
|
+ userDao.FailedMetaInfo(meta.Id)
|
|
|
|
+ }
|
|
switch userDao.SourceType(meta.SourceType) {
|
|
switch userDao.SourceType(meta.SourceType) {
|
|
case userDao.ReportSourceType:
|
|
case userDao.ReportSourceType:
|
|
message = fmt.Sprintf(ReportMessageTemplate, content.AuthorName)
|
|
message = fmt.Sprintf(ReportMessageTemplate, content.AuthorName)
|
|
@@ -50,14 +57,51 @@ func CreateMessage(meta MetaInfoDTO) (err error) {
|
|
for _, user := range users {
|
|
for _, user := range users {
|
|
id, _ := strconv.Atoi(user)
|
|
id, _ := strconv.Atoi(user)
|
|
userMessage := userDao.UserMessage{
|
|
userMessage := userDao.UserMessage{
|
|
- From: content.AuthorId,
|
|
|
|
- To: id,
|
|
|
|
- Message: message,
|
|
|
|
- SourceId: content.SourceId,
|
|
|
|
- Type: messageType,
|
|
|
|
- Status: userDao.UnReadStatus,
|
|
|
|
|
|
+ AnalystId: content.AuthorId,
|
|
|
|
+ UserId: id,
|
|
|
|
+ Message: message,
|
|
|
|
+ SourceId: content.SourceId,
|
|
|
|
+ Type: messageType,
|
|
|
|
+ Status: userDao.UnReadStatus,
|
|
}
|
|
}
|
|
messageList = append(messageList, userMessage)
|
|
messageList = append(messageList, userMessage)
|
|
}
|
|
}
|
|
- return userDao.BatchInsertMessage(messageList)
|
|
|
|
|
|
+ if userDao.BatchInsertMessage(messageList) {
|
|
|
|
+ userDao.FinishMetaInfo(meta.Id)
|
|
|
|
+ } else {
|
|
|
|
+ logger.Error("生成消息信息失败:%v", err)
|
|
|
|
+ userDao.FailedMetaInfo(meta.Id)
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func NeedNotice(userId int, analystId int) bool {
|
|
|
|
+ return userDao.NeedNotice(userId, analystId)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func ReadMessage(userId int, messageId int) bool {
|
|
|
|
+ return userDao.ReadMessage(userId, messageId)
|
|
|
|
+}
|
|
|
|
+func ReadMessages(userId int, analystId int) bool {
|
|
|
|
+ return userDao.ReadMessages(userId, analystId)
|
|
|
|
+}
|
|
|
|
+func GetUnReadMessageList(userId int) (messageList []MyMessage, err error) {
|
|
|
|
+ list, err := userDao.GetUnReadMessageList(userId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ logger.Error("获取我的未读消息失败:%v", err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for _, message := range list {
|
|
|
|
+ messageList = append(messageList, convertToMyMessage(message))
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func convertToMyMessage(message userDao.UserMessage) MyMessage {
|
|
|
|
+ return MyMessage{
|
|
|
|
+ Id: message.Id,
|
|
|
|
+ SourceId: message.SourceId,
|
|
|
|
+ Type: string(message.Type),
|
|
|
|
+ Message: message.Message,
|
|
|
|
+ }
|
|
}
|
|
}
|