htgj.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/services"
  7. "hongze/hongze_cygx/utils"
  8. "html"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. type HtgjController struct {
  14. BaseAuthController
  15. }
  16. type BaseHtgjController struct {
  17. BaseCommonController
  18. }
  19. // @Title 首页列表接口(海通国际)
  20. // @Description 首页列表接口(海通国际)
  21. // @Param PageSize query int true "每页数据条数"
  22. // @Param CurrentIndex query int true "当前页页码,从1开始"
  23. // @Param ChartPermissionId query int true "品类id,最新传0"
  24. // @Param CompanyCode query string false "机构编号"
  25. // @Param CompanyName query string false "机构名称"
  26. // @Param Email query string false "邮箱"
  27. // @Param Sign query string false "加密签名"
  28. // @Success 200 {object} models.HomeListResp
  29. // @router /home/listPublic [get]
  30. func (this *BaseCommonController) ListHomePublic() {
  31. br := new(models.BaseResponse).Init()
  32. defer func() {
  33. this.Data["json"] = br
  34. this.ServeJSON()
  35. }()
  36. companyCode := this.GetString("CompanyCode")
  37. companyName := this.GetString("CompanyName")
  38. email := this.GetString("Email")
  39. sign := this.GetString("Sign")
  40. var userType int
  41. var err error
  42. if companyCode != "" && companyName != "" && email != "" {
  43. errMsg, errHt, wxUser, _ := services.CheckHtgj(companyCode, companyName, email, sign)
  44. if errHt != nil {
  45. br.Msg = "获取"
  46. br.ErrMsg = "获取数据失败,Err:" + errHt.Error()
  47. return
  48. }
  49. if errMsg != "" {
  50. br.Msg = errMsg
  51. return
  52. }
  53. user := wxUser
  54. if user == nil {
  55. br.Msg = "请登录"
  56. br.ErrMsg = "请登录,用户信息为空"
  57. br.Ret = 408
  58. return
  59. }
  60. userType, _, err = services.GetUserType(user.CompanyId)
  61. if err != nil {
  62. br.Msg = "获取信息失败"
  63. br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
  64. return
  65. }
  66. }
  67. pageSize, _ := this.GetInt("PageSize")
  68. currentIndex, _ := this.GetInt("CurrentIndex")
  69. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  70. var startSize int
  71. if pageSize <= 0 {
  72. pageSize = utils.PageSize20
  73. }
  74. if currentIndex <= 0 {
  75. currentIndex = 1
  76. }
  77. startSize = paging.StartIndex(currentIndex, pageSize)
  78. var condition string
  79. var pars []interface{}
  80. var total int
  81. resp := new(models.HomeListResp)
  82. page := paging.GetPaging(currentIndex, pageSize, total)
  83. resp.HaveResearch = true
  84. condition += ` AND is_summary = 1 `
  85. if chartPermissionId > 0 {
  86. categoryId, err := models.GetCategoryId(chartPermissionId)
  87. if err != nil && err.Error() != utils.ErrNoRow() {
  88. br.Msg = "获取信息失败"
  89. br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error()
  90. return
  91. }
  92. categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
  93. if err != nil {
  94. br.Msg = "获取信息失败"
  95. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  96. return
  97. }
  98. if userType == 1 && strings.Contains(categoryinfo.PermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
  99. resp.HaveResearch = false
  100. resp.Paging = page
  101. br.Ret = 200
  102. br.Success = true
  103. br.Msg = "获取成功"
  104. br.Data = resp
  105. return
  106. }
  107. page = paging.GetPaging(currentIndex, pageSize, total)
  108. if categoryId != "" {
  109. condition += ` AND category_id IN(` + categoryId + `)`
  110. //condition += ` OR ( category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%' AND publish_status = 1 AND is_summary = 1 )`
  111. } else {
  112. condition += ` AND category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'`
  113. }
  114. }
  115. //永续客户无法查看研选分类的内容
  116. if userType == 1 {
  117. condition += ` AND category_name NOT LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'`
  118. }
  119. total, err = models.GetHomeCount(condition, pars)
  120. if err != nil {
  121. br.Msg = "获取信息失败"
  122. br.Msg = "获取帖子总数失败,Err:" + err.Error()
  123. return
  124. }
  125. page = paging.GetPaging(currentIndex, pageSize, total)
  126. list, err := models.GetHomeList(condition, pars, startSize, pageSize)
  127. if err != nil {
  128. br.Msg = "获取信息失败"
  129. br.Msg = "获取帖子数据失败,Err:" + err.Error()
  130. return
  131. }
  132. for k, v := range list {
  133. item := list[k]
  134. //如果文章一开始的内容是图片,优先展示第一张图片
  135. imgurl, _ := services.FixArticleImgUrl(html.UnescapeString(list[k].Body))
  136. newBody, _ := services.GetReportContentTextSub(item.Body)
  137. list[k].Body = newBody
  138. if imgurl != "" {
  139. list[k].BodyHtml = imgurl
  140. }
  141. list[k].PublishDate = utils.StrTimeToTime(item.PublishDate).Format(utils.FormatDateTimeNoSecond) //时间字符串格式转时间格式
  142. if strings.Contains(item.CategoryName, utils.CHART_PERMISSION_NAME_YANXUAN) {
  143. list[k].IsResearch = true
  144. }
  145. if list[k].ArticleId < utils.SummaryArticleId {
  146. list[k].HttpUrl = utils.StrategyPlatform + strconv.Itoa(v.ArticleId)
  147. list[k].IsNeedJump = true
  148. }
  149. if item.Pv > 999 {
  150. list[k].Pv = 999
  151. }
  152. }
  153. resp.List = list
  154. resp.Paging = page
  155. br.Ret = 200
  156. br.Success = true
  157. br.Msg = "获取成功"
  158. br.Data = resp
  159. }
  160. // @Title 访谈申请(海通国际)
  161. // @Description 访谈申请(海通国际)
  162. // @Param request body models.ArticleInterviewApplyReq true "type json string"
  163. // @Success 200 {object} models.FontsCollectResp
  164. // @router /interview/apply [post]
  165. func (this *BaseCommonController) InterviewApply() {
  166. br := new(models.BaseResponse).Init()
  167. defer func() {
  168. this.Data["json"] = br
  169. this.ServeJSON()
  170. }()
  171. var req models.ArticleInterviewApplyReqHtgj
  172. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  173. if err != nil {
  174. br.Msg = "参数解析异常!"
  175. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  176. return
  177. }
  178. //articleId := req.ArticleId
  179. companyCode := req.CompanyCode
  180. companyName := req.CompanyName
  181. wxuUserName := req.Email
  182. sign := req.Sign
  183. if companyCode == "" || companyName == "" || wxuUserName == "" || sign == "" {
  184. br.Msg = "上传失败"
  185. br.ErrMsg = "必填参数不能为空"
  186. return
  187. }
  188. companyNameHt := companyCode + "_" + companyName
  189. errMsg := services.CheckSign(companyCode+companyName+wxuUserName, sign)
  190. if errMsg != "" {
  191. br.Msg = errMsg
  192. return
  193. }
  194. companyInfo, err := models.GetCompanyByThirdName(companyNameHt)
  195. if err != nil {
  196. br.Msg = "获取信息失败"
  197. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  198. return
  199. }
  200. user, err := models.GetUserByThirdName(companyInfo.CompanyId, wxuUserName)
  201. if err != nil {
  202. br.Msg = "获取信息失败"
  203. br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
  204. return
  205. }
  206. uid := user.UserId
  207. article, err := models.GetArticleDetailById(req.ArticleId)
  208. if err != nil {
  209. br.Msg = "获取纪要失败!"
  210. br.ErrMsg = "获取纪要失败,Err:" + err.Error()
  211. return
  212. }
  213. count, err := models.GetArticleInterviewApplyCount(uid, req.ArticleId)
  214. if err != nil {
  215. br.Msg = "获取数据失败!"
  216. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  217. return
  218. }
  219. resp := new(models.ArticleInterviewApplyResp)
  220. if count <= 0 {
  221. item := new(models.CygxInterviewApply)
  222. item.ArticleId = req.ArticleId
  223. item.UserId = uid
  224. item.CompanyId = user.CompanyId
  225. item.Status = "待邀请"
  226. item.Sort = 1
  227. item.ArticleTitle = article.Title
  228. item.CreateTime = time.Now()
  229. item.ModifyTime = time.Now()
  230. item.ArticleIdMd5 = article.ArticleIdMd5
  231. _, err = models.AddCygxInterviewApply(item)
  232. if err != nil {
  233. br.Msg = "申请失败"
  234. br.ErrMsg = "申请失败,Err:" + err.Error()
  235. return
  236. }
  237. br.Msg = "申请成功"
  238. resp.Status = 1
  239. //发送模板消息
  240. if user.CompanyId > 1 {
  241. mobile := user.Mobile
  242. if mobile == "" {
  243. mobile = user.Email
  244. }
  245. sellerItem, _ := models.GetSellerByCompanyId(user.CompanyId)
  246. if sellerItem != nil && sellerItem.AdminId > 0 && user.Mobile != "" {
  247. openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
  248. if openIpItem != nil && openIpItem.OpenId != "" {
  249. go services.SendInterviewApplyTemplateMsg(user.RealName, sellerItem.CompanyName, mobile, article.Title, openIpItem)
  250. }
  251. }
  252. }
  253. } else {
  254. err = models.RemoveArticleInterviewApply(uid, req.ArticleId)
  255. if err != nil {
  256. br.Msg = "取消申请失败"
  257. br.ErrMsg = "取消申请失败,Err:" + err.Error()
  258. return
  259. }
  260. br.Msg = "已取消申请"
  261. resp.Status = 2
  262. if user.CompanyId > 1 {
  263. mobile := user.Mobile
  264. if mobile == "" {
  265. mobile = user.Email
  266. }
  267. sellerItem, _ := models.GetSellerByCompanyId(user.CompanyId)
  268. if sellerItem != nil && sellerItem.AdminId > 0 && user.Mobile != "" {
  269. openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
  270. if openIpItem != nil && openIpItem.OpenId != "" {
  271. go services.SendInterviewApplyCancelTemplateMsg(user.RealName, sellerItem.CompanyName, mobile, article.Title, openIpItem)
  272. }
  273. }
  274. }
  275. }
  276. br.Ret = 200
  277. br.Success = true
  278. br.Data = resp
  279. }
  280. // @Title 收藏
  281. // @Description 收藏
  282. // @Param request body models.ArticleCollectReq true "type json string"
  283. // @Success 200 {object} models.FontsCollectResp
  284. // @router /collect [post]
  285. func (this *BaseCommonController) ArticleCollect() {
  286. br := new(models.BaseResponse).Init()
  287. defer func() {
  288. this.Data["json"] = br
  289. this.ServeJSON()
  290. }()
  291. var req models.ArticleInterviewApplyReqHtgj
  292. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  293. if err != nil {
  294. br.Msg = "参数解析异常!"
  295. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  296. return
  297. }
  298. articleId := req.ArticleId
  299. companyCode := req.CompanyCode
  300. companyName := req.CompanyName
  301. wxuUserName := req.Email
  302. sign := req.Sign
  303. if companyCode == "" || companyName == "" || wxuUserName == "" || sign == "" {
  304. br.Msg = "上传失败"
  305. br.ErrMsg = "必填参数不能为空"
  306. return
  307. }
  308. companyNameHt := companyCode + "_" + companyName
  309. errMsg := services.CheckSign(companyCode+companyName+wxuUserName, sign)
  310. if errMsg != "" {
  311. br.Msg = errMsg
  312. return
  313. }
  314. companyInfo, err := models.GetCompanyByThirdName(companyNameHt)
  315. if err != nil {
  316. br.Msg = "获取信息失败"
  317. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  318. return
  319. }
  320. wxuser, err := models.GetUserByThirdName(companyInfo.CompanyId, wxuUserName)
  321. if err != nil {
  322. br.Msg = "获取信息失败"
  323. br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
  324. return
  325. }
  326. uid := wxuser.UserId
  327. user := new(models.WxUserItem)
  328. user.Mobile = wxuser.Mobile
  329. user.Email = wxuser.Email
  330. user.CompanyId = wxuser.CompanyId
  331. user.RealName = wxuser.RealName
  332. user.CompanyName = companyInfo.CompanyName
  333. detail, err := models.GetArticleDetailById(articleId)
  334. if err != nil {
  335. br.Msg = "获取信息失败"
  336. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  337. return
  338. }
  339. count, err := models.GetArticleCollectCount(uid, articleId)
  340. if err != nil {
  341. br.Msg = "获取数据失败!"
  342. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  343. return
  344. }
  345. resp := new(models.ArticleCollectResp)
  346. if count <= 0 {
  347. item := new(models.CygxArticleCollect)
  348. item.ArticleId = req.ArticleId
  349. item.UserId = uid
  350. item.CreateTime = time.Now()
  351. item.Mobile = user.Mobile
  352. item.Email = user.Email
  353. item.CompanyId = user.CompanyId
  354. item.CompanyName = user.CompanyName
  355. item.RealName = user.RealName
  356. _, err = models.AddCygxArticleCollect(item)
  357. if err != nil {
  358. br.Msg = "收藏失败"
  359. br.ErrMsg = "收藏失败,Err:" + err.Error()
  360. return
  361. }
  362. br.Msg = "收藏成功"
  363. resp.Status = 1
  364. // 文章收藏消息发送
  365. go services.ArticleUserRemind(user, detail, 2)
  366. } else {
  367. err = models.RemoveArticleCollect(uid, articleId)
  368. if err != nil {
  369. br.Msg = "取消收藏失败"
  370. br.ErrMsg = "取消收藏失败,Err:" + err.Error()
  371. return
  372. }
  373. br.Msg = "已取消收藏"
  374. resp.Status = 2
  375. }
  376. collectTotal, err := models.GetArticleCollectUsersCount(articleId)
  377. if err != nil {
  378. br.Msg = "获取数据失败"
  379. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  380. return
  381. }
  382. resp.CollectCount = collectTotal
  383. br.Ret = 200
  384. br.Success = true
  385. br.Data = resp
  386. }