Browse Source

头像上传

kobe6258 8 months ago
parent
commit
c94af8442f
6 changed files with 352 additions and 24 deletions
  1. 102 0
      controllers/analyst.go
  2. 191 10
      controllers/media.go
  3. 40 9
      routers/commentsRouter.go
  4. 10 0
      routers/router.go
  5. 6 2
      utils/config.go
  6. 3 3
      utils/constants.go

+ 102 - 0
controllers/analyst.go

@@ -0,0 +1,102 @@
+package controllers
+
+import (
+	"eta/eta_mini_crm_ht/models"
+	"eta/eta_mini_crm_ht/models/response"
+	"eta/eta_mini_crm_ht/services"
+	"eta/eta_mini_crm_ht/utils"
+	"fmt"
+	"os"
+	"path"
+	"strconv"
+	"time"
+)
+
+const ()
+
+type AnalystController struct {
+	BaseAuthController
+}
+
+// UploadImage
+// @Title 上传头像
+// @Description 上传头像
+// @Param   File   query   file  true       "文件"
+// @Success 200 {object} models.ReportAuthorResp
+// @router /uploadImage [post]
+func (this *AnalystController) UploadImage() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	f, h, err := this.GetFile("File")
+	if err != nil {
+		br.Msg = "获取资源信息失败"
+		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
+		return
+	}
+	defer f.Close()
+	ext := path.Ext(h.Filename)
+	//if ext != ".pdf" {
+	//	br.Msg = "文件格式不正确"
+	//	return
+	//}
+	size, err := strconv.Atoi(utils.UPLOAD_IMG_SIZE)
+	if err != nil {
+		size = 15
+	}
+	if h.Size > 1024*int64(size) {
+		br.Msg = fmt.Sprintf("头像文件大小不能超过%dK", size)
+		return
+	}
+	dateDir := time.Now().Format("20060102")
+	uploadDir := utils.STATIC_DIR + "ht/" + dateDir
+	err = os.MkdirAll(uploadDir, utils.DIR_MOD)
+	if err != nil {
+		br.Msg = "存储目录创建失败"
+		br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
+		return
+	}
+	randStr := utils.GetRandStringNoSpecialChar(28)
+	fileName := randStr + ext
+	fpath := uploadDir + "/" + fileName
+	err = this.SaveToFile("File", fpath)
+	if err != nil {
+		br.Msg = "头像上传失败"
+		br.ErrMsg = "头像上传失败,Err:" + err.Error()
+		return
+	}
+	pdfUploadDir := utils.RESOURCE_DIR + "analyst/"
+	savePdfToOssPath := pdfUploadDir + time.Now().Format("200601/20060102/")
+	imgName := utils.GetRandStringNoSpecialChar(28)
+	savePdfToOssPath += imgName
+
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+
+	ossClient := services.NewOssClient()
+	if ossClient == nil {
+		br.Msg = "头像上传失败"
+		br.ErrMsg = "初始化OSS服务失败"
+		return
+	}
+	imgUrl, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
+	if err != nil {
+		br.Msg = "头像上传失败"
+		br.ErrMsg = "头像上传失败,Err:" + err.Error()
+		return
+	}
+
+	base := path.Base(h.Filename)
+	resp := new(response.ReportPdfUploadResp)
+	resp.Url = imgUrl
+	resp.FileName = base
+
+	br.Data = resp
+	br.Msg = "上传成功"
+	br.Ret = 200
+	br.Success = true
+}

+ 191 - 10
controllers/media.go

@@ -17,7 +17,7 @@ import (
 	"time"
 )
 
-type MediaPdfController struct {
+type MediaController struct {
 	BaseAuthController
 }
 
@@ -26,7 +26,7 @@ type MediaPdfController struct {
 // @Description 获取报告作者
 // @Success 200 {object} models.ReportAuthorResp
 // @router /author [get]
-func (this *MediaPdfController) Author() {
+func (this *MediaController) Author() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -51,7 +51,7 @@ func (this *MediaPdfController) Author() {
 // @Param	request	body request.ReportPdfAddReq true "type json string"
 // @Success 200 {object} models.ReportAuthorResp
 // @router /add [post]
-func (this *MediaPdfController) Add() {
+func (this *MediaController) Add() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -153,7 +153,7 @@ func (this *MediaPdfController) Add() {
 // @Param   File   query   file  true       "文件"
 // @Success 200 {object} models.ReportAuthorResp
 // @router /uploadPdf [post]
-func (this *MediaPdfController) UploadPdf() {
+func (this *MediaController) UploadPdf() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -247,7 +247,7 @@ func (this *MediaPdfController) UploadPdf() {
 // @Param   SortType   query   string  true       "排序方式"
 // @Success 200 {object} models.ReportAuthorResp
 // @router /list [get]
-func (this *MediaPdfController) List() {
+func (this *MediaController) List() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -396,7 +396,7 @@ func (this *MediaPdfController) List() {
 // @Param	request	body request.ReportPdfEditReq true "type json string"
 // @Success 200 {object} models.ReportAuthorResp
 // @router /edit [post]
-func (this *MediaPdfController) Edit() {
+func (this *MediaController) Edit() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -488,7 +488,7 @@ func (this *MediaPdfController) Edit() {
 // @Param   ReportPdfId   query   string  true       "pdf研报id"
 // @Success 200 {object} models.BaseResponse
 // @router /publish [get]
-func (this *MediaPdfController) Publish() {
+func (this *MediaController) Publish() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -539,7 +539,7 @@ func (this *MediaPdfController) Publish() {
 // @Param   ReportPdfId   query   string  true       "pdf研报id"
 // @Success 200 {object} models.BaseResponse
 // @router /publishCancel [get]
-func (this *MediaPdfController) PublishCancel() {
+func (this *MediaController) PublishCancel() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -589,7 +589,7 @@ func (this *MediaPdfController) PublishCancel() {
 // @Param   ReportPdfId   query   string  true       "pdf研报id"
 // @Success 200 {object} models.BaseResponse
 // @router /delete [get]
-func (this *MediaPdfController) Delete() {
+func (this *MediaController) Delete() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -640,7 +640,7 @@ func (this *MediaPdfController) Delete() {
 // @Param   ReportPdfId   query   string  true       "pdf研报id"
 // @Success 200 {object} models.BaseResponse
 // @router /detail [get]
-func (this *MediaPdfController) Detail() {
+func (this *MediaController) Detail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -663,3 +663,184 @@ func (this *MediaPdfController) Detail() {
 	br.Success = true
 	br.Msg = "获取研报成功"
 }
+
+const (
+	img     = "image"
+	video   = "video"
+	audio   = "audio"
+	img_ext = ".jpg|.jpeg|.png|.gif|.bmp|.webp"
+)
+
+func checkMediaType(media string) bool {
+	return media == img || media == video || media == audio
+}
+
+// @Title 上传图片
+// @Description 上传图片
+// @Param   File   query   file  true       "文件"
+// @Success 200 {object} models.ReportAuthorResp
+// @router /uploadFile [post]
+func (this *MediaController) UploadAudio(mediaType string) {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	f, h, err := this.GetFile("File")
+	if err != nil {
+		br.Msg = "获取资源信息失败"
+		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
+		return
+	}
+	defer f.Close()
+	if !checkMediaType(mediaType) {
+		br.Msg = "上传文件类型失败"
+		br.ErrMsg = "上传文件类型非法,Err:" + err.Error()
+		return
+	}
+	ext := path.Ext(h.Filename)
+	//if ext != ".pdf" {
+	//	br.Msg = "文件格式不正确"
+	//	return
+	//}
+	size, err := strconv.Atoi(utils.UPLOAD_IMG_SIZE)
+	if err != nil {
+		size = 15
+	}
+	if h.Size > 1024*1024*int64(size) {
+		br.Msg = "文件大小不能超过15M"
+		return
+	}
+	dateDir := time.Now().Format("20060102")
+	uploadDir := utils.STATIC_DIR + "ht/img" + dateDir
+	err = os.MkdirAll(uploadDir, utils.DIR_MOD)
+	if err != nil {
+		br.Msg = "存储目录创建失败"
+		br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
+		return
+	}
+	randStr := utils.GetRandStringNoSpecialChar(28)
+	fileName := randStr + ext
+	fpath := uploadDir + "/" + fileName
+	err = this.SaveToFile("File", fpath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
+	}
+	pdfUploadDir := utils.RESOURCE_DIR + "img/"
+	savePdfToOssPath := pdfUploadDir + time.Now().Format("200601/20060102/")
+	pptName := utils.GetRandStringNoSpecialChar(28)
+	savePdfToOssPath += pptName + ext
+
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+
+	ossClient := services.NewOssClient()
+	if ossClient == nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "初始化OSS服务失败"
+		return
+	}
+	pdfUrl, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
+	}
+	base := path.Base(h.Filename)
+	resp := new(response.ReportPdfUploadResp)
+	resp.Url = pdfUrl
+	resp.FileName = base
+
+	br.Data = resp
+	br.Msg = "上传成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// @Title 上传图片
+// @Description 上传图片
+// @Param   File   query   file  true       "文件"
+// @Success 200 {object} models.ReportAuthorResp
+// @router /uploadFile [post]
+func (this *MediaController) UploadVideo(mediaType string) {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	f, h, err := this.GetFile("File")
+	if err != nil {
+		br.Msg = "获取资源信息失败"
+		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
+		return
+	}
+	defer f.Close()
+	if !checkMediaType(mediaType) {
+		br.Msg = "上传文件类型失败"
+		br.ErrMsg = "上传文件类型非法,Err:" + err.Error()
+		return
+	}
+	ext := path.Ext(h.Filename)
+	//if ext != ".pdf" {
+	//	br.Msg = "文件格式不正确"
+	//	return
+	//}
+	size, err := strconv.Atoi(utils.UPLOAD_IMG_SIZE)
+	if err != nil {
+		size = 15
+	}
+	if h.Size > 1024*1024*int64(size) {
+		br.Msg = "文件大小不能超过15M"
+		return
+	}
+	dateDir := time.Now().Format("20060102")
+	uploadDir := utils.STATIC_DIR + "ht/img" + dateDir
+	err = os.MkdirAll(uploadDir, utils.DIR_MOD)
+	if err != nil {
+		br.Msg = "存储目录创建失败"
+		br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
+		return
+	}
+	randStr := utils.GetRandStringNoSpecialChar(28)
+	fileName := randStr + ext
+	fpath := uploadDir + "/" + fileName
+	err = this.SaveToFile("File", fpath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
+	}
+	pdfUploadDir := utils.RESOURCE_DIR + "img/"
+	savePdfToOssPath := pdfUploadDir + time.Now().Format("200601/20060102/")
+	pptName := utils.GetRandStringNoSpecialChar(28)
+	savePdfToOssPath += pptName + ext
+
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+
+	ossClient := services.NewOssClient()
+	if ossClient == nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "初始化OSS服务失败"
+		return
+	}
+	pdfUrl, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
+	}
+	base := path.Base(h.Filename)
+	resp := new(response.ReportPdfUploadResp)
+	resp.Url = pdfUrl
+	resp.FileName = base
+
+	br.Data = resp
+	br.Msg = "上传成功"
+	br.Ret = 200
+	br.Success = true
+}

+ 40 - 9
routers/commentsRouter.go

@@ -7,6 +7,15 @@ import (
 
 func init() {
 
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:AnalystController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:AnalystController"],
+        beego.ControllerComments{
+            Method: "UploadImage",
+            Router: `/uploadImage`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:ChartPermissionController"],
         beego.ControllerComments{
             Method: "List",
@@ -34,7 +43,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "Add",
             Router: `/add`,
@@ -43,7 +52,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "Author",
             Router: `/author`,
@@ -52,7 +61,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "Delete",
             Router: `/delete`,
@@ -61,7 +70,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "Detail",
             Router: `/detail`,
@@ -70,7 +79,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "Edit",
             Router: `/edit`,
@@ -79,7 +88,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "List",
             Router: `/list`,
@@ -88,7 +97,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "Publish",
             Router: `/publish`,
@@ -97,7 +106,7 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "PublishCancel",
             Router: `/publishCancel`,
@@ -106,7 +115,29 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaPdfController"],
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
+        beego.ControllerComments{
+            Method: "UploadAudio",
+            Router: `/uploadFile`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(
+				param.New("mediaType"),
+			),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
+        beego.ControllerComments{
+            Method: "UploadVideo",
+            Router: `/uploadFile`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(
+				param.New("mediaType"),
+			),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm_ht/controllers:MediaController"],
         beego.ControllerComments{
             Method: "UploadPdf",
             Router: `/uploadPdf`,

+ 10 - 0
routers/router.go

@@ -66,6 +66,16 @@ func init() {
 				&controllers.FeedBackController{},
 			),
 		),
+		beego.NSNamespace("/analyst",
+			beego.NSInclude(
+				&controllers.AnalystController{},
+			),
+		),
+		beego.NSNamespace("/media",
+			beego.NSInclude(
+				&controllers.MediaController{},
+			),
+		),
 	)
 	beego.AddNamespace(ns)
 }

+ 6 - 2
utils/config.go

@@ -58,6 +58,7 @@ var (
 	STATIC_DIR      string
 	RESOURCE_DIR    string
 	UPLOAD_PDF_SIZE string // 单位MB
+	UPLOAD_IMG_SIZE string
 )
 
 // ES配置
@@ -179,13 +180,16 @@ func init() {
 	}
 	RESOURCE_DIR = config["resource_dir"]
 	if RESOURCE_DIR == "" {
-		RESOURCE_DIR = "dongwu/"
+		RESOURCE_DIR = "ht/"
 	}
 	UPLOAD_PDF_SIZE = config["upload_pdf_size"]
 	if UPLOAD_PDF_SIZE == "" {
 		UPLOAD_PDF_SIZE = "15"
 	}
-
+	UPLOAD_IMG_SIZE = config["upload_img_size"]
+	if UPLOAD_IMG_SIZE == "" {
+		UPLOAD_IMG_SIZE = "200"
+	}
 	// 初始化缓存
 	redisClient, err := initRedis(config["redis_type"], config["beego_cache"])
 	if err != nil {

+ 3 - 3
utils/constants.go

@@ -8,8 +8,8 @@ const (
 )
 
 const (
-	CACHE_ACCESS_TOKEN_LOGIN          = "pc_eta_min_crm:login:"          //管理后台登录
-	CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST = "pc_eta_min_crm:login:no_trust:" //管理后台登录(不可信登录态)
+	CACHE_ACCESS_TOKEN_LOGIN          = "pc_eta_min_crm_ht:login:"          //管理后台登录
+	CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST = "pc_eta_min_crm:login_ht:no_trust:" //管理后台登录(不可信登录态)
 )
 
 // 手机号,电子邮箱正则
@@ -77,4 +77,4 @@ var NoAuthApiMap = map[string]bool{
 	"/seller/list":            true,
 }
 
-var APPNAME string = "东吴CRM"
+var APPNAME string = "海通CRM"