doc.go 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. package help_doc
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hz_crm_api/controllers"
  6. "hongze/hz_crm_api/models"
  7. "hongze/hz_crm_api/models/help_doc"
  8. "hongze/hz_crm_api/utils"
  9. "html"
  10. "strconv"
  11. "time"
  12. )
  13. // HelpDocController 帮助文档
  14. type HelpDocController struct {
  15. controllers.BaseAuthController
  16. }
  17. // @Title 新增报告接口
  18. // @Description 新增报告
  19. // @Param request body help_doc.AddHelpDocReq true "type json string"
  20. // @Success 200 {object} models.AddEnglishReportResp
  21. // @router /add [post]
  22. func (this *HelpDocController) Add() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. this.Data["json"] = br
  26. this.ServeJSON()
  27. }()
  28. sysUser := this.SysUser
  29. if sysUser == nil {
  30. br.Msg = "请登录"
  31. br.ErrMsg = "请登录,SysUser Is Empty"
  32. br.Ret = 408
  33. return
  34. }
  35. var req help_doc.AddHelpDocReq
  36. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  37. if err != nil {
  38. br.Msg = "参数解析异常!"
  39. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  40. return
  41. }
  42. if req.Content == "" {
  43. br.Msg = "请输入内容"
  44. return
  45. }
  46. var anchor []byte
  47. if req.AnchorData != nil {
  48. anchor, err = json.Marshal(req.AnchorData)
  49. if err != nil {
  50. br.Msg = "参数解析异常!"
  51. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  52. return
  53. }
  54. }
  55. var recommend []byte
  56. if req.RecommendData != nil {
  57. recommend, err = json.Marshal(req.RecommendData)
  58. if err != nil {
  59. br.Msg = "参数解析异常!"
  60. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  61. return
  62. }
  63. }
  64. item := new(help_doc.HelpDoc)
  65. item.ClassifyId = req.ClassifyId
  66. item.Title = req.Title
  67. item.Author = req.Author
  68. item.Status = req.Status
  69. item.Content = html.EscapeString(req.Content)
  70. item.CreateTime = time.Now()
  71. item.ModifyTime = time.Now()
  72. item.AdminId = sysUser.AdminId
  73. item.AdminRealName = sysUser.RealName
  74. item.Anchor = string(anchor)
  75. item.Recommend = string(recommend)
  76. if req.Status == 2 {
  77. item.PublishTime = time.Now()
  78. }
  79. if item.Id == 0 {
  80. _, err = help_doc.AddHelpDoc(item)
  81. if err != nil {
  82. br.Msg = "新增失败"
  83. br.ErrMsg = "保存失败,Err:" + err.Error()
  84. return
  85. }
  86. } else {
  87. err = help_doc.EditHelpDoc(item, int64(item.Id))
  88. if err != nil {
  89. br.Msg = "保存失败"
  90. br.ErrMsg = "保存失败,Err:" + err.Error()
  91. return
  92. }
  93. }
  94. if req.Status == 1 {
  95. br.Msg = "保存成功"
  96. } else {
  97. br.Msg = "发布成功"
  98. }
  99. br.Ret = 200
  100. br.Success = true
  101. }
  102. // @Title 获取报告详情接口
  103. // @Description 获取报告详情
  104. // @Param request body models.ReportDetailReq true "type json string"
  105. // @Success 200 {object} models.EnglishReportDetailView
  106. // @router /detail [get]
  107. func (this *HelpDocController) Detail() {
  108. br := new(models.BaseResponse).Init()
  109. defer func() {
  110. this.Data["json"] = br
  111. this.ServeJSON()
  112. }()
  113. docId, err := this.GetInt("DocId")
  114. if err != nil {
  115. br.Msg = "获取参数失败!"
  116. br.ErrMsg = "获取参数失败,Err:" + err.Error()
  117. return
  118. }
  119. if docId <= 0 {
  120. br.Msg = "参数错误"
  121. return
  122. }
  123. item, err := help_doc.GetHelpDocById(docId)
  124. if err != nil {
  125. br.Msg = "获取失败"
  126. br.ErrMsg = "获取失败,Err:" + err.Error()
  127. return
  128. }
  129. item.Content = html.UnescapeString(item.Content)
  130. var anchor []help_doc.AnchorList
  131. if item.Anchor != "" {
  132. err = json.Unmarshal([]byte(item.Anchor), &anchor)
  133. if err != nil {
  134. br.Msg = "解析失败"
  135. br.ErrMsg = "解析失败,Err:" + err.Error()
  136. return
  137. }
  138. }
  139. var recommend []help_doc.RecommendList
  140. if item.Recommend != "" {
  141. err = json.Unmarshal([]byte(item.Recommend), &anchor)
  142. if err != nil {
  143. br.Msg = "解析失败"
  144. br.ErrMsg = "解析失败,Err:" + err.Error()
  145. return
  146. }
  147. }
  148. resp := help_doc.HelpDocResp{
  149. Id: item.Id,
  150. ClassifyId: item.ClassifyId,
  151. Title: item.Title,
  152. Author: item.Author,
  153. CreateTime: item.CreateTime,
  154. ModifyTime: item.ModifyTime,
  155. Status: item.Status,
  156. PublishTime: item.PublishTime,
  157. Content: item.Content,
  158. AdminId: item.AdminId,
  159. AdminRealName: item.AdminRealName,
  160. Anchor: anchor,
  161. Recommend: recommend,
  162. }
  163. br.Ret = 200
  164. br.Success = true
  165. br.Msg = "获取成功"
  166. br.Data = resp
  167. }
  168. // @Title 获取报告列表接口
  169. // @Description 获取报告列表
  170. // @Param PageSize query int true "每页数据条数"
  171. // @Param CurrentIndex query int true "当前页页码,从1开始"
  172. // @Param KeyWord query string true "搜索关键词"
  173. // @Success 200 {object} models.ReportListResp
  174. // @router /list [get]
  175. func (this *HelpDocController) ListReport() {
  176. br := new(models.BaseResponse).Init()
  177. defer func() {
  178. this.Data["json"] = br
  179. this.ServeJSON()
  180. }()
  181. sysUser := this.SysUser
  182. if sysUser == nil {
  183. br.Msg = "请登录"
  184. br.ErrMsg = "请登录,SysUser Is Empty"
  185. br.Ret = 408
  186. return
  187. }
  188. pageSize, _ := this.GetInt("PageSize")
  189. currentIndex, _ := this.GetInt("CurrentIndex")
  190. classifyId := this.GetString("ClassifyId")
  191. keyWord := this.GetString("KeyWord")
  192. var startSize int
  193. if pageSize <= 0 {
  194. pageSize = utils.PageSize20
  195. }
  196. if currentIndex <= 0 {
  197. currentIndex = 1
  198. }
  199. startSize = utils.StartIndex(currentIndex, pageSize)
  200. var condition string
  201. var pars []interface{}
  202. if keyWord != "" {
  203. condition += ` AND title LIKE '%` + keyWord + `%' `
  204. }
  205. if classifyId != "" {
  206. condition += ` AND classify_id= ? `
  207. pars = append(pars, classifyId)
  208. }
  209. total, err := help_doc.GetHelpDocListCount(condition, pars)
  210. if err != nil {
  211. br.Msg = "获取失败"
  212. br.ErrMsg = "获取失败,Err:" + err.Error()
  213. return
  214. }
  215. list, err := help_doc.GetHelpDocList(condition, pars, startSize, pageSize)
  216. if err != nil {
  217. br.Msg = "获取失败"
  218. br.ErrMsg = "获取失败,Err:" + err.Error()
  219. return
  220. }
  221. resp := new(help_doc.HelpDocListResp)
  222. for _, item := range list {
  223. var anchor []help_doc.AnchorList
  224. if item.Anchor != "" {
  225. err = json.Unmarshal([]byte(item.Anchor), &anchor)
  226. if err != nil {
  227. br.Msg = "解析失败"
  228. br.ErrMsg = "解析失败,Err:" + err.Error()
  229. return
  230. }
  231. }
  232. var recommend []help_doc.RecommendList
  233. if item.Recommend != "" {
  234. err = json.Unmarshal([]byte(item.Recommend), &anchor)
  235. if err != nil {
  236. br.Msg = "解析失败"
  237. br.ErrMsg = "解析失败,Err:" + err.Error()
  238. return
  239. }
  240. }
  241. respItem := help_doc.HelpDocResp{
  242. Id: item.Id,
  243. ClassifyId: item.ClassifyId,
  244. Title: item.Title,
  245. Author: item.Author,
  246. CreateTime: item.CreateTime,
  247. ModifyTime: item.ModifyTime,
  248. Status: item.Status,
  249. PublishTime: item.PublishTime,
  250. Content: item.Content,
  251. AdminId: item.AdminId,
  252. AdminRealName: item.AdminRealName,
  253. Anchor: anchor,
  254. Recommend: recommend,
  255. }
  256. resp.List = append(resp.List, &respItem)
  257. }
  258. page := paging.GetPaging(currentIndex, pageSize, total)
  259. resp.Paging = page
  260. br.Ret = 200
  261. br.Success = true
  262. br.Msg = "获取成功"
  263. br.Data = resp
  264. }
  265. // @Title 发布报告接口
  266. // @Description 发布报告
  267. // @Param request body models.PublishReq true "type json string"
  268. // @Success 200 Ret=200 发布成功
  269. // @router /publish [post]
  270. func (this *HelpDocController) PublishReport() {
  271. br := new(models.BaseResponse).Init()
  272. defer func() {
  273. this.Data["json"] = br
  274. this.ServeJSON()
  275. }()
  276. var req help_doc.PublishReq
  277. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  278. if err != nil {
  279. br.Msg = "参数解析异常!"
  280. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  281. return
  282. }
  283. docId := req.DocId
  284. if docId <= 0 {
  285. br.Msg = "参数错误"
  286. br.ErrMsg = "参数错误,报告id不可为空"
  287. return
  288. }
  289. doc, err := help_doc.GetHelpDocById(docId)
  290. if err != nil {
  291. br.Msg = "获取报告信息失败"
  292. br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
  293. return
  294. }
  295. if doc == nil {
  296. br.Msg = "报告不存在"
  297. return
  298. }
  299. var tmpErr error
  300. if doc.Content == "" {
  301. br.Msg = "报告内容为空,不可发布"
  302. br.ErrMsg = "报告内容为空,不需要生成,report_id:" + strconv.Itoa(doc.Id)
  303. return
  304. }
  305. if tmpErr = help_doc.PublishHelpDocById(docId, req.Status); tmpErr != nil {
  306. br.Msg = "报告发布失败"
  307. br.ErrMsg = "报告发布失败, Err:" + tmpErr.Error() + ", doc_id:" + strconv.Itoa(docId)
  308. return
  309. }
  310. if req.Status == 1 {
  311. br.Msg = "取消发布成功"
  312. } else {
  313. br.Msg = "发布成功"
  314. }
  315. br.Ret = 200
  316. br.Success = true
  317. }
  318. // @Title 删除报告接口
  319. // @Description 删除报告
  320. // @Param request body models.DeleteReq true "type json string"
  321. // @Success 200 Ret=200 删除成功
  322. // @router /delete [post]
  323. func (this *HelpDocController) Delete() {
  324. br := new(models.BaseResponse).Init()
  325. defer func() {
  326. this.Data["json"] = br
  327. this.ServeJSON()
  328. }()
  329. var req help_doc.DeleteReq
  330. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  331. if err != nil {
  332. br.Msg = "参数解析异常!"
  333. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  334. return
  335. }
  336. if req.DocId <= 0 {
  337. br.Msg = "参数错误"
  338. br.ErrMsg = "参数错误,报告id不可为空"
  339. return
  340. }
  341. _, err = help_doc.GetHelpDocById(req.DocId)
  342. if err != nil {
  343. if err.Error() == utils.ErrNoRow() {
  344. br.Msg = "报告不存在"
  345. return
  346. }
  347. br.Msg = "查询报告信息失败"
  348. br.ErrMsg = "查询报告信息失败, Err" + err.Error()
  349. return
  350. }
  351. err = help_doc.DeleteHelpDoc(req.DocId)
  352. if err != nil {
  353. br.Msg = "删除报告失败"
  354. br.ErrMsg = "删除报告失败, Err" + err.Error()
  355. return
  356. }
  357. br.Ret = 200
  358. br.Success = true
  359. br.Msg = "删除成功"
  360. }