move.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package email
  2. import (
  3. "encoding/json"
  4. "github.com/Jinnrry/pmail/dto/response"
  5. "github.com/Jinnrry/pmail/models"
  6. "github.com/Jinnrry/pmail/services/group"
  7. "github.com/Jinnrry/pmail/utils/context"
  8. log "github.com/sirupsen/logrus"
  9. "io"
  10. "net/http"
  11. )
  12. type moveRequest struct {
  13. GroupId int `json:"group_id"`
  14. GroupName string `json:"group_name"`
  15. IDs []int `json:"ids"`
  16. }
  17. func Move(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
  18. reqBytes, err := io.ReadAll(req.Body)
  19. if err != nil {
  20. log.WithContext(ctx).Errorf("%+v", err)
  21. }
  22. var reqData moveRequest
  23. err = json.Unmarshal(reqBytes, &reqData)
  24. if err != nil {
  25. log.WithContext(ctx).Errorf("%+v", err)
  26. }
  27. if len(reqData.IDs) <= 0 {
  28. response.NewErrorResponse(response.ParamsError, "ID错误", "").FPrint(w)
  29. return
  30. }
  31. if name, ok := models.GroupCodeToName[reqData.GroupId]; ok {
  32. err := group.Move2DefaultBox(ctx, reqData.IDs, name)
  33. if err != nil {
  34. response.NewErrorResponse(response.ServerError, "Error", err.Error()).FPrint(w)
  35. return
  36. }
  37. } else if !group.MoveMailToGroup(ctx, reqData.IDs, reqData.GroupId) {
  38. response.NewErrorResponse(response.ServerError, "Error", "").FPrint(w)
  39. return
  40. }
  41. response.NewSuccessResponse("success").FPrint(w)
  42. }