ppt_english.go 27 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/company"
  6. "eta/eta_api/models/ppt_english"
  7. "eta/eta_api/services"
  8. "eta/eta_api/services/ppt"
  9. "eta/eta_api/utils"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. _ "image/gif"
  12. _ "image/jpeg"
  13. _ "image/png"
  14. "os"
  15. "path"
  16. "strconv"
  17. "strings"
  18. "time"
  19. )
  20. // PptEnglishController 新版ppt模块
  21. type PptEnglishController struct {
  22. BaseAuthController
  23. }
  24. // PptEnglishCommonController 新版ppt公共模块
  25. type PptEnglishCommonController struct {
  26. BaseCommonController
  27. }
  28. // ListPpt
  29. // @Title 获取ppt列表
  30. // @Description 获取ppt列表接口
  31. // @Param PageSize query int true "每页数据条数"
  32. // @Param CurrentIndex query int true "当前页页码,从1开始"
  33. // @Param KeyWord query string true "搜索关键词"
  34. // @Success 200 {object} ppt_english.PptEnglishListResp
  35. // @router /list [get]
  36. func (this *PptEnglishController) ListPpt() {
  37. br := new(models.BaseResponse).Init()
  38. defer func() {
  39. this.Data["json"] = br
  40. this.ServeJSON()
  41. }()
  42. sysUser := this.SysUser
  43. if sysUser == nil {
  44. br.Msg = "请登录"
  45. br.ErrMsg = "请登录,SysUser Is Empty"
  46. return
  47. }
  48. pageSize, _ := this.GetInt("PageSize")
  49. currentIndex, _ := this.GetInt("CurrentIndex")
  50. keyWord := this.GetString("KeyWord")
  51. var startSize int
  52. if pageSize <= 0 {
  53. pageSize = utils.PageSize20
  54. }
  55. if currentIndex <= 0 {
  56. currentIndex = 1
  57. }
  58. startSize = utils.StartIndex(currentIndex, pageSize)
  59. var condition string
  60. var pars []interface{}
  61. if keyWord != "" {
  62. condition += ` AND (title LIKE ? OR admin_real_name LIKE ? ) `
  63. pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
  64. }
  65. total, err := ppt_english.GetPptEnglishListCount(condition, pars)
  66. if err != nil {
  67. br.Msg = "获取失败"
  68. br.ErrMsg = "获取失败,Err:" + err.Error()
  69. return
  70. }
  71. list, err := ppt_english.GetPptEnglishList(condition, pars, startSize, pageSize)
  72. if err != nil {
  73. br.Msg = "获取失败"
  74. br.ErrMsg = "获取失败,Err:" + err.Error()
  75. return
  76. }
  77. lenList := len(list)
  78. for i := 0; i < lenList; i++ {
  79. adminId := list[i].AdminId
  80. if adminId == sysUser.AdminId || sysUser.Role == "admin" {
  81. list[i].IsAuth = true
  82. } else {
  83. list[i].IsAuth = false
  84. }
  85. }
  86. page := paging.GetPaging(currentIndex, pageSize, total)
  87. resp := new(ppt_english.PptEnglishListResp)
  88. resp.Paging = page
  89. resp.List = list
  90. br.Ret = 200
  91. br.Success = true
  92. br.Msg = "获取成功"
  93. br.Data = resp
  94. }
  95. // AddPpt
  96. // @Title 新增ppt
  97. // @Description 新增ppt接口
  98. // @Param request body ppt_english.AddPptEnglishReq true "type json string"
  99. // @Success 200 Ret=200 新增成功
  100. // @router /add [post]
  101. func (this *PptEnglishController) AddPpt() {
  102. br := new(models.BaseResponse).Init()
  103. defer func() {
  104. this.Data["json"] = br
  105. this.ServeJSON()
  106. }()
  107. var req ppt_english.AddPptEnglishReq
  108. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  109. if err != nil {
  110. br.Msg = "参数解析异常!"
  111. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  112. return
  113. }
  114. if req.FirstPage.Title == "" {
  115. br.Msg = "标题不能为空"
  116. return
  117. }
  118. var newId int64
  119. var msg string
  120. if req.PptId <= 0 {
  121. if req.GroupId == 0 {
  122. br.Msg = "请输入目录ID"
  123. return
  124. }
  125. item, err := ppt_english.GetPptEnglishByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
  126. if err != nil && err.Error() != utils.ErrNoRow() {
  127. br.Msg = "获取数据异常!"
  128. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  129. return
  130. }
  131. if item != nil {
  132. br.Msg = "标题已存在,不可重复添加"
  133. br.IsSendEmail = false
  134. return
  135. }
  136. pptInfo := &ppt_english.PptEnglish{
  137. //PptId: 0,
  138. TemplateType: req.FirstPage.TemplateType,
  139. BackgroundImg: req.FirstPage.ImgUrl,
  140. Title: req.FirstPage.Title,
  141. ReportType: req.FirstPage.ReportType,
  142. PptDate: req.FirstPage.PptDate,
  143. Content: req.Content,
  144. CoverContent: req.CoverContent,
  145. CreateTime: time.Now(),
  146. ModifyTime: time.Now(),
  147. AdminId: this.SysUser.AdminId,
  148. AdminRealName: this.SysUser.RealName,
  149. TitleSetting: req.TitleSetting,
  150. }
  151. newId, err = ppt_english.AddPptEnglish(pptInfo)
  152. if err != nil {
  153. br.Msg = "新增失败"
  154. br.ErrMsg = "新增失败,Err:" + err.Error()
  155. return
  156. }
  157. //新增ppt和目录映射
  158. _, err = ppt.AddGroupPptEnglishMapping(newId, req.GroupId, this.SysUser.AdminId, this.SysUser.RealName)
  159. if err != nil {
  160. br.Msg = err.Error()
  161. return
  162. }
  163. msg = "新增成功"
  164. } else {
  165. newId = req.PptId
  166. pptInfo, err := ppt_english.GetPptEnglishById(int(req.PptId))
  167. if err != nil {
  168. br.Msg = "信息获取失败"
  169. br.ErrMsg = "信息获取失败,Err:" + err.Error()
  170. return
  171. }
  172. pptInfo.TemplateType = req.FirstPage.TemplateType
  173. pptInfo.BackgroundImg = req.FirstPage.ImgUrl
  174. pptInfo.Title = req.FirstPage.Title
  175. pptInfo.ReportType = req.FirstPage.ReportType
  176. pptInfo.PptDate = req.FirstPage.PptDate
  177. pptInfo.Content = req.Content
  178. pptInfo.CoverContent = req.CoverContent
  179. pptInfo.ModifyTime = time.Now()
  180. pptInfo.TitleSetting = req.TitleSetting
  181. err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "TitleSetting"})
  182. msg = "保存成功"
  183. }
  184. resp := ppt_english.AddPptEnglishResp{
  185. PptId: newId,
  186. }
  187. br.Ret = 200
  188. br.Success = true
  189. br.Msg = msg
  190. br.Data = resp
  191. }
  192. // EditPpt
  193. // @Title 编辑ppt
  194. // @Description 编辑ppt接口
  195. // @Param request body ppt_english.AddPptEnglishReq true "type json string"
  196. // @Success 200 Ret=200 编辑成功
  197. // @router /edit [post]
  198. func (this *PptEnglishController) EditPpt() {
  199. br := new(models.BaseResponse).Init()
  200. defer func() {
  201. this.Data["json"] = br
  202. this.ServeJSON()
  203. }()
  204. var req ppt_english.AddPptEnglishReq
  205. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  206. if err != nil {
  207. br.Msg = "参数解析异常!"
  208. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  209. return
  210. }
  211. if req.FirstPage.Title == "" {
  212. br.Msg = "标题不能为空"
  213. return
  214. }
  215. item, err := ppt_english.GetPptEnglishByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
  216. if err != nil && err.Error() != utils.ErrNoRow() {
  217. br.Msg = "获取数据异常!"
  218. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  219. return
  220. }
  221. if item != nil && item.PptId != int(req.PptId) {
  222. br.Msg = "标题已存在,不可重复添加"
  223. br.IsSendEmail = false
  224. return
  225. }
  226. pptInfo, err := ppt_english.GetPptEnglishById(int(req.PptId))
  227. if err != nil {
  228. br.Msg = "信息获取失败"
  229. br.ErrMsg = "信息获取失败,Err:" + err.Error()
  230. return
  231. }
  232. // 判断权限
  233. if pptInfo.AdminId != this.SysUser.AdminId {
  234. _, err := ppt_english.GetPPtGrantConf(pptInfo.PptId, this.SysUser.AdminId)
  235. if err != nil {
  236. if err.Error() == utils.ErrNoRow() {
  237. br.Msg = `该PPT已取消共享,保存失败`
  238. br.ErrMsg = `该PPT已取消共享,保存失败`
  239. br.IsSendEmail = false
  240. } else {
  241. br.Msg = `保存失败`
  242. br.ErrMsg = `保存失败,ERR:` + err.Error()
  243. }
  244. return
  245. }
  246. }
  247. // 修改
  248. pptInfo.TemplateType = req.FirstPage.TemplateType
  249. pptInfo.BackgroundImg = req.FirstPage.ImgUrl
  250. pptInfo.Title = req.FirstPage.Title
  251. pptInfo.ReportType = req.FirstPage.ReportType
  252. pptInfo.PptDate = req.FirstPage.PptDate
  253. pptInfo.Content = req.Content
  254. pptInfo.CoverContent = req.CoverContent
  255. pptInfo.ModifyTime = time.Now()
  256. pptInfo.TitleSetting = req.TitleSetting
  257. err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "TitleSetting"})
  258. if err != nil {
  259. br.Msg = "编辑失败"
  260. br.ErrMsg = "编辑失败,Err:" + err.Error()
  261. return
  262. }
  263. // 日志记录
  264. {
  265. logInfo := &ppt_english.PptEnglishSaveLog{
  266. PptId: pptInfo.PptId,
  267. TemplateType: pptInfo.TemplateType,
  268. BackgroundImg: pptInfo.BackgroundImg,
  269. Title: pptInfo.Title,
  270. ReportType: pptInfo.ReportType,
  271. PptDate: pptInfo.PptDate,
  272. Content: pptInfo.Content,
  273. CoverContent: pptInfo.CoverContent,
  274. AdminId: this.SysUser.AdminId,
  275. AdminRealName: this.SysUser.RealName,
  276. CreateTime: time.Now(),
  277. TitleSetting: req.TitleSetting,
  278. }
  279. _, err = ppt_english.AddPptEnglishSaveLog(logInfo)
  280. }
  281. resp := ppt_english.AddPptEnglishResp{
  282. PptId: req.PptId,
  283. }
  284. br.Ret = 200
  285. br.Success = true
  286. br.Msg = "编辑成功"
  287. br.IsAddLog = true
  288. br.Data = resp
  289. }
  290. // DeletePpt
  291. // @Title 删除ppt
  292. // @Description 删除ppt接口
  293. // @Param request body ppt_english.DeletePptEnglishReq true "type json string"
  294. // @Success 200 Ret=200 删除成功
  295. // @router /delete [post]
  296. func (this *PptEnglishController) DeletePpt() {
  297. br := new(models.BaseResponse).Init()
  298. defer func() {
  299. this.Data["json"] = br
  300. this.ServeJSON()
  301. }()
  302. var req ppt_english.DeletePptEnglishReq
  303. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  304. if err != nil {
  305. br.Msg = "参数解析异常!"
  306. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  307. return
  308. }
  309. if req.PptId <= 0 {
  310. br.Msg = "参数错误"
  311. return
  312. }
  313. pptInfo, err := ppt_english.GetPptEnglishById(req.PptId)
  314. if err != nil {
  315. br.Msg = "ppt不存在"
  316. return
  317. }
  318. if pptInfo.AdminId != this.SysUser.AdminId {
  319. br.Msg = "无权删除"
  320. return
  321. }
  322. err = ppt_english.DeletePptEnglish(req.PptId)
  323. if err != nil {
  324. br.Msg = "删除失败"
  325. br.ErrMsg = "删除失败,Err:" + err.Error()
  326. return
  327. }
  328. //如果该ppt存在单个共享记录,则删除共享
  329. err = ppt.DeleteGroupPptEnglish(req.PptId)
  330. if err != nil {
  331. br.Msg = "删除失败"
  332. br.ErrMsg = "删除失败,Err:" + err.Error()
  333. return
  334. }
  335. br.Ret = 200
  336. br.Success = true
  337. br.IsAddLog = true
  338. br.Msg = "删除成功"
  339. }
  340. // DetailPpt
  341. // @Title 获取ppt详情
  342. // @Description 获取ppt详情接口
  343. // @Param PptId query int true "PptId"
  344. // @Success 200 {object} ppt_english.PptEnglish
  345. // @router /detail [get]
  346. func (this *PptEnglishController) DetailPpt() {
  347. br := new(models.BaseResponse).Init()
  348. defer func() {
  349. if br.ErrMsg == "" {
  350. br.IsSendEmail = false
  351. }
  352. this.Data["json"] = br
  353. this.ServeJSON()
  354. }()
  355. sysUser := this.SysUser
  356. if sysUser == nil {
  357. br.Msg = "请登录"
  358. br.ErrMsg = "请登录,SysUser Is Empty"
  359. br.Ret = 408
  360. return
  361. }
  362. pptId, _ := this.GetInt("PptId")
  363. pptInfo, err := ppt_english.GetPptEnglishById(pptId)
  364. if err != nil {
  365. br.Msg = "信息获取失败"
  366. br.ErrMsg = "信息获取失败,Err:" + err.Error()
  367. return
  368. }
  369. // 查询编辑中
  370. editor, e := services.UpdatePptEditing(pptId, 0, sysUser.AdminId, sysUser.RealName, true)
  371. if e != nil {
  372. br.Msg = "操作失败"
  373. br.ErrMsg = "更新编辑状态失败, err: " + e.Error()
  374. return
  375. }
  376. resp := new(ppt_english.EnglishPPTDetailResp)
  377. resp.PptEnglish = pptInfo
  378. resp.Editor = editor
  379. br.Ret = 200
  380. br.Success = true
  381. br.Msg = "获取成功"
  382. br.Data = resp
  383. }
  384. // DownloadPptx
  385. // @Title ppt下载
  386. // @Description ppt下载
  387. // @Param PptId query int true "PptId"
  388. // @Success 200 下载成功
  389. // @router /downloadpptx [get]
  390. func (this *PptEnglishCommonController) DownloadPptx() {
  391. br := new(models.BaseResponse).Init()
  392. defer func() {
  393. this.Data["json"] = br
  394. this.ServeJSON()
  395. }()
  396. pptId, err := this.GetInt("PptId")
  397. if err != nil {
  398. br.Msg = "参数错误"
  399. br.ErrMsg = "获取,pptId,Err:" + err.Error()
  400. return
  401. }
  402. pptInfo, err := ppt_english.GetPptEnglishById(pptId)
  403. if err != nil {
  404. br.Msg = "获取信息失败"
  405. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  406. return
  407. }
  408. filePath := pptInfo.PptxUrl
  409. fileName := pptInfo.Title + ".pptx"
  410. this.Ctx.Output.Download(filePath, fileName)
  411. br.Success = true
  412. br.Ret = 200
  413. br.Msg = "下载成功"
  414. return
  415. }
  416. // Publish
  417. // @Title 发布接口
  418. // @Description 发布接口
  419. // @Param request body ppt_english.SavePptEnglishPathReq true "type json string"
  420. // @Success Ret=200 发布成功
  421. // @router /publish [post]
  422. func (this *PptEnglishController) Publish() {
  423. br := new(models.BaseResponse).Init()
  424. defer func() {
  425. this.Data["json"] = br
  426. this.ServeJSON()
  427. }()
  428. //SavePptEnglishPathReq
  429. //PptEnglishPublishReq
  430. var req ppt_english.SavePptEnglishPathReq
  431. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  432. if err != nil {
  433. br.Msg = "参数解析异常!"
  434. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  435. return
  436. }
  437. pptId := req.PptId
  438. if pptId <= 0 {
  439. br.Msg = "参数错误"
  440. return
  441. }
  442. err = ppt_english.EditPptEnglishPath(pptId, req.PptxUrl)
  443. if err != nil {
  444. br.Msg = "发布失败"
  445. br.ErrMsg = "发布失败,Err:" + err.Error()
  446. return
  447. }
  448. //添加发布记录
  449. {
  450. record := new(ppt_english.PptEnglishPublishRecord)
  451. record.CreateTime = time.Now()
  452. record.PptId = pptId
  453. record.PptUrl = req.PptxUrl
  454. go ppt_english.AddPptEnglishPublishRecord(record)
  455. }
  456. br.Ret = 200
  457. br.Success = true
  458. br.Msg = "发布成功"
  459. br.IsAddLog = true
  460. return
  461. }
  462. // PptUpload
  463. // @Title ppt上传
  464. // @Description ppt上传
  465. // @Param PptId query int true "PptId"
  466. // @Success 200 新增成功
  467. // @router /pptUpload [post]
  468. func (this *PptEnglishController) PptUpload() {
  469. br := new(models.BaseResponse).Init()
  470. defer func() {
  471. this.Data["json"] = br
  472. this.ServeJSON()
  473. }()
  474. pptId, _ := this.GetInt("PptId", 0)
  475. if pptId <= 0 {
  476. br.Msg = "参数错误"
  477. return
  478. }
  479. _, err := ppt_english.GetPptEnglishById(pptId)
  480. if err != nil {
  481. br.Msg = "获取数据失败"
  482. br.ErrMsg = "获取PPT详情失败,Err:" + err.Error()
  483. return
  484. }
  485. f, h, err := this.GetFile("file")
  486. if err != nil {
  487. br.Msg = "获取资源信息失败"
  488. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  489. return
  490. }
  491. uploadFileName := h.Filename //上传的文件名
  492. ext := path.Ext(h.Filename)
  493. dateDir := time.Now().Format("20060102")
  494. uploadDir := utils.STATIC_DIR + "hongze/" + dateDir
  495. err = os.MkdirAll(uploadDir, utils.DIR_MOD)
  496. if err != nil {
  497. br.Msg = "存储目录创建失败"
  498. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  499. return
  500. }
  501. randStr := utils.GetRandStringNoSpecialChar(28)
  502. fileName := randStr + ext
  503. fpath := uploadDir + "/" + fileName
  504. defer f.Close() //关闭上传文件
  505. err = this.SaveToFile("file", fpath)
  506. if err != nil {
  507. br.Msg = "文件上传失败"
  508. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  509. return
  510. }
  511. hzUploadDir := "ppt/"
  512. savePptxToOssPath := hzUploadDir + time.Now().Format("200601/20060102/")
  513. //pptName := strings.Replace(pptItem.Title, "\n", "", -1)
  514. //pptName = strings.TrimSuffix(pptName, " ")
  515. pptName := utils.GetRandStringNoSpecialChar(28)
  516. savePptxToOssPath += pptName + ".pptx"
  517. defer func() {
  518. _ = os.Remove(fpath)
  519. }()
  520. //上传到阿里云 和 minio
  521. pptxUrl := ``
  522. //if utils.ObjectStorageClient == "minio" {
  523. // err = services.UploadFileToMinIo("", fpath, savePptxToOssPath)
  524. // if err != nil {
  525. // br.Msg = "文件上传失败"
  526. // br.ErrMsg = "文件上传失败,Err:" + err.Error()
  527. // return
  528. // }
  529. // pptxUrl = utils.MinIoImghost + savePptxToOssPath
  530. //} else {
  531. // err = services.UploadFileToAliyun("", fpath, savePptxToOssPath)
  532. // if err != nil {
  533. // br.Msg = "文件上传失败"
  534. // br.ErrMsg = "文件上传失败,Err:" + err.Error()
  535. // return
  536. // }
  537. // pptxUrl = utils.Imghost + savePptxToOssPath
  538. //}
  539. ossClient := services.NewOssClient()
  540. if ossClient == nil {
  541. br.Msg = "上传失败"
  542. br.ErrMsg = "初始化OSS服务失败"
  543. return
  544. }
  545. pptxUrl, err = ossClient.UploadFile("", fpath, savePptxToOssPath)
  546. if err != nil {
  547. br.Msg = "文件上传失败"
  548. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  549. return
  550. }
  551. item := &models.Resource{
  552. //Id: 0,
  553. ResourceUrl: pptxUrl,
  554. CreateTime: time.Now(),
  555. ResourceType: 4,
  556. }
  557. newId, err := models.AddResource(item)
  558. if err != nil {
  559. br.Msg = "资源上传失败"
  560. br.ErrMsg = "资源上传失败,Err:" + err.Error()
  561. return
  562. }
  563. resp := models.ResourceResp{
  564. Id: newId,
  565. ResourceUrl: pptxUrl,
  566. ResourceName: uploadFileName,
  567. }
  568. br.Msg = "上传成功"
  569. br.Ret = 200
  570. br.Success = true
  571. br.Data = resp
  572. return
  573. }
  574. // SaveLog
  575. // @Title 定时ppt操作日志记录
  576. // @Description 定时ppt操作日志记录
  577. // @Param request body ppt_english.AddPptEnglishReq true "type json string"
  578. // @Success 200 新增成功
  579. // @router /saveLog [post]
  580. func (this *PptEnglishController) SaveLog() {
  581. br := new(models.BaseResponse).Init()
  582. defer func() {
  583. if br.ErrMsg == "" {
  584. br.IsSendEmail = false
  585. }
  586. this.Data["json"] = br
  587. this.ServeJSON()
  588. }()
  589. sysUser := this.SysUser
  590. if sysUser == nil {
  591. br.Msg = "请登录"
  592. br.ErrMsg = "请登录,SysUser Is Empty"
  593. br.Ret = 408
  594. return
  595. }
  596. var req ppt_english.AddPptEnglishReq
  597. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  598. if err != nil {
  599. br.Msg = "参数解析异常!"
  600. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  601. return
  602. }
  603. if req.FirstPage.Title == "" {
  604. br.Msg = "标题不能为空"
  605. return
  606. }
  607. // 获取ppt
  608. item, err := ppt_english.GetPptEnglishByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
  609. if err != nil && err.Error() != utils.ErrNoRow() {
  610. br.Msg = "获取数据异常!"
  611. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  612. return
  613. }
  614. if item != nil && item.PptId != int(req.PptId) {
  615. br.Msg = "标题已存在,不可重复添加"
  616. br.IsSendEmail = false
  617. return
  618. }
  619. //变更ppt内容
  620. pptItem, e := ppt_english.GetPptEnglishById(int(req.PptId))
  621. if e != nil {
  622. if e.Error() == utils.ErrNoRow() {
  623. br.Msg = "PPT已被删除, 请刷新页面"
  624. return
  625. }
  626. br.Msg = "信息获取失败"
  627. br.ErrMsg = "信息获取失败,Err:" + e.Error()
  628. return
  629. }
  630. // 标记编辑状态
  631. if pptItem.PptId > 0 {
  632. _, e = services.UpdatePptEditing(pptItem.PptId, 1, sysUser.AdminId, sysUser.RealName, true)
  633. if e != nil {
  634. br.Msg = "操作失败"
  635. br.ErrMsg = "更新编辑状态失败, err: " + e.Error()
  636. return
  637. }
  638. }
  639. //pptInfo.TemplateType = req.FirstPage.TemplateType
  640. //pptInfo.BackgroundImg = req.FirstPage.ImgUrl
  641. //pptInfo.Title = req.FirstPage.Title
  642. //pptInfo.ReportType = req.FirstPage.ReportType
  643. //pptInfo.PptDate = req.FirstPage.PptDate
  644. //pptInfo.Content = req.Content
  645. //pptInfo.ModifyTime = time.Now()
  646. //err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime"})
  647. //日志记录
  648. logInfo := &ppt_english.PptEnglishSaveLog{
  649. PptId: int(req.PptId),
  650. TemplateType: req.FirstPage.TemplateType,
  651. BackgroundImg: req.FirstPage.ImgUrl,
  652. Title: req.FirstPage.Title,
  653. ReportType: req.FirstPage.ReportType,
  654. PptDate: req.FirstPage.PptDate,
  655. Content: req.Content,
  656. CoverContent: req.CoverContent,
  657. AdminId: this.SysUser.AdminId,
  658. AdminRealName: this.SysUser.RealName,
  659. CreateTime: time.Now(),
  660. TitleSetting: req.TitleSetting,
  661. }
  662. _, err = ppt_english.AddPptEnglishSaveLog(logInfo)
  663. if err != nil {
  664. br.Msg = "保存失败"
  665. br.ErrMsg = "保存PPT日志失败, Err: " + err.Error()
  666. return
  667. }
  668. br.Ret = 200
  669. br.Success = true
  670. br.Msg = "保存成功"
  671. }
  672. // GetConfig
  673. // @Title 获取ppt配置
  674. // @Description 获取ppt列表接口
  675. // @Param PageSize query int true "每页数据条数"
  676. // @Param CurrentIndex query int true "当前页页码,从1开始"
  677. // @Param KeyWord query string true "搜索关键词"
  678. // @Success 200 {object} ppt_english.PptEnglishListResp
  679. // @router /config [get]
  680. func (this *PptEnglishController) GetConfig() {
  681. br := new(models.BaseResponse).Init()
  682. defer func() {
  683. this.Data["json"] = br
  684. this.ServeJSON()
  685. }()
  686. crmConfig, err := company.GetConfigDetailByCode("ppt_limit")
  687. if err != nil {
  688. br.Msg = "获取配置失败"
  689. br.ErrMsg = "获取配置失败"
  690. br.IsSendEmail = false
  691. return
  692. }
  693. resp := new(ppt_english.PptEnglishConfigResp)
  694. err = json.Unmarshal([]byte(crmConfig.ConfigValue), resp)
  695. if err != nil {
  696. br.Msg = "获取配置失败"
  697. br.ErrMsg = "获取配置失败;err:" + err.Error()
  698. br.IsSendEmail = false
  699. return
  700. }
  701. br.Ret = 200
  702. br.Success = true
  703. br.Msg = "获取成功"
  704. br.Data = resp
  705. }
  706. // Grant
  707. // @Title 分配ppt权限
  708. // @Description 分配ppt权限接口
  709. // @Param request body ppt_english.GrantPptReq true "type json string"
  710. // @Success 200 Ret=200 分配成功
  711. // @router /grant [post]
  712. func (this *PptEnglishController) Grant() {
  713. br := new(models.BaseResponse).Init()
  714. defer func() {
  715. this.Data["json"] = br
  716. this.ServeJSON()
  717. }()
  718. var req ppt_english.GrantPptReq
  719. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  720. if err != nil {
  721. br.Msg = "参数解析异常!"
  722. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  723. return
  724. }
  725. if req.PptId <= 0 {
  726. br.Msg = "参数错误"
  727. return
  728. }
  729. // 查找ppt信息
  730. pptInfo, err := ppt_english.GetPptEnglishById(req.PptId)
  731. if err != nil {
  732. br.Msg = "ppt不存在"
  733. return
  734. }
  735. if pptInfo.AdminId != this.SysUser.AdminId {
  736. br.Msg = "无权配置"
  737. return
  738. }
  739. // 分配
  740. err, errMsg := ppt.GrantPptEnglish(req.PptId, req.GrantType, req.AdminIdStr, this.SysUser.AdminId)
  741. if errMsg != `` {
  742. br.Msg = errMsg
  743. br.ErrMsg = errMsg
  744. if err != nil {
  745. br.ErrMsg = errMsg + ";Err:" + err.Error()
  746. } else {
  747. br.IsSendEmail = false
  748. }
  749. return
  750. }
  751. br.Ret = 200
  752. br.Success = true
  753. br.IsAddLog = true
  754. br.Msg = "分配成功"
  755. }
  756. // CancelGrant
  757. // @Title 取消分配ppt权限
  758. // @Description 取消分配ppt权限
  759. // @Param request body ppt_english.DeletePptEnglishReq true "type json string"
  760. // @Success 200 Ret=200 分配成功
  761. // @router /grant/cancel [post]
  762. func (this *PptEnglishController) CancelGrant() {
  763. br := new(models.BaseResponse).Init()
  764. defer func() {
  765. this.Data["json"] = br
  766. this.ServeJSON()
  767. }()
  768. var req ppt_english.DeletePptEnglishReq
  769. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  770. if err != nil {
  771. br.Msg = "参数解析异常!"
  772. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  773. return
  774. }
  775. if req.PptId <= 0 {
  776. br.Msg = "参数错误"
  777. return
  778. }
  779. // 查找ppt信息
  780. pptInfo, err := ppt_english.GetPptEnglishById(req.PptId)
  781. if err != nil {
  782. br.Msg = "ppt不存在"
  783. return
  784. }
  785. if pptInfo.AdminId != this.SysUser.AdminId {
  786. br.Msg = "无权取消配置"
  787. return
  788. }
  789. // 分配
  790. err, errMsg := ppt.DeleteGrantPptEnglish(req.PptId)
  791. if errMsg != `` {
  792. br.Msg = errMsg
  793. br.ErrMsg = errMsg
  794. if err != nil {
  795. br.ErrMsg = errMsg + ";Err:" + err.Error()
  796. } else {
  797. br.IsSendEmail = false
  798. }
  799. return
  800. }
  801. br.Ret = 200
  802. br.Success = true
  803. br.IsAddLog = true
  804. br.Msg = "取消成功"
  805. }
  806. // GrantInfo
  807. // @Title 获取分配ppt权限详情
  808. // @Description 获取分配ppt权限详情接口
  809. // @Param PptId query int true "ppt的id"
  810. // @Success 200 {object} ppt_english.GrantInfoResp
  811. // @router /grant/info [get]
  812. func (this *PptEnglishController) GrantInfo() {
  813. br := new(models.BaseResponse).Init()
  814. defer func() {
  815. this.Data["json"] = br
  816. this.ServeJSON()
  817. }()
  818. pptId, _ := this.GetInt("PptId")
  819. if pptId <= 0 {
  820. br.Msg = "参数错误"
  821. return
  822. }
  823. // 查找ppt信息
  824. pptInfo, err := ppt_english.GetPptEnglishById(pptId)
  825. if err != nil {
  826. br.Msg = "ppt不存在"
  827. return
  828. }
  829. if pptInfo.AdminId != this.SysUser.AdminId {
  830. br.Msg = "无权配置"
  831. return
  832. }
  833. pptGrantInfoList, err := ppt_english.GetPPtGrantInfo(pptId)
  834. if err != nil {
  835. br.Msg = "信息获取失败"
  836. br.ErrMsg = "信息获取失败,Err:" + err.Error()
  837. return
  838. }
  839. if len(pptGrantInfoList) <= 0 {
  840. br.Msg = "未配置"
  841. br.IsSendEmail = false
  842. return
  843. }
  844. grantType := 0
  845. var adminIdStr string
  846. if pptGrantInfoList[0].DepartmentId > 0 { //分配类型;1:全部ficc研究员;2:指定成员
  847. grantType = 1
  848. } else {
  849. grantType = 2
  850. adminIdsList := make([]string, 0)
  851. for _, v := range pptGrantInfoList {
  852. adminIdsList = append(adminIdsList, strconv.Itoa(int(v.GrantAdminId)))
  853. }
  854. adminIdStr = strings.Join(adminIdsList, ",")
  855. }
  856. br.Ret = 200
  857. br.Success = true
  858. br.Data = ppt_english.GrantInfoResp{
  859. PptId: pptId,
  860. GrantType: grantType,
  861. AdminIdStr: adminIdStr,
  862. }
  863. br.Msg = "分配成功"
  864. }
  865. // ToReport
  866. // @Title 英文PPT转报告
  867. // @Description PPT转报告
  868. // @Param request body ppt_english.EnglishPPT2ReportReq true "type json string"
  869. // @Success 200 Ret=200 转换成功
  870. // @router /toReport [post]
  871. func (this *PptEnglishController) ToReport() {
  872. br := new(models.BaseResponse).Init()
  873. defer func() {
  874. this.Data["json"] = br
  875. this.ServeJSON()
  876. }()
  877. sysUser := this.SysUser
  878. if sysUser == nil {
  879. br.Msg = "请登录"
  880. br.ErrMsg = "请登录,SysUser Is Empty"
  881. br.Ret = 408
  882. return
  883. }
  884. var req ppt_english.EnglishPPT2ReportReq
  885. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  886. if err != nil {
  887. br.Msg = "参数解析异常!"
  888. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  889. return
  890. }
  891. if req.PptId == 0 {
  892. br.Msg = "参数有误"
  893. return
  894. }
  895. reportId, reportCode, msg, e := services.SaveEnglishPPTReport(req.PptId, req.ClassifyIdFirst, req.ClassifyIdSecond, req.Title, req.Abstract, sysUser)
  896. if e != nil {
  897. br.Msg = msg
  898. br.ErrMsg = "PPT转报告失败, Err: " + e.Error()
  899. return
  900. }
  901. resp := &models.PPT2ReportResp{
  902. ReportId: reportId,
  903. ReportCode: reportCode,
  904. }
  905. br.Ret = 200
  906. br.Success = true
  907. br.Msg = "转换成功"
  908. br.IsAddLog = true
  909. br.Data = resp
  910. }
  911. // TitleCheck
  912. // @Title 校验标题是否重复
  913. // @Description 校验标题是否重复接口
  914. // @Param Title query int true "标题"
  915. // @Success 200 Ret=200 编辑成功
  916. // @router /titleCheck [get]
  917. func (this *PptEnglishController) TitleCheck() {
  918. br := new(models.BaseResponse).Init()
  919. defer func() {
  920. this.Data["json"] = br
  921. this.ServeJSON()
  922. }()
  923. title := this.GetString("Title")
  924. pptId, _ := this.GetInt("PptId")
  925. if title == "" {
  926. br.Msg = "标题不能为空"
  927. return
  928. }
  929. item, err := ppt_english.GetPptEnglishByTitleAndId(title, this.SysUser.AdminId)
  930. if err != nil && err.Error() != utils.ErrNoRow() {
  931. br.Msg = "获取数据异常!"
  932. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  933. return
  934. }
  935. if item != nil && item.PptId != pptId {
  936. br.Msg = "标题已存在,不可重复添加"
  937. br.IsSendEmail = false
  938. return
  939. }
  940. br.Ret = 200
  941. br.Success = true
  942. br.Msg = "校验成功"
  943. }
  944. // Editing
  945. // @Title 标记编辑状态
  946. // @Description 标记编辑状态
  947. // @Param request body models.PPTEditingReq true "type json string"
  948. // @Success 200 Ret=200 操作成功
  949. // @router /editing [post]
  950. func (this *PptEnglishController) Editing() {
  951. br := new(models.BaseResponse).Init()
  952. defer func() {
  953. if br.ErrMsg == "" {
  954. br.IsSendEmail = false
  955. }
  956. this.Data["json"] = br
  957. this.ServeJSON()
  958. }()
  959. sysUser := this.SysUser
  960. if sysUser == nil {
  961. br.Msg = "请登录"
  962. br.ErrMsg = "请登录,SysUser Is Empty"
  963. br.Ret = 408
  964. return
  965. }
  966. var req models.PPTEditingReq
  967. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  968. if err != nil {
  969. br.Msg = "参数解析异常!"
  970. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  971. return
  972. }
  973. if req.PptId <= 0 {
  974. br.Msg = "参数有误"
  975. return
  976. }
  977. if req.Status <= 0 {
  978. br.Msg = "标记状态异常"
  979. return
  980. }
  981. editor, e := services.UpdatePptEditing(req.PptId, req.Status, sysUser.AdminId, sysUser.RealName, true)
  982. if e != nil {
  983. br.Msg = "操作失败"
  984. br.ErrMsg = "更新编辑状态失败, err: " + e.Error()
  985. return
  986. }
  987. br.Data = editor
  988. br.Ret = 200
  989. br.Success = true
  990. br.Msg = "操作成功"
  991. }