MiniSeeder.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. use Illuminate\Database\Seeder;
  3. class MiniSeeder extends Seeder
  4. {
  5. /**
  6. * Run the database seeds.
  7. *
  8. * @return void
  9. */
  10. public function run()
  11. {
  12. // 创建角色、用户
  13. $total = 20;
  14. \App\Models\Role::truncate();
  15. \App\Models\User::truncate();
  16. for($i = 1; $i < $total; ++$i) {
  17. $role = \App\Models\Role::create([
  18. 'name' => '用户角色' . $i,
  19. 'sort' => $i,
  20. 'key' => 'role-' . $i
  21. ]);
  22. \App\Models\User::create([
  23. 'role_id' => $role->id,
  24. 'name' => '用户' . $i,
  25. 'password' => bcrypt(123456),
  26. 'phone' => $i < 10 ? '1234567890' . $i : '123456789' . $i
  27. ]);
  28. }
  29. // 创建项目角色
  30. \App\Models\ProjectRole::truncate();
  31. for($i = 1; $i < $total; ++$i) {
  32. \App\Models\ProjectRole::create([
  33. 'name' => '项目角色' . $i,
  34. 'level' => $i
  35. ]);
  36. }
  37. // 创建项目,为项目分配用户和项目角色
  38. \App\Models\Project::truncate();
  39. \App\Models\ProjectUser::truncate();
  40. $users = \App\Models\User::limit(3)->get();
  41. $project_roles = \App\Models\ProjectRole::limit(3)->get();
  42. for($i = 1; $i < $total; ++$i) {
  43. $project = \App\Models\Project::create([
  44. 'name' => '项目' . ($i + 2)
  45. ]);
  46. for($j = 0; $j < count($users); ++$j) {
  47. \App\Models\ProjectUser::create([
  48. 'project_id' => $project->id,
  49. 'user_id' => $users[$j]->id,
  50. 'project_role_id' => $project_roles[$j]->id
  51. ]);
  52. }
  53. }
  54. // 创建设备类型
  55. $device_types = ['隧道掘进机', '钻机', '起重机械', '隧道牵引机械', '隧道掘进机', '混泥土泵送机械', '土石方机械', '运输机械', '其他'];
  56. foreach($device_types as $key => $value) {
  57. \App\Models\Device::create([
  58. 'name' => $value,
  59. 'sort' => $key + 1
  60. ]);
  61. }
  62. // 创建需求工点
  63. \App\Models\WorkPoint::truncate();
  64. for($i = 1; $i < $total; ++$i) {
  65. \App\Models\WorkPoint::create([
  66. 'name' => '工点' . $i
  67. ]);
  68. }
  69. // 创建订单状态
  70. $this->call([
  71. OptionSeeder::class
  72. ]);
  73. // 创建订单
  74. \App\Models\Order::truncate();
  75. \App\Models\OrderDevice::truncate();
  76. $project = \App\Models\Project::first();
  77. $statuses = \App\Models\Option::get('orders', 'status');
  78. $work_points = \App\Models\WorkPoint::all();
  79. $user = \App\Models\User::first();
  80. $devices = \App\Models\Device::all();
  81. for($i = 1; $i < $total * 2; ++$i) {
  82. $project_role = $project_roles->random();
  83. $is_draft = collect([1, 2])->random();
  84. $status = $statuses->random()->id;
  85. $order = \App\Models\Order::create([
  86. 'work_point_id' => $work_points->random()->id,
  87. 'is_draft' => $is_draft,
  88. 'status' => $status,
  89. 'order_number' => \App\Models\Order::createOrderNumber(),
  90. 'project_id' => $project->id,
  91. 'user_id' => $user->id,
  92. 'project_role_id' => $project_role->id
  93. ]);
  94. $money = 0;
  95. for($j = 1; $j < 3; ++$j) {
  96. $quantity = mt_rand(1, 5);
  97. $price = mt_rand(1, 10) * 1000;
  98. $money = $money + $quantity * $price;
  99. \App\Models\OrderDevice::create([
  100. 'name' => '设备' . $j,
  101. 'order_id' => $order->id,
  102. 'device_id' => $devices->random()->id,
  103. 'quantity' => $quantity,
  104. 'price' => $price
  105. ]);
  106. }
  107. $order->update(['money' => $money]);
  108. }
  109. }
  110. }