bi_dashboard.go 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/bi_dashboard"
  7. "eta_gn/eta_api/models/system"
  8. biapprove "eta_gn/eta_api/services/bi_approve"
  9. "eta_gn/eta_api/utils"
  10. "fmt"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. type BIDaShboardController struct {
  16. BaseAuthController
  17. }
  18. // GroupList
  19. // @Title 获取我的列表
  20. // @Description 获取我的列表接口
  21. // @Success 200 {object} models.RespGroupList
  22. // @router /my_list [get]
  23. func (this *BIDaShboardController) MyList() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. // 获取我的看板列表
  30. privateCond := ` AND sys_admin_id = ? AND state IN (1,6) `
  31. privatePars := []interface{}{this.SysUser.AdminId}
  32. privateList, err := bi_dashboard.GetBiDashboardList(privateCond, privatePars)
  33. if err != nil {
  34. err = errors.New("我的看板列表查询出错:" + err.Error())
  35. return
  36. }
  37. br.Ret = 200
  38. br.Success = true
  39. br.Msg = "查询成功"
  40. br.Data = privateList
  41. return
  42. }
  43. // AddDashboard
  44. // @Title 新增看板
  45. // @Description 新增看板接口
  46. // @Param request body models.AddDashboardReq true "type json string"
  47. // @Success 200 Ret=200 新增成功
  48. // @router /add [post]
  49. func (this *BIDaShboardController) AddDashboard() {
  50. br := new(models.BaseResponse).Init()
  51. defer func() {
  52. this.Data["json"] = br
  53. this.ServeJSON()
  54. }()
  55. var req bi_dashboard.AddDashboardReq
  56. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  57. if err != nil {
  58. br.Msg = "参数解析异常!"
  59. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  60. return
  61. }
  62. if req.BiDashboardName == "" {
  63. br.Msg = "名称不能为空"
  64. return
  65. }
  66. item := &bi_dashboard.BiDashboard{
  67. //BiDashboardClassifyId: req.ClassifyId,
  68. BiDashboardName: req.BiDashboardName,
  69. SysAdminId: this.SysUser.AdminId,
  70. SysAdminName: this.SysUser.AdminName,
  71. //Sort: 0,
  72. CreateTime: time.Now(),
  73. ModifyTime: time.Now(),
  74. State: 1,
  75. }
  76. id, e := bi_dashboard.AddBiDashboard(item)
  77. if e != nil {
  78. err = e
  79. br.Msg = "新增失败"
  80. br.ErrMsg = "新增失败,Err:" + e.Error()
  81. return
  82. }
  83. detailList := make([]*bi_dashboard.BiDashboardDetail, 0)
  84. for i, v := range req.List {
  85. item := &bi_dashboard.BiDashboardDetail{
  86. BiDashboardId: int(id),
  87. Type: v.Type,
  88. UniqueCode: v.UniqueCode,
  89. Sort: i + 1,
  90. CreateTime: time.Now(),
  91. ModifyTime: time.Now(),
  92. }
  93. detailList = append(detailList, item)
  94. }
  95. err = bi_dashboard.AddBiDashboardDetailMulti(detailList)
  96. if err != nil {
  97. br.Msg = "新增详情失败"
  98. br.ErrMsg = "新增详情失败,Err:" + err.Error()
  99. return
  100. }
  101. br.Ret = 200
  102. br.Success = true
  103. br.Msg = "新增成功"
  104. //br.Data =
  105. }
  106. // EditPpt
  107. // @Title 编辑看板
  108. // @Description 编辑看板接口
  109. // @Param request body bi_dashboard.EditDashboardReq true "type json string"
  110. // @Success 200 Ret=200 编辑成功
  111. // @router /edit [post]
  112. func (this *BIDaShboardController) EditDashboard() {
  113. br := new(models.BaseResponse).Init()
  114. defer func() {
  115. this.Data["json"] = br
  116. this.ServeJSON()
  117. }()
  118. var req bi_dashboard.EditDashboardReq
  119. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  120. if err != nil {
  121. br.Msg = "参数解析异常!"
  122. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  123. return
  124. }
  125. if req.BiDashboardName == "" {
  126. br.Msg = "标题不能为空"
  127. return
  128. }
  129. item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  130. if err != nil && !utils.IsErrNoRow(err) {
  131. br.Msg = "获取数据异常!"
  132. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  133. return
  134. }
  135. // 判断权限
  136. if item.SysAdminId != this.SysUser.AdminId {
  137. br.Msg = `无权编辑`
  138. return
  139. }
  140. // 修改
  141. item.BiDashboardName = req.BiDashboardName
  142. item.ModifyTime = time.Now()
  143. err = bi_dashboard.EditDashboard(item)
  144. if err != nil {
  145. br.Msg = "编辑失败"
  146. br.ErrMsg = "编辑失败,Err:" + err.Error()
  147. return
  148. }
  149. err = bi_dashboard.DeleteBiDashboardDetail(req.BiDashboardId)
  150. if err != nil {
  151. br.Msg = "删除详情失败"
  152. br.ErrMsg = "删除详情失败,Err:" + err.Error()
  153. return
  154. }
  155. detailList := make([]*bi_dashboard.BiDashboardDetail, 0)
  156. for _, v := range req.List {
  157. item := &bi_dashboard.BiDashboardDetail{
  158. BiDashboardId: req.BiDashboardId,
  159. Type: v.Type,
  160. UniqueCode: v.UniqueCode,
  161. Sort: v.Sort,
  162. CreateTime: time.Now(),
  163. ModifyTime: time.Now(),
  164. }
  165. detailList = append(detailList, item)
  166. }
  167. err = bi_dashboard.AddBiDashboardDetailMulti(detailList)
  168. if err != nil {
  169. br.Msg = "新增详情失败"
  170. br.ErrMsg = "新增详情失败,Err:" + err.Error()
  171. return
  172. }
  173. br.Ret = 200
  174. br.Success = true
  175. br.Msg = "编辑成功"
  176. br.IsAddLog = true
  177. }
  178. // DeleteDashboard
  179. // @Title 删除看板
  180. // @Description 删除看板接口
  181. // @Param request body bi_dashboard.DelDashboardReq true "type json string"
  182. // @Success 200 Ret=200 删除成功
  183. // @router /delete [post]
  184. func (this *BIDaShboardController) DeleteDashboard() {
  185. br := new(models.BaseResponse).Init()
  186. defer func() {
  187. this.Data["json"] = br
  188. this.ServeJSON()
  189. }()
  190. var req bi_dashboard.DelDashboardReq
  191. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  192. if err != nil {
  193. br.Msg = "参数解析异常!"
  194. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  195. return
  196. }
  197. if req.BiDashboardId <= 0 {
  198. br.Msg = "参数错误"
  199. return
  200. }
  201. item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  202. if err != nil && !utils.IsErrNoRow(err) {
  203. br.Msg = "获取数据异常!"
  204. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  205. return
  206. }
  207. if item.SysAdminId != this.SysUser.AdminId {
  208. br.Msg = "无权删除"
  209. return
  210. }
  211. err = bi_dashboard.DelDashboard(req.BiDashboardId)
  212. if err != nil {
  213. br.Msg = "删除失败"
  214. br.ErrMsg = "删除失败,Err:" + err.Error()
  215. return
  216. }
  217. err = bi_dashboard.DelDashboard(req.BiDashboardId)
  218. if err != nil {
  219. br.Msg = "删除失败"
  220. br.ErrMsg = "删除失败,Err:" + err.Error()
  221. return
  222. }
  223. br.Ret = 200
  224. br.Success = true
  225. br.IsAddLog = true
  226. br.Msg = "删除成功"
  227. }
  228. // DeleteDashboard
  229. // @Title 删除看板详情
  230. // @Description 删除看板详情接口
  231. // @Param request body bi_dashboard.DelDashboardDetailReq true "type json string"
  232. // @Success 200 Ret=200 删除成功
  233. // @router /detail/delete [post]
  234. func (this *BIDaShboardController) DeleteDashboardDetail() {
  235. br := new(models.BaseResponse).Init()
  236. defer func() {
  237. this.Data["json"] = br
  238. this.ServeJSON()
  239. }()
  240. var req bi_dashboard.DelDashboardDetailReq
  241. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  242. if err != nil {
  243. br.Msg = "参数解析异常!"
  244. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  245. return
  246. }
  247. if req.BiDashboardDetailId <= 0 {
  248. br.Msg = "参数错误"
  249. return
  250. }
  251. err = bi_dashboard.DeleteBiDashboardDetailByDetailId(req.BiDashboardDetailId)
  252. if err != nil {
  253. br.Msg = "删除失败"
  254. br.ErrMsg = "删除失败,Err:" + err.Error()
  255. return
  256. }
  257. br.Ret = 200
  258. br.Success = true
  259. br.IsAddLog = true
  260. br.Msg = "删除成功"
  261. }
  262. // DetailDashboard
  263. // @Title 获取看板详情
  264. // @Description 获取看板详情接口
  265. // @Param PptId query int true "PptId"
  266. // @Success 200 {object} models.PptV2
  267. // @router /detail [get]
  268. func (this *BIDaShboardController) DetailDashboard() {
  269. br := new(models.BaseResponse).Init()
  270. defer func() {
  271. if br.ErrMsg == "" {
  272. br.IsSendEmail = false
  273. }
  274. this.Data["json"] = br
  275. this.ServeJSON()
  276. }()
  277. sysUser := this.SysUser
  278. if sysUser == nil {
  279. br.Msg = "请登录"
  280. br.ErrMsg = "请登录,SysUser Is Empty"
  281. br.Ret = 408
  282. return
  283. }
  284. dashboardId, _ := this.GetInt("DashboardId")
  285. dashboardItem, err := bi_dashboard.GetDashboardById(dashboardId)
  286. if err != nil {
  287. err = errors.New("我的看板列表查询出错:" + err.Error())
  288. br.Msg = "我的看板列表查询出错"
  289. br.ErrMsg = err.Error()
  290. return
  291. }
  292. detailList, err := bi_dashboard.GetBiDashboardDetailById(dashboardId)
  293. if err != nil {
  294. br.Msg = "详情获取失败"
  295. br.ErrMsg = "详情获取失败,Err:" + err.Error()
  296. return
  297. }
  298. resp := new(bi_dashboard.DashboardDetailResp)
  299. resp.BiDashboard = dashboardItem
  300. resp.List = detailList
  301. br.Ret = 200
  302. br.Success = true
  303. br.Msg = "获取成功"
  304. br.Data = resp
  305. }
  306. // MoveDashboard
  307. // @Title 移动看板详情
  308. // @Description 移动看板详情接口
  309. // @Param request body bi_dashboard.MoveDashboardDetailReq true "type json string"
  310. // @Success 200 Ret=200 移动成功
  311. // @router /detail/move [post]
  312. func (this *BIDaShboardController) MoveDashboard() {
  313. br := new(models.BaseResponse).Init()
  314. defer func() {
  315. this.Data["json"] = br
  316. this.ServeJSON()
  317. }()
  318. var req bi_dashboard.MoveDashboardDetailReq
  319. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  320. if err != nil {
  321. br.Msg = "参数解析异常!"
  322. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  323. return
  324. }
  325. if req.BiDashboardId <= 0 {
  326. br.Msg = "参数错误"
  327. return
  328. }
  329. if req.BiDashboardDetailId == req.OtherDetailId || req.BiDashboardDetailId <= 0 || req.OtherDetailId <= 0 {
  330. br.Msg = "看板Id有误"
  331. return
  332. }
  333. if req.Sort < 0 || req.OtherSort < 0 || req.Sort == req.OtherSort {
  334. br.Msg = "排序有误"
  335. return
  336. }
  337. item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  338. if err != nil && !utils.IsErrNoRow(err) {
  339. br.Msg = "获取数据异常!"
  340. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  341. return
  342. }
  343. // 判断权限
  344. if item.SysAdminId != this.SysUser.AdminId {
  345. br.Msg = `无权移动`
  346. return
  347. }
  348. // 修改
  349. detailItem := &bi_dashboard.BiDashboardDetail{
  350. BiDashboardDetailId: req.BiDashboardDetailId,
  351. Sort: req.OtherSort,
  352. ModifyTime: time.Now(),
  353. }
  354. err = bi_dashboard.EditBiDashboardDetail(detailItem)
  355. if err != nil {
  356. br.Msg = "编辑详情失败"
  357. br.ErrMsg = "编辑详情失败,Err:" + err.Error()
  358. return
  359. }
  360. otherItem := &bi_dashboard.BiDashboardDetail{
  361. BiDashboardDetailId: req.OtherDetailId,
  362. Sort: req.Sort,
  363. ModifyTime: time.Now(),
  364. }
  365. err = bi_dashboard.EditBiDashboardDetail(otherItem)
  366. if err != nil {
  367. br.Msg = "编辑详情失败"
  368. br.ErrMsg = "编辑详情失败,Err:" + err.Error()
  369. return
  370. }
  371. br.Ret = 200
  372. br.Success = true
  373. br.Msg = "编辑成功"
  374. br.IsAddLog = true
  375. }
  376. // ShareList
  377. // @Title 获取共享列表
  378. // @Description 获取共享列表接口
  379. // @Success 200 {object} models.RespGroupList
  380. // @router /share_list [get]
  381. func (this *BIDaShboardController) ShareList() {
  382. br := new(models.BaseResponse).Init()
  383. defer func() {
  384. this.Data["json"] = br
  385. this.ServeJSON()
  386. }()
  387. //myPptList := make([]*bi_dashboard.BiDashboard, 0)
  388. //otherPptList := make([]*bi_dashboard.BiDashboard, 0)
  389. grantList := bi_dashboard.RespGroupList{}
  390. // 获取我的看板列表
  391. ShareCond := ` AND sys_admin_id = ? AND state IN (1,6) `
  392. SharePars := []interface{}{this.SysUser.AdminId}
  393. ShareList, err := bi_dashboard.GetBiDashboardList(ShareCond, SharePars)
  394. if err != nil {
  395. err = errors.New("我的看板列表查询出错:" + err.Error())
  396. br.ErrMsg = err.Error()
  397. br.Msg = "查询失败"
  398. return
  399. }
  400. grantList.MyList = ShareList
  401. //dashboardMap := make(map[int]*bi_dashboard.BiDashboard)
  402. adminIdList := make([]int, 0) //需要查询的创建人admin_id列表集合
  403. adminIdMap := make(map[int]int) //需要查询的创建人admin_id集合,用来去重的,避免重复id
  404. grantDashboardList, err := bi_dashboard.GetAllGrantList(this.SysUser.AdminId)
  405. if err != nil {
  406. err = errors.New("我的看板列表查询出错:" + err.Error())
  407. br.ErrMsg = err.Error()
  408. br.Msg = "查询失败"
  409. return
  410. }
  411. publicAdminIdList := make([]int, 0)
  412. publicDashboardListMap := make(map[int][]*bi_dashboard.BiDashboard)
  413. for _, v := range grantDashboardList {
  414. publicDashboardList, ok := publicDashboardListMap[v.SysAdminId]
  415. if !ok {
  416. publicDashboardList = make([]*bi_dashboard.BiDashboard, 0)
  417. publicAdminIdList = append(publicAdminIdList, v.SysAdminId)
  418. if _, ok := adminIdMap[v.SysAdminId]; !ok {
  419. adminIdList = append(adminIdList, v.SysAdminId) //需要查询的创建人admin_id列表集合
  420. adminIdMap[v.SysAdminId] = v.SysAdminId //需要查询的创建人admin_id集合,用来去重的,避免重复id
  421. }
  422. }
  423. tmp := &bi_dashboard.BiDashboard{
  424. BiDashboardId: v.BiDashboardId,
  425. BiDashboardName: v.BiDashboardName,
  426. CreateTime: v.CreateTime,
  427. ModifyTime: v.ModifyTime,
  428. Sort: v.Sort,
  429. State: v.State,
  430. SysAdminId: v.SysAdminId,
  431. SysAdminName: v.SysAdminName,
  432. }
  433. publicDashboardList = append(publicDashboardList, tmp)
  434. publicDashboardListMap[v.SysAdminId] = publicDashboardList
  435. }
  436. // 创建人信息
  437. systemAdminMap := make(map[int]*system.Admin)
  438. systemAdminList, err := system.GetAdminListByIdList(adminIdList)
  439. if err != nil {
  440. return
  441. }
  442. for _, v := range systemAdminList {
  443. systemAdminMap[v.AdminId] = v
  444. }
  445. for _, v := range publicAdminIdList {
  446. systemAdmin, ok := systemAdminMap[v]
  447. if !ok {
  448. continue
  449. }
  450. // 看板 列表信息
  451. respGroupNameListItemList, ok := publicDashboardListMap[v]
  452. if !ok {
  453. respGroupNameListItemList = make([]*bi_dashboard.BiDashboard, 0)
  454. }
  455. // ppt 分组信息
  456. tmpRespGroupListItem := &bi_dashboard.RespOtherGroupListItem{
  457. GroupId: int64(systemAdmin.AdminId),
  458. GroupName: systemAdmin.RealName,
  459. AdminId: systemAdmin.AdminId,
  460. DashboardList: respGroupNameListItemList,
  461. }
  462. grantList.OtherList = append(grantList.OtherList, tmpRespGroupListItem)
  463. }
  464. //if len(dashboradIds) > 0 {
  465. // // 通过dashboradIds列表字段获取所有的看板信息
  466. // dashboradList, tmpErr := bi_dashboard.GetDashboradByIds(dashboradIds)
  467. // if tmpErr != nil {
  468. // err = errors.New("查询dashborad详情出错:" + err.Error())
  469. // br.Msg = "查询dashborad详情出错"
  470. // br.ErrMsg = err.Error()
  471. // return
  472. // }
  473. // for _, v := range dashboradList {
  474. // dashboardMap[v.BiDashboardId] = v
  475. // }
  476. //}
  477. br.Ret = 200
  478. br.Success = true
  479. br.Msg = "查询成功"
  480. br.Data = grantList
  481. return
  482. }
  483. // PublicList
  484. // @Title 获取公共列表
  485. // @Description 获取公共列表接口
  486. // @Success 200 {object} models.RespGroupList
  487. // @router /public_list [get]
  488. func (this *BIDaShboardController) PublicList() {
  489. br := new(models.BaseResponse).Init()
  490. defer func() {
  491. this.Data["json"] = br
  492. this.ServeJSON()
  493. }()
  494. resp := make([]*bi_dashboard.RespPublicGroupListItem, 0)
  495. // 获取公共看板列表
  496. publicCond := ` AND state = 6 AND bi_dashboard_classify_id > 0 `
  497. publicPars := []interface{}{this.SysUser.AdminId}
  498. publicList, err := bi_dashboard.GetBiDashboardList(publicCond, publicPars)
  499. if err != nil {
  500. err = errors.New("我的看板列表查询出错:" + err.Error())
  501. return
  502. }
  503. //dashboardMap := make(map[int]*bi_dashboard.BiDashboard)
  504. adminIdList := make([]int, 0) //需要查询的创建人admin_id列表集合
  505. adminIdMap := make(map[int]int) //需要查询的创建人admin_id集合,用来去重的,避免重复id
  506. publicAdminIdList := make([]int, 0)
  507. publicDashboardListMap := make(map[int][]*bi_dashboard.BiDashboard)
  508. publicDashboardClassifyIdMap := make(map[int]int)
  509. for _, v := range publicList {
  510. publicDashboardList, ok := publicDashboardListMap[v.SysAdminId]
  511. if !ok {
  512. publicDashboardList = make([]*bi_dashboard.BiDashboard, 0)
  513. publicAdminIdList = append(publicAdminIdList, v.SysAdminId)
  514. if _, ok := adminIdMap[v.SysAdminId]; !ok {
  515. adminIdList = append(adminIdList, v.SysAdminId) //需要查询的创建人admin_id列表集合
  516. adminIdMap[v.SysAdminId] = v.SysAdminId //需要查询的创建人admin_id集合,用来去重的,避免重复id
  517. }
  518. }
  519. tmp := &bi_dashboard.BiDashboard{
  520. BiDashboardId: v.BiDashboardId,
  521. BiDashboardName: v.BiDashboardName,
  522. CreateTime: v.CreateTime,
  523. ModifyTime: v.ModifyTime,
  524. Sort: v.Sort,
  525. State: v.State,
  526. SysAdminId: v.SysAdminId,
  527. SysAdminName: v.SysAdminName,
  528. }
  529. publicDashboardList = append(publicDashboardList, tmp)
  530. publicDashboardListMap[v.SysAdminId] = publicDashboardList
  531. publicDashboardClassifyIdMap[v.BiDashboardClassifyId] = v.BiDashboardClassifyId
  532. }
  533. // 创建人信息
  534. systemAdminMap := make(map[int]*system.Admin)
  535. systemAdminList, err := system.GetAdminListByIdList(adminIdList)
  536. if err != nil {
  537. return
  538. }
  539. for _, v := range systemAdminList {
  540. systemAdminMap[v.AdminId] = v
  541. }
  542. classifyList, err := bi_dashboard.GetBiDashboardClassifyAllList()
  543. if err != nil {
  544. br.Msg = "查询失败"
  545. br.ErrMsg = "查询失败,Err:" + err.Error()
  546. return
  547. }
  548. for _, c := range classifyList {
  549. tmpItem := &bi_dashboard.RespPublicGroupListItem{
  550. GroupId: int64(c.BiDashboardClassifyId),
  551. GroupName: c.BiDashboardClassifyName,
  552. }
  553. if _, ok := publicDashboardClassifyIdMap[c.BiDashboardClassifyId]; ok {
  554. for _, v := range publicAdminIdList {
  555. systemAdmin, ok := systemAdminMap[v]
  556. if !ok {
  557. continue
  558. }
  559. // 看板 列表信息
  560. respGroupNameListItemList, ok := publicDashboardListMap[v]
  561. if !ok {
  562. respGroupNameListItemList = make([]*bi_dashboard.BiDashboard, 0)
  563. }
  564. // ppt 分组信息
  565. tmpRespGroupListItem := &bi_dashboard.RespPublicGroupListItem{
  566. GroupId: int64(systemAdmin.AdminId),
  567. GroupName: systemAdmin.RealName,
  568. AdminId: systemAdmin.AdminId,
  569. }
  570. for _, vv := range respGroupNameListItemList {
  571. if vv.BiDashboardClassifyId == c.BiDashboardClassifyId {
  572. tmpRespGroupListItem.DashboardList = append(tmpRespGroupListItem.DashboardList, vv)
  573. }
  574. }
  575. tmpItem.Children = append(tmpItem.Children, tmpRespGroupListItem)
  576. resp = append(resp, tmpItem)
  577. }
  578. }
  579. }
  580. br.Ret = 200
  581. br.Success = true
  582. br.Msg = "查询成功"
  583. br.Data = resp
  584. return
  585. }
  586. // AddDashboardClassify
  587. // @Title 新增看板分类
  588. // @Description 新增看板分类接口
  589. // @Param request body bi_dashboard.AddDashboardClassifyReq true "type json string"
  590. // @Success 200 Ret=200 新增成功
  591. // @router /classify/add [post]
  592. func (this *BIDaShboardController) AddDashboardClassify() {
  593. br := new(models.BaseResponse).Init()
  594. defer func() {
  595. this.Data["json"] = br
  596. this.ServeJSON()
  597. }()
  598. var req bi_dashboard.AddDashboardClassifyReq
  599. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  600. if err != nil {
  601. br.Msg = "参数解析异常!"
  602. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  603. return
  604. }
  605. if req.ClassifyName == "" {
  606. br.Msg = "名称不能为空"
  607. return
  608. }
  609. maxSort, err := bi_dashboard.GetBiDashboardClassifyMaxSort()
  610. if err != nil {
  611. br.Msg = "获取最大排序值失败"
  612. br.ErrMsg = "获取最大排序值失败,Err:" + err.Error()
  613. return
  614. }
  615. item := &bi_dashboard.BiDashboardClassify{
  616. BiDashboardClassifyName: req.ClassifyName,
  617. Sort: maxSort + 1,
  618. CreateTime: time.Now(),
  619. ModifyTime: time.Now(),
  620. }
  621. _, e := bi_dashboard.AddBiDashboardClassify(item)
  622. if e != nil {
  623. err = e
  624. br.Msg = "新增失败"
  625. br.ErrMsg = "新增失败,Err:" + e.Error()
  626. return
  627. }
  628. br.Ret = 200
  629. br.Success = true
  630. br.Msg = "新增成功"
  631. //br.Data =
  632. }
  633. // EditDashboardClassify
  634. // @Title 编辑看板分类
  635. // @Description 编辑看板分类接口
  636. // @Param request body bi_dashboard.EditDashboardReq true "type json string"
  637. // @Success 200 Ret=200 编辑成功
  638. // @router /classify/edit [post]
  639. func (this *BIDaShboardController) EditDashboardClassify() {
  640. br := new(models.BaseResponse).Init()
  641. defer func() {
  642. this.Data["json"] = br
  643. this.ServeJSON()
  644. }()
  645. var req bi_dashboard.EditDashboardClassifyReq
  646. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  647. if err != nil {
  648. br.Msg = "参数解析异常!"
  649. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  650. return
  651. }
  652. if req.ClassifyName == "" {
  653. br.Msg = "标题不能为空"
  654. return
  655. }
  656. if req.BiDashboardClassifyId <= 0 {
  657. br.Msg = "参数有误"
  658. br.ErrMsg = fmt.Sprintf("参数有误, BiDashboardClassifyId: %d", req.BiDashboardClassifyId)
  659. return
  660. }
  661. item, err := bi_dashboard.GetBiDashboardClassifyById(req.BiDashboardClassifyId)
  662. if err != nil && !utils.IsErrNoRow(err) {
  663. br.Msg = "获取数据异常!"
  664. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  665. return
  666. }
  667. // 修改
  668. item.BiDashboardClassifyName = req.ClassifyName
  669. item.ModifyTime = time.Now()
  670. err = bi_dashboard.EditDashboardClassify(item)
  671. if err != nil {
  672. br.Msg = "编辑失败"
  673. br.ErrMsg = "编辑失败,Err:" + err.Error()
  674. return
  675. }
  676. br.Ret = 200
  677. br.Success = true
  678. br.Msg = "编辑成功"
  679. br.IsAddLog = true
  680. }
  681. // EditDashboardClassify
  682. // @Title 删除看板分类
  683. // @Description 删除看板分类接口
  684. // @Param request body bi_dashboard.DelDashboardClassifyReq true "type json string"
  685. // @Success 200 Ret=200 编辑成功
  686. // @router /classify/del [post]
  687. func (this *BIDaShboardController) DelDashboardClassify() {
  688. br := new(models.BaseResponse).Init()
  689. defer func() {
  690. this.Data["json"] = br
  691. this.ServeJSON()
  692. }()
  693. var req bi_dashboard.DelDashboardClassifyReq
  694. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  695. if err != nil {
  696. br.Msg = "参数解析异常!"
  697. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  698. return
  699. }
  700. if req.BiDashboardClassifyId <= 0 {
  701. br.Msg = "参数有误"
  702. br.ErrMsg = fmt.Sprintf("参数有误, BiDashboardClassifyId: %d", req.BiDashboardClassifyId)
  703. return
  704. }
  705. err = bi_dashboard.DelBiDashboardClassify(req.BiDashboardClassifyId)
  706. if err != nil {
  707. br.Msg = "编辑失败"
  708. br.ErrMsg = "编辑失败,Err:" + err.Error()
  709. return
  710. }
  711. br.Ret = 200
  712. br.Success = true
  713. br.Msg = "删除成功"
  714. br.IsAddLog = true
  715. }
  716. // Grant
  717. // @Title 分配看板权限
  718. // @Description 分配看板权限接口
  719. // @Param request body models.GrantPptReq true "type json string"
  720. // @Success 200 Ret=200 分配成功
  721. // @router /grant [post]
  722. func (this *BIDaShboardController) Grant() {
  723. br := new(models.BaseResponse).Init()
  724. defer func() {
  725. this.Data["json"] = br
  726. this.ServeJSON()
  727. }()
  728. var req bi_dashboard.GrantDashboardReq
  729. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  730. if err != nil {
  731. br.Msg = "参数解析异常!"
  732. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  733. return
  734. }
  735. if req.AdminIdStr == "" {
  736. br.Msg = "参数错误"
  737. return
  738. }
  739. if req.BiDashboardId <= 0 {
  740. br.Msg = "参数错误"
  741. return
  742. }
  743. dashboardItem, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  744. if err != nil {
  745. err = errors.New("我的看板列表查询出错:" + err.Error())
  746. br.Msg = "我的看板列表查询出错"
  747. br.ErrMsg = err.Error()
  748. return
  749. }
  750. if dashboardItem.SysAdminId != this.SysUser.AdminId {
  751. br.Msg = "无权配置"
  752. return
  753. }
  754. list := make([]*bi_dashboard.BiDashboardGrant, 0)
  755. grantAdminIdStrList := strings.Split(req.AdminIdStr, ",")
  756. lenGrantAdminIdStrList := len(grantAdminIdStrList) //指定用户的人数
  757. for _, v := range grantAdminIdStrList {
  758. grantAdminId, tmpErr := strconv.Atoi(v)
  759. if tmpErr != nil {
  760. br.Msg = "参数有误"
  761. br.ErrMsg = fmt.Sprintf("参数有误,Err:%s", tmpErr.Error())
  762. return
  763. }
  764. //如果只选择了自己作为指定的人,那么就提示他报错。如果多人,那么就过滤自己
  765. if grantAdminId == this.SysUser.AdminId {
  766. if lenGrantAdminIdStrList == 1 {
  767. br.Msg = "不能指定自己为权限用户"
  768. br.ErrMsg = fmt.Sprintf("参数有误,Err:%s", tmpErr.Error())
  769. return
  770. }
  771. continue
  772. }
  773. tmpV := &bi_dashboard.BiDashboardGrant{
  774. BiDashboardId: req.BiDashboardId,
  775. GrantAdminId: grantAdminId,
  776. CreateTime: time.Now(),
  777. }
  778. list = append(list, tmpV)
  779. }
  780. if len(list) <= 0 {
  781. br.Msg = "参数有误"
  782. br.ErrMsg = fmt.Sprintf("参数有误,Err:%s", "指定用户为空")
  783. return
  784. }
  785. err = bi_dashboard.MultiAddDashboardGrant(req.BiDashboardId, list)
  786. if err != nil {
  787. br.Msg = "分配失败"
  788. br.ErrMsg = fmt.Sprintf("分配失败,Err:%s", err.Error())
  789. return
  790. }
  791. br.Ret = 200
  792. br.Success = true
  793. br.IsAddLog = true
  794. br.Msg = "分配成功"
  795. }
  796. // Public
  797. // @Title
  798. // @Description 设置公共看板
  799. // @Param request body models.GrantPptReq true "type json string"
  800. // @Success 200 Ret=200 分配成功
  801. // @router /public [post]
  802. func (this *BIDaShboardController) Public() {
  803. br := new(models.BaseResponse).Init()
  804. defer func() {
  805. this.Data["json"] = br
  806. this.ServeJSON()
  807. }()
  808. var req bi_dashboard.PublicDashboardReq
  809. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  810. if err != nil {
  811. br.Msg = "参数解析异常!"
  812. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  813. return
  814. }
  815. // 校验是否开启了审批流
  816. opening, e := biapprove.CheckBiOpenApprove(req.ClassifyId)
  817. if e != nil {
  818. br.Msg = "操作失败"
  819. br.ErrMsg = "校验报告是否开启审批流失败, Err: " + e.Error()
  820. return
  821. }
  822. item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  823. if err != nil && !utils.IsErrNoRow(err) {
  824. br.Msg = "获取数据异常!"
  825. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  826. return
  827. }
  828. if opening {
  829. _, err = biapprove.SubmitBiApprove(req.BiDashboardId, item.BiDashboardName, req.ClassifyId, this.SysUser.AdminId, this.SysUser.RealName)
  830. if err != nil {
  831. br.Msg = "提交审批失败"
  832. br.ErrMsg = "提交审批失败, Err: " + err.Error()
  833. return
  834. }
  835. item.State = 4
  836. } else {
  837. item.State = 6
  838. }
  839. item.BiDashboardClassifyId = req.ClassifyId
  840. err = bi_dashboard.EditDashboard(item)
  841. if err != nil {
  842. br.Msg = "编辑失败"
  843. br.ErrMsg = "编辑失败,Err:" + err.Error()
  844. return
  845. }
  846. br.Ret = 200
  847. br.Success = true
  848. br.IsAddLog = true
  849. br.Msg = "分配成功"
  850. }
  851. // GroupList
  852. // @Title 获取分类列表
  853. // @Description 获取分类列表接口
  854. // @Success 200 {object} models.RespGroupList
  855. // @router /classify/list [get]
  856. func (this *BIDaShboardController) ClassifyList() {
  857. br := new(models.BaseResponse).Init()
  858. defer func() {
  859. this.Data["json"] = br
  860. this.ServeJSON()
  861. }()
  862. classifyList, err := bi_dashboard.GetBiDashboardClassifyAllList()
  863. if err != nil {
  864. br.Msg = "查询失败"
  865. br.ErrMsg = "查询失败,Err:" + err.Error()
  866. return
  867. }
  868. br.Ret = 200
  869. br.Success = true
  870. br.Msg = "查询成功"
  871. br.Data = classifyList
  872. return
  873. }
  874. // CancelGrant
  875. // @Title 取消分配看板权限
  876. // @Description 取消分配看板权限
  877. // @Param request body bi_dashboard.DelDashboardReq true "type json string"
  878. // @Success 200 Ret=200 分配成功
  879. // @router /grant/cancel [post]
  880. func (this *BIDaShboardController) CancelGrant() {
  881. br := new(models.BaseResponse).Init()
  882. defer func() {
  883. this.Data["json"] = br
  884. this.ServeJSON()
  885. }()
  886. var req bi_dashboard.DelDashboardReq
  887. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  888. if err != nil {
  889. br.Msg = "参数解析异常!"
  890. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  891. return
  892. }
  893. if req.BiDashboardId <= 0 {
  894. br.Msg = "参数错误"
  895. return
  896. }
  897. item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  898. if err != nil {
  899. br.Msg = "数据不存在"
  900. br.ErrMsg = "数据不存在,Err:" + err.Error()
  901. return
  902. }
  903. if item.SysAdminId != this.SysUser.AdminId {
  904. br.Msg = "无权配置"
  905. return
  906. }
  907. // 分配
  908. err = bi_dashboard.DeleteDashboardGrant(req.BiDashboardId)
  909. if err != nil {
  910. br.Msg = "取消失败"
  911. br.ErrMsg = "取消失败,Err:" + err.Error()
  912. return
  913. }
  914. br.Ret = 200
  915. br.Success = true
  916. br.IsAddLog = true
  917. br.Msg = "取消成功"
  918. }
  919. // GrantInfo
  920. // @Title 获取分配ppt权限详情
  921. // @Description 获取分配ppt权限详情接口
  922. // @Param BiDashboardId query int true "看板的id"
  923. // @Success 200 {object} models.GrantInfoResp
  924. // @router /grant/info [get]
  925. func (this *BIDaShboardController) GrantInfo() {
  926. br := new(models.BaseResponse).Init()
  927. defer func() {
  928. this.Data["json"] = br
  929. this.ServeJSON()
  930. }()
  931. biDashboardId, _ := this.GetInt("BiDashboardId")
  932. if biDashboardId <= 0 {
  933. br.Msg = "参数错误"
  934. return
  935. }
  936. item, err := bi_dashboard.GetDashboardById(biDashboardId)
  937. if err != nil {
  938. br.Msg = "数据不存在"
  939. br.ErrMsg = "数据不存在,Err:" + err.Error()
  940. return
  941. }
  942. if item.SysAdminId != this.SysUser.AdminId {
  943. br.Msg = "无权配置"
  944. return
  945. }
  946. grantInfoList, err := bi_dashboard.GetDashboardGrantInfo(biDashboardId)
  947. if err != nil {
  948. br.Msg = "信息获取失败"
  949. br.ErrMsg = "信息获取失败,Err:" + err.Error()
  950. return
  951. }
  952. if len(grantInfoList) <= 0 {
  953. br.Msg = "未配置"
  954. br.IsSendEmail = false
  955. return
  956. }
  957. var adminIdStr string
  958. adminIdsList := make([]string, 0)
  959. for _, v := range grantInfoList {
  960. adminIdsList = append(adminIdsList, strconv.Itoa(int(v.GrantAdminId)))
  961. }
  962. adminIdStr = strings.Join(adminIdsList, ",")
  963. br.Ret = 200
  964. br.Success = true
  965. br.Data = adminIdStr
  966. br.Msg = "查询成功"
  967. }