report_approval.go 6.6 KB

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