2 changed files with 96 additions and 0 deletions
-
92app/AdminAgent/Actions/Tree/LoadSystemCategory.php
-
4app/AdminAgent/Controllers/CategoryController.php
@ -0,0 +1,92 @@ |
|||
<?php |
|||
|
|||
namespace App\AdminAgent\Actions\Tree; |
|||
|
|||
use App\Models\Category; |
|||
use Dcat\Admin\Actions\Response; |
|||
use Dcat\Admin\Admin; |
|||
use Dcat\Admin\Traits\HasPermissions; |
|||
use Dcat\Admin\Tree\AbstractTool; |
|||
use Illuminate\Contracts\Auth\Authenticatable; |
|||
use Illuminate\Database\Eloquent\Model; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class LoadSystemCategory extends AbstractTool |
|||
{ |
|||
/** |
|||
* @return string |
|||
*/ |
|||
protected $title = '导入系统分类'; |
|||
|
|||
/** |
|||
* Handle the action request. |
|||
* |
|||
* @param Request $request |
|||
* |
|||
* @return Response |
|||
*/ |
|||
public function handle(Request $request) |
|||
{ |
|||
$system_cate = Category::where('agent_id', 0)->orderBy('pid')->get(); |
|||
$system_name = $system_cate->pluck('name')->toArray(); |
|||
|
|||
$own_cate = Category::where('agent_id', Admin::user()->id)->get(); |
|||
$own_name = $own_cate->pluck('name')->toArray(); |
|||
|
|||
$no_name = array_diff($system_name, $own_name); //找到系统有,但自己没有的分类名
|
|||
$max_id = Category::where('agent_id', Admin::user()->id)->max('id'); |
|||
|
|||
Category::insert(array_map(function ($name) { |
|||
return [ |
|||
'agent_id' => Admin::user()->id, |
|||
'name' => $name, |
|||
'pid' => 0, |
|||
'sort' => 255, |
|||
]; |
|||
}, $no_name)); |
|||
|
|||
$own_cate = Category::where('agent_id', Admin::user()->id)->orderBy('id')->get(); //获取所有分类,包含新插入的分类
|
|||
$system_pid = $system_cate->pluck('pid', 'name')->toArray(); //获取原来系统的PID
|
|||
$own_id = $own_cate->pluck('id', 'name')->toArray(); //获取自己的PID,不考虑name重复的情况
|
|||
|
|||
foreach ($own_cate as $cate) { |
|||
//不是新插入的分类不处理
|
|||
if ($cate->id <= $max_id) continue; |
|||
|
|||
//如果原来系统PID不是0,则获取父类的名称,并在自己的分类中获取对应名称ID,再设置父分类
|
|||
$sys_pid = $system_pid[$cate['name']]; |
|||
if ($sys_pid != 0) { |
|||
$sys_pid_name = $system_cate->find($sys_pid)['name']; |
|||
Category::where('id', $cate->id)->update(['pid' => $own_id[$sys_pid_name]]); |
|||
} |
|||
} |
|||
|
|||
return $this->response()->success('操作成功!')->refresh(); |
|||
} |
|||
|
|||
/** |
|||
* @return string|void |
|||
*/ |
|||
protected function href() |
|||
{ |
|||
// return admin_url('auth/users');
|
|||
} |
|||
|
|||
/** |
|||
* @return string|array|void |
|||
*/ |
|||
public function confirm() |
|||
{ |
|||
return ['操作确认', '确定要导入系统分类吗?']; |
|||
} |
|||
|
|||
/** |
|||
* @param Model|Authenticatable|HasPermissions|null $user |
|||
* |
|||
* @return bool |
|||
*/ |
|||
protected function authorize($user): bool |
|||
{ |
|||
return true; |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue