| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace app\common\command;
- use app\admin\model\SystemNode;
- use think\console\Command;
- use think\console\Input;
- use think\console\input\Option;
- use think\console\Output;
- use app\admin\service\NodeService;
- class Node extends Command
- {
- protected function configure()
- {
- $this->setName('node')
- ->addOption('force', null, Option::VALUE_REQUIRED, '是否强制刷新', 0)
- ->setDescription('系统节点刷新服务');
- }
- protected function execute(Input $input, Output $output)
- {
- $force = $input->getOption('force');
- $output->writeln("========正在刷新节点服务:=====" . date('Y-m-d H:i:s'));
- $check = $this->refresh($force);
- $check !== true && $output->writeln("节点刷新失败:" . $check);
- $output->writeln("刷新完成:" . date('Y-m-d H:i:s'));
- }
- protected function refresh($force)
- {
- $nodeList = (new NodeService())->getNodeList();
- if (empty($nodeList)) {
- return true;
- }
- $model = new SystemNode();
- try {
- if ($force == 1) {
- $updateNodeList = $model->whereIn('node', array_column($nodeList, 'node'))->select();
- $formatNodeList = array_format_key($nodeList, 'node');
- foreach ($updateNodeList as $vo) {
- isset($formatNodeList[$vo['node']]) && $model->where('id', $vo['id'])->update([
- 'title' => $formatNodeList[$vo['node']]['title'],
- 'is_auth' => $formatNodeList[$vo['node']]['is_auth'],
- ]);
- }
- }
- $existNodeList = $model->field('node,title,type,is_auth')->select();
- foreach ($nodeList as $key => $vo) {
- foreach ($existNodeList as $v) {
- if ($vo['node'] == $v->node) {
- unset($nodeList[$key]);
- break;
- }
- }
- }
- $model->insertAll($nodeList);
- } catch (\Exception $e) {
- return $e->getMessage();
- }
- return true;
- }
- }
|