article.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "hongze/hongze_cygx/models"
  5. "hongze/hongze_cygx/utils"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. type ArticleController struct {
  11. BaseAuthController
  12. }
  13. // @Title 获取报告详情
  14. // @Description 获取报告详情接口
  15. // @Param ArticleId query int true "报告ID"
  16. // @Success 200 {object} models.ArticleDetailResp
  17. // @router /detail [get]
  18. func (this *ArticleController) Detail() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. this.Data["json"] = br
  22. this.ServeJSON()
  23. }()
  24. user := this.User
  25. if user == nil {
  26. br.Msg = "请登录"
  27. br.ErrMsg = "请登录,用户信息为空"
  28. br.Ret = 408
  29. return
  30. }
  31. uid := user.UserId
  32. articleId, _ := this.GetInt("ArticleId")
  33. if articleId <= 0 {
  34. br.Msg = "参数错误"
  35. br.ErrMsg = "参数错误"
  36. return
  37. }
  38. detail, err := models.GetArticleDetailById(articleId)
  39. if err != nil {
  40. br.Msg = "获取信息失败"
  41. br.ErrMsg = "获取信息失败"
  42. return
  43. }
  44. collectCount, err := models.GetArticleCollectCount(uid, articleId)
  45. if err != nil && err.Error() != utils.ErrNoRow() {
  46. br.Msg = "获取信息失败"
  47. br.ErrMsg = "判断是否已收藏失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
  48. return
  49. }
  50. if collectCount > 0 {
  51. detail.IsCollect = true
  52. }
  53. interviewApplyItem, err := models.GetArticleInterviewApply(uid, articleId)
  54. if err != nil && err.Error() != utils.ErrNoRow() {
  55. br.Msg = "获取信息失败"
  56. br.ErrMsg = "判断是否已申请访谈失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
  57. return
  58. }
  59. if interviewApplyItem != nil && interviewApplyItem.InterviewApplyId > 0 {
  60. detail.IsInterviewApply = true
  61. detail.InterviewApplyStatus = interviewApplyItem.Status
  62. }
  63. hasPermission := 2
  64. articlePermission, err := models.GetArticlePermission(detail.SubCategoryName)
  65. if err != nil {
  66. br.Msg = "获取信息失败"
  67. br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
  68. return
  69. }
  70. if articlePermission == nil {
  71. br.Msg = "获取信息失败"
  72. br.ErrMsg = "报告权限不存在,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
  73. return
  74. }
  75. //GetCompanyPermission
  76. companyPermission, err := models.GetCompanyPermission(user.CompanyId)
  77. if err != nil {
  78. br.Msg = "获取信息失败"
  79. br.ErrMsg = "判断是否已申请访谈失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
  80. return
  81. }
  82. if strings.Contains(companyPermission, articlePermission.PermissionName) {
  83. hasPermission = 1
  84. }
  85. if hasPermission == 1 {
  86. //新增浏览记录
  87. record := new(models.CygxArticleViewRecord)
  88. record.UserId = uid
  89. record.ArticleId = articleId
  90. record.CreateTime = time.Now()
  91. record.Mobile = user.Mobile
  92. record.Email = user.Email
  93. record.CompanyId = user.CompanyId
  94. record.CompanyName = user.CompanyName
  95. go models.AddCygxArticleViewRecord(record)
  96. } else {
  97. detail.Body = ""
  98. }
  99. resp := new(models.ArticleDetailResp)
  100. resp.HasPermission = hasPermission
  101. resp.Detail = detail
  102. br.Ret = 200
  103. br.Success = true
  104. br.Msg = "获取成功"
  105. br.Data = resp
  106. }
  107. // @Title 收藏
  108. // @Description 收藏
  109. // @Param request body models.ArticleCollectReq true "type json string"
  110. // @Success 200 {object} models.FontsCollectResp
  111. // @router /collect [post]
  112. func (this *ArticleController) ArticleCollect() {
  113. br := new(models.BaseResponse).Init()
  114. defer func() {
  115. this.Data["json"] = br
  116. this.ServeJSON()
  117. }()
  118. user := this.User
  119. if user == nil {
  120. br.Msg = "请重新登录"
  121. br.Ret = 408
  122. return
  123. }
  124. uid := user.UserId
  125. var req models.ArticleCollectReq
  126. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  127. if err != nil {
  128. br.Msg = "参数解析异常!"
  129. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  130. return
  131. }
  132. count, err := models.GetArticleCollectCount(uid, req.ArticleId)
  133. if err != nil {
  134. br.Msg = "获取数据失败!"
  135. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  136. return
  137. }
  138. resp := new(models.ArticleCollectResp)
  139. if count <= 0 {
  140. item := new(models.CygxArticleCollect)
  141. item.ArticleId = req.ArticleId
  142. item.UserId = uid
  143. item.CreateTime = time.Now()
  144. _, err = models.AddCygxArticleCollect(item)
  145. if err != nil {
  146. br.Msg = "收藏失败"
  147. br.ErrMsg = "收藏失败,Err:" + err.Error()
  148. return
  149. }
  150. br.Msg = "收藏成功"
  151. resp.Status = 1
  152. } else {
  153. err = models.RemoveArticleCollect(uid, req.ArticleId)
  154. if err != nil {
  155. br.Msg = "取消收藏失败"
  156. br.ErrMsg = "取消收藏失败,Err:" + err.Error()
  157. return
  158. }
  159. br.Msg = "已取消收藏"
  160. resp.Status = 2
  161. }
  162. collectTotal, err := models.GetArticleCollectUsersCount(req.ArticleId)
  163. if err != nil {
  164. br.Msg = "获取数据失败"
  165. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  166. return
  167. }
  168. resp.CollectCount = collectTotal
  169. br.Ret = 200
  170. br.Success = true
  171. br.Data = resp
  172. }
  173. // @Title 访谈申请
  174. // @Description 访谈申请
  175. // @Param request body models.ArticleInterviewApplyReq true "type json string"
  176. // @Success 200 {object} models.FontsCollectResp
  177. // @router /interview/apply [post]
  178. func (this *ArticleController) InterviewApply() {
  179. br := new(models.BaseResponse).Init()
  180. defer func() {
  181. this.Data["json"] = br
  182. this.ServeJSON()
  183. }()
  184. user := this.User
  185. if user == nil {
  186. br.Msg = "请重新登录"
  187. br.Ret = 408
  188. return
  189. }
  190. uid := user.UserId
  191. var req models.ArticleInterviewApplyReq
  192. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  193. if err != nil {
  194. br.Msg = "参数解析异常!"
  195. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  196. return
  197. }
  198. article, err := models.GetArticleDetailById(req.ArticleId)
  199. if err != nil {
  200. br.Msg = "获取纪要失败!"
  201. br.ErrMsg = "获取纪要失败,Err:" + err.Error()
  202. return
  203. }
  204. count, err := models.GetArticleInterviewApplyCount(uid, req.ArticleId)
  205. if err != nil {
  206. br.Msg = "获取数据失败!"
  207. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  208. return
  209. }
  210. resp := new(models.ArticleInterviewApplyResp)
  211. if count <= 0 {
  212. item := new(models.CygxInterviewApply)
  213. item.ArticleId = req.ArticleId
  214. item.UserId = uid
  215. item.CompanyId = this.User.CompanyId
  216. item.Status = "待邀请"
  217. item.Sort = 1
  218. item.ArticleTitle = article.Title
  219. item.InterviewTime = time.Now()
  220. item.CreateTime = time.Now()
  221. item.ModifyTime = time.Now()
  222. _, err = models.AddCygxInterviewApply(item)
  223. if err != nil {
  224. br.Msg = "申请失败"
  225. br.ErrMsg = "申请失败,Err:" + err.Error()
  226. return
  227. }
  228. br.Msg = "申请成功"
  229. resp.Status = 1
  230. } else {
  231. err = models.RemoveArticleInterviewApply(uid, req.ArticleId)
  232. if err != nil {
  233. br.Msg = "取消申请失败"
  234. br.ErrMsg = "取消申请失败,Err:" + err.Error()
  235. return
  236. }
  237. br.Msg = "已取消申请"
  238. resp.Status = 2
  239. }
  240. br.Ret = 200
  241. br.Success = true
  242. br.Data = resp
  243. }