service_mymenu.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package admin
  2. import (
  3. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  4. "github.com/xinliangnote/go-gin-api/internal/repository/mysql"
  5. "github.com/xinliangnote/go-gin-api/internal/repository/mysql/admin_menu"
  6. "github.com/xinliangnote/go-gin-api/internal/repository/mysql/menu"
  7. )
  8. type SearchMyMenuData struct {
  9. AdminId int32 `json:"admin_id"` // 管理员ID
  10. }
  11. type ListMyMenuData struct {
  12. Id int32 `json:"id"` // ID
  13. Pid int32 `json:"pid"` // 父类ID
  14. Name string `json:"name"` // 菜单名称
  15. Link string `json:"link"` // 链接地址
  16. Icon string `json:"icon"` // 图标
  17. }
  18. func (s *service) MyMenu(ctx core.Context, searchData *SearchMyMenuData) (menuData []ListMyMenuData, err error) {
  19. adminMenuQb := admin_menu.NewQueryBuilder()
  20. if searchData.AdminId != 0 {
  21. adminMenuQb.WhereAdminId(mysql.EqualPredicate, searchData.AdminId)
  22. }
  23. adminMenuListData, err := adminMenuQb.
  24. OrderById(false).
  25. QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext()))
  26. if err != nil {
  27. return nil, err
  28. }
  29. if len(adminMenuListData) <= 0 {
  30. return
  31. }
  32. menuQb := menu.NewQueryBuilder()
  33. menuQb.WhereIsDeleted(mysql.EqualPredicate, -1)
  34. menuListData, err := menuQb.
  35. OrderBySort(true).
  36. QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext()))
  37. if err != nil {
  38. return nil, err
  39. }
  40. if len(menuListData) <= 0 {
  41. return
  42. }
  43. for _, menuAllV := range menuListData {
  44. for _, v := range adminMenuListData {
  45. if menuAllV.Id == v.MenuId {
  46. data := ListMyMenuData{
  47. Id: menuAllV.Id,
  48. Pid: menuAllV.Pid,
  49. Name: menuAllV.Name,
  50. Link: menuAllV.Link,
  51. Icon: menuAllV.Icon,
  52. }
  53. menuData = append(menuData, data)
  54. }
  55. }
  56. }
  57. return
  58. }