report.go 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_clpt/models"
  6. "hongze/hongze_clpt/services"
  7. "hongze/hongze_clpt/utils"
  8. "strconv"
  9. "strings"
  10. "time"
  11. )
  12. // 报告
  13. type ReportController struct {
  14. BaseAuthController
  15. }
  16. type ReportCommonController struct {
  17. BaseCommonController
  18. }
  19. type MobileReportController struct {
  20. BaseAuthMobileController
  21. }
  22. // @Title 行业报告分类列表接口
  23. // @Description 获取行业报告分类列表接口
  24. // @Param ChartPermissionId query int true "分类ID"
  25. // @Success 200 {object} models.TradeReportMappingResp
  26. // @router /tradeList [get]
  27. func (this *MobileReportController) TradeList() {
  28. br := new(models.BaseResponse).Init()
  29. defer func() {
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. user := this.User
  34. if user == nil {
  35. br.Msg = "请重新登录"
  36. br.Ret = 408
  37. return
  38. }
  39. uid := user.UserId
  40. ChartPermissionId, _ := this.GetInt("ChartPermissionId")
  41. if ChartPermissionId < 1 {
  42. br.Msg = "请输入分类ID"
  43. return
  44. }
  45. //var result []*models.SearchItem
  46. var list []*models.TradeReportMapping
  47. var err error
  48. mapCategory := make(map[int]int)
  49. if ChartPermissionId == utils.CE_LUE_ID || ChartPermissionId == utils.GU_SHOU_ID {
  50. listTrade, errTrade := models.GetReportMappingStrategyHomeAll(user.UserId, ChartPermissionId)
  51. if ChartPermissionId == utils.CE_LUE_ID {
  52. cf, err := models.GetConfigByCode(utils.CYGX_TACTICS_TIME_LINE_STATUS)
  53. if err != nil {
  54. br.Msg = "获取失败"
  55. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  56. return
  57. }
  58. if cf.ConfigValue == "1" || user.CompanyId == utils.HZ_COMPANY_ID {
  59. item := new(models.TradeReportMapping)
  60. item.CategoryId = utils.TIME_LINE_ID
  61. item.MatchTypeName = utils.TIME_LINE_NAME
  62. list = append(list, item)
  63. }
  64. }
  65. for _, v := range listTrade {
  66. list = append(list, v)
  67. }
  68. //list = listTrade
  69. err = errTrade
  70. if user.Mobile != "" {
  71. //策略的处理
  72. categoryList, err := models.GetCygxXzsChooseCategoryList(user.Mobile)
  73. if err != nil && err.Error() != utils.ErrNoRow() {
  74. br.Msg = "获取信息失败"
  75. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  76. return
  77. }
  78. for _, v := range categoryList {
  79. mapCategory[v.CategoryId] = v.CategoryId
  80. }
  81. }
  82. for k, v := range list {
  83. if v.CategoryId == utils.TIME_LINE_ID {
  84. continue
  85. }
  86. count, err := models.GetUserIsReadThisNewCategoryArticleCount(v.CategoryId, uid)
  87. if err != nil && err.Error() != utils.ErrNoRow() {
  88. br.Msg = "获取信息失败"
  89. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  90. return
  91. }
  92. Newdetail, err := models.GetNewArticleByCategoryId(v.CategoryId)
  93. if err != nil {
  94. br.Msg = "获取信息失败"
  95. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  96. return
  97. }
  98. if count == 0 && user.CreatedTime.Before(utils.StrTimeToTime(Newdetail.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(Newdetail.PublishDate)) {
  99. list[k].IsRed = true
  100. }
  101. }
  102. } else {
  103. listTrade, errTrade := models.GetTradeAll(ChartPermissionId)
  104. err = errTrade
  105. list = listTrade
  106. }
  107. if err != nil {
  108. br.Msg = "获取信息失败"
  109. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  110. return
  111. }
  112. for k, v := range list {
  113. var condition string
  114. var pars []interface{}
  115. if v.PolymerizationId != "" {
  116. condition = ` AND a.category_id IN(` + v.PolymerizationId + `)`
  117. } else {
  118. condition = ` AND a.category_id IN(` + strconv.Itoa(v.CategoryId) + `)`
  119. }
  120. if ChartPermissionId != utils.CE_LUE_ID && ChartPermissionId != utils.GU_SHOU_ID {
  121. var pageSize int
  122. pageSize = 3
  123. listArticle, err := models.GetHomeList(condition, pars, 0, pageSize)
  124. if err != nil {
  125. br.Msg = "获取信息失败"
  126. br.Msg = "GetHomeList,Err:" + err.Error()
  127. return
  128. }
  129. if len(listArticle) > 0 {
  130. list[k].UpdateTime = utils.StrTimeToTime(listArticle[0].PublishDate).Format(utils.FormatDate) //时间字符串格式转时间格式
  131. count, err := models.CheckThisCategoryNewArticleIsRead(uid, v.CategoryId)
  132. if err != nil {
  133. br.Msg = "获取信息失败"
  134. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  135. return
  136. }
  137. if count == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.UpdateTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.UpdateTime)) {
  138. list[k].IsRed = true
  139. }
  140. }
  141. list[k].ListArticle = listArticle
  142. } else {
  143. if mapCategory[v.CategoryId] > 0 {
  144. list[k].IsFollow = true
  145. }
  146. list[k].ListArticle = make([]*models.HomeArticle, 0)
  147. }
  148. }
  149. resp := new(models.TradeReportMappingResp)
  150. if len(list) == 0 {
  151. list = make([]*models.TradeReportMapping, 0)
  152. }
  153. resp.List = list
  154. br.Ret = 200
  155. br.Success = true
  156. br.Msg = "获取成功"
  157. br.Data = resp
  158. }
  159. // @Title 产业报告分类列表接口
  160. // @Description 获取产业报告分类列表接口
  161. // @Param ChartPermissionId query int true "分类ID"
  162. // @Param DeepCover query int false "是否选择深度覆盖,1是,0否 不填默认为0"
  163. // @Param RecommendFocus query int false "是否选择推荐关注,1是,0否 不填默认为0"
  164. // @Param PageSize query int true "每页数据条数"
  165. // @Param CurrentIndex query int true "当前页页码,从1开始"
  166. // @Param IsBillboard query bool false "是否属于榜单 是true 否 false"
  167. // @Success 200 {object} models.IndustrialManagementList
  168. // @router /industryList [get]
  169. func (this *MobileReportController) IndustryList() {
  170. br := new(models.BaseResponse).Init()
  171. defer func() {
  172. this.Data["json"] = br
  173. this.ServeJSON()
  174. }()
  175. user := this.User
  176. if user == nil {
  177. br.Msg = "请重新登录"
  178. br.Ret = 408
  179. return
  180. }
  181. uid := user.UserId
  182. ChartPermissionId, _ := this.GetInt("ChartPermissionId")
  183. orderColumn := this.GetString("OrderColumn")
  184. orderColumnNew := this.GetString("OrderColumn")
  185. isNewLabel := this.GetString("IsNewLabel")
  186. isDeepLabel := this.GetString("IsDeepLabel")
  187. pageSize, _ := this.GetInt("PageSize")
  188. currentIndex, _ := this.GetInt("CurrentIndex")
  189. deepCover, _ := this.GetInt("DeepCover")
  190. recommendFocus, _ := this.GetInt("RecommendFocus")
  191. isBillboard, _ := this.GetBool("IsBillboard", false)
  192. var orderSrt string
  193. var condition string
  194. var startSize int
  195. resp := new(models.IndustrialManagementList)
  196. if pageSize <= 0 {
  197. pageSize = utils.PageSize20
  198. }
  199. if currentIndex <= 0 {
  200. currentIndex = 1
  201. }
  202. startSize = paging.StartIndex(currentIndex, pageSize)
  203. if ChartPermissionId > 0 {
  204. condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)`
  205. }
  206. // 获取近一个月产业报告阅读次数最多的产业
  207. var topCond string
  208. var topPars []interface{}
  209. topReadIndustryId := 0
  210. if ChartPermissionId > 0 {
  211. topCond += ` AND chart_permission_id = ?`
  212. topPars = append(topPars, ChartPermissionId)
  213. }
  214. topReadIndustry, e := models.GetTopOneMonthArtReadNumIndustry(topCond, topPars)
  215. if e != nil && e.Error() != utils.ErrNoRow() {
  216. br.Msg = "获取信息失败"
  217. br.ErrMsg = "获取近一个月报告阅读次数最多的产业失败, Err: " + e.Error()
  218. return
  219. }
  220. if topReadIndustry != nil {
  221. topReadIndustryId = topReadIndustry.IndustrialManagementId
  222. }
  223. // 深度覆盖
  224. if deepCover == 1 {
  225. // 查询深标签产业报告数
  226. var deepCondition string
  227. var deepPars []interface{}
  228. deepCondition += ` AND man.is_deep_label = 1`
  229. if ChartPermissionId > 0 {
  230. deepCondition += ` AND man.chart_permission_id = ?`
  231. deepPars = append(deepPars, ChartPermissionId)
  232. }
  233. industryCountList, e := models.GetIndustryArtCountByCondition(deepCondition, deepPars)
  234. if e != nil {
  235. br.Msg = "获取信息失败"
  236. br.ErrMsg = "获取深标签产业报告数失败, Err: " + e.Error()
  237. return
  238. }
  239. deepIdArr := make([]string, 0)
  240. for i := range industryCountList {
  241. if industryCountList[i].ArtNum > 10 {
  242. deepIdArr = append(deepIdArr, strconv.Itoa(industryCountList[i].IndustrialManagementId))
  243. }
  244. }
  245. deepIds := strings.Join(deepIdArr, ",")
  246. if deepIds != "" {
  247. condition = `AND man.industrial_management_id IN (` + deepIds + `)`
  248. }
  249. }
  250. // 推荐关注
  251. if recommendFocus == 1 {
  252. condition += ` AND man.recommended_index >= 80`
  253. }
  254. var list []*models.IndustrialManagement
  255. total, err := models.GetIndustrialManagementAllCount(condition)
  256. if err != nil {
  257. br.Msg = "获取信息失败"
  258. br.ErrMsg = "获取数量失败,Err:" + err.Error()
  259. return
  260. }
  261. if orderColumn == "" {
  262. orderColumn = "NewTime"
  263. }
  264. if orderColumn == "NewTime" {
  265. orderSrt = "update_time DESC"
  266. } else {
  267. orderSrt = "man.recommended_index DESC,update_time DESC"
  268. }
  269. if isBillboard {
  270. // 查询有已归类行业报告的行业IDs
  271. activeIndustryIds, e := models.GetActiveArticleIndustryIds()
  272. if e != nil {
  273. br.Msg = "获取失败"
  274. br.ErrMsg = "获取已归类行业失败, Err:" + e.Error()
  275. return
  276. }
  277. activeIndustryLen := len(activeIndustryIds)
  278. //topNum := pageSize
  279. condition = ""
  280. var parsBd []interface{}
  281. if ChartPermissionId > 0 {
  282. condition += ` AND man.chart_permission_id = ? `
  283. parsBd = append(parsBd, ChartPermissionId)
  284. }
  285. if activeIndustryLen > 0 {
  286. condition += ` AND man.industrial_management_id IN (` + utils.GetOrmInReplace(activeIndustryLen) + `)`
  287. parsBd = append(parsBd, activeIndustryIds)
  288. }
  289. nowTime := time.Now().Local()
  290. startTime := nowTime.AddDate(0, -1, 0)
  291. endTime := nowTime.AddDate(0, 0, -1)
  292. condition += ` AND idf.create_time BETWEEN ? AND ?`
  293. parsBd = append(parsBd, startTime, endTime)
  294. list, e = models.GetTopIndustryFollowData(0, pageSize, condition, parsBd)
  295. if e != nil {
  296. br.Msg = "获取失败"
  297. br.ErrMsg = "获取关注度最高的产业数据失败, Err:" + e.Error()
  298. return
  299. }
  300. } else {
  301. list, err = models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize, isBillboard)
  302. if err != nil {
  303. br.Msg = "获取信息失败"
  304. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  305. return
  306. }
  307. }
  308. var resource string
  309. if ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  310. resource = utils.REOURCE_YX
  311. } else {
  312. resource = utils.REOURCE_HZ
  313. }
  314. list, err = services.HandleIndustryList(list, user, resource)
  315. if err != nil {
  316. br.Msg = "获取信息失败"
  317. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  318. return
  319. }
  320. industrialIdArr := make([]int, 0)
  321. for k, v := range list {
  322. industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
  323. if topReadIndustryId > 0 && list[k].IndustrialManagementId == topReadIndustryId {
  324. list[k].IsHot = true
  325. }
  326. }
  327. if orderColumnNew != "" {
  328. item := new(models.CygxReportIndustrialSeaarchHistory)
  329. item.UserId = user.UserId
  330. item.Mobile = user.Mobile
  331. item.CompanyId = user.CompanyId
  332. item.CompanyName = user.CompanyName
  333. item.CreateTime = time.Now()
  334. item.IsDeepLabel = isDeepLabel
  335. item.IsNewLabel = isNewLabel
  336. item.ChartPermissionId = ChartPermissionId
  337. if orderColumnNew == "NewTime" {
  338. item.OrderColumn = "0"
  339. } else {
  340. item.OrderColumn = "1"
  341. }
  342. go models.AddCygxReportIndustrialSeaarchHistory(item)
  343. }
  344. if len(list) == 0 {
  345. list = make([]*models.IndustrialManagement, 0)
  346. }
  347. page := paging.GetPaging(currentIndex, pageSize, total)
  348. if isBillboard {
  349. total = len(list)
  350. }
  351. resp.List = list
  352. resp.Paging = page
  353. br.Ret = 200
  354. br.Success = true
  355. br.Msg = "获取成功"
  356. br.Data = resp
  357. }
  358. // @Title 产业下所关联的文章分类列表
  359. // @Description 产业下所关联的文章分类列表接口
  360. // @Param IndustrialManagementId query int true "产业ID"
  361. // @Success 200 {object} models.IndustrialToArticleCategoryListRep
  362. // @router /toArticleCategoryList [get]
  363. func (this *MobileReportController) ArticleCategoryList() {
  364. br := new(models.BaseResponse).Init()
  365. defer func() {
  366. this.Data["json"] = br
  367. this.ServeJSON()
  368. }()
  369. user := this.User
  370. if user == nil {
  371. br.Msg = "请重新登录"
  372. br.Ret = 408
  373. return
  374. }
  375. uid := user.UserId
  376. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  377. if industrialManagementId < 1 {
  378. br.Msg = "请输入分类ID"
  379. return
  380. }
  381. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  382. if err != nil {
  383. br.Msg = "获取信息失败"
  384. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  385. return
  386. }
  387. list, err := models.IndustrialToArticleCategory(industrialManagementId, detail.ChartPermissionId)
  388. if err != nil {
  389. br.Msg = "获取信息失败"
  390. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  391. return
  392. }
  393. for k, v := range list {
  394. recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId)
  395. if err != nil && err.Error() != utils.ErrNoRow() {
  396. br.Msg = "获取信息失败"
  397. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  398. return
  399. }
  400. Newdetail, err := models.GetNewIndustrialUserRecordArticle(industrialManagementId, v.CategoryId)
  401. if err != nil {
  402. br.Msg = "获取信息失败"
  403. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  404. return
  405. }
  406. if Newdetail != nil {
  407. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(Newdetail.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(Newdetail.PublishDate)) {
  408. list[k].IsRed = true
  409. }
  410. }
  411. }
  412. //标的列表
  413. industrialSubjectList, err := models.GetIndustrialSubjectAll(industrialManagementId)
  414. if err != nil {
  415. br.Msg = "获取信息失败"
  416. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  417. return
  418. }
  419. videoSimple, au, err := services.GetindustryVideo(user, industrialManagementId)
  420. if err != nil {
  421. br.Msg = "获取失败"
  422. br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
  423. return
  424. }
  425. timeLineItem := models.IndustrialToArticleCategoryRep{
  426. CategoryId: utils.TIME_CATEGORYID,
  427. MatchTypeName: "时间线",
  428. }
  429. timeLineIsRed, err := services.GetShowTimeLineIsRed(user, industrialManagementId)
  430. if err != nil {
  431. br.Msg = "获取失败"
  432. br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
  433. return
  434. }
  435. timeLineItem.IsRed = timeLineIsRed
  436. list = append([]*models.IndustrialToArticleCategoryRep{&timeLineItem}, list...)
  437. resp := new(models.IndustrialToArticleCategoryListRep)
  438. resp.List = list
  439. resp.ListSubject = industrialSubjectList
  440. resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
  441. resp.IndustryName = detail.IndustryName
  442. resp.IndustrialManagementId = industrialManagementId
  443. if videoSimple != nil && videoSimple.Id > 0 {
  444. resp.IndustryVideo = videoSimple
  445. }
  446. resp.AuthInfo = au
  447. br.Ret = 200
  448. br.Success = true
  449. br.Msg = "获取成功"
  450. br.Data = resp
  451. }
  452. // @Title 根据行业分类获取文章列表
  453. // @Description根据行业分类获取文章列表接口
  454. // @Param PageSize query int true "每页数据条数"
  455. // @Param CurrentIndex query int true "当前页页码,从1开始"
  456. // @Param CategoryId query int true "分类ID"
  457. // @Param IndustrialManagementId query int false "产业ID"
  458. // @Success 200 {object} models.TacticsListResp
  459. // @router /articleList/byCategoryId [get]
  460. func (this *MobileReportController) List() {
  461. br := new(models.BaseResponse).Init()
  462. defer func() {
  463. this.Data["json"] = br
  464. this.ServeJSON()
  465. }()
  466. user := this.User
  467. if user == nil {
  468. br.Msg = "请重新登录"
  469. br.Ret = 408
  470. return
  471. }
  472. //uid := user.UserId
  473. pageSize, _ := this.GetInt("PageSize")
  474. currentIndex, _ := this.GetInt("CurrentIndex")
  475. categoryId, _ := this.GetInt("CategoryId")
  476. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  477. var startSize int
  478. if pageSize <= 0 {
  479. pageSize = utils.PageSize20
  480. }
  481. if currentIndex <= 0 {
  482. currentIndex = 1
  483. }
  484. startSize = paging.StartIndex(currentIndex, pageSize)
  485. var condition string
  486. var pars []interface{}
  487. var total int
  488. resp := new(models.TacticsListResp)
  489. page := paging.GetPaging(currentIndex, pageSize, total)
  490. list := make([]*models.ArticleListResp, 0)
  491. if categoryId == utils.TIME_CATEGORYID {
  492. var err error
  493. list, total, err = models.GetTimeLineReportIndustrialList(industrialManagementId, startSize, pageSize)
  494. if err != nil {
  495. br.Msg = "获取信息失败"
  496. br.ErrMsg = "获取产业报告+晨会点评列表,Err:" + err.Error()
  497. return
  498. }
  499. } else {
  500. //获取该产业下所对应的行业图片
  501. var reportType int
  502. if industrialManagementId > 0 {
  503. reportType = 2
  504. } else {
  505. reportType = 1
  506. }
  507. detail, errCategory := models.GetdetailByCategoryIdOne(categoryId, reportType)
  508. if errCategory != nil {
  509. br.Msg = "获取信息失败"
  510. br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
  511. return
  512. }
  513. //对应行业的图片
  514. detailChartPermissionUrl, err := models.GetConfigByCode("category_chart_permissionimg_url")
  515. if err != nil {
  516. br.Msg = "获取数据失败"
  517. br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
  518. return
  519. }
  520. chartPermissionUrlList := strings.Split(detailChartPermissionUrl.ConfigValue, "{|}")
  521. mapChartPermission := make(map[string]string)
  522. var permissionName string
  523. var imgUrlChartPermission string
  524. for _, v := range chartPermissionUrlList {
  525. vslice := strings.Split(v, "_")
  526. permissionName = vslice[0]
  527. imgUrlChartPermission = vslice[len(vslice)-1]
  528. mapChartPermission[permissionName] = imgUrlChartPermission
  529. }
  530. //对应分类的所图片
  531. detailCategoryUrl, err := models.GetConfigByCode("category_map_img_url")
  532. if err != nil {
  533. br.Msg = "获取数据失败"
  534. br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
  535. return
  536. }
  537. categoryUrlList := strings.Split(detailCategoryUrl.ConfigValue, "{|}")
  538. mapCategoryUrl := make(map[string]string)
  539. var categoryIdStr string
  540. var imgUrlChart string
  541. for _, v := range categoryUrlList {
  542. vslice := strings.Split(v, "_")
  543. categoryIdStr = vslice[0]
  544. imgUrlChart = vslice[len(vslice)-1]
  545. mapCategoryUrl[categoryIdStr] = imgUrlChart
  546. }
  547. if detail.CeLueFieldId != "" {
  548. condition = ` AND ce_lue_field_id IN(` + detail.CeLueFieldId + `)`
  549. } else if detail.PolymerizationId != "" {
  550. condition = ` AND category_id IN(` + detail.PolymerizationId + `)`
  551. } else {
  552. categoryIdSet, errCategory := models.GetdetailByCategoryIdSet(categoryId)
  553. if errCategory != nil {
  554. br.Msg = "获取信息失败"
  555. br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
  556. return
  557. }
  558. if categoryIdSet != "" {
  559. condition = ` AND category_id IN(` + categoryIdSet + `)`
  560. } else {
  561. condition = ` AND category_id IN(` + strconv.Itoa(categoryId) + `)`
  562. }
  563. }
  564. if industrialManagementId > 0 {
  565. industrialManageentList, err := models.GetIndustrialArticleGroupManagementByIndustrialManagementId(industrialManagementId)
  566. if err != nil {
  567. br.Msg = "获取信息失败"
  568. br.Msg = "获取产业关联的文章ID失败,GetIndustrialArticleGroupManagementByIndustrialManagementIdErr:" + err.Error()
  569. return
  570. }
  571. articleIdList := make([]string, 0)
  572. for _, v := range industrialManageentList {
  573. articleIdList = append(articleIdList, strconv.Itoa(v.ArticleId))
  574. }
  575. condition += ` AND a.article_id IN ( ` + utils.GetOrmInReplace(len(articleIdList)) + ` ) `
  576. pars = append(pars, articleIdList)
  577. }
  578. total, err = models.GetHomeCount(condition, pars)
  579. if err != nil {
  580. br.Msg = "获取信息失败"
  581. br.Msg = "获取帖子总数失败,Err:" + err.Error()
  582. return
  583. }
  584. list, err = models.GetHomeListNew(condition, pars, startSize, pageSize)
  585. if err != nil {
  586. br.Msg = "获取信息失败"
  587. br.Msg = "获取帖子数据失败,Err:" + err.Error()
  588. return
  589. }
  590. articleIdMap, err := services.GetUserArticleHistoryRecord(user)
  591. if err != nil {
  592. br.Msg = "获取信息失败"
  593. br.Msg = "获取帖子数据失败,Err:" + err.Error()
  594. return
  595. }
  596. for k, v := range list {
  597. list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId]
  598. if !articleIdMap[v.ArticleId] && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
  599. list[k].IsRed = true
  600. }
  601. }
  602. if categoryId > 0 {
  603. detail, errCategory := models.GetdetailByCategoryId(categoryId)
  604. if errCategory != nil {
  605. br.Msg = "获取信息失败"
  606. br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
  607. return
  608. }
  609. resp.MatchTypeName = detail.MatchTypeName
  610. }
  611. resp.CategoryImgUrlPc = mapChartPermission[detail.ChartPermissionName]
  612. }
  613. listPublic, err := services.HandleArticleCategoryImg(list, user)
  614. if err != nil {
  615. br.Msg = "获取失败"
  616. br.ErrMsg = "获取报告封面图片失败, Err:" + err.Error()
  617. return
  618. }
  619. listResp := make([]*models.HomeArticle, 0)
  620. //listResp :=
  621. for _, v := range listPublic {
  622. listResp = append(listResp, &models.HomeArticle{
  623. ArticleId: v.ArticleId,
  624. Title: v.Title,
  625. Annotation: "核心观点:" + v.Annotation,
  626. Abstract: v.Abstract,
  627. ImgUrlPc: v.ImgUrlPc,
  628. PublishDate: v.PublishDate,
  629. })
  630. }
  631. //lenList := len(list)
  632. //for i := 0; i < lenList; i++ {
  633. // item := list[i]
  634. // list[i].Body = ""
  635. // list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
  636. // list[i].Annotation, _ = services.GetReportContentTextSub(item.Annotation)
  637. // list[i].PublishDate = utils.StrTimeToTime(item.PublishDate).Format(utils.FormatDate) //时间字符串格式转时间格式
  638. // //行业比较研究、资金流向,显示报告的摘要
  639. // if resp.MatchTypeName == "行业比较研究" || resp.MatchTypeName == "资金流向" {
  640. // list[i].Annotation = list[i].Abstract
  641. // }
  642. //}
  643. if len(listResp) == 0 {
  644. listResp = make([]*models.HomeArticle, 0)
  645. }
  646. page = paging.GetPaging(currentIndex, pageSize, total)
  647. resp.List = listResp
  648. resp.Paging = page
  649. br.Ret = 200
  650. br.Success = true
  651. br.Msg = "获取成功"
  652. br.Data = resp
  653. }
  654. // @Title 产业关注/取消关注
  655. // @Description 产业关注/取消关注 接口
  656. // @Param request body models.CygxIndustryFllowRep true "type json string"
  657. // @Success 200
  658. // @router /industrial/fllow [post]
  659. func (this *ReportController) IndustrialFllow() {
  660. br := new(models.BaseResponse).Init()
  661. defer func() {
  662. this.Data["json"] = br
  663. this.ServeJSON()
  664. }()
  665. user := this.User
  666. if user == nil {
  667. br.Msg = "请重新登录"
  668. br.Ret = 408
  669. return
  670. }
  671. uid := user.UserId
  672. var req models.CygxIndustryFllowRep
  673. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  674. if err != nil {
  675. br.Msg = "参数解析异常!"
  676. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  677. return
  678. }
  679. industrialManagementId := req.IndustrialManagementId
  680. var condition string
  681. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  682. if err != nil {
  683. br.Msg = "获取数据失败!"
  684. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  685. return
  686. }
  687. if countIndustrial == 0 {
  688. br.Msg = "产业不存在!"
  689. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
  690. return
  691. }
  692. count, err := models.GetCountCygxIndustryFllow(industrialManagementId, user.UserId, condition)
  693. if err != nil {
  694. br.Msg = "获取数据失败!"
  695. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  696. return
  697. }
  698. resp := new(models.CygxIndustryFllowResp)
  699. if count == 0 {
  700. item := new(models.CygxIndustryFllow)
  701. item.IndustrialManagementId = industrialManagementId
  702. item.UserId = uid
  703. item.Email = user.Email
  704. item.Mobile = user.Mobile
  705. item.RealName = user.RealName
  706. item.CompanyId = user.CompanyId
  707. item.CompanyName = user.CompanyName
  708. item.Type = 1
  709. item.CreateTime = time.Now()
  710. item.ModifyTime = time.Now()
  711. _, err = models.AddCygxIndustryFllow(item)
  712. if err != nil {
  713. br.Msg = "操作失败"
  714. br.ErrMsg = "操作失败,Err:" + err.Error()
  715. return
  716. }
  717. resp.Status = 1
  718. br.Msg = "关注成功"
  719. } else {
  720. err = models.RemoveCygxIndustryFllow(uid, industrialManagementId)
  721. if err != nil {
  722. br.Msg = "操作失败"
  723. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  724. return
  725. }
  726. resp.Status = 2
  727. br.Msg = "已取消关注"
  728. }
  729. //处理是否关注全部赛道字段
  730. go services.IndustryFllowWithTrack(industrialManagementId, count, uid)
  731. br.Ret = 200
  732. br.Success = true
  733. br.Data = resp
  734. }
  735. // @Title 行业关注/取消关注
  736. // @Description 行业关注/取消关注 接口
  737. // @Param request body models.CygxCategoryFllowRep true "type json string"
  738. // @Success 200
  739. // @router /category/fllow [post]
  740. func (this *ReportController) CategoryFllow() {
  741. br := new(models.BaseResponse).Init()
  742. defer func() {
  743. this.Data["json"] = br
  744. this.ServeJSON()
  745. }()
  746. user := this.User
  747. if user == nil {
  748. br.Msg = "请重新登录"
  749. br.Ret = 408
  750. return
  751. }
  752. uid := user.UserId
  753. var req models.CygxCategoryFllowRep
  754. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  755. if err != nil {
  756. br.Msg = "参数解析异常!"
  757. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  758. return
  759. }
  760. categoryId := req.CategoryId
  761. var condition string
  762. countCategory, err := models.GetCategoryCount(categoryId)
  763. if err != nil {
  764. br.Msg = "获取数据失败!"
  765. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  766. return
  767. }
  768. if countCategory == 0 {
  769. br.Msg = "产业不存在!"
  770. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(categoryId)
  771. return
  772. }
  773. count, err := models.GetCountCategoryFllow(categoryId, user.Mobile, condition)
  774. if err != nil {
  775. br.Msg = "获取数据失败!"
  776. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  777. return
  778. }
  779. resp := new(models.CygxIndustryFllowResp)
  780. if count == 0 {
  781. item := new(models.CygxXzsChooseCategory)
  782. item.CategoryId = categoryId
  783. item.UserId = uid
  784. item.Email = user.Email
  785. item.Mobile = user.Mobile
  786. item.RealName = user.RealName
  787. item.CompanyId = user.CompanyId
  788. item.CompanyName = user.CompanyName
  789. item.CreateTime = time.Now()
  790. item.ModifyTime = time.Now()
  791. _, err = models.AddCygxCategoryFllow(item)
  792. if err != nil {
  793. br.Msg = "操作失败"
  794. br.ErrMsg = "操作失败,Err:" + err.Error()
  795. return
  796. }
  797. resp.Status = 1
  798. br.Msg = "关注成功"
  799. } else {
  800. err = models.RemoveCygxCategoryFllow(user.Mobile, categoryId)
  801. if err != nil {
  802. br.Msg = "操作失败"
  803. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  804. return
  805. }
  806. resp.Status = 2
  807. br.Msg = "已取消关注"
  808. }
  809. br.Ret = 200
  810. br.Success = true
  811. br.Data = resp
  812. }
  813. // @Title 报告搜索
  814. // @Description 报告搜索接口
  815. // @Param PageSize query int true "每页数据条数"
  816. // @Param CurrentIndex query int true "当前页页码,从1开始"
  817. // @Param KeyWord query string true "搜索关键词"
  818. // @Param ArticleType query int true "文章类型,1弘则报告、2研选 "
  819. // @Param IsAll query bool true "是否为综合 "
  820. // @Success 200 {object} models.ReoprtSearchResp
  821. // @router /searchReport [get]
  822. func (this *MobileReportController) SearchReport() {
  823. br := new(models.BaseResponse).Init()
  824. defer func() {
  825. this.Data["json"] = br
  826. this.ServeJSON()
  827. }()
  828. user := this.User
  829. if user == nil {
  830. br.Msg = "请重新登录"
  831. br.Ret = 408
  832. return
  833. }
  834. pageSize, _ := this.GetInt("PageSize")
  835. currentIndex, _ := this.GetInt("CurrentIndex")
  836. articleType, _ := this.GetInt("ArticleType", 1)
  837. keyWord := this.GetString("KeyWord")
  838. isAll, _ := this.GetBool("IsAll")
  839. var condition string
  840. var pars []interface{}
  841. //var conditionSql string
  842. var total int
  843. var startSize int
  844. if pageSize <= 0 {
  845. pageSize = utils.PageSize20
  846. }
  847. if isAll {
  848. pageSize = utils.PageSize5
  849. }
  850. if currentIndex <= 0 {
  851. currentIndex = 1
  852. }
  853. startSize = paging.StartIndex(currentIndex, pageSize)
  854. resp := new(models.ReoprtSearchResp)
  855. //匹配报告标题、
  856. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  857. if err != nil {
  858. br.Msg = "获取信息失败"
  859. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  860. return
  861. }
  862. if articleTypeIds == "" {
  863. br.Msg = "获取信息失败"
  864. br.ErrMsg = "研选分类ID不能为空"
  865. return
  866. }
  867. //处理对应的文章类型标签按钮
  868. nameMap, styleMap, err := services.GetArticleTypeMap()
  869. if err != nil {
  870. br.Msg = "获取信息失败"
  871. br.ErrMsg = "GetArticleTypeMap Err:" + err.Error()
  872. return
  873. }
  874. if isAll {
  875. total = utils.PageSize5
  876. conditionHz := ` AND ( a.title LIKE '%` + keyWord + `%' OR a.body LIKE '%` + keyWord + `%' OR a.annotation LIKE '%` + keyWord + `%' OR a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 AND a.article_type_id NOT IN (` + articleTypeIds + `) `
  877. conditionYx := ` AND ( a.title LIKE '%` + keyWord + `%' OR a.body LIKE '%` + keyWord + `%' OR a.annotation LIKE '%` + keyWord + `%' OR a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 AND a.article_type_id IN (` + articleTypeIds + `) `
  878. listHz, err := models.GetArticleResearchListHz(conditionHz, pars, startSize, pageSize, user.UserId)
  879. if err != nil {
  880. br.Msg = "获取信息失败"
  881. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  882. return
  883. }
  884. listYx, err := models.GetArticleResearchList(conditionYx, pars, startSize, pageSize, user.UserId)
  885. if err != nil {
  886. br.Msg = "获取信息失败"
  887. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  888. return
  889. }
  890. listHz, err = services.HandleArticleCategoryImg(listHz, user)
  891. if err != nil {
  892. br.Msg = "获取信息失败"
  893. br.ErrMsg = "HandleArticleCategoryImg,Err:" + err.Error()
  894. return
  895. }
  896. listYx, err = services.HandleArticleCategoryImg(listYx, user)
  897. if err != nil {
  898. br.Msg = "获取信息失败"
  899. br.ErrMsg = "HandleArticleCategoryImg,Err:" + err.Error()
  900. return
  901. }
  902. for _, v := range listHz {
  903. item := models.ArticleResearchResp{
  904. ArticleId: v.ArticleId,
  905. ArticleTypeId: v.ArticleTypeId,
  906. Title: v.Title,
  907. PublishDate: v.PublishDate,
  908. DepartmentId: v.DepartmentId,
  909. NickName: v.NickName,
  910. IsCollect: v.IsCollect,
  911. Pv: v.Pv,
  912. CollectNum: v.CollectNum,
  913. Abstract: v.Abstract,
  914. Annotation: v.Annotation,
  915. ImgUrlPc: v.ImgUrlPc,
  916. ArticleTypeName: nameMap[v.ArticleTypeId],
  917. ButtonStyle: styleMap[v.ArticleTypeId],
  918. List: v.List,
  919. }
  920. resp.ListHz = append(resp.ListHz, &item)
  921. }
  922. for _, v := range listYx {
  923. item := models.ArticleResearchResp{
  924. ArticleId: v.ArticleId,
  925. ArticleTypeId: v.ArticleTypeId,
  926. Title: v.Title,
  927. PublishDate: v.PublishDate,
  928. DepartmentId: v.DepartmentId,
  929. NickName: v.NickName,
  930. IsCollect: v.IsCollect,
  931. Pv: v.Pv,
  932. CollectNum: v.CollectNum,
  933. Abstract: v.Abstract,
  934. Annotation: v.Annotation,
  935. ImgUrlPc: v.ImgUrlPc,
  936. ArticleTypeName: nameMap[v.ArticleTypeId],
  937. ButtonStyle: styleMap[v.ArticleTypeId],
  938. List: v.List,
  939. }
  940. resp.ListYx = append(resp.ListYx, &item)
  941. }
  942. } else {
  943. //condition = `AND ( a.title LIKE '%` + keyWord + `%' OR a.body LIKE '%` + keyWord + `%' OR a.annotation LIKE '%` + keyWord + `%' OR a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 `
  944. if articleType == 1 {
  945. condition = ` AND ( a.title LIKE '%` + keyWord + `%' OR a.body LIKE '%` + keyWord + `%' OR a.annotation LIKE '%` + keyWord + `%' OR a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 AND a.article_type_id NOT IN (` + articleTypeIds + `) `
  946. total, err = models.GetReoprtSearchCountHz(condition)
  947. } else {
  948. condition = ` AND ( a.title LIKE '%` + keyWord + `%' OR a.body LIKE '%` + keyWord + `%' OR a.annotation LIKE '%` + keyWord + `%' OR a.abstract LIKE '%` + keyWord + `%') AND a.publish_status = 1 AND a.article_type_id IN (` + articleTypeIds + `) `
  949. total, err = models.GetReoprtSearchCountYx(condition)
  950. }
  951. if err != nil {
  952. br.Msg = "获取信息失败"
  953. br.Msg = "获取总数失败,Err:" + err.Error()
  954. return
  955. }
  956. var list []*models.ArticleListResp
  957. //list := new([]models.ArticleResearchResp)
  958. if articleType == 1 {
  959. list, err = models.GetArticleResearchListHz(condition, pars, startSize, pageSize, user.UserId)
  960. } else {
  961. list, err = models.GetArticleResearchList(condition, pars, startSize, pageSize, user.UserId)
  962. }
  963. if err != nil {
  964. br.Msg = "获取信息失败"
  965. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  966. return
  967. }
  968. //return
  969. list, err = services.HandleArticleCategoryImg(list, user)
  970. if err != nil {
  971. br.Msg = "获取信息失败"
  972. br.ErrMsg = "HandleArticleCategoryImg,Err:" + err.Error()
  973. return
  974. }
  975. for _, v := range list {
  976. item := models.ArticleResearchResp{
  977. ArticleId: v.ArticleId,
  978. ArticleTypeId: v.ArticleTypeId,
  979. Title: v.Title,
  980. PublishDate: v.PublishDate,
  981. DepartmentId: v.DepartmentId,
  982. NickName: v.NickName,
  983. IsCollect: v.IsCollect,
  984. Pv: v.Pv,
  985. CollectNum: v.CollectNum,
  986. Abstract: v.Abstract,
  987. Annotation: v.Annotation,
  988. ImgUrlPc: v.ImgUrlPc,
  989. ArticleTypeName: nameMap[v.ArticleTypeId],
  990. ButtonStyle: styleMap[v.ArticleTypeId],
  991. List: v.List,
  992. }
  993. if articleType == 1 {
  994. resp.ListHz = append(resp.ListHz, &item)
  995. } else {
  996. resp.ListYx = append(resp.ListYx, &item)
  997. }
  998. }
  999. }
  1000. if keyWord != "" {
  1001. go services.AddUserSearchLog(user, keyWord, 5)
  1002. }
  1003. if len(resp.ListHz) == 0 {
  1004. resp.ListHz = make([]*models.ArticleResearchResp, 0)
  1005. }
  1006. if len(resp.ListYx) == 0 {
  1007. resp.ListYx = make([]*models.ArticleResearchResp, 0)
  1008. }
  1009. page := paging.GetPaging(currentIndex, pageSize, total)
  1010. resp.Paging = page
  1011. br.Ret = 200
  1012. br.Success = true
  1013. br.Msg = "获取成功"
  1014. br.Data = resp
  1015. }
  1016. // @Title 资源包搜索
  1017. // @Description 资源包搜索接口
  1018. // @Param KeyWord query string true "搜索关键词"
  1019. // @Success 200 {object} models.SearchResourceResp
  1020. // @router /searchResource [get]
  1021. func (this *MobileReportController) SearchResource() {
  1022. br := new(models.BaseResponse).Init()
  1023. defer func() {
  1024. this.Data["json"] = br
  1025. this.ServeJSON()
  1026. }()
  1027. user := this.User
  1028. if user == nil {
  1029. br.Msg = "请重新登录"
  1030. br.Ret = 408
  1031. return
  1032. }
  1033. uid := user.UserId
  1034. fllowList, err := models.GetUserFllowIndustrialList(uid)
  1035. if err != nil {
  1036. br.Msg = "获取失败"
  1037. br.ErrMsg = "获取失败,GetUserFllowIndustrialList Err:" + err.Error()
  1038. return
  1039. }
  1040. fllowMap := make(map[int]int)
  1041. if len(fllowList) > 0 {
  1042. for _, v := range fllowList {
  1043. fllowMap[v.IndustrialManagementId] = v.IndustrialManagementId
  1044. }
  1045. }
  1046. keyWord := this.GetString("KeyWord")
  1047. var condition string
  1048. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  1049. if err != nil {
  1050. br.Msg = "获取信息失败"
  1051. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  1052. return
  1053. }
  1054. if articleTypeIds == "" {
  1055. br.Msg = "获取信息失败"
  1056. br.ErrMsg = "研选分类ID不能为空"
  1057. return
  1058. }
  1059. condition = ` AND a.publish_status = 1 AND a.article_type_id NOT IN (` + articleTypeIds + `) AND (m.industry_name LIKE '%` + keyWord + `%' OR m.subject_names LIKE '%` + keyWord + `%' ) `
  1060. listHz, err := models.GetSearchResourceList(condition)
  1061. if err != nil {
  1062. br.Msg = "获取信息失败"
  1063. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  1064. return
  1065. }
  1066. condition = ` AND a.publish_status = 1 AND a.article_type_id IN (` + articleTypeIds + `) AND (m.industry_name LIKE '%` + keyWord + `%' OR m.subject_names LIKE '%` + keyWord + `%' ) `
  1067. listYx, err := models.GetSearchResourceList(condition)
  1068. if err != nil {
  1069. br.Msg = "获取信息失败"
  1070. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  1071. return
  1072. }
  1073. if len(listYx) > 0 {
  1074. listYx, err = services.HandleIndustryList(listYx, user, "Yx")
  1075. if err != nil {
  1076. br.Msg = "获取信息失败"
  1077. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  1078. return
  1079. }
  1080. }
  1081. if len(listHz) > 0 {
  1082. listHz, err = services.HandleIndustryList(listHz, user, "Hz")
  1083. if err != nil {
  1084. br.Msg = "获取信息失败"
  1085. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  1086. return
  1087. }
  1088. }
  1089. if keyWord != "" {
  1090. go services.AddUserSearchLog(user, keyWord, 4)
  1091. }
  1092. resp := new(models.SearchResourceResp)
  1093. if len(listHz) == 0 {
  1094. listHz = make([]*models.IndustrialManagement, 0)
  1095. }
  1096. if len(listYx) == 0 {
  1097. listYx = make([]*models.IndustrialManagement, 0)
  1098. }
  1099. resp.ListHz = listHz
  1100. resp.ListYx = listYx
  1101. br.Ret = 200
  1102. br.Success = true
  1103. br.Msg = "获取成功"
  1104. br.Data = resp
  1105. }
  1106. // @Title 报告搜索、资源包搜索接口
  1107. // @Description 报告搜索、资源包搜索接口接口
  1108. // @Param KeyWord query string true "搜索关键词"
  1109. // @Param PageSize query int true "每页数据条数"
  1110. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1111. // @Param SearchType query int true "1:综合,2:全部"
  1112. // @Success 200 {object} models.SearchReportAndResourceResp
  1113. // @router /searchReportAndResource [get]
  1114. func (this *MobileReportController) SearchReportAndResource() {
  1115. br := new(models.BaseResponse).Init()
  1116. defer func() {
  1117. this.Data["json"] = br
  1118. this.ServeJSON()
  1119. }()
  1120. user := this.User
  1121. if user == nil {
  1122. br.Msg = "请重新登录"
  1123. br.Ret = 408
  1124. return
  1125. }
  1126. //uid := user.UserId
  1127. keyWord := this.GetString("KeyWord")
  1128. pageSize, _ := this.GetInt("PageSize")
  1129. currentIndex, _ := this.GetInt("CurrentIndex")
  1130. searchType, _ := this.GetInt("SearchType")
  1131. var total int
  1132. var startSize int
  1133. if pageSize <= 0 {
  1134. pageSize = utils.PageSize20
  1135. }
  1136. if currentIndex <= 0 {
  1137. currentIndex = 1
  1138. }
  1139. startSize = paging.StartIndex(currentIndex, pageSize)
  1140. page := paging.GetPaging(currentIndex, pageSize, total)
  1141. var condition string
  1142. var conditionSql string
  1143. //匹配报告标题、
  1144. condition = ` AND ( a.title LIKE '%` + keyWord + `%' OR a.body LIKE '%` + keyWord + `%') AND a.publish_status = 1 `
  1145. conditionSql = ` AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + condition + ` OR ( article_type = 'lyjh' ` + condition + ` ) `
  1146. total, err := models.GetReoprtSearchCount(conditionSql)
  1147. if err != nil {
  1148. br.Msg = "获取信息失败"
  1149. br.Msg = "获取总数失败,Err:" + err.Error()
  1150. return
  1151. }
  1152. if searchType == 1 {
  1153. pageSize = utils.PageSize5
  1154. }
  1155. ListHzReport, err := services.GetReoprtSearchListHz(conditionSql, user.UserId, startSize, pageSize)
  1156. if err != nil {
  1157. br.Msg = "获取失败"
  1158. br.ErrMsg = "获取失败,GetReoprtSearchListHz Err:" + err.Error()
  1159. return
  1160. }
  1161. if len(ListHzReport) == 0 {
  1162. ListHzReport = make([]*models.ArticleCollectionResp, 0)
  1163. }
  1164. var conditionOr string
  1165. conditionOr += ` OR ( m.subject_names LIKE '%` + keyWord + `%' AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + ` AND publish_status = 1 ) `
  1166. condition = ` AND m.industry_name LIKE '%` + keyWord + `%' AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId) + conditionOr
  1167. listHzResource, err := services.GetSearchResourceListHz(condition, user)
  1168. if err != nil {
  1169. br.Msg = "获取信息失败"
  1170. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  1171. return
  1172. }
  1173. resp := new(models.SearchReportAndResourceResp)
  1174. if len(listHzResource) == 0 {
  1175. listHzResource = make([]*models.IndustrialManagement, 0)
  1176. }
  1177. if keyWord != "" {
  1178. go services.AddUserSearchLog(user, keyWord, 5)
  1179. }
  1180. page = paging.GetPaging(currentIndex, pageSize, total)
  1181. resp.Paging = page
  1182. resp.ListHzResource = listHzResource
  1183. resp.ListHzReport = ListHzReport
  1184. br.Ret = 200
  1185. br.Success = true
  1186. br.Msg = "获取成功"
  1187. br.Data = resp
  1188. }
  1189. // @Title 公司速览
  1190. // @Description 公司速览接口
  1191. // @Param ChartPermissionId query int false "分类ID"
  1192. // @Success 200 {object} models.ArticleDataLogoListResp
  1193. // @router /companyList [get]
  1194. func (this *ReportCommonController) CompanyList() {
  1195. br := new(models.BaseResponse).Init()
  1196. defer func() {
  1197. this.Data["json"] = br
  1198. this.ServeJSON()
  1199. }()
  1200. var condition string
  1201. var pars []interface{}
  1202. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  1203. if chartPermissionId > 1 {
  1204. categoryId, err := models.GetCategoryId(chartPermissionId)
  1205. if err != nil && err.Error() != utils.ErrNoRow() {
  1206. br.Msg = "获取信息失败"
  1207. br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error()
  1208. return
  1209. }
  1210. if categoryId != "" {
  1211. condition += ` AND a.category_id IN (` + categoryId + `)`
  1212. }
  1213. }
  1214. condition += ` AND a.type_name = '综述报告' ORDER BY a.modify_time_by_cl DESC `
  1215. list, err := models.CygxArticleDataList(condition, pars)
  1216. if err != nil {
  1217. br.Msg = "获取失败"
  1218. br.ErrMsg = "获取报告封面图片失败, Err:" + err.Error()
  1219. return
  1220. }
  1221. listLogo := make([]*models.ArticleDataLogoResp, 0)
  1222. for i := range list {
  1223. v := list[i]
  1224. comapnyList := services.HandleArticleStock(v.Stock)
  1225. if len(comapnyList) > 1 {
  1226. for kC, vC := range comapnyList {
  1227. sliceCovers := strings.Split(v.Cover, "{|}")
  1228. cover := v.Cover
  1229. if len(sliceCovers) == len(comapnyList) {
  1230. cover = sliceCovers[kC]
  1231. }
  1232. listLogo = append(listLogo, &models.ArticleDataLogoResp{
  1233. ArticleId: v.ArticleId,
  1234. Cover: cover,
  1235. ComapnyList: services.HandleArticleStock(vC.ComapnyName),
  1236. })
  1237. }
  1238. } else {
  1239. listLogo = append(listLogo, &models.ArticleDataLogoResp{
  1240. ArticleId: v.ArticleId,
  1241. Cover: v.Cover,
  1242. ComapnyList: services.HandleArticleStock(v.Stock),
  1243. })
  1244. }
  1245. }
  1246. resp := new(models.ArticleDataLogoListResp)
  1247. resp.List = listLogo
  1248. br.Ret = 200
  1249. br.Success = true
  1250. br.Msg = "获取成功"
  1251. br.Data = resp
  1252. }
  1253. // @Title 时间线
  1254. // @Description 时间线接口
  1255. // @Param PageSize query int true "每页数据条数"
  1256. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1257. // @Param IndustrialManagementId query int false "产业ID"
  1258. // @Success 200 {object} models.TacticsListResp
  1259. // @router /timeline [get]
  1260. func (this *MobileReportController) Timeline() {
  1261. br := new(models.BaseResponse).Init()
  1262. defer func() {
  1263. this.Data["json"] = br
  1264. this.ServeJSON()
  1265. }()
  1266. user := this.User
  1267. if user == nil {
  1268. br.Msg = "请重新登录"
  1269. br.Ret = 408
  1270. return
  1271. }
  1272. pageSize, _ := this.GetInt("PageSize")
  1273. currentIndex, _ := this.GetInt("CurrentIndex")
  1274. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  1275. var startSize int
  1276. if pageSize <= 0 {
  1277. pageSize = utils.PageSize20
  1278. }
  1279. if currentIndex <= 0 {
  1280. currentIndex = 1
  1281. }
  1282. startSize = paging.StartIndex(currentIndex, pageSize)
  1283. var total int
  1284. resp := new(models.TacticsListTimeResp)
  1285. page := paging.GetPaging(currentIndex, pageSize, total)
  1286. list := make([]*models.TimeLineReportItem, 0)
  1287. var err error
  1288. list, total, err = models.GetTimeLineReportIndustrialListTime(user.UserId, industrialManagementId, startSize, pageSize)
  1289. if err != nil {
  1290. br.Msg = "获取信息失败"
  1291. br.ErrMsg = "获取产业报告+晨会点评列表,Err:" + err.Error()
  1292. return
  1293. }
  1294. //查询用户今天是否看过时间线
  1295. count, err := models.GetTimeLineRecordCount(user.UserId, industrialManagementId)
  1296. if err != nil {
  1297. br.Msg = "查询浏览记录数量失败"
  1298. br.ErrMsg = "查询浏览记录数量失败,Err:" + err.Error()
  1299. return
  1300. }
  1301. var recordItem *models.CygxPageHistoryRecord
  1302. if count > 1 {
  1303. recordItem, err = models.GetTimeLineRecordItem(user.UserId, industrialManagementId)
  1304. if err != nil {
  1305. br.Msg = "查询浏览记录失败"
  1306. br.ErrMsg = "查询浏览记录失败,Err:" + err.Error()
  1307. return
  1308. }
  1309. }
  1310. for k, v := range list {
  1311. if v.SubCategoryName != "时间线" && v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
  1312. list[k].IsRed = true
  1313. }
  1314. timeLineRed := false
  1315. if count < 2 && v.SubCategoryName == "时间线" {
  1316. timeLineRed = true
  1317. } else if count > 1 && recordItem.CreateTime.Before(utils.StrTimeToTime(v.PublishDate)) {
  1318. timeLineRed = true
  1319. }
  1320. if v.SubCategoryName == "时间线" && timeLineRed {
  1321. list[k].IsRed = true
  1322. }
  1323. if v.VideoUrl != "" {
  1324. list[k].IsHaveVideo = true
  1325. }
  1326. }
  1327. //添加我的日程访问记录
  1328. item := new(models.CygxPageHistoryRecord)
  1329. item.UserId = user.UserId
  1330. item.CreateTime = time.Now()
  1331. item.CompanyId = user.CompanyId
  1332. item.CompanyName = user.CompanyName
  1333. item.Router = utils.TIME_LINE_ROUTE + strconv.Itoa(industrialManagementId)
  1334. go models.AddCygxPageHistoryRecord(item)
  1335. if len(list) == 0 {
  1336. list = make([]*models.TimeLineReportItem, 0)
  1337. }
  1338. page = paging.GetPaging(currentIndex, pageSize, total)
  1339. resp.List = list
  1340. resp.Paging = page
  1341. br.Ret = 200
  1342. br.Success = true
  1343. br.Msg = "获取成功"
  1344. br.Data = resp
  1345. }
  1346. // @Title 文章留言接口
  1347. // @Description 文章留言接口
  1348. // @Param request body models.AddCygxActivityHelpAsk true "type json string"
  1349. // @Success 200 {object} models.TacticsListResp
  1350. // @router /commentAdd [post]
  1351. func (this *ReportController) CommentAdd() {
  1352. br := new(models.BaseResponse).Init()
  1353. defer func() {
  1354. this.Data["json"] = br
  1355. this.ServeJSON()
  1356. }()
  1357. user := this.User
  1358. if user == nil {
  1359. br.Msg = "请重新登录"
  1360. br.Ret = 408
  1361. return
  1362. }
  1363. var req models.AddCygxArticleCommentReq
  1364. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1365. if err != nil {
  1366. br.Msg = "参数解析异常!"
  1367. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1368. return
  1369. }
  1370. if req.ArticleId <= 0 {
  1371. br.Msg = "文章不存在"
  1372. br.ErrMsg = "文章不存在,文章ID错误"
  1373. return
  1374. }
  1375. if req.Content == "" {
  1376. br.Msg = "建议内容不可为空"
  1377. return
  1378. }
  1379. content := req.Content
  1380. if content == "" {
  1381. br.Msg = "留言内容不能为空!"
  1382. return
  1383. }
  1384. //itemToken, err := services.WxGetToken()
  1385. //if err != nil {
  1386. // br.Msg = "GetWxAccessToken Err:" + err.Error()
  1387. // return
  1388. //}
  1389. //if itemToken.AccessToken == "" {
  1390. // br.Msg = "accessToken is empty"
  1391. // return
  1392. //}
  1393. //commerr, err := weapp.MSGSecCheck(itemToken.AccessToken, content)
  1394. //if err != nil {
  1395. // br.Msg = "内容校验失败!"
  1396. // br.ErrMsg = "内容校验失败,Err:" + err.Error()
  1397. // return
  1398. //}
  1399. //if commerr.ErrCode != 0 {
  1400. // br.Msg = "内容违规,请重新提交!"
  1401. // br.ErrMsg = "内容违规,Err:" + commerr.ErrMSG
  1402. // return
  1403. //}
  1404. articleId := req.ArticleId
  1405. articleInfo, errInfo := models.GetArticleDetailById(articleId)
  1406. if articleInfo == nil {
  1407. br.Msg = "操作失败"
  1408. br.ErrMsg = "文章ID错误,不存在articleId:" + strconv.Itoa(articleId)
  1409. return
  1410. }
  1411. if errInfo != nil {
  1412. br.Msg = "操作失败"
  1413. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1414. return
  1415. }
  1416. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  1417. if err != nil {
  1418. br.Msg = "提交失败!"
  1419. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  1420. return
  1421. }
  1422. if companyDetail == nil {
  1423. br.Msg = "提交失败!"
  1424. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId)
  1425. return
  1426. }
  1427. item := models.CygxArticleComment{
  1428. UserId: user.UserId,
  1429. ArticleId: req.ArticleId,
  1430. CreateTime: time.Now(),
  1431. Mobile: user.Mobile,
  1432. Email: user.Email,
  1433. CompanyId: user.CompanyId,
  1434. CompanyName: companyDetail.CompanyName,
  1435. Content: content,
  1436. Title: articleInfo.Title,
  1437. }
  1438. _, err = models.AddArticleComment(&item)
  1439. if err != nil {
  1440. br.Msg = "提交失败"
  1441. br.ErrMsg = "提交留言失败,Err:" + err.Error()
  1442. return
  1443. }
  1444. services.SendCommentWxTemplateMsg(req, user, articleInfo)
  1445. br.Ret = 200
  1446. br.Success = true
  1447. br.Msg = "提交成功"
  1448. }