<?php
/** CLI: 一个参数为站点根目录；幂等执行，新增班组设备暂停记录并更新异常菜单。 */
use think\facade\Db;
function updateToolsCheckFlow($app) {
$c=$app->config->get('database.connections.'.$app->config->get('database.default'));$p=$c['prefix'];
if(!preg_match('/^[a-zA-Z0-9_]*$/',$p))throw new RuntimeException('Invalid prefix');
Db::execute("CREATE TABLE IF NOT EXISTS `{$p}me_check_pause` (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT, m_id INT NOT NULL, tid INT NOT NULL,
    start_date INT NOT NULL, end_date INT NOT NULL, days INT NOT NULL,
    created_by INT NOT NULL, created_at INT NOT NULL,
    resumed_by INT NOT NULL DEFAULT 0, resumed_at INT NOT NULL DEFAULT 0,
    PRIMARY KEY(id), KEY team_device_period(tid,m_id,start_date,end_date), KEY pause_period(start_date,end_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班组设备暂停点检历史，业务日期左闭右开'");
$table=$p.'admin_menus_wx';
$columns=array_column(Db::query("SHOW COLUMNS FROM `$table`"),'Field');
Db::transaction(function()use($table,$columns){
    $data=['title'=>'点检异常记录','route'=>'/pages/check-issue/index','user_types'=>'1,2,3','status'=>1,'icon'=>'info-circle'];
    // 旧版菜单表没有此可见范围字段，不新增字段；维修权限始终由admin_user.dpt决定。
    if(in_array('department_ids',$columns,true))$data['department_ids']='';
    // 使用真实表结构和绑定参数，避免旧的TP字段缓存误判新增菜单字段。
    if(Db::query("SELECT id FROM `$table` WHERE action=?",['checkIssue'])){
        $sets=array_map(function($key){return "`$key`=?";},array_keys($data));
        Db::execute("UPDATE `$table` SET ".implode(',',$sets)." WHERE action=?",array_merge(array_values($data),['checkIssue']));
    }else{
        $data+=['action'=>'checkIssue','icon_color'=>'#D97706','sort'=>5];
        $keys=array_map(function($key){return "`$key`";},array_keys($data));
        Db::execute("INSERT INTO `$table` (".implode(',',$keys).") VALUES (".implode(',',array_fill(0,count($data),'?')).")",array_values($data));
    }
});
return ['database'=>$c['database'],'applied'=>true,'pauseTable'=>$p.'me_check_pause','menu'=>'点检异常记录'];
}
if(PHP_SAPI!=='cli' || realpath($_SERVER['SCRIPT_FILENAME']??'')!==__FILE__)return;
$root=$argv[1]??'D:/phpstudy_pro/WWW/cqoms.com';
require rtrim($root,'/\\').'/vendor/autoload.php';
$app=new \think\App(rtrim($root,'/\\').'/');$app->initialize();
echo json_encode(updateToolsCheckFlow($app),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT),PHP_EOL;
