bi_dashboard.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  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. grantList := bi_dashboard.RespGroupList{}
  495. // 获取公共看板列表
  496. publicCond := ` AND state = 6 `
  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. for _, v := range publicList {
  509. publicDashboardList, ok := publicDashboardListMap[v.SysAdminId]
  510. if !ok {
  511. publicDashboardList = make([]*bi_dashboard.BiDashboard, 0)
  512. publicAdminIdList = append(publicAdminIdList, v.SysAdminId)
  513. if _, ok := adminIdMap[v.SysAdminId]; !ok {
  514. adminIdList = append(adminIdList, v.SysAdminId) //需要查询的创建人admin_id列表集合
  515. adminIdMap[v.SysAdminId] = v.SysAdminId //需要查询的创建人admin_id集合,用来去重的,避免重复id
  516. }
  517. }
  518. tmp := &bi_dashboard.BiDashboard{
  519. BiDashboardId: v.BiDashboardId,
  520. BiDashboardName: v.BiDashboardName,
  521. CreateTime: v.CreateTime,
  522. ModifyTime: v.ModifyTime,
  523. Sort: v.Sort,
  524. State: v.State,
  525. SysAdminId: v.SysAdminId,
  526. SysAdminName: v.SysAdminName,
  527. }
  528. publicDashboardList = append(publicDashboardList, tmp)
  529. publicDashboardListMap[v.SysAdminId] = publicDashboardList
  530. }
  531. // 创建人信息
  532. systemAdminMap := make(map[int]*system.Admin)
  533. systemAdminList, err := system.GetAdminListByIdList(adminIdList)
  534. if err != nil {
  535. return
  536. }
  537. for _, v := range systemAdminList {
  538. systemAdminMap[v.AdminId] = v
  539. }
  540. for _, v := range publicAdminIdList {
  541. systemAdmin, ok := systemAdminMap[v]
  542. if !ok {
  543. continue
  544. }
  545. // 看板 列表信息
  546. respGroupNameListItemList, ok := publicDashboardListMap[v]
  547. if !ok {
  548. respGroupNameListItemList = make([]*bi_dashboard.BiDashboard, 0)
  549. }
  550. // ppt 分组信息
  551. tmpRespGroupListItem := &bi_dashboard.RespOtherGroupListItem{
  552. GroupId: int64(systemAdmin.AdminId),
  553. GroupName: systemAdmin.RealName,
  554. AdminId: systemAdmin.AdminId,
  555. DashboardList: respGroupNameListItemList,
  556. }
  557. grantList.OtherList = append(grantList.OtherList, tmpRespGroupListItem)
  558. }
  559. br.Ret = 200
  560. br.Success = true
  561. br.Msg = "查询成功"
  562. br.Data = publicList
  563. return
  564. }
  565. // AddDashboardClassify
  566. // @Title 新增看板分类
  567. // @Description 新增看板分类接口
  568. // @Param request body bi_dashboard.AddDashboardClassifyReq true "type json string"
  569. // @Success 200 Ret=200 新增成功
  570. // @router /classify/add [post]
  571. func (this *BIDaShboardController) AddDashboardClassify() {
  572. br := new(models.BaseResponse).Init()
  573. defer func() {
  574. this.Data["json"] = br
  575. this.ServeJSON()
  576. }()
  577. var req bi_dashboard.AddDashboardClassifyReq
  578. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  579. if err != nil {
  580. br.Msg = "参数解析异常!"
  581. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  582. return
  583. }
  584. if req.ClassifyName == "" {
  585. br.Msg = "名称不能为空"
  586. return
  587. }
  588. maxSort, err := bi_dashboard.GetBiDashboardClassifyMaxSort()
  589. if err != nil {
  590. br.Msg = "获取最大排序值失败"
  591. br.ErrMsg = "获取最大排序值失败,Err:" + err.Error()
  592. return
  593. }
  594. item := &bi_dashboard.BiDashboardClassify{
  595. BiDashboardClassifyName: req.ClassifyName,
  596. Sort: maxSort + 1,
  597. CreateTime: time.Now(),
  598. ModifyTime: time.Now(),
  599. }
  600. _, e := bi_dashboard.AddBiDashboardClassify(item)
  601. if e != nil {
  602. err = e
  603. br.Msg = "新增失败"
  604. br.ErrMsg = "新增失败,Err:" + e.Error()
  605. return
  606. }
  607. br.Ret = 200
  608. br.Success = true
  609. br.Msg = "新增成功"
  610. //br.Data =
  611. }
  612. // EditDashboardClassify
  613. // @Title 编辑看板分类
  614. // @Description 编辑看板分类接口
  615. // @Param request body bi_dashboard.EditDashboardReq true "type json string"
  616. // @Success 200 Ret=200 编辑成功
  617. // @router /classify/edit [post]
  618. func (this *BIDaShboardController) EditDashboardClassify() {
  619. br := new(models.BaseResponse).Init()
  620. defer func() {
  621. this.Data["json"] = br
  622. this.ServeJSON()
  623. }()
  624. var req bi_dashboard.EditDashboardClassifyReq
  625. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  626. if err != nil {
  627. br.Msg = "参数解析异常!"
  628. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  629. return
  630. }
  631. if req.ClassifyName == "" {
  632. br.Msg = "标题不能为空"
  633. return
  634. }
  635. if req.BiDashboardClassifyId <= 0 {
  636. br.Msg = "参数有误"
  637. br.ErrMsg = fmt.Sprintf("参数有误, BiDashboardClassifyId: %d", req.BiDashboardClassifyId)
  638. return
  639. }
  640. item, err := bi_dashboard.GetBiDashboardClassifyById(req.BiDashboardClassifyId)
  641. if err != nil && !utils.IsErrNoRow(err) {
  642. br.Msg = "获取数据异常!"
  643. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  644. return
  645. }
  646. // 修改
  647. item.BiDashboardClassifyName = req.ClassifyName
  648. item.ModifyTime = time.Now()
  649. err = bi_dashboard.EditDashboardClassify(item)
  650. if err != nil {
  651. br.Msg = "编辑失败"
  652. br.ErrMsg = "编辑失败,Err:" + err.Error()
  653. return
  654. }
  655. br.Ret = 200
  656. br.Success = true
  657. br.Msg = "编辑成功"
  658. br.IsAddLog = true
  659. }
  660. // EditDashboardClassify
  661. // @Title 删除看板分类
  662. // @Description 删除看板分类接口
  663. // @Param request body bi_dashboard.DelDashboardClassifyReq true "type json string"
  664. // @Success 200 Ret=200 编辑成功
  665. // @router /classify/del [post]
  666. func (this *BIDaShboardController) DelDashboardClassify() {
  667. br := new(models.BaseResponse).Init()
  668. defer func() {
  669. this.Data["json"] = br
  670. this.ServeJSON()
  671. }()
  672. var req bi_dashboard.DelDashboardClassifyReq
  673. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  674. if err != nil {
  675. br.Msg = "参数解析异常!"
  676. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  677. return
  678. }
  679. if req.BiDashboardClassifyId <= 0 {
  680. br.Msg = "参数有误"
  681. br.ErrMsg = fmt.Sprintf("参数有误, BiDashboardClassifyId: %d", req.BiDashboardClassifyId)
  682. return
  683. }
  684. err = bi_dashboard.DelBiDashboardClassify(req.BiDashboardClassifyId)
  685. if err != nil {
  686. br.Msg = "编辑失败"
  687. br.ErrMsg = "编辑失败,Err:" + err.Error()
  688. return
  689. }
  690. br.Ret = 200
  691. br.Success = true
  692. br.Msg = "删除成功"
  693. br.IsAddLog = true
  694. }
  695. // Grant
  696. // @Title 分配看板权限
  697. // @Description 分配看板权限接口
  698. // @Param request body models.GrantPptReq true "type json string"
  699. // @Success 200 Ret=200 分配成功
  700. // @router /grant [post]
  701. func (this *BIDaShboardController) Grant() {
  702. br := new(models.BaseResponse).Init()
  703. defer func() {
  704. this.Data["json"] = br
  705. this.ServeJSON()
  706. }()
  707. var req bi_dashboard.GrantDashboardReq
  708. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  709. if err != nil {
  710. br.Msg = "参数解析异常!"
  711. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  712. return
  713. }
  714. if req.AdminIdStr == "" {
  715. br.Msg = "参数错误"
  716. return
  717. }
  718. if req.BiDashboardId <= 0 {
  719. br.Msg = "参数错误"
  720. return
  721. }
  722. dashboardItem, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  723. if err != nil {
  724. err = errors.New("我的看板列表查询出错:" + err.Error())
  725. br.Msg = "我的看板列表查询出错"
  726. br.ErrMsg = err.Error()
  727. return
  728. }
  729. if dashboardItem.SysAdminId != this.SysUser.AdminId {
  730. br.Msg = "无权配置"
  731. return
  732. }
  733. list := make([]*bi_dashboard.BiDashboardGrant, 0)
  734. grantAdminIdStrList := strings.Split(req.AdminIdStr, ",")
  735. lenGrantAdminIdStrList := len(grantAdminIdStrList) //指定用户的人数
  736. for _, v := range grantAdminIdStrList {
  737. grantAdminId, tmpErr := strconv.Atoi(v)
  738. if tmpErr != nil {
  739. br.Msg = "参数有误"
  740. br.ErrMsg = fmt.Sprintf("参数有误,Err:%s", tmpErr.Error())
  741. return
  742. }
  743. //如果只选择了自己作为指定的人,那么就提示他报错。如果多人,那么就过滤自己
  744. if grantAdminId == this.SysUser.AdminId {
  745. if lenGrantAdminIdStrList == 1 {
  746. br.Msg = "不能指定自己为权限用户"
  747. br.ErrMsg = fmt.Sprintf("参数有误,Err:%s", tmpErr.Error())
  748. return
  749. }
  750. continue
  751. }
  752. tmpV := &bi_dashboard.BiDashboardGrant{
  753. BiDashboardId: req.BiDashboardId,
  754. GrantAdminId: grantAdminId,
  755. CreateTime: time.Now(),
  756. }
  757. list = append(list, tmpV)
  758. }
  759. if len(list) <= 0 {
  760. br.Msg = "参数有误"
  761. br.ErrMsg = fmt.Sprintf("参数有误,Err:%s", "指定用户为空")
  762. return
  763. }
  764. err = bi_dashboard.MultiAddDashboardGrant(req.BiDashboardId, list)
  765. if err != nil {
  766. br.Msg = "分配失败"
  767. br.ErrMsg = fmt.Sprintf("分配失败,Err:%s", err.Error())
  768. return
  769. }
  770. br.Ret = 200
  771. br.Success = true
  772. br.IsAddLog = true
  773. br.Msg = "分配成功"
  774. }
  775. // Public
  776. // @Title
  777. // @Description 设置公共看板
  778. // @Param request body models.GrantPptReq true "type json string"
  779. // @Success 200 Ret=200 分配成功
  780. // @router /public [post]
  781. func (this *BIDaShboardController) Public() {
  782. br := new(models.BaseResponse).Init()
  783. defer func() {
  784. this.Data["json"] = br
  785. this.ServeJSON()
  786. }()
  787. var req bi_dashboard.PublicDashboardReq
  788. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  789. if err != nil {
  790. br.Msg = "参数解析异常!"
  791. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  792. return
  793. }
  794. // 校验是否开启了审批流
  795. opening, e := biapprove.CheckBiOpenApprove(req.ClassifyId)
  796. if e != nil {
  797. br.Msg = "操作失败"
  798. br.ErrMsg = "校验报告是否开启审批流失败, Err: " + e.Error()
  799. return
  800. }
  801. item, err := bi_dashboard.GetDashboardById(req.BiDashboardId)
  802. if err != nil && !utils.IsErrNoRow(err) {
  803. br.Msg = "获取数据异常!"
  804. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  805. return
  806. }
  807. if opening {
  808. _, err = biapprove.SubmitBiApprove(req.BiDashboardId, item.BiDashboardName, req.ClassifyId, this.SysUser.AdminId, this.SysUser.RealName)
  809. if err != nil {
  810. br.Msg = "提交审批失败"
  811. br.ErrMsg = "提交审批失败, Err: " + err.Error()
  812. return
  813. }
  814. item.State = 4
  815. } else {
  816. item.State = 6
  817. }
  818. item.BiDashboardClassifyId = req.ClassifyId
  819. err = bi_dashboard.EditDashboard(item)
  820. if err != nil {
  821. br.Msg = "编辑失败"
  822. br.ErrMsg = "编辑失败,Err:" + err.Error()
  823. return
  824. }
  825. br.Ret = 200
  826. br.Success = true
  827. br.IsAddLog = true
  828. br.Msg = "分配成功"
  829. }