InitDataCommand.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Repositories\Enums\PermissionEnum;
  4. use App\Repositories\Models\Base\Admin;
  5. use App\Repositories\Models\Base\Resource;
  6. use App\Repositories\Models\Base\Role;
  7. use App\Repositories\Models\News\Message;
  8. use App\Repositories\Models\News\Notice;
  9. use App\Repositories\Models\News\UserMessage;
  10. use Illuminate\Console\Command;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\Support\Facades\Hash;
  13. use Spatie\Permission\Models\Permission;
  14. /**
  15. * Class PresenterCommand
  16. * @package Prettus\Repository\Generators\Commands
  17. * @author Anderson Andrade <contato@andersonandra.de>
  18. */
  19. class InitDataCommand extends Command
  20. {
  21. /**
  22. * The name of command.
  23. *
  24. * @var string
  25. */
  26. protected $name = 'init:data';
  27. /**
  28. * The description of command.
  29. *
  30. * @var string
  31. */
  32. protected $description = 'init data.';
  33. /**
  34. * The type of class being generated.
  35. *
  36. * @var string
  37. */
  38. protected $type = '';
  39. /**
  40. * Execute the command.
  41. *
  42. * @return void
  43. * @see fire()
  44. */
  45. public function handle()
  46. {
  47. DB::statement('SET FOREIGN_KEY_CHECKS = 0'); // 禁用外键约束
  48. // $this->clearData();
  49. // $this->initRoles();
  50. $this->initAdmin();
  51. // $this->initPermissions();
  52. DB::statement('SET FOREIGN_KEY_CHECKS = 1'); // 启用外键约束
  53. $this->line('ok');
  54. }
  55. public function clearData()
  56. {
  57. Admin::query()->truncate();
  58. // Student::query()->truncate();
  59. // Teacher::query()->truncate();
  60. Resource::query()->truncate();
  61. // Lesson::query()->truncate();
  62. // Grade::query()->truncate();
  63. // LessonSchedule::query()->truncate();
  64. // LessonTeacher::query()->truncate();
  65. // Room::query()->truncate();
  66. // ScheduleApproveRecord::query()->truncate();
  67. // ScheduleApproveLog::query()->truncate();
  68. Message::query()->truncate();
  69. Notice::query()->truncate();
  70. UserMessage::query()->truncate();
  71. Role::query()->truncate();
  72. // AccountApply::query()->truncate();
  73. // ImportRecord::query()->truncate();
  74. // \App\Repositories\Models\Lab\LessonSchedule::query()->truncate();
  75. // \App\Repositories\Models\Lab\LessonTeacher::query()->truncate();
  76. // \App\Repositories\Models\Lab\Maintain::query()->truncate();
  77. // \App\Repositories\Models\Lab\OpenAppointment::query()->truncate();
  78. // \App\Repositories\Models\Lab\OpenAppointmentLog::query()->truncate();
  79. }
  80. public function initRoles()
  81. {
  82. Role::query()->firstOrCreate([
  83. 'name' => 'admin',
  84. ], [
  85. 'nickname' => '管理员',
  86. 'guard_name' => 'admins',
  87. 'is_init' => 1,
  88. 'status' => 1,
  89. ]);
  90. Role::query()->firstOrCreate([
  91. 'name' => 'monitor',
  92. ], [
  93. 'nickname' => '班长',
  94. 'guard_name' => 'admins',
  95. 'is_init' => 1,
  96. 'status' => 1,
  97. ]);
  98. Role::query()->firstOrCreate([
  99. 'name' => 'polling',
  100. ], [
  101. 'nickname' => '巡检员',
  102. 'guard_name' => 'admins',
  103. 'is_init' => 1,
  104. 'status' => 1,
  105. ]);
  106. }
  107. public function initAdmin()
  108. {
  109. $admin = Admin::query()->firstOrCreate([
  110. 'username' => 'superadmin',
  111. ], [
  112. 'password' => Hash::make('Q1w2e3r4!'),
  113. 'mobile' => '15225006562',
  114. 'name' => '超级管理员',
  115. 'type' => '0',
  116. 'type_id' => '0',
  117. 'email' => '751066209@qq.com',
  118. 'is_admin' => '1',
  119. 'status' => '1',
  120. ]);
  121. // $admin->syncRoles(['admin']);
  122. // $admin = Admin::query()->firstOrCreate([
  123. // 'username' => '2013181151',
  124. // ], [
  125. // 'password' => Hash::make('Q1w2e3r4!'),
  126. // 'mobile' => '15225006563',
  127. // 'name' => '班长',
  128. // 'type' => '0',
  129. // 'type_id' => '0',
  130. // 'email' => '751066208@qq.com',
  131. // 'is_admin' => '1',
  132. // 'status' => '1',
  133. // ]);
  134. // $admin->syncRoles(['monitor']);
  135. //
  136. // $admin = Admin::query()->firstOrCreate([
  137. // 'username' => '2013181150',
  138. // ], [
  139. // 'password' => Hash::make('Q1w2e3r4!'),
  140. // 'mobile' => '15225006564',
  141. // 'name' => '巡检员',
  142. // 'type' => '0',
  143. // 'type_id' => '0',
  144. // 'email' => '751066207@qq.com',
  145. // 'is_admin' => '1',
  146. // 'status' => '1',
  147. // ]);
  148. // $admin->syncRoles(['polling']);
  149. }
  150. public function initPermissions()
  151. {
  152. $admin_ps = [
  153. PermissionEnum::controller_task_list,
  154. PermissionEnum::controller_task_add,
  155. PermissionEnum::controller_task_del,
  156. PermissionEnum::controller_task_allot_all,
  157. PermissionEnum::controller_task_allot,
  158. PermissionEnum::model_task_all,
  159. PermissionEnum::controller_paper_list,
  160. PermissionEnum::controller_paper_add,
  161. PermissionEnum::controller_paper_del,
  162. PermissionEnum::model_paper_all,
  163. PermissionEnum::controller_paperResult_list,
  164. PermissionEnum::controller_paperResult_add,
  165. PermissionEnum::controller_paperResult_del,
  166. PermissionEnum::model_paperResult_all,
  167. PermissionEnum::controller_topic_list,
  168. PermissionEnum::controller_topic_add,
  169. PermissionEnum::controller_topic_del,
  170. PermissionEnum::controller_admin_list,
  171. PermissionEnum::controller_admin_add,
  172. PermissionEnum::controller_admin_del,
  173. PermissionEnum::model_admin_all,
  174. ];
  175. $monitor_ps = [
  176. PermissionEnum::controller_task_list,
  177. PermissionEnum::controller_task_allot,
  178. PermissionEnum::model_task_me,
  179. PermissionEnum::controller_paper_list,
  180. PermissionEnum::model_paper_monitor,
  181. PermissionEnum::controller_paperResult_list,
  182. PermissionEnum::model_paperResult_monitor,
  183. PermissionEnum::controller_admin_list,
  184. PermissionEnum::controller_admin_add,
  185. PermissionEnum::controller_admin_del,
  186. PermissionEnum::model_admin_monitor,
  187. ];
  188. $polling_ps = [
  189. PermissionEnum::controller_task_list,
  190. PermissionEnum::controller_paperResult_answer,
  191. PermissionEnum::controller_paperResult_list,
  192. PermissionEnum::model_paperResult_me,
  193. ];
  194. DB::statement('SET FOREIGN_KEY_CHECKS = 0'); // 禁用外键约束
  195. Permission::query()->truncate();
  196. DB::table('base_model_has_permissions')->truncate();
  197. DB::table('base_role_has_permissions')->truncate();
  198. DB::statement('SET FOREIGN_KEY_CHECKS = 1'); // 启用外键约束
  199. $permissions = PermissionEnum::makePermissions();
  200. foreach ($permissions as $item) {
  201. $item['guard_name'] = 'admins';
  202. Permission::query()->firstOrCreate($item, []);
  203. }
  204. //管理员
  205. $admin_permissions = Permission::query()->whereIn('name', $admin_ps)->get();
  206. $admin_role = Role::query()->where('name', 'admin')->first();
  207. $admin_role->givePermissionTo($admin_permissions);
  208. // //巡检员
  209. $teacher_permissions = Permission::query()->whereIn('name', $polling_ps)->get();
  210. $teacher_role = Role::query()->where('name', 'polling')->first();
  211. $teacher_role->givePermissionTo($teacher_permissions);
  212. //
  213. // //班长
  214. $student_permissions = Permission::query()->whereIn('name', $monitor_ps)->get();
  215. $student_role = Role::query()->where('name', 'monitor')->first();
  216. $student_role->givePermissionTo($student_permissions);
  217. }
  218. }