Menu.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\common\model\base\menu;
  3. use app\common\model\Common;
  4. use think\facade\Db;
  5. class Menu extends Common
  6. {
  7. protected $name = "system_menus";
  8. protected $pk = 'menu_id';
  9. protected $autoWriteTimestamp = 'datetime';
  10. protected $createTime = 'create_at';
  11. protected $updateTime = 'update_at';
  12. protected $deleteTime = 'delete_at';
  13. protected $schema = [
  14. 'menu_id' => 'int',
  15. 'is_root' => 'int',
  16. 'is_parent' => 'int',
  17. 'pid' => 'int',
  18. 'name' => 'varchar',
  19. 'title' => 'varchar',
  20. 'badge' => 'varchar',
  21. 'path' => 'varchar',
  22. 'component' => 'varchar',
  23. 'icon' => 'varchar',
  24. 'redirect' => 'varchar',
  25. 'affix' => 'int',
  26. 'hidden' => 'int',
  27. 'dot' => 'int',
  28. 'noKeepAlive' => 'int',
  29. 'alwaysShow' => 'int',
  30. 'isCustomSvgIcon' => 'int',
  31. 'tabHidden' => 'int',
  32. 'sort' => 'int',
  33. 'cascade' => 'varchar',
  34. 'status' => 'int',
  35. 'create_user' => 'int',
  36. 'update_user' => 'int',
  37. 'create_at' => 'datetime',
  38. 'update_at' => 'datetime',
  39. 'parent_path' => 'varchar',
  40. 'delete_at' => 'datetime'
  41. ];
  42. protected $append = [
  43. 'parentName',
  44. 'pathName',
  45. 'status_txt',
  46. 'level',
  47. ];
  48. public function getAlwaysShowAttr($value)
  49. {
  50. return $value == 1;
  51. }
  52. public function statusList()
  53. {
  54. return [1 => '可用', 2 => '不可用'];
  55. }
  56. public function getStatusTxtAttr($value, $data)
  57. {
  58. $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
  59. $statusList = $this->statusList();
  60. return isset($statusList[$value]) ? $statusList[$value] : '';
  61. }
  62. public function menurequest()
  63. {
  64. return $this->hasMany(Menurequest::class,"menu_id","menu_id");
  65. }
  66. public function getParentNameAttr($value, $data)
  67. {
  68. $value = $value ? $value : (isset($data['pid']) ? $data['pid'] : '');
  69. $MenuList = cache('MENULIST');
  70. if (empty($MenuList)) {
  71. $MenuList = self::column('title', 'menu_id');
  72. cache('MENULIST', $MenuList, 7200);
  73. }
  74. return isset($MenuList[$value]) ? $MenuList[$value] : '顶级菜单';
  75. }
  76. public function getPathNameAttr($value, $data)
  77. {
  78. $value = isset($data['parent_path']) ? $data['parent_path'] : '';
  79. if (!empty($value)) {
  80. $pids = explode(',', $value);
  81. $MenuList = cache('MENULIST');
  82. if (empty($MenuList)) {
  83. $MenuList = self::column('title', 'menu_id');
  84. cache('MENULIST', $MenuList, 7200);
  85. }
  86. $titles = [];
  87. foreach ($pids as $pid) {
  88. $titles[] = isset($MenuList[$pid]) ? $MenuList[$pid] : '';
  89. }
  90. $titles = array_filter($titles);
  91. return implode('/', $titles);
  92. } else {
  93. return '';
  94. }
  95. }
  96. public function getLevelAttr($value, $data)
  97. {
  98. $value = isset($data['parent_path']) ? $data['parent_path'] : '';
  99. $pids = [];
  100. if (!empty($value)) {
  101. $pids = explode(',', $value);
  102. };
  103. return count($pids);
  104. }
  105. }