作者 邓超

xd

... ... @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Logic\Bside\CustomLogic;
use App\Http\Requests\Bside\Custom\CustomRequest;
use App\Models\BCustom;
/**
... ... @@ -17,41 +19,6 @@ class CustomController extends BaseController
{
/**
* 验证规则
* @var array[]
*/
private $verify = [
'role' => [
'name' => ['required','max:100'],
'title' => ['required','max:200'],
'keywords' => ['required','max:200'],
'description' => ['required','max:250'],
// 'html' => ['required'],
'url' => ['required','max:200'],
'status' => ['required','in:0,1'],
],
'message' => [
'name.required' => '名称必须',
'name.max' => '名称不能超过100个字符',
'title.required' => '网页标题必须',
'title.max' => '网页标题不能超过200个字符',
'keywords.required' => '网页关键字必须',
'keywords.max' => '网页关键字不能超过200个字符',
'description.required' => '网页描述必须',
'description.max' => '网页描述不能超过250个字符',
'url.required' => '链接必须',
'url.max' => '链接不能超过200个字符',
'status.required' => '状态选择错误',
'status.in' => '状态必须是显示/隐藏'
],
'attr' => [
]
];
/**
* 列表数据
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
... ... @@ -64,40 +31,18 @@ class CustomController extends BaseController
$limit = intval($this->param['limit']??20);
$lists = BCustom::_all($this->user['project_id'],$limit)->toArray();
$lists = CustomLogic::instance()->getList(
[],
[],
['id','name','title','status','url','keywords','description','created_at','updated_at'],
$limit
);
return $this->success($lists);
}
/**
* 创建数据
* @author:dc
* @time 2023/5/8 16:39
*/
public function create(){
return $this->save();
}
/**
* 修改
* @return \Illuminate\Http\JsonResponse
* @throws \Illuminate\Validation\ValidationException
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author:dc
* @time 2023/5/8 17:06
*/
public function update(){
$this->verify['role']['id'] = ['required','integer','gt:0'];
$this->verify['message']['id.gt'] = $this->verify['message']['id.integer'] = $this->verify['message']['id.required'] = '编辑导航数据不存在';
return $this->save();
}
/**
* 新增修改
* @return \Illuminate\Http\JsonResponse
... ... @@ -107,17 +52,9 @@ class CustomController extends BaseController
* @author:dc
* @time 2023/5/8 17:06
*/
private function save(){
$data = $this->validate(request() ,$this->verify['role'],$this->verify['message']);
public function save(CustomRequest $request){
// 保存
$id = BCustom::_save($this->user['project_id'],$data,$data['id']??0);
if($id===-1){
return $this->response('数据不存在',Code::SYSTEM_ERROR);
}
return $this->success(BCustom::_find($this->user['project_id'],$id,true));
return $this->success(CustomLogic::instance()->save($request->validated()));
}
... ... @@ -127,18 +64,11 @@ class CustomController extends BaseController
* @author:dc
* @time 2023/5/9 9:20
*/
public function delete(){
$id = $this->param['id']??0;
$data = BCustom::_find($this->user['project_id'],$id);
if(empty($data)){
return $this->response('数据不存在',Code::SYSTEM_ERROR);
}
public function delete(CustomRequest $request){
CustomLogic::instance()->delete($request->validated()['id']);
if($data->delete()){
return $this->response('删除成功',Code::SUCCESS);
}
return $this->response('删除成功');
}
... ...
<?php
namespace App\Http\Logic\Bside;
use App\Helper\Arr;
use App\Models\BCustom;
use App\Models\Inquiry;
use App\Models\RouteMap;
/**
* 自定义页面
* @author:dc
* @time 2023/5/12 9:47
* Class CustomLogic
* @package App\Http\Logic\Bside
*/
class CustomLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new BCustom();
}
/**
* @param $param
* @return array
* @throws \App\Exceptions\AsideGlobalException
* @throws \App\Exceptions\BsideGlobalException
* @author:dc
* @time 2023/5/12 9:54
*/
public function save($param)
{
$id = parent::save($param);
$data = $this->getInfo($id['id']);
try {
RouteMap::setRoute($data['url'],RouteMap::SOURCE_CUSTOM,$data['id'],$this->user['project_id']);
}catch (\Throwable $e){
}
return $data;
}
/**
* 删除
* @param $ids
* @param array $map
* @return array|void
* @author:dc
* @time 2023/5/12 9:58
*/
public function delete($ids, $map = [])
{
parent::delete($ids, $map); // TODO: Change the autogenerated stub
// 删除路由
RouteMap::delRoute(RouteMap::SOURCE_CUSTOM,$ids,$this->user['project_id']);
}
}
... ...
<?php
namespace App\Http\Requests\Bside\Custom;
use Illuminate\Foundation\Http\FormRequest;
/**
* @author:dc
* @time 2023/5/12 9:45
* Class CustomRequest
* @package App\Http\Requests\Bside\Custom
*/
class CustomRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rule = [
'name' => ['required','max:100'],
'title' => ['required','max:200'],
'keywords' => ['required','max:200'],
'description' => ['required','max:250'],
// 'html' => ['required'],
'url' => ['required','max:200'],
'status' => ['required','in:0,1'],
];
// 修改
if($this->is('b/custom/update')){
$rule['id'] = ['required','integer'];
}
// 删除
if($this->is('b/custom/delete')){
$rule = ['id' => ['required','integer']];
}
return $rule;
}
public function messages()
{
return [
'id.required' => '数据不存在',
'id.integer' => '数据不存在',
'name.required' => '名称必须',
'name.max' => '名称不能超过100个字符',
'title.required' => '网页标题必须',
'title.max' => '网页标题不能超过200个字符',
'keywords.required' => '网页关键字必须',
'keywords.max' => '网页关键字不能超过200个字符',
'description.required' => '网页描述必须',
'description.max' => '网页描述不能超过250个字符',
'url.required' => '链接必须',
'url.max' => '链接不能超过200个字符',
'status.required' => '状态选择错误',
'status.in' => '状态必须是显示/隐藏'
];
}
}
... ...
... ... @@ -240,11 +240,12 @@ Route::middleware(['bloginauth'])->group(function () {
// 自定义页面,专题页
Route::prefix('custom')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\CustomController::class, 'index'])->name('bside_custom');
Route::post('/create', [\App\Http\Controllers\Bside\CustomController::class, 'create'])->name('bside_custom_create');
Route::post('/update', [\App\Http\Controllers\Bside\CustomController::class, 'update'])->name('bside_custom_update');
Route::post('/create', [\App\Http\Controllers\Bside\CustomController::class, 'save'])->name('bside_custom_create');
Route::post('/update', [\App\Http\Controllers\Bside\CustomController::class, 'save'])->name('bside_custom_update');
Route::delete('/delete', [\App\Http\Controllers\Bside\CustomController::class, 'delete'])->name('bside_custom_delete');
Route::any('/html/{id}', [\App\Http\Controllers\Bside\CustomController::class, 'html'])->where('id','\d+')->name('bside_custom_delete');
});
// 导航栏编辑
Route::prefix('nav')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav');
... ...