service_myaction.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_action"
  7. )
  8. type SearchMyActionData struct {
  9. AdminId int32 `json:"admin_id"` // 管理员ID
  10. }
  11. type MyActionData struct {
  12. Id int32 // 主键
  13. MenuId int32 // 菜单栏ID
  14. Method string // 请求方式
  15. Api string // 请求地址
  16. }
  17. func (s *service) MyAction(ctx core.Context, searchData *SearchMyActionData) (actionData []MyActionData, err error) {
  18. adminMenuQb := admin_menu.NewQueryBuilder()
  19. if searchData.AdminId != 0 {
  20. adminMenuQb.WhereAdminId(mysql.EqualPredicate, searchData.AdminId)
  21. }
  22. adminMenuListData, err := adminMenuQb.
  23. OrderById(false).
  24. QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext()))
  25. if err != nil {
  26. return nil, err
  27. }
  28. if len(adminMenuListData) <= 0 {
  29. return
  30. }
  31. var menuIds []int32
  32. for _, v := range adminMenuListData {
  33. menuIds = append(menuIds, v.MenuId)
  34. }
  35. actionQb := menu_action.NewQueryBuilder()
  36. actionQb.WhereIsDeleted(mysql.EqualPredicate, -1)
  37. actionQb.WhereMenuIdIn(menuIds)
  38. actionListData, err := actionQb.QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext()))
  39. if err != nil {
  40. return nil, err
  41. }
  42. if len(actionListData) <= 0 {
  43. return
  44. }
  45. actionData = make([]MyActionData, len(actionListData))
  46. for k, v := range actionListData {
  47. data := MyActionData{
  48. Id: v.Id,
  49. MenuId: v.MenuId,
  50. Method: v.Method,
  51. Api: v.Api,
  52. }
  53. actionData[k] = data
  54. }
  55. return
  56. }