作者 赵彬吉

update

... ... @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Bside\Product;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Product\CategoryLogic;
use App\Http\Requests\Bside\product\CategoryRequest;
use App\Rules\Ids;
use Illuminate\Http\Request;
/**
... ... @@ -46,7 +47,7 @@ class CategoryController extends BaseController
public function delete(Request $request, CategoryLogic $logic)
{
$request->validate([
'ids'=>'required'
'ids'=>['required', new Ids()]
],[
'ids.required' => 'ID不能为空'
]);
... ...
... ... @@ -68,7 +68,7 @@ class BaseLogic
// 数据分页设置
if ($limit) {
$result = $query->simplePaginate();
$result = $query->paginate($limit);
}else{
$result = $query->get();
}
... ... @@ -80,7 +80,7 @@ class BaseLogic
/**
* 详情
* @param $id
* @return
* @return array
* @author zbj
* @date 2023/4/13
*/
... ... @@ -169,13 +169,14 @@ class BaseLogic
/**
* 格式化查询条件
* @param $map
* @param $query
* @return mixed
* @author zbj
* @date 2023/4/13
*/
public function formatQuery($map, $model = '')
public function formatQuery($map, $query = '')
{
$model = $model ?: $this->model;
$model = $query ?: $this->model;
$query = $model->where(function ($query) use ($map) {
foreach ($map as $v) {
if ($v instanceof \Closure) {
... ...
... ... @@ -2,9 +2,16 @@
namespace App\Http\Logic\Bside\Product;
use App\Helper\Arrays;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Product\Category;
/**
* Class CategoryLogic
* @package App\Http\Logic\Bside\Product
* @author zbj
* @date 2023/4/14
*/
class CategoryLogic extends BaseLogic
{
public function __construct()
... ... @@ -13,4 +20,34 @@ class CategoryLogic extends BaseLogic
$this->model = new Category();
}
public function save($param){
if(!empty($param['pid'])){
if(!empty($param['id']) && $param['pid'] == $param['id']){
$this->fail('上级分类不能是本分类');
}
$p_cate = Category::find($param['pid']);
if(!$p_cate){
$this->fail('上级分类不存在');
}
}
return parent::save($param);
}
public function delete($ids){
$ids= array_filter(Arrays::splitFilterToArray($ids), 'intval');
foreach ($ids as $id){
$info = $this->getInfo($id);
if(!$info){
continue;
}
//是否有子分类
if(Category::where('pid', $id)->count()){
$this->fail("分类{$info['title']}存在子分类,不能删除");
}
//todo 是否有对应商品
return parent::delete($ids);
}
}
}
... ...
... ... @@ -2,11 +2,7 @@
namespace App\Http\Requests\Bside\product;
use App\Enums\Common\Demo;
use BenSampo\Enum\Rules\EnumValue;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\ValidationException;
/**
* Class CategoryRequest
... ...
... ... @@ -2,6 +2,7 @@
namespace App\Providers;
use App\Services\PaginatorServer;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
... ... @@ -13,7 +14,10 @@ class AppServiceProvider extends ServiceProvider
*/
public function register()
{
//
//自定义分页
$this->app->bind('Illuminate\Pagination\LengthAwarePaginator',function ($app,$options){
return new PaginatorServer($options['items'], $options['total'], $options['perPage'], $options['currentPage'] , $options['options']);
});
}
/**
... ...
<?php
namespace App\Rules;
use App\Helper\Arrays;
use Illuminate\Contracts\Validation\Rule;
class Ids implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$ids = array_filter(Arrays::splitFilterToArray($value), 'intval');
return boolval($ids);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'ID不能为空';
}
}
... ...
<?php
namespace App\Services;
use Illuminate\Pagination\LengthAwarePaginator;
/**
* 自定义Paginate的分页参数
* Class PaginatorServer
* @package App\Services
* @author zbj
* @date 2023/4/14
*/
class PaginatorServer extends LengthAwarePaginator
{
public function toArray()
{
return [
'list' => $this->items->toArray(),
'total' => $this->total(),
'page' => $this->currentPage(),
'total_page' => $this->lastPage(),
'size' => $this->perPage(),
];
}
}
... ...