作者 lyh

Merge branch 'develop' into dev

... ... @@ -4,8 +4,6 @@ namespace App\Http\Controllers\Aside;
use App\Enums\Common\Code;
use App\Http\Controllers\Controller;
use App\Http\Requests\Aside\Template\TemplateRequest;
use App\Http\Requests\Scene;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Exceptions\HttpResponseException;
... ... @@ -159,17 +157,6 @@ class BaseController extends Controller
}
/**
* 验证
* @param $c
* @param $scene
* @return array
* @author:dc
* @time 2023/5/11 14:56
*/
protected final function verify($c,$scene=null){
return app($c)->setScene($scene?:Scene::$CREATE)->validated();
}
... ...
... ... @@ -5,7 +5,6 @@ namespace App\Http\Controllers\Aside;
use App\Enums\Common\Code;
use App\Http\Logic\Aside\Template\TemplateLogic;
use App\Http\Requests\Aside\Template\TemplateRequest;
use App\Http\Requests\Scene;
use App\Models\Template\ATemplate;
use App\Models\Template\ATemplateHtml;
use Illuminate\Validation\Rule;
... ... @@ -39,8 +38,8 @@ class TemplateController extends BaseController
* @author:dc
* @time 2023/5/4 16:19
*/
public function edit(){
$this->save(Scene::$UPDATE);
public function edit(TemplateRequest $request){
$this->save($request->validated());
}
/**
... ... @@ -48,8 +47,8 @@ class TemplateController extends BaseController
* @author:dc
* @time 2023/5/5 9:30
*/
public function insert(){
$this->save(Scene::$CREATE);
public function insert(TemplateRequest $request){
$this->save($request->validated());
}
... ... @@ -62,11 +61,7 @@ class TemplateController extends BaseController
* @author:dc
* @time 2023/5/11 10:13
*/
private function save($scene){
$data = $this->verify(TemplateRequest::class,$scene);
private function save($data){
TemplateLogic::instance()->save($data);
... ...
... ... @@ -120,9 +120,10 @@ class BlogController extends BaseController
*/
public function status(BlogLogic $blogLogic){
$this->request->validate([
'id'=>['required'],
'id'=>['required','array'],
],[
'id.required' => 'ID不能为空',
'id.array' => 'ID为数组',
]);
$blogLogic->blog_status();
//TODO::写入日志
... ...
... ... @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Logic\Bside\Nav\NavLogic;
use App\Http\Requests\Bside\Nav\NavRequest;
use App\Models\BNav;
/**
... ... @@ -16,42 +18,6 @@ use App\Models\BNav;
class NavController extends BaseController
{
/**
* 验证规则
* @var array[]
*/
private $verify = [
'role' => [
'pid' => ['required','integer','gte:0'],
'name' => ['required','max:100'],
'location' => ['required','in:header,footer'],
'url' => ['required','max:200'],
'status' => ['required','in:0,1'],
'target' => ['required','in:0,1'],
'sort' => ['required','integer','gte:0']
],
'message' => [
'pid.required' => '上级选择错误',
'pid.gte' => '上级选择错误',
'pid.integer' => '上级选择错误',
'name.required' => '名称必须',
'name.max' => '名称不能超过100个字符',
'location.required' => '位置选择错误',
'location.in' => '位置选择错误',
'url.required' => '链接必须',
'url.max' => '链接不能超过200个字符',
'status.required' => '状态选择错误',
'status.in' => '状态必须是显示/隐藏',
'target.required' => '打开方式必须',
'target.in' => '打开方式选择错误',
'sort.required' => '排序必须',
'sort.integer' => '排序必须是一个数字',
'sort.gte' => '排序必须大于等于0',
],
'attr' => [
]
];
/**
* 列表数据
... ... @@ -62,46 +28,13 @@ class NavController extends BaseController
*/
public function index(){
$isTree = $this->param['tree']??false;
// 显示位置
$location = $this->param['location']??'';
$lists = BNav::_all($this->user['project_id'],$location)->toArray();
if($isTree){
$lists = list_to_tree($lists);
}
return $this->success($lists);
return $this->success(NavLogic::instance()->list());
}
/**
* 创建导航栏
* @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();
}
/**
* 新增修改
... ... @@ -112,33 +45,11 @@ class NavController extends BaseController
* @author:dc
* @time 2023/5/8 17:06
*/
private function save(){
$data = $this->validate(request() ,$this->verify['role'],$this->verify['message']);
if($data['pid']){
// 验证是否存在上级
$all = BNav::_all($this->user['project_id'],$data['location']);
if(!$all->where('id',$data['pid'])->count()){
return $this->response('上级栏目不存在',Code::SYSTEM_ERROR);
}
// 上级不允许是自己的下级
if(!empty($data['id'])){
$all = list_to_tree($all->toArray(),$data['id']);
$all = tree_to_list($all);
if(in_array($data['pid'],array_column($all,'id'))){
return $this->response('上级栏目不允许为本身的下级',Code::SYSTEM_ERROR);
}
}
}
// 保存
$id = BNav::_save($this->user['project_id'],$data,$data['id']??0);
if($id===-1){
return $this->response('导航菜单不存在',Code::SYSTEM_ERROR);
}
return $this->success(BNav::_find($this->user['project_id'],$id,true));
public function save(NavRequest $request){
$data = $request->validated();
return $this->success(NavLogic::instance()->save($data));
}
... ... @@ -148,23 +59,14 @@ class NavController extends BaseController
* @author:dc
* @time 2023/5/9 9:20
*/
public function delete(){
$id = $this->param['id']??0;
$data = BNav::_find($this->user['project_id'],$id);
if(empty($data)){
return $this->response('导航菜单不存在',Code::SYSTEM_ERROR);
}
public function delete(NavRequest $request){
if(BNav::isChild($data['id'],$this->user['project_id'])){
return $this->response('存在下级无法删除',Code::SYSTEM_ERROR);
}
$id = $request->validated()['id'];
NavLogic::instance()->delete($id);
if($data->delete()){
return $this->response('删除成功',Code::SUCCESS);
}
return $this->response('删除成功');
}
... ...
... ... @@ -118,9 +118,10 @@ class NewsController extends BaseController
*/
public function status(NewsLogic $newsLogic){
$this->request->validate([
'id'=>['required'],
'id'=>['required','array'],
],[
'id.required' => 'ID不能为空',
'id.array' => 'ID为数组',
]);
$newsLogic->news_status();
//TODO::写入日志
... ...
<?php
namespace App\Http\Logic\Bside;
namespace App\Http\Logic\Bside\Nav;
use App\Helper\Arr;
use App\Enums\Common\Code;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\BNav;
use App\Models\Inquiry;
/**
* @author:dc
... ... @@ -21,6 +23,52 @@ class NavLogic extends BaseLogic
$this->model = new BNav();
}
/**
* @return array
* @author:dc
* @time 2023/5/12 9:23
*/
public function list(){
$where = [];
if(!empty($this->param['location'])){
$where[] = ['location','=',$this->param['location']];
}
$lists = $this->getList($where,['sort'=>'asc'],['*'],false);
$isTree = $this->param['tree']??false;
if($isTree){
$lists = list_to_tree($lists);
}
return $lists;
}
public function save($data)
{
if($data['pid']){
// 验证是否存在上级
$all = BNav::_all($this->user['project_id'],$data['location']);
if(!$all->where('id',$data['pid'])->count()){
$this->fail('上级栏目不存在');
}
// 上级不允许是自己的下级
if(!empty($data['id'])){
$all = list_to_tree($all->toArray(),$data['id']);
$all = tree_to_list($all);
if(in_array($data['pid'],array_column($all,'id'))){
$this->fail('上级栏目不允许为本身的下级');
}
}
}
// 保存
$id = parent::save($data);
return $this->getInfo($id['id']);
}
/**
* @param $ids
... ... @@ -33,7 +81,7 @@ class NavLogic extends BaseLogic
public function delete($ids,$map = [])
{
if(BNav::isChild($ids,$this->user['project_id'])){
$this->fail('存在下级无法删除','B_NAV_DELETE_CHILD');
$this->fail('存在下级无法删除');
}
return parent::delete($ids,$map); // TODO: Change the autogenerated stub
... ...
... ... @@ -2,7 +2,6 @@
namespace App\Http\Requests\Aside\Template;
use App\Http\Requests\Scene;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
... ... @@ -14,7 +13,6 @@ use Illuminate\Validation\Rule;
*/
class TemplateRequest extends FormRequest
{
// use Scene;
/**
* Determine if the user is authorized to make this request.
... ... @@ -44,9 +42,9 @@ class TemplateRequest extends FormRequest
];
// 更新场景
// if(!$this->isScene(Scene::$CREATE)){
// unset($rule['id']);
// }
if(!$this->is('a/template/insert')){
unset($rule['id']);
}
return $rule;
}
... ...
... ... @@ -2,7 +2,6 @@
namespace App\Http\Requests\Bside\Nav;
use App\Http\Requests\Scene;
use Illuminate\Foundation\Http\FormRequest;
/**
... ... @@ -14,7 +13,6 @@ use Illuminate\Foundation\Http\FormRequest;
*/
class NavRequest extends FormRequest
{
use Scene;
/**
* Determine if the user is authorized to make this request.
... ... @@ -44,12 +42,12 @@ class NavRequest extends FormRequest
];
// 修改
if($this->isScene(static::$UPDATE)){
if($this->is('b/nav/update')){
$rule['id'] = ['required','integer'];
}
// 删除
if($this->isScene(static::$DELETE)){
if($this->is('b/nav/delete')){
$rule = ['id' => ['required','integer']];
}
... ... @@ -59,8 +57,8 @@ class NavRequest extends FormRequest
public function messages()
{
return [
'id.required' => '编辑导航数据不存在',
'id.integer' => '编辑导航数据不存在',
'id.required' => '数据不存在',
'id.integer' => '数据不存在',
'pid.required' => '上级选择错误',
'pid.gte' => '上级选择错误',
'pid.integer' => '上级选择错误',
... ...
<?php
namespace App\Http\Requests;
/**
* @author:dc
* @time 2023/5/11 14:49
* Class Scene
* @package App\Http\Requests
*/
trait Scene {
/**
* 更新场景
*/
static $UPDATE = 1;
/**
* 创建场景
*/
static $CREATE = 0;
/**
* 删除场景
*/
static $DELETE = -1;
private $scene;
/**
* @param $scene
* @return $this
* @author:dc
* @time 2023/5/11 17:14
*/
public function setScene($scene){
var_dump($scene);
$this->scene = $scene;
return $this;
}
/**
* @return mixed
*/
public function getScene()
{
return $this->scene;
}
/**
* @param $scene
* @return bool
* @author:dc
* @time 2023/5/11 17:14
*/
public function isScene($scene){
return $this->scene === $scene;
}
}
... ... @@ -248,8 +248,8 @@ Route::middleware(['bloginauth'])->group(function () {
// 导航栏编辑
Route::prefix('nav')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav');
Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'create'])->name('bside_nav_create');
Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'update'])->name('bside_nav_update');
Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'save'])->name('bside_nav_create');
Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'save'])->name('bside_nav_update');
Route::delete('/delete', [\App\Http\Controllers\Bside\NavController::class, 'delete'])->name('bside_nav_delete');
});
... ...