作者 赵彬吉

UPDATE

<?php
namespace App\Http\Controllers\Bside\Product;
use App\Helper\Arr;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Product\DescribeLogic;
use App\Http\Requests\Bside\product\DescribeRequest;
use App\Rules\Ids;
use Illuminate\Http\Request;
/**
* Class DescribeController
* @package App\Http\Controllers\Bside
* @author zbj
* @date 2023/4/15
*/
class DescribeController extends BaseController
{
public function index(DescribeLogic $logic)
{
$map = [];
if(!empty($this->param['search'])){
$map[] = ['title', 'like', "%{$this->param['search']}%"];
}
$sort = ['id' => 'desc'];
$data = $logic->getList($map, $sort, ['id', 'title', 'describe', 'status', 'created_at']);
return $this->success($data);
}
public function info(Request $request, DescribeLogic $logic){
$request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$data = $logic->getInfo($this->param['id']);
return $this->success(Arr::twoKeepKeys($data, ['id', 'title', 'describe', 'created_at']));
}
public function save(DescribeRequest $request, DescribeLogic $logic)
{
$data = $logic->save($this->param);
return $this->success($data);
}
public function delete(Request $request, DescribeLogic $logic)
{
$request->validate([
'ids'=>['required', new Ids()]
],[
'ids.required' => 'ID不能为空'
]);
$data = $logic->delete($this->param['ids']);
return $this->success($data);
}
}
... ...
... ... @@ -88,6 +88,9 @@ class BaseLogic
public function getInfo($id)
{
$info = $this->getCacheInfo($id);
if(!$info){
$this->fail('数据不存在或者已经删除');
}
return $this->success($info->toArray());
}
... ... @@ -161,8 +164,11 @@ class BaseLogic
$map[] = ['id', 'in', $ids];
$res = $this->formatQuery($map)->delete();
if($res){
if($this->is_cache && !empty($param['id'])){
Cache::forget($this->getInfoCacheKey($param['id']));
if($this->is_cache){
foreach ($ids as $id){
Cache::forget($this->getInfoCacheKey($id));
}
}
return $this->success();
}else{
... ...
... ... @@ -37,7 +37,7 @@ class CategoryLogic extends BaseLogic
public function delete($ids){
$ids= array_filter(Arr::splitFilterToArray($ids), 'intval');
foreach ($ids as $id){
$info = $this->getInfo($id);
$info = $this->getCacheInfo($id);
if(!$info){
continue;
}
... ...
<?php
namespace App\Http\Logic\Bside\Product;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Product\Describe;
/**
* Class DescribeLogic
* @package App\Http\Logic\Bside\Product
* @author zbj
* @date 2023/4/15
*/
class DescribeLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new Describe();
}
public function delete($ids){
$ids= array_filter(Arr::splitFilterToArray($ids), 'intval');
foreach ($ids as $id){
$info = $this->getCacheInfo($id);
if(!$info){
continue;
}
//todo 是否有关联商品
}
return parent::delete($ids);
}
}
... ...
... ... @@ -24,7 +24,7 @@ class KeywordLogic extends BaseLogic
public function delete($ids){
$ids= array_filter(Arr::splitFilterToArray($ids), 'intval');
foreach ($ids as $id){
$info = $this->getInfo($id);
$info = $this->getCacheInfo($id);
if(!$info){
continue;
}
... ...
<?php
namespace App\Http\Requests\Bside\product;
use Illuminate\Foundation\Http\FormRequest;
/**
* Class DescribeRequest
* @package App\Http\Requests\Bside\product
* @author zbj
* @date 2023/4/15
*/
class DescribeRequest 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()
{
return [
'title'=>'required|max:30',
'describe'=>'required',
];
}
public function messages()
{
return [
'title.required' => '请输入描述名称',
'title.max' => '描述名称不能超过30个字符',
'seo_title.required' => '请输入描述内容',
];
}
}
... ...
<?php
namespace App\Models\Product;
use App\Models\Base;
use Illuminate\Database\Eloquent\SoftDeletes;
class Describe extends Base
{
use SoftDeletes;
//设置关联表名
protected $table = 'gl_product_describe';
}
... ...
... ... @@ -52,5 +52,11 @@ Route::group([], function () {
Route::get('attr/info', [\App\Http\Controllers\Bside\Product\AttrController::class, 'info'])->name('product_attr_info');
Route::post('attr/save', [\App\Http\Controllers\Bside\Product\AttrController::class, 'save'])->name('product_attr_save');
Route::any('attr/delete', [\App\Http\Controllers\Bside\Product\AttrController::class, 'delete'])->name('product_attr_delete');
//产品描述
Route::get('describe', [\App\Http\Controllers\Bside\Product\DescribeController::class, 'index'])->name('product_describe');
Route::get('describe/info', [\App\Http\Controllers\Bside\Product\DescribeController::class, 'info'])->name('product_describe_info');
Route::post('describe/save', [\App\Http\Controllers\Bside\Product\DescribeController::class, 'save'])->name('product_describe_save');
Route::any('describe/delete', [\App\Http\Controllers\Bside\Product\DescribeController::class, 'delete'])->name('product_describe_delete');
});
});
... ...