123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package agent
- import (
- "errors"
- "net/http"
- "strconv"
- "wechat-api/internal/types"
- "github.com/zeromicro/go-zero/rest/httpx"
- "wechat-api/internal/logic/agent"
- "wechat-api/internal/svc"
- )
- const (
- defaultMultipartMemory = 32 << 20
- )
- func UploadAgentDataHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- if err := r.ParseMultipartForm(defaultMultipartMemory); err != nil {
- httpx.Error(w, err)
- return
- }
- l := agent.NewUploadAgentDataLogic(r.Context(), svcCtx)
- file, header, err := r.FormFile("file")
- agentIds, ok := r.Form["agentId"]
- if err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
- if !ok || len(agentIds) != 1 {
- httpx.ErrorCtx(r.Context(), w, errors.New("agentId cannot be null"))
- return
- }
- if file == nil {
- httpx.ErrorCtx(r.Context(), w, errors.New("upload file cannot be null"))
- return
- }
-
- if header.Header.Get("Content-Type") != "text/csv" {
- httpx.ErrorCtx(r.Context(), w, errors.New("file format must be csv"))
- return
- }
- agentId, _ := strconv.Atoi(agentIds[0])
- var req types.UploadDataReq
- if err := httpx.Parse(r, &req, true); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
- resp, err := l.UploadAgentData(&req, file, uint64(agentId))
-
- _ = r.MultipartForm.RemoveAll()
- if err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
- }
|