Browse Source

restore to simple logic

Michael Wang 3 years ago
parent
commit
3b58aef18d

+ 19 - 94
src/features/ImageDownload/ImageDownload.vue

@@ -23,7 +23,6 @@ const router = useRouter();
 import { getStudents, countStudents, getPackages } from "@/api/api";
 import { httpApp } from "@/plugins/axiosApp";
 import mustache from "mustache";
-import { ImageParams } from "@/types";
 
 async function getImageDim(
   blob: Blob
@@ -69,44 +68,6 @@ async function cacheImages(urls: string) {
   }
 }
 
-const taskQueue = [] as Array<ImageParams>;
-// 批量处理水印
-async function batchWaterMarkImages() {
-  const MAX_CONCURRENT = 1;
-  console.log("start batchWaterMarkImages", taskQueue.length);
-
-  async function sleep() {
-    if (!doneFetch.value && taskQueue.length === 0) {
-      console.log("sleep because taskQueue is empty ", taskQueue.length);
-      await new Promise((res) => setTimeout(res, 300));
-      await sleep();
-    }
-  }
-
-  // 如果网络取完了,永不sleep
-  if (!doneFetch.value) {
-    await sleep();
-  }
-  const toProcessTasks = taskQueue.splice(0, MAX_CONCURRENT);
-  try {
-    console.log(toProcessTasks);
-    await window.electron.addWatermarkBatch(toProcessTasks);
-  } catch (error) {
-    console.log(error);
-  }
-
-  if (finished.value) {
-    console.log("被异常结束");
-  } else if (doneFetch.value && taskQueue.length === 0) {
-    finished.value = true;
-  } else {
-    console.log("继续batchWaterMarkImages ", taskQueue.length);
-    await batchWaterMarkImages();
-  }
-}
-
-let finished = ref(false); // 下载结束,无论有错误终止,还是完整下载完毕
-let doneFetch = ref(false); // 下载结束,无论有错误终止,还是完整下载完毕
 const totalCount = ref(0);
 let finishedCount = ref(0);
 let errorCount = ref(0);
@@ -118,7 +79,6 @@ onMounted(async () => {
   try {
     if (config.type === "1") {
       console.log("download start ", Date.now());
-      batchWaterMarkImages();
       const res = await countStudents(store.env.examId, {
         upload: true,
         withSheetUrl: true,
@@ -184,24 +144,21 @@ onMounted(async () => {
               // console.log(await imageRes.data.arrayBuffer());
               // console.log(new Uint8Array(await imageRes.data.arrayBuffer()));
 
-              taskQueue.push({
-                store: storePassedToNodeJs,
-                imageData: arrayBuffer,
-                imageWidth: width,
-                imageHeight: height,
-                file: filePath,
+              await window.electron.addWatermark(
+                storePassedToNodeJs,
+                arrayBuffer,
+                width,
+                height,
+                filePath,
                 student,
-                index: index + 1,
-                trackMode: config.trackMode,
-                x: config.x,
-                y: config.y,
-              });
-
-              // await window.electron.addWatermark();
+                index + 1,
+                config.trackMode,
+                config.x,
+                config.y
+              );
             } catch (error) {
               errorCount.value += 1;
               if (config.failover) {
-                finished.value = true;
                 throw error;
               } else {
                 console.log(student, error);
@@ -209,35 +166,21 @@ onMounted(async () => {
               }
             }
           }
-          //   // 下载完一个学生
+          // 下载完一个学生
           finishedCount.value += 1;
-
-          // 等待照片水印处理,以免进度过快
-          const sleep = async () => {
-            console.log(
-              "sleep because network too fast,  taskQueue.length",
-              taskQueue.length
-            );
-            if (taskQueue.length > 20) {
-              await new Promise((res) => setTimeout(res, 300));
-              await sleep();
-            }
-          };
-          await sleep();
         }
       }
-      doneFetch.value = true;
-      console.log("network end ", Date.now());
+      console.log("all end ", Date.now());
     } else if (config.type === "2") {
       await processPackage();
     }
 
-    // const modal = Modal.success({});
-    // modal.update({
-    //   title: "图片下载完成",
-    //   content: "完成",
-    //   onOk: () => router.back(),
-    // });
+    const modal = Modal.success({});
+    modal.update({
+      title: "图片下载完成",
+      content: "完成",
+      onOk: () => router.back(),
+    });
   } catch (error) {
     const modal = Modal.error({});
     console.log(error);
@@ -249,17 +192,6 @@ onMounted(async () => {
   }
 });
 
-// 只有config==1才会用到
-watch(finished, () => {
-  const modal = Modal.success({});
-  modal.update({
-    title: "图片下载完成",
-    content: "完成",
-    onOk: () => router.back(),
-  });
-  console.log("all end ", Date.now());
-});
-
 async function processPackage() {
   const res = await getPackages(store.env.examId, true, true);
   const array = res.data;
@@ -305,12 +237,5 @@ async function processPackage() {
     }
     finishedCount.value += 1;
   }
-
-  const modal = Modal.success({});
-  modal.update({
-    title: "图片下载完成",
-    content: "完成",
-    onOk: () => router.back(),
-  });
 }
 </script>

+ 3 - 3
src/features/Login/Login.vue

@@ -64,9 +64,9 @@ let password = ref("");
 // server.value = "http://192.168.10.224:80";
 // loginName.value = "admin-test";
 // password.value = "123456";
-// server.value = "https://www.markingcloud.com";
-// loginName.value = "admin-wdsx";
-// password.value = "wdsx!@#";
+server.value = "https://www.markingcloud.com";
+loginName.value = "admin-wdsx";
+password.value = "wdsx!@#";
 // server.value = "http://192.168.10.221:80";
 // loginName.value = "admin-test";
 // password.value = "123456";

+ 2 - 60
src/lib/watermark.ts

@@ -2,52 +2,12 @@ import fs from "fs";
 import path from "path";
 // import sizeOf from "image-size";
 import mkdirp from "mkdirp";
-import { ImageParams, Store, Student } from "@/types";
+import { Store, Student } from "@/types";
 import gmType from "gm";
 
 let gm = null as unknown as typeof gmType;
 
-export async function addWatermarkBatch(
-  imageArray: Array<ImageParams>
-): Promise<boolean> {
-  try {
-    for (const imageParams of imageArray) {
-      const {
-        store,
-        imageData,
-        imageWidth,
-        imageHeight,
-        file,
-        student,
-        index,
-        trackMode,
-        x,
-        y,
-      } = imageParams;
-      const startTime = Date.now();
-      await addWatermark(
-        store,
-        imageData,
-        imageWidth,
-        imageHeight,
-        file,
-        student,
-        index,
-        trackMode,
-        x,
-        y
-      );
-      console.log("watermarked one photo: ", Date.now() - startTime);
-    }
-
-    return true;
-  } catch (error) {
-    console.log(error);
-    return false;
-  }
-}
-
-async function addWatermark(
+export async function addWatermark(
   store: Store,
   imageData: ArrayBuffer,
   imageWidth: number,
@@ -59,24 +19,6 @@ async function addWatermark(
   x = 0.03,
   y = 0.01
 ): Promise<boolean> {
-  // console.log(
-  //   "enter addWatermark2",
-  //   store.config.watermark.fontFile,
-  //   store.config.watermark.color,
-  //   student.objectiveScore
-  // );
-  // console.log(
-  //   store,
-  //   imageData,
-  //   imageWidth,
-  //   imageHeight,
-  //   file,
-  //   student,
-  //   index,
-  //   trackMode,
-  //   x,
-  //   y
-  // );
   if (
     index !== 1 &&
     (student.tags == undefined || student.tags[index] == undefined)

+ 2 - 3
src/preload.ts

@@ -1,7 +1,7 @@
 import { contextBridge, remote } from "electron";
 
 import config from "./lib/config";
-import { saveImage, addWatermarkBatch } from "./lib/watermark";
+import { saveImage, addWatermark } from "./lib/watermark";
 import { queryStudentCount, replaceStudents, replacePackage } from "./lib/sync";
 import { existsSync } from "fs";
 import { join } from "path";
@@ -9,8 +9,7 @@ import { join } from "path";
 export const electronInWindow = {
   dialog: remote.dialog,
   config,
-
-  addWatermarkBatch,
+  addWatermark,
   saveImage,
   queryStudentCount,
   replaceStudents,

+ 0 - 13
src/types/index.ts

@@ -122,16 +122,3 @@ export interface SubjectiveScoreDetail {
   groupNumber: number;
   mainTitle: string;
 }
-
-export interface ImageParams {
-  store: Store;
-  imageData: ArrayBuffer;
-  imageWidth: number;
-  imageHeight: number;
-  file: string;
-  student: Student;
-  index: number;
-  trackMode: string;
-  x?: number;
-  y?: number;
-}