user.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_mini_api/models"
  5. "eta/eta_mini_api/models/request"
  6. "eta/eta_mini_api/models/response"
  7. "eta/eta_mini_api/services"
  8. "eta/eta_mini_api/utils"
  9. "fmt"
  10. "strings"
  11. "time"
  12. )
  13. type UserController struct {
  14. BaseCommonController
  15. }
  16. type UserAuthController struct {
  17. BaseAuthController
  18. }
  19. // @Title 用户登录接口
  20. // @Description 用户登录
  21. // @Param request body models.LoginReq true "type json string"
  22. // @Success 200 {object} models.LoginResp
  23. // @router /login [post]
  24. func (this *UserAuthController) Login() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. session := this.Session
  31. var req request.LoginReq
  32. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  33. if err != nil {
  34. br.Msg = "参数解析失败"
  35. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  36. return
  37. }
  38. switch req.LoginType {
  39. case 1:
  40. if req.Phone == "" {
  41. br.Msg = "请输入手机号"
  42. br.ErrMsg = "请输入手机号"
  43. return
  44. }
  45. if req.SmsCode == "" {
  46. br.Msg = "请输入验证码"
  47. br.ErrMsg = "请输入验证码"
  48. return
  49. }
  50. phone := req.AreaCode + req.Phone
  51. item, err := models.GetMsgCode(phone, req.SmsCode)
  52. if err != nil {
  53. if err.Error() == utils.ErrNoRow() {
  54. br.Msg = "验证码错误,请重新输入"
  55. br.ErrMsg = "校验验证码失败,Err:" + err.Error()
  56. return
  57. } else {
  58. br.Msg = "验证码错误,请重新输入"
  59. br.ErrMsg = "校验验证码失败,Err:" + err.Error()
  60. return
  61. }
  62. }
  63. if item == nil {
  64. br.Msg = "验证码错误,请重新输入"
  65. return
  66. }
  67. case 2:
  68. if req.Email == "" {
  69. br.Msg = "请输入手机号"
  70. br.ErrMsg = "请输入手机号"
  71. return
  72. }
  73. if req.SmsCode == "" {
  74. br.Msg = "请输入验证码"
  75. br.ErrMsg = "请输入验证码"
  76. return
  77. }
  78. item, err := models.GetMsgCode(req.Email, req.SmsCode)
  79. if err != nil {
  80. if err.Error() == utils.ErrNoRow() {
  81. br.Msg = "验证码错误,请重新输入"
  82. br.ErrMsg = "校验验证码失败,Err:" + err.Error()
  83. return
  84. } else {
  85. br.Msg = "验证码错误,请重新输入"
  86. br.ErrMsg = "校验验证码失败,Err:" + err.Error()
  87. return
  88. }
  89. }
  90. if item == nil {
  91. br.Msg = "验证码错误,请重新输入"
  92. return
  93. }
  94. }
  95. _, errMsg, err := services.BindUser(session.UnionId, session.OpenId, req.Phone, req.Email, req.AreaCode)
  96. if err != nil && err.Error() != utils.ErrNoRow() {
  97. br.Msg = "登录失败,系统处理中,请稍后重试"
  98. if errMsg != "" {
  99. br.Msg = errMsg
  100. }
  101. br.ErrMsg = "登录失败:" + err.Error()
  102. return
  103. }
  104. br.Msg = "登录成功"
  105. br.Success = true
  106. br.Ret = 200
  107. }
  108. // @Title 获取短信/邮箱验证码
  109. // @Description 用户登录
  110. // @Param request body models.LoginReq true "type json string"
  111. // @Success 200 {object} models.LoginResp
  112. // @router /getVerifyCode [post]
  113. func (this *UserController) GetVerifyCode() {
  114. br := new(models.BaseResponse).Init()
  115. defer func() {
  116. this.Data["json"] = br
  117. this.ServeJSON()
  118. }()
  119. var req request.VerifyCodeReq
  120. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  121. if err != nil {
  122. br.Msg = "参数解析异常!"
  123. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  124. return
  125. }
  126. if req.VerifyType != 1 && req.VerifyType != 2 {
  127. br.Msg = "验证方式有误"
  128. br.ErrMsg = fmt.Sprintf("验证方式异常<%d>", req.VerifyType)
  129. }
  130. code := utils.GetRandDigit(6)
  131. fmt.Println(code)
  132. switch req.VerifyType {
  133. case 1:
  134. if req.AreaCode == "" {
  135. br.Msg = "请选择区号"
  136. return
  137. }
  138. if req.Phone == "" {
  139. br.Msg = "请输入手机号"
  140. return
  141. }
  142. if req.AreaCode == utils.TelAreaCodeHome && !utils.ValidateMobileFormatat(req.Phone) {
  143. br.Msg = "您的手机号输入有误, 请检查"
  144. return
  145. }
  146. var ok bool
  147. if req.AreaCode == "86" {
  148. ok = services.SendSmsCode(req.Phone, code)
  149. } else {
  150. ok = services.SendSmsCodeGj(req.Phone, code, req.AreaCode)
  151. }
  152. if !ok {
  153. br.ErrMsg = "短信验证码发送失败"
  154. return
  155. } else {
  156. item := new(models.MsgCode)
  157. item.OpenId = ""
  158. item.Code = code
  159. item.Mobile = req.AreaCode + req.Phone
  160. item.ExpiredIn = time.Now().Add(15 * time.Minute).Unix()
  161. item.CreateTime = time.Now()
  162. err = item.Insert()
  163. if err != nil {
  164. br.Msg = "发送失败"
  165. br.ErrMsg = "发送失败,Err:" + err.Error()
  166. return
  167. }
  168. br.Msg = "发送成功"
  169. }
  170. case 2:
  171. if req.Email == "" {
  172. br.Msg = "请输入邮箱"
  173. }
  174. if !utils.ValidateEmailFormatat(req.Email) {
  175. br.Msg = "您的邮箱格式输入有误, 请检查"
  176. return
  177. }
  178. date := time.Now()
  179. content := "尊敬的用户:</br>本次请求的验证码为:" + code + "(为了保障您账号的安全性,请在15分钟内完成验证。)</br>东吴期货研究团队 </br>" + fmt.Sprintf("%d年%02d月%02d日", date.Year(), date.Month(), date.Day())
  180. title := "东吴期货登录验证"
  181. result, err := utils.SendEmailByDw(title, content, req.Email)
  182. if err != nil {
  183. br.Msg = "发送失败"
  184. br.ErrMsg = "发送失败,Err:" + err.Error()
  185. return
  186. }
  187. if result {
  188. item := new(models.MsgCode)
  189. item.OpenId = ""
  190. item.Code = code
  191. item.Mobile = req.Email
  192. item.ExpiredIn = time.Now().Add(15 * time.Minute).Unix()
  193. item.CreateTime = time.Now()
  194. err = item.Insert()
  195. if err != nil {
  196. br.Msg = "发送失败"
  197. br.ErrMsg = "发送失败,Err:" + err.Error()
  198. return
  199. }
  200. br.Msg = "发送成功"
  201. } else {
  202. br.Msg = "发送失败"
  203. }
  204. }
  205. br.Ret = 200
  206. br.Success = true
  207. br.Msg = "发送成功"
  208. }
  209. // @Title 新增报告浏览记录
  210. // @Description 新增报告浏览记录接口
  211. // @Param request body models.ReportRecordReq true "type json string"
  212. // @Success 200 新增成功
  213. // @router /addReportRecord [post]
  214. func (this *UserAuthController) AddReportRecord() {
  215. br := new(models.BaseResponse).Init()
  216. defer func() {
  217. this.Data["json"] = br
  218. this.ServeJSON()
  219. }()
  220. user := this.User
  221. if user == nil {
  222. br.Msg = "请登录"
  223. br.ErrMsg = "请登录,用户信息为空"
  224. br.Ret = 408
  225. return
  226. }
  227. var req request.ReportRecordReq
  228. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  229. br.Msg = "参数解析异常!"
  230. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  231. return
  232. }
  233. if req.ReportId <= 0 {
  234. br.Msg = "参数错误"
  235. br.ErrMsg = "参数错误,报告id小于等于0"
  236. return
  237. }
  238. reportResp, err := services.GetReportDetail(req.ReportId, user.UserId)
  239. if err != nil {
  240. br.Msg = "添加阅读记录失败"
  241. br.ErrMsg = "获取研报错误,Err:" + err.Error()
  242. return
  243. }
  244. if reportResp.Ret != 200 {
  245. br.Msg = reportResp.Msg
  246. br.ErrMsg = reportResp.ErrMsg
  247. return
  248. }
  249. reportDetail := reportResp.Data.Report
  250. reportPermissionResp, err := services.GetReportChartPermissionList(req.ReportId)
  251. if err != nil {
  252. br.Msg = "添加阅读记录失败"
  253. br.ErrMsg = "获取研报品种错误,Err:" + err.Error()
  254. return
  255. }
  256. if reportPermissionResp.Ret != 200 {
  257. br.Msg = reportPermissionResp.Msg
  258. br.ErrMsg = reportPermissionResp.ErrMsg
  259. return
  260. }
  261. reportPermissionList := reportPermissionResp.Data
  262. chartPermissionList, err := services.GetChartPermissionAllList()
  263. if err != nil {
  264. br.Msg = "添加阅读记录失败"
  265. br.ErrMsg = "获取研报品种列表失败,Err:" + err.Error()
  266. return
  267. }
  268. chartMap := make(map[int]*models.ChartPermission)
  269. for _, permission := range chartPermissionList.Data {
  270. chartMap[permission.ChartPermissionId] = permission
  271. }
  272. curTime := time.Now()
  273. var insertId int64
  274. if req.RecordId == 0 {
  275. // 如果不存在就新增一条记录
  276. permission1Ids := make([]int, 0)
  277. permission2Ids := make([]int, 0)
  278. permissionNames := make([]string, 0)
  279. for _, item := range reportPermissionList {
  280. curPermission := chartMap[item.ChartPermissionId]
  281. permission1Ids = append(permission1Ids, curPermission.ParentId)
  282. permission2Ids = append(permission2Ids, curPermission.ChartPermissionId)
  283. permissionNames = append(permissionNames, curPermission.PermissionName)
  284. }
  285. permission1Ids = utils.Unique(permission1Ids)
  286. permission2Ids = utils.Unique(permission2Ids)
  287. permissionNames = utils.Unique(permissionNames)
  288. userReadRecord := &models.UserReadRecord{
  289. UserId: user.UserId,
  290. ReportId: req.ReportId,
  291. ReportTitle: reportDetail.Title,
  292. ChartPermissionName: strings.Join(permissionNames, ","),
  293. ClassifyId1: reportDetail.ClassifyIdFirst,
  294. ClassifyName1: reportDetail.ClassifyNameFirst,
  295. ClassifyId2: reportDetail.ClassifyIdSecond,
  296. ClassifyName2: reportDetail.ClassifyNameSecond,
  297. Timestamp: int(curTime.Unix()),
  298. CreateTime: curTime,
  299. CreateDate: curTime.Format(utils.FormatDate),
  300. }
  301. insertId, err = userReadRecord.Insert()
  302. if err != nil {
  303. br.Msg = "添加阅读记录失败"
  304. br.ErrMsg = "添加阅读记录失败,Err:" + err.Error()
  305. return
  306. }
  307. userReadPermission1 := make([]*models.UserReadPermission1, 0)
  308. for _, id := range permission1Ids {
  309. userReadPermission1 = append(userReadPermission1, &models.UserReadPermission1{
  310. UserReadRecordId: int(insertId),
  311. ChartPermissionId: id,
  312. PermissionName: chartMap[id].PermissionName,
  313. })
  314. }
  315. err = models.UserReadPermission1MultiInsert(userReadPermission1)
  316. if err != nil {
  317. br.Msg = "添加阅读记录失败"
  318. br.ErrMsg = "添加阅读记录失败,Err:" + err.Error()
  319. return
  320. }
  321. userReadPermission2 := make([]*models.UserReadPermission2, 0)
  322. for _, id := range permission2Ids {
  323. userReadPermission2 = append(userReadPermission2, &models.UserReadPermission2{
  324. UserReadRecordId: int(insertId),
  325. ChartPermissionId: id,
  326. })
  327. }
  328. err = models.UserReadPermission2MultiInsert(userReadPermission2)
  329. if err != nil {
  330. br.Msg = "添加阅读记录失败"
  331. br.ErrMsg = "添加阅读记录失败,Err:" + err.Error()
  332. return
  333. }
  334. } else {
  335. // 如果存在就计算停留时间
  336. userRecord, err := models.GetUserReadRecordListById(req.RecordId)
  337. if err != nil {
  338. if err.Error() == utils.ErrNoRow() {
  339. br.Msg = "更新阅读记录不存在"
  340. return
  341. }
  342. br.Msg = "更新阅读记录失败"
  343. br.ErrMsg = "更新阅读记录失败,Err:" + err.Error()
  344. return
  345. }
  346. stayTime := curTime.Unix() - int64(userRecord.Timestamp)
  347. stayTimeStr := utils.SecondsToHMS(stayTime)
  348. err = models.UpdateUserReadRecordById(req.RecordId, int(curTime.Unix()), int(stayTime), stayTimeStr)
  349. if err != nil {
  350. br.Msg = "更新阅读记录失败"
  351. br.ErrMsg = "更新阅读记录失败,Err:" + err.Error()
  352. return
  353. }
  354. }
  355. resp := new(response.UserReadRecordResp)
  356. resp.RecordId = insertId
  357. br.Msg = "添加阅读记录成功"
  358. br.Ret = 200
  359. br.Success = true
  360. br.Data = resp
  361. }
  362. // AreaCodeList
  363. // @Title 手机号区号列表
  364. // @Description 手机号区号列表
  365. // @Success 200 Ret=200 获取成功
  366. // @router /area_code/list [get]
  367. func (this *UserController) AreaCodeList() {
  368. br := new(models.BaseResponse).Init()
  369. defer func() {
  370. if br.ErrMsg == "" {
  371. br.IsSendEmail = false
  372. }
  373. this.Data["json"] = br
  374. this.ServeJSON()
  375. }()
  376. resp := make([]response.AreaCodeListResp, 0)
  377. confValue, e := models.GetConfigDetailByCode(models.ConfAreaCodeListKey)
  378. if e != nil {
  379. br.Msg = "获取失败"
  380. br.ErrMsg = "获取手机号区号配置失败, Err: " + e.Error()
  381. return
  382. }
  383. if confValue == "" {
  384. br.Msg = "获取失败"
  385. br.ErrMsg = "手机号区号配置为空"
  386. return
  387. }
  388. if e := json.Unmarshal([]byte(confValue), &resp); e != nil {
  389. br.Msg = "获取失败"
  390. br.ErrMsg = "手机号区号配置有误"
  391. return
  392. }
  393. br.Data = resp
  394. br.Ret = 200
  395. br.Success = true
  396. br.Msg = "获取成功"
  397. }
  398. // 用户品种信息
  399. // @Title 用户信息
  400. // @Description 用户信息
  401. // @Success 200 Ret=200 获取成功
  402. // @router /info [get]
  403. func (this *UserAuthController) Info() {
  404. br := new(models.BaseResponse).Init()
  405. defer func() {
  406. this.Data["json"] = br
  407. this.ServeJSON()
  408. }()
  409. user := this.User
  410. if user == nil {
  411. user = &models.User{}
  412. }
  413. seller, err := models.GetSellerById(user.SellerId)
  414. if err != nil && err.Error() != utils.ErrNoRow() {
  415. br.Msg = "查询失败"
  416. br.ErrMsg = "查询失败,系统异常,Err:" + err.Error()
  417. return
  418. }
  419. private, err := services.GetPrivateChartPermissionList()
  420. if err != nil {
  421. br.Msg = "查询失败"
  422. br.ErrMsg = "查询失败,系统异常,Err:" + err.Error()
  423. return
  424. }
  425. if private.Ret != 200 {
  426. br.Msg = private.Msg
  427. br.ErrMsg = private.ErrMsg
  428. return
  429. }
  430. userPermissionIds, err := models.GetChartPermissionIdByUserId(user.UserId)
  431. if err != nil {
  432. br.Msg = "查看权限失败"
  433. br.ErrMsg = "查看权限失败,系统异常,Err:" + err.Error()
  434. return
  435. }
  436. userPermissionMap := make(map[int]struct{})
  437. for _, v := range userPermissionIds {
  438. userPermissionMap[v] = struct{}{}
  439. }
  440. if seller == nil {
  441. // 添加默认的销售电话
  442. seller = &models.SysUser{
  443. Phone: utils.DefaultPhone,
  444. AreaCode: utils.DefaultAreaCode,
  445. }
  446. }
  447. var hasPermission string
  448. for _, v := range private.Data {
  449. for _, vv := range v.Child {
  450. if _, ok := userPermissionMap[vv.ChartPermissionId]; ok {
  451. hasPermission = "私有权限"
  452. break
  453. }
  454. }
  455. }
  456. if hasPermission == "" {
  457. hasPermission = "公有权限"
  458. }
  459. miniconf, err := models.GetMiniConf()
  460. if err != nil {
  461. br.Msg = "获取配置失败"
  462. br.ErrMsg = "获取配置失败,系统异常,Err:" + err.Error()
  463. return
  464. }
  465. userView := &models.UserView{
  466. Headimgurl: miniconf["Logo"],
  467. RealName: user.RealName,
  468. Phone: user.Phone,
  469. AreaCode: user.AreaCode,
  470. SellerName: seller.SysRealName,
  471. SellerPhone: seller.Phone,
  472. SellerAreaCode: seller.AreaCode,
  473. HasPermission: hasPermission,
  474. Email: user.Email,
  475. Componey: user.Company,
  476. IsRegistered: user.IsRegistered,
  477. Status: user.Status,
  478. ValidEndTime: user.ValidEndTime.Format(utils.FormatDate),
  479. }
  480. if user.ValidEndTime.IsZero() {
  481. userView.ValidEndTime = ""
  482. }
  483. br.Data = userView
  484. br.Msg = "查询成功"
  485. br.Success = true
  486. br.Ret = 200
  487. }
  488. // PermissionList
  489. // @Title 用户个人权限列表
  490. // @Description 用户个人权限列表
  491. // @Param request body models.LoginReq true "type json string"
  492. // @Success 200 {object} []models.ChartPermissionTreeView
  493. // @router /permission/list [get]
  494. func (this *UserAuthController) PermissionList() {
  495. br := new(models.BaseResponse).Init()
  496. defer func() {
  497. this.Data["json"] = br
  498. this.ServeJSON()
  499. }()
  500. user := this.User
  501. permissionIds, err := models.GetChartPermissionIdByUserId(user.UserId)
  502. if err != nil {
  503. br.Msg = "查询用户权限失败"
  504. br.ErrMsg = "查询用户权限失败,系统异常,Err:" + err.Error()
  505. return
  506. }
  507. userPermissionMap := make(map[int]struct{})
  508. for _, v := range permissionIds {
  509. userPermissionMap[v] = struct{}{}
  510. }
  511. // 查询公有权限
  512. var publicView []*models.ChartPermissionTreeView
  513. publicResp, err := services.GetPublicChartPermissionList()
  514. if err != nil {
  515. br.Msg = "查询公有权限失败"
  516. br.ErrMsg = "查询私有权限失败,系统异常,Err:" + err.Error()
  517. }
  518. if publicResp.Ret != 200 {
  519. br.Msg = publicResp.Msg
  520. br.ErrMsg = publicResp.ErrMsg
  521. return
  522. }
  523. publicView = publicResp.Data
  524. // 如果是正式用户,则查询私有权限
  525. var privateView []*models.ChartPermissionTreeView
  526. if user.Status == utils.UserStatusFormal {
  527. privateResp, err := services.GetPrivateChartPermissionList()
  528. if err != nil {
  529. br.Msg = "查询私有权限失败"
  530. br.ErrMsg = "查询私有权限失败,系统异常,Err:" + err.Error()
  531. }
  532. if privateResp.Ret != 200 {
  533. br.Msg = privateResp.Msg
  534. br.ErrMsg = privateResp.ErrMsg
  535. return
  536. }
  537. for _, v := range privateResp.Data {
  538. IsAdd := false
  539. curPermissionView := &models.ChartPermissionTreeView{
  540. ChartPermissionId: v.ChartPermissionId,
  541. PermissionName: v.PermissionName,
  542. IsPublic: v.IsPublic,
  543. Sort: v.Sort,
  544. Child: make([]*models.ChartPermissionTreeView, 0),
  545. }
  546. for _, vv := range v.Child {
  547. if _, ok := userPermissionMap[vv.ChartPermissionId]; ok {
  548. curPermissionView.Child = append(curPermissionView.Child, vv)
  549. IsAdd = true
  550. }
  551. }
  552. if IsAdd {
  553. privateView = append(privateView, curPermissionView)
  554. }
  555. }
  556. }
  557. if len(privateView) == 0 {
  558. br.Data = publicView
  559. } else {
  560. br.Data = privateView
  561. }
  562. br.Msg = "查询成功"
  563. br.Success = true
  564. br.Ret = 200
  565. }
  566. // PermissionList
  567. // @Title 用户已购权限列表
  568. // @Description 用户已购权限列表
  569. // @Param request body models.LoginReq true "type json string"
  570. // @Success 200 {object} []models.ChartPermissionTreeView
  571. // @router /purchased/list [get]
  572. func (this *UserAuthController) PurchasedPermission() {
  573. br := new(models.BaseResponse).Init()
  574. defer func() {
  575. this.Data["json"] = br
  576. this.ServeJSON()
  577. }()
  578. user := this.User
  579. permissionIds, err := models.GetChartPermissionIdByUserId(user.UserId)
  580. if err != nil {
  581. br.Msg = "查询用户权限失败"
  582. br.ErrMsg = "查询用户权限失败,系统异常,Err:" + err.Error()
  583. return
  584. }
  585. permissionMap := make(map[int]struct{})
  586. for _, v := range permissionIds {
  587. permissionMap[v] = struct{}{}
  588. }
  589. // 查询私有权限
  590. privateResp, err := services.GetPrivateChartPermissionList()
  591. if err != nil {
  592. br.Msg = "查询私有权限失败"
  593. br.ErrMsg = "查询私有权限失败,系统异常,Err:" + err.Error()
  594. }
  595. if privateResp.Ret != 200 {
  596. br.Msg = privateResp.Msg
  597. br.ErrMsg = privateResp.ErrMsg
  598. return
  599. }
  600. var privateView []*models.ChartPermissionTreeView
  601. for _, v := range privateResp.Data {
  602. IsAdd := false
  603. curPermissionView := &models.ChartPermissionTreeView{
  604. ChartPermissionId: v.ChartPermissionId,
  605. PermissionName: v.PermissionName,
  606. IsPublic: v.IsPublic,
  607. Sort: v.Sort,
  608. Child: make([]*models.ChartPermissionTreeView, 0),
  609. }
  610. for _, vv := range v.Child {
  611. if _, ok := permissionMap[vv.ChartPermissionId]; ok && vv.ParentId != 0 {
  612. curPermissionView.Child = append(curPermissionView.Child, vv)
  613. IsAdd = true
  614. }
  615. }
  616. if IsAdd {
  617. privateView = append(privateView, curPermissionView)
  618. }
  619. }
  620. br.Data = privateView
  621. br.Msg = "查询成功"
  622. br.Success = true
  623. br.Ret = 200
  624. }