john 8 сар өмнө
parent
commit
e34c9adae4

BIN
.DS_Store


+ 14 - 0
.vscode/launch.json

@@ -0,0 +1,14 @@
+{
+  // 使用 IntelliSense 了解相关属性。
+  // 悬停以查看现有属性的描述。
+  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+  "version": "0.2.0",
+  "configurations": [
+    {
+      "type": "node",
+      "request": "launch",
+      "name": "启动程序",
+      "program": "${workspaceFolder}/node_expores/app.js"
+    }
+  ]
+}

+ 22 - 0
DB/cashbook.sql

@@ -98,3 +98,25 @@ CREATE TABLE `more_record` (
   PRIMARY KEY (`id`),
   UNIQUE KEY `more_record_unique` (`more_id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='更多账本记录';
+
+
+
+
+
+-- -- cashbook.more_record definition
+-- CREATE TABLE `pc_types` (
+--   `id` int NOT NULL AUTO_INCREMENT,
+--   `book_id` varchar(100) NOT NULL,
+--   `create_time` TIMESTAMP NOT NULL COMMENT '创建流程',
+--   `update_time` TIMESTAMP NOT NULL COMMENT '更新时间',
+--   `author_id` varchar(300) NOT NULL,
+--   `name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+--   `more_id` varchar(300) NOT NULL,
+--   `remark` longtext,
+--   `total_fee` decimal(15,2) NOT NULL,
+--   `start_time` TIMESTAMP NOT NULL,
+--   `end_time` TIMESTAMP NOT NULL,
+--   `type_id` int NOT NULL,
+--   PRIMARY KEY (`id`),
+--   UNIQUE KEY `more_record_unique` (`more_id`)
+-- ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='更多账本记录';

+ 6 - 0
node_expores/app.js

@@ -7,9 +7,12 @@ import authors from "./router/authors/index.js";
 import authorsLogin from "./router/authors/login.js";
 import books from "./router/books/index.js";
 import files from "./router/files/index.js";
+import pcFiles from "./router/files/pc.js";
 import record from "./router/record/index.js";
 import moreRecord from "./router/record/more.js";
 import types from "./router/types/index.js";
+import pcTypes from "./router/types/pc.js";
+import epub from "./router/epub/index.js";
 
 import { generateToken, verifyToken } from "#utils";
 
@@ -63,6 +66,9 @@ app.get("/", (req, res) => {
 
 app.use("/api/v1/login", authors);
 app.use("/api/v1/files", files);
+app.use("/api/v1/files/pc", pcFiles);
+app.use("/api/v1/types/pc", pcTypes);
+app.use("/api/v1/epub", epub);
 
 app.use("/api/v1/*", verifyToken); // 注册token验证中间件
 

+ 2 - 1
node_expores/package.json

@@ -27,6 +27,7 @@
     "cors": "^2.8.5",
     "crypto": "^1.0.1",
     "dayjs": "^1.11.13",
+    "epub2": "^3.0.2",
     "express": "^4.21.1",
     "express-fileupload": "^1.5.1",
     "jsonwebtoken": "^9.0.2",
@@ -36,7 +37,7 @@
     "uuid": "^11.0.2"
   },
   "volta": {
-    "node": "18.20.4"
+    "node": "22.11.0"
   },
   "devDependencies": {
     "@types/express": "^5.0.0",

+ 86 - 0
node_expores/router/epub/index.js

@@ -0,0 +1,86 @@
+import express from "express";
+import path from "path";
+import fs from "node:fs";
+import { EPub } from "epub2";
+
+const router = express.Router();
+
+router.use(function timeLog(req, res, next) {
+  console.log("Time: ", Date.now());
+  next();
+});
+
+// define the about route
+router.put("/", function (req, res) {
+  let sampleFile;
+
+  if (!req.files || Object.keys(req.files).length === 0) {
+    return res.status(400).send("No files were uploaded.");
+  }
+  sampleFile = req.files.file;
+  EPub.createAsync(sampleFile.data, "", null)
+    .then(async function (epub) {
+      console.log(epub.filename.length);
+
+      console.log("METADATA:\n");
+      // console.log(epub['Symbol(rawData)']);
+      console.log(epub);
+
+      // console.log(23, epub.filename);
+
+      // console.log("METADATA:\n");
+      // console.log(epub.metadata);
+
+      // console.log("\nSPINE:\n");
+      // console.log(epub.flow);
+
+      // console.log("\nTOC:\n");
+      // console.log(epub.toc);
+
+      // get first chapter
+      // await epub
+      //   .getChapterAsync(epub.spine.contents[1].id)
+      //   .then(function (data) {
+      //     console.log(383838, data);
+      //   });
+      // console.log("\nmanifest:\n");
+      // console.log(epub.manifest);
+
+      // console.log("\nlistImage:\n");
+      // let imgs = epub.listImage();
+      // imgs.forEach((elm) => {
+      //   if (elm.id.indexOf("cover") > -1) {
+      //     console.log(505050, elm);
+      //   }
+      // });
+
+      // await epub
+      //   // .getImageAsync(imgs[imgs.length - 2].id)
+      //   .getImageAsync('cover-image')
+      //   .then(([bufferData, mimeType]) => {
+      //     console.log(`\ngetImage: cover\n`);
+
+      //     console.log(52, bufferData);
+      //     console.log(52, mimeType);
+      //     // 返回文件
+      //     // res.setHeader("Content-Type", mimeType);
+      //     // res.sendFile(data);
+
+      //     // 设置响应头,指定内容类型为 PNG 图片
+      //     res.writeHead(200, {
+      //       "Content-Type": mimeType,
+      //       "Content-Length": bufferData.length,
+      //     });
+
+      //     // 将 Buffer 数据发送到客户端
+      //     res.end(bufferData);
+      //   });
+    })
+    .catch(function (err) {
+      console.log("ERROR\n-----");
+      throw err;
+    });
+  res.send("About files");
+});
+
+export default router;

+ 17 - 0
node_expores/router/files/pc.js

@@ -0,0 +1,17 @@
+// 附件
+import express from "express";
+const router = express.Router();
+
+
+router.use(function timeLog(req, res, next) {
+  console.log("Time: ", Date.now());
+  next();
+});
+
+
+// define the about route
+router.get("/about", function (req, res) {
+  res.send("About files");
+});
+
+export default router;

+ 17 - 0
node_expores/router/types/pc.js

@@ -0,0 +1,17 @@
+// 附件
+import express from "express";
+const router = express.Router();
+
+
+router.use(function timeLog(req, res, next) {
+  console.log("Time: ", Date.now());
+  next();
+});
+
+
+// define the about route
+router.get("/about", function (req, res) {
+  res.send("About files");
+});
+
+export default router;

+ 91 - 0
node_expores/yarn.lock

@@ -118,11 +118,24 @@ accepts@~1.3.8:
     mime-types "~2.1.34"
     negotiator "0.6.3"
 
+adm-zip@^0.5.10:
+  version "0.5.16"
+  resolved "https://registry.npmmirror.com/adm-zip/-/adm-zip-0.5.16.tgz#0b5e4c779f07dedea5805cdccb1147071d94a909"
+  integrity sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==
+
 array-flatten@1.1.1:
   version "1.1.1"
   resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
   integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
 
+array-hyper-unique@^2.1.4:
+  version "2.1.6"
+  resolved "https://registry.npmmirror.com/array-hyper-unique/-/array-hyper-unique-2.1.6.tgz#429412fd63b7bd7c920f6cdbf60d1dd292855b2e"
+  integrity sha512-BdlHRqjKSYs88WFaVNVEc6Kv8ln/FdzCKPbcDPuWs4/EXkQFhnjc8TyR7hnPxRjcjo5LKOhUMGUWpAqRgeJvpA==
+  dependencies:
+    deep-eql "= 4.0.0"
+    lodash "^4.17.21"
+
 aws-ssl-profiles@^1.1.1:
   version "1.1.2"
   resolved "https://registry.npmmirror.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz#157dd77e9f19b1d123678e93f120e6f193022641"
@@ -133,6 +146,11 @@ bignumber.js@9.0.0:
   resolved "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075"
   integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==
 
+bluebird@^3.7.2:
+  version "3.7.2"
+  resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
 body-parser@1.20.3, body-parser@^1.20.3:
   version "1.20.3"
   resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
@@ -214,6 +232,13 @@ cors@^2.8.5:
     object-assign "^4"
     vary "^1"
 
+crlf-normalize@^1.0.19:
+  version "1.0.20"
+  resolved "https://registry.npmmirror.com/crlf-normalize/-/crlf-normalize-1.0.20.tgz#0b3105d3de807bce8a7599113235d725fe9361a8"
+  integrity sha512-h/rBerTd3YHQGfv7tNT25mfhWvRq2BBLCZZ80GFarFxf6HQGbpW6iqDL3N+HBLpjLfAdcBXfWAzVlLfHkRUQBQ==
+  dependencies:
+    ts-type ">=2"
+
 crypto@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037"
@@ -231,6 +256,13 @@ debug@2.6.9:
   dependencies:
     ms "2.0.0"
 
+"deep-eql@= 4.0.0":
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/deep-eql/-/deep-eql-4.0.0.tgz#c70af2713a4e18d9c2c1203ff9d11abbd51c8fbd"
+  integrity sha512-GxJC5MOg2KyQlv6WiUF/VAnMj4MWnYiXo4oLgeptOELVoknyErb4Z8+5F/IM/K4g9/80YzzatxmWcyRwUseH0A==
+  dependencies:
+    type-detect "^4.0.0"
+
 define-data-property@^1.1.4:
   version "1.1.4"
   resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
@@ -277,6 +309,18 @@ encodeurl@~2.0.0:
   resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
   integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
 
+epub2@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/epub2/-/epub2-3.0.2.tgz#eee764e2b6b965d36c7713736bd49f6941d8c9c4"
+  integrity sha512-rhvpt27CV5MZfRetfNtdNwi3XcNg1Am0TwfveJkK8YWeHItHepQ8Js9J06v8XRIjuTrCW/NSGYMTy55Of7BfNQ==
+  dependencies:
+    adm-zip "^0.5.10"
+    array-hyper-unique "^2.1.4"
+    bluebird "^3.7.2"
+    crlf-normalize "^1.0.19"
+    tslib "^2.6.2"
+    xml2js "^0.6.2"
+
 es-define-property@^1.0.0:
   version "1.0.0"
   resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
@@ -533,6 +577,11 @@ lodash.once@^4.0.0:
   resolved "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
   integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
 
+lodash@^4.17.21:
+  version "4.17.21"
+  resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
 long@^5.2.1:
   version "5.2.3"
   resolved "https://registry.npmmirror.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
@@ -717,6 +766,11 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1:
   resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
+sax@>=0.6.0:
+  version "1.4.1"
+  resolved "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f"
+  integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
+
 semver@^7.5.4:
   version "7.6.3"
   resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
@@ -820,6 +874,25 @@ toidentifier@1.0.1:
   resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
   integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
 
+ts-type@>=2:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/ts-type/-/ts-type-3.0.1.tgz#b52e7623065e0beb43c77c426347d85cf81dff84"
+  integrity sha512-cleRydCkBGBFQ4KAvLH0ARIkciduS745prkGVVxPGvcRGhMMoSJUB7gNR1ByKhFTEYrYRg2CsMRGYnqp+6op+g==
+  dependencies:
+    "@types/node" "*"
+    tslib ">=2"
+    typedarray-dts "^1.0.0"
+
+tslib@>=2, tslib@^2.6.2:
+  version "2.8.1"
+  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+  integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+
+type-detect@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c"
+  integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==
+
 type-is@~1.6.18:
   version "1.6.18"
   resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -828,6 +901,11 @@ type-is@~1.6.18:
     media-typer "0.3.0"
     mime-types "~2.1.24"
 
+typedarray-dts@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/typedarray-dts/-/typedarray-dts-1.0.0.tgz#9dec9811386dbfba964c295c2606cf9a6b982d06"
+  integrity sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==
+
 undici-types@~6.19.8:
   version "6.19.8"
   resolved "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
@@ -857,3 +935,16 @@ vary@^1, vary@~1.1.2:
   version "1.1.2"
   resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
   integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+xml2js@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499"
+  integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==
+  dependencies:
+    sax ">=0.6.0"
+    xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+  version "11.0.1"
+  resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
+  integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==

+ 0 - 3
package.json

@@ -18,8 +18,5 @@
   },
   "homepage": "https://github.com/Johnhong9527/newCashBook#readme",
   "dependencies": {
-  },
-  "volta": {
-    "node": "18.20.4"
   }
 }