SystemMenus.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\model\system\admin;
  12. use qiniu\basic\BaseModel;
  13. use qiniu\traits\ModelTrait;
  14. use think\Model;
  15. use think\model\concern\SoftDelete;
  16. /**
  17. * 菜单规则模型
  18. * Class SystemMenus
  19. * @package app\model\system
  20. */
  21. class SystemMenus extends BaseModel
  22. {
  23. use ModelTrait;
  24. use SoftDelete;
  25. /**
  26. * 数据表主键
  27. * @var string
  28. */
  29. protected $pk = 'id';
  30. /**
  31. * 模型名称
  32. * @var string
  33. */
  34. protected $name = 'system_menus';
  35. protected $hidden = ['delete_time'];
  36. protected $order = 'id asc';
  37. public function button()
  38. {
  39. return $this->hasMany(self::class, 'pid', 'id')->where('auth_type', 3)->where('is_show', 1);
  40. }
  41. /**
  42. * 参数修改器
  43. * @param $value
  44. * @return false|string
  45. */
  46. public function setParamsAttr($value)
  47. {
  48. $value = $value ? explode('/', $value) : [];
  49. $params = array_chunk($value, 2);
  50. $data = [];
  51. foreach ($params as $param) {
  52. if (isset($param[0]) && isset($param[1])) $data[$param[0]] = $param[1];
  53. }
  54. return json_encode($data);
  55. }
  56. /**
  57. * 参数获取器
  58. * @param $_value
  59. * @return mixed
  60. */
  61. public function getParamsAttr($_value)
  62. {
  63. return is_string($_value) ? json_decode($_value, true) : $_value;
  64. }
  65. /**
  66. * pid获取器
  67. * @param $value
  68. * @return mixed|string
  69. */
  70. public function getPidAttr($value)
  71. {
  72. return !$value ? '顶级' : $this->where('pid', $value)->value('menu_name');
  73. }
  74. /**
  75. * 默认条件查询器
  76. * @param Model $query
  77. * @param $value
  78. */
  79. public function searchDefaultAttr($query)
  80. {
  81. $query->where(['is_show' => 1]);
  82. }
  83. /**
  84. * 是否显示搜索器
  85. * @param Model $query
  86. * @param $value
  87. */
  88. public function searchIsShowAttr($query, $value)
  89. {
  90. if ($value !== '') {
  91. $query->where('is_show', $value);
  92. }
  93. }
  94. /**
  95. * Pid搜索器
  96. * @param Model $query
  97. * @param $value
  98. */
  99. public function searchPidAttr($query, $value)
  100. {
  101. $query->where('pid', $value ?? 0);
  102. }
  103. /**
  104. * type搜索器
  105. * @param Model $query
  106. * @param $value
  107. */
  108. public function searchTypeAttr($query, $value)
  109. {
  110. if ($value) $query->where('type', $value);
  111. }
  112. /**
  113. * 规格搜索器
  114. * @param Model $query
  115. * @param $value
  116. */
  117. public function searchRuleAttr($query, $value)
  118. {
  119. $query->whereIn('id', $value)->whereOr('pid', 0);
  120. }
  121. /**
  122. * 搜索菜单
  123. * @param Model $query
  124. * @param $value
  125. */
  126. public function searchKeywordAttr($query, $value)
  127. {
  128. if ($value !== '') {
  129. $query->whereLike('menu_name|menu_path|unique_auth|api_url|id|pid', "%$value%");
  130. }
  131. }
  132. /**
  133. * 方法搜索器
  134. * @param Model $query
  135. * @param $value
  136. */
  137. public function searchActionAttr($query, $value)
  138. {
  139. $query->where('action', $value);
  140. }
  141. /**
  142. * 控制器搜索器
  143. * @param Model $query
  144. * @param $value
  145. */
  146. public function searchControllerAttr($query, $value)
  147. {
  148. $query->where('controller', lcfirst($value));
  149. }
  150. /**
  151. * 访问地址搜索器
  152. * @param Model $query
  153. * @param $value
  154. */
  155. public function searchUrlAttr($query, $value)
  156. {
  157. $query->where('api_url', $value);
  158. }
  159. /**
  160. * 参数搜索器
  161. * @param Model $query
  162. * @param $value
  163. */
  164. public function searchParamsAttr($query, $value)
  165. {
  166. $query->where(function ($query) use ($value) {
  167. $query->where('params', $value)->whereOr('params', "'[]'");
  168. });
  169. }
  170. /**
  171. * 权限标识搜索器
  172. * @param Model $query
  173. * @param $value
  174. */
  175. public function searchUniqueAttr($query, $value)
  176. {
  177. if ($value) {
  178. $query->whereIn('id', $value);
  179. }
  180. }
  181. /**
  182. * 菜单规格搜索
  183. * @param Model $query
  184. * @param $value
  185. */
  186. public function searchRouteAttr($query, $value)
  187. {
  188. $query->where('auth_type', 1)->where('is_show', 1);
  189. if ($value) {
  190. $query->whereIn('id', $value);
  191. }
  192. }
  193. /**
  194. * Id搜索器
  195. * @param Model $query
  196. * @param $value
  197. */
  198. public function searchIdAttr($query, $value)
  199. {
  200. $query->whereIn('id', $value);
  201. }
  202. /**
  203. * is_show_path
  204. * @param Model $query
  205. * @param $value
  206. */
  207. public function searchIsShowPathAttr($query, $value)
  208. {
  209. $query->where('is_show_path', $value);
  210. }
  211. /**
  212. * auth_type
  213. * @param Model $query
  214. * @param $value
  215. */
  216. public function searchAuthTypeAttr($query, $value)
  217. {
  218. $query->where('auth_type', $value);
  219. }
  220. }