Compare commits
3 Commits
56d5dd339a
...
1ffec7bb41
| Author | SHA1 | Date |
|---|---|---|
|
|
1ffec7bb41 | |
|
|
9262a58f10 | |
|
|
b100953526 |
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Helpers\Paginator;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\AdminPermission;
|
||||||
|
|
||||||
|
class AdminPermissionController extends Controller
|
||||||
|
{
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$permissions = (new AdminPermission())->toTree(AdminPermission::endPoint()->get());
|
||||||
|
return $this->json($this->formatPermissionsTreeToArray($permissions));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化树
|
||||||
|
*
|
||||||
|
* @param array $permissions
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function formatPermissionsTreeToArray(array $permissions)
|
||||||
|
{
|
||||||
|
$res = [];
|
||||||
|
foreach ($permissions as $permission) {
|
||||||
|
$res[] = [
|
||||||
|
'id' => $permission->id,
|
||||||
|
'label' => $permission->name,
|
||||||
|
'children' => $this->formatPermissionsTreeToArray($permission->children ?? []),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\AdminRole;
|
||||||
|
use App\Helpers\Paginator;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Http\Requestes\AdminRoleRequest;
|
||||||
|
use App\Http\Resources\AdminRoleResource;
|
||||||
|
|
||||||
|
class AdminRoleController extends Controller
|
||||||
|
{
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$query = AdminRole::filter($request->input())->where('id', '>', '1');
|
||||||
|
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
|
||||||
|
return $this->json(AdminRoleResource::collection($list));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(AdminRoleRequest $request)
|
||||||
|
{
|
||||||
|
$permissionIds = $request->input('permission_ids', []);
|
||||||
|
//验证slug唯一
|
||||||
|
if(AdminRole::where('slug', $request->input('slug'))->exists()){
|
||||||
|
return $this->error('该角色编码已存在');
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
//添加角色信息
|
||||||
|
$role = AdminRole::create($request->input());
|
||||||
|
//添加角色权限
|
||||||
|
$role->permissions()->sync($permissionIds);
|
||||||
|
DB::commit();
|
||||||
|
}catch(\Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->error('添加失败,请稍后再试');
|
||||||
|
}
|
||||||
|
return $this->success('添加成功');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show(AdminRole $adminRole){
|
||||||
|
$adminRole->load('permissions');
|
||||||
|
return $this->json(AdminRoleResource::make($adminRole));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(AdminRole $adminRole, AdminRoleRequest $request)
|
||||||
|
{
|
||||||
|
$permissionIds = $request->input('permission_ids', []);
|
||||||
|
//验证slug唯一
|
||||||
|
if(AdminRole::where('slug', $request->input('slug'))->where('id', '<>', $adminRole->id)->exists()){
|
||||||
|
return $this->error('该角色编码已存在');
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
//添加角色信息
|
||||||
|
$adminRole->update($request->input());
|
||||||
|
//添加角色权限
|
||||||
|
$adminRole->permissions()->sync($permissionIds);
|
||||||
|
DB::commit();
|
||||||
|
}catch(\Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->error('添加失败,请稍后再试');
|
||||||
|
}
|
||||||
|
return $this->success('添加成功');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(AdminRole $adminRole){
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
$adminRole->permissions()->sync([]);
|
||||||
|
$adminRole->delete();
|
||||||
|
DB::commit();
|
||||||
|
}catch(\Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->error('删除失败,请稍后再试');
|
||||||
|
}
|
||||||
|
return $this->success('删除成功!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,107 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\AdminUser;
|
||||||
|
use App\Helpers\Paginator;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Http\Requestes\AdminUserRequest;
|
||||||
|
use App\Http\Resources\AdminUserResource;
|
||||||
|
use App\Http\Requestes\RestPasswordRequest;
|
||||||
|
use App\Http\Requestes\AdminUserUpdateRequest;
|
||||||
|
|
||||||
|
class AdminUserController extends Controller
|
||||||
|
{
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$query = AdminUser::filter($request->all())->where('id', '>', 1);
|
||||||
|
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)) ;
|
||||||
|
return $this->json(AdminUserResource::collection($list));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(AdminUserRequest $request)
|
||||||
|
{
|
||||||
|
$baseIds = $request->input('base_ids', []);
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
//添加管理员信息
|
||||||
|
$password = bcrypt($request->input('password'));
|
||||||
|
$user = AdminUser::create(array_merge(['password'=> $password], $request->input()));
|
||||||
|
//添加管理员查看基地的数据权限;
|
||||||
|
$user->bases()->sync($baseIds);
|
||||||
|
DB::commit();
|
||||||
|
}catch(\Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->error('添加失败,请稍后再试');
|
||||||
|
}
|
||||||
|
return $this->success('添加成功');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show(AdminUser $adminUser){
|
||||||
|
return $this->json(AdminUserResource::make($adminUser));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(AdminUser $adminUser, AdminUserUpdateRequest $request)
|
||||||
|
{
|
||||||
|
$baseIds = $request->input('base_ids', []);
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
//添加管理员信息
|
||||||
|
$adminUser->update($request->input());
|
||||||
|
//添加管理员查看基地的数据权限;
|
||||||
|
$adminUser->crops()->sync($baseIds);
|
||||||
|
DB::commit();
|
||||||
|
}catch(\Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->error('修改失败,请稍后再试');
|
||||||
|
}
|
||||||
|
return $this->success('修改成功!');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(AdminUser $adminUser){
|
||||||
|
if($adminUser->id == 1){
|
||||||
|
return $this->error('删除失败,请稍后再试');
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
$adminUser->crops()->sync([]);
|
||||||
|
$adminUser->delete();
|
||||||
|
DB::commit();
|
||||||
|
}catch(\Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->error('删除失败,请稍后再试');
|
||||||
|
}
|
||||||
|
return $this->success('删除成功!');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启用/禁用
|
||||||
|
*
|
||||||
|
* @param AdminUser $adminUser
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function endable(AdminUser $adminUser){
|
||||||
|
if($adminUser->id == 1){
|
||||||
|
return $this->error('操作失败,请稍后再试');
|
||||||
|
}
|
||||||
|
$adminUser->update([
|
||||||
|
'is_enable' => (int) !$adminUser->is_enable
|
||||||
|
]);
|
||||||
|
return $this->success('操作成功!');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function editPassword(AdminUser $adminUser, RestPasswordRequest $request){
|
||||||
|
if($adminUser->id == 1){
|
||||||
|
return $this->error('操作失败,请稍后再试');
|
||||||
|
}
|
||||||
|
$adminUser->update([
|
||||||
|
'password' => bcrypt($request->input('password'))
|
||||||
|
]);
|
||||||
|
return $this->success('修改成功!');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,10 @@ class AuthController extends Controller
|
||||||
return $this->error('用户名或密码错误');
|
return $this->error('用户名或密码错误');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($user->is_enable !== 1){
|
||||||
|
return $this->error('用户状态异常请联系管理员');
|
||||||
|
}
|
||||||
|
|
||||||
return $this->attemptUser($user);
|
return $this->attemptUser($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,17 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Exceptions\BizException;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Exceptions\BizException;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use App\Http\Requestes\RestPasswordRequest;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
{
|
{
|
||||||
public function resetPwd(Request $request)
|
public function resetPwd(RestPasswordRequest $request)
|
||||||
{
|
{
|
||||||
$input = $request->validate([
|
$input = $request->input();
|
||||||
'password' => 'required|current_password:api',
|
|
||||||
'new_password' => 'required',
|
|
||||||
], [
|
|
||||||
'password.current_password' => '密码错误',
|
|
||||||
]);
|
|
||||||
$user = auth('api')->user();
|
$user = auth('api')->user();
|
||||||
if (! $user || ! Hash::check($input['password'], $user->password)) {
|
|
||||||
throw new BizException('密码错误');
|
|
||||||
}
|
|
||||||
|
|
||||||
$user->password = bcrypt($input['new_password']);
|
$user->password = bcrypt($input['new_password']);
|
||||||
$user->save();
|
$user->save();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requestes;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\Validator;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
|
||||||
|
class AdminRoleRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => 'required|string|max:100',
|
||||||
|
'slug' => 'required|alpha_num|max:100',
|
||||||
|
'permission_ids' => 'nullable|array',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages()
|
||||||
|
{
|
||||||
|
$messages = [
|
||||||
|
'name.required' => '请填写角色名称',
|
||||||
|
'name.max' => '角色名称过长,请修改后提交',
|
||||||
|
'slug.required' => '请填写角色编码',
|
||||||
|
'slug.alpha_num' => '角色编码仅能由数字与字母组合',
|
||||||
|
'slug.max' => '角色编码长度过长,请修改后提交',
|
||||||
|
];
|
||||||
|
|
||||||
|
return $messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function failedValidation(Validator $validator)
|
||||||
|
{
|
||||||
|
$error = $validator->errors()->all();
|
||||||
|
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requestes;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\Validator;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
|
||||||
|
class AdminUserRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'username' => 'required|alpha_num|max:100',
|
||||||
|
'password' => 'required|string|min:6|max:32',
|
||||||
|
'name' => 'required|string|max:100',
|
||||||
|
'avatar' => 'nullable|string',
|
||||||
|
'department' => 'nullable|string',
|
||||||
|
'phone' => 'nullable|string',
|
||||||
|
'status' => 'required|integer|min:0',
|
||||||
|
'role_id' => 'required|integer|min:0',
|
||||||
|
'base_ids' => 'nullable|array',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages()
|
||||||
|
{
|
||||||
|
$messages = [
|
||||||
|
'username.required' => '请填写登录用户名',
|
||||||
|
'username.alpha_num' => '用户名只能由字母和数字组成',
|
||||||
|
'username.max' => '用户名最长100位',
|
||||||
|
'password.required' => '请填写登录密码',
|
||||||
|
'password.string'=> '请正确填写密码',
|
||||||
|
'password.min' => '密码长度不能低于6位',
|
||||||
|
'password.max' => '密码长度不能超过32位',
|
||||||
|
'name.required' => '请填写名称',
|
||||||
|
'name.string' =>'请正确填写名称',
|
||||||
|
'name.max' => '名称长度不能超过100位',
|
||||||
|
'status' => '请选择用户状态',
|
||||||
|
'role_id' => "请选择角色"
|
||||||
|
];
|
||||||
|
|
||||||
|
return $messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function failedValidation(Validator $validator)
|
||||||
|
{
|
||||||
|
$error = $validator->errors()->all();
|
||||||
|
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requestes;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\Validator;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
|
||||||
|
class AdminUserUpdateRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'username' => 'required|alpha_num|max:100',
|
||||||
|
'name' => 'required|string|max:100',
|
||||||
|
'avatar' => 'nullable|string',
|
||||||
|
'department' => 'nullable|string',
|
||||||
|
'phone' => 'nullable|string',
|
||||||
|
'status' => 'required|integer|min:0',
|
||||||
|
'role_id' => 'required|integer|min:0',
|
||||||
|
'base_ids' => 'nullable|array',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages()
|
||||||
|
{
|
||||||
|
$messages = [
|
||||||
|
'username.required' => '请填写登录用户名',
|
||||||
|
'username.alpha_num' => '用户名只能由字母和数字组成',
|
||||||
|
'username.max' => '用户名最长100位',
|
||||||
|
'name.required' => '请填写名称',
|
||||||
|
'name.string' =>'请正确填写名称',
|
||||||
|
'name.max' => '名称长度不能超过100位',
|
||||||
|
'status' => '请选择用户状态',
|
||||||
|
'role_id' => "请选择角色"
|
||||||
|
];
|
||||||
|
|
||||||
|
return $messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function failedValidation(Validator $validator)
|
||||||
|
{
|
||||||
|
$error = $validator->errors()->all();
|
||||||
|
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,14 +17,14 @@ class AgriculturalBaseRequest extends FormRequest
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => 'required|string|max:100',
|
'name' => 'required|string|max:100',
|
||||||
'description' => 'string',
|
'description' => 'nullable|string',
|
||||||
'person' => 'required|string|max:100',
|
'person' => 'required|string|max:100',
|
||||||
'crops_ids'=> 'required|array|min:1',
|
'crops_ids'=> 'required|array|min:1',
|
||||||
'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/',
|
'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/',
|
||||||
'workforce' => 'required|integer|min:0',
|
'workforce' => 'required|integer|min:0',
|
||||||
'address' => 'string',
|
'address' => 'nullable|string',
|
||||||
'address_lat' => 'regex:/^\d+(\.\d{1,10})?$/',
|
'address_lat' => 'nullable|regex:/^\d+(\.\d{1,10})?$/',
|
||||||
'address_lng' => 'regex:/^\d+(\.\d{1,10})?$/',
|
'address_lng' => 'nullable|regex:/^\d+(\.\d{1,10})?$/',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requestes;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\Validator;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
|
||||||
|
class RestPasswordRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'password' => 'required|string|min:6|max:32',
|
||||||
|
'password_confirmation' => 'required|same:password',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages()
|
||||||
|
{
|
||||||
|
$messages = [
|
||||||
|
'password.required' => '请填写登录密码',
|
||||||
|
'password.string'=> '请正确填写密码',
|
||||||
|
'password.min' => '密码长度不能低于6位',
|
||||||
|
'password.max' => '密码长度不能超过32位',
|
||||||
|
'password.confirmed' => '两次密码不一致',
|
||||||
|
];
|
||||||
|
|
||||||
|
return $messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function failedValidation(Validator $validator)
|
||||||
|
{
|
||||||
|
$error = $validator->errors()->all();
|
||||||
|
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Peidikeji\Keywords\Http\Resources\KeywordResource;
|
||||||
|
|
||||||
|
class AdminRoleResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'name' => $this->name,
|
||||||
|
'slug'=> $this->slug,
|
||||||
|
'permissions' => $this->whenLoaded('permissions', function () {
|
||||||
|
return $this->permissions->pluck('id');
|
||||||
|
}, ''),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Peidikeji\Keywords\Http\Resources\KeywordResource;
|
||||||
|
|
||||||
|
class AdminUserResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'username' => $this->username,
|
||||||
|
'name' => $this->name,
|
||||||
|
'avatar'=> $this->avatar,
|
||||||
|
'department' => $this->department,
|
||||||
|
'phone' => $this->phone,
|
||||||
|
'status' => $this->status,
|
||||||
|
'is_enable'=> $this->is_enable,
|
||||||
|
'bases' => AgriculturalBaseResource::collection($this->whenloaded('bases')),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\ModelFilters;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use EloquentFilter\ModelFilter;
|
||||||
|
|
||||||
|
class AdminRoleFilter extends ModelFilter
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\ModelFilters;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use EloquentFilter\ModelFilter;
|
||||||
|
|
||||||
|
class AdminUserFilter extends ModelFilter
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use EloquentFilter\Filterable;
|
||||||
|
use Dcat\Admin\Models\Permission as BaseAdminModel;
|
||||||
|
|
||||||
|
class AdminPermission extends BaseAdminModel
|
||||||
|
{
|
||||||
|
use Filterable;
|
||||||
|
|
||||||
|
public function scopeEndPoint($q){
|
||||||
|
return $q->where('slug', 'like', 'endpoint%');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use EloquentFilter\Filterable;
|
||||||
|
use Dcat\Admin\Models\Role as BaseAdminModel;
|
||||||
|
|
||||||
|
class AdminRole extends BaseAdminModel
|
||||||
|
{
|
||||||
|
use Filterable;
|
||||||
|
}
|
||||||
|
|
@ -2,16 +2,17 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Dcat\Admin\Models\Administrator as BaseAdminModel;
|
use EloquentFilter\Filterable;
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
|
use Dcat\Admin\Models\Administrator as BaseAdminModel;
|
||||||
|
|
||||||
class AdminUser extends BaseAdminModel
|
class AdminUser extends BaseAdminModel
|
||||||
{
|
{
|
||||||
use HasApiTokens;
|
use HasApiTokens, Filterable;
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'name',
|
'name',
|
||||||
'usersname',
|
'username',
|
||||||
'password',
|
'password',
|
||||||
'avatar',
|
'avatar',
|
||||||
'department', 'phone', 'status', 'is_enable',
|
'department', 'phone', 'status', 'is_enable',
|
||||||
|
|
@ -20,4 +21,8 @@ class AdminUser extends BaseAdminModel
|
||||||
protected $hidden = [
|
protected $hidden = [
|
||||||
'password', 'remember_token',
|
'password', 'remember_token',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function bases(){
|
||||||
|
return $this->belongsToMany(AgriculturalBase::class, 'admin_user_bases', 'user_id', 'base_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class AdminUserBase extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
}
|
||||||
|
|
@ -2625,7 +2625,7 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://gitea.peidikeji.cn/pdkj/dcat-admin.git",
|
"url": "https://gitea.peidikeji.cn/pdkj/dcat-admin.git",
|
||||||
"reference": "158f3f9b580cffb3f2f0e8cb20a59cf8d48bbaa8"
|
"reference": "66dba4bf19ab9d72deccf7a7e46735f19eb42de6"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"doctrine/dbal": "^2.6|^3.0",
|
"doctrine/dbal": "^2.6|^3.0",
|
||||||
|
|
@ -2684,7 +2684,7 @@
|
||||||
"laravel",
|
"laravel",
|
||||||
"laravel admin"
|
"laravel admin"
|
||||||
],
|
],
|
||||||
"time": "2022-09-23T07:59:03+00:00"
|
"time": "2022-10-14T03:45:10+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpoption/phpoption",
|
"name": "phpoption/phpoption",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('admin_user_bases', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->unsignedBigInteger('user_id');
|
||||||
|
$table->unsignedBigInteger('base_id');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('admin_user_bases');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Dcat\Admin\Models\Permission;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class EndpointPermissionSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$permissions = [
|
||||||
|
'endpoint' =>['name' => '系统权限', 'curd'=>false, 'in_path'=> true, 'children' => [
|
||||||
|
'monitor_data' => ['name' =>'监测数据管理', 'curd' => false, 'children'=> [
|
||||||
|
'weather' =>['name' =>'气象管理', 'curd'=>['index']],
|
||||||
|
'camera' => ['name' =>'智能监控', 'curd'=>['index']],
|
||||||
|
'soil' => ['name' =>'土壤监控', 'curd'=>['index'], 'children'=> ['setting'=>'设置']],
|
||||||
|
'water' => ['name' =>'水质监控', 'curd'=>['index'], 'children'=> ['setting'=>'设置']]
|
||||||
|
]],
|
||||||
|
'base_data' => ['name' => '基础数据管理', 'curd' => false, 'children'=>[
|
||||||
|
'citydata_statistics' => ['name'=>'全市基础数据', 'curd'=> ['index', 'edit']],
|
||||||
|
'agricultural_basic' =>['name'=>'基地数据', 'curd'=>true],
|
||||||
|
'crops_build' => ['name' =>'农业产业结构', 'curd'=>true],
|
||||||
|
'crops_output'=> ['name' =>'产量排行榜','curd'=>true],
|
||||||
|
'crops_flow' => ['name' =>'农产品流向', 'curd'=>true],
|
||||||
|
'crops_price' => ['name' =>'农产品价格走势', 'curd'=>['index'], 'children'=> ['is_enable'=>'自动监测开关']],
|
||||||
|
]],
|
||||||
|
'device_data' => ['name' => '设备管理', 'curd'=>false,'children'=>[
|
||||||
|
'device' => ['name' =>'设备管理', 'curd'=>true],
|
||||||
|
]],
|
||||||
|
'manage'=>['name' =>'系统管理', 'curd'=>false, 'children'=>[
|
||||||
|
'admin_users' => ['name' =>'管理员管理', 'curd'=>true, 'children'=>[
|
||||||
|
'edit_password'=>'修改密码', 'enable'=>'启用/禁用'
|
||||||
|
]],
|
||||||
|
'admin_roles' =>['name'=>'角色管理', 'curd' =>true],
|
||||||
|
'operation_log' => ['name' =>'操作日志', 'curd'=>['index']]
|
||||||
|
]]
|
||||||
|
]]
|
||||||
|
];
|
||||||
|
$this->createPermissionData($permissions);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 插入权限
|
||||||
|
*
|
||||||
|
* @param array $permissions
|
||||||
|
* @param string $key
|
||||||
|
* @param int $pId
|
||||||
|
*/
|
||||||
|
public function createPermissionData(array $permissions, string $key = '', int $pId = 0)
|
||||||
|
{
|
||||||
|
$curdArr = [
|
||||||
|
'index' => '列表',
|
||||||
|
'create' => '新增',
|
||||||
|
'edit' => '修改',
|
||||||
|
'destroy' => '删除',
|
||||||
|
'show' => '详情',
|
||||||
|
];
|
||||||
|
foreach ($permissions as $slug => $permission) {
|
||||||
|
//是否已存在该权限
|
||||||
|
$slugKey = ($key ? $key.'.'.$slug : $slug);
|
||||||
|
|
||||||
|
$pper = Permission::updateOrCreate(['slug' => $slugKey], ['name' => is_string($permission) ? $permission : $permission['name'], 'parent_id' => $pId]);
|
||||||
|
|
||||||
|
if (! is_string($permission)) {
|
||||||
|
if (! isset($permission['children'])) {
|
||||||
|
$permission['children'] = [];
|
||||||
|
}
|
||||||
|
//判断是否默认插入curd权限
|
||||||
|
if (isset($permission['curd']) && $permission['curd']) {
|
||||||
|
if (is_array($permission['curd'])) {
|
||||||
|
$permission['curd'] = array_reverse($permission['curd']);
|
||||||
|
foreach ($permission['curd'] as $value) {
|
||||||
|
$permission['children'] = array_merge([$value => $curdArr[$value]], $permission['children']);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$permission['children'] = array_merge($curdArr, $permission['children']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($permission['children']) > 0) {
|
||||||
|
$_key = ($permission['curd'] !== false || ($permission['in_path'] ?? false)) ? ($key ? $key.'.'.$slug : $slug) : $key;
|
||||||
|
$this->createPermissionData($permission['children'], $_key ?? $slug, $pper->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
|
class PermissionSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
// 请先安装 dcat-admin 扩展: keywords, setting
|
||||||
|
$this->call([
|
||||||
|
AdminPermissionSeeder::class,
|
||||||
|
EndpointPermissionSeeder::class,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -20,11 +20,21 @@ Route::post('auth/login', [AuthController::class, 'login']);
|
||||||
Route::group(['middleware' => 'auth:sanctum'], function () {
|
Route::group(['middleware' => 'auth:sanctum'], function () {
|
||||||
Route::get('keywords-crops', [KeywordController::class, 'crops']); //农作物
|
Route::get('keywords-crops', [KeywordController::class, 'crops']); //农作物
|
||||||
Route::get('keywords-crops-cate', [KeywordController::class, 'cropsCate']); //农作物产业分类
|
Route::get('keywords-crops-cate', [KeywordController::class, 'cropsCate']); //农作物产业分类
|
||||||
|
Route::get('permissions', [AdminPermissionController::class, 'index']);
|
||||||
|
|
||||||
//全市基础数据
|
Route::group(['as'=>'endpoint.'], function (){
|
||||||
Route::get('citydata-statistics', [CityDataController::class, 'statistics']);
|
|
||||||
|
|
||||||
Route::apiResource('agricultural-basic', AgriculturalBaseController::class);
|
//全市基础数据
|
||||||
|
Route::get('citydata-statistics', [CityDataController::class, 'statistics'])->name('citydata_statistics.index');
|
||||||
|
//基地数据
|
||||||
|
Route::apiResource('agricultural-basic', AgriculturalBaseController::class)->names('agricultural_basic');
|
||||||
|
|
||||||
|
/** 系统管理 **/
|
||||||
|
Route::apiResource('admin-users', AdminUserController::class)->names('admin_users');
|
||||||
|
Route::put('admin-users/{admin_user}/enable', [AdminUserController::class, 'endable'])->name('admin_users.enable');
|
||||||
|
Route::put('admin-users/{admin_user}/edit-password', [AdminUserController::class, 'editPassword'])->name('admin_users.edit_password');
|
||||||
|
Route::apiResource('admin-roles', AdminRoleController::class)->names('admin_roles');
|
||||||
|
});
|
||||||
|
|
||||||
Route::prefix('users')->group(function () {
|
Route::prefix('users')->group(function () {
|
||||||
Route::put('reset-password', [UserController::class, 'resetPwd']);
|
Route::put('reset-password', [UserController::class, 'resetPwd']);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue