You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
6.3 KiB
221 lines
6.3 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Admin;
|
|
use App\Forms\EmptyForm;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\CommonModel;
|
|
use App\Models\Uploads;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Kris\LaravelFormBuilder\FormBuilder;
|
|
use Kris\LaravelFormBuilder\FormBuilderTrait;
|
|
|
|
class CommonController extends Controller
|
|
{
|
|
use FormBuilderTrait;
|
|
|
|
public $guardName = "admin";
|
|
public $urlPrefix;
|
|
public $bladePath;
|
|
public $modelName;
|
|
public $modelClass;
|
|
public $model;
|
|
public $formClass;
|
|
|
|
public function __construct()
|
|
{
|
|
view()->share([
|
|
"urlPrefix" => $this->urlPrefix,
|
|
"bladePath" => $this->bladePath,
|
|
"modelName" => $this->modelName,
|
|
"guardName" => $this->guardName
|
|
]);
|
|
|
|
if ($this->modelClass) {
|
|
$this->model = new $this->modelClass;
|
|
} else {
|
|
$this->model = new CommonModel();
|
|
}
|
|
|
|
if (!$this->formClass) {
|
|
$this->formClass = EmptyForm::class;
|
|
}
|
|
}
|
|
|
|
public function guard()
|
|
{
|
|
return auth()->guard($this->guardName);
|
|
}
|
|
|
|
public function guardName()
|
|
{
|
|
return $this->guardName;
|
|
}
|
|
|
|
public function callback($success = true, $msg = "", $url = "")
|
|
{
|
|
return view("public.callback", ["success" => $success, "msg" => $msg, "url" => $url, "timer" => 3]);
|
|
}
|
|
|
|
public function error($msg, $url = '', $data = false)
|
|
{
|
|
if (request()->ajax()) {
|
|
return $this->ajaxError($msg, $data);
|
|
}
|
|
return $this->callback(false, $msg, $url);
|
|
}
|
|
|
|
public function success($msg, $url = '', $data = false)
|
|
{
|
|
if (request()->ajax()) {
|
|
return $this->ajaxSuccess($msg, $data);
|
|
}
|
|
return $this->callback(true, $msg, $url);
|
|
}
|
|
|
|
public function ajaxResponse($response)
|
|
{
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function ajaxSuccess($msg = "", $data = false)
|
|
{
|
|
$response = [
|
|
"msg" => $msg,
|
|
"status" => 1,
|
|
"data" => $data
|
|
];
|
|
return $this->ajaxResponse($response);
|
|
}
|
|
|
|
public function ajaxError($msg = "", $data = false)
|
|
{
|
|
$response = [
|
|
"msg" => $msg,
|
|
"status" => 0,
|
|
"data" => $data
|
|
];
|
|
return $this->ajaxResponse($response);
|
|
}
|
|
|
|
public function list(Request $request)
|
|
{
|
|
$data = $this->model->paginate(10);
|
|
return view($this->bladePath . ".index", compact("data"));
|
|
}
|
|
|
|
public function create(FormBuilder $formBuilder)
|
|
{
|
|
$form = $formBuilder->create($this->formClass, [
|
|
"method" => "POST",
|
|
"id" => "fm",
|
|
"url" => url($this->urlPrefix . "/store")
|
|
]);
|
|
|
|
return view($this->bladePath . ".create", compact("form"));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
try {
|
|
$data = (new CommonModel())->setTable($this->model->getTable())->filterRequestColumns($request, ["id"]);
|
|
dd($data);
|
|
$model = $this->model->create($data);
|
|
$this->stored($model);
|
|
$url = $request->_previous ? $request->_previous : url($this->urlPrefix);
|
|
return $this->success("新增成功", $url, $model);
|
|
} catch (\Exception $exception) {
|
|
return $this->error("新增失败:" . $exception->getMessage());
|
|
}
|
|
}
|
|
|
|
public function stored($model)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function edit($id = null, Request $request, FormBuilder $formBuilder)
|
|
{
|
|
$vo = $this->model->find($id ?: $request->id);
|
|
|
|
$form = $formBuilder->create($this->formClass, [
|
|
"method" => "POST",
|
|
"id" => "fm",
|
|
"url" => url($this->urlPrefix . "/update/" . $vo->id),
|
|
"class" => "form form-horizontal validate-form",
|
|
"model" => $vo
|
|
]);
|
|
$form->add("_previous", "hidden", ["value" => (url()->previous())]);
|
|
|
|
return view($this->bladePath . ".create", compact("form"));
|
|
}
|
|
|
|
public function update($id = null, Request $request)
|
|
{
|
|
try {
|
|
$data = (new CommonModel())->setTable($this->model->getTable())->filterRequestColumns($request, ["id"]);
|
|
$model = $this->model->find($id ?: $request->id);
|
|
$model->update($data);
|
|
$this->updated($model);
|
|
$url = $request->_previous ? $request->_previous : url($this->urlPrefix);
|
|
return $this->success("修改成功", $url, $model);
|
|
} catch (\Exception $exception) {
|
|
return $this->error("修改失败:" . $exception->getMessage());
|
|
}
|
|
}
|
|
|
|
public function updated($model)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function delete(Request $request)
|
|
{
|
|
try {
|
|
$model = $this->model->find($request->id);
|
|
$model->delete();
|
|
$this->deleted($model);
|
|
return $this->success("删除成功");
|
|
} catch (\Exception $exception) {
|
|
return $this->error("删除失败:" . $exception->getMessage());
|
|
}
|
|
}
|
|
|
|
public function deleted($model)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function upload(Request $request)
|
|
{
|
|
$file = $request->file("file");
|
|
$original_name = $file->getClientOriginalName();
|
|
$extension = last(explode(".", $original_name));
|
|
if (!in_array($extension, ["mp4","jpg", "jpeg", "gif", "png", "bmp", "pdf", "ppt", "pptx", "doc", "docx", "xls", "xlsx", "zip", "rar"])) {
|
|
return response('不正确的文件格式', 403);
|
|
}
|
|
$save_folder = $request->folder ? $request->folder : "public";
|
|
|
|
if (!is_dir(Storage::path($save_folder))) {
|
|
Storage::makeDirectory($save_folder);
|
|
}
|
|
|
|
$name = uniqid() . "." . $extension;
|
|
$store_result = $file->storeAs($save_folder, $name);
|
|
|
|
$upload = new Uploads();
|
|
$upload->original_name = $original_name;
|
|
$upload->folder = $save_folder;
|
|
$upload->name = $name;
|
|
$upload->extension = $extension;
|
|
$upload->creator_type = get_class(Auth::guard("admin")->user());
|
|
$upload->creator_id = Auth::guard("admin")->id();
|
|
$upload->size = Storage::size($save_folder . "/" . $name);
|
|
$upload->save();
|
|
return $this->ajaxResponse($upload);
|
|
}
|
|
}
|