作者 lyh

gx

... ... @@ -14,10 +14,30 @@ use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Product\DetailLogic;
use App\Models\Product\Column;
use App\Models\Product\Detail;
use Illuminate\Support\Facades\DB;
class DetailController extends BaseController
{
/**
* @remark :获取当前产品的描述详情
* @name :getDetail
* @author :lyh
* @method :post
* @time :2024/11/13 9:53
*/
public function getDetail(Detail $detail){
$this->request->validate([
'product_id'=>'required',
'column_id'=>'required'
],[
'product_id.required' => '产品id不能为空',
'column_id.required' => '栏目id不能为空',
]);
$data = $detail->list($this->map,'id',['*'],'asc');
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取产品描述页所有详情
* @name :getType
* @author :lyh
... ... @@ -71,7 +91,7 @@ class DetailController extends BaseController
* @method :post
* @time :2024/11/12 16:24
*/
public function saveDetail(){
public function saveDetail(DetailLogic $logic){
$this->request->validate([
'product_id'=>'required',
'data'=>'required',
... ... @@ -79,7 +99,56 @@ class DetailController extends BaseController
'product_id.required' => '产品id不能为空',
'data.required' => 'data不能为空',
]);
$data = $logic->saveDetail();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :删除切换栏
* @name :delColumn
* @author :lyh
* @method :post
* @time :2024/11/13 10:40
*/
public function delColumn(Column $column,Detail $detail){
$this->request->validate([
'id'=>'required',
],[
'id.required' => 'id不能为空',
]);
$info = $column->read($this->map);
if($info === false){
$this->fail('当前数据不存在或已被删除');
}
if($info['id'] == 1){
$this->fail('当前默认模块不允许删除');
}
DB::beginTransaction();
try {
$column->del(['id'=>$this->param['id']]);
$detail->del(['product_id'=>$info['product_id'],'column_id'=>$info['column_id']]);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('删除失败,请联系管理员');
}
$this->response('success');
}
/***
* @remark :删除模块
* @name :delDetail
* @author :lyh
* @method :post
* @time :2024/11/13 10:24
*/
public function delDetail(Detail $detail){
$this->request->validate([
'id'=>'required',
],[
'id.required' => 'id不能为空',
]);
$detail->del($this->map);
$this->response('success');
}
}
... ...
... ... @@ -43,24 +43,36 @@ class DetailLogic extends BaseLogic
return $this->success(['id'=>$id]);
}
/**
* @remark :保存数据
* @name :saveDetail
* @author :lyh
* @method :post
* @time :2024/11/13 9:30
*/
public function saveDetail(){
foreach ($this->param['data'] as $k => $data){
$i = 1;
$save_data = [];
foreach ($data as $key => $v){
$save_data[] = [
'sort'=>$i,
'column_id'=>$v['column_id'],
'product_id'=>$this->param['product_id'],
'title'=>$v['title'] ?? '',
'content'=>json_encode($v['content'] ?? []),
'css'=>json_encode($v['css'] ?? []),
'created_at'=>date('Y-m-d H:i:s'),
'updated_at'=>date('Y-m-d H:i:s')
];
$i++;
try {
foreach ($this->param['data'] as $data){
foreach ($data as $v){
$save_data = [
'sort'=>$v['sort'],
'column_id'=>$v['column_id'],
'product_id'=>$this->param['product_id'],
'text_type'=>$v['text_type'],
'title'=>$v['title'] ?? '',
'content'=>json_encode($v['content'] ?? []),
'css'=>json_encode($v['css'] ?? []),
];
if(isset($v['id']) && !empty($v['id'])){
$this->edit($save_data,['id'=>$v['id']]);
}else{
$this->model->add($save_data);
}
}
}
$this->model->insert($save_data);
}catch (\Exception $e){
$this->fail('保存失败,请联系管理员.错误:'.$e->getMessage());
}
$this->success(['product_id'=>$this->param['product_id']]);
}
}
... ...
... ... @@ -498,6 +498,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::prefix('all_project')->group(function () {
Route::any('/', [Aside\Project\AllProjectController::class, 'lists'])->name('admin.all_project_lists');
});
});
//无需登录验证的路由组
... ...
... ... @@ -300,6 +300,14 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('extend/save', [\App\Http\Controllers\Bside\Product\ExtendController::class, 'save'])->name('product_extend_save');
Route::any('extend/del', [\App\Http\Controllers\Bside\Product\ExtendController::class, 'del'])->name('product_extend_del');
Route::any('extend/search_filed', [\App\Http\Controllers\Bside\Product\ExtendController::class, 'search_filed'])->name('product_extend_search_filed');
//产品描述
Route::any('detail/getColumn', [\App\Http\Controllers\Bside\Product\DetailController::class, 'getColumn'])->name('product_detail_getColumn');
Route::any('detail/getDetail', [\App\Http\Controllers\Bside\Product\DetailController::class, 'getDetail'])->name('product_detail_getDetail');
Route::any('detail/getType', [\App\Http\Controllers\Bside\Product\DetailController::class, 'getType'])->name('product_detail_getType');
Route::any('detail/saveColumn', [\App\Http\Controllers\Bside\Product\DetailController::class, 'saveColumn'])->name('product_detail_saveColumn');
Route::any('detail/saveDetail', [\App\Http\Controllers\Bside\Product\DetailController::class, 'saveDetail'])->name('product_detail_saveDetail');
Route::any('detail/delDetail', [\App\Http\Controllers\Bside\Product\DetailController::class, 'delDetail'])->name('product_detail_delDetail');
Route::any('detail/delColumn', [\App\Http\Controllers\Bside\Product\DetailController::class, 'delColumn'])->name('product_detail_delColumn');
});
... ...