chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: ywxapp<admin@ywxapp.cn>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace ywxapp\model;
|
||||
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
use ywxapp\model\BaseModel;
|
||||
/**
|
||||
* MemberRule 类
|
||||
*
|
||||
* @author ywxapp <admin@ywxapp.cn>
|
||||
*/
|
||||
class MemberRule extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
|
||||
protected function getOptions(): array
|
||||
{
|
||||
return [
|
||||
'strict' => false,
|
||||
'name' => 'member_rule',
|
||||
'autoWriteTimestamp' => 'int',
|
||||
'createTime' => 'create_at',
|
||||
'updateTime' => 'update_at',
|
||||
'deleteTime' => 'delete_at',
|
||||
'defaultSoftDelete' => 0,
|
||||
// 'dateFormat' => 'Y-m-d H:i:s',
|
||||
'append' => ['is_parent' ],
|
||||
'hidden' => ['password', 'create_at', 'update_at', 'delete_at'],
|
||||
'readonly' => ['id'],
|
||||
];
|
||||
}
|
||||
|
||||
// 拥有该权限的角色
|
||||
|
||||
public function groups()
|
||||
{
|
||||
return $this->belongsToMany(MemberGroup::class, MemberGroupRule::class, 'gid', 'rid');
|
||||
}
|
||||
|
||||
// 拥有该权限的用户(通过角色)
|
||||
|
||||
public function users()
|
||||
{
|
||||
return $this->belongsToMany(MemberUser::class, MemberGroupRule::class, 'uid', 'gid')->via('roles');
|
||||
}
|
||||
|
||||
|
||||
public static function onAfterRead($data)
|
||||
{
|
||||
// 这里可以直接使用$this访问当前模型
|
||||
// if ($data->type == 2) {
|
||||
// $data->append(['href', 'openType']);
|
||||
// $data->openType = '_iframe';
|
||||
// $data->href = $data->route;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static function onAfterDelete($data)
|
||||
{
|
||||
MemberGroupRule::where('rid', $data->id)->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取器:获取状态文本
|
||||
*/
|
||||
public function getIsParentAttr($value, $data)
|
||||
{
|
||||
return $this->where('pid', $data['id'])->count() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将扁平菜单数组转为树形结构
|
||||
* @param array $menus 扁平菜单列表(每个元素是数组)
|
||||
* @param int $parentId 父ID(默认0表示根)
|
||||
* @return array 树形结构
|
||||
*/
|
||||
public static function buildTree(array $menus, int $parentId = 0): array
|
||||
{
|
||||
$branch = [];
|
||||
foreach ($menus as $menu) {
|
||||
if ($menu['pid'] == $parentId) {
|
||||
$children = self::buildTree($menus, $menu['id']);
|
||||
if (! empty($children)) {
|
||||
$menu['children'] = $children;
|
||||
}
|
||||
$branch[] = $menu;
|
||||
}
|
||||
}
|
||||
return $branch;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归生成树形结构
|
||||
* @param array $list 原始数据
|
||||
* @param int $pid 父级ID
|
||||
* @return array
|
||||
*/
|
||||
public static function toTree($list, $pid = 0)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($list as $item) {
|
||||
if ($item['pid'] == $pid) {
|
||||
$children = self::toTree($list, $item['id']);
|
||||
if ($children) {
|
||||
$item['children'] = $children;
|
||||
}
|
||||
$tree[] = $item;
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
|
||||
public static function toTreeS($list, $pid = 0, $level = 0)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($list as $item) {
|
||||
if ($item['pid'] == $pid) {
|
||||
// ✅ 创建新变量,不修改原始数据
|
||||
// $item['title'] = str_repeat(' ', $level * 2) . ($level > 0 ? '├─ ' : '') . $item['title'];
|
||||
// 或者用 |-- 但控制层级
|
||||
$item['title'] = str_repeat('|-- ', $level + 1) . $item['title'];
|
||||
$children = self::toTreeS($list, $item['id'], $level + 1);
|
||||
if ($children) {
|
||||
$item['children'] = $children;
|
||||
}
|
||||
$tree[] = $item;
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
/**
|
||||
* 获取所有权限并转为树形
|
||||
* @return array
|
||||
*/
|
||||
public static function getTreeList()
|
||||
{
|
||||
$list = self::order('sort', 'asc')->select()->toArray();
|
||||
return self::toTree($list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 表结构自愈:建表 + 关键列兜底(install.sql 为事实源)。
|
||||
* 查询/写入前调用,避免老库缺表导致 1146。
|
||||
*/
|
||||
public static function ensureSchema(): void
|
||||
{
|
||||
BaseModel::ensureTableFromInstall(BaseModel::currentPrefix(), 'member_rule');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user