Finish mzl_dev_curd
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
namespace app\admin\controller;
|
||||||
|
|
||||||
|
use app\common\controller\BaseController;
|
||||||
|
use app\common\traits\crud\CrudControllerTrait;
|
||||||
|
use app\admin\service\SystemsService;
|
||||||
|
|
||||||
|
class SystemsController extends BaseController
|
||||||
|
{
|
||||||
|
use CrudControllerTrait;
|
||||||
|
|
||||||
|
protected $service;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->service = new SystemsService();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表页数据格式化
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
// protected function indexFormat($data)
|
||||||
|
// {
|
||||||
|
// if (isset($data['created_at']))
|
||||||
|
// $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
|
||||||
|
// if (isset($data['updated_at']))
|
||||||
|
// $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
|
||||||
|
// return $data;
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace app\admin\logic;
|
|
||||||
|
|
||||||
use app\common\traits\crud\CrudLogicTrait;
|
|
||||||
use app\common\model\Corp;
|
|
||||||
|
|
||||||
class CorpLogic
|
|
||||||
{
|
|
||||||
use CrudLogicTrait;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 指定当前要操作的模型
|
|
||||||
*/
|
|
||||||
protected string $modelClass = Corp::class;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\admin\service;
|
||||||
|
|
||||||
|
use app\common\validate\SystemsValidate;
|
||||||
|
use app\common\traits\crud\CrudServiceTrait;
|
||||||
|
use app\common\model\Systems;
|
||||||
|
|
||||||
|
class SystemsService
|
||||||
|
{
|
||||||
|
|
||||||
|
use CrudServiceTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定当前要操作的模型
|
||||||
|
*/
|
||||||
|
protected string $modelClass = Systems::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证器
|
||||||
|
*/
|
||||||
|
protected $validator = SystemsValidate::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取验证器
|
||||||
|
*/
|
||||||
|
public function getValidator()
|
||||||
|
{
|
||||||
|
return new $this->validator;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,10 +2,17 @@
|
|||||||
|
|
||||||
namespace app\common\logic;
|
namespace app\common\logic;
|
||||||
|
|
||||||
|
use app\common\traits\crud\CrudLogicTrait;
|
||||||
use app\common\model\Corp;
|
use app\common\model\Corp;
|
||||||
|
|
||||||
class CorpLogic
|
class CorpLogic
|
||||||
{
|
{
|
||||||
|
use CrudLogicTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定当前要操作的模型
|
||||||
|
*/
|
||||||
|
protected string $modelClass = Corp::class;
|
||||||
|
|
||||||
public function getList()
|
public function getList()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class PermLogic
|
|||||||
|
|
||||||
// —— 递归构建子节点 ——
|
// —— 递归构建子节点 ——
|
||||||
$children = [];
|
$children = [];
|
||||||
if ($node->type === 'directory') {
|
if (in_array($node->type, ['directory', 'menu'])) {
|
||||||
$children = $this->buildTree($resources, $node->id, $currentPath);
|
$children = $this->buildTree($resources, $node->id, $currentPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,86 +8,7 @@ use support\Log;
|
|||||||
|
|
||||||
class RoleLogic
|
class RoleLogic
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* 获取角色列表
|
|
||||||
*/
|
|
||||||
public function getRoleList(array $params)
|
|
||||||
{
|
|
||||||
// 假设我们需要根据system_id进行过滤,其他过滤条件也可以添加
|
|
||||||
$query = Role::query();
|
|
||||||
|
|
||||||
if (isset($params['system_id'])) {
|
|
||||||
$query->where('system_id', $params['system_id']);
|
|
||||||
}
|
|
||||||
if (isset($params['status'])) {
|
|
||||||
$query->where('status', $params['status']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加分页
|
|
||||||
$roles = $query->paginate($params['per_page'] ?? 15);
|
|
||||||
|
|
||||||
return $roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取角色详情
|
|
||||||
*/
|
|
||||||
public function getRoleDetail(int $roleId)
|
|
||||||
{
|
|
||||||
$role = Role::find($roleId);
|
|
||||||
if (!$role) {
|
|
||||||
throw new BusinessException('角色不存在', 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $role;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建角色
|
|
||||||
*/
|
|
||||||
public function createRole(array $data)
|
|
||||||
{
|
|
||||||
$role = new Role();
|
|
||||||
$role->fill($data); // 根据字段填充数据
|
|
||||||
try {
|
|
||||||
$role->save();
|
|
||||||
} catch (\Throwable $e) {
|
|
||||||
Log::error('创建角色失败:'.$e->getMessage());
|
|
||||||
throw new BusinessException('创建角色失败', 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $role;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新角色
|
|
||||||
*/
|
|
||||||
public function updateRole(array $data)
|
|
||||||
{
|
|
||||||
$role = Role::find($data['id']);
|
|
||||||
if (!$role) {
|
|
||||||
throw new BusinessException('角色不存在', 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
$role->update($data); // 更新字段
|
|
||||||
return $role;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除角色
|
|
||||||
*/
|
|
||||||
public function deleteRole(int $roleId)
|
|
||||||
{
|
|
||||||
$role = Role::find($roleId);
|
|
||||||
if (!$role) {
|
|
||||||
throw new BusinessException('角色不存在', 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$role->delete();
|
|
||||||
} catch (\Throwable $e) {
|
|
||||||
Log::error('删除角色失败:'.$e->getMessage());
|
|
||||||
throw new BusinessException('删除角色失败', 500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,20 @@
|
|||||||
|
|
||||||
namespace app\common\logic;
|
namespace app\common\logic;
|
||||||
|
|
||||||
|
use app\common\traits\crud\CrudLogicTrait;
|
||||||
use app\common\model\Systems;
|
use app\common\model\Systems;
|
||||||
|
|
||||||
class SystemsLogic
|
class SystemsLogic
|
||||||
{
|
{
|
||||||
|
use CrudLogicTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定当前要操作的模型
|
||||||
|
*/
|
||||||
|
protected string $modelClass = Systems::class;
|
||||||
|
|
||||||
public function getList()
|
public function getList()
|
||||||
{
|
{
|
||||||
return Systems::where('status', 1)->orderBy('sort', 'asc')->get(['id', 'name', 'code', 'icon', 'type']);
|
return Systems::where('status', 1)->orderBy('sort', 'asc')->get(['id', 'name', 'code', 'type', 'type']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,6 +43,14 @@ class Role extends Model
|
|||||||
public $timestamps = true;
|
public $timestamps = true;
|
||||||
|
|
||||||
protected $dateFormat = 'U';
|
protected $dateFormat = 'U';
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'system_id',
|
||||||
|
'name',
|
||||||
|
'desc',
|
||||||
|
'sort',
|
||||||
|
'status'
|
||||||
|
];
|
||||||
|
|
||||||
// 角色下所有用户
|
// 角色下所有用户
|
||||||
public function users()
|
public function users()
|
||||||
|
|||||||
@@ -4,21 +4,6 @@ namespace app\common\model;
|
|||||||
|
|
||||||
use support\Model;
|
use support\Model;
|
||||||
|
|
||||||
/**
|
|
||||||
* systems 系统/应用表
|
|
||||||
* @property integer $id 系统ID(主键)
|
|
||||||
* @property string $code 系统编码(唯一英文标识)
|
|
||||||
* @property string $name 系统名称
|
|
||||||
* @property string $type 系统类型
|
|
||||||
* @property string $desc 系统描述
|
|
||||||
* @property string $icon 系统图标
|
|
||||||
* @property string $domain_url 系统URL
|
|
||||||
* @property string $is_role 是否区分角色权限
|
|
||||||
* @property integer $sort 排序
|
|
||||||
* @property integer $status 状态
|
|
||||||
* @property integer $created_at 创建时间
|
|
||||||
* @property integer $updated_at 更新时间
|
|
||||||
*/
|
|
||||||
class Systems extends Model
|
class Systems extends Model
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -50,15 +35,15 @@ class Systems extends Model
|
|||||||
public $timestamps = true;
|
public $timestamps = true;
|
||||||
|
|
||||||
|
|
||||||
// 系统下的资源
|
protected $dateFormat = 'U';
|
||||||
public function resources()
|
|
||||||
{
|
|
||||||
return $this->hasMany(Resource::class, 'system_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拥有该系统访问权限的用户
|
/**
|
||||||
public function users()
|
* 允许自动填充模型字段
|
||||||
{
|
*/
|
||||||
return $this->belongsToMany(User::class, 'user_systems', 'system_id', 'user_id');
|
protected $fillable = ['id', 'code', 'name', 'type', 'desc', 'icon', 'domain_url', 'is_role', 'sort', 'status', 'created_at', 'updated_at'];
|
||||||
}
|
|
||||||
}
|
/**
|
||||||
|
* 不允许自动填充模型字段
|
||||||
|
*/
|
||||||
|
protected $guarded = [];
|
||||||
|
}
|
||||||
@@ -64,27 +64,6 @@ class Generate
|
|||||||
return $ControllerStub . $ServiceStub . $LogicStub . $ModelStub . $ValidatorStub . "<info>文件生成成功!</info> <br/>";
|
return $ControllerStub . $ServiceStub . $LogicStub . $ModelStub . $ValidatorStub . "<info>文件生成成功!</info> <br/>";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置字段
|
|
||||||
*
|
|
||||||
* @param array $fields 字段数组
|
|
||||||
*/
|
|
||||||
public function fillableFields()
|
|
||||||
{
|
|
||||||
$tableName = $this->options['table'];
|
|
||||||
$fields = TableInspector::getColumnNames($tableName);
|
|
||||||
$str = '';
|
|
||||||
foreach ($fields as $key => $val) {
|
|
||||||
if ($key < (count($fields)-1)) {
|
|
||||||
$str .= "'{$val}', ";
|
|
||||||
} else {
|
|
||||||
$str .= "'{$val}'";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$fields = trim($str, '"');
|
|
||||||
return $fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据模板生成文件
|
* 根据模板生成文件
|
||||||
*
|
*
|
||||||
@@ -141,6 +120,27 @@ class Generate
|
|||||||
return "生成文件: <info>{$outputPath}</info> <br/>";
|
return "生成文件: <info>{$outputPath}</info> <br/>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置字段
|
||||||
|
*
|
||||||
|
* @param array $fields 字段数组
|
||||||
|
*/
|
||||||
|
public function fillableFields()
|
||||||
|
{
|
||||||
|
$tableName = $this->options['table'];
|
||||||
|
$fields = TableInspector::getColumnNames($tableName);
|
||||||
|
$str = '';
|
||||||
|
foreach ($fields as $key => $val) {
|
||||||
|
if ($key < (count($fields)-1)) {
|
||||||
|
$str .= "'{$val}', ";
|
||||||
|
} else {
|
||||||
|
$str .= "'{$val}'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$fields = trim($str, '"');
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 如果文件存在,删除它
|
* 如果文件存在,删除它
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\common\validate;
|
||||||
|
|
||||||
|
use think\Validate;
|
||||||
|
|
||||||
|
class SystemsValidate extends Validate
|
||||||
|
{
|
||||||
|
// 规则
|
||||||
|
protected $rule = [
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// 提示
|
||||||
|
protected $message = [
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// 场景
|
||||||
|
protected $scene = [
|
||||||
|
'store' => [
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
'update' => [
|
||||||
|
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -22,18 +22,17 @@ class IndexController
|
|||||||
return htmlpage();
|
return htmlpage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调试飞书
|
||||||
|
*/
|
||||||
public function view(Request $request)
|
public function view(Request $request)
|
||||||
{
|
{
|
||||||
return view('index/qrcode', ['name' => 'webman']);
|
return view('index/qrcode', ['name' => 'webman']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function json(Request $request)
|
/**
|
||||||
{
|
* 临时增加用户权限
|
||||||
return json(['code' => 0, 'msg' => 'ok']);
|
*/
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 临时增加用户权限
|
|
||||||
public function perm(Request $request)
|
public function perm(Request $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@@ -61,12 +60,13 @@ class IndexController
|
|||||||
Cache::delete("user_resources_{$data['user_id']}");
|
Cache::delete("user_resources_{$data['user_id']}");
|
||||||
return json(['code' => 0, 'msg' => 'success']);
|
return json(['code' => 0, 'msg' => 'success']);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
var_dump($e);
|
|
||||||
return json(['code' => 1, 'msg' => $e->getMessage()]);
|
return json(['code' => 1, 'msg' => $e->getMessage()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成资源
|
||||||
|
*/
|
||||||
public function createResource()
|
public function createResource()
|
||||||
{
|
{
|
||||||
$options = [
|
$options = [
|
||||||
@@ -75,7 +75,7 @@ class IndexController
|
|||||||
'name' => 'systems'
|
'name' => 'systems'
|
||||||
],
|
],
|
||||||
'model' => [
|
'model' => [
|
||||||
'module' => 'admin',
|
'module' => 'common',
|
||||||
'name' => 'systems'
|
'name' => 'systems'
|
||||||
],
|
],
|
||||||
'service' => [
|
'service' => [
|
||||||
@@ -83,11 +83,11 @@ class IndexController
|
|||||||
'name' => 'systems'
|
'name' => 'systems'
|
||||||
],
|
],
|
||||||
'logic' => [
|
'logic' => [
|
||||||
'module' => 'admin',
|
'module' => 'common',
|
||||||
'name' => 'systems'
|
'name' => 'systems'
|
||||||
],
|
],
|
||||||
'validate' => [
|
'validate' => [
|
||||||
'module' => 'admin',
|
'module' => 'common',
|
||||||
'name' => 'systems'
|
'name' => 'systems'
|
||||||
],
|
],
|
||||||
'table' => 'systems'
|
'table' => 'systems'
|
||||||
|
|||||||
Reference in New Issue
Block a user