report_approval.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_hub/models"
  5. "eta/eta_hub/services"
  6. "eta/eta_hub/utils"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. "html"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. // ReportController 报告
  14. type ReportController struct {
  15. BaseAuthController
  16. }
  17. // ListReport
  18. // @Title 获取报告列表接口
  19. // @Description 获取报告列表
  20. // @Param PageSize query int true "每页数据条数"
  21. // @Param CurrentIndex query int true "当前页页码,从1开始"
  22. // @Param TimeType query string true "筛选的时间类别:publish_time(发布时间),modify_time(更新时间)"
  23. // @Param StartDate query string true "开始时间"
  24. // @Param EndDate query string true "结束时间"
  25. // @Param Frequency query string true "频度"
  26. // @Param ClassifyNameFirst query string true "一级分类名称"
  27. // @Param ClassifyNameSecond query string true "二级分类名称"
  28. // @Param State query int true "状态"
  29. // @Param KeyWord query string true "搜索关键词"
  30. // @Param PublishSort query string true "desc:降序,asc 升序(预留)"
  31. // @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
  32. // @Success 200 {object} models.ReportListResp
  33. // @router /list [get]
  34. func (this *ReportController) ListReport() {
  35. br := new(models.BaseResponse).Init()
  36. defer func() {
  37. this.Data["json"] = br
  38. this.ServeJSON()
  39. }()
  40. pageSize, _ := this.GetInt("PageSize")
  41. currentIndex, _ := this.GetInt("CurrentIndex")
  42. //timeType := this.GetString("TimeType")
  43. //startDate := this.GetString("StartDate")
  44. //endDate := this.GetString("EndDate")
  45. //frequency := this.GetString("Frequency")
  46. //classifyNameFirst := this.GetString("ClassifyNameFirst")
  47. //classifyNameSecond := this.GetString("ClassifyNameSecond")
  48. //state, _ := this.GetInt("State")
  49. //keyWord := this.GetString("KeyWord")
  50. //companyType := this.GetString("CompanyType")
  51. var startSize int
  52. if pageSize <= 0 {
  53. pageSize = utils.PageSize20
  54. }
  55. if currentIndex <= 0 {
  56. currentIndex = 1
  57. }
  58. startSize = utils.StartIndex(currentIndex, pageSize)
  59. //if timeType == "" {
  60. // timeType = "publish_time"
  61. //}
  62. //if timeType != "publish_time" && timeType != "modify_time" {
  63. // br.Msg = "请选择正确的时间"
  64. // br.ErrMsg = "请选择正确的时间"
  65. // return
  66. //}
  67. var condition string
  68. var pars []interface{}
  69. //if keyWord != "" {
  70. // condition += ` AND (title LIKE ? OR admin_real_name LIKE ? ) `
  71. // pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
  72. //}
  73. //if startDate != "" {
  74. // condition += ` AND ` + timeType + ` >= ? `
  75. // pars = append(pars, startDate)
  76. //}
  77. //if endDate != "" {
  78. // condition += ` AND ` + timeType + ` <= ? `
  79. // pars = append(pars, endDate)
  80. //}
  81. //if frequency != "" {
  82. // condition += ` AND frequency = ? `
  83. // pars = append(pars, frequency)
  84. //}
  85. //if classifyNameFirst != "" {
  86. // condition += ` AND classify_name_first = ? `
  87. // pars = append(pars, classifyNameFirst)
  88. //}
  89. //
  90. //if classifyNameSecond != "" {
  91. // condition += ` AND classify_name_second = ? `
  92. // pars = append(pars, classifyNameSecond)
  93. //}
  94. //if state > 0 {
  95. // condition += ` AND state = ? `
  96. // pars = append(pars, state)
  97. //}
  98. condition += ` AND state <> 2 `
  99. total, err := models.GetReportListCount(condition, pars, "")
  100. if err != nil {
  101. br.Msg = "获取失败"
  102. br.ErrMsg = "获取失败,Err:" + err.Error()
  103. return
  104. }
  105. list, err := models.GetReportList(condition, pars, "", startSize, pageSize)
  106. if err != nil {
  107. br.Msg = "获取失败"
  108. br.ErrMsg = "获取失败,Err:" + err.Error()
  109. return
  110. }
  111. listLen := len(list)
  112. if listLen > 0 {
  113. for i := 0; i < listLen; i++ {
  114. list[i].Content = html.UnescapeString(list[i].Content)
  115. list[i].ContentSub = html.UnescapeString(list[i].ContentSub)
  116. }
  117. }
  118. page := paging.GetPaging(currentIndex, pageSize, total)
  119. resp := new(models.ReportListResp)
  120. resp.Paging = page
  121. resp.List = list
  122. br.Ret = 200
  123. br.Success = true
  124. br.Msg = "获取成功"
  125. br.Data = resp
  126. }
  127. // PublishReport
  128. // @Title 审核报告接口
  129. // @Description 发布报告
  130. // @Param request body models.PublishReq true "type json string"
  131. // @Success 200 Ret=200 发布成功
  132. // @router /publish [post]
  133. func (this *ReportController) PublishReport() {
  134. br := new(models.BaseResponse).Init()
  135. defer func() {
  136. this.Data["json"] = br
  137. this.ServeJSON()
  138. }()
  139. var req models.PublishReq
  140. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  141. if err != nil {
  142. br.Msg = "参数解析异常!"
  143. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  144. return
  145. }
  146. reportIds := req.ReportIds
  147. if reportIds == "" {
  148. br.Msg = "参数错误"
  149. br.ErrMsg = "参数错误,报告id不可为空"
  150. return
  151. }
  152. if req.State != 3 && req.State != 4 {
  153. br.Msg = "参数有误"
  154. return
  155. }
  156. reportArr := strings.Split(reportIds, ",")
  157. for _, v := range reportArr {
  158. vint, err := strconv.Atoi(v)
  159. if err != nil {
  160. br.Msg = "参数错误"
  161. br.ErrMsg = "参数错误,Err:" + err.Error()
  162. return
  163. }
  164. report, err := models.GetReportById(vint)
  165. if err != nil {
  166. br.Msg = "获取报告信息失败"
  167. br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
  168. return
  169. }
  170. if report == nil {
  171. br.Msg = "报告不存在"
  172. return
  173. }
  174. if report.State != 2 {
  175. br.Msg = "报告状态错误"
  176. br.ErrMsg = "报告状态非待审核状态,Err:" + err.Error()
  177. return
  178. }
  179. publishTime := time.Now()
  180. var tmpErr error
  181. if report.Content == "" {
  182. br.Msg = "报告内容为空"
  183. br.ErrMsg = "报告内容为空,report_id:" + strconv.Itoa(report.Id)
  184. return
  185. }
  186. if tmpErr = models.PublishReportById(report.Id, req.State, publishTime); tmpErr != nil {
  187. br.Msg = "报告审核失败"
  188. br.ErrMsg = "报告审核失败, Err:" + tmpErr.Error() + ", report_id:" + strconv.Itoa(report.Id)
  189. return
  190. }
  191. go func() {
  192. // 更新报告Es
  193. _ = services.UpdateReportEs(report.Id, req.State)
  194. }()
  195. }
  196. br.Ret = 200
  197. br.Success = true
  198. br.Msg = "审批成功"
  199. }
  200. // Detail
  201. // @Title 获取报告详情接口
  202. // @Description 获取报告详情
  203. // @Param request body models.ReportDetailReq true "type json string"
  204. // @Success 200 {object} models.Report
  205. // @router /detail [get]
  206. func (this *ReportController) Detail() {
  207. br := new(models.BaseResponse).Init()
  208. defer func() {
  209. this.Data["json"] = br
  210. this.ServeJSON()
  211. }()
  212. reportId, err := this.GetInt("ReportId")
  213. if err != nil {
  214. br.Msg = "获取参数失败!"
  215. br.ErrMsg = "获取参数失败,Err:" + err.Error()
  216. return
  217. }
  218. if reportId <= 0 {
  219. br.Msg = "参数错误"
  220. return
  221. }
  222. item, err := models.GetReportById(reportId)
  223. if err != nil {
  224. if err.Error() == utils.ErrNoRow() {
  225. br.Msg = "报告已被删除"
  226. return
  227. }
  228. br.Msg = "获取失败"
  229. br.ErrMsg = "获取失败,Err:" + err.Error()
  230. return
  231. }
  232. // 报告状态 2待审核 3已驳回 4已审批
  233. if !utils.InArrayByInt([]int{2,3,4}, item.State) {
  234. br.Msg = "报告状态错误"
  235. br.ErrMsg = "报告状态错误"
  236. return
  237. }
  238. item.Content = html.UnescapeString(item.Content)
  239. item.ContentSub = html.UnescapeString(item.ContentSub)
  240. br.Ret = 200
  241. br.Success = true
  242. br.Msg = "获取成功"
  243. br.Data = item
  244. }