migrate_water_business.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /** php scripts/migrate_water_business.php [--apply]:仅新增业务表及菜单,可重复运行。 */
  3. require dirname(__DIR__) . '/vendor/autoload.php';
  4. \Dotenv\Dotenv::createUnsafeMutable(dirname(__DIR__))->load();
  5. \support\App::loadAllConfig(['route']);
  6. \Webman\ThinkOrm\ThinkOrm::start(null);
  7. use support\think\Db;
  8. $pages = [
  9. ['overview','运营总览','ri:dashboard-line'], ['alerts','补货预警','ri:alarm-warning-line'],
  10. ['dispatch','配送调度','ri:truck-line'], ['inventory','库存管理','ri:archive-line'],
  11. ['devices','设备管理','ri:device-line'], ['enterprises','企业客户','ri:building-line'],
  12. ['packages','套餐商品','ri:shopping-bag-line'], ['agents','代理商管理','ri:team-line'],
  13. ['finance','财务结算','ri:money-cny-circle-line'], ['content','内容配置','ri:image-line'],
  14. ['roles','角色与权限','ri:shield-user-line'], ['audit','操作审计','ri:file-list-line'],
  15. ];
  16. if (!in_array('--apply', $argv, true)) {
  17. echo "Plan: create 9 sa_water_* tables and 12 permission-controlled menus. Existing data is preserved.\n";
  18. exit(0);
  19. }
  20. $sql = file_get_contents(dirname(__DIR__) . '/plugin/saiadmin/db/20260909_water_business.sql');
  21. foreach (explode(';', $sql) as $statement) {
  22. if (trim($statement) !== '') Db::execute($statement);
  23. }
  24. Db::transaction(function () use ($pages) {
  25. foreach ($pages as $i => [$key,$title,$icon]) {
  26. $code = 'Water' . ucfirst($key);
  27. $menu = Db::table('sa_system_menu')->where('code',$code)->whereNull('delete_time')->find();
  28. if (!$menu) {
  29. $id = Db::table('sa_system_menu')->insertGetId([
  30. 'parent_id'=>0,'name'=>$title,'code'=>$code,'type'=>2,'path'=>'/water-'.$key,
  31. 'component'=>'/water/'.$key,'icon'=>$icon,'sort'=>2000-$i*10,
  32. 'is_iframe'=>2,'is_keep_alive'=>2,'is_hidden'=>2,'is_fixed_tab'=>2,'is_full_page'=>2,
  33. 'generate_id'=>0,'status'=>1,'remark'=>'云泉智配供水运营','created_by'=>1,'updated_by'=>1,
  34. 'create_time'=>date('Y-m-d H:i:s'),'update_time'=>date('Y-m-d H:i:s'),
  35. ]);
  36. } else $id = $menu['id'];
  37. // 不自动把新业务权限授予旧代理角色。
  38. foreach (['read'=>'查询','write'=>'管理'] as $action=>$label) {
  39. $slug = 'water:'.$key.':'.$action;
  40. if (!Db::table('sa_system_menu')->where('slug',$slug)->whereNull('delete_time')->find()) {
  41. Db::table('sa_system_menu')->insert([
  42. 'parent_id'=>$id,'name'=>$label.$title,'code'=>$code.ucfirst($action),'slug'=>$slug,
  43. 'type'=>3,'method'=>$action==='read'?'GET':'POST','sort'=>0,
  44. 'is_iframe'=>2,'is_keep_alive'=>2,'is_hidden'=>2,'is_fixed_tab'=>2,'is_full_page'=>2,
  45. 'generate_id'=>0,'status'=>1,'remark'=>'平台供水运营权限','created_by'=>1,'updated_by'=>1,
  46. 'create_time'=>date('Y-m-d H:i:s'),'update_time'=>date('Y-m-d H:i:s'),
  47. ]);
  48. }
  49. }
  50. }
  51. });
  52. \plugin\saiadmin\app\cache\UserAuthCache::clear();
  53. \plugin\saiadmin\app\cache\UserMenuCache::clearMenuCache();
  54. echo "Applied: 9 water tables and 12 menus; no legacy records changed.\n";