M241008111105FixMallLogsMenu.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace app\migrations;
  3. use common\enums\StatusEnum;
  4. use common\models\backend\Menu;
  5. use common\models\rbac\AuthItem;
  6. use yii\db\Migration;
  7. /**
  8. * Class M241008111105FixMallLogsMenu
  9. */
  10. class M241008111105FixMallLogsMenu extends M240914091100InsertOrderLogAndUserLogMenu
  11. {
  12. /**
  13. * {@inheritdoc}
  14. */
  15. public function safeUp()
  16. {
  17. // 将原来的菜单禁用
  18. $routers = [
  19. 'mall/logs/order',
  20. 'mall/logs/user',
  21. 'mall/logs'
  22. ];
  23. // 因为新加的几个菜单都是有pid的,所以可以用pid=0作为条件来确定异常数据
  24. $where = ['pid' => 0, 'status' => StatusEnum::ENABLED, 'is_addon' => 0];
  25. $menuWhere = array_merge($where, ['url' => $routers]);
  26. $authItemWhere = array_merge($where, ['name' => $routers]);
  27. // 判断是否存在异常数据
  28. if (!Menu::find()->where($menuWhere)->count() && !AuthItem::find()->where($authItemWhere)->count()) {
  29. return;
  30. }
  31. $updateData = ['status' => -1, 'updated_at' => time()];
  32. Menu::updateAll($updateData, $menuWhere);
  33. AuthItem::updateAll($updateData, $authItemWhere);
  34. parent::safeUp();
  35. }
  36. }