report_pdf.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_mini_crm/models"
  5. "eta/eta_mini_crm/models/request"
  6. "eta/eta_mini_crm/models/response"
  7. "eta/eta_mini_crm/services"
  8. "eta/eta_mini_crm/services/elastic"
  9. "eta/eta_mini_crm/utils"
  10. "os"
  11. "path"
  12. "strconv"
  13. "strings"
  14. "time"
  15. "github.com/rdlucklib/rdluck_tools/paging"
  16. )
  17. type ReportPdfController struct {
  18. BaseAuthController
  19. }
  20. // Author
  21. // @Title 获取报告作者接口
  22. // @Description 获取报告作者
  23. // @Success 200 {object} models.ReportAuthorResp
  24. // @router /author [get]
  25. func (this *ReportPdfController) Author() {
  26. br := new(models.BaseResponse).Init()
  27. defer func() {
  28. this.Data["json"] = br
  29. this.ServeJSON()
  30. }()
  31. items, err := models.GetReportAuthorList()
  32. if err != nil {
  33. br.Msg = "获取失败!"
  34. br.ErrMsg = "获取失败,Err:" + err.Error()
  35. return
  36. }
  37. br.Ret = 200
  38. br.Success = true
  39. br.Msg = "获取成功"
  40. br.Data = items
  41. }
  42. // Add
  43. // @Title 添加研报
  44. // @Description 添加研报
  45. // @Param request body request.ReportPdfAddReq true "type json string"
  46. // @Success 200 {object} models.ReportAuthorResp
  47. // @router /add [post]
  48. func (this *ReportPdfController) Add() {
  49. br := new(models.BaseResponse).Init()
  50. defer func() {
  51. this.Data["json"] = br
  52. this.ServeJSON()
  53. }()
  54. var req request.ReportPdfAddReq
  55. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  56. br.Msg = "参数解析失败"
  57. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  58. return
  59. }
  60. if req.ClassifyIdFirst <= 0 {
  61. br.Msg = "请选择研报所属的一级分类"
  62. return
  63. }
  64. if req.ClassifyIdSecond <= 0 {
  65. br.Msg = "请选择研报所属的二级分类"
  66. return
  67. }
  68. if req.PdfName == "" {
  69. br.Msg = "pdf名称为空"
  70. return
  71. }
  72. nameFirst, err := models.GetClassifyById(req.ClassifyIdFirst)
  73. if err != nil {
  74. br.Msg = "添加失败"
  75. br.ErrMsg = "一级类名获取失败,Err:" + err.Error()
  76. return
  77. }
  78. nameSecond, err := models.GetClassifyById(req.ClassifyIdSecond)
  79. if err != nil {
  80. br.Msg = "添加失败"
  81. br.ErrMsg = "二级类名获取失败,Err:" + err.Error()
  82. return
  83. }
  84. pdf := &models.ReportPdf{
  85. PdfUrl: req.PdfUrl,
  86. PdfName: req.PdfName,
  87. Title: req.Title,
  88. Author: req.Author,
  89. Abstract: req.Abstract,
  90. ClassifyIdFirst: req.ClassifyIdFirst,
  91. ClassifyNameFirst: nameFirst.ClassifyName,
  92. ClassifyIdSecond: req.ClassifyIdSecond,
  93. ClassifyNameSecond: nameSecond.ClassifyName,
  94. PublishTime: time.Now(),
  95. ModifyTime: time.Now(),
  96. SysUserId: this.SysUser.SysUserId,
  97. SysRealName: this.SysUser.SysRealName,
  98. State: utils.ReportStatusUp,
  99. }
  100. insertId, err := pdf.Insert()
  101. if err != nil {
  102. br.Msg = "添加失败"
  103. br.ErrMsg = "pdf研报新增失败,Err:" + err.Error()
  104. return
  105. }
  106. pdf.ReportPdfId = int(insertId)
  107. // 添加es
  108. go func(reportPdf *models.ReportPdf) {
  109. reportpdfView := reportPdf.ToView()
  110. docId := strconv.Itoa(reportpdfView.ReportPdfId)
  111. err = elastic.EsAddOrEditReportPdf(utils.MINI_REPORT_INDEX_NAME, docId, reportpdfView)
  112. if err != nil {
  113. utils.FileLog.Info("pdf研报es新增失败,Err:" + err.Error())
  114. return
  115. }
  116. utils.FileLog.Info("pdf研报es新增成功, pdfId:" + docId)
  117. }(pdf)
  118. br.Msg = "添加成功"
  119. br.Ret = 200
  120. br.Success = true
  121. }
  122. // @Title 上传pdf研报
  123. // @Description 上传pdf研报
  124. // @Param File query file true "文件"
  125. // @Success 200 {object} models.ReportAuthorResp
  126. // @router /uploadPdf [post]
  127. func (this *ReportPdfController) UploadPdf() {
  128. br := new(models.BaseResponse).Init()
  129. defer func() {
  130. this.Data["json"] = br
  131. this.ServeJSON()
  132. }()
  133. f, h, err := this.GetFile("File")
  134. if err != nil {
  135. br.Msg = "获取资源信息失败"
  136. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  137. return
  138. }
  139. defer f.Close()
  140. ext := path.Ext(h.Filename)
  141. if ext != ".pdf" {
  142. br.Msg = "文件格式不正确"
  143. return
  144. }
  145. size, err := strconv.Atoi(utils.UPLOAD_PDF_SIZE)
  146. if err != nil {
  147. size = 15
  148. }
  149. if h.Size > 1024*1024*int64(size) {
  150. br.Msg = "文件大小不能超过15M"
  151. return
  152. }
  153. dateDir := time.Now().Format("20060102")
  154. uploadDir := utils.STATIC_DIR + "dongwu/" + dateDir
  155. err = os.MkdirAll(uploadDir, utils.DIR_MOD)
  156. if err != nil {
  157. br.Msg = "存储目录创建失败"
  158. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  159. return
  160. }
  161. randStr := utils.GetRandStringNoSpecialChar(28)
  162. fileName := randStr + ext
  163. fpath := uploadDir + "/" + fileName
  164. err = this.SaveToFile("File", fpath)
  165. if err != nil {
  166. br.Msg = "文件上传失败"
  167. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  168. return
  169. }
  170. pdfUploadDir := utils.RESOURCE_DIR + "pdf/"
  171. savePdfToOssPath := pdfUploadDir + time.Now().Format("200601/20060102/")
  172. pptName := utils.GetRandStringNoSpecialChar(28)
  173. savePdfToOssPath += pptName + ".pdf"
  174. defer func() {
  175. _ = os.Remove(fpath)
  176. }()
  177. ossClient := services.NewOssClient()
  178. if ossClient == nil {
  179. br.Msg = "文件上传失败"
  180. br.ErrMsg = "初始化OSS服务失败"
  181. return
  182. }
  183. pdfUrl, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
  184. if err != nil {
  185. br.Msg = "文件上传失败"
  186. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  187. return
  188. }
  189. base := path.Base(h.Filename)
  190. resp := new(response.ReportPdfUploadResp)
  191. resp.Url = pdfUrl
  192. resp.FileName = base
  193. br.Data = resp
  194. br.Msg = "上传成功"
  195. br.Ret = 200
  196. br.Success = true
  197. }
  198. // List
  199. // @Title pdf研报列表
  200. // @Description pdf研报列表
  201. // @Param PageSize query int true "每页数据条数"
  202. // @Param CurrentIndex query int true "当前页页码,从1开始"
  203. // @Param ClassifyIds query string true "二级分类id,可多选用英文,隔开"
  204. // @Param State query int true "研报状态, 1:已发布 2:未发布"
  205. // @Param PublishStartDate query string true "发布开始时间"
  206. // @Param PublishEndDate query string true "发布结束时间"
  207. // @Param ModifyStartDate query string true "更新开始时间"
  208. // @Param ModifyEndDate query string true "更新结束时间"
  209. // @Param KeyWord query string true "报告标题/创建人"
  210. // @Param SortParam query string true "排序字段"
  211. // @Param SortType query string true "排序方式"
  212. // @Success 200 {object} models.ReportAuthorResp
  213. // @router /list [get]
  214. func (this *ReportPdfController) List() {
  215. br := new(models.BaseResponse).Init()
  216. defer func() {
  217. this.Data["json"] = br
  218. this.ServeJSON()
  219. }()
  220. pageSize, _ := this.GetInt("PageSize")
  221. currentIndex, _ := this.GetInt("CurrentIndex")
  222. classifyIds := this.GetString("ClassifyIds")
  223. state, _ := this.GetInt("State")
  224. publishStartDate := this.GetString("PublishStartDate")
  225. publishEndDate := this.GetString("PublishEndDate")
  226. modifyStartDate := this.GetString("ModifyStartDate")
  227. modifyEndDate := this.GetString("ModifyEndDate")
  228. keyWord := this.GetString("KeyWord")
  229. sortParam := this.GetString("SortParam")
  230. sortType := this.GetString("SortType")
  231. var condition string
  232. var pars []interface{}
  233. if pageSize <= 0 {
  234. pageSize = utils.PageSize20
  235. }
  236. if currentIndex <= 0 {
  237. currentIndex = 1
  238. }
  239. if classifyIds != "" {
  240. classifyArr := strings.Split(classifyIds, ",")
  241. condition += " AND classify_id_second in (" + utils.GetOrmReplaceHolder(len(classifyArr)) + ")"
  242. pars = append(pars, classifyArr)
  243. }
  244. switch state {
  245. case utils.ReportStatusUp:
  246. condition += " AND state = ?"
  247. pars = append(pars, state)
  248. case utils.ReportStatusDown:
  249. condition += " AND state = ?"
  250. pars = append(pars, state)
  251. }
  252. if publishStartDate != "" && publishEndDate != "" {
  253. condition += " AND publish_time >= ?"
  254. publishStartTime, err := time.Parse(utils.FormatDate, publishStartDate)
  255. if err != nil {
  256. br.Msg = "日期格式有误"
  257. br.ErrMsg = "日期格式有误,Err:" + err.Error()
  258. return
  259. }
  260. publishStartDateStr := publishStartTime.Format(utils.FormatDateTime)
  261. pars = append(pars, publishStartDateStr)
  262. condition += " AND publish_time <= ?"
  263. publishEndTime, err := time.Parse(utils.FormatDate, publishEndDate)
  264. if err != nil {
  265. br.Msg = "日期格式有误"
  266. br.ErrMsg = "日期格式有误,Err:" + err.Error()
  267. return
  268. }
  269. publishEndTime = publishEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
  270. publishEndDateStr := publishEndTime.Format(utils.FormatDateTime)
  271. pars = append(pars, publishEndDateStr)
  272. }
  273. if modifyStartDate != "" && modifyEndDate != "" {
  274. condition += " AND modify_time >= ?"
  275. modifyStartTime, err := time.Parse(utils.FormatDate, modifyStartDate)
  276. if err != nil {
  277. br.Msg = "日期格式有误"
  278. br.ErrMsg = "日期格式有误,Err:" + err.Error()
  279. return
  280. }
  281. modifyStartDateStr := modifyStartTime.Format(utils.FormatDateTime)
  282. pars = append(pars, modifyStartDateStr)
  283. condition += " AND modify_time <= ?"
  284. modifyEndTime, err := time.Parse(utils.FormatDate, modifyEndDate)
  285. if err != nil {
  286. br.Msg = "日期格式有误"
  287. br.ErrMsg = "日期格式有误,Err:" + err.Error()
  288. return
  289. }
  290. modifyEndTime = modifyEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
  291. modifyEndDateStr := modifyEndTime.Format(utils.FormatDateTime)
  292. pars = append(pars, modifyEndDateStr)
  293. }
  294. if keyWord != "" {
  295. condition += ` AND (title like ? OR sys_real_name like ?) `
  296. pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
  297. }
  298. var sortCondition string
  299. if sortParam != "" && sortType != "" {
  300. sortCondition = " ORDER BY "
  301. var param, sort string
  302. switch sortParam {
  303. case "PublishTime":
  304. param = "publish_time"
  305. case "ModifyTime":
  306. param = "modify_time"
  307. }
  308. switch sortType {
  309. case "asc":
  310. sort = " ASC "
  311. case "desc":
  312. sort = " DESC "
  313. }
  314. if param != "" && sort != "" {
  315. sortCondition += param + " " + sort
  316. } else {
  317. sortCondition = ""
  318. }
  319. }
  320. if sortCondition == "" {
  321. sortCondition = ` ORDER BY modify_time DESC `
  322. }
  323. total, err := models.GetReportPdfCountByCondition(condition, pars)
  324. if err != nil {
  325. br.Msg = "获取研报列表失败"
  326. br.ErrMsg = "获取研报列表统计失败,Err:" + err.Error()
  327. return
  328. }
  329. startSize := utils.StartIndex(currentIndex, pageSize)
  330. reportList, err := models.GetReportPdfByCondition(condition, sortCondition, pars, startSize, pageSize)
  331. if err != nil {
  332. br.Msg = "获取研报列表失败"
  333. br.ErrMsg = "获取研报列表失败,Err:" + err.Error()
  334. return
  335. }
  336. page := paging.GetPaging(currentIndex, pageSize, total)
  337. resp := new(response.ReportPdfListResp)
  338. resp.List = reportList
  339. resp.Paging = page
  340. br.Ret = 200
  341. br.Success = true
  342. br.Data = resp
  343. br.Msg = "获取成功"
  344. }
  345. // Edit
  346. // @Title 编辑研报
  347. // @Description 编辑研报
  348. // @Param request body request.ReportPdfEditReq true "type json string"
  349. // @Success 200 {object} models.ReportAuthorResp
  350. // @router /edit [post]
  351. func (this *ReportPdfController) Edit() {
  352. br := new(models.BaseResponse).Init()
  353. defer func() {
  354. this.Data["json"] = br
  355. this.ServeJSON()
  356. }()
  357. var req request.ReportPdfEditReq
  358. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  359. br.Msg = "参数错误"
  360. br.ErrMsg = "参数错误,Err:" + err.Error()
  361. return
  362. }
  363. if req.ClassifyIdFirst <= 0 {
  364. br.Msg = "请选择研报所属的一级分类"
  365. return
  366. }
  367. if req.ClassifyIdSecond <= 0 {
  368. br.Msg = "请选择研报所属的二级分类"
  369. return
  370. }
  371. if req.PdfUrl == "" {
  372. br.Msg = "请上传研报文件"
  373. return
  374. }
  375. if req.PdfName == "" {
  376. br.Msg = "请填写研报名称"
  377. return
  378. }
  379. reportPdf, err := models.GetReportPdfById(req.ReportPdfId)
  380. if err != nil {
  381. if err.Error() == utils.ErrNoRow() {
  382. br.Msg = "研报不存在或已删除,请刷新页面"
  383. return
  384. }
  385. br.Msg = "获取研报失败"
  386. br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
  387. return
  388. }
  389. nameFirst, err := models.GetClassifyById(req.ClassifyIdFirst)
  390. if err != nil {
  391. br.Msg = "文件编辑失败"
  392. br.ErrMsg = "一级类名获取失败,Err:" + err.Error()
  393. return
  394. }
  395. nameSecond, err := models.GetClassifyById(req.ClassifyIdSecond)
  396. if err != nil {
  397. br.Msg = "文件编辑失败"
  398. br.ErrMsg = "二级类名获取失败,Err:" + err.Error()
  399. return
  400. }
  401. if reportPdf.PdfName != req.PdfName || reportPdf.Title != req.Title || reportPdf.ClassifyIdFirst != req.ClassifyIdFirst || reportPdf.ClassifyIdSecond != req.ClassifyIdSecond || reportPdf.Author != req.Author || reportPdf.Abstract != req.Abstract || reportPdf.PdfUrl != req.PdfUrl {
  402. reportPdf.Title = req.Title
  403. reportPdf.PdfName = req.PdfName
  404. reportPdf.ClassifyIdFirst = req.ClassifyIdFirst
  405. reportPdf.ClassifyIdSecond = req.ClassifyIdSecond
  406. reportPdf.ClassifyNameFirst = nameFirst.ClassifyName
  407. reportPdf.ClassifyNameSecond = nameSecond.ClassifyName
  408. reportPdf.Author = req.Author
  409. reportPdf.Abstract = req.Abstract
  410. reportPdf.PdfUrl = req.PdfUrl
  411. reportPdf.ModifyTime = time.Now()
  412. err = reportPdf.Update([]string{"pdf_name", "title", "classify_id_first", "classify_id_second", "classify_name_first", "classify_name_second", "author", "abstract", "pdf_url", "modify_time"})
  413. if err != nil {
  414. br.Msg = "文件更新失败"
  415. br.ErrMsg = "文件更新失败,Err:" + err.Error()
  416. return
  417. }
  418. // 编辑es
  419. go func(reportPdf *models.ReportPdf) {
  420. reportpdfView := reportPdf.ToView()
  421. docId := strconv.Itoa(reportpdfView.ReportPdfId)
  422. err = elastic.EsAddOrEditReportPdf(utils.MINI_REPORT_INDEX_NAME, docId, reportpdfView)
  423. if err != nil {
  424. utils.FileLog.Info("pdf研报es编辑失败,Err:" + err.Error())
  425. return
  426. }
  427. utils.FileLog.Info("pdf研报es编辑成功, pdfId:" + docId)
  428. }(reportPdf)
  429. }
  430. br.Msg = "研报编辑成功"
  431. br.Ret = 200
  432. br.Success = true
  433. }
  434. // Publish
  435. // @Title 发布研报
  436. // @Description 发布研报
  437. // @Param ReportPdfId query string true "pdf研报id"
  438. // @Success 200 {object} models.BaseResponse
  439. // @router /publish [get]
  440. func (this *ReportPdfController) Publish() {
  441. br := new(models.BaseResponse).Init()
  442. defer func() {
  443. this.Data["json"] = br
  444. this.ServeJSON()
  445. }()
  446. ReportPdfId, _ := this.GetInt("ReportPdfId")
  447. reportPdf, err := models.GetReportPdfById(ReportPdfId)
  448. if err != nil {
  449. if err.Error() == utils.ErrNoRow() {
  450. br.Msg = "研报不存在或已删除,请刷新页面"
  451. return
  452. }
  453. br.Msg = "获取研报失败"
  454. br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
  455. return
  456. }
  457. if reportPdf.State == utils.ReportStatusUp {
  458. br.Msg = "研报已发布"
  459. return
  460. }
  461. reportPdf.State = utils.ReportStatusUp
  462. reportPdf.PublishTime = time.Now()
  463. err = reportPdf.Update([]string{"state", "publish_time"})
  464. if err != nil {
  465. br.Msg = "发布研报失败"
  466. br.ErrMsg = "发布研报失败,系统错误,Err:" + err.Error()
  467. return
  468. }
  469. // 修改es
  470. go func(reportPdf *models.ReportPdf) {
  471. reportpdfView := reportPdf.ToView()
  472. docId := strconv.Itoa(reportpdfView.ReportPdfId)
  473. err = elastic.EsAddOrEditReportPdf(utils.MINI_REPORT_INDEX_NAME, docId, reportpdfView)
  474. if err != nil {
  475. utils.FileLog.Info("pdf研报es发布失败,Err:" + err.Error())
  476. return
  477. }
  478. utils.FileLog.Info("pdf研报es发布成功, pdfId:" + docId)
  479. }(reportPdf)
  480. br.Msg = "发布研报成功"
  481. br.Ret = 200
  482. br.Success = true
  483. }
  484. // PublishCancel
  485. // @Title 取消发布研报
  486. // @Description 取消发布研报
  487. // @Param ReportPdfId query string true "pdf研报id"
  488. // @Success 200 {object} models.BaseResponse
  489. // @router /publishCancel [get]
  490. func (this *ReportPdfController) PublishCancel() {
  491. br := new(models.BaseResponse).Init()
  492. defer func() {
  493. this.Data["json"] = br
  494. this.ServeJSON()
  495. }()
  496. ReportPdfId, _ := this.GetInt("ReportPdfId")
  497. reportPdf, err := models.GetReportPdfById(ReportPdfId)
  498. if err != nil {
  499. if err.Error() == utils.ErrNoRow() {
  500. br.Msg = "研报不存在或已删除,请刷新页面"
  501. return
  502. }
  503. br.Msg = "获取研报失败"
  504. br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
  505. return
  506. }
  507. if reportPdf.State == utils.ReportStatusDown {
  508. br.Msg = "研报已撤销"
  509. return
  510. }
  511. reportPdf.State = utils.ReportStatusDown
  512. err = reportPdf.Update([]string{"state"})
  513. if err != nil {
  514. br.Msg = "发布研报失败"
  515. br.ErrMsg = "发布研报失败,系统错误,Err:" + err.Error()
  516. return
  517. }
  518. // 修改es
  519. go func(reportPdf *models.ReportPdf) {
  520. reportpdfView := reportPdf.ToView()
  521. docId := strconv.Itoa(reportpdfView.ReportPdfId)
  522. err = elastic.EsAddOrEditReportPdf(utils.MINI_REPORT_INDEX_NAME, docId, reportpdfView)
  523. if err != nil {
  524. utils.FileLog.Info("pdf研报es取消发布失败,Err:" + err.Error())
  525. return
  526. }
  527. utils.FileLog.Info("pdf研报es取消发布成功, pdfId:" + docId)
  528. }(reportPdf)
  529. br.Msg = "撤销研报成功"
  530. br.Ret = 200
  531. br.Success = true
  532. }
  533. // delete
  534. // @Title 删除研报
  535. // @Description 删除研报
  536. // @Param ReportPdfId query string true "pdf研报id"
  537. // @Success 200 {object} models.BaseResponse
  538. // @router /delete [get]
  539. func (this *ReportPdfController) Delete() {
  540. br := new(models.BaseResponse).Init()
  541. defer func() {
  542. this.Data["json"] = br
  543. this.ServeJSON()
  544. }()
  545. ReportPdfId, _ := this.GetInt("ReportPdfId")
  546. reportPdf, err := models.GetReportPdfById(ReportPdfId)
  547. if err != nil {
  548. if err.Error() == utils.ErrNoRow() {
  549. br.Msg = "研报不存在或已删除,请刷新页面"
  550. return
  551. }
  552. br.Msg = "获取研报失败"
  553. br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
  554. return
  555. }
  556. if reportPdf.State == utils.ReportStatusUp {
  557. br.Msg = "研报已发布,不可以删除"
  558. return
  559. }
  560. reportPdf.State = utils.ReportStatusDown
  561. err = reportPdf.Delete()
  562. if err != nil {
  563. br.Msg = "研报删除失败"
  564. br.ErrMsg = "研报删除失败,系统错误,Err:" + err.Error()
  565. return
  566. }
  567. // 删除es
  568. go func(reportPdf *models.ReportPdf) {
  569. reportpdfView := reportPdf.ToView()
  570. docId := strconv.Itoa(reportpdfView.ReportPdfId)
  571. err = elastic.EsDeleteData(utils.MINI_REPORT_INDEX_NAME, docId)
  572. if err != nil {
  573. utils.FileLog.Info("pdf研报es删除失败,Err:" + err.Error())
  574. return
  575. }
  576. utils.FileLog.Info("pdf研报es删除成功, pdfId:" + docId)
  577. }(reportPdf)
  578. br.Msg = "删除研报成功"
  579. br.Ret = 200
  580. br.Success = true
  581. }
  582. // Detail
  583. // @Title 研报详情
  584. // @Description 研报详情
  585. // @Param ReportPdfId query string true "pdf研报id"
  586. // @Success 200 {object} models.BaseResponse
  587. // @router /detail [get]
  588. func (this *ReportPdfController) Detail() {
  589. br := new(models.BaseResponse).Init()
  590. defer func() {
  591. this.Data["json"] = br
  592. this.ServeJSON()
  593. }()
  594. ReportPdfId, _ := this.GetInt("ReportPdfId")
  595. reportPdf, err := models.GetReportPdfById(ReportPdfId)
  596. if err != nil {
  597. if err.Error() == utils.ErrNoRow() {
  598. br.Msg = "研报不存在或已删除,请刷新页面"
  599. return
  600. }
  601. br.Msg = "获取研报失败"
  602. br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
  603. return
  604. }
  605. br.Data = reportPdf
  606. br.Ret = 200
  607. br.Success = true
  608. br.Msg = "获取研报成功"
  609. }