1
0
mirror of https://github.com/fumiama/paper-manager.git synced 2026-06-05 07:50:23 +08:00
Files
paper-manager/backend/message.go
2023-03-19 23:14:40 +08:00

87 lines
1.8 KiB
Go

package backend
import (
"errors"
"time"
"github.com/fumiama/paper-manager/backend/global"
)
var (
errInvalidMessageID = errors.New("invalid message id")
errNothingToDo = errors.New("nothing to do")
)
type messageList struct {
ID int `json:"id"`
Avatar string `json:"avatar"`
Date string `json:"date"`
Text string `json:"text"`
Type global.MessageType `json:"type"`
}
func getMessageList(token string) ([]messageList, error) {
user := usertokens.Get(token)
if user == nil {
return nil, errInvalidToken
}
ms, err := global.UserDB.GetMessagesOfUser(*user.ID)
if err != nil {
return nil, nil
}
if len(ms) == 0 {
return nil, nil
}
ml := make([]messageList, len(ms))
am := make(map[string]string, 64)
for i, m := range ms {
avtr := ""
if a, ok := am[m.Name]; ok {
avtr = a
} else {
u, err := global.UserDB.GetUserByName(m.Name)
if err == nil {
avtr = u.Avtr
am[m.Name] = u.Avtr
}
}
ml[i].ID = *m.ID
ml[i].Avatar = avtr
ml[i].Date = time.Unix(m.Date, 0).Format(chineseDateLayout)
ml[i].Text = m.Text
ml[i].Type = m.Type()
}
return ml, nil
}
func acceptMessage(token string, id int) error {
user := usertokens.Get(token)
if user == nil {
return errInvalidToken
}
m, err := global.UserDB.GetMessageByID(id)
if err != nil {
return err
}
if m.ToID != *user.ID {
return errInvalidMessageID
}
switch m.Type() {
case global.MessageRegister:
return global.UserDB.AddUser(&global.User{
Role: global.RoleUser,
Pswd: m.Pswd,
Name: m.Name,
Cont: m.Cont,
}, user.Name)
case global.MessageResetPassword:
u, err := global.UserDB.GetUserByName(m.Name)
if err != nil {
return err
}
return global.UserDB.UpdateUserPassword(*u.ID, "123456")
default:
return errNothingToDo
}
}