添加管理员接口-差禁用启用、修改密码
parent
56d5dd339a
commit
b100953526
|
|
@ -0,0 +1,85 @@
|
|||
<?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;
|
||||
|
||||
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();
|
||||
//添加基地信息
|
||||
$user = AdminUser::create($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, AdminUserRequest $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){
|
||||
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){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<?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',
|
||||
'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' => '请选择用户状态',
|
||||
];
|
||||
|
||||
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 [
|
||||
'name' => 'required|string|max:100',
|
||||
'description' => 'string',
|
||||
'description' => 'nullable|string',
|
||||
'person' => 'required|string|max:100',
|
||||
'crops_ids'=> 'required|array|min:1',
|
||||
'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/',
|
||||
'workforce' => 'required|integer|min:0',
|
||||
'address' => 'string',
|
||||
'address_lat' => 'regex:/^\d+(\.\d{1,10})?$/',
|
||||
'address_lng' => 'regex:/^\d+(\.\d{1,10})?$/',
|
||||
'address' => 'nullable|string',
|
||||
'address_lat' => 'nullable|regex:/^\d+(\.\d{1,10})?$/',
|
||||
'address_lng' => 'nullable|regex:/^\d+(\.\d{1,10})?$/',
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
<?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,
|
||||
'name' => $this->name,
|
||||
'avatar'=> $this->avatar,
|
||||
'department' => $this->department,
|
||||
'phone' => $this->phone,
|
||||
'status' => $this->status,
|
||||
'is_enable'=> $this->is_enable,
|
||||
'bases' => AgriculturalBaseResource::collection($this->whenload('bases')),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace App\ModelFilters;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use EloquentFilter\ModelFilter;
|
||||
|
||||
class AdminUserFilter extends ModelFilter
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -2,12 +2,13 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use Dcat\Admin\Models\Administrator as BaseAdminModel;
|
||||
use EloquentFilter\Filterable;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
use Dcat\Admin\Models\Administrator as BaseAdminModel;
|
||||
|
||||
class AdminUser extends BaseAdminModel
|
||||
{
|
||||
use HasApiTokens;
|
||||
use HasApiTokens, Filterable;
|
||||
|
||||
protected $fillable = [
|
||||
'name',
|
||||
|
|
@ -20,4 +21,8 @@ class AdminUser extends BaseAdminModel
|
|||
protected $hidden = [
|
||||
'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;
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
};
|
||||
|
|
@ -23,9 +23,13 @@ Route::group(['middleware' => 'auth:sanctum'], function () {
|
|||
|
||||
//全市基础数据
|
||||
Route::get('citydata-statistics', [CityDataController::class, 'statistics']);
|
||||
|
||||
//基地数据
|
||||
Route::apiResource('agricultural-basic', AgriculturalBaseController::class);
|
||||
|
||||
|
||||
/** 系统管理 **/
|
||||
Route::apiResource('admin-users', AdminUserController::class);
|
||||
|
||||
Route::prefix('users')->group(function () {
|
||||
Route::put('reset-password', [UserController::class, 'resetPwd']);
|
||||
Route::delete('logout', [UserController::class, 'logout']);
|
||||
|
|
|
|||
Loading…
Reference in New Issue