report_selection.go 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189
  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. comeinService "hongze/hz_crm_api/services/comein"
  13. cygxService "hongze/hz_crm_api/services/cygx"
  14. "hongze/hz_crm_api/utils"
  15. "os"
  16. "path/filepath"
  17. "strconv"
  18. "strings"
  19. "time"
  20. )
  21. // 报告精选
  22. type ReportSelectionController struct {
  23. controllers.BaseAuthController
  24. }
  25. // @Title 报告精选内容的保存与发布
  26. // @Description 报告精选内容的保存与发布接口
  27. // @Param request body cygx.AddCygxReportSelection true "type json string"
  28. // @Success 200 操作成功
  29. // @router /reportSelection/PreserveAndPublish [post]
  30. func (this *ReportSelectionController) 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.AddCygxReportSelection
  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.AddType != "1" && req.AddType != "2" {
  51. br.Msg = "请选择正确的添加方式!"
  52. return
  53. }
  54. if req.AddType == "2" && req.InheritPeriods == "" {
  55. br.Msg = "请选择继承第几期!"
  56. return
  57. }
  58. list := req.List
  59. listChartSummary := req.ListChartSummary
  60. reportLink := req.ReportLink
  61. if len(list) < 1 {
  62. br.Msg = "产业资源内容不可为空!"
  63. return
  64. }
  65. if len(listChartSummary) < 1 {
  66. br.Msg = "行业核心逻辑汇总不能为空!"
  67. return
  68. }
  69. if reportLink == "" {
  70. br.Msg = "详细报告链接,不能为空!"
  71. return
  72. }
  73. articleIdLink, err := cygxService.GetReportLinkToArticleid(reportLink)
  74. if err != nil {
  75. br.Msg = "操作失败"
  76. br.ErrMsg = "解析报告链接ID失败,Err:" + err.Error()
  77. return
  78. }
  79. if articleIdLink == 0 {
  80. br.Msg = "详细报告链接格式错误"
  81. br.ErrMsg = "解析报告链接ID失败,报告链接:" + reportLink
  82. return
  83. }
  84. var items []*cygx.CygxReportSelectionLog
  85. var itemsChart []*cygx.CygxReportSelectionChartLog
  86. condition := ` AND have_publish = 1 `
  87. var pars []interface{}
  88. total, err := cygx.GetCygxReportSelection(condition, pars)
  89. if err != nil {
  90. br.Msg = "获取失败"
  91. br.ErrMsg = "获取失败,Err:" + err.Error()
  92. return
  93. }
  94. itemCrs := new(cygx.CygxReportSelection)
  95. itemCrs.AdminId = AdminUser.AdminId
  96. itemCrs.AdminName = AdminUser.RealName
  97. itemCrs.Title = req.Title
  98. itemCrs.Department = req.Department
  99. itemCrs.AddType = req.AddType
  100. itemCrs.PublishStatus = req.DoType
  101. if req.DoType == 1 {
  102. itemCrs.HavePublish = 1
  103. itemCrs.Periods = strconv.Itoa(total + 1)
  104. }
  105. itemCrs.PublishDate = utils.StrTimeToTime(req.PublishDate + " 00:00:00")
  106. itemCrs.CreateTime = time.Now()
  107. itemCrs.LastUpdatedTime = time.Now()
  108. itemCrs.InheritPeriods = req.InheritPeriods
  109. itemCrs.ProductDescription = req.ProductDescription
  110. itemCrs.UpdateDescription = req.UpdateDescription
  111. itemCrs.ReportLink = req.ReportLink
  112. itemCrs.FocusOn = cygxService.GetRichtext(req.FocusOn)
  113. itemCrs.MarketStrategy = cygxService.GetRichtext(req.MarketStrategy)
  114. for _, v := range list {
  115. item := new(cygx.CygxReportSelectionLog)
  116. item.ChartPermissionId = v.ChartPermissionId
  117. item.CreateTime = time.Now()
  118. item.Body = cygxService.GetRichtext(v.Body)
  119. item.IndustrialSubjectId = v.IndustrialSubjectId
  120. item.SubjectName = v.IndustrialSubjectName
  121. item.IndustrialManagementId = v.IndustrialManagementId
  122. item.IndustrialManagementNames = v.IndustrialManagementName
  123. if v.IndustrialManagementNames != "" {
  124. item.IndustrialManagementNames = v.IndustrialManagementNames
  125. }
  126. item.ThirdId = v.ThirdId
  127. item.ThirdName = v.ThirdName
  128. item.OverviewArticleId = v.OverviewArticleId
  129. item.IsNew = v.IsNew
  130. item.IsShowOverviewArticle = v.IsShowOverviewArticle
  131. if len(v.CompanyLabel) > 0 {
  132. item.CompanyLabel = cygxService.ArticleComPanyLabelToStr(v.CompanyLabel)
  133. }
  134. items = append(items, item)
  135. }
  136. for _, v := range listChartSummary {
  137. item := new(cygx.CygxReportSelectionChartLog)
  138. item.ChartPermissionId = v.ChartPermissionId
  139. item.CreateTime = time.Now()
  140. item.Body = cygxService.GetRichtext(v.BodyChartSummary)
  141. itemsChart = append(itemsChart, item)
  142. }
  143. if req.ArticleId == 0 {
  144. articleId, err := cygx.AddCygxReportSelectionOrm(itemCrs, items, itemsChart)
  145. if err != nil {
  146. br.Msg = "操作失败"
  147. br.ErrMsg = "发布失败,Err:" + err.Error()
  148. return
  149. }
  150. req.ArticleId = int(articleId)
  151. } else {
  152. detail, err := cygx.GetCygxReportSelectionInfoById(req.ArticleId)
  153. if err != nil {
  154. br.Msg = "内容不存在"
  155. br.ErrMsg = "操作失败,Err:" + err.Error()
  156. return
  157. }
  158. if itemCrs.PublishStatus == 0 {
  159. itemCrs.PublishStatus = detail.PublishStatus
  160. itemCrs.AdminId = detail.AdminId
  161. itemCrs.AdminName = detail.AdminName
  162. }
  163. if detail.HavePublish == 1 {
  164. itemCrs.Periods = detail.Periods
  165. itemCrs.HavePublish = detail.HavePublish
  166. }
  167. itemCrs.ArticleId = req.ArticleId
  168. _, err = cygx.UpdateCygxReportSelectionOrm(itemCrs, items, itemsChart)
  169. if err != nil {
  170. br.Msg = "操作失败"
  171. br.ErrMsg = "发布失败,Err:" + err.Error()
  172. return
  173. }
  174. if detail.PublishStatus == 1 && detail.VisibleRange == 1 {
  175. go comeinService.ComeinUpdateReportSelectionPublish(req.ArticleId, "edit")
  176. }
  177. }
  178. //if req.DoType == 1 {
  179. //cygxService.DoThisWeekLastWeekWxTemplateMsg(itemCrs.Title, itemCrs.PublishDate.Format(utils.FormatDateTime), itemCrs.ProductDescription, req.ArticleId, 1)
  180. //}
  181. //生成音频文件
  182. //articleId := req.ArticleId
  183. //existMap := make(map[int]int)
  184. //var content string
  185. //content = "产品说明" + req.ProductDescription + "变更说明" + req.UpdateDescription + "近期重点关注方向" + req.FocusOn
  186. //listLog, err := cygx.GetReportSelectionlogListAll(articleId)
  187. //if err != nil {
  188. // br.Msg = "获取失败"
  189. // br.ErrMsg = "获取失败,Err:" + err.Error()
  190. // return
  191. //}
  192. //for _, v := range listLog {
  193. // if existMap[v.ChartPermissionId] == 0 {
  194. // content += v.PermissionName + "领域深度调研和报告"
  195. // listSonLog, err := cygx.GetReportSelectionlogSonListAll(articleId, v.ChartPermissionId)
  196. // if err != nil && err.Error() != utils.ErrNoRow() {
  197. // br.Msg = "获取信息失败"
  198. // br.ErrMsg = "获取信息失败,Err:" + err.Error()
  199. // return
  200. // }
  201. // if len(listSonLog) > 0 {
  202. // for _, v2 := range listSonLog {
  203. // content += v2.SubjectName + v2.Body
  204. // }
  205. // }
  206. // }
  207. // existMap[v.ChartPermissionId] = v.ChartPermissionId 0
  208. //}
  209. go cygxService.UpdateReportSelectionResourceData(req.ArticleId) //首页最新页面数据逻辑处理 V11.1.1
  210. go cygxService.UpdateReportSelectionSubjectNameList() //获取报告精选最新一期标的名称
  211. br.Ret = 200
  212. br.Success = true
  213. br.Msg = "操作成功"
  214. br.IsAddLog = true
  215. }
  216. // @Title 删除报告精选内容
  217. // @Description 删除报告精选内容接口
  218. // @Param request body cygx.ResearchSummaryId true "type json string"
  219. // @Success Ret=200
  220. // @router /reportSelection/delete [post]
  221. func (this *ReportSelectionController) Delete() {
  222. br := new(models.BaseResponse).Init()
  223. defer func() {
  224. this.Data["json"] = br
  225. this.ServeJSON()
  226. }()
  227. AdminUser := this.SysUser
  228. if AdminUser == nil {
  229. br.Msg = "请登录"
  230. br.ErrMsg = "请登录,SysUser Is Empty"
  231. br.Ret = 408
  232. return
  233. }
  234. var req cygx.ResearchSummaryId
  235. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  236. if err != nil {
  237. br.Msg = "参数解析异常!"
  238. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  239. return
  240. }
  241. articleId := req.ArticleId
  242. detail, err := cygx.GetCygxReportSelectionInfoById(articleId)
  243. if err != nil {
  244. br.Msg = "内容不存在"
  245. br.ErrMsg = "操作失败,Err:" + err.Error()
  246. return
  247. }
  248. if detail.HavePublish != 0 {
  249. br.Msg = "删除失败"
  250. br.ErrMsg = "已经存在期数无法删除"
  251. return
  252. }
  253. err = cygx.DeleteCygxReportSelection(articleId)
  254. if err != nil {
  255. br.Msg = "删除信息失败"
  256. br.ErrMsg = "删除信息失败,Err:" + err.Error()
  257. return
  258. }
  259. br.Ret = 200
  260. br.Success = true
  261. br.Msg = "已删除"
  262. br.IsAddLog = true
  263. }
  264. // @Title 报告精选内容详情
  265. // @Description 报告精选内容详情接口
  266. // @Param ArticleId query int true "报告Id"
  267. // @Param Periods query string true "期数Id"
  268. // @Success Ret=200 {object} cygx.DetailCygxReportSelectionRep
  269. // @router /reportSelection/detail [get]
  270. func (this *ReportSelectionController) Detail() {
  271. br := new(models.BaseResponse).Init()
  272. defer func() {
  273. this.Data["json"] = br
  274. this.ServeJSON()
  275. }()
  276. AdminUser := this.SysUser
  277. if AdminUser == nil {
  278. br.Msg = "请登录"
  279. br.ErrMsg = "请登录,用户信息为空"
  280. br.Ret = 408
  281. return
  282. }
  283. var errArt error
  284. detail := new(cygx.CygxReportSelectionRep)
  285. articleId, _ := this.GetInt("ArticleId")
  286. periods := this.GetString("Periods")
  287. if articleId > 0 && periods == "" {
  288. detail, errArt = cygx.GetCygxReportSelectionInfoById(articleId)
  289. if errArt != nil {
  290. br.Msg = "内容不存在"
  291. br.ErrMsg = "内容不存在,Err:" + errArt.Error()
  292. return
  293. }
  294. } else {
  295. detail, errArt = cygx.GetCygxReportSelectionInfoByPeriods(periods)
  296. if errArt != nil {
  297. br.Msg = "内容不存在"
  298. br.ErrMsg = "内容不存在通过期数获取详情错误,Err:" + errArt.Error() + "期数:" + periods
  299. return
  300. }
  301. }
  302. articleId = detail.ArticleId
  303. resp := new(cygx.DetailCygxReportSelectionRep)
  304. resp.ArticleId = detail.ArticleId
  305. resp.AddType = detail.AddType
  306. resp.InheritPeriods = detail.InheritPeriods
  307. resp.Title = detail.Title
  308. resp.Department = detail.Department
  309. resp.PublishStatus = detail.PublishStatus
  310. resp.PublishDate = utils.StrTimeToTime(detail.PublishDate).Format("2006-01-02")
  311. resp.ProductDescription = detail.ProductDescription
  312. resp.UpdateDescription = detail.UpdateDescription
  313. resp.FocusOn = detail.FocusOn
  314. resp.MarketStrategy = detail.MarketStrategy
  315. resp.ReportLink = detail.ReportLink
  316. if detail.InheritPeriods != "" {
  317. resp.InheritPeriodsName = "第" + detail.InheritPeriods + "期"
  318. }
  319. var condition string
  320. condition = ` AND chart_permission_id IN (19,20,21,22) `
  321. listMore, err := cygx.GetChartPermissionDetail(condition)
  322. var list []*cygx.CygxReportSelectionChart
  323. //排序方式修改
  324. permissionNameList := []cygx.CygxChartPermissionName{}
  325. //获取行业核心逻辑汇总
  326. listChartLog, err := cygx.GetCygxReportSelectionChartLogRepList(articleId)
  327. if err != nil {
  328. br.Msg = "获取失败"
  329. br.ErrMsg = "获取失败,Err:" + err.Error()
  330. return
  331. }
  332. permissionNameMap, err := services.GetPermissionNameMap()
  333. if err != nil {
  334. br.Msg = "获取失败"
  335. br.ErrMsg = "获取失败 GetPermissionNameMap,Err:" + err.Error()
  336. return
  337. }
  338. mapChartLog := make(map[string]string)
  339. for _, v := range listChartLog {
  340. v.ChartPermissionName = permissionNameMap[v.ChartPermissionId]
  341. mapChartLog[v.ChartPermissionName] = v.BodyChartSummary
  342. permissionNameList = append(permissionNameList, cygx.CygxChartPermissionName{v.ChartPermissionName})
  343. }
  344. for _, v := range permissionNameList {
  345. for _, v2 := range listMore {
  346. v2.ChartPermissionName = permissionNameMap[v2.ChartPermissionId]
  347. if v.ChartPermissionName == v2.ChartPermissionName {
  348. item := new(cygx.CygxReportSelectionChart)
  349. item.ChartPermissionName = v2.ChartPermissionName
  350. item.ChartPermissionId = v2.ChartPermissionId
  351. //item.List = make([]string, 0)
  352. list = append(list, item)
  353. }
  354. }
  355. }
  356. //获取关联的文章信息
  357. mapArticle := make(map[int]string)
  358. listSelectionLog, err := cygx.GetReportSelectionlogListAll(articleId)
  359. if err != nil {
  360. br.Msg = "获取失败"
  361. br.ErrMsg = "GetReportSelectionlogListAll,Err:" + err.Error()
  362. return
  363. }
  364. articleStockMap, _ := cygxService.GetArticleStockMap()
  365. var overviewArticleIdArr []int
  366. for _, v := range listSelectionLog {
  367. if v.OverviewArticleId > 0 {
  368. overviewArticleIdArr = append(overviewArticleIdArr, v.OverviewArticleId)
  369. }
  370. }
  371. for _, v := range articleStockMap {
  372. overviewArticleIdArr = append(overviewArticleIdArr, v)
  373. }
  374. lenActivityIds := len(overviewArticleIdArr)
  375. if lenActivityIds > 0 {
  376. var pars []interface{}
  377. conditionArticle := ` AND article_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) `
  378. pars = append(pars, overviewArticleIdArr)
  379. articleList, err := cygx.GetCygxArticleList(conditionArticle, pars, 0, lenActivityIds)
  380. if err != nil {
  381. br.Msg = "获取失败"
  382. br.ErrMsg = "GetCygxArticleList,Err:" + err.Error()
  383. return
  384. }
  385. for _, v := range articleList {
  386. mapArticle[v.ArticleId] = v.Title
  387. }
  388. }
  389. //获取标的关联的日志
  390. for k, v := range list {
  391. listSon, err := cygx.GetCygxReportSelectionLogRepListSon(articleId, v.ChartPermissionId)
  392. if err != nil {
  393. br.Msg = "获取失败"
  394. br.ErrMsg = "获取子分类失败,Err:" + err.Error()
  395. return
  396. }
  397. for kIndustrial, vIndustrial := range listSon {
  398. var industrialNames string
  399. //如果报告精选关联的产业被删除了 则做以下处理
  400. if vIndustrial.IndustrialSubjectName == "" {
  401. industrialNames = vIndustrial.IndustrialManagementNames
  402. } else {
  403. industrialNames, err = cygx.GetindustrialManagementNamesBySubjectName(vIndustrial.IndustrialSubjectName, vIndustrial.ChartPermissionId)
  404. if err != nil {
  405. br.Msg = "获取失败!"
  406. br.ErrMsg = "获取删除删除之后的产业失败,Err:" + err.Error() + vIndustrial.IndustrialSubjectId
  407. return
  408. }
  409. }
  410. if vIndustrial.Label != "" {
  411. vIndustrial.CompanyLabel = strings.Split(vIndustrial.Label, "{|}")
  412. }
  413. listSon[kIndustrial].IndustrialManagementName = industrialNames
  414. listSon[kIndustrial].IndustrialManagementNames = industrialNames
  415. listSon[kIndustrial].OverviewArticleId = articleStockMap[vIndustrial.IndustrialSubjectName]
  416. listSon[kIndustrial].OverviewArticleTitle = mapArticle[listSon[kIndustrial].OverviewArticleId]
  417. if periods != "" {
  418. listSon[kIndustrial].IsNew = 0
  419. }
  420. if vIndustrial.ThirdName != "" {
  421. listSon[kIndustrial].ShowName = vIndustrial.ThirdName
  422. } else if vIndustrial.SubjectName == "" {
  423. listSon[kIndustrial].ShowName = vIndustrial.IndustrialManagementNames
  424. } else {
  425. listSon[kIndustrial].ShowName = vIndustrial.SubjectName
  426. }
  427. }
  428. list[k].List = listSon
  429. list[k].BodyChartSummary = mapChartLog[v.ChartPermissionName]
  430. }
  431. resp.List = list
  432. br.Ret = 200
  433. br.Success = true
  434. br.Msg = "获取成功"
  435. br.Data = resp
  436. }
  437. // @Title 报告精选列表
  438. // @Description 获取报告精选列表接口
  439. // @Param PageSize query int true "每页数据条数"
  440. // @Param CurrentIndex query int true "当前页页码,从1开始"
  441. // @Param PublishStatus query int false "发布状态 ,1未发布,1已发布,传2查询所有"
  442. // @Param StartDate query string false "开始时间 ,列如2021-03-06 "
  443. // @Param EndDate query string false "结束时间,列如2021-03-06 "
  444. // @Success 200 {object} cygx.CygxReportSelectionListRep
  445. // @router /reportSelection/list [get]
  446. func (this *ReportSelectionController) List() {
  447. br := new(models.BaseResponse).Init()
  448. defer func() {
  449. this.Data["json"] = br
  450. this.ServeJSON()
  451. }()
  452. AdminUser := this.SysUser
  453. if AdminUser == nil {
  454. br.Msg = "请登录"
  455. br.ErrMsg = "请登录,SysUser Is Empty"
  456. return
  457. }
  458. pageSize, _ := this.GetInt("PageSize")
  459. currentIndex, _ := this.GetInt("CurrentIndex")
  460. publishStatus, _ := this.GetInt("PublishStatus")
  461. startDate := this.GetString("StartDate")
  462. endDate := this.GetString("EndDate")
  463. var startSize int
  464. if pageSize <= 0 {
  465. pageSize = utils.PageSize20
  466. }
  467. if currentIndex <= 0 {
  468. currentIndex = 1
  469. }
  470. startSize = utils.StartIndex(currentIndex, pageSize)
  471. var condition string
  472. var pars []interface{}
  473. if startDate != "" {
  474. condition += ` AND rs.publish_date >= ` + "'" + startDate + " 00:00:00'"
  475. }
  476. if endDate != "" {
  477. condition += ` AND rs.publish_date <= ` + "'" + endDate + " 23:59:59'"
  478. }
  479. if publishStatus == 0 || publishStatus == 1 {
  480. condition += ` AND rs.publish_status = ` + strconv.Itoa(publishStatus)
  481. }
  482. total, err := cygx.GetCygxReportSelection(condition, pars)
  483. if err != nil {
  484. br.Msg = "获取失败"
  485. br.ErrMsg = "获取失败,Err:" + err.Error()
  486. return
  487. }
  488. list, err := cygx.GetReportSelectionList(condition, pars, startSize, pageSize)
  489. if err != nil {
  490. br.Msg = "获取失败"
  491. br.ErrMsg = "获取失败,Err:" + err.Error()
  492. return
  493. }
  494. for k, v := range list {
  495. if v.Periods != "" && v.Periods != "0" {
  496. list[k].Periods = "第" + v.Periods + "期"
  497. } else {
  498. list[k].Periods = ""
  499. }
  500. list[k].PublishDate = utils.StrTimeToTime(v.PublishDate).Format("2006-01-02")
  501. }
  502. page := paging.GetPaging(currentIndex, pageSize, total)
  503. resp := new(cygx.CygxReportSelectionListRep)
  504. resp.List = list
  505. resp.Paging = page
  506. br.Ret = 200
  507. br.Success = true
  508. br.Msg = "获取成功"
  509. br.Data = resp
  510. }
  511. // @Title 报告精选的发布与取消发布
  512. // @Description 报告精选的发布与取消发布接口
  513. // @Param request body cygx.ResearchSummaryId true "type json string"
  514. // @Success 200 操作成功
  515. // @router /reportSelection/PublishAndCancel [post]
  516. func (this *ReportSelectionController) PublishAndCancel() {
  517. br := new(models.BaseResponse).Init()
  518. defer func() {
  519. this.Data["json"] = br
  520. this.ServeJSON()
  521. }()
  522. AdminUser := this.SysUser
  523. if AdminUser == nil {
  524. br.Msg = "请登录"
  525. br.ErrMsg = "请登录,用户信息为空"
  526. br.Ret = 408
  527. return
  528. }
  529. var req cygx.ResearchSummaryId
  530. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  531. if err != nil {
  532. br.Msg = "参数解析异常!"
  533. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  534. return
  535. }
  536. articleId := req.ArticleId
  537. detail, err := cygx.GetCygxReportSelectionInfoById(articleId)
  538. if err != nil {
  539. br.Msg = "内容不存在"
  540. br.ErrMsg = "操作失败,Err:" + err.Error()
  541. return
  542. }
  543. item := new(cygx.CygxReportSelectionRep)
  544. item.ArticleId = articleId
  545. if detail.PublishStatus == 0 {
  546. item.PublishStatus = 1
  547. item.AdminId = AdminUser.AdminId
  548. item.AdminName = AdminUser.RealName
  549. //cygxService.DoThisWeekLastWeekWxTemplateMsg(detail.Title, detail.PublishDate, detail.ProductDescription, req.ArticleId, 1)
  550. } else {
  551. item.AdminId = detail.AdminId
  552. item.AdminName = detail.AdminName
  553. item.PublishStatus = 0
  554. }
  555. if detail.HavePublish == 0 {
  556. condition := ` AND have_publish = 1 `
  557. var pars []interface{}
  558. total, err := cygx.GetCygxReportSelection(condition, pars)
  559. if err != nil {
  560. br.Msg = "获取失败"
  561. br.ErrMsg = "获取失败,Err:" + err.Error()
  562. return
  563. }
  564. item.Periods = strconv.Itoa(total + 1)
  565. } else {
  566. item.Periods = detail.Periods
  567. }
  568. err = cygx.ReportSelectionPublishAndCancel(item)
  569. if err != nil {
  570. br.Msg = "操作失败"
  571. br.ErrMsg = "操作失败,Err:" + err.Error()
  572. return
  573. }
  574. go cygxService.UpdateReportSelectionResourceData(articleId) //首页最新页面数据逻辑处理 V11.1.1
  575. go cygxService.UpdateReportSelectionSubjectNameList() //获取报告精选最新一期标的名称
  576. br.Ret = 200
  577. br.Success = true
  578. br.Msg = "操作成功"
  579. br.IsAddLog = true
  580. }
  581. // @Title 报告精选初始模板
  582. // @Description 报告精选初始模板接口
  583. // @Success Ret=200 {object} cygx.CygxRSlChartPermissionIcoTmpList
  584. // @router /reportSelection/detailTemplate [get]
  585. func (this *ReportSelectionController) DetailTemplate() {
  586. br := new(models.BaseResponse).Init()
  587. defer func() {
  588. this.Data["json"] = br
  589. this.ServeJSON()
  590. }()
  591. AdminUser := this.SysUser
  592. if AdminUser == nil {
  593. br.Msg = "请登录"
  594. br.ErrMsg = "请登录,用户信息为空"
  595. br.Ret = 408
  596. return
  597. }
  598. resp := new(cygx.CygxRSlChartPermissionIcoTmpList)
  599. var condition string
  600. var list []*cygx.CygxRSlChartPermissionIcoTmp
  601. condition = ` AND chart_permission_id IN (19,20,21,22) `
  602. listMore, err := cygx.GetChartPermissionIcoNew(condition)
  603. if err != nil {
  604. br.Msg = "获取失败"
  605. br.ErrMsg = "获取失败,Err:" + err.Error()
  606. return
  607. }
  608. //排序方式修改
  609. permissionNameList := []cygx.CygxChartPermissionName{{ChartPermissionName: "消费"}, {ChartPermissionName: "医药"}, {ChartPermissionName: "科技"}, {ChartPermissionName: "智造"}}
  610. for _, v := range permissionNameList {
  611. for _, v2 := range listMore {
  612. if v.ChartPermissionName == v2.ChartPermissionName {
  613. item := new(cygx.CygxRSlChartPermissionIcoTmp)
  614. item.ChartPermissionName = v2.ChartPermissionName
  615. item.ChartPermissionSort = v2.ChartPermissionSort
  616. item.ChartPermissionId = v2.ChartPermissionId
  617. item.IcoLink = v2.IcoLink
  618. item.List = make([]string, 0)
  619. list = append(list, item)
  620. }
  621. }
  622. }
  623. resp.List = list
  624. br.Ret = 200
  625. br.Success = true
  626. br.Msg = "获取成功"
  627. br.Data = resp
  628. }
  629. // @Title 期数列表
  630. // @Description 获取期数列表接口
  631. // @Param PageSize query int true "每页数据条数"
  632. // @Param CurrentIndex query int true "当前页页码,从1开始"
  633. // @Success 200 {object} cygx.CygxReportSelectionPeriodsListRep
  634. // @router /reportSelection/listPeriods [get]
  635. func (this *ReportSelectionController) ListPeriods() {
  636. br := new(models.BaseResponse).Init()
  637. defer func() {
  638. this.Data["json"] = br
  639. this.ServeJSON()
  640. }()
  641. AdminUser := this.SysUser
  642. if AdminUser == nil {
  643. br.Msg = "请登录"
  644. br.ErrMsg = "请登录,SysUser Is Empty"
  645. return
  646. }
  647. pageSize, _ := this.GetInt("PageSize")
  648. currentIndex, _ := this.GetInt("CurrentIndex")
  649. var startSize int
  650. if pageSize <= 0 {
  651. pageSize = 1000
  652. }
  653. if currentIndex <= 0 {
  654. currentIndex = 1
  655. }
  656. startSize = utils.StartIndex(currentIndex, pageSize)
  657. var condition string
  658. var pars []interface{}
  659. total, err := cygx.GetCygxReportSelection(condition, pars)
  660. if err != nil {
  661. br.Msg = "获取失败"
  662. br.ErrMsg = "获取失败,Err:" + err.Error()
  663. return
  664. }
  665. condition += ` GROUP BY periods `
  666. list, err := cygx.GetReportSelectionListPeriods(condition, pars, startSize, pageSize)
  667. if err != nil {
  668. br.Msg = "获取失败"
  669. br.ErrMsg = "获取失败,Err:" + err.Error()
  670. return
  671. }
  672. for k, v := range list {
  673. if v.Periods != "" {
  674. list[k].InheritPeriodsName = "第" + v.Periods + "期"
  675. }
  676. }
  677. page := paging.GetPaging(currentIndex, pageSize, total)
  678. resp := new(cygx.CygxReportSelectionPeriodsListRep)
  679. resp.List = list
  680. resp.Paging = page
  681. br.Ret = 200
  682. br.Success = true
  683. br.Msg = "获取成功"
  684. br.Data = resp
  685. }
  686. // @Title 阅读明细下载
  687. // @Description 获取阅读明细下载接口
  688. // @Param ArticleId query int true "文章ID"
  689. // @Param Source query int true "来源 1:报告精选、2:路演精华、3:本周研究汇总、4:上周纪要汇总"
  690. // @Success 200 导出成功
  691. // @router /reportSelection/articleHistoryExport [get]
  692. func (this *ReportSelectionController) ArticleHistoryExport() {
  693. br := new(models.BaseResponse).Init()
  694. defer func() {
  695. this.Data["json"] = br
  696. this.ServeJSON()
  697. }()
  698. AdminUser := this.SysUser
  699. if AdminUser == nil {
  700. br.Msg = "请登录"
  701. br.ErrMsg = "请登录,SysUser Is Empty"
  702. return
  703. }
  704. articleId, _ := this.GetInt("ArticleId")
  705. source, _ := this.GetInt("Source")
  706. resp := new(cygx.CanDownload)
  707. adminInfo, errAdmin := system.GetSysUserById(AdminUser.AdminId)
  708. if errAdmin != nil {
  709. br.Msg = "获取失败"
  710. br.ErrMsg = "获取失败,Err:" + errAdmin.Error()
  711. return
  712. }
  713. if adminInfo.Role == "admin" || adminInfo.Role == "researcher" || adminInfo.RealName == "汪洋" {
  714. resp.IsCanDownload = true
  715. }
  716. var condition string
  717. if resp.IsCanDownload == false {
  718. //权益申请销售只能看到自己名下的客户的申请
  719. companyIds, err := cygxService.GetAdminLookUserCompanyIds(AdminUser)
  720. if err != nil {
  721. br.Msg = "获取失败"
  722. br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
  723. return
  724. }
  725. var companyIdstr []string
  726. for _, v := range companyIds {
  727. companyIdstr = append(companyIdstr, strconv.Itoa(v))
  728. }
  729. condition = ` AND h.company_id IN (` + strings.Join(companyIdstr, ",") + `)`
  730. }
  731. condition += ` AND h.company_id != ` + strconv.Itoa(utils.HZ_COMPANY_ID) // 过滤弘则来源
  732. var list []*cygx.ArticleHistoryRep
  733. var err error
  734. var table string
  735. //"来源 1:报告精选、2:路演精华、3:本周研究汇总、4:上周纪要汇总"
  736. //报告类型,bgjx:报告精选、bzyjhz:本周研究汇总、szjyhz:上周纪要汇总
  737. if source != 2 {
  738. if source == 1 {
  739. table = "cygx_report_selection"
  740. condition += ` AND h.report_type = 'bgjx'`
  741. } else if source == 3 {
  742. table = "cygx_research_summary"
  743. condition += ` AND h.report_type = 'bzyjhz'`
  744. } else {
  745. table = "cygx_minutes_summary"
  746. condition += ` AND h.report_type = 'szjyhz'`
  747. }
  748. list, err = cygx.GetReportSelectionHistoryList(articleId, condition)
  749. if err != nil {
  750. br.Msg = "获取失败"
  751. br.ErrMsg = "获取失败,Err:" + err.Error()
  752. return
  753. }
  754. } else {
  755. table = "cygx_article"
  756. list, err = cygx.GetArticleHistoryListOld(articleId, condition)
  757. if err != nil {
  758. br.Msg = "获取失败"
  759. br.ErrMsg = "获取失败,Err:" + err.Error()
  760. return
  761. }
  762. }
  763. //根据不同类型获取不同报告的详情
  764. articleInfo, err := cygx.GetArticleInfoByIdAndTable(table, articleId)
  765. if err != nil {
  766. br.Msg = "获取失败"
  767. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  768. return
  769. }
  770. fmt.Println(articleInfo)
  771. //
  772. //创建excel
  773. dir, err := os.Executable()
  774. exPath := filepath.Dir(dir)
  775. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  776. xlsxFile := xlsx.NewFile()
  777. if err != nil {
  778. br.Msg = "生成文件失败"
  779. br.ErrMsg = "生成文件失败"
  780. return
  781. }
  782. style := xlsx.NewStyle()
  783. alignment := xlsx.Alignment{
  784. Horizontal: "center",
  785. Vertical: "center",
  786. WrapText: true,
  787. }
  788. style.Alignment = alignment
  789. style.ApplyAlignment = true
  790. sheet, err := xlsxFile.AddSheet("名单")
  791. if err != nil {
  792. br.Msg = "新增Sheet失败"
  793. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  794. return
  795. }
  796. //标头
  797. rowTitle := sheet.AddRow()
  798. cellA := rowTitle.AddCell()
  799. cellA.Value = "姓名"
  800. cellB := rowTitle.AddCell()
  801. cellB.Value = "手机号"
  802. cellC := rowTitle.AddCell()
  803. cellC.Value = "公司名称"
  804. cellD := rowTitle.AddCell()
  805. cellD.Value = "所属权益销售"
  806. cellF := rowTitle.AddCell()
  807. cellF.Value = "阅读时间"
  808. for _, item := range list {
  809. row := sheet.AddRow()
  810. cellA := row.AddCell()
  811. cellA.Value = item.RealName
  812. cellB := row.AddCell()
  813. cellB.Value = item.Mobile
  814. cellC := row.AddCell()
  815. cellC.Value = item.CompanyName
  816. cellD := row.AddCell()
  817. cellD.Value = item.SellerName
  818. cellF := row.AddCell()
  819. cellF.Value = item.CreateTime
  820. }
  821. err = xlsxFile.Save(downLoadnFilePath)
  822. if err != nil {
  823. br.Msg = "保存文件失败"
  824. br.ErrMsg = "保存文件失败"
  825. return
  826. }
  827. //randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
  828. downloadFileName := articleInfo.Title + ".xlsx"
  829. this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
  830. defer func() {
  831. //os.Remove(downLoadnFilePath)
  832. }()
  833. br.Success = true
  834. br.Ret = 200
  835. br.Msg = "导出成功"
  836. }
  837. // @Title 通过标的ID获取相关连的产文章信息
  838. // @Description 通过标的ID获取相关连的产文章信息接口
  839. // @Param IndustrialSubjectId query int true "标的id "
  840. // @Success 200 {object} cygx.OverviewArticle
  841. // @router /reportSelection/getArticle [get]
  842. func (this *ReportSelectionController) GetArticle() {
  843. br := new(models.BaseResponse).Init()
  844. defer func() {
  845. this.Data["json"] = br
  846. this.ServeJSON()
  847. }()
  848. AdminUser := this.SysUser
  849. if AdminUser == nil {
  850. br.Msg = "请登录"
  851. br.ErrMsg = "请登录,SysUser Is Empty"
  852. return
  853. }
  854. resp := new(cygx.OverviewArticle)
  855. industrialSubjectId, _ := this.GetInt("IndustrialSubjectId")
  856. if industrialSubjectId > 0 {
  857. detailSubjecj, err := cygx.GetIndustrialSubjectDetailById(industrialSubjectId)
  858. if err != nil && err.Error() != utils.ErrNoRow() {
  859. br.Msg = "获取信息失败"
  860. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  861. return
  862. }
  863. if detailSubjecj != nil {
  864. var pars []interface{}
  865. conditionArticle := ` AND type_name = '综述报告' AND stock LIKE ? `
  866. subjectName := "%" + detailSubjecj.SubjectName + "%"
  867. pars = append(pars, subjectName)
  868. articleList, err := cygx.GetCygxArticleList(conditionArticle, pars, 0, 10)
  869. if err != nil {
  870. br.Msg = "获取失败"
  871. br.ErrMsg = "GetCygxArticleList,Err:" + err.Error()
  872. return
  873. }
  874. //一对一精准匹配
  875. for _, v := range articleList {
  876. sliceSubjects := strings.Split(v.Stock, "/")
  877. if len(sliceSubjects) > 0 {
  878. for _, vSubject := range sliceSubjects {
  879. sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  880. sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  881. subject := sliceXiahuaxian[0]
  882. if subject == detailSubjecj.SubjectName {
  883. resp.ArticleId = v.ArticleId
  884. resp.Title = v.Title
  885. continue
  886. }
  887. }
  888. }
  889. }
  890. }
  891. }
  892. br.Ret = 200
  893. br.Success = true
  894. br.Msg = "获取成功"
  895. br.Data = resp
  896. }
  897. // @Title 报告精选的可见范围修改
  898. // @Description 报告精选的可见范围修改接口
  899. // @Param request body cygx.ResearchSummaryId true "type json string"
  900. // @Success 200 操作成功
  901. // @router /reportSelection/visibleRange [post]
  902. func (this *ReportSelectionController) VisibleRange() {
  903. br := new(models.BaseResponse).Init()
  904. defer func() {
  905. this.Data["json"] = br
  906. this.ServeJSON()
  907. }()
  908. AdminUser := this.SysUser
  909. if AdminUser == nil {
  910. br.Msg = "请登录"
  911. br.ErrMsg = "请登录,用户信息为空"
  912. br.Ret = 408
  913. return
  914. }
  915. var req cygx.ResearchSummaryId
  916. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  917. if err != nil {
  918. br.Msg = "参数解析异常!"
  919. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  920. return
  921. }
  922. articleId := req.ArticleId
  923. detail, err := cygx.GetCygxReportSelectionInfoById(articleId)
  924. if err != nil {
  925. br.Msg = "内容不存在"
  926. br.ErrMsg = "操作失败,Err:" + err.Error()
  927. return
  928. }
  929. item := new(cygx.CygxReportSelectionRep)
  930. item.ArticleId = articleId
  931. if detail.VisibleRange == 0 {
  932. item.VisibleRange = 1
  933. item.AdminId = AdminUser.AdminId
  934. item.AdminName = AdminUser.RealName
  935. if detail.IsSendWxMsg == 0 {
  936. cygxService.DoThisWeekLastWeekWxTemplateMsg(detail.Title, detail.PublishDate, detail.ProductDescription, req.ArticleId, 1)
  937. }
  938. go comeinService.ComeinUpdateReportSelectionPublish(articleId, "publish")
  939. } else {
  940. item.AdminId = detail.AdminId
  941. item.AdminName = detail.AdminName
  942. item.VisibleRange = 0
  943. go comeinService.ComeinUpdateReportSelectionPublish(articleId, "delete")
  944. }
  945. err = cygx.ReportSelectionVisibleRange(item)
  946. if err != nil {
  947. br.Msg = "操作失败"
  948. br.ErrMsg = "操作失败,Err:" + err.Error()
  949. return
  950. }
  951. go cygxService.UpdateReportSelectionResourceData(articleId) //首页最新页面数据逻辑处理 V11.1.1
  952. go cygxService.UpdateReportSelectionSubjectNameList() //获取报告精选最新一期标的名称
  953. br.Ret = 200
  954. br.Success = true
  955. br.Msg = "操作成功"
  956. br.IsAddLog = true
  957. }
  958. // @Title 报告精选内容详情
  959. // @Description 报告精选内容详情接口
  960. // @Param ArticleId query int true "报告Id"
  961. // @Success Ret=200 {object} cygx.DetailCygxReportSelectionRep
  962. // @router /reportSelection/history [get]
  963. func (this *ReportSelectionController) History() {
  964. br := new(models.BaseResponse).Init()
  965. defer func() {
  966. this.Data["json"] = br
  967. this.ServeJSON()
  968. }()
  969. AdminUser := this.SysUser
  970. if AdminUser == nil {
  971. br.Msg = "请登录"
  972. br.ErrMsg = "请登录,用户信息为空"
  973. br.Ret = 408
  974. return
  975. }
  976. var errArt error
  977. detail := new(cygx.CygxReportSelectionRep)
  978. articleId, _ := this.GetInt("ArticleId")
  979. detail, errArt = cygx.GetCygxReportSelectionInfoById(articleId)
  980. if errArt != nil {
  981. br.Msg = "内容不存在"
  982. br.ErrMsg = "内容不存在,Err:" + errArt.Error()
  983. return
  984. }
  985. articleId = detail.ArticleId
  986. resp := new(cygx.HistoryReportSelectionRep)
  987. permissionNameMap, err := services.GetPermissionNameMap()
  988. if err != nil {
  989. br.Msg = "获取失败"
  990. br.ErrMsg = "获取失败 GetPermissionNameMap,Err:" + err.Error()
  991. return
  992. }
  993. listSelectionLog, err := cygx.GetReportSelectionlogListAll(articleId)
  994. if err != nil {
  995. br.Msg = "获取失败"
  996. br.ErrMsg = "GetReportSelectionlogListAll,Err:" + err.Error()
  997. return
  998. }
  999. for k, v := range listSelectionLog {
  1000. listSelectionLog[k].PermissionName = permissionNameMap[v.ChartPermissionId]
  1001. }
  1002. //获取标的的点击次数
  1003. listSelectionSubjectHistory, err := cygx.GetCygxReportSelectionSubjectHistoryList(articleId)
  1004. if err != nil && err.Error() != utils.ErrNoRow() {
  1005. br.Msg = "获取失败"
  1006. br.ErrMsg = "GetCygxReportSelectionSubjectHistoryList,Err:" + err.Error()
  1007. return
  1008. }
  1009. mapSubjectHistory := make(map[string]int) // 标的点击数量
  1010. mapIndustrialHistory := make(map[string]int) // 产业点击数量
  1011. mapThirdIdHistory := make(map[int]int) // 三方产业点击数量
  1012. for _, v := range listSelectionSubjectHistory {
  1013. if v.ThirdId > 0 {
  1014. mapThirdIdHistory[v.ThirdId]++
  1015. }
  1016. mapSubjectHistory[v.IndustrialSubjectId]++
  1017. if v.IndustrialSubjectId == "0" && v.IndustrialManagementId > 0 {
  1018. mapIndustrialHistory[strconv.Itoa(v.IndustrialManagementId)]++
  1019. }
  1020. }
  1021. //排序方式修改
  1022. permissionNameList := []*cygx.HistoryReportSelectionChart{{ChartPermissionName: "消费"}, {ChartPermissionName: "医药"}, {ChartPermissionName: "科技"}, {ChartPermissionName: "智造"}}
  1023. for _, v := range permissionNameList {
  1024. v.List = make([]*cygx.HistoryReportSelectionLogResp, 0)
  1025. for _, v2 := range listSelectionLog {
  1026. if v.ChartPermissionName == v2.PermissionName {
  1027. item := new(cygx.HistoryReportSelectionLogResp)
  1028. if v2.ThirdId > 0 {
  1029. item.SubjectName = v2.ThirdName
  1030. item.Count = mapThirdIdHistory[v2.ThirdId]
  1031. } else if (v2.IndustrialSubjectId == "" || v2.IndustrialSubjectId == "0") && v2.IndustrialManagementId != "" {
  1032. item.SubjectName = v2.IndustrialManagementNames
  1033. item.Count = mapIndustrialHistory[v2.IndustrialManagementId]
  1034. } else {
  1035. item.SubjectName = v2.SubjectName
  1036. item.IndustrialSubjectId = v2.IndustrialSubjectId
  1037. item.Count = mapSubjectHistory[v2.IndustrialSubjectId]
  1038. }
  1039. item.IsNew = v2.IsNew
  1040. resp.Count += item.Count
  1041. v.List = append(v.List, item)
  1042. }
  1043. }
  1044. }
  1045. resp.List = permissionNameList
  1046. br.Ret = 200
  1047. br.Success = true
  1048. br.Msg = "获取成功"
  1049. br.Data = resp
  1050. }
  1051. // @Title 报告精选申请记录
  1052. // @Description 报告精选申请记录接口
  1053. // @Param ArticleId query int true "报告Id"
  1054. // @Success Ret=200 {object} cygx.DetailCygxReportSelectionRep
  1055. // @router /reportSelection/tarryList [get]
  1056. func (this *ReportSelectionController) RarryList() {
  1057. br := new(models.BaseResponse).Init()
  1058. defer func() {
  1059. this.Data["json"] = br
  1060. this.ServeJSON()
  1061. }()
  1062. AdminUser := this.SysUser
  1063. if AdminUser == nil {
  1064. br.Msg = "请登录"
  1065. br.ErrMsg = "请登录,用户信息为空"
  1066. br.Ret = 408
  1067. return
  1068. }
  1069. articleId, _ := this.GetInt("ArticleId")
  1070. resp := new(cygx.CygxReportSelectionLogApplyListResp)
  1071. var condition string
  1072. var pars []interface{}
  1073. condition = " AND article_id = ? ORDER BY create_time DESC "
  1074. pars = append(pars, articleId)
  1075. list, err := cygx.GetCygxReportSelectionLogApplyRespList(condition, pars, 0, 0)
  1076. if err != nil {
  1077. br.Msg = "获取信息失败"
  1078. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  1079. return
  1080. }
  1081. if len(list) == 0 {
  1082. list = make([]*cygx.CygxReportSelectionLogApplyResp, 0)
  1083. }
  1084. resp.List = list
  1085. br.Ret = 200
  1086. br.Success = true
  1087. br.Msg = "获取成功"
  1088. br.Data = resp
  1089. }
  1090. // @Title 添加三方名称
  1091. // @Description 添加三方名称接口
  1092. // @Param request body cygx.AddReportSelectionThirdNameReq true "type json string"
  1093. // @Success Ret=200 {object} cygx.AddReportSelectionThirdNameResp
  1094. // @router /reportSelection/add/third_name [post]
  1095. func (this *ReportSelectionController) AddThirdName() {
  1096. br := new(models.BaseResponse).Init()
  1097. defer func() {
  1098. this.Data["json"] = br
  1099. this.ServeJSON()
  1100. }()
  1101. AdminUser := this.SysUser
  1102. if AdminUser == nil {
  1103. br.Msg = "请登录"
  1104. br.ErrMsg = "请登录,用户信息为空"
  1105. br.Ret = 408
  1106. return
  1107. }
  1108. var req cygx.AddReportSelectionThirdNameReq
  1109. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1110. if err != nil {
  1111. br.Msg = "参数解析异常!"
  1112. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1113. return
  1114. }
  1115. thirdName := req.ThirdName
  1116. chartPermissionId := req.ChartPermissionId
  1117. if thirdName == "" {
  1118. br.Msg = "名称不能为空"
  1119. return
  1120. }
  1121. // 品种信息
  1122. chartPermission, err := models.GetChartPermissionById(chartPermissionId)
  1123. if err != nil {
  1124. br.Msg = "品种信息有误"
  1125. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  1126. return
  1127. }
  1128. item := new(cygx.CygxReportSelectionThirdName)
  1129. item.ThirdName = thirdName
  1130. item.ChartPermissionId = chartPermissionId
  1131. item.ChartPermissionName = chartPermission.ChartPermissionName
  1132. item.CreateTime = time.Now()
  1133. newId, err := cygx.AddCygxReportSelectionThirdName(item)
  1134. if err != nil {
  1135. br.Msg = "操作失败"
  1136. br.ErrMsg = "操作失败,Err:" + err.Error()
  1137. return
  1138. }
  1139. resp := new(cygx.AddReportSelectionThirdNameResp)
  1140. resp.ThirdName = thirdName
  1141. resp.ThirdId = fmt.Sprint(newId)
  1142. br.Ret = 200
  1143. br.Data = resp
  1144. br.Success = true
  1145. br.Msg = "操作成功"
  1146. br.IsAddLog = true
  1147. }