作者 赵彬吉

update

... ... @@ -16,11 +16,15 @@ class BaseLogic
protected $requestAll;
protected $user;
protected $is_cache = true; //是否缓存数据
public function __construct()
{
$this->requestAll = request()->all();
$this->user = Cache::get(request()->header('token'));
}
/**
... ... @@ -57,6 +61,7 @@ class BaseLogic
*/
public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20)
{
$map[] = ['project_id' => $this->user['project_id']];
// 闭包查询条件格式化
$query = $this->formatQuery($map);
... ... @@ -112,6 +117,9 @@ class BaseLogic
}else{
$info = $this->model->find($id);
}
if($info && $info['project_id'] != $this->user['project_id']) {
$info = null;
}
return $info;
}
... ... @@ -162,6 +170,8 @@ class BaseLogic
$this->fail('ID不能为空');
}
$map[] = ['id', 'in', $ids];
$map[] = ['project_id' => $this->user['project_id']];
$res = $this->formatQuery($map)->delete();
if($res){
... ...
... ... @@ -25,6 +25,9 @@ class AttrLogic extends BaseLogic
public function getInfo($id){
$info = parent::getCacheInfo($id);
if(!$info){
$this->fail('数据不存在或者已经删除');
}
$info->values;
return $this->success($info->toArray());
}
... ...
... ... @@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\Product;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Product\Category;
use App\Models\Product\Product;
/**
* Class CategoryLogic
... ... @@ -45,8 +46,10 @@ class CategoryLogic extends BaseLogic
if(Category::where('pid', $id)->count()){
$this->fail("分类{$info['title']}存在子分类,不能删除");
}
//todo 是否有对应商品
//是否有对应商品
if(Product::whereRaw("FIND_IN_SET({$id},`category_id`)")->count()){
$this->fail("分类{$info['title']}存在产品,不能删除");
}
}
return parent::delete($ids);
}
... ...
... ... @@ -4,6 +4,7 @@ namespace App\Http\Logic\Bside\Product;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Product\Product;
use App\Models\RouteMap;
use App\Models\Product\Keyword;
use Illuminate\Support\Facades\DB;
... ... @@ -28,7 +29,7 @@ class KeywordLogic extends BaseLogic
try {
$res = parent::save($param);
//路由映射
RouteMap::setRoute($param['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $res['id'], $param['project_id']);
RouteMap::setRoute($param['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $res['id'], $this->user['project_id']);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
... ... @@ -39,17 +40,22 @@ class KeywordLogic extends BaseLogic
public function delete($ids){
$ids= array_filter(Arr::splitFilterToArray($ids), 'intval');
foreach ($ids as $id){
$info = $this->getCacheInfo($id);
if(!$info){
continue;
}
//todo 是否有关联商品
DB::beginTransaction();
try {
parent::delete($ids);
//todo 删除路由映射 事务
foreach ($ids as $id){
//删除路由映射
RouteMap::delRoute(RouteMap::SOURCE_PRODUCT_KEYWORD, $id, $this->user['project_id']);
}
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('删除失败');
}
return parent::delete($ids);
return $this->success();
}
}
... ...
... ... @@ -2,6 +2,7 @@
namespace App\Http\Logic\Bside\Product;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Product\Product;
use App\Models\RouteMap;
... ... @@ -29,7 +30,7 @@ class ProductLogic extends BaseLogic
unset($data['route']);
$res = parent::save($data);
//路由映射
RouteMap::setRoute($param['route'], RouteMap::SOURCE_PRODUCT, $res['id'], $param['project_id']);
RouteMap::setRoute($param['route'], RouteMap::SOURCE_PRODUCT, $res['id'], $this->user['project_id']);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
... ... @@ -37,4 +38,25 @@ class ProductLogic extends BaseLogic
}
return $this->success();
}
public function delete($ids){
$ids= array_filter(Arr::splitFilterToArray($ids), 'intval');
DB::beginTransaction();
try {
parent::delete($ids);
foreach ($ids as $id){
//删除路由映射
RouteMap::delRoute(RouteMap::SOURCE_PRODUCT, $id, $this->user['project_id']);
}
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('删除失败');
}
return $this->success();
}
}
... ...
... ... @@ -145,7 +145,7 @@ class RouteMap extends Model
* @author zbj
* @date 2023/4/17
*/
public function delRoute($source, $source_id, $project_id){
public static function delRoute($source, $source_id, $project_id){
return self::where('project_id', $project_id)->where('source', $source)->where('source_id', $source_id)->delete();
}
}
... ...