del_email.go 673 B

12345678910111213141516171819202122232425262728293031323334
  1. package del_email
  2. import (
  3. "fmt"
  4. "pmail/db"
  5. "pmail/models"
  6. "pmail/services/auth"
  7. "pmail/utils/array"
  8. "pmail/utils/context"
  9. "pmail/utils/errors"
  10. )
  11. func DelEmail(ctx *context.Context, ids []int) error {
  12. var emails []*models.Email
  13. err := db.Instance.ID(ids).Find(&emails)
  14. if err != nil {
  15. return errors.Wrap(err)
  16. }
  17. for _, email := range emails {
  18. // 检查是否有权限
  19. hasAuth := auth.HasAuth(ctx, email)
  20. if !hasAuth {
  21. return errors.New("No Auth!")
  22. }
  23. }
  24. _, err = db.Instance.Exec(db.WithContext(ctx, fmt.Sprintf("update email set status = 3 where id in (%s)", array.Join(ids, ","))))
  25. if err != nil {
  26. return errors.Wrap(err)
  27. }
  28. return nil
  29. }