summary_manage.go 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703
  1. package cygx
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "github.com/tealeg/xlsx"
  7. "hongze/hz_crm_api/controllers"
  8. "hongze/hz_crm_api/models"
  9. "hongze/hz_crm_api/models/cygx"
  10. "hongze/hz_crm_api/models/system"
  11. "hongze/hz_crm_api/services"
  12. cygxService "hongze/hz_crm_api/services/cygx"
  13. "hongze/hz_crm_api/services/elastic"
  14. "hongze/hz_crm_api/utils"
  15. "os"
  16. "path/filepath"
  17. "strconv"
  18. "strings"
  19. "time"
  20. )
  21. // 纪要管理
  22. type SummaryManage struct {
  23. controllers.BaseAuthController
  24. }
  25. // @Title 文章内容的保存与发布
  26. // @Description 文章内容的保存与发布接口
  27. // @Param request body cygx.SummaryManageAddRep true "type json string"
  28. // @Success 200 操作成功
  29. // @router /summaryManage/PreserveAndPublish [post]
  30. func (this *SummaryManage) PreserveAndPublish() {
  31. br := new(models.BaseResponse).Init()
  32. defer func() {
  33. this.Data["json"] = br
  34. this.ServeJSON()
  35. }()
  36. AdminUser := this.SysUser
  37. if AdminUser == nil {
  38. br.Msg = "请登录"
  39. br.ErrMsg = "请登录,用户信息为空"
  40. br.Ret = 408
  41. return
  42. }
  43. var req cygx.SummaryManageAddRep
  44. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  45. if err != nil {
  46. br.Msg = "参数解析异常!"
  47. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  48. return
  49. }
  50. if req.Title == "" {
  51. br.Msg = "标题不可为空"
  52. br.ErrMsg = "标题不可为空"
  53. return
  54. }
  55. if req.Abstract == "" {
  56. br.Msg = "摘要不可为空"
  57. br.ErrMsg = "摘要不可为空"
  58. return
  59. }
  60. if req.PublishDate == "" {
  61. br.Msg = "发布时间不可为空"
  62. return
  63. }
  64. var articleIdNew int //最新的文章id
  65. var haveResearch bool
  66. var permissionName string
  67. industryName := req.IndustryName
  68. subjectName := req.SubjectName
  69. publishDate := req.PublishDate
  70. reportLink := req.ReportLink
  71. chartPermissionIds := "31" //31研选
  72. industrialManagementIds := req.IndustrialManagementIds
  73. industrialSubjectIds := req.IndustrialSubjectIds
  74. articleId := req.ArticleId
  75. articleTypeId := req.ArticleTypeId
  76. // 产业ID校验
  77. industryIds := make([]int, 0)
  78. industrialManagementIdList := strings.Split(industrialManagementIds, ",")
  79. for _, v := range industrialManagementIdList {
  80. i, err := strconv.Atoi(v)
  81. if err != nil {
  82. br.Msg = "参数解析异常!"
  83. br.ErrMsg = "产业ID不规范,Err:" + err.Error() + industrialManagementIds
  84. return
  85. }
  86. industryIds = append(industryIds, i)
  87. }
  88. if industrialSubjectIds != "" {
  89. industrialSubjectIdList := strings.Split(industrialSubjectIds, ",")
  90. for _, v := range industrialSubjectIdList {
  91. _, err := strconv.Atoi(v)
  92. if err != nil {
  93. br.Msg = "参数解析异常!"
  94. br.ErrMsg = "标的ID不规范,Err:" + err.Error() + industrialSubjectIds
  95. return
  96. }
  97. }
  98. }
  99. chartPermissionIdsList := strings.Split(chartPermissionIds, ",")
  100. for _, v := range chartPermissionIdsList {
  101. chartPermissionId, err := strconv.Atoi(v)
  102. if err != nil {
  103. br.Msg = "发布失败"
  104. br.ErrMsg = "发布失败,Err:" + err.Error()
  105. return
  106. }
  107. charInfo, errCategory := cygx.GetCategoryInfoById(chartPermissionId)
  108. if errCategory != nil {
  109. br.Msg = "获取品种信息失败"
  110. br.ErrMsg = "获取品种信息失败,Err:" + errCategory.Error()
  111. return
  112. }
  113. if strings.Contains(charInfo.PermissionName, "研选") {
  114. haveResearch = true
  115. }
  116. permissionName += charInfo.PermissionName + ","
  117. }
  118. permissionName = strings.TrimRight(permissionName, ",")
  119. if articleId == 0 {
  120. maxArticleIdArticleInfo, errMax := cygx.GetMaxArticleIdInfo()
  121. if errMax != nil {
  122. br.Msg = "发布失败"
  123. br.ErrMsg = "发布失败,Err:" + errMax.Error()
  124. return
  125. }
  126. if maxArticleIdArticleInfo.ArticleId < utils.SummaryArticleId {
  127. articleIdNew = utils.SummaryArticleId
  128. } else {
  129. articleIdNew = maxArticleIdArticleInfo.ArticleId + 1
  130. }
  131. }
  132. //处理文章类型信息
  133. articleTypeInfo, err := cygx.GetCygxArticleTypeDetailById(articleTypeId)
  134. if err != nil {
  135. br.Msg = "请选择报告类型"
  136. br.ErrMsg = "获取报告类型信息失败,Err:" + err.Error()
  137. return
  138. }
  139. //处理作者内容的格式信息
  140. department := req.SellerAndMobile
  141. itemDepartment := new(cygx.CygxArticleDepartment)
  142. if !strings.Contains(department, "-") {
  143. br.Msg = "作者格式错误"
  144. return
  145. }
  146. slice := strings.Split(department, "-")
  147. if len(slice) < 2 {
  148. br.Msg = "作者格式错误"
  149. return
  150. }
  151. strnum := strings.Index(department, "-")
  152. itemDepartment.NickName = department[0:strnum]
  153. itemDepartment.CreateTime = time.Now()
  154. itemDepartment.Remark = department[strnum+1:]
  155. itemDepartment.Content = req.SellerAndMobile
  156. remarks := itemDepartment.Remark
  157. remarks = strings.Replace(remarks, ",", "", -1)
  158. remarks = strings.Replace(remarks, ",", "", -1)
  159. remarks = strings.Replace(remarks, " ", "", -1)
  160. itemDepartment.Remarks = remarks
  161. total, _ := cygx.GetArticleDepartmentCount(itemDepartment.NickName, itemDepartment.Remarks)
  162. var newDepartmentId int64
  163. if total == 0 {
  164. detail, err := cygx.GetCygxConfigDetailByCode("department_img_url")
  165. if err != nil {
  166. br.Msg = "获取失败"
  167. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  168. return
  169. }
  170. sliceDepart := strings.Split(detail.ConfigValue, "{|}")
  171. totalDepart, err := cygx.GetArticleDepartmentCountAll()
  172. if err != nil {
  173. br.Msg = "获取失败"
  174. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  175. return
  176. }
  177. itemDepartment.ImgUrl = sliceDepart[totalDepart%10]
  178. //避免代码冗余,放弃插入事务处理
  179. newDepartmentId, err = cygx.AddCygxArticleDepartment(itemDepartment)
  180. if err != nil {
  181. br.Msg = "发布失败"
  182. br.ErrMsg = "发布失败作者信息查询错误,Err:" + err.Error()
  183. return
  184. }
  185. } else {
  186. departmentDetail, err := cygx.GetArticleDepartmentDateil(itemDepartment.NickName, itemDepartment.Remarks)
  187. if err != nil {
  188. br.Msg = "发布失败"
  189. br.ErrMsg = "发布失败作者信息查询错误,Err:" + err.Error()
  190. return
  191. }
  192. newDepartmentId = int64(departmentDetail.DepartmentId)
  193. }
  194. expertNumStr, expertContentStr, interviewDateStr, fileLink := cygx.BodyAnalysis(req.Body)
  195. item := new(cygx.CygxArticle)
  196. item.AdminId = AdminUser.AdminId
  197. item.AdminName = AdminUser.RealName
  198. item.Title = req.Title
  199. item.Body = req.Body
  200. item.BodyText, _ = cygxService.GetReportContentTextSubNew(req.Body)
  201. item.Abstract = req.Abstract
  202. item.CategoryName = permissionName
  203. item.ArticleId = articleId
  204. item.CreateDate = time.Now()
  205. item.LastUpdatedTime = time.Now()
  206. if articleTypeInfo.IsSendEs == 1 {
  207. item.IsSummary = 1
  208. } else {
  209. item.IsReport = 1
  210. }
  211. item.Source = 1
  212. item.ArticleIdMd5 = utils.MD5(strconv.Itoa(articleIdNew))
  213. item.UpdateFrequency = "unknow"
  214. item.SellerAndMobile = req.SellerAndMobile
  215. item.ExpertBackground = expertContentStr
  216. item.ExpertNumber = expertNumStr
  217. item.InterviewDate = interviewDateStr
  218. item.FileLink = fileLink
  219. item.ChartPermissionIds = chartPermissionIds
  220. item.DepartmentId = int(newDepartmentId)
  221. item.ArticleTypeId = articleTypeId
  222. item.ArticleTypeName = articleTypeInfo.ArticleTypeName
  223. publishDateSlice := strings.Split(publishDate, " ") //过滤前端传过来的时分秒
  224. item.PublishDate = utils.StrTimeToTime(publishDateSlice[0] + " 00:00:00")
  225. item.ReportLink = reportLink
  226. if haveResearch {
  227. item.Department = "机构投资者"
  228. } else {
  229. item.Department = "弘则权益研究"
  230. br.Msg = "请选择研选行业"
  231. return
  232. }
  233. charInfo, err := cygx.GetCategoryInfoByName(utils.CHART_PERMISSION_NAME_MF_YANXUAN)
  234. if err != nil {
  235. br.Msg = "操作失败"
  236. br.ErrMsg = "获取所属行业信息失败,Err:" + err.Error()
  237. return
  238. }
  239. if req.DoType == 1 {
  240. item.PublishStatus = 1
  241. }
  242. //industrialManagementId, _ := strconv.Atoi(industrialManagementIds)
  243. //industrialDetail, _ := cygx.GetIndustrialManagemenDetailById(industrialManagementId)
  244. var errArt error
  245. if articleId == 0 {
  246. item.ArticleId = articleIdNew
  247. //需求修改纪要的新增与修改与报告一致
  248. _, err := cygx.AddAReportrticle(item, charInfo.ChartPermissionId, industryName, subjectName, itemDepartment, industrialManagementIds, industrialSubjectIds)
  249. errArt = err
  250. if errArt == nil {
  251. //articleInfo, err := cygx.GetArticleIdInfoBySummaryManageIdEdit(int(artNewId))
  252. if err == nil && req.DoType == 1 {
  253. go cygxService.DoArticleOnenIdWxTemplateMsg(articleIdNew, 1)
  254. }
  255. }
  256. } else {
  257. articleInfo, errInfo := cygx.GetArticleIdInfoByArticleId(articleId)
  258. if articleInfo == nil {
  259. br.Msg = "文章不存在"
  260. return
  261. }
  262. if errInfo != nil {
  263. br.Msg = "发布失败"
  264. br.ErrMsg = "发布失败,Err:" + errInfo.Error()
  265. return
  266. }
  267. if item.PublishStatus == 0 {
  268. item.PublishStatus = articleInfo.PublishStatus
  269. }
  270. item.ArticleId = articleId
  271. err := cygx.EditReportrticle(item, charInfo.ChartPermissionId, industryName, subjectName, articleInfo.PublishStatus, itemDepartment, industrialManagementIds, industrialSubjectIds)
  272. errArt = err
  273. if errArt == nil && req.DoType == 1 {
  274. go cygxService.DoArticleOnenIdWxTemplateMsg(articleId, 1)
  275. }
  276. }
  277. if errArt != nil {
  278. br.Msg = "发布失败"
  279. br.ErrMsg = "发布失败,Err:" + errArt.Error()
  280. return
  281. }
  282. // 查研观向7.4-这里暂时注释掉, 目前article和industry有关联表处理, 此处应该是没有在用了
  283. //var subjectIds string
  284. //subjectIds, _ = cygx.GetSubjectIds(articleId)
  285. //{|1|}表示报告类型,{|2|}表示纪要类型
  286. //cygx.UpdateSubjecIds(subjectIds+"—"+strconv.Itoa(industrialDetail.IndustrialManagementId)+"{|2|}", industrialDetail.IndustrialManagementId, articleId)
  287. if item.PublishStatus == 1 && articleTypeInfo.IsSendEs == 1 {
  288. services.EsAddOrEditData(item)
  289. }
  290. ////同步数据到最新表
  291. //if req.ArticleId == 0 {
  292. // if item.PublishStatus == 1 {
  293. // go cygxService.UpdateResourceData(item.ArticleId, "article", "add", time.Now().Format(utils.FormatDateTime))
  294. // }
  295. //} else {
  296. // if item.PublishStatus == 1 {
  297. // go cygxService.UpdateResourceData(item.ArticleId, "article", "update", time.Now().Format(utils.FormatDateTime))
  298. // }
  299. // if req.DoType == 1 {
  300. // go cygxService.UpdateResourceData(item.ArticleId, "article", "add", time.Now().Format(utils.FormatDateTime))
  301. // }
  302. //}
  303. if len(industryIds) > 0 {
  304. go cygxService.UpdateIndustryLayoutTime(industryIds, false) // 查研观向7.4-更新产业布局时间
  305. go elastic.AddComprehensiveIndustrialSource("Yx", item.ArticleId) // 查研观向10.6 更新搜索引擎的产业资源包
  306. }
  307. go elastic.AddComprehensiveArticle(item.ArticleId) // ES添加文章:报告、纪要
  308. go cygxService.UpdateArticleResourceData(item.ArticleId) //写入首页最新 cygx_resource_data 表
  309. br.Ret = 200
  310. br.Success = true
  311. br.Msg = "操作成功"
  312. br.IsAddLog = true
  313. }
  314. // @Title 文章的发布与取消发布
  315. // @Description 文章的发布与取消发布接口
  316. // @Param request body cygx.SummaryManageIdRep true "type json string"
  317. // @Success 200 操作成功
  318. // @router /summaryManage/PublishAndCancel [post]
  319. func (this *SummaryManage) PublishAndCancel() {
  320. br := new(models.BaseResponse).Init()
  321. defer func() {
  322. this.Data["json"] = br
  323. this.ServeJSON()
  324. }()
  325. AdminUser := this.SysUser
  326. indexName := utils.IndexName
  327. if AdminUser == nil {
  328. br.Msg = "请登录"
  329. br.ErrMsg = "请登录,用户信息为空"
  330. br.Ret = 408
  331. return
  332. }
  333. var req cygx.SummaryManageIdRep
  334. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  335. if err != nil {
  336. br.Msg = "参数解析异常!"
  337. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  338. return
  339. }
  340. articleId := req.ArticleId
  341. item := new(cygx.CygxArticle)
  342. articleInfo, errInfo := cygx.GetArticleInfoOtherByArticleId(articleId)
  343. if articleInfo == nil {
  344. br.Msg = "操作失败"
  345. br.ErrMsg = "纪要ID错误"
  346. return
  347. }
  348. if errInfo != nil {
  349. br.Msg = "操作失败"
  350. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  351. return
  352. }
  353. item.ArticleId = articleId
  354. item.Title = articleInfo.Title
  355. item.BodyText = articleInfo.BodyText
  356. item.Body = articleInfo.Body
  357. item.PublishDate = articleInfo.PublishDate
  358. item.ExpertBackground = articleInfo.ExpertBackground
  359. item.CategoryId = articleInfo.CategoryId
  360. //item.Annotation, _ = GetReportContentTextSubNew(v.Annotation)
  361. //item.Abstract, _ = GetReportContentTextSubNew(v.Abstract)
  362. if articleInfo.PublishStatus == 0 {
  363. item.PublishStatus = 1
  364. item.AdminId = AdminUser.AdminId
  365. item.AdminName = AdminUser.RealName
  366. services.EsAddOrEditData(item)
  367. //go cygxService.UpdateResourceData(item.ArticleId, "article", "add", time.Now().Format(utils.FormatDateTime))
  368. } else {
  369. item.AdminId = articleInfo.AdminId
  370. item.AdminName = articleInfo.AdminName
  371. item.PublishStatus = 0
  372. services.EsDeleteData(indexName, strconv.Itoa(articleInfo.ArticleId))
  373. //go cygxService.UpdateResourceData(item.ArticleId, "article", "delete", time.Now().Format(utils.FormatDateTime))
  374. }
  375. err = cygx.PublishAndCancel(item)
  376. if err != nil {
  377. br.Msg = "操作失败"
  378. br.ErrMsg = "操作失败,Err:" + err.Error()
  379. return
  380. }
  381. //专项调研类型的报告单独走发送
  382. if articleInfo.SubCategoryName == "专项调研" {
  383. if item.PublishStatus == 1 {
  384. cygxService.SendWxMsgWithCygxActivitySpecialArticle(item.ArticleId)
  385. }
  386. } else {
  387. if item.PublishStatus == 1 {
  388. articleIndustrial, _ := cygx.GetIndustrialManagemenDetailByAaticle(articleInfo.ArticleId)
  389. if articleIndustrial.ArticleId > 0 {
  390. go cygxService.DoArticleOnenIdWxTemplateMsg(articleId, 1)
  391. }
  392. go elastic.AddComprehensiveIndustrialSource("Yx", item.ArticleId) // 查研观向10.6 更新搜索引擎的产业资源包
  393. }
  394. }
  395. go elastic.AddComprehensiveArticle(articleId) // ES添加文章:报告、纪要
  396. go cygxService.UpdateArticleResourceData(item.ArticleId) //写入首页最新 cygx_resource_data 表
  397. br.Ret = 200
  398. br.Success = true
  399. br.Msg = "操作成功"
  400. br.IsAddLog = true
  401. }
  402. // @Title 文章详情
  403. // @Description 获取文章详情接口
  404. // @Param ArticleId query int true "文章ID"
  405. // @Success Ret=200 {object} cygx.SummaryManageEditDetail
  406. // @router /summaryManage/detail [get]
  407. func (this *SummaryManage) Detail() {
  408. br := new(models.BaseResponse).Init()
  409. defer func() {
  410. this.Data["json"] = br
  411. this.ServeJSON()
  412. }()
  413. AdminUser := this.SysUser
  414. if AdminUser == nil {
  415. br.Msg = "请登录"
  416. br.ErrMsg = "请登录,用户信息为空"
  417. br.Ret = 408
  418. return
  419. }
  420. articleId, _ := this.GetInt("ArticleId")
  421. if articleId < 1 {
  422. br.Msg = "请输入文章ID"
  423. return
  424. }
  425. articleInfo, err := cygx.GetArticleIdInfoByreportIdEdit(articleId)
  426. if err != nil {
  427. br.Msg = "文章内容不存在"
  428. br.ErrMsg = "纪要ID错误,Err:" + err.Error()
  429. return
  430. }
  431. detail, _ := cygx.GetArticleDepartmentDateilByDepartmentId(articleInfo.DepartmentId)
  432. industrialList, err := cygx.GetIndustrialArticleGroupManagementList(articleInfo.ArticleId)
  433. if err != nil && err.Error() != utils.ErrNoRow() {
  434. br.Msg = "获取信息失败"
  435. br.ErrMsg = "获取活动关联的产业列表信息失败,Err:" + err.Error() + "activityId:" + strconv.Itoa(articleInfo.ArticleId)
  436. return
  437. }
  438. subjectList, err := cygx.GetSubjectArticleGroupManagementList(articleInfo.ArticleId)
  439. if err != nil && err.Error() != utils.ErrNoRow() {
  440. br.Msg = "获取信息失败"
  441. br.ErrMsg = "获取活动关联的标的列表信息失败,Err:" + err.Error() + "activityId:" + strconv.Itoa(articleInfo.ArticleId)
  442. return
  443. }
  444. articleInfo.ListIndustrial = industrialList
  445. articleInfo.ListSubject = subjectList
  446. resp := cygx.ArticleDetailResp{
  447. ArticleId: articleInfo.ArticleId,
  448. Title: articleInfo.Title,
  449. Abstract: articleInfo.Abstract,
  450. Body: articleInfo.Body,
  451. PublishStatus: articleInfo.PublishStatus,
  452. PublishDate: articleInfo.PublishDate,
  453. CreateDate: articleInfo.CreateDate,
  454. LastUpdatedTime: articleInfo.LastUpdatedTime,
  455. ArticleIdMd5: articleInfo.ArticleIdMd5,
  456. SellerAndMobile: articleInfo.SellerAndMobile,
  457. SubjectName: articleInfo.SubjectName,
  458. IndustryName: articleInfo.IndustryName,
  459. DepartmentId: articleInfo.DepartmentId,
  460. ChartPermissionIds: articleInfo.ChartPermissionIds,
  461. ArticleTypeId: articleInfo.ArticleTypeId,
  462. ArticleTypeName: articleInfo.ArticleTypeName,
  463. ListIndustrial: articleInfo.ListIndustrial,
  464. ListSubject: articleInfo.ListSubject,
  465. ReportLink: articleInfo.ReportLink,
  466. ImgUrl: detail.ImgUrl,
  467. NickName: detail.NickName,
  468. }
  469. br.Ret = 200
  470. br.Success = true
  471. br.Msg = "获取成功"
  472. br.Data = resp
  473. }
  474. // @Title 删除纪要
  475. // @Description 删除纪要接口
  476. // @Param request body cygx.SummaryManageIdRep true "type json string"
  477. // @Success Ret=200
  478. // @router /summaryManage/delete [post]
  479. func (this *SummaryManage) Delete() {
  480. br := new(models.BaseResponse).Init()
  481. defer func() {
  482. this.Data["json"] = br
  483. this.ServeJSON()
  484. }()
  485. sysUser := this.SysUser
  486. indexName := utils.IndexName
  487. if sysUser == nil {
  488. br.Msg = "请登录"
  489. br.ErrMsg = "请登录,SysUser Is Empty"
  490. br.Ret = 408
  491. return
  492. }
  493. var req cygx.SummaryManageIdRep
  494. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  495. if err != nil {
  496. br.Msg = "参数解析异常!"
  497. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  498. return
  499. }
  500. articleId := req.ArticleId
  501. if articleId < 1 {
  502. br.Msg = "请输入产业ID"
  503. return
  504. }
  505. articleInfo, errInfo := cygx.GetArticleInfoOtherByArticleId(articleId)
  506. if articleInfo == nil {
  507. br.Msg = "操作失败"
  508. br.ErrMsg = "纪要ID错误"
  509. return
  510. }
  511. if errInfo != nil {
  512. br.Msg = "操作失败"
  513. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  514. return
  515. }
  516. services.EsDeleteData(indexName, strconv.Itoa(articleInfo.ArticleId))
  517. err = cygx.DeleteArticleReport(articleInfo.ArticleId)
  518. if err != nil {
  519. br.Msg = "删除信息失败"
  520. br.ErrMsg = "删除信息失败,Err:" + err.Error()
  521. return
  522. }
  523. //go cygxService.UpdateResourceData(articleInfo.ArticleId, "article", "delete", time.Now().Format(utils.FormatDateTime))
  524. go cygxService.UpdateArticleResourceData(articleInfo.ArticleId) //写入首页最新 cygx_resource_data 表
  525. br.Ret = 200
  526. br.Success = true
  527. br.Msg = "已删除"
  528. br.IsAddLog = true
  529. }
  530. // @Title 纪要列表
  531. // @Description 获取纪要列表接口
  532. // @Param PageSize query int true "每页数据条数"
  533. // @Param CurrentIndex query int true "当前页页码,从1开始"
  534. // @Param PublishStatus query int true "发布状态 ,0未发布,1已发布,传2查询所有"
  535. // @Param CategoryName query string true "行业名称"
  536. // @Param StartDate query string true "开始时间 ,列如2021-03-06 "
  537. // @Param EndDate query string true "结束时间,列如2021-03-06 "
  538. // @Param KeyWord query string true "搜索关键词"
  539. // @Param Label query string true "搜索报告标签"
  540. // @Param NickName query string true "作者昵称"
  541. // @Param Departmentİd query int false "作者İd"
  542. // @Param ArticleTypeId query int false `"文章类型ID"
  543. // @Success 200 {object} cygx.GetSummaryManageListRep
  544. // @router /summaryManage/list [get]
  545. func (this *SummaryManage) SummaryManageList() {
  546. br := new(models.BaseResponse).Init()
  547. defer func() {
  548. this.Data["json"] = br
  549. this.ServeJSON()
  550. }()
  551. sysUser := this.SysUser
  552. if sysUser == nil {
  553. br.Msg = "请登录"
  554. br.ErrMsg = "请登录,SysUser Is Empty"
  555. return
  556. }
  557. pageSize, _ := this.GetInt("PageSize")
  558. currentIndex, _ := this.GetInt("CurrentIndex")
  559. publishStatus, _ := this.GetInt("PublishStatus")
  560. categoryName := this.GetString("CategoryName")
  561. startDate := this.GetString("StartDate")
  562. endDate := this.GetString("EndDate")
  563. keyWord := this.GetString("KeyWord")
  564. label := this.GetString("Label")
  565. nickName := this.GetString("NickName")
  566. departmentİd, _ := this.GetInt("Departmentİd")
  567. articleTypeId, _ := this.GetInt("ArticleTypeId")
  568. resp := new(cygx.GetSummaryManageListRep)
  569. var startSize int
  570. if pageSize <= 0 {
  571. pageSize = utils.PageSize20
  572. }
  573. if currentIndex <= 0 {
  574. currentIndex = 1
  575. }
  576. startSize = utils.StartIndex(currentIndex, pageSize)
  577. var condition string
  578. var pars []interface{}
  579. condition += ` WHERE art.article_type_id >0 `
  580. if articleTypeId > 0 {
  581. condition += ` AND art.article_type_id = ` + strconv.Itoa(articleTypeId)
  582. }
  583. if keyWord != "" {
  584. condition += ` AND (art.title LIKE '%` + keyWord + `%' ) `
  585. }
  586. if nickName != "" {
  587. condition += ` AND (art.seller_and_mobile LIKE '%` + nickName + `%' ) `
  588. }
  589. if departmentİd > 0 {
  590. condition += ` AND art.department_id = ` + strconv.Itoa(departmentİd)
  591. }
  592. //行业名称
  593. if categoryName != "" {
  594. condition += ` AND art.category_name LIKE '%` + categoryName + `%' `
  595. }
  596. if startDate != "" {
  597. condition += ` AND art.publish_date >= ` + "'" + startDate + " 00:00:00'"
  598. }
  599. if endDate != "" {
  600. condition += ` AND art.publish_date <= ` + "'" + endDate + " 23:59:59'"
  601. }
  602. if startDate != "" || endDate != "" {
  603. condition += ` AND art.publish_status =1 `
  604. }
  605. if publishStatus == 0 || publishStatus == 1 {
  606. condition += ` AND art.publish_status = ` + strconv.Itoa(publishStatus)
  607. }
  608. //如果标签列表不为空则作以下关联搜索
  609. if label != "" {
  610. managementIds, err := cygx.GetManagementIdsByNameLike(label)
  611. if err != nil {
  612. br.Msg = "获取信息失败"
  613. br.ErrMsg = "获取产业信息失败,Err:" + err.Error()
  614. return
  615. }
  616. subjectIds, err := cygx.GetIndustrialSubjectIdsByNameLike(label)
  617. if err != nil {
  618. br.Msg = "获取信息失败"
  619. br.ErrMsg = "获取标的信息失败,Err:" + err.Error()
  620. return
  621. }
  622. var articleIdmanagement string
  623. var articleIdsubject string
  624. var articleIds string
  625. if managementIds != "" {
  626. articleIdmanagement, err = cygx.GetArticleIdsByIndustrialManagementId(managementIds)
  627. if err != nil {
  628. br.Msg = "获取信息失败"
  629. br.ErrMsg = "获取活动ID信息失败,Err:" + err.Error()
  630. return
  631. }
  632. }
  633. if subjectIds != "" {
  634. articleIdsubject, err = cygx.GetArticleIdsBySubjectId(subjectIds)
  635. if err != nil {
  636. br.Msg = "获取信息失败"
  637. br.ErrMsg = "获取活动ID信息失败,Err:" + err.Error()
  638. return
  639. }
  640. }
  641. if articleIdmanagement != "" && articleIdsubject != "" {
  642. articleIds = articleIdmanagement + "," + articleIdsubject
  643. } else if articleIdmanagement != "" && articleIdsubject == "" {
  644. articleIds = articleIdmanagement
  645. } else if articleIdmanagement == "" && articleIdsubject != "" {
  646. articleIds = articleIdsubject
  647. }
  648. if articleIds != "" {
  649. condition += ` AND art.article_id IN (` + articleIds + `)`
  650. } else {
  651. // 如果标签关联的报告为空,那么就直接返回空
  652. page := paging.GetPaging(currentIndex, pageSize, 0)
  653. resp.List = make([]*cygx.CygxArticleList, 0)
  654. resp.Paging = page
  655. br.Ret = 200
  656. br.Success = true
  657. br.Msg = "获取成功"
  658. br.Data = resp
  659. return
  660. }
  661. }
  662. total, err := cygx.GetASummaryManageCount(condition, pars)
  663. if err != nil {
  664. br.Msg = "获取失败"
  665. br.ErrMsg = "获取失败,Err:" + err.Error()
  666. return
  667. }
  668. condition += ` GROUP BY art.article_id `
  669. condition += ` ORDER BY art.top_time DESC , art.publish_date DESC `
  670. list, errList := cygx.GetSummaryManageList(condition, pars, startSize, pageSize)
  671. if errList != nil {
  672. br.Msg = "获取失败"
  673. br.ErrMsg = "获取失败,Err:" + errList.Error()
  674. return
  675. }
  676. var articleIdStr string
  677. for _, v := range list {
  678. articleIdStr += strconv.Itoa(v.ArticleId) + ","
  679. }
  680. articleIdStr = strings.TrimRight(articleIdStr, ",")
  681. // 查研观向7.4-报告关联多个产业
  682. mapIndustrial := make(map[int]string)
  683. mapSubject := make(map[string]string)
  684. if articleIdStr != "" {
  685. industrialList, err := cygx.GetIndustrialArticleGroupListByarticleIds(articleIdStr)
  686. if err != nil {
  687. br.Msg = "获取失败"
  688. br.ErrMsg = "获取失败,GetIndustrialArticleGroupListByarticleIds Err:" + err.Error()
  689. return
  690. }
  691. subjectList, err := cygx.GetSubjectArticleGroupListByarticleIds(articleIdStr)
  692. if err != nil {
  693. br.Msg = "获取失败"
  694. br.ErrMsg = "获取失败,GetSubjectArticleGroupListByarticleIds Err:" + err.Error()
  695. return
  696. }
  697. //合并活动对应的多个标的
  698. for _, v := range subjectList {
  699. mapSubject[fmt.Sprint(v.ArticleId, "_", v.IndustrialManagementId)] += v.SubjectName + "/"
  700. }
  701. //活动对应的产业
  702. for _, v := range industrialList {
  703. var labelSubject string
  704. labelSubject = mapSubject[fmt.Sprint(v.ArticleId, "_", v.IndustrialManagementId)]
  705. if labelSubject != "" {
  706. mapIndustrial[v.ArticleId] += v.IndustryName + "--" + strings.TrimRight(labelSubject, "/") + ","
  707. } else {
  708. mapIndustrial[v.ArticleId] += v.IndustryName + ","
  709. }
  710. }
  711. }
  712. for k, v := range list {
  713. if v.PublishStatus == 0 {
  714. list[k].PublishDate = ""
  715. } else {
  716. list[k].PublishDate = utils.TimeRemoveHms2(v.PublishDate)
  717. }
  718. if mapIndustrial[v.ArticleId] != "" {
  719. list[k].IndustryName = strings.TrimRight(mapIndustrial[v.ArticleId], ",")
  720. }
  721. }
  722. page := paging.GetPaging(currentIndex, pageSize, total)
  723. resp.List = list
  724. resp.Paging = page
  725. br.Ret = 200
  726. br.Success = true
  727. br.Msg = "获取成功"
  728. br.Data = resp
  729. }
  730. // @Title 敏捷搜索关键词的列表
  731. // @Description 获取敏捷搜索关键词的列表接口
  732. // @Success 200 {object} cygx.SummaryFastsearchKeywordsListResp
  733. // @router /summaryManage/fastSearchKeWord [get]
  734. func (this *SummaryManage) FastSearch() {
  735. br := new(models.BaseResponse).Init()
  736. defer func() {
  737. this.Data["json"] = br
  738. this.ServeJSON()
  739. }()
  740. AdminUser := this.SysUser
  741. if AdminUser == nil {
  742. br.Msg = "请登录"
  743. br.ErrMsg = "请登录,用户信息为空"
  744. br.Ret = 408
  745. return
  746. }
  747. resp := new(cygx.SummaryFastsearchKeywordsListResp)
  748. list, err := cygx.GetSummaryFastsearchKeywordsList()
  749. if err != nil {
  750. br.Msg = "获取失败"
  751. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  752. return
  753. }
  754. resp.List = list
  755. br.Ret = 200
  756. br.Success = true
  757. br.Msg = "获取成功"
  758. br.Data = resp
  759. }
  760. // @Title 新增和修改敏捷搜索关键词的列表
  761. // @Description 新增和修改敏捷搜索关键词的列表接口
  762. // @Param request body cygx.SummaryFastsearchKeywordsResp true "type json string"
  763. // @Success Ret=200
  764. // @router /summaryManage/editFastSearchKeWord [post]
  765. func (this *SummaryManage) EditFastSearch() {
  766. br := new(models.BaseResponse).Init()
  767. defer func() {
  768. this.Data["json"] = br
  769. this.ServeJSON()
  770. }()
  771. AdminUser := this.SysUser
  772. if AdminUser == nil {
  773. br.Msg = "请登录"
  774. br.ErrMsg = "请登录,用户信息为空"
  775. br.Ret = 408
  776. return
  777. }
  778. req := new(cygx.SummaryFastsearchKeywordsResp)
  779. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  780. if err != nil {
  781. br.Msg = "参数解析异常!"
  782. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  783. return
  784. }
  785. keyWord := req.KeyWord
  786. slicekeyWord := strings.Split(keyWord, ",")
  787. var items []*cygx.CygxSummaryFastsearchKeywords
  788. for _, v := range slicekeyWord {
  789. var item = new(cygx.CygxSummaryFastsearchKeywords)
  790. item.CreateTime = time.Now()
  791. item.KeyWord = v
  792. items = append(items, item)
  793. fmt.Println(v)
  794. }
  795. _, err = cygx.AddSummaryFastsearchKeywords(items)
  796. if err != nil {
  797. br.Msg = "操作失败"
  798. br.ErrMsg = "操作失败,Err:" + err.Error()
  799. return
  800. }
  801. br.Ret = 200
  802. br.Success = true
  803. br.Msg = "操作成功"
  804. }
  805. // @Title 永续客户是否展示
  806. // @Description 获取永续客户是否展示详情接口
  807. // @Success 200 {object} cygx.SummaryFastsearchKeywordsListResp
  808. // @router /summaryManage/sustainableDetail [get]
  809. func (this *SummaryManage) Sustainable() {
  810. br := new(models.BaseResponse).Init()
  811. defer func() {
  812. this.Data["json"] = br
  813. this.ServeJSON()
  814. }()
  815. AdminUser := this.SysUser
  816. if AdminUser == nil {
  817. br.Msg = "请登录"
  818. br.ErrMsg = "请登录,用户信息为空"
  819. br.Ret = 408
  820. return
  821. }
  822. detail, err := cygx.GetCygxConfigDetail()
  823. if err != nil {
  824. br.Msg = "获取失败"
  825. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  826. return
  827. }
  828. if detail.ConfigValue == "1" {
  829. detail.OperationButton = true
  830. }
  831. br.Ret = 200
  832. br.Success = true
  833. br.Msg = "获取成功"
  834. br.Data = detail
  835. }
  836. // @Title 修改永续客户是否展示
  837. // @Description 修改永续客户是否展示接口
  838. // @Success Ret=200
  839. // @router /summaryManage/sustainableEdit [post]
  840. func (this *SummaryManage) EditSustainable() {
  841. br := new(models.BaseResponse).Init()
  842. defer func() {
  843. this.Data["json"] = br
  844. this.ServeJSON()
  845. }()
  846. AdminUser := this.SysUser
  847. if AdminUser == nil {
  848. br.Msg = "请登录"
  849. br.ErrMsg = "请登录,SysUser Is Empty"
  850. br.Ret = 408
  851. return
  852. }
  853. var newValue int
  854. detail, err := cygx.GetCygxConfigDetail()
  855. if err != nil {
  856. br.Msg = "获取失败"
  857. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  858. return
  859. }
  860. if detail.ConfigValue == "1" {
  861. newValue = 0
  862. } else {
  863. newValue = 1
  864. }
  865. err = cygx.CygxConfigUpdate(newValue)
  866. if err != nil {
  867. br.Msg = "操作失败"
  868. br.ErrMsg = "操作失败,Err:" + err.Error()
  869. return
  870. }
  871. br.Ret = 200
  872. br.Success = true
  873. br.Msg = "操作成功"
  874. }
  875. // @Title 提问列表详情
  876. // @Description 获取提问列表详情接口
  877. // @Param ArticleId query int true "文章ID"
  878. // @Success 200 {object} cygx.ActivityHelpAskListResp
  879. // @router /summaryManage/askList [get]
  880. func (this *SummaryManage) AskList() {
  881. br := new(models.BaseResponse).Init()
  882. defer func() {
  883. this.Data["json"] = br
  884. this.ServeJSON()
  885. }()
  886. sysUser := this.SysUser
  887. if sysUser == nil {
  888. br.Msg = "请登录"
  889. br.ErrMsg = "请登录,SysUser Is Empty"
  890. return
  891. }
  892. articleId, _ := this.GetInt("ArticleId")
  893. articleInfo, _ := cygx.GetArticleIdInfoByArticleId(articleId)
  894. if articleInfo == nil {
  895. br.Msg = "操作失败"
  896. br.ErrMsg = "报告ID错误"
  897. return
  898. }
  899. list, err := cygx.GetArticleAskList(articleInfo.ArticleId)
  900. resp := new(cygx.ArticleAskListResp)
  901. if err != nil {
  902. br.Msg = "获取失败"
  903. br.ErrMsg = "获取失败,Err:" + err.Error()
  904. return
  905. }
  906. resp.List = list
  907. br.Ret = 200
  908. br.Success = true
  909. br.Msg = "获取成功"
  910. br.Data = resp
  911. }
  912. // @Title 提问详情excel表格下载
  913. // @Description 提问详情excel表格下载接口
  914. // @Param SummaryManageId query int true "纪要ID"
  915. // @Success 200 导出成功
  916. // @router /summaryManage/askListExport [get]
  917. func (this *SummaryManage) AskListExport() {
  918. br := new(models.BaseResponse).Init()
  919. defer func() {
  920. this.Data["json"] = br
  921. this.ServeJSON()
  922. }()
  923. sysUser := this.SysUser
  924. if sysUser == nil {
  925. br.Msg = "请登录"
  926. br.ErrMsg = "请登录,SysUser Is Empty"
  927. return
  928. }
  929. articleId, _ := this.GetInt("ArticleId")
  930. articleInfo, _ := cygx.GetArticleIdInfoByArticleId(articleId)
  931. if articleInfo == nil {
  932. br.Msg = "操作失败"
  933. br.ErrMsg = "报告ID错误"
  934. return
  935. }
  936. list, err := cygx.GetArticleAskList(articleInfo.ArticleId)
  937. if err != nil {
  938. br.Msg = "获取失败"
  939. br.ErrMsg = "获取失败,Err:" + err.Error()
  940. return
  941. }
  942. //创建excel
  943. dir, err := os.Executable()
  944. exPath := filepath.Dir(dir)
  945. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  946. xlsxFile := xlsx.NewFile()
  947. if err != nil {
  948. br.Msg = "生成文件失败"
  949. br.ErrMsg = "生成文件失败"
  950. return
  951. }
  952. style := xlsx.NewStyle()
  953. alignment := xlsx.Alignment{
  954. Horizontal: "center",
  955. Vertical: "center",
  956. WrapText: true,
  957. }
  958. style.Alignment = alignment
  959. style.ApplyAlignment = true
  960. sheet, err := xlsxFile.AddSheet("名单")
  961. if err != nil {
  962. br.Msg = "新增Sheet失败"
  963. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  964. return
  965. }
  966. //标头
  967. rowTitle := sheet.AddRow()
  968. cellA := rowTitle.AddCell()
  969. cellA.Value = "姓名"
  970. cellB := rowTitle.AddCell()
  971. cellB.Value = "公司名称"
  972. cellC := rowTitle.AddCell()
  973. cellC.Value = "问题"
  974. cellD := rowTitle.AddCell()
  975. cellD.Value = "提交时间"
  976. for _, item := range list {
  977. row := sheet.AddRow()
  978. cellA := row.AddCell()
  979. cellA.Value = item.RealName
  980. cellB := row.AddCell()
  981. cellB.Value = item.CompanyName
  982. cellC := row.AddCell()
  983. cellC.Value = item.Content
  984. cellD := row.AddCell()
  985. cellD.Value = item.CreateTime
  986. }
  987. err = xlsxFile.Save(downLoadnFilePath)
  988. if err != nil {
  989. br.Msg = "保存文件失败"
  990. br.ErrMsg = "保存文件失败"
  991. return
  992. }
  993. randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
  994. downloadFileName := "问题列表" + randStr + ".xlsx"
  995. this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
  996. defer func() {
  997. os.Remove(downLoadnFilePath)
  998. }()
  999. br.Success = true
  1000. br.Ret = 200
  1001. br.Msg = "导出成功"
  1002. }
  1003. // @Title 作者关注详情
  1004. // @Description 获取作者关注详情列表接口
  1005. // @Param DepartmentId query int true "作者ID"
  1006. // @Success 200 {object} cygx.GetFailSignupListRep
  1007. // @router /summaryManage/department/followList [get]
  1008. func (this *SummaryManage) FepartmentfollowList() {
  1009. br := new(models.BaseResponse).Init()
  1010. defer func() {
  1011. this.Data["json"] = br
  1012. this.ServeJSON()
  1013. }()
  1014. sysUser := this.SysUser
  1015. if sysUser == nil {
  1016. br.Msg = "请登录"
  1017. br.ErrMsg = "请登录,SysUser Is Empty"
  1018. return
  1019. }
  1020. departmentId, _ := this.GetInt("DepartmentId")
  1021. detail, _ := cygx.GetArticleDepartmentDateilById(departmentId)
  1022. if detail == nil {
  1023. br.Msg = "作者不存在"
  1024. br.ErrMsg = "获取信息失败,Err:DepartmentId:" + strconv.Itoa(departmentId)
  1025. return
  1026. }
  1027. list, err := cygx.GetCygxDepartmentFllowList(departmentId)
  1028. resp := new(cygx.CygxDepartmentFllowRep)
  1029. if err != nil {
  1030. br.Msg = "获取失败"
  1031. br.ErrMsg = "获取列表失败,Err:" + err.Error()
  1032. return
  1033. }
  1034. resp.NickName = detail.Content
  1035. resp.FllowNum = len(list)
  1036. resp.List = list
  1037. br.Ret = 200
  1038. br.Success = true
  1039. br.Msg = "获取成功"
  1040. br.Data = resp
  1041. }
  1042. // @Title 文章收藏详情
  1043. // @Description 获取文章收藏详情列表接口
  1044. // @Param ArticleId query int true "文章ID"
  1045. // @Success 200 {object} cygx.GetFailSignupListRep
  1046. // @router /summaryManage/articleCollection [get]
  1047. func (this *SummaryManage) ArticleCollection() {
  1048. br := new(models.BaseResponse).Init()
  1049. defer func() {
  1050. this.Data["json"] = br
  1051. this.ServeJSON()
  1052. }()
  1053. sysUser := this.SysUser
  1054. if sysUser == nil {
  1055. br.Msg = "请登录"
  1056. br.ErrMsg = "请登录,SysUser Is Empty"
  1057. return
  1058. }
  1059. articleId, _ := this.GetInt("ArticleId")
  1060. _, err := cygx.GetArticleIdInfoByArticleId(articleId)
  1061. if err != nil {
  1062. br.Msg = "报告不存在"
  1063. br.ErrMsg = "查询失败,Err:" + err.Error() + strconv.Itoa(articleId)
  1064. return
  1065. }
  1066. list, err := cygx.GetCygxArticleCollectionList(articleId)
  1067. if err != nil {
  1068. br.Msg = "获取失败"
  1069. br.ErrMsg = "获取列表失败,Err:" + err.Error()
  1070. return
  1071. }
  1072. br.Ret = 200
  1073. br.Success = true
  1074. br.Msg = "获取成功"
  1075. br.Data = list
  1076. }
  1077. // @Title 阅读明细下载
  1078. // @Description 获取阅读明细下载接口
  1079. // @Param ArticleId query int true "文章ID"
  1080. // @Success 200 导出成功
  1081. // @router /summaryManage/articleHistoryExport [get]
  1082. func (this *SummaryManage) ArticleHistoryExport() {
  1083. br := new(models.BaseResponse).Init()
  1084. defer func() {
  1085. this.Data["json"] = br
  1086. this.ServeJSON()
  1087. }()
  1088. AdminUser := this.SysUser
  1089. if AdminUser == nil {
  1090. br.Msg = "请登录"
  1091. br.ErrMsg = "请登录,SysUser Is Empty"
  1092. return
  1093. }
  1094. articleId, _ := this.GetInt("ArticleId")
  1095. articleInfo, err := cygx.GetArticleIdInfoByArticleId(articleId)
  1096. if err != nil {
  1097. br.Msg = "报告不存在"
  1098. br.ErrMsg = "查询失败,Err:" + err.Error() + strconv.Itoa(articleId)
  1099. return
  1100. }
  1101. resp := new(cygx.CanDownload)
  1102. adminInfo, errAdmin := system.GetSysUserById(AdminUser.AdminId)
  1103. if errAdmin != nil {
  1104. br.Msg = "获取失败"
  1105. br.ErrMsg = "获取失败,Err:" + errAdmin.Error()
  1106. return
  1107. }
  1108. if adminInfo.Role == "admin" || adminInfo.Role == "researcher" || adminInfo.RealName == "汪洋" {
  1109. resp.IsCanDownload = true
  1110. }
  1111. var condition string
  1112. if resp.IsCanDownload == false {
  1113. //权益申请销售只能看到自己名下的客户的申请
  1114. companyIds, err := cygxService.GetAdminLookUserCompanyIds(AdminUser)
  1115. if err != nil {
  1116. br.Msg = "获取失败"
  1117. br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
  1118. return
  1119. }
  1120. var companyIdstr []string
  1121. for _, v := range companyIds {
  1122. companyIdstr = append(companyIdstr, strconv.Itoa(v))
  1123. }
  1124. condition = ` AND h.company_id IN (` + strings.Join(companyIdstr, ",") + `) `
  1125. }
  1126. mapMobileSellWithUser := make(map[string]string)
  1127. if condition != "" {
  1128. mobileList, err := cygx.GetSellerUserMobileList(condition)
  1129. if err != nil && err.Error() != utils.ErrNoRow() {
  1130. br.Msg = "获取失败"
  1131. br.ErrMsg = "获取策略品台数据失败,Err:" + err.Error()
  1132. return
  1133. }
  1134. if len(mobileList) > 0 {
  1135. for _, v := range mobileList {
  1136. mapMobileSellWithUser[v.Mobile] = v.Mobile
  1137. }
  1138. }
  1139. }
  1140. condition += ` AND h.company_id != ` + strconv.Itoa(utils.HZ_COMPANY_ID) // 过滤弘则
  1141. list, err := cygx.GetArticleHistoryList(articleId, condition)
  1142. if err != nil {
  1143. br.Msg = "获取失败"
  1144. br.ErrMsg = "获取失败,Err:" + err.Error()
  1145. return
  1146. }
  1147. listClPv, err := cygx.GetCygxCelueArticleHistoryRecordPvAll(strconv.Itoa(articleId))
  1148. if err != nil && err.Error() != utils.ErrNoRow() {
  1149. br.Msg = "获取失败"
  1150. br.ErrMsg = "获取策略品台数据失败,Err:" + err.Error()
  1151. return
  1152. }
  1153. var mobilesCl string
  1154. if len(listClPv) > 0 {
  1155. for _, v := range listClPv {
  1156. if v.Mobile != "" {
  1157. mobilesCl += v.Mobile + ","
  1158. }
  1159. }
  1160. }
  1161. mapMobileCompany := make(map[string]string)
  1162. mapMobileSellName := make(map[string]string)
  1163. mobilesCl = strings.TrimRight(mobilesCl, ",")
  1164. if mobilesCl != "" {
  1165. listClCompanyName, err := cygx.GetCygxCelueArticleComapnyName(mobilesCl)
  1166. if err != nil && err.Error() != utils.ErrNoRow() {
  1167. br.Msg = "获取失败"
  1168. br.ErrMsg = "获取策略品台关联查研观向的用户信息失败,Err:" + err.Error()
  1169. return
  1170. }
  1171. if len(listClCompanyName) > 0 {
  1172. for _, v := range listClCompanyName {
  1173. mapMobileCompany[v.Mobile] = v.CompanyName
  1174. mapMobileSellName[v.Mobile] = v.RealName
  1175. }
  1176. }
  1177. }
  1178. for k, v := range listClPv {
  1179. if v.Mobile != "" {
  1180. if mapMobileCompany[v.Mobile] != "" {
  1181. listClPv[k].CompanyName = mapMobileCompany[v.Mobile]
  1182. }
  1183. if mapMobileSellName[v.Mobile] != "" {
  1184. listClPv[k].SellerName = mapMobileSellName[v.Mobile]
  1185. }
  1186. }
  1187. }
  1188. var listClPvPower []*cygx.ArticleHistoryRep
  1189. if len(mapMobileSellWithUser) != 0 {
  1190. for _, v := range listClPv {
  1191. if mapMobileSellWithUser[v.Mobile] != "" {
  1192. listClPvPower = append(listClPvPower, v)
  1193. }
  1194. }
  1195. } else {
  1196. listClPvPower = listClPv
  1197. }
  1198. //创建excel
  1199. dir, err := os.Executable()
  1200. exPath := filepath.Dir(dir)
  1201. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  1202. xlsxFile := xlsx.NewFile()
  1203. if err != nil {
  1204. br.Msg = "生成文件失败"
  1205. br.ErrMsg = "生成文件失败"
  1206. return
  1207. }
  1208. style := xlsx.NewStyle()
  1209. alignment := xlsx.Alignment{
  1210. Horizontal: "center",
  1211. Vertical: "center",
  1212. WrapText: true,
  1213. }
  1214. style.Alignment = alignment
  1215. style.ApplyAlignment = true
  1216. for pidIndex := 0; pidIndex <= 1; pidIndex++ {
  1217. var sheetName string
  1218. var listDate []*cygx.ArticleHistoryRep
  1219. if pidIndex == 0 {
  1220. sheetName = "查研观向"
  1221. listDate = list
  1222. } else {
  1223. sheetName = "策略平台"
  1224. listDate = listClPvPower
  1225. }
  1226. sheet, err := xlsxFile.AddSheet(sheetName)
  1227. if err != nil {
  1228. br.Msg = "新增Sheet失败"
  1229. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  1230. return
  1231. }
  1232. //标头
  1233. rowTitle := sheet.AddRow()
  1234. cellA := rowTitle.AddCell()
  1235. cellA.Value = "姓名"
  1236. cellB := rowTitle.AddCell()
  1237. cellB.Value = "手机号"
  1238. cellC := rowTitle.AddCell()
  1239. cellC.Value = "公司名称"
  1240. cellD := rowTitle.AddCell()
  1241. cellD.Value = "所属权益销售"
  1242. cellE := rowTitle.AddCell()
  1243. cellE.Value = "阅读时长(秒)"
  1244. cellF := rowTitle.AddCell()
  1245. cellF.Value = "阅读时间"
  1246. for _, item := range listDate {
  1247. row := sheet.AddRow()
  1248. cellA := row.AddCell()
  1249. cellA.Value = item.RealName
  1250. cellB := row.AddCell()
  1251. cellB.Value = item.Mobile
  1252. cellC := row.AddCell()
  1253. cellC.Value = item.CompanyName
  1254. cellD := row.AddCell()
  1255. cellD.Value = item.SellerName
  1256. cellE := row.AddCell()
  1257. cellE.Value = item.StopTime
  1258. cellF := row.AddCell()
  1259. cellF.Value = item.CreateTime
  1260. }
  1261. }
  1262. err = xlsxFile.Save(downLoadnFilePath)
  1263. if err != nil {
  1264. br.Msg = "保存文件失败"
  1265. br.ErrMsg = "保存文件失败"
  1266. return
  1267. }
  1268. //randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
  1269. downloadFileName := articleInfo.Title + ".xlsx"
  1270. this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
  1271. defer func() {
  1272. os.Remove(downLoadnFilePath)
  1273. }()
  1274. br.Success = true
  1275. br.Ret = 200
  1276. br.Msg = "导出成功"
  1277. }
  1278. // @Title 文章类型列表
  1279. // @Description 文章类型列表接口
  1280. // @Success 200 {object} cygx.ArticleTypeListResp
  1281. // @router /summaryManage/articleType/list [get]
  1282. func (this *ActivityTypeCoAntroller) ArticleTypeList() {
  1283. br := new(models.BaseResponse).Init()
  1284. defer func() {
  1285. this.Data["json"] = br
  1286. this.ServeJSON()
  1287. }()
  1288. sysUser := this.SysUser
  1289. if sysUser == nil {
  1290. br.Msg = "请登录"
  1291. br.ErrMsg = "请登录,SysUser Is Empty"
  1292. br.Ret = 408
  1293. return
  1294. }
  1295. resp := new(cygx.ArticleTypeListResp)
  1296. list, err := cygx.GetCygxArticleTypeList()
  1297. if err != nil {
  1298. br.Msg = "获取失败"
  1299. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1300. return
  1301. }
  1302. typelist, err := cygx.GetArticleTypeAndAbstract()
  1303. if err != nil {
  1304. br.Msg = "获取失败"
  1305. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1306. return
  1307. }
  1308. resp.AbstractList = typelist
  1309. resp.List = list
  1310. br.Ret = 200
  1311. br.Success = true
  1312. br.Msg = "获取成功"
  1313. br.Data = resp
  1314. }
  1315. // @Title 新增文章类型
  1316. // @Description 新增文章类型接口
  1317. // @Param request body cygx.CygxArticleReq true "type json string"
  1318. // @Success Ret=200
  1319. // @router /summaryManage/articleType/add [post]
  1320. func (this *SummaryManage) ArticleTypeListAdd() {
  1321. br := new(models.BaseResponse).Init()
  1322. defer func() {
  1323. this.Data["json"] = br
  1324. this.ServeJSON()
  1325. }()
  1326. AdminUser := this.SysUser
  1327. if AdminUser == nil {
  1328. br.Msg = "请登录"
  1329. br.ErrMsg = "请登录,用户信息为空"
  1330. br.Ret = 408
  1331. return
  1332. }
  1333. req := new(cygx.CygxArticleReq)
  1334. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1335. if err != nil {
  1336. br.Msg = "参数解析异常!"
  1337. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1338. return
  1339. }
  1340. name := req.ArticleTypeName
  1341. if name == "" {
  1342. br.Msg = "内容不能为空!"
  1343. return
  1344. }
  1345. var condition string
  1346. condition = ` AND article_type_name = '` + name + `'`
  1347. count, err := cygx.GetCygxArticleTypeCount(condition)
  1348. if err != nil {
  1349. br.Msg = "操作失败!"
  1350. br.ErrMsg = "获取数量失败,Err:" + err.Error()
  1351. return
  1352. }
  1353. if count > 0 {
  1354. br.Msg = "该类型已存在,请重新填写!"
  1355. return
  1356. }
  1357. count, err = cygx.GetCygxArticleTypeCount("")
  1358. if err != nil {
  1359. br.Msg = "操作失败!"
  1360. br.ErrMsg = "获取已添加的数量失败,Err:" + err.Error()
  1361. return
  1362. }
  1363. item := new(cygx.CygxArticleType)
  1364. item.ArticleTypeName = name
  1365. item.YanxPermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN + name
  1366. item.IcoLink = "https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202111/20211104/QbTGTNhD9MxYp24cJ7V5WpCN0oNl.png"
  1367. item.IcoLinkM = "https://hzstatic.hzinsights.com/static/temp/20220707202207/20220707/FEvPxfalkGKllLIlBMKumm47zhEx.png"
  1368. item.YanxPermissionId = 1001 + count // id 数量从一千开始计算
  1369. item.CreateTime = time.Now()
  1370. item.ModifyTime = time.Now()
  1371. _, err = cygx.AddCygxArticleType(item)
  1372. if err != nil {
  1373. br.Msg = "操作失败"
  1374. br.ErrMsg = "操作失败,Err:" + err.Error()
  1375. return
  1376. }
  1377. br.Ret = 200
  1378. br.Success = true
  1379. br.Msg = "操作成功"
  1380. br.IsAddLog = true
  1381. }
  1382. // @Title 留言列表详情
  1383. // @Description 获取留言列表详情接口
  1384. // @Param ArticleId query int true "文章ID"
  1385. // @Success 200 {object} cygx.ArticleCommentListResp
  1386. // @router /summaryManage/commentList [get]
  1387. func (this *SummaryManage) CommentList() {
  1388. br := new(models.BaseResponse).Init()
  1389. defer func() {
  1390. this.Data["json"] = br
  1391. this.ServeJSON()
  1392. }()
  1393. sysUser := this.SysUser
  1394. if sysUser == nil {
  1395. br.Msg = "请登录"
  1396. br.ErrMsg = "请登录,SysUser Is Empty"
  1397. return
  1398. }
  1399. articleId, _ := this.GetInt("ArticleId")
  1400. articleInfo, _ := cygx.GetArticleIdInfoByArticleId(articleId)
  1401. if articleInfo == nil {
  1402. br.Msg = "操作失败"
  1403. br.ErrMsg = "报告ID错误"
  1404. return
  1405. }
  1406. list, err := cygx.GetArticleCommentList(articleInfo.ArticleId)
  1407. resp := new(cygx.ArticleCommentListResp)
  1408. if err != nil {
  1409. br.Msg = "获取留言失败"
  1410. br.ErrMsg = "获取留言失败,Err:" + err.Error()
  1411. return
  1412. }
  1413. resp.List = list
  1414. br.Ret = 200
  1415. br.Success = true
  1416. br.Msg = "获取成功"
  1417. br.Data = resp
  1418. }
  1419. // @Title 提问详情excel表格下载
  1420. // @Description 提问详情excel表格下载接口
  1421. // @Param SummaryManageId query int true "纪要ID"
  1422. // @Success 200 导出成功
  1423. // @router /summaryManage/commentListExport [get]
  1424. func (this *SummaryManage) CommentListExport() {
  1425. br := new(models.BaseResponse).Init()
  1426. defer func() {
  1427. this.Data["json"] = br
  1428. this.ServeJSON()
  1429. }()
  1430. sysUser := this.SysUser
  1431. if sysUser == nil {
  1432. br.Msg = "请登录"
  1433. br.ErrMsg = "请登录,SysUser Is Empty"
  1434. return
  1435. }
  1436. articleId, _ := this.GetInt("ArticleId")
  1437. articleInfo, _ := cygx.GetArticleIdInfoByArticleId(articleId)
  1438. if articleInfo == nil {
  1439. br.Msg = "操作失败"
  1440. br.ErrMsg = "报告ID错误"
  1441. return
  1442. }
  1443. list, err := cygx.GetArticleCommentList(articleInfo.ArticleId)
  1444. if err != nil {
  1445. br.Msg = "获取失败"
  1446. br.ErrMsg = "获取失败,Err:" + err.Error()
  1447. return
  1448. }
  1449. //创建excel
  1450. dir, err := os.Executable()
  1451. exPath := filepath.Dir(dir)
  1452. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  1453. xlsxFile := xlsx.NewFile()
  1454. if err != nil {
  1455. br.Msg = "生成文件失败"
  1456. br.ErrMsg = "生成文件失败"
  1457. return
  1458. }
  1459. style := xlsx.NewStyle()
  1460. alignment := xlsx.Alignment{
  1461. Horizontal: "center",
  1462. Vertical: "center",
  1463. WrapText: true,
  1464. }
  1465. style.Alignment = alignment
  1466. style.ApplyAlignment = true
  1467. sheet, err := xlsxFile.AddSheet("名单")
  1468. if err != nil {
  1469. br.Msg = "新增Sheet失败"
  1470. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  1471. return
  1472. }
  1473. //标头
  1474. rowTitle := sheet.AddRow()
  1475. cellA := rowTitle.AddCell()
  1476. cellA.Value = "姓名"
  1477. cellB := rowTitle.AddCell()
  1478. cellB.Value = "公司名称"
  1479. cellC := rowTitle.AddCell()
  1480. cellC.Value = "留言"
  1481. cellD := rowTitle.AddCell()
  1482. cellD.Value = "提交时间"
  1483. for _, item := range list {
  1484. row := sheet.AddRow()
  1485. cellA := row.AddCell()
  1486. cellA.Value = item.RealName
  1487. cellB := row.AddCell()
  1488. cellB.Value = item.CompanyName
  1489. cellC := row.AddCell()
  1490. cellC.Value = item.Content
  1491. cellD := row.AddCell()
  1492. cellD.Value = item.CreateTime
  1493. }
  1494. err = xlsxFile.Save(downLoadnFilePath)
  1495. if err != nil {
  1496. br.Msg = "保存文件失败"
  1497. br.ErrMsg = "保存文件失败"
  1498. return
  1499. }
  1500. randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
  1501. downloadFileName := "留言列表" + randStr + ".xlsx"
  1502. this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
  1503. defer func() {
  1504. os.Remove(downLoadnFilePath)
  1505. }()
  1506. br.Success = true
  1507. br.Ret = 200
  1508. br.Msg = "导出成功"
  1509. }
  1510. // @Title 文章的见范围修改
  1511. // @Description 文章的见范围修改接口
  1512. // @Param request body cygx.SummaryManageIdRep true "type json string"
  1513. // @Success 200 操作成功
  1514. // @router /summaryManage/visibleRange [post]
  1515. func (this *SummaryManage) VisibleRange() {
  1516. br := new(models.BaseResponse).Init()
  1517. defer func() {
  1518. this.Data["json"] = br
  1519. this.ServeJSON()
  1520. }()
  1521. AdminUser := this.SysUser
  1522. indexName := utils.IndexName
  1523. if AdminUser == nil {
  1524. br.Msg = "请登录"
  1525. br.ErrMsg = "请登录,用户信息为空"
  1526. br.Ret = 408
  1527. return
  1528. }
  1529. var req cygx.SummaryManageIdRep
  1530. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1531. if err != nil {
  1532. br.Msg = "参数解析异常!"
  1533. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1534. return
  1535. }
  1536. articleId := req.ArticleId
  1537. item := new(cygx.CygxArticle)
  1538. articleInfo, errInfo := cygx.GetArticleInfoOtherByArticleId(articleId)
  1539. if articleInfo == nil {
  1540. br.Msg = "操作失败"
  1541. br.ErrMsg = "纪要ID错误"
  1542. return
  1543. }
  1544. if errInfo != nil {
  1545. br.Msg = "操作失败"
  1546. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1547. return
  1548. }
  1549. item.ArticleId = articleId
  1550. item.Title = articleInfo.Title
  1551. item.BodyText = articleInfo.BodyText
  1552. item.Body = articleInfo.Body
  1553. item.PublishDate = articleInfo.PublishDate
  1554. item.ExpertBackground = articleInfo.ExpertBackground
  1555. item.CategoryId = articleInfo.CategoryId
  1556. if articleInfo.VisibleRange == 0 {
  1557. item.VisibleRange = 1
  1558. item.AdminId = AdminUser.AdminId
  1559. item.AdminName = AdminUser.RealName
  1560. services.EsAddOrEditData(item)
  1561. //go cygxService.UpdateResourceData(item.ArticleId, "article", "add", time.Now().Format(utils.FormatDateTime))
  1562. } else {
  1563. item.AdminId = articleInfo.AdminId
  1564. item.AdminName = articleInfo.AdminName
  1565. item.PublishStatus = 0
  1566. services.EsDeleteData(indexName, strconv.Itoa(articleInfo.ArticleId))
  1567. //go cygxService.UpdateResourceData(item.ArticleId, "article", "delete", time.Now().Format(utils.FormatDateTime))
  1568. }
  1569. err = cygx.ArticleVisibleRange(item)
  1570. if err != nil {
  1571. br.Msg = "操作失败"
  1572. br.ErrMsg = "操作失败,Err:" + err.Error()
  1573. return
  1574. }
  1575. //专项调研类型的报告单独走发送
  1576. if articleInfo.SubCategoryName == "专项调研" {
  1577. if item.PublishStatus == 1 {
  1578. cygxService.SendWxMsgWithCygxActivitySpecialArticle(item.ArticleId)
  1579. }
  1580. } else {
  1581. if item.PublishStatus == 1 {
  1582. articleIndustrial, _ := cygx.GetIndustrialManagemenDetailByAaticle(articleInfo.ArticleId)
  1583. if articleIndustrial.ArticleId > 0 {
  1584. go cygxService.DoArticleOnenIdWxTemplateMsg(articleId, 1)
  1585. }
  1586. }
  1587. }
  1588. go cygxService.UpdateArticleResourceData(item.ArticleId) //写入首页最新 cygx_resource_data 表
  1589. br.Ret = 200
  1590. br.Success = true
  1591. br.Msg = "操作成功"
  1592. br.IsAddLog = true
  1593. }
  1594. // @Title 文章的置顶与取消置顶
  1595. // @Description 活动的发布与取消发布接口
  1596. // @Param request body cygx.ActivityIdRep true "type json string"
  1597. // @Success 200 操作成功
  1598. // @router /summaryManage/top_change [post]
  1599. func (this *SummaryManage) TopeChange() {
  1600. br := new(models.BaseResponse).Init()
  1601. defer func() {
  1602. this.Data["json"] = br
  1603. this.ServeJSON()
  1604. }()
  1605. AdminUser := this.SysUser
  1606. if AdminUser == nil {
  1607. br.Msg = "请登录"
  1608. br.ErrMsg = "请登录,用户信息为空"
  1609. br.Ret = 408
  1610. return
  1611. }
  1612. var req cygx.SummaryManageIdRep
  1613. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1614. if err != nil {
  1615. br.Msg = "参数解析异常!"
  1616. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1617. return
  1618. }
  1619. articleId := req.ArticleId
  1620. articleInfo, errInfo := cygx.GetArticleInfoOtherByArticleId(articleId)
  1621. if articleInfo == nil {
  1622. br.Msg = "操作失败"
  1623. br.ErrMsg = "纪要ID错误"
  1624. return
  1625. }
  1626. if errInfo != nil {
  1627. br.Msg = "操作失败"
  1628. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1629. return
  1630. }
  1631. var topTime int
  1632. //如果有置顶时间就设为取消置顶,如果没有就写入当前置顶时间
  1633. if articleInfo.TopTime == 0 {
  1634. topTime = int(time.Now().Unix())
  1635. }
  1636. err = cygx.UpdateArticleTopTime(articleId, topTime)
  1637. if err != nil {
  1638. br.Msg = "操作失败"
  1639. br.ErrMsg = "操作失败,Err:" + err.Error()
  1640. return
  1641. }
  1642. br.Ret = 200
  1643. br.Success = true
  1644. br.Msg = "操作成功"
  1645. br.IsAddLog = true
  1646. }