chart_info_share.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/controllers"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/data_manage"
  7. "eta_gn/eta_api/models/data_manage/request"
  8. "eta_gn/eta_api/models/data_manage/response"
  9. "eta_gn/eta_api/models/system"
  10. "eta_gn/eta_api/services/data"
  11. "eta_gn/eta_api/services/elastic"
  12. "eta_gn/eta_api/utils"
  13. "fmt"
  14. "github.com/rdlucklib/rdluck_tools/paging"
  15. "sort"
  16. "strconv"
  17. "strings"
  18. )
  19. // ChartInfoShareController 数据管理
  20. type ChartInfoShareController struct {
  21. controllers.BaseAuthController
  22. }
  23. // UserList
  24. // @Title 获取图表设置共享的详情
  25. // @Description 获取图表详情接口
  26. // @Param ChartInfoId query int true "图表id"
  27. // @Success 200 {object} response.ChartInfoShareUserResp
  28. // @router /chart_info/share/user_list [get]
  29. func (c *ChartInfoShareController) UserList() {
  30. br := new(models.BaseResponse).Init()
  31. defer func() {
  32. c.Data["json"] = br
  33. c.ServeJSON()
  34. }()
  35. sysUser := c.SysUser
  36. if sysUser == nil {
  37. br.Msg = "请登录"
  38. br.ErrMsg = "请登录,SysUser Is Empty"
  39. br.Ret = 408
  40. return
  41. }
  42. chartInfoId, _ := c.GetInt("ChartInfoId")
  43. if chartInfoId <= 0 {
  44. br.Msg = "参数错误"
  45. br.ErrMsg = "参数错误"
  46. return
  47. }
  48. _, err := data_manage.GetChartInfoById(chartInfoId)
  49. if err != nil {
  50. br.Msg = "获取失败"
  51. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  52. return
  53. }
  54. //// TODO 权限校验
  55. //{
  56. // classifyMap := make(map[int]*data_manage.ChartClassifyIdItems)
  57. // for _, v := range classifyList {
  58. // classifyMap[v.ClassifyId] = v
  59. // }
  60. // if currClassify, ok := classifyMap[chartInfo.ClassifyId]; ok {
  61. // haveOperaAuth, err := data_manage_permission.CheckChartPermission(chartInfo.IsJoinPermission, currClassify.IsJoinPermission, c.SysUser.AdminId, chartInfo.ChartInfoId, chartInfo.ClassifyId)
  62. // if err != nil {
  63. // br.Msg = err.Error()
  64. // br.ErrMsg = "校验图表权限失败,err:" + err.Error()
  65. // return
  66. // }
  67. // resp.HaveOperaAuth = haveOperaAuth
  68. // }
  69. //}
  70. resp := response.ChartInfoShareUserResp{}
  71. obj := data_manage.ChartInfoShare{}
  72. list, err := obj.GetListByChartInfoId(chartInfoId)
  73. if err != nil {
  74. br.Msg = `获取失败`
  75. br.ErrMsg = `获取失败:` + err.Error()
  76. return
  77. }
  78. resp.List = list
  79. br.Ret = 200
  80. br.Success = true
  81. br.Msg = "获取成功"
  82. br.Data = resp
  83. }
  84. // Save
  85. // @Title 单个图表设置共享
  86. // @Description 单个图表设置共享
  87. // @Param request body request.SetChartInfoShareReq true "type json string"
  88. // @Success 200 {object} data_manage.ChartInfo
  89. // @router /chart_info/share/save [post]
  90. func (c *ChartInfoShareController) Save() {
  91. br := new(models.BaseResponse).Init()
  92. defer func() {
  93. c.Data["json"] = br
  94. c.ServeJSON()
  95. }()
  96. sysUser := c.SysUser
  97. if sysUser == nil {
  98. br.Msg = "请登录"
  99. br.ErrMsg = "请登录,SysUser Is Empty"
  100. br.Ret = 408
  101. return
  102. }
  103. var req request.SetChartInfoShareReq
  104. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  105. if err != nil {
  106. br.Msg = "参数解析异常!"
  107. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  108. return
  109. }
  110. if req.ChartInfoId <= 0 {
  111. br.Msg = `请选择图表`
  112. br.IsSendEmail = false
  113. return
  114. }
  115. chartItem, err := data_manage.GetChartInfoById(req.ChartInfoId)
  116. if err != nil {
  117. br.Msg = "查找图表失败"
  118. br.ErrMsg = "查找图表失败,Err:" + err.Error()
  119. return
  120. }
  121. if chartItem.ChartInfoId <= 0 {
  122. br.Msg = "图表不存在"
  123. br.ErrMsg = "图表不存在,ChartInfoId:" + strconv.Itoa(req.ChartInfoId)
  124. br.IsSendEmail = false
  125. return
  126. }
  127. if chartItem.SysUserId != c.SysUser.AdminId {
  128. br.Msg = "您没有权限设置共享"
  129. br.ErrMsg = "您没有权限设置共享,EdbInfoId:" + strconv.Itoa(req.ChartInfoId)
  130. br.IsSendEmail = false
  131. return
  132. }
  133. obj := data_manage.ChartInfoShare{}
  134. err = obj.SaveChartInfoShare([]int{req.ChartInfoId}, req.UserIdList, req.ShareType)
  135. if err != nil {
  136. br.Msg = `保存失败`
  137. br.ErrMsg = `保存失败:` + err.Error()
  138. return
  139. }
  140. // 更新es
  141. data.AddOrEditChartInfoToEs(req.ChartInfoId)
  142. br.Ret = 200
  143. br.Success = true
  144. br.Msg = "保存成功"
  145. }
  146. // Tree
  147. // @Title 获取共享图表的分类/图表树
  148. // @Description 获取共享图表的分类/图表树
  149. // @Success 200 {object} response.ChartShareListResp
  150. // @router /chart_info/share/tree [get]
  151. func (c *ChartInfoShareController) Tree() {
  152. br := new(models.BaseResponse).Init()
  153. defer func() {
  154. c.Data["json"] = br
  155. c.ServeJSON()
  156. }()
  157. sysUser := c.SysUser
  158. if sysUser == nil {
  159. br.Msg = "请登录"
  160. br.ErrMsg = "请登录,SysUser Is Empty"
  161. br.Ret = 408
  162. return
  163. }
  164. resp := response.ChartShareListResp{}
  165. // 我共享的
  166. {
  167. sendList, err := data.GetAllShareChartListByFromUserId(sysUser.AdminId)
  168. if err != nil {
  169. br.Msg = "获取失败"
  170. br.ErrMsg = "获取我共享的图表列表信息失败,Err:" + err.Error()
  171. return
  172. }
  173. nodeList, err := data.GetChartClassifyItemListByShareChartInfoQueryList(sendList)
  174. if err != nil {
  175. br.Msg = "获取失败"
  176. br.ErrMsg = "获取我共享出去的图表列表分类结构信息失败,Err:" + err.Error()
  177. return
  178. }
  179. var sortList data_manage.UserShareChartClassifyItemList
  180. sortList = nodeList
  181. sort.Sort(sortList)
  182. resp.Send = sortList
  183. }
  184. // TODO 不确定加了用户这个顶级,会不会对前端造成一定影响
  185. // 我收到的
  186. {
  187. sendList, err := data.GetAllShareChartListByReceivedUserId(sysUser.AdminId)
  188. if err != nil {
  189. br.Msg = "获取失败"
  190. br.ErrMsg = "获取我共享的图表列表信息失败,Err:" + err.Error()
  191. return
  192. }
  193. nodeList, err := data.GetChartClassifyItemListByShareChartInfoQueryList(sendList)
  194. if err != nil {
  195. br.Msg = "获取失败"
  196. br.ErrMsg = "获取我收到共享的图表列表分类结构信息失败,Err:" + err.Error()
  197. return
  198. }
  199. receivedMap := make(map[int]int)
  200. var receivedList data_manage.UserShareChartClassifyItemList
  201. for _, v := range nodeList {
  202. index, ok := receivedMap[v.SysUserId]
  203. if !ok {
  204. index = len(receivedMap)
  205. item := &data_manage.UserShareChartClassifyItem{
  206. UserId: v.SysUserId,
  207. UserName: v.SysUserRealName,
  208. ChartInfoId: 0,
  209. ChartClassifyId: v.SysUserId,
  210. ChartClassifyName: v.SysUserRealName,
  211. ChartClassifyNameEn: v.SysUserRealName,
  212. ParentId: 0,
  213. Level: 0,
  214. Sort: 0,
  215. UniqueCode: utils.MD5(fmt.Sprint(v.SysUserId, "_", v.SysUserRealName)),
  216. Source: 0,
  217. SourceName: "",
  218. SysUserId: v.SysUserId,
  219. SysUserRealName: v.SysUserRealName,
  220. DateType: 0,
  221. StartDate: "",
  222. EndDate: "",
  223. ChartType: 0,
  224. Calendar: "",
  225. SeasonStartDate: "",
  226. SeasonEndDate: "",
  227. Children: []*data_manage.UserShareChartClassifyItem{},
  228. Button: data_manage.ChartClassifyItemsButton{},
  229. IsJoinPermission: 0,
  230. HaveOperaAuth: true,
  231. ChartClassifyIdPath: "",
  232. }
  233. receivedList = append(receivedList, item)
  234. }
  235. receivedList[index].Children = append(receivedList[index].Children, v)
  236. receivedMap[v.SysUserId] = index
  237. }
  238. sort.Sort(receivedList)
  239. resp.Received = receivedList
  240. }
  241. br.Ret = 200
  242. br.Success = true
  243. br.Msg = "获取成功"
  244. br.Data = resp
  245. }
  246. // List
  247. // @Title 图表列表接口
  248. // @Description 图表列表接口
  249. // @Param PageSize query int true "每页数据条数"
  250. // @Param CurrentIndex query int true "当前页页码,从1开始"
  251. // @Param ClassifyId query int true "分类id"
  252. // @Param FilterSource query int false "共享图表的列表数据来源,0:我共享的;1:别人共享给我的"
  253. // @Param ClassifyId query int false "分类id"
  254. // @Param UserId query int false "所属用户id"
  255. // @Success 200 {object} response.ChartInfoChartListResp
  256. // @router /chart_info/share/list [get]
  257. func (c *ChartInfoShareController) List() {
  258. br := new(models.BaseResponse).Init()
  259. defer func() {
  260. if br.ErrMsg == "" {
  261. br.IsSendEmail = false
  262. }
  263. c.Data["json"] = br
  264. c.ServeJSON()
  265. }()
  266. sysUser := c.SysUser
  267. if sysUser == nil {
  268. br.Msg = "请登录"
  269. br.ErrMsg = "请登录,SysUser Is Empty"
  270. br.Ret = 408
  271. return
  272. }
  273. // 分页
  274. pageSize, _ := c.GetInt("PageSize")
  275. currentIndex, _ := c.GetInt("CurrentIndex")
  276. filterSource, _ := c.GetInt("FilterSource")
  277. var total int
  278. page := paging.GetPaging(currentIndex, pageSize, total)
  279. var startSize int
  280. if pageSize <= 0 {
  281. pageSize = utils.PageSize20
  282. }
  283. if currentIndex <= 0 {
  284. currentIndex = 1
  285. }
  286. startSize = paging.StartIndex(currentIndex, pageSize)
  287. // 基础图表
  288. var condition string
  289. var pars []interface{}
  290. condition += ` AND source = ? `
  291. pars = append(pars, utils.CHART_TYPE_CURVE)
  292. // 用户筛选
  293. userId, _ := c.GetInt("UserId")
  294. if userId > 0 {
  295. condition += ` AND b.sys_user_id = ? `
  296. pars = append(pars, userId)
  297. }
  298. // 分类筛选
  299. classifyId, _ := c.GetInt("ClassifyId")
  300. if classifyId > 0 {
  301. childClassify, e, _ := data.GetChildClassifyByClassifyId(classifyId)
  302. if e != nil && !utils.IsErrNoRow(e) {
  303. br.Msg = "获取失败"
  304. br.ErrMsg = "获取分类信息失败, GetChartClassify,Err:" + e.Error()
  305. return
  306. }
  307. var classifyIds []int
  308. for _, v := range childClassify {
  309. classifyIds = append(classifyIds, v.ClassifyId)
  310. }
  311. condition += fmt.Sprintf(` AND b.classify_id IN (%s) `, utils.GetOrmInReplace(len(classifyIds)))
  312. pars = append(pars, classifyIds)
  313. }
  314. switch filterSource {
  315. case 1: // 别人共享给我的
  316. condition += ` AND a.sys_user_id = ? AND b.sys_user_id != ? `
  317. pars = append(pars, sysUser.AdminId, sysUser.AdminId)
  318. default: // 我共享的
  319. condition += ` AND b.sys_user_id = ? `
  320. pars = append(pars, sysUser.AdminId)
  321. }
  322. obj := data_manage.ChartInfoShare{}
  323. dataCount, respList, err := obj.GetShareChartInfoListPageList(condition, pars, startSize, pageSize)
  324. if err != nil {
  325. br.Msg = "获取失败"
  326. br.ErrMsg = fmt.Sprintf("获取分享图表列表失败, %v", err)
  327. return
  328. }
  329. page = paging.GetPaging(currentIndex, pageSize, int(dataCount))
  330. resp := response.ChartInfoChartListResp{
  331. Paging: page,
  332. List: respList,
  333. }
  334. br.Ret = 200
  335. br.Success = true
  336. br.Msg = "获取成功"
  337. br.Data = resp
  338. }
  339. // ListByEs
  340. // @Title 图表筛选接口
  341. // @Description 图表筛选接口
  342. // @Success 200 {object} data_manage.ChartInfoList
  343. // @Param request body request.SearchChartInfoShareReq true "type json string"
  344. // @Success 200 {object} data_manage.ChartInfoFilterDataResp
  345. // @router /chart_info/share/list/es [post]
  346. func (c *ChartInfoShareController) ListByEs() {
  347. br := new(models.BaseResponse).Init()
  348. defer func() {
  349. c.Data["json"] = br
  350. c.ServeJSON()
  351. }()
  352. var req request.SearchChartInfoShareReq
  353. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  354. if err != nil {
  355. br.Msg = "参数解析异常!"
  356. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  357. return
  358. }
  359. pageSize := req.PageSize
  360. currentIndex := req.CurrentIndex
  361. var total int64
  362. var startSize int
  363. if pageSize <= 0 {
  364. pageSize = utils.PageSize20
  365. }
  366. if currentIndex <= 0 {
  367. currentIndex = 1
  368. }
  369. startSize = paging.StartIndex(currentIndex, pageSize)
  370. keyword := req.Keyword
  371. keyword = strings.TrimSpace(keyword) //移除字符串首尾空格
  372. sourceList := []int{utils.CHART_TYPE_CURVE}
  373. // 图表分享状态:1-未共享;2-已共享。可多选,多选用英文,隔开;默认是未全部
  374. chartShareList := req.ChartShareList
  375. if len(chartShareList) <= 0 {
  376. chartShareList = []int{}
  377. }
  378. chartShare := 0 // 0:全部,1:未共享,2:已共享
  379. lenChartShareList := len(chartShareList)
  380. if len(chartShareList) > 0 {
  381. if lenChartShareList > 1 {
  382. chartShare = 0
  383. } else {
  384. chartShare = chartShareList[0]
  385. }
  386. }
  387. // 图表类型
  388. chartTypeList := req.ChartTypeList
  389. // 直图表所属分类id
  390. chartClassifyIdList := req.ClassifyIdList
  391. chartAuth := 1 // 选择范围是:只有我的图表
  392. var chartInfoList []*data_manage.ChartInfoView
  393. sortMap := make(map[string]string)
  394. // 如果没有搜索关键词,则默认根据图表编码倒序排序
  395. if keyword == `` {
  396. sortMap["ChartInfoId"] = `desc`
  397. }
  398. total, chartInfoList, err = elastic.SearchChartInfoDataByShared(keyword, startSize, pageSize, chartShare, sourceList, chartTypeList, chartClassifyIdList, chartAuth, c.SysUser.AdminId, sortMap)
  399. if err != nil {
  400. chartInfoList = make([]*data_manage.ChartInfoView, 0)
  401. }
  402. page := paging.GetPaging(currentIndex, pageSize, int(total))
  403. // 因为是ES查找的,所以需要重新查一下图表的信息,主要是为了把是否授权字段找出来
  404. if len(chartInfoList) > 0 {
  405. sysUserIdList := make([]int, 0)
  406. chartInfoIdList := make([]int, 0)
  407. for _, v := range chartInfoList {
  408. v.ConvertToResp()
  409. v.HaveOperaAuth = true
  410. chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
  411. if v.SharedUserIdList != nil && len(v.SharedUserIdList) > 0 {
  412. sysUserIdList = append(sysUserIdList, v.SharedUserIdList...)
  413. }
  414. }
  415. // 获取图表数据
  416. tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
  417. if err != nil {
  418. br.Msg = "获取失败"
  419. br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
  420. return
  421. }
  422. chartInfoMap := make(map[int]*data_manage.ChartInfo)
  423. for _, v := range tmpChartList {
  424. chartInfoMap[v.ChartInfoId] = v
  425. }
  426. // 获取用户数据
  427. sysUserMap := make(map[int]string)
  428. if len(sysUserIdList) > 0 {
  429. sysUserList, err := system.GetAdminListByIdList(sysUserIdList)
  430. if err != nil {
  431. br.Msg = "获取失败"
  432. br.ErrMsg = "获取分享用户列表失败,Err:" + err.Error()
  433. return
  434. }
  435. for _, v := range sysUserList {
  436. sysUserMap[v.AdminId] = v.RealName
  437. }
  438. }
  439. for _, v := range chartInfoList {
  440. tmpChartInfo, ok := chartInfoMap[v.ChartInfoId]
  441. if !ok {
  442. continue
  443. }
  444. v.IsJoinPermission = tmpChartInfo.IsJoinPermission
  445. // 分享人
  446. shareUserName := ``
  447. shareUserNameList := make([]string, 0)
  448. shareUserNameMap := make(map[int]bool)
  449. for _, userId := range v.SharedUserIdList {
  450. userName, ok := sysUserMap[userId]
  451. if !ok {
  452. continue
  453. }
  454. if _, ok = shareUserNameMap[userId]; ok {
  455. continue
  456. }
  457. shareUserNameMap[userId] = true
  458. shareUserNameList = append(shareUserNameList, userName)
  459. }
  460. if len(shareUserNameList) > 0 {
  461. shareUserName = strings.Join(shareUserNameList, `,`)
  462. }
  463. v.SharedUserName = shareUserName
  464. }
  465. }
  466. resp := data_manage.ChartInfoFilterDataResp{
  467. Paging: page,
  468. List: chartInfoList,
  469. }
  470. br.Ret = 200
  471. br.Success = true
  472. br.Msg = "获取成功"
  473. br.Data = resp
  474. }
  475. // BatchSave
  476. // @Title 批量图表设置共享
  477. // @Description 批量图表设置共享
  478. // @Param request body request.SetChartSharePermissionReq true "type json string"
  479. // @Success 200 {object} data_manage.ChartInfo
  480. // @router /chart_info/share/batch_save [post]
  481. func (c *ChartInfoShareController) BatchSave() {
  482. br := new(models.BaseResponse).Init()
  483. defer func() {
  484. c.Data["json"] = br
  485. c.ServeJSON()
  486. }()
  487. sysUser := c.SysUser
  488. if sysUser == nil {
  489. br.Msg = "请登录"
  490. br.ErrMsg = "请登录,SysUser Is Empty"
  491. br.Ret = 408
  492. return
  493. }
  494. var req request.SetChartSharePermissionReq
  495. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  496. if err != nil {
  497. br.Msg = "参数解析异常!"
  498. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  499. return
  500. }
  501. // 选中的图表id列表
  502. selectChartInfoIdList := make([]int, 0)
  503. // 选择所有图表,所以需要通过es获取数据
  504. if req.IsSelectAll {
  505. allEsChartInfoIdList, err := getAllChartInfoIdListByShared(req, c.SysUser.AdminId)
  506. if err != nil {
  507. br.Msg = "设置失败!"
  508. br.ErrMsg = "设置失败,Err:" + err.Error()
  509. return
  510. }
  511. if len(req.NoChartIdList) <= 0 {
  512. selectChartInfoIdList = allEsChartInfoIdList
  513. } else {
  514. noChartIdMap := make(map[int]bool)
  515. for _, v := range req.NoChartIdList {
  516. noChartIdMap[v] = true
  517. }
  518. for _, v := range allEsChartInfoIdList {
  519. if _, ok := noChartIdMap[v]; !ok {
  520. // 如果不在未选中的图表id列表中,那么就加入到选中的图表id列表
  521. selectChartInfoIdList = append(selectChartInfoIdList, v)
  522. }
  523. }
  524. }
  525. } else {
  526. selectChartInfoIdList = req.ChartIdList
  527. }
  528. num := len(selectChartInfoIdList)
  529. if num > 30 {
  530. br.Msg = `图表数量不能超过30个`
  531. br.IsSendEmail = false
  532. return
  533. }
  534. // 设置
  535. if num > 0 {
  536. obj := data_manage.ChartInfoShare{}
  537. err = obj.SaveChartInfoShare(selectChartInfoIdList, req.UserIdList, req.ShareType)
  538. if err != nil {
  539. br.Msg = `保存失败`
  540. br.ErrMsg = `保存失败:` + err.Error()
  541. return
  542. }
  543. // 更新es
  544. for _, chartInfoId := range selectChartInfoIdList {
  545. data.AddOrEditChartInfoToEs(chartInfoId)
  546. }
  547. }
  548. br.Ret = 200
  549. br.Success = true
  550. br.Msg = "保存成功"
  551. }
  552. // getAllChartInfoIdListByShared
  553. // @Description: 获取所有的图表id列表
  554. // @author: Roc
  555. // @datetime 2024-12-10 17:51:35
  556. // @param req request.SetChartSharePermissionReq
  557. // @param userId int
  558. // @return chartInfoIdList []int
  559. // @return err error
  560. func getAllChartInfoIdListByShared(req request.SetChartSharePermissionReq, userId int) (chartInfoIdList []int, err error) {
  561. keyword := req.Keyword
  562. keyword = strings.TrimSpace(keyword) //移除字符串首尾空格
  563. //图表来源
  564. sourceList := []int{utils.CHART_TYPE_CURVE}
  565. // 图表分享状态:1-未共享;2-已共享。可多选,多选用英文,隔开;默认是未共享
  566. chartShareList := req.ChartShareList
  567. if len(chartShareList) <= 0 {
  568. chartShareList = []int{1}
  569. }
  570. chartShare := 1 // 0:全部,1:未共享,2:已共享
  571. lenChartShareList := len(chartShareList)
  572. if len(chartShareList) > 0 {
  573. if lenChartShareList > 1 {
  574. chartShare = 0
  575. } else {
  576. chartShare = chartShareList[0]
  577. }
  578. }
  579. // 图表类型
  580. chartTypeList := req.ChartTypeList
  581. // 图表分享状态:1-未共享;2-已共享。可多选,多选用英文,隔开;默认是未共享
  582. chartClassifyIdList := req.ClassifyIdList
  583. chartAuth := 1 // 选择范围是:只有我的图表
  584. sortMap := make(map[string]string)
  585. // 如果没有搜索关键词,则默认根据图表编码倒序排序
  586. if keyword == `` {
  587. sortMap["ChartInfoId"] = `desc`
  588. }
  589. _, chartInfoList, err := getAllChartInfoDataByShared(keyword, 1, chartShare, sourceList, chartTypeList, chartClassifyIdList, chartAuth, userId, sortMap)
  590. if err != nil {
  591. return
  592. }
  593. // 返回图表id列表
  594. for _, v := range chartInfoList {
  595. chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
  596. }
  597. return
  598. }
  599. // getAllChartInfoDataByShared
  600. // @Description: 获取所有的图表列表(设置共享的时候)
  601. // @author: Roc
  602. // @datetime 2024-12-10 17:51:18
  603. // @param keyword string
  604. // @param currPage int
  605. // @param chartShare int
  606. // @param sourceList []int
  607. // @param classifyIdList []int
  608. // @param chartAuth int
  609. // @param sysUserId int
  610. // @param sortMap map[string]string
  611. // @return total int64
  612. // @return list []*data_manage.ChartInfoView
  613. // @return err error
  614. func getAllChartInfoDataByShared(keyword string, currPage, chartShare int, sourceList, chartTypeList, classifyIdList []int, chartAuth, sysUserId int, sortMap map[string]string) (total int64, list []*data_manage.ChartInfoView, err error) {
  615. // 每页获取数据的数量
  616. pageSize := 5000
  617. var startSize int
  618. if currPage <= 0 {
  619. currPage = 1
  620. }
  621. startSize = paging.StartIndex(currPage, pageSize)
  622. total, list, err = elastic.SearchChartInfoDataByShared(keyword, startSize, pageSize, chartShare, sourceList, chartTypeList, classifyIdList, chartAuth, sysUserId, sortMap)
  623. if err != nil {
  624. return
  625. }
  626. page := paging.GetPaging(currPage, pageSize, int(total))
  627. if !page.IsEnd {
  628. _, nextList, tmpErr := getAllChartInfoDataByShared(keyword, page.NextIndex, chartShare, sourceList, chartTypeList, classifyIdList, chartAuth, sysUserId, sortMap)
  629. if tmpErr != nil {
  630. err = tmpErr
  631. return
  632. }
  633. list = append(list, nextList...)
  634. }
  635. return
  636. }