chengjie vor 5 Monaten
Ursprung
Commit
a5d7ef2d68

+ 1 - 0
.nvmrc

@@ -0,0 +1 @@
1
+24.1.0

+ 26 - 0
.vscode/settings.json

@@ -0,0 +1,26 @@
1
+{
2
+    "files.autoSave": "afterDelay",
3
+    "files.autoSaveDelay": 1000,
4
+    "code-runner.clearPreviousOutput": true,
5
+    "code-runner.ignoreSelection": true,
6
+    "code-runner.saveFileBeforeRun": true,
7
+    "code-runner.runInTerminal": true,
8
+    "code-runner.preserveFocus": true,
9
+    "code-runner.fileDirectoryAsCwd": true,
10
+    "code-runner.showExecutionMessage": true,
11
+    "code-runner.enableAppInsights": false,
12
+    "code-runner.respectShebang": true,
13
+    "code-runner.terminalRoot": "~",
14
+    "terminal.integrated.allowChords": false,
15
+    "terminal.integrated.confirmOnExit": "never",
16
+    "terminal.integrated.persistentSessionReviveProcess": "never",
17
+    "terminal.integrated.tabs.enabled": true,
18
+    "terminal.integrated.tabs.hideCondition": "never",
19
+    "terminal.integrated.enablePersistentSessions": false,
20
+    "workbench.editor.enablePreview": false,
21
+    "workbench.editor.closeOnFileDelete": true,
22
+    "accessibility.signals.terminalBell": {
23
+        "sound": "off"
24
+    },
25
+    "terminal.integrated.enableVisualBell": false
26
+}

+ 20 - 0
.vscode/tasks.json

@@ -0,0 +1,20 @@
1
+{
2
+    "version": "2.0.0",
3
+    "tasks": [
4
+        {
5
+            "label": "Kill Running Process and Run Code",
6
+            "type": "shell",
7
+            "command": "pkill -f 'node ${file}' || true && node ${file}",
8
+            "group": {
9
+                "kind": "build",
10
+                "isDefault": true
11
+            },
12
+            "presentation": {
13
+                "reveal": "always",
14
+                "panel": "new",
15
+                "clear": true
16
+            },
17
+            "problemMatcher": []
18
+        }
19
+    ]
20
+}

+ 6 - 4
package.json

@@ -8,10 +8,12 @@
8 8
   },
9 9
   "scripts": {
10 10
     "predev": "node scripts/check-node-version.js",
11
-    "dev": "cross-env NODE_ENV=development node src/app.js",
11
+    "dev": "./scripts/use-node-version.sh cross-env NODE_ENV=development node src/app.js",
12 12
     "prestart": "node scripts/check-node-version.js",
13
-    "start": "cross-env NODE_ENV=production node src/app.js",
14
-    "test": "echo \"Error: no test specified\" && exit 1"
13
+    "start": "./scripts/use-node-version.sh cross-env NODE_ENV=production node src/app.js",
14
+    "test": "./scripts/use-node-version.sh node",
15
+    "node": "./scripts/use-node-version.sh node",
16
+    "check-version": "./scripts/use-node-version.sh node -v"
15 17
   },
16 18
   "engines": {
17 19
     "node": "24.1.0"
@@ -40,4 +42,4 @@
40 42
   "devDependencies": {
41 43
     "cross-env": "^7.0.3"
42 44
   }
43
-}
45
+}

+ 48 - 9
scripts/check-node-version.js

@@ -9,28 +9,67 @@ const __filename = fileURLToPath(import.meta.url);
9 9
 const __dirname = path.dirname(__filename);
10 10
 
11 11
 // 读取 .nvmrc 文件获取所需的 Node.js 版本
12
-const requiredVersion = fs.readFileSync(path.join(__dirname, '..', '.nvmrc'), 'utf8').trim();
12
+let requiredVersion;
13
+try {
14
+  requiredVersion = fs.readFileSync(path.join(__dirname, '..', '.nvmrc'), 'utf8').trim();
15
+} catch (error) {
16
+  console.error('错误: 无法读取 .nvmrc 文件');
17
+  process.exit(1);
18
+}
19
+
13 20
 const currentVersion = process.version.slice(1); // 移除版本号前的 'v'
14 21
 
15 22
 console.log(`检查 Node.js 版本...`);
16 23
 console.log(`当前版本: ${currentVersion}`);
17 24
 console.log(`所需版本: ${requiredVersion}`);
18 25
 
19
-// 比较版本号的主要部分
20
-const currentMajor = parseInt(currentVersion.split('.')[0], 10);
21
-const requiredMajor = parseInt(requiredVersion.split('.')[0], 10);
26
+// 解析版本号的所有部分
27
+const parseVersion = (version) => {
28
+  const parts = version.split('.').map(Number);
29
+  return {
30
+    major: parts[0],
31
+    minor: parts[1] || 0,
32
+    patch: parts[2] || 0
33
+  };
34
+};
35
+
36
+const current = parseVersion(currentVersion);
37
+const required = parseVersion(requiredVersion);
22 38
 
23
-if (currentMajor !== requiredMajor) {
39
+// 检查版本是否匹配
40
+const isVersionMatch = 
41
+  current.major === required.major &&
42
+  current.minor >= required.minor;
43
+
44
+if (!isVersionMatch) {
24 45
   console.error(`\n错误: Node.js 版本不匹配!`);
25 46
   console.error(`本项目需要 Node.js ${requiredVersion}`);
26 47
   console.error(`当前使用的是 Node.js ${currentVersion}`);
27 48
   
28 49
   console.error(`\n请尝试以下方法之一:`);
29
-  console.error(`1. 如果已安装 nvm: 运行 'nvm use ${requiredVersion}'`);
30
-  console.error(`2. 安装所需版本: 'nvm install ${requiredVersion}'`);
31
-  console.error(`3. 从 https://nodejs.org/ 下载并安装 Node.js ${requiredVersion}`);
50
+  console.error(`1. 使用项目提供的版本切换脚本:`);
51
+  console.error(`   ./scripts/use-node-version.sh node -v`);
52
+  console.error(`2. 如果已安装 nvm: 运行 'nvm use ${requiredVersion}'`);
53
+  console.error(`3. 安装所需版本: 'nvm install ${requiredVersion}'`);
54
+  console.error(`4. 从 https://nodejs.org/ 下载并安装 Node.js ${requiredVersion}`);
32 55
   
33 56
   process.exit(1);
34 57
 }
35 58
 
36
-console.log(`Node.js 版本检查通过!`);
59
+// 检查是否已安装 nvm
60
+try {
61
+  execSync('command -v nvm', { stdio: 'ignore' });
62
+  // 如果 nvm 可用,尝试自动切换版本
63
+  try {
64
+    execSync(`. "${process.env.NVM_DIR}/nvm.sh" && nvm use ${requiredVersion}`, { 
65
+      stdio: 'inherit',
66
+      shell: '/bin/bash'
67
+    });
68
+  } catch (error) {
69
+    // 如果自动切换失败,继续执行,因为当前版本已经匹配
70
+  }
71
+} catch (error) {
72
+  // nvm 未安装,但当前版本已经匹配,所以继续执行
73
+}
74
+
75
+console.log(`\n✓ Node.js 版本检查通过! (${currentVersion})`);

+ 28 - 0
scripts/use-node-version.sh

@@ -0,0 +1,28 @@
1
+#!/bin/bash
2
+
3
+# 检查是否安装了 nvm
4
+if [ -z "$(command -v nvm)" ]; then
5
+  echo "Error: nvm is not installed"
6
+  echo "Please install nvm first: https://github.com/nvm-sh/nvm#installing-and-updating"
7
+  exit 1
8
+fi
9
+
10
+# 获取 .nvmrc 中指定的版本
11
+NODE_VERSION=$(cat .nvmrc)
12
+
13
+# 检查是否已安装所需版本
14
+if ! nvm ls $NODE_VERSION > /dev/null 2>&1; then
15
+  echo "Required Node.js version $NODE_VERSION is not installed"
16
+  echo "Installing Node.js $NODE_VERSION..."
17
+  nvm install $NODE_VERSION
18
+fi
19
+
20
+# 使用指定版本
21
+echo "Switching to Node.js $NODE_VERSION..."
22
+. "$(dirname $(command -v nvm))/nvm.sh" # 加载 nvm
23
+nvm use $NODE_VERSION
24
+
25
+# 执行传入的命令
26
+if [ $# -gt 0 ]; then
27
+  exec "$@"
28
+fi

+ 5 - 2
src/api/mps/mpsScoreController.js

@@ -63,11 +63,14 @@ export async function GetMPSSchoolLikeNum(ctx) {
63 63
 
64 64
 // 获取区县人数
65 65
 export async function GetMPSDistrictPersonNum(ctx) {
66
-    const param = {
66
+    let param = {
67 67
         DistrictID: ctx.query.DistrictID || '0', //所在区
68
-        Year: ctx.query.Year || ArrYear[1].Name,
68
+        Year: ctx.query.Year || ArrYear[0].Name,
69 69
     };
70 70
 
71
+    if (param.DistrictID==10 || param.DistrictID==12 || param.DistrictID==15 || param.DistrictID==16 )
72
+        param.Year=ArrYear[0].Name;
73
+
71 74
     let info=null;
72 75
     if (param.DistrictID!="NaN"){
73 76
 

+ 41 - 0
src/test/build.test.js

@@ -0,0 +1,41 @@
1
+import commonModel from '../model/commonModel.js';
2
+
3
+async function runScript(){
4
+    try {
5
+        const sql="select ID from MiaoguoLiteracy order by ID;"
6
+        let list = await commonModel.RunSql(null,sql);
7
+        for(let i=0;i<list.length;i++){
8
+            if (i % 1000 == 0)
9
+                console.log("i:"+i+" ID:"+list[i].ID);
10
+            let item =await commonModel.RunSql(null,"select * from MiaoguoLiteracy where ID="+list[i].ID+";");
11
+            let json;
12
+            try {
13
+                json = JSON.parse(item[0].JSONString);
14
+            } catch (parseError) {
15
+                console.error('JSON Parse Error at ID:', list[i].ID);
16
+                console.error('Error details:', parseError);
17
+                continue;
18
+            }
19
+            if (json && json.CHN && json.CHN.BiShunArr && json.CHN.BiShunArr.length>0){
20
+                console.log(i+" "+json.CHN.HanZi);
21
+                
22
+                delete json.CHN.BiShunArr;
23
+                let obj={};
24
+                obj.ID=list[i].ID;
25
+                obj.JSONString=JSON.stringify(json);
26
+
27
+                await commonModel.RunSql(obj,"update MiaoguoLiteracy set ? where ID="+list[i].ID+";");
28
+            }
29
+            //console.log(json);
30
+            //console.log(item.length);
31
+        }
32
+        console.log("完成");
33
+    } catch (error) {
34
+        console.error('Error executing script:', error);
35
+    }
36
+}
37
+
38
+// 处理Promise并添加错误捕获
39
+runScript().catch(error => {
40
+    console.error('Error in runScript:', error);
41
+});