minutes_summary.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  1. package cygx
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "hongze/hz_crm_api/controllers"
  7. "hongze/hz_crm_api/models"
  8. "hongze/hz_crm_api/models/cygx"
  9. "hongze/hz_crm_api/services"
  10. cygxService "hongze/hz_crm_api/services/cygx"
  11. "hongze/hz_crm_api/utils"
  12. "regexp"
  13. "strconv"
  14. "strings"
  15. "time"
  16. )
  17. // 上周纪要汇总
  18. type MinutesSummaryController struct {
  19. controllers.BaseAuthController
  20. }
  21. // @Title 上周纪要汇总内容的保存与发布
  22. // @Description 上周纪要汇总内容的保存与发布接口
  23. // @Param request body cygx.AddCygxMinutesSummary true "type json string"
  24. // @Success 200 操作成功
  25. // @router /minutesSummary/PreserveAndPublish [post]
  26. func (this *MinutesSummaryController) PreserveAndPublish() {
  27. br := new(models.BaseResponse).Init()
  28. defer func() {
  29. this.Data["json"] = br
  30. this.ServeJSON()
  31. }()
  32. AdminUser := this.SysUser
  33. if AdminUser == nil {
  34. br.Msg = "请登录"
  35. br.ErrMsg = "请登录,用户信息为空"
  36. br.Ret = 408
  37. return
  38. }
  39. var req cygx.AddCygxMinutesSummary
  40. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  41. if err != nil {
  42. br.Msg = "参数解析异常!"
  43. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  44. return
  45. }
  46. var sortSdbgStr, msgErr string
  47. content := req.Content
  48. sortYanx := content.SortYanx
  49. if sortYanx != "" {
  50. match, _ := regexp.MatchString(`^[A-Za-z]+$`, sortYanx)
  51. if !match || len(sortYanx) > 1 {
  52. br.Msg = "研选排序有误"
  53. return
  54. }
  55. content.SortYanx = strings.ToUpper(content.SortYanx)
  56. if strings.Contains(sortSdbgStr, content.SortYanx) {
  57. br.Msg = "研选排序有误"
  58. return
  59. }
  60. }
  61. sortCydyjy := content.SortCydyjy
  62. if sortCydyjy != "" {
  63. match, _ := regexp.MatchString(`^[A-Za-z]+$`, sortCydyjy)
  64. if !match || len(sortCydyjy) > 1 {
  65. br.Msg = "产业调研纪要排序有误"
  66. return
  67. }
  68. content.SortCydyjy = strings.ToUpper(content.SortCydyjy)
  69. if strings.Contains(sortSdbgStr, content.SortCydyjy) {
  70. br.Msg = "产业调研纪要排序有误"
  71. return
  72. }
  73. sortSdbgStr += content.SortCydyjy
  74. }
  75. sortSsgs := content.SortSsgs
  76. if sortSsgs != "" {
  77. match, _ := regexp.MatchString(`^[A-Za-z]+$`, sortSsgs)
  78. if !match || len(sortSsgs) > 1 {
  79. br.Msg = "上市公司调研纪要篇排序有误"
  80. return
  81. }
  82. content.SortSsgs = strings.ToUpper(content.SortSsgs)
  83. if strings.Contains(sortSdbgStr, content.SortSsgs) {
  84. br.Msg = "上市公司调研纪要篇序有误"
  85. return
  86. }
  87. }
  88. var items []*cygx.CygxMinutesSummaryLog
  89. mapSort := make(map[string]int)
  90. if len(req.List) > 0 {
  91. for _, v := range req.List {
  92. for _, v2 := range v.List {
  93. item := new(cygx.CygxMinutesSummaryLog)
  94. chartPermissionSort := v.ChartPermissionSort
  95. match, _ := regexp.MatchString(`^[A-Za-z]+$`, chartPermissionSort)
  96. if !match || len(chartPermissionSort) > 1 {
  97. br.Msg = "排序有误"
  98. return
  99. }
  100. item.ChartPermissionSort = strings.ToUpper(chartPermissionSort)
  101. if mapSort[v.ChartPermissionSort] != 0 && mapSort[v.ChartPermissionSort] != v.ChartPermissionId {
  102. br.Msg = "排序有误,排序重复"
  103. return
  104. }
  105. mapSort[v.ChartPermissionSort] = v.ChartPermissionId
  106. item.ChartPermissionId = v.ChartPermissionId
  107. item.CreateTime = time.Now()
  108. item.Body = cygxService.GetRichtext(v2.Body)
  109. item.ReportLink = v2.ReportLink
  110. if item.ReportLink != "" {
  111. articleIdLink, err := cygxService.GetReportLinkToArticleid(item.ReportLink)
  112. if err != nil {
  113. br.Msg = "操作失败"
  114. br.ErrMsg = "解析报告链接ID失败,Err:" + err.Error()
  115. return
  116. }
  117. item.LinkArticleId = articleIdLink
  118. }
  119. items = append(items, item)
  120. }
  121. }
  122. }
  123. //产业调研纪要
  124. if len(content.ListCydyjy) > 0 {
  125. items, msgErr, err = cygxService.AppendMinutesItemsLog(items, content.ListCydyjy, "CYDYJY", strings.ToUpper(content.SortCydyjy))
  126. if msgErr != "" {
  127. br.Msg = msgErr
  128. return
  129. }
  130. if err != nil {
  131. br.Msg = "操作失败"
  132. br.ErrMsg = "获取失败,Err:" + err.Error()
  133. return
  134. }
  135. }
  136. //上市公司调研纪要篇
  137. if len(content.ListSsgs) > 0 {
  138. items, msgErr, err = cygxService.AppendMinutesItemsLog(items, content.ListSsgs, "SSGS", strings.ToUpper(content.SortSsgs))
  139. if msgErr != "" {
  140. br.Msg = msgErr
  141. return
  142. }
  143. if err != nil {
  144. br.Msg = "操作失败"
  145. br.ErrMsg = "获取失败,Err:" + err.Error()
  146. return
  147. }
  148. }
  149. //研选
  150. if len(content.ListYanx) > 0 {
  151. for _, v := range content.ListYanx {
  152. item := new(cygx.CygxMinutesSummaryLog)
  153. item.Type = "YANX"
  154. item.Sort = strings.ToUpper(content.SortYanx)
  155. item.CreateTime = time.Now()
  156. item.Body = cygxService.GetRichtext(v.Body)
  157. item.ReportLink = v.ReportLink
  158. if item.ReportLink != "" {
  159. articleIdLink, err := cygxService.GetReportLinkToArticleid(item.ReportLink)
  160. if err != nil {
  161. br.Msg = "操作失败"
  162. br.ErrMsg = "解析报告链接ID失败,Err:" + err.Error()
  163. return
  164. }
  165. item.LinkArticleId = articleIdLink
  166. }
  167. items = append(items, item)
  168. }
  169. }
  170. condition := ` AND have_publish = 1 `
  171. var pars []interface{}
  172. total, err := cygx.GetCygxMinutesSummary(condition, pars)
  173. if err != nil {
  174. br.Msg = "获取失败"
  175. br.ErrMsg = "获取失败,Err:" + err.Error()
  176. return
  177. }
  178. itemCrs := new(cygx.CygxMinutesSummary)
  179. itemCrs.AdminId = AdminUser.AdminId
  180. itemCrs.AdminName = AdminUser.RealName
  181. itemCrs.Title = req.Title
  182. itemCrs.Department = req.Department
  183. itemCrs.Abstract = req.Abstract
  184. itemCrs.PublishStatus = req.DoType
  185. if req.DoType == 1 {
  186. itemCrs.HavePublish = 1
  187. itemCrs.Periods = strconv.Itoa(total + 1)
  188. }
  189. itemCrs.PublishDate = utils.StrTimeToTime(req.PublishDate + " 00:00:00")
  190. itemCrs.CreateTime = time.Now()
  191. itemCrs.LastUpdatedTime = time.Now()
  192. if req.ArticleId == 0 {
  193. articleId, err := cygx.AddCygxMinutesSummaryOrm(itemCrs, items)
  194. if err != nil {
  195. br.Msg = "操作失败"
  196. br.ErrMsg = "发布失败,Err:" + err.Error()
  197. return
  198. }
  199. req.ArticleId = int(articleId)
  200. } else {
  201. detail, err := cygx.GetCygxMinutesSummaryInfoById(req.ArticleId)
  202. if err != nil {
  203. br.Msg = "内容不存在"
  204. br.ErrMsg = "操作失败,Err:" + err.Error()
  205. return
  206. }
  207. //如果点发布PublishStatus = 1 如果点保存,PublishStatus则为之前的状态 发布人还是之前的发布人
  208. if itemCrs.PublishStatus == 0 {
  209. itemCrs.PublishStatus = detail.PublishStatus
  210. itemCrs.AdminId = detail.AdminId
  211. itemCrs.AdminName = detail.AdminName
  212. }
  213. if detail.HavePublish == 1 {
  214. itemCrs.Periods = detail.Periods
  215. itemCrs.HavePublish = detail.HavePublish
  216. }
  217. itemCrs.ArticleId = req.ArticleId
  218. _, err = cygx.UpdateCygxMinutesSummaryOrm(itemCrs, items)
  219. if err != nil {
  220. br.Msg = "操作失败"
  221. br.ErrMsg = "发布失败,Err:" + err.Error()
  222. return
  223. }
  224. }
  225. //if req.DoType == 1 {
  226. // cygxService.DoThisWeekLastWeekWxTemplateMsg(itemCrs.Title, itemCrs.PublishDate.Format(utils.FormatDateTime), itemCrs.Abstract, req.ArticleId, 3)
  227. //}
  228. //生成音频文件
  229. articleId := req.ArticleId
  230. var contentVideo string
  231. contentVideo = "摘要" + req.Abstract
  232. listFirst, err := cygx.GetMinutesSummarylogListAll(articleId)
  233. if err != nil {
  234. br.Msg = "获取失败"
  235. br.ErrMsg = "获取子类信息失败,Err:" + err.Error()
  236. return
  237. }
  238. for k, v := range listFirst {
  239. if v.Type == "CYDYJY" {
  240. contentVideo += "产业调研纪要"
  241. } else if v.Type == "SSGS" {
  242. contentVideo += "上市公司调研纪要篇"
  243. } else if v.Type == "YANX" {
  244. contentVideo += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "纪要"
  245. }
  246. listSecond, err := cygx.GetMinutesSummarylogSonListSecond(articleId, v.Type)
  247. if err != nil && err.Error() != utils.ErrNoRow() {
  248. br.Msg = "获取信息失败"
  249. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  250. return
  251. }
  252. for k2, v2 := range listSecond {
  253. contentVideo += v2.PermissionName
  254. listThird, err := cygx.GetMinutesSummarylogListThird(articleId, v2.ChartPermissionId, v.Type)
  255. if err != nil && err.Error() != utils.ErrNoRow() {
  256. br.Msg = "获取信息失败"
  257. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  258. return
  259. }
  260. if len(listThird) > 0 {
  261. listSecond[k2].List = listThird
  262. for _, v3 := range listThird {
  263. contentVideo += v3.Body
  264. }
  265. }
  266. }
  267. if len(listSecond) > 0 {
  268. listFirst[k].List = listSecond
  269. }
  270. }
  271. go services.CreateVideoWhithContent(articleId, req.Title, contentVideo, "cygx_minutes_summary")
  272. br.Ret = 200
  273. br.Success = true
  274. br.Msg = "操作成功"
  275. br.IsAddLog = true
  276. }
  277. // @Title 删除上周纪要汇总内容
  278. // @Description 删除上周纪要汇总内容接口
  279. // @Param request body cygx.MinutesSummaryId true "type json string"
  280. // @Success Ret=200
  281. // @router /minutesSummary/delete [post]
  282. func (this *MinutesSummaryController) Delete() {
  283. br := new(models.BaseResponse).Init()
  284. defer func() {
  285. this.Data["json"] = br
  286. this.ServeJSON()
  287. }()
  288. AdminUser := this.SysUser
  289. if AdminUser == nil {
  290. br.Msg = "请登录"
  291. br.ErrMsg = "请登录,SysUser Is Empty"
  292. br.Ret = 408
  293. return
  294. }
  295. var req cygx.MinutesSummaryId
  296. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  297. if err != nil {
  298. br.Msg = "参数解析异常!"
  299. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  300. return
  301. }
  302. articleId := req.ArticleId
  303. detail, err := cygx.GetCygxMinutesSummaryInfoById(articleId)
  304. if err != nil {
  305. br.Msg = "内容不存在"
  306. br.ErrMsg = "操作失败,Err:" + err.Error()
  307. return
  308. }
  309. if detail.HavePublish != 0 {
  310. br.Msg = "删除失败"
  311. br.ErrMsg = "已经存在期数无法删除"
  312. return
  313. }
  314. err = cygx.DeleteCygxMinutesSummary(articleId)
  315. if err != nil {
  316. br.Msg = "删除信息失败"
  317. br.ErrMsg = "删除信息失败,Err:" + err.Error()
  318. return
  319. }
  320. br.Ret = 200
  321. br.Success = true
  322. br.Msg = "已删除"
  323. br.IsAddLog = true
  324. }
  325. // @Title 上周纪要汇总内容详情
  326. // @Description 上周纪要汇总内容详情接口
  327. // @Param ArticleId query int true "报告Id"
  328. // @Success Ret=200 {object} cygx.DetailCygxMinutesSummaryRep
  329. // @router /minutesSummary/detail [get]
  330. func (this *MinutesSummaryController) Detail() {
  331. br := new(models.BaseResponse).Init()
  332. defer func() {
  333. this.Data["json"] = br
  334. this.ServeJSON()
  335. }()
  336. AdminUser := this.SysUser
  337. if AdminUser == nil {
  338. br.Msg = "请登录"
  339. br.ErrMsg = "请登录,用户信息为空"
  340. br.Ret = 408
  341. return
  342. }
  343. articleId, _ := this.GetInt("ArticleId")
  344. detail, err := cygx.GetCygxMinutesSummaryInfoById(articleId)
  345. if err != nil {
  346. br.Msg = "内容不存在"
  347. br.ErrMsg = "操作失败,Err:" + err.Error()
  348. return
  349. }
  350. resp := new(cygx.DetailCygxMinutesSummaryRep)
  351. resp.ArticleId = detail.ArticleId
  352. resp.Title = detail.Title
  353. resp.Department = detail.Department
  354. resp.Abstract = detail.Abstract
  355. resp.PublishStatus = detail.PublishStatus
  356. resp.PublishDate = utils.StrTimeToTime(detail.PublishDate).Format("2006-01-02")
  357. var condition string
  358. condition = ` AND chart_permission_id IN (19,20,21,22) `
  359. listLess, err := cygx.GetChartPermissionIcoDetail(condition)
  360. if err != nil {
  361. br.Msg = "获取失败"
  362. br.ErrMsg = "获取失败,Err:" + err.Error()
  363. return
  364. }
  365. listCydyjy, err := cygx.GetCygxMinutesSummaryLogRepList(articleId, "CYDYJY")
  366. if err != nil {
  367. br.Msg = "获取失败"
  368. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  369. return
  370. }
  371. for _, v := range listCydyjy {
  372. listSon, err := cygx.GetCygxMinutesSummaryLogRepListSon(articleId, v.ChartPermissionId, "CYDYJY")
  373. if err != nil {
  374. br.Msg = "获取失败"
  375. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  376. return
  377. }
  378. for k2, v2 := range listLess {
  379. if v2.ChartPermissionId == v.ChartPermissionId {
  380. listLess[k2].List = listSon
  381. listLess[k2].ChartPermissionSort = listSon[0].ChartPermissionSort
  382. }
  383. }
  384. resp.SortCydyjy = v.Sort
  385. }
  386. resp.ListCydyjy = listLess
  387. //产业调研纪要
  388. listLess, err = cygx.GetChartPermissionIcoDetail(condition)
  389. if err != nil {
  390. br.Msg = "获取失败"
  391. br.ErrMsg = "获取失败,Err:" + err.Error()
  392. return
  393. }
  394. listSsgs, err := cygx.GetCygxMinutesSummaryLogRepList(articleId, "SSGS")
  395. if err != nil {
  396. br.Msg = "获取失败"
  397. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  398. return
  399. }
  400. for _, v := range listSsgs {
  401. listSon, err := cygx.GetCygxMinutesSummaryLogRepListSon(articleId, v.ChartPermissionId, "SSGS")
  402. if err != nil {
  403. br.Msg = "获取失败"
  404. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  405. return
  406. }
  407. for k2, v2 := range listLess {
  408. if v2.ChartPermissionId == v.ChartPermissionId {
  409. listLess[k2].List = listSon
  410. listLess[k2].ChartPermissionSort = listSon[0].ChartPermissionSort
  411. }
  412. }
  413. resp.SortSsgs = v.Sort
  414. }
  415. resp.ListSsgs = listLess
  416. //事件点评
  417. listYanx, err := cygx.GetCygxMinutesSummaryYanxList(articleId, "YANX")
  418. if err != nil {
  419. br.Msg = "获取失败"
  420. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  421. return
  422. }
  423. var itemsYanx []*cygx.AddCygxMinutesSummaryLog
  424. for _, v := range listYanx {
  425. item := new(cygx.AddCygxMinutesSummaryLog)
  426. item.Body = v.Body
  427. item.ReportLink = v.ReportLink
  428. itemsYanx = append(itemsYanx, item)
  429. resp.SortYanx = v.Sort
  430. }
  431. resp.ListYanx = itemsYanx
  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.CygxMinutesSummaryListRep
  445. // @router /minutesSummary/list [get]
  446. func (this *MinutesSummaryController) 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.GetCygxMinutesSummary(condition, pars)
  483. if err != nil {
  484. br.Msg = "获取失败"
  485. br.ErrMsg = "获取失败,Err:" + err.Error()
  486. return
  487. }
  488. list, err := cygx.GetMinutesSummaryList(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.CygxMinutesSummaryListRep)
  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 /minutesSummary/PublishAndCancel [post]
  516. func (this *MinutesSummaryController) 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.GetCygxMinutesSummaryInfoById(articleId)
  538. if err != nil {
  539. br.Msg = "内容不存在"
  540. br.ErrMsg = "操作失败,Err:" + err.Error()
  541. return
  542. }
  543. item := new(cygx.CygxMinutesSummaryRep)
  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.Abstract, req.ArticleId, 3)
  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.GetCygxMinutesSummary(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.MinutesSummaryPublishAndCancel(item)
  569. if err != nil {
  570. br.Msg = "操作失败"
  571. br.ErrMsg = "操作失败,Err:" + err.Error()
  572. return
  573. }
  574. br.Ret = 200
  575. br.Success = true
  576. br.Msg = "操作成功"
  577. br.IsAddLog = true
  578. }
  579. // 批量修改已生成的音频文件
  580. func init123() {
  581. var pars []interface{}
  582. list, err := cygx.GetMinutesSummaryList("", pars, 0, 1000)
  583. if err != nil {
  584. fmt.Println(err)
  585. return
  586. }
  587. for _, v := range list {
  588. //生成音频文件
  589. articleId := v.ArticleId
  590. var contentVideo string
  591. contentVideo = "摘要" + v.Abstract
  592. listFirst, err := cygx.GetMinutesSummarylogListAll(articleId)
  593. if err != nil {
  594. fmt.Println(err)
  595. return
  596. }
  597. for k, v := range listFirst {
  598. if v.Type == "CYDYJY" {
  599. contentVideo += "产业调研纪要"
  600. } else if v.Type == "SSGS" {
  601. contentVideo += "上市公司调研纪要篇"
  602. } else if v.Type == "YANX" {
  603. contentVideo += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "纪要"
  604. }
  605. listSecond, err := cygx.GetMinutesSummarylogSonListSecond(articleId, v.Type)
  606. if err != nil && err.Error() != utils.ErrNoRow() {
  607. fmt.Println(err)
  608. return
  609. }
  610. for k2, v2 := range listSecond {
  611. contentVideo += v2.PermissionName
  612. listThird, err := cygx.GetMinutesSummarylogListThird(articleId, v2.ChartPermissionId, v.Type)
  613. if err != nil && err.Error() != utils.ErrNoRow() {
  614. fmt.Println(err)
  615. return
  616. }
  617. if len(listThird) > 0 {
  618. listSecond[k2].List = listThird
  619. for _, v3 := range listThird {
  620. contentVideo += v3.Body
  621. }
  622. }
  623. }
  624. if len(listSecond) > 0 {
  625. listFirst[k].List = listSecond
  626. }
  627. }
  628. go services.CreateVideoWhithContent(articleId, v.Title, contentVideo, "cygx_minutes_summary")
  629. }
  630. }
  631. // @Title 上周研究汇总邮件发送
  632. // @Description 上周研究汇总邮件发送接口
  633. // @Param ArticleId query int true "报告Id"
  634. // @router /minutesSummary/sendMail [get]
  635. func (this *MinutesSummaryController) MinutesSummarySendMail() {
  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 = "请登录,用户信息为空"
  645. br.Ret = 408
  646. return
  647. }
  648. articleId, _ := this.GetInt("ArticleId")
  649. detail, err := cygx.GetCygxMinutesSummaryInfoById(articleId)
  650. if err != nil {
  651. br.Msg = "内容不存在"
  652. br.ErrMsg = "操作失败,Err:" + err.Error()
  653. return
  654. }
  655. resp := new(cygx.DetailCygxMinutesSummaryRep)
  656. resp.ArticleId = detail.ArticleId
  657. resp.Title = detail.Title
  658. resp.Department = detail.Department
  659. resp.Abstract = detail.Abstract
  660. resp.PublishStatus = detail.PublishStatus
  661. resp.PublishDate = utils.StrTimeToTime(detail.PublishDate).Format("2006-01-02")
  662. var condition string
  663. condition = ` AND chart_permission_id IN (19,20,21,22) `
  664. listLess, err := cygx.GetChartPermissionIcoDetail(condition)
  665. if err != nil {
  666. br.Msg = "获取失败"
  667. br.ErrMsg = "获取失败,Err:" + err.Error()
  668. return
  669. }
  670. listCydyjy, err := cygx.GetCygxMinutesSummaryLogRepList(articleId, "CYDYJY")
  671. if err != nil {
  672. br.Msg = "获取失败"
  673. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  674. return
  675. }
  676. for _, v := range listCydyjy {
  677. listSon, err := cygx.GetCygxMinutesSummaryLogRepListSon(articleId, v.ChartPermissionId, "CYDYJY")
  678. if err != nil {
  679. br.Msg = "获取失败"
  680. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  681. return
  682. }
  683. for k2, v2 := range listLess {
  684. if v2.ChartPermissionId == v.ChartPermissionId {
  685. listLess[k2].List = listSon
  686. listLess[k2].ChartPermissionSort = listSon[0].ChartPermissionSort
  687. }
  688. }
  689. resp.SortCydyjy = v.Sort
  690. }
  691. resp.ListCydyjy = listLess
  692. //产业调研纪要
  693. listLess, err = cygx.GetChartPermissionIcoDetail(condition)
  694. if err != nil {
  695. br.Msg = "获取失败"
  696. br.ErrMsg = "获取失败,Err:" + err.Error()
  697. return
  698. }
  699. listSsgs, err := cygx.GetCygxMinutesSummaryLogRepList(articleId, "SSGS")
  700. if err != nil {
  701. br.Msg = "获取失败"
  702. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  703. return
  704. }
  705. for _, v := range listSsgs {
  706. listSon, err := cygx.GetCygxMinutesSummaryLogRepListSon(articleId, v.ChartPermissionId, "SSGS")
  707. if err != nil {
  708. br.Msg = "获取失败"
  709. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  710. return
  711. }
  712. for k2, v2 := range listLess {
  713. if v2.ChartPermissionId == v.ChartPermissionId {
  714. listLess[k2].List = listSon
  715. listLess[k2].ChartPermissionSort = listSon[0].ChartPermissionSort
  716. }
  717. }
  718. resp.SortSsgs = v.Sort
  719. }
  720. resp.ListSsgs = listLess
  721. //事件点评
  722. listYanx, err := cygx.GetCygxMinutesSummaryYanxList(articleId, "YANX")
  723. if err != nil {
  724. br.Msg = "获取失败"
  725. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  726. return
  727. }
  728. var itemsYanx []*cygx.AddCygxMinutesSummaryLog
  729. for _, v := range listYanx {
  730. item := new(cygx.AddCygxMinutesSummaryLog)
  731. item.Body = v.Body
  732. item.ReportLink = v.ReportLink
  733. itemsYanx = append(itemsYanx, item)
  734. resp.SortYanx = v.Sort
  735. }
  736. resp.ListYanx = itemsYanx
  737. var list []string
  738. //添加测试环境的过滤
  739. if utils.RunMode == "release" {
  740. list, err = cygx.GetAllOverseasRaiEmail()
  741. if err != nil {
  742. br.Msg = "获取失败"
  743. br.ErrMsg = "获取邮箱列表失败,Err:" + err.Error()
  744. return
  745. }
  746. }
  747. go cygxService.SendMinutesSummaryEmail(resp, list)
  748. br.Success = true
  749. br.Msg = "发送成功"
  750. br.Ret = 200
  751. }
  752. // @Title 上周纪要汇总的可见范围修改
  753. // @Description 上周纪要汇总的可见范围修改接口
  754. // @Param request body cygx.ResearchSummaryId true "type json string"
  755. // @Success 200 操作成功
  756. // @router /minutesSummary/visibleRange [post]
  757. func (this *MinutesSummaryController) VisibleRange() {
  758. br := new(models.BaseResponse).Init()
  759. defer func() {
  760. this.Data["json"] = br
  761. this.ServeJSON()
  762. }()
  763. AdminUser := this.SysUser
  764. if AdminUser == nil {
  765. br.Msg = "请登录"
  766. br.ErrMsg = "请登录,用户信息为空"
  767. br.Ret = 408
  768. return
  769. }
  770. var req cygx.ResearchSummaryId
  771. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  772. if err != nil {
  773. br.Msg = "参数解析异常!"
  774. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  775. return
  776. }
  777. articleId := req.ArticleId
  778. detail, err := cygx.GetCygxMinutesSummaryInfoById(articleId)
  779. if err != nil {
  780. br.Msg = "内容不存在"
  781. br.ErrMsg = "操作失败,Err:" + err.Error()
  782. return
  783. }
  784. item := new(cygx.CygxMinutesSummaryRep)
  785. item.ArticleId = articleId
  786. if detail.VisibleRange == 0 {
  787. item.VisibleRange = 1
  788. item.AdminId = AdminUser.AdminId
  789. item.AdminName = AdminUser.RealName
  790. if detail.IsSendWxMsg == 0 {
  791. cygxService.DoThisWeekLastWeekWxTemplateMsg(detail.Title, detail.PublishDate, detail.Abstract, req.ArticleId, 3)
  792. }
  793. go cygxService.UpdateResourceData(articleId, "minutessummary", "add", time.Now().Format(utils.FormatDateTime))
  794. } else {
  795. item.AdminId = detail.AdminId
  796. item.AdminName = detail.AdminName
  797. item.VisibleRange = 0
  798. go cygxService.UpdateResourceData(articleId, "minutessummary", "delete", time.Now().Format(utils.FormatDateTime))
  799. }
  800. err = cygx.MinutesSummaryVisibleRange(item)
  801. if err != nil {
  802. br.Msg = "操作失败"
  803. br.ErrMsg = "操作失败,Err:" + err.Error()
  804. return
  805. }
  806. br.Ret = 200
  807. br.Success = true
  808. br.Msg = "操作成功"
  809. br.IsAddLog = true
  810. }