2021_06_18_150046_create_terminals_table.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. use Illuminate\Database\Migrations\Migration;
  3. use Illuminate\Database\Schema\Blueprint;
  4. use Illuminate\Support\Facades\Schema;
  5. class CreateTerminalsTable extends Migration
  6. {
  7. private $parent_name = '基础设置-快递打印-终端';
  8. private $names = [
  9. '打印终端-添加' => '基础设置-快递打印-终端-添加',
  10. '打印终端-编辑' => '基础设置-快递打印-终端-编辑',
  11. '打印终端-删除' => '基础设置-快递打印-终端-删除',
  12. ];
  13. /**
  14. * Run the migrations.
  15. *
  16. * @return void
  17. */
  18. public function up()
  19. {
  20. Schema::create('terminals', function (Blueprint $table) {
  21. $table->id();
  22. $table->string('name')->comment('计算机别名');
  23. $table->string('ip')->comment('计算机ip地址');
  24. $table->timestamps();
  25. });
  26. $menu = \App\Menu::query()->where('route', 'maintenance/expressPrinting/part')->first();
  27. $maxMenu = \App\Menu::query()->orderByDesc('sequence')->first();
  28. $maxSequence = $maxMenu['sequence'];
  29. $menu = \App\Menu::query()->firstOrCreate(['route' => 'maintenance/expressPrinting/part/setting/terminal/index'], [
  30. 'name' => '终端设置',
  31. 'level' => 3,
  32. 'parent_id' => $menu['id'],
  33. 'sequence' => $maxSequence++,
  34. ]);
  35. $menu = \App\Menu::query()->firstOrCreate(['route' => 'maintenance/expressPrinting/part/setting/terminal/index'], [
  36. 'name' => '终端',
  37. 'level' => 4,
  38. 'parent_id' => $menu['id'],
  39. 'sequence' => $maxSequence++,
  40. ]);
  41. $authority = \App\Authority::query()->firstOrCreate(['name' => '打印终端'], ['alias_name' => $this->parent_name]);
  42. foreach ($this->names as $name=>$alias_name ) {
  43. \App\Authority::query()->firstOrCreate(['name' => $name],['alias_name' => $alias_name,'parent_id' => $authority['id']]);
  44. }
  45. }
  46. /**
  47. * Reverse the migrations.
  48. *
  49. * @return void
  50. */
  51. public function down()
  52. {
  53. Schema::dropIfExists('terminals');
  54. \App\Menu::query()->where('route', 'maintenance/expressPrinting/part/setting/terminal/index')->delete();
  55. $authority = \App\Authority::query()->where( 'alias_name' , $this->parent_name)->first();
  56. if(!$authority) return ;
  57. foreach ($this->names as $name=>$alias_name ) {
  58. \App\Authority::query()->where(['name' => $name,'alias_name' => $alias_name,'parent_id' => $authority->id])->delete();
  59. }
  60. }
  61. }