123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <?php
- /*
- * @Description: 无表注释
- * @Version: *
- * @Autor: lexuan
- * @Date: 2024-11-28 13:29:06
- * @LastEditors: lexuan
- * @LastEditTime: 2024-11-28 13:29:06
- */
- namespace App\DataApiNew\Helper;
- use App\DataApiNew\Models\Permissions;
- use App\Models\Pages;
- use App\Models\SpoutExport;
- use App\Models\SpoutImport;
- use App\DataApiNew\Models\AdminUsers;
- use Illuminate\Http\Request;
- class PermissionsHelper
- {
- // 查询条件
- public function whens($query, $request)
- {
- return $query
- ->when($request->filled('id'), fn ($q) => $q->where('id', $request->id));
- }
- // 查询列表
- public function select(Request $request)
- {
- $page = new Pages($request, Permissions::query());
- $page->before(function ($query) {
- $query->select(Permissions::$selectFields)
- ->where('status', 1)
- ->whereNull('parent_id')
- ->orWhere('parent_id', 0)
- ->orderby('weight', 'desc');
- return $query;
- });
- $page->after(function ($result) {
- $result->each(function ($item) {
- $item->children = Permissions::descendantsOf($item->id)->toTree();
- });
- });
- $result = $page->paginate();
- return $result;
- }
- // 导出
- public function export(Request $request)
- {
- $query = Permissions::select(Permissions::$selectFields);
- $query = $this->whens($query, $request);
- $query->orderBy('created_at', 'desc');
- $header = [];
- $getEnValue = $this->getEnValue();
- $excel = new SpoutExport($header);
- $excel->setData($query->get());
- $result = $excel->setEnum($getEnValue)->spoutToExcel('excel_out');
- return $result ? success($result['url']) : error();
- }
- // 导入
- public function import(Request $request)
- {
- $header = [];
- $getEnValue = $this->getEnValue();
- $SpoutImport = new SpoutImport($header);
- $dataList = $SpoutImport->setRequest($request)->getExcelData();
- return $dataList;
- }
- // 获取枚举值
- public function getEnValue()
- {
- $data = [
- 'open_status' => [
- 0 => "待开卡",
- 1 => "开卡中",
- ]
- ];
- return $data;
- }
- // 查询一条
- public function find(Request $request)
- {
- $request->validate([
- 'id' => 'required|integer',
- ]);
- $result = Permissions::where(['id' => $request->id])->select(Permissions::$selectFields)->first();
- return success($result);
- }
- // 添加
- public function insert(Request $request)
- {
- $request->validate([
- 'name' => 'required',
- 'route' => 'required',
- ]);
- sys_log($request, '添加权限', '权限管理');
- $name = $request->name;
- $route = $request->route;
- $weight = $request->input('weight', 0);
- if ($request->filled('parent_id')) {
- $parentNode = Permissions::find($request->parent_id);
- $node = new Permissions(['name' => $name, 'menu_level' => ($parentNode->menu_level ?? 0) + 1, 'route' => $route, 'guard_name' => 'web', 'weight' => $weight]);
- $result = $node->appendToNode($parentNode)->save();
- } else {
- $node = new Permissions(['name' => $name,'menu_level' => 1, 'route' => $route, 'guard_name' => 'web', 'weight' => $weight]);
- $result = $node->save();
- }
- if ($result) {
- return success();
- } else {
- return error();
- }
- }
- // 修改
- public function update(Request $request)
- {
- $request->validate([
- 'id' => 'required|integer',
- ]);
- sys_log($request, '修改权限', '权限管理');
- $id = $request->input('id');
- $category = Permissions::find($id);
- if ($request->filled('parent_id')) {
- $parent = Permissions::find($request->parent_id);
- $category->parent()->associate($parent);
- } else {
- $category->parent()->dissociate();
- }
- // 更新其他字段
- $result = $category->update($request->all());
- if ($result) {
- return success();
- } else {
- return error();
- }
- }
- // 删除
- public function delete(Request $request)
- {
- $request->validate([
- 'ids' => 'required',
- ]);
- sys_log($request, '删除权限', '权限管理');
-
- $id_arr = explode(",", $request->ids);
- $count = Permissions::whereIn('parent_id', $id_arr)->count();
- if ($count > 0) {
- return ['code' => 0, 'msg' => "存在子数据,禁止删除"];
- }
- $oplist = [];
- foreach ($id_arr as $perID) {
-
- $res = 0;
- $node = Permissions::find($perID);
- if ($node->roles()->count() > 0) {
- $oplist[] = [
- 'id' => $perID,
- 'msg' => '权限正在被使用',
- 'status' => $res
- ];
- continue;
- }
-
- $res = $node->delete();
- $oplist[] = [
- 'id' => $perID,
- 'status' => $res
- ];
- }
- return ['code' => 1, 'msg' => 'success', 'data' => $oplist];
- }
- // 获取用户权限列表
- public function getUserPermissions(Request $request)
- {
- if ($request->filled('user_id')) {
- $user_id = $request->input('user_id');
- } else {
- $user_id = auth()->id();
- }
- // 获取用户权限
- $user = AdminUsers::find($user_id);
- $permissions = $user->getAllPermissions()->pluck('id')->toArray();
- // 树状展示权限
- $perlist = Permissions::select(Permissions::$selectFields)
- ->whereIn('id', $permissions)
- ->where('status', 1)
- ->whereNull('parent_id')
- ->orWhere('parent_id', 0)
- ->orderby('weight', 'desc')
- ->get();
- $perlist->each(function ($item) use ($permissions) {
- $item->children = Permissions::descendantsOf($item->id)
- ->where('status', 1)
- ->whereIn('id', $permissions)
- ->toTree();
- });
- return ['code' => 1, 'msg' => "success", 'data' => $perlist];
- }
- }
|