123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package controller
- import (
- cm "app.yhyue.com/moapp/jybase/common"
- . "bindresume/config"
- "bindresume/service"
- "fmt"
- "github.com/gin-gonic/gin"
- "log"
- "math/rand"
- "mime/multipart"
- "net/http"
- "path/filepath"
- "strings"
- "time"
- )
- func UploadFile(r *gin.Context) {
- // 设置内存限制(100 MB)
- if err := r.Request.ParseMultipartForm(100 << 20); err != nil {
- r.JSON(http.StatusBadRequest, gin.H{
- "error": "文件大小超过限制(最大100MB)",
- })
- return
- }
- // 获取所有文件(兼容多字段)
- form, err := r.MultipartForm()
- if err != nil {
- r.JSON(http.StatusBadRequest, gin.H{
- "error": "无法解析表单",
- })
- return
- }
- // 收集所有上传的文件
- var allFiles []*multipart.FileHeader
- for fieldName := range form.File {
- allFiles = append(allFiles, form.File[fieldName]...)
- }
- // 处理上传结果
- successFiles := make([]string, 0)
- failedFiles := make(map[string]string)
- for _, fileHeader := range allFiles {
- // 生成唯一文件名(时间戳+随机数)
- uniqueName := fmt.Sprintf("%s_%d%s",
- time.Now().Format("20060102150405001")+cm.GetComplexRandom(8, 0, 0),
- rand.Intn(1000),
- filepath.Ext(fileHeader.Filename),
- )
- // 检查文件类型(示例:仅允许图片)
- allowedTypes := map[string]bool{
- ".jpg": true,
- ".jpeg": true,
- ".png": true,
- ".gif": true,
- }
- ext := filepath.Ext(uniqueName)
- if !allowedTypes[ext] {
- failedFiles[fileHeader.Filename] = "文件类型不允许"
- continue
- }
- // 保存文件
- //dst := filepath.Join(config.SysConfig.FilePath, uniqueName)
- filePath := service.GetFilePath(uniqueName, "bifile")
- log.Println("获取路径", filePath)
- if err := r.SaveUploadedFile(fileHeader, filePath); err != nil {
- failedFiles[fileHeader.Filename] = fmt.Sprintf("保存失败: %v", err)
- continue
- }
- successFiles = append(successFiles, fmt.Sprintf("/shareFile/%s", strings.Replace(filePath, cm.ObjToString(SysConfig.FilePath), "", 1)))
- }
- // 返回响应
- r.JSON(http.StatusOK, gin.H{
- "success_count": len(successFiles),
- "success_files": successFiles,
- "failed_count": len(failedFiles),
- "failed_files": failedFiles,
- })
- }
- func WorkTaskSave(r *gin.Context) {
- //创建人在kb时候有账号
- name := r.Query("name")
- kbUserId, err := service.CheckCreateUserAccount(name)
- if err != nil {
- r.JSON(http.StatusOK, err)
- }
- //插入工单
- task := &service.WordTask{
- Title: r.Query("title"),
- Description: r.Query("description"),
- Color_id: "green",
- Project_id: 784,
- Column_id: 3283,
- Position: 1,
- Score: 0,
- Creator_id: kbUserId,
- }
- err = task.WordTaskSave()
- if err != nil {
- r.JSON(http.StatusOK, err)
- }
- //创建成功发送企微消息
- err = service.SendWechatWorkMessage()
- if err != nil {
- r.JSON(http.StatusOK, err)
- }
- r.JSON(http.StatusOK, gin.H{
- "success": 1,
- })
- }
|