DetailController.php 4.2 KB
<?php
/**
 * @remark :
 * @name   :DetailController.php
 * @author :lyh
 * @method :post
 * @time   :2024/11/12 14:55
 */

namespace App\Http\Controllers\Bside\Product;

use App\Enums\Common\Code;
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,'sort',['*'],'asc');
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :获取产品描述页所有详情
     * @name   :getType
     * @author :lyh
     * @method :post
     * @time   :2024/11/12 14:57
     */
    public function getType(Detail $detail){
        $data = [
            'text_type' => $detail->text_type(),
            'line_two_type' => $detail->line_two_type(),
            'image_two_type' => $detail->image_two_type(),
            'three_type' => $detail->three_type(),
            'image_three_type' => $detail->image_three_type(),
        ];
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :获取产品描述栏目
     * @name   :getColumn
     * @author :lyh
     * @method :post
     * @time   :2024/11/12 15:07
     */
    public function getColumn(Column $column){
        $data = $column->list($this->map,'id',['*'],'asc');
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :保存切换栏
     * @name   :saveColumn
     * @author :lyh
     * @method :post
     * @time   :2024/11/12 15:13
     */
    public function saveColumn(DetailLogic $logic){
        $this->request->validate([
            'column_name'=>'required'
        ],[
            'column_name.required' => '栏目名称不能为空'
        ]);
        $data = $logic->saveColumn();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :保存数据
     * @name   :saveDetail
     * @author :lyh
     * @method :post
     * @time   :2024/11/12 16:24
     */
    public function saveDetail(DetailLogic $logic){
        $this->request->validate([
            'product_id'=>'required',
            'data'=>'required',
        ],[
            '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(['column_id'=>$info['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');
    }
}