import_whatsapp_contact_handler.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package contact
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/zeromicro/go-zero/rest/httpx"
  6. "net/http"
  7. "wechat-api/internal/logic/contact"
  8. "wechat-api/internal/svc"
  9. "wechat-api/internal/types"
  10. )
  11. const (
  12. defaultMultipartMemory = 32 << 20 // 32 MB
  13. )
  14. // swagger:route post /contact/importWhatsappContact contact ImportWhatsappContact
  15. //
  16. // 导入Whatsapp联系人
  17. //
  18. // 导入Whatsapp联系人
  19. //
  20. // Parameters:
  21. // + name: body
  22. // require: true
  23. // in: body
  24. // type: ImportWhatsappContactReq
  25. //
  26. // Responses:
  27. // 200: BaseDataInfo
  28. func ImportWhatsappContactHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
  29. return func(w http.ResponseWriter, r *http.Request) {
  30. if err := r.ParseMultipartForm(defaultMultipartMemory); err != nil {
  31. httpx.Error(w, err)
  32. return
  33. }
  34. file, header, err := r.FormFile("file")
  35. if err != nil {
  36. httpx.ErrorCtx(r.Context(), w, err)
  37. return
  38. }
  39. if file == nil {
  40. httpx.ErrorCtx(r.Context(), w, errors.New("upload file cannot be null"))
  41. return
  42. }
  43. fmt.Printf("header=%+v size=%d filename=%v\n", header.Header, header.Size, header.Filename)
  44. var req types.ImportWhatsappContactReq
  45. if err := httpx.Parse(r, &req, true); err != nil {
  46. httpx.ErrorCtx(r.Context(), w, err)
  47. return
  48. }
  49. l := contact.NewImportWhatsappContactLogic(r.Context(), svcCtx)
  50. resp, err := l.ImportWhatsappContact(&req, file)
  51. // 删除临时文件
  52. _ = r.MultipartForm.RemoveAll()
  53. if err != nil {
  54. httpx.ErrorCtx(r.Context(), w, err)
  55. } else {
  56. httpx.OkJsonCtx(r.Context(), w, resp)
  57. }
  58. }
  59. }