diff --git a/backend/api.go b/backend/api.go index e2cddc6..0d7bee5 100644 --- a/backend/api.go +++ b/backend/api.go @@ -3,6 +3,7 @@ package backend import ( "encoding/json" "net/http" + "strconv" "strings" "github.com/fumiama/paper-manager/backend/utils" @@ -253,6 +254,20 @@ func init() { } writeresult(w, codeSuccess, ret, messageOk, typeSuccess) }} + + apimap["/api/acceptMessage"] = &apihandler{"GET", func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.Atoi(r.URL.Query().Get("id")) + if err != nil { + writeresult(w, codeError, nil, err.Error(), typeError) + return + } + err = acceptMessage(r.Header.Get("Authorization"), id) + if err != nil { + writeresult(w, codeError, nil, err.Error(), typeError) + return + } + writeresult(w, codeSuccess, "成功", messageOk, typeSuccess) + }} } // APIHandler serves all backend /api call diff --git a/backend/message.go b/backend/message.go index 42e5449..61e96e9 100644 --- a/backend/message.go +++ b/backend/message.go @@ -1,11 +1,17 @@ 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"` @@ -47,3 +53,34 @@ func getMessageList(token string) ([]messageList, error) { } 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 + } +} diff --git a/frontend/vben/src/api/dashboard/index.ts b/frontend/vben/src/api/dashboard/index.ts index b9f1d40..7443587 100644 --- a/frontend/vben/src/api/dashboard/index.ts +++ b/frontend/vben/src/api/dashboard/index.ts @@ -3,8 +3,13 @@ import { MessageItem } from './model/workbenchModel' enum Api { GetMessageList = '/getMessageList', + AcceptMessage = '/acceptMessage', } export const getMessageList = () => { return defHttp.get({ url: Api.GetMessageList }) } + +export const acceptMessage = (id: number) => { + return defHttp.get({ url: Api.AcceptMessage, params: { id } }) +} diff --git a/frontend/vben/src/views/dashboard/workbench/components/DynamicInfo.vue b/frontend/vben/src/views/dashboard/workbench/components/DynamicInfo.vue index 1789833..43ee4b8 100644 --- a/frontend/vben/src/views/dashboard/workbench/components/DynamicInfo.vue +++ b/frontend/vben/src/views/dashboard/workbench/components/DynamicInfo.vue @@ -21,6 +21,7 @@ item.type, ) " + @click="accept(item.id)" >接受    @@ -33,7 +34,8 @@