analyst.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package controllers
  2. import (
  3. "eta/eta_mini_crm_ht/models"
  4. "eta/eta_mini_crm_ht/models/response"
  5. "eta/eta_mini_crm_ht/services"
  6. "eta/eta_mini_crm_ht/utils"
  7. "fmt"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. "os"
  10. "path"
  11. "strconv"
  12. "time"
  13. )
  14. const ()
  15. type AnalystController struct {
  16. BaseAuthController
  17. }
  18. // UploadImage
  19. // @Title 上传头像
  20. // @Description 上传头像
  21. // @Param File query file true "文件"
  22. // @Success 200 {object} models.ReportAuthorResp
  23. // @router /uploadImage [post]
  24. func (this *AnalystController) UploadImage() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. f, h, err := this.GetFile("File")
  31. if err != nil {
  32. br.Msg = "获取资源信息失败"
  33. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  34. return
  35. }
  36. defer f.Close()
  37. ext := path.Ext(h.Filename)
  38. //if ext != ".pdf" {
  39. // br.Msg = "文件格式不正确"
  40. // return
  41. //}
  42. size, err := strconv.Atoi(utils.UPLOAD_IMG_SIZE)
  43. if err != nil {
  44. size = 15
  45. }
  46. if h.Size > 1024*int64(size) {
  47. br.Msg = fmt.Sprintf("头像文件大小不能超过%dK", size)
  48. return
  49. }
  50. dateDir := time.Now().Format("20060102")
  51. uploadDir := utils.STATIC_DIR + "ht/" + dateDir
  52. err = os.MkdirAll(uploadDir, utils.DIR_MOD)
  53. if err != nil {
  54. br.Msg = "存储目录创建失败"
  55. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  56. return
  57. }
  58. randStr := utils.GetRandStringNoSpecialChar(28)
  59. fileName := randStr + ext
  60. fpath := uploadDir + "/" + fileName
  61. err = this.SaveToFile("File", fpath)
  62. if err != nil {
  63. br.Msg = "头像上传失败"
  64. br.ErrMsg = "头像上传失败,Err:" + err.Error()
  65. return
  66. }
  67. pdfUploadDir := utils.RESOURCE_DIR + "analyst/"
  68. savePdfToOssPath := pdfUploadDir + time.Now().Format("200601/20060102/")
  69. imgName := utils.GetRandStringNoSpecialChar(28)
  70. savePdfToOssPath += imgName
  71. defer func() {
  72. _ = os.Remove(fpath)
  73. }()
  74. ossClient := services.NewOssClient()
  75. if ossClient == nil {
  76. br.Msg = "头像上传失败"
  77. br.ErrMsg = "初始化OSS服务失败"
  78. return
  79. }
  80. imgUrl, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
  81. if err != nil {
  82. br.Msg = "头像上传失败"
  83. br.ErrMsg = "头像上传失败,Err:" + err.Error()
  84. return
  85. }
  86. base := path.Base(h.Filename)
  87. resp := new(response.ReportPdfUploadResp)
  88. resp.Url = imgUrl
  89. resp.FileName = base
  90. br.Data = resp
  91. br.Msg = "上传成功"
  92. br.Ret = 200
  93. br.Success = true
  94. }
  95. // GetAnalystByName
  96. // @Title 查询研究员信息
  97. // @Description 查询研究员信息
  98. // @Param File query file true "文件"
  99. // @Success 200 {object} models.ReportAuthorResp
  100. // @router /analyst [get]
  101. func (this *AnalystController) GetAnalystByName(AnalystName string) {
  102. br := new(models.BaseResponse).Init()
  103. defer func() {
  104. this.Data["json"] = br
  105. this.ServeJSON()
  106. }()
  107. analyst, err := models.GetAnalystByName(AnalystName)
  108. if err != nil {
  109. br.Msg = "获取失败"
  110. br.ErrMsg = "获取失败,Err:" + err.Error()
  111. return
  112. }
  113. br.Ret = 200
  114. br.Success = true
  115. br.Msg = "获取成功"
  116. br.Data = analyst
  117. }
  118. // List
  119. // @Title 列表
  120. // @Description 列表
  121. // @Param File query file true "文件"
  122. // @Success 200 {object} models.ReportAuthorResp
  123. // @router /list [get]
  124. func (this *AnalystController) List() {
  125. br := new(models.BaseResponse).Init()
  126. defer func() {
  127. this.Data["json"] = br
  128. this.ServeJSON()
  129. }()
  130. pageSize, _ := this.GetInt("PageSize")
  131. currentIndex, _ := this.GetInt("CurrentIndex")
  132. var startSize int
  133. if pageSize <= 0 {
  134. pageSize = utils.PageSize20
  135. }
  136. if currentIndex <= 0 {
  137. currentIndex = 1
  138. }
  139. startSize = utils.StartIndex(currentIndex, pageSize)
  140. total, err := models.GetAnalystCount()
  141. if err != nil {
  142. br.Msg = "获取失败"
  143. br.ErrMsg = "获取失败,Err:" + err.Error()
  144. return
  145. }
  146. list, err := models.GetAnalystList(startSize, pageSize)
  147. if err != nil {
  148. br.Msg = "获取失败"
  149. br.ErrMsg = "获取失败,Err:" + err.Error()
  150. return
  151. }
  152. analystList := make([]*models.AnalystView, 0)
  153. for _, v := range list {
  154. analystList = append(analystList, &models.AnalystView{
  155. Id: v.Id,
  156. Name: v.Name,
  157. HeadImgURL: v.HeadImgURL,
  158. Introduction: v.Introduction,
  159. CreatedTime: v.CreatedTime.Format(time.DateTime),
  160. })
  161. }
  162. page := paging.GetPaging(currentIndex, pageSize, total)
  163. resp := new(response.AnalystListResp)
  164. resp.List = analystList
  165. resp.Paging = page
  166. br.Ret = 200
  167. br.Success = true
  168. br.Msg = "获取成功"
  169. br.Data = resp
  170. }