mirror of
https://github.com/Jinnrry/PMail.git
synced 2025-02-20 11:43:09 +08:00
100 lines
2.5 KiB
Go
100 lines
2.5 KiB
Go
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
log "github.com/sirupsen/logrus"
|
|
"io"
|
|
"net/http"
|
|
"pmail/db"
|
|
"pmail/dto"
|
|
"pmail/dto/response"
|
|
"pmail/i18n"
|
|
"pmail/services/group"
|
|
"pmail/utils/array"
|
|
"pmail/utils/context"
|
|
)
|
|
|
|
func GetUserGroupList(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
|
|
infos := group.GetGroupList(ctx)
|
|
response.NewSuccessResponse(infos).FPrint(w)
|
|
}
|
|
|
|
func GetUserGroup(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
|
|
|
|
retData := []*group.GroupItem{
|
|
{
|
|
Label: i18n.GetText(ctx.Lang, "all_email"),
|
|
Children: []*group.GroupItem{
|
|
{
|
|
Label: i18n.GetText(ctx.Lang, "inbox"),
|
|
Tag: dto.SearchTag{Type: 0, Status: -1, GroupId: 0}.ToString(),
|
|
},
|
|
{
|
|
Label: i18n.GetText(ctx.Lang, "outbox"),
|
|
Tag: dto.SearchTag{Type: 1, Status: 1}.ToString(),
|
|
},
|
|
{
|
|
Label: i18n.GetText(ctx.Lang, "sketch"),
|
|
Tag: dto.SearchTag{Type: 1, Status: 0}.ToString(),
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
retData = array.Merge(retData, group.GetGroupInfoList(ctx))
|
|
|
|
response.NewSuccessResponse(retData).FPrint(w)
|
|
}
|
|
|
|
type addGroupRequest struct {
|
|
Name string `json:"name"`
|
|
ParentId int `json:"parent_id"`
|
|
}
|
|
|
|
func AddGroup(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
|
|
var reqData *addGroupRequest
|
|
reqBytes, err := io.ReadAll(req.Body)
|
|
if err != nil {
|
|
log.WithContext(ctx).Errorf("%+v", err)
|
|
}
|
|
err = json.Unmarshal(reqBytes, &reqData)
|
|
if err != nil {
|
|
log.WithContext(ctx).Errorf("%+v", err)
|
|
}
|
|
|
|
res, err := db.Instance.Exec(db.WithContext(ctx, "insert into `group` (name,parent_id,user_id) values (?,?,?)"), reqData.Name, reqData.ParentId, ctx.UserID)
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, "DBError", err.Error()).FPrint(w)
|
|
return
|
|
}
|
|
id, err := res.LastInsertId()
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, "DBError", err.Error()).FPrint(w)
|
|
return
|
|
}
|
|
response.NewSuccessResponse(id).FPrint(w)
|
|
}
|
|
|
|
type delGroupRequest struct {
|
|
Id int `json:"id"`
|
|
}
|
|
|
|
func DelGroup(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
|
|
var reqData *delGroupRequest
|
|
reqBytes, err := io.ReadAll(req.Body)
|
|
if err != nil {
|
|
log.WithContext(ctx).Errorf("%+v", err)
|
|
}
|
|
err = json.Unmarshal(reqBytes, &reqData)
|
|
if err != nil {
|
|
log.WithContext(ctx).Errorf("%+v", err)
|
|
}
|
|
succ, err := group.DelGroup(ctx, reqData.Id)
|
|
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, "DBError", err.Error()).FPrint(w)
|
|
return
|
|
}
|
|
response.NewSuccessResponse(succ).FPrint(w)
|
|
}
|