ppt_v2_group.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/services/ppt"
  6. "strings"
  7. )
  8. type PptV2GroupController struct {
  9. BaseAuthController
  10. }
  11. // GroupList
  12. // @Title 获取可见的目录列表
  13. // @Description 获取可见的目录列表接口
  14. // @Success 200 {object} models.RespGroupList
  15. // @router /groups [get]
  16. func (this *PptV2GroupController) GroupList() {
  17. br := new(models.BaseResponse).Init()
  18. defer func() {
  19. this.Data["json"] = br
  20. this.ServeJSON()
  21. }()
  22. IsNewPpt, _ := this.GetInt("IsNewPpt")
  23. //data, err := ppt.GetGroupsByAdminId(IsNewPpt, this.SysUser.AdminId)
  24. data, err := ppt.GetGroupsByAdminIdV2(IsNewPpt, this.SysUser.AdminId, this.Lang)
  25. if err != nil {
  26. br.Msg = err.Error()
  27. return
  28. }
  29. br.Ret = 200
  30. br.Success = true
  31. br.Msg = "查询成功"
  32. br.Data = data
  33. return
  34. }
  35. // AddGroup
  36. // @Title 新增ppt目录
  37. // @Description 新增ppt目录接口
  38. // @Param request body models.ReqAddPptGroup true "type json string"
  39. // @Success 200 {object} models.RespAddPptGroup
  40. // @router /group/add [post]
  41. func (this *PptV2GroupController) AddGroup() {
  42. br := new(models.BaseResponse).Init()
  43. defer func() {
  44. this.Data["json"] = br
  45. this.ServeJSON()
  46. }()
  47. var req models.ReqAddPptGroup
  48. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  49. if err != nil {
  50. br.Msg = "参数解析异常!"
  51. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  52. return
  53. }
  54. if req.GroupName == "" {
  55. br.Msg = "请输入目录名称"
  56. return
  57. }
  58. newId, err := ppt.AddGroup(req.GroupName, this.SysUser.AdminId, 0, 0)
  59. if err != nil {
  60. br.Msg = err.Error()
  61. return
  62. }
  63. resp := models.RespAddPptGroup{
  64. GroupId: newId,
  65. }
  66. br.Ret = 200
  67. br.Success = true
  68. br.Msg = "新增成功"
  69. br.Data = resp
  70. }
  71. // DeleteGroup
  72. // @Title 删除ppt目录
  73. // @Description 删除ppt目录接口
  74. // @Param request body models.ReqPptGroup true "type json string"
  75. // @Success 200 Ret=200 删除成功
  76. // @router /group/delete [post]
  77. func (this *PptV2GroupController) DeleteGroup() {
  78. br := new(models.BaseResponse).Init()
  79. defer func() {
  80. this.Data["json"] = br
  81. this.ServeJSON()
  82. }()
  83. var req models.ReqPptGroup
  84. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  85. if err != nil {
  86. br.Msg = "参数解析异常!"
  87. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  88. return
  89. }
  90. if req.GroupId <= 0 {
  91. br.Msg = "请输入目录ID"
  92. return
  93. }
  94. err = ppt.DelGroup(req.GroupId, this.SysUser.AdminId)
  95. if err != nil {
  96. br.Msg = err.Error()
  97. return
  98. }
  99. br.Ret = 200
  100. br.Success = true
  101. br.Msg = "删除成功"
  102. }
  103. // ShareGroup
  104. // @Title 共享/取消共享目录
  105. // @Description 共享/取消共享目录接口
  106. // @Param request body models.ReqPptGroup true "type json string"
  107. // @Success 200 {object} models.RespPptGroupShare
  108. // @router /group/share [post]
  109. func (this *PptV2GroupController) ShareGroup() {
  110. br := new(models.BaseResponse).Init()
  111. defer func() {
  112. this.Data["json"] = br
  113. this.ServeJSON()
  114. }()
  115. var req models.ReqPptGroup
  116. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  117. if err != nil {
  118. br.Msg = "参数解析异常!"
  119. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  120. return
  121. }
  122. if req.GroupId <= 0 {
  123. br.Msg = "请输入目录ID"
  124. return
  125. }
  126. data, err := ppt.ShareGroup(req.GroupId, this.SysUser.AdminId)
  127. if err != nil {
  128. br.Msg = err.Error()
  129. return
  130. }
  131. br.Ret = 200
  132. br.Success = true
  133. br.Msg = "操作成功"
  134. br.Data = data
  135. return
  136. }
  137. // CopyGroup
  138. // @Title 复制目录
  139. // @Description 复制目录接口
  140. // @Param request body models.ReqPptGroup true "type json string"
  141. // @Success 200 Ret=200 复制成功
  142. // @router /group/copy [post]
  143. func (this *PptV2GroupController) CopyGroup() {
  144. br := new(models.BaseResponse).Init()
  145. defer func() {
  146. this.Data["json"] = br
  147. this.ServeJSON()
  148. }()
  149. var req models.ReqPptGroup
  150. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  151. if err != nil {
  152. br.Msg = "参数解析异常!"
  153. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  154. return
  155. }
  156. if req.GroupId <= 0 {
  157. br.Msg = "请输入目录ID"
  158. return
  159. }
  160. err = ppt.CopyGroup(req.GroupId, this.SysUser.AdminId, this.SysUser.RealName)
  161. if err != nil {
  162. br.Msg = err.Error()
  163. return
  164. }
  165. br.Ret = 200
  166. br.Success = true
  167. br.Msg = "复制成功"
  168. return
  169. }
  170. // RenameGroup
  171. // @Title 目录重命名
  172. // @Description 目录重命名接口
  173. // @Param request body models.ReqRenamePptGroup true "type json string"
  174. // @Success 200 Ret=200 重命名成功
  175. // @router /group/rename [post]
  176. func (this *PptV2GroupController) RenameGroup() {
  177. br := new(models.BaseResponse).Init()
  178. defer func() {
  179. this.Data["json"] = br
  180. this.ServeJSON()
  181. }()
  182. var req models.ReqRenamePptGroup
  183. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  184. if err != nil {
  185. br.Msg = "参数解析异常!"
  186. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  187. return
  188. }
  189. if req.GroupId <= 0 {
  190. br.Msg = "请输入目录ID"
  191. return
  192. }
  193. if req.GroupName == "" {
  194. br.Msg = "请输入目录名称"
  195. return
  196. }
  197. err = ppt.RenameGroupName(req.GroupId, req.GroupName, this.SysUser.AdminId)
  198. if err != nil {
  199. br.Msg = err.Error()
  200. return
  201. }
  202. br.Ret = 200
  203. br.Success = true
  204. br.Msg = "重命名成功"
  205. return
  206. }
  207. // SharePpt
  208. // @Title 共享/取消共享单个ppt
  209. // @Description 共享/取消共享单个ppt接口
  210. // @Param request body models.ReqPptShare true "type json string"
  211. // @Success 200 {object} models.RespPptShare
  212. // @router /share [post]
  213. func (this *PptV2GroupController) SharePpt() {
  214. br := new(models.BaseResponse).Init()
  215. defer func() {
  216. this.Data["json"] = br
  217. this.ServeJSON()
  218. }()
  219. var req models.ReqPptShareV2
  220. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  221. if err != nil {
  222. br.Msg = "参数解析异常!"
  223. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  224. return
  225. }
  226. if req.PptId <= 0 {
  227. br.Msg = "请输入目录里的ppt序号"
  228. return
  229. }
  230. //data, err := ppt.ShareSingleGroupPpt(req.GroupPptId, this.SysUser.AdminId, this.SysUser.RealName)
  231. pptInfo, err := ppt.ShareSingleGroupPptV2(req.PptId, this.SysUser.AdminId)
  232. if err != nil {
  233. br.Msg = err.Error()
  234. return
  235. }
  236. br.Ret = 200
  237. br.Success = true
  238. br.Msg = "操作成功"
  239. br.Data = models.RespPptShareV2{
  240. PptId: pptInfo.PptId,
  241. IsShare: pptInfo.IsShare,
  242. }
  243. return
  244. }
  245. // GroupPptList
  246. // @Title 获取默认的ppt列表或者单个目录内的ppt列表
  247. // @Description 获取可见的目录列表接口
  248. // @Param GroupId query int true "目录ID"
  249. // @Success 200 {object} models.RespGroupPptList
  250. // @router /group/ppt/list [get]
  251. func (this *PptV2GroupController) GroupPptList() {
  252. br := new(models.BaseResponse).Init()
  253. defer func() {
  254. this.Data["json"] = br
  255. this.ServeJSON()
  256. }()
  257. groupId, _ := this.GetInt("GroupId")
  258. data, err := ppt.GetGroupPptList(int64(groupId), this.SysUser.AdminId)
  259. if err != nil {
  260. br.Msg = err.Error()
  261. br.IsSendEmail = false
  262. return
  263. }
  264. br.Ret = 200
  265. br.Success = true
  266. br.Msg = "查询成功"
  267. br.Data = data
  268. return
  269. }
  270. // MoveGroupPpt
  271. // @Title 移动目录里的ppt
  272. // @Description 移动目录里的ppt接口
  273. // @Param request body models.ReqMoveGroupPpt true "type json string"
  274. // @Success 200 Ret=200 移动成功
  275. // @router /move [post]
  276. func (this *PptV2GroupController) MoveGroupPpt() {
  277. br := new(models.BaseResponse).Init()
  278. defer func() {
  279. this.Data["json"] = br
  280. this.ServeJSON()
  281. }()
  282. var req models.ReqMoveGroupPpt
  283. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  284. if err != nil {
  285. br.Msg = "参数解析异常!"
  286. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  287. return
  288. }
  289. if req.GroupId <= 0 {
  290. br.Msg = "请输入目录ID"
  291. return
  292. }
  293. // 由于是倒序, 所以需要颠倒NextGroupPptId和PrevGroupPptId的位置
  294. err = ppt.MoveGroupPpt(req.GroupId, req.GroupPptId, req.NextGroupPptId, req.PrevGroupPptId, this.SysUser.AdminId)
  295. if err != nil {
  296. br.Msg = err.Error()
  297. return
  298. }
  299. // 增加人为移动的标识
  300. mappingInfo := &models.PptV2GroupMapping{}
  301. mappingInfo.GroupPptId = req.GroupPptId
  302. mappingInfo.IsMoved = true
  303. err = mappingInfo.Update([]string{"is_moved"})
  304. if err != nil {
  305. br.Msg = err.Error()
  306. return
  307. }
  308. br.Ret = 200
  309. br.Success = true
  310. br.Msg = "移动成功"
  311. }
  312. // MoveGroup
  313. // @Title 移动目录
  314. // @Description 移动目录接口
  315. // @Param request body models.ReqMoveGroup true "type json string"
  316. // @Success 200 Ret=200 移动成功
  317. // @router /group/move [post]
  318. func (this *PptV2GroupController) MoveGroup() {
  319. br := new(models.BaseResponse).Init()
  320. defer func() {
  321. this.Data["json"] = br
  322. this.ServeJSON()
  323. }()
  324. var req models.ReqMoveGroup
  325. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  326. if err != nil {
  327. br.Msg = "参数解析异常!"
  328. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  329. return
  330. }
  331. if req.GroupId <= 0 {
  332. br.Msg = "请输入目录ID"
  333. return
  334. }
  335. err = ppt.MoveGroup(req.GroupId, req.PrevGroupId, req.NextGroupId, this.SysUser.AdminId)
  336. if err != nil {
  337. br.Msg = err.Error()
  338. return
  339. }
  340. br.Ret = 200
  341. br.Success = true
  342. br.Msg = "移动成功"
  343. }
  344. // CopyPpt
  345. // @Title 复制单个ppt
  346. // @Description 复制目录接口
  347. // @Param request body models.ReqCopyPpt true "type json string"
  348. // @Success 200 Ret=200 复制成功
  349. // @router /copy [post]
  350. func (this *PptV2GroupController) CopyPpt() {
  351. br := new(models.BaseResponse).Init()
  352. defer func() {
  353. this.Data["json"] = br
  354. this.ServeJSON()
  355. }()
  356. var req models.ReqCopyPpt
  357. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  358. if err != nil {
  359. br.Msg = "参数解析异常!"
  360. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  361. return
  362. }
  363. if req.GroupId <= 0 {
  364. br.Msg = "请输入目录ID"
  365. return
  366. }
  367. if req.PptId <= 0 {
  368. br.Msg = "请输入ppt ID"
  369. return
  370. }
  371. data, err := ppt.CopyPpt(req.PptId, req.GroupId, this.SysUser.AdminId, this.SysUser.RealName)
  372. if err != nil {
  373. br.Msg = err.Error()
  374. return
  375. }
  376. br.Ret = 200
  377. br.Success = true
  378. br.Msg = "复制成功"
  379. br.Data = data
  380. return
  381. }
  382. // GroupNameList
  383. // @Title 查询目录名称列表
  384. // @Description 查询目录名称列表接口
  385. // @Success 200 {object} models.RespPptGroupNameList
  386. // @router /group/name [get]
  387. func (this *PptV2GroupController) GroupNameList() {
  388. br := new(models.BaseResponse).Init()
  389. defer func() {
  390. this.Data["json"] = br
  391. this.ServeJSON()
  392. }()
  393. list, err := models.GetPptGroupIdAndGroupNameByAdminId(this.SysUser.AdminId)
  394. if err != nil {
  395. br.Msg = "查询目录名称出错" + err.Error()
  396. return
  397. }
  398. data := &models.RespPptGroupNameList{
  399. List: list,
  400. }
  401. br.Ret = 200
  402. br.Success = true
  403. br.Msg = "查询成功"
  404. br.Data = data
  405. return
  406. }
  407. // SearchGroupPptList
  408. // @Title 按ppt关键词搜索列表
  409. // @Description 按ppt关键词搜索列表接口
  410. // @Param KeyWord query int true "搜索关键词"
  411. // @Success 200 {object} models.RespSearchGroupPptList
  412. // @router /group/ppt/search [get]
  413. func (this *PptV2GroupController) SearchGroupPptList() {
  414. br := new(models.BaseResponse).Init()
  415. defer func() {
  416. this.Data["json"] = br
  417. this.ServeJSON()
  418. }()
  419. keyWord := this.GetString("KeyWord")
  420. data, err := ppt.SearchGroupPpt(keyWord)
  421. if err != nil {
  422. br.Msg = err.Error()
  423. return
  424. }
  425. br.Ret = 200
  426. br.Success = true
  427. br.Msg = "查询成功"
  428. br.Data = data
  429. return
  430. }
  431. // SharePptList
  432. // @Title 获取用户开放的公共Ppt
  433. // @Description 获取用户开放的公共Ppt接口
  434. // @Param AdminId query int true "创建人ID"
  435. // @Param Keyword query string true "关键字"
  436. // @Param IsPrivate query bool false "是否为私有"
  437. // @Success 200 {object} models.RespGroupPptList
  438. // @router /share/ppt/list [get]
  439. func (this *PptV2GroupController) SharePptList() {
  440. br := new(models.BaseResponse).Init()
  441. defer func() {
  442. this.Data["json"] = br
  443. this.ServeJSON()
  444. }()
  445. adminId, _ := this.GetInt("AdminId")
  446. keyword := this.GetString("Keyword")
  447. isPrivate, _ := this.GetBool("IsPrivate", false)
  448. if isPrivate && adminId <= 0 {
  449. br.Msg = "参数有误, 私有PPT创建人ID不可为空"
  450. return
  451. }
  452. data, err := ppt.GetSharePptList(adminId, keyword, isPrivate)
  453. if err != nil {
  454. br.Msg = err.Error()
  455. return
  456. }
  457. br.Ret = 200
  458. br.Success = true
  459. br.Msg = "查询成功"
  460. br.Data = data
  461. return
  462. }
  463. // GrantPptList
  464. // @Title 获取用户共享的公共Ppt(分配权限的Ppt)
  465. // @Description 获取用户共享的公共Ppt(分配权限的Ppt)接口
  466. // @Param GroupId query int true "分组ID,唉,其实不知道用啥名,就这么用吧"
  467. // @Param Keyword query string true "关键字"
  468. // @Success 200 {object} models.RespGroupPptList
  469. // @router /grant/ppt/list [get]
  470. func (this *PptV2GroupController) GrantPptList() {
  471. br := new(models.BaseResponse).Init()
  472. defer func() {
  473. this.Data["json"] = br
  474. this.ServeJSON()
  475. }()
  476. groupId, _ := this.GetInt("GroupId")
  477. keyword := this.GetString("Keyword")
  478. var sourceType string
  479. switch groupId {
  480. case 1:
  481. sourceType = "my"
  482. case 2:
  483. sourceType = "other"
  484. default:
  485. br.Msg = "错误的来源"
  486. br.IsSendEmail = false
  487. return
  488. }
  489. data, err := ppt.GetGrantPptList(this.SysUser.AdminId, keyword, sourceType)
  490. if err != nil {
  491. br.Msg = err.Error()
  492. return
  493. }
  494. br.Ret = 200
  495. br.Success = true
  496. br.Msg = "查询成功"
  497. br.Data = data
  498. return
  499. }
  500. // ListSearch
  501. // @Title 我的/公开PPT搜索
  502. // @Description 我的/公开PPT搜索
  503. // @Param Keyword query string true "关键字"
  504. // @Success 200 {object} models.RespGroupPptList
  505. // @router /ppt/search [get]
  506. func (this *PptV2GroupController) ListSearch() {
  507. br := new(models.BaseResponse).Init()
  508. defer func() {
  509. if br.ErrMsg == "" {
  510. br.IsSendEmail = false
  511. }
  512. this.Data["json"] = br
  513. this.ServeJSON()
  514. }()
  515. sysUser := this.SysUser
  516. if sysUser == nil {
  517. br.Msg = "请登录"
  518. br.ErrMsg = "请登录,SysUser Is Empty"
  519. br.Ret = 408
  520. return
  521. }
  522. keyword := this.GetString("Keyword")
  523. keyword = strings.TrimSpace(keyword)
  524. data, err := ppt.SearchPptList(sysUser.AdminId, keyword)
  525. if err != nil {
  526. br.Msg = err.Error()
  527. return
  528. }
  529. br.Ret = 200
  530. br.Success = true
  531. br.Msg = "查询成功"
  532. br.Data = data
  533. }