20230905060702_version202.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. use think\facade\Db;
  3. use think\migration\Migrator;
  4. class Version202 extends Migrator
  5. {
  6. /**
  7. * 规范菜单规则
  8. * @throws Throwable
  9. */
  10. public function up(): void
  11. {
  12. Db::startTrans();
  13. try {
  14. $dashboardId = Db::name('admin_rule')
  15. ->where('name', 'dashboard/dashboard')
  16. ->lock(true)
  17. ->value('id');
  18. if ($dashboardId) {
  19. // 修改name
  20. Db::name('admin_rule')
  21. ->where('name', 'dashboard/dashboard')
  22. ->update([
  23. 'name' => 'dashboard',
  24. ]);
  25. // 增加一个查看的权限节点
  26. $dashboardIndexId = Db::name('admin_rule')->insertGetId([
  27. 'pid' => $dashboardId,
  28. 'type' => 'button',
  29. 'title' => '查看',
  30. 'name' => 'dashboard/index',
  31. 'update_time' => time(),
  32. 'create_time' => time(),
  33. ]);
  34. // 原本有控制台权限的管理员,给予新增的查看权限
  35. $group = Db::name('admin_group')
  36. ->where('rules', 'find in set', $dashboardId)
  37. ->select();
  38. foreach ($group as $item) {
  39. $newRules = trim($item['rules'], ',');
  40. $newRules = $newRules . ',' . $dashboardIndexId;
  41. Db::name('admin_group')
  42. ->where('id', $item['id'])
  43. ->update([
  44. 'rules' => $newRules
  45. ]);
  46. }
  47. }
  48. // 修改name
  49. Db::name('admin_rule')
  50. ->where('name', 'buildadmin/buildadmin')
  51. ->update([
  52. 'name' => 'buildadmin',
  53. ]);
  54. Db::commit();
  55. } catch (Throwable $e) {
  56. Db::rollback();
  57. throw $e;
  58. }
  59. }
  60. }