Bläddra i källkod

针对分题新环境的功能修改

luoshi 4 år sedan
förälder
incheckning
4232d8dffe
6 ändrade filer med 39 tillägg och 42 borttagningar
  1. 3 3
      config.json
  2. 1 0
      source/.eslintrc.json
  3. 4 13
      source/lib/api.js
  4. 13 12
      source/lib/image.js
  5. 12 6
      source/test/api-test.js
  6. 6 8
      source/test/image-test.js

+ 3 - 3
config.json

@@ -11,7 +11,7 @@
         "package": "/{{examId}}/{{code}}/{{index}}.jpg"
     },
     "watermark": {
-        "fontFile": "resources/font/simsun.ttf",
+        "fontFile": "/Users/luoshi/test/pdf3/font/simsun.ttf",
         "color": "#ff0000"
     },
     "logger": {
@@ -24,8 +24,8 @@
             "host": "https://ft.markingcloud.com"
         },
         {
-            "name": "局域网",
-            "host": "http://192.168.10.120:8080"
+            "name": "测试环境",
+            "host": "http://hsyw.markingcloud.com"
         }
     ]
 }

+ 1 - 0
source/.eslintrc.json

@@ -13,6 +13,7 @@
         "sourceType": "module"
     },
     "rules": {
+        "no-console": "off",
         "no-constant-condition": [
             "error",
             {

+ 4 - 13
source/lib/api.js

@@ -63,19 +63,10 @@ module.exports.getStudents = function (examId, pageNumber, pageSize, params) {
     return execute('/api/exam/students', 'POST', form);
 }
 
-module.exports.countStudents = function (examId, upload, absent) {
-    let uri = '/api/students/count/' + examId
-    let param = []
-    if (upload != undefined) {
-        param.push('upload=' + (upload ? 'true' : 'false'))
-    }
-    if (absent != undefined) {
-        param.push('absent=' + (absent ? 'true' : 'false'))
-    }
-    if (param.length > 0) {
-        uri = uri + '?' + param.join('&')
-    }
-    return execute(uri, 'GET')
+module.exports.countStudents = function (examId, params) {
+    params = params || {}
+    params.examId = examId
+    return execute('/api/exam/student/count', 'POST', params)
 }
 
 module.exports.getPackages = function (examId, upload, withUrl) {

+ 13 - 12
source/lib/image.js

@@ -41,8 +41,8 @@ class executor extends EventEmitter {
     async addWatermark(image, file, student, index, showMarker, showHeader) {
         let fontFile = config.watermark.fontFile
         let color = config.watermark.color
-        let imgData = gm(image)
         let size = sizeOf(image)
+        let imgData = gm(image)
         //添加第一页的得分明细
         if (index == 1) {
             //初始坐标
@@ -150,17 +150,19 @@ class executor extends EventEmitter {
             request_util({
                 url: url,
                 method: 'GET',
+                encoding: null,
                 timeout: 3000,
                 maxAttempts: 3,
                 retryDelay: 500,
                 retryStrategy: request_util.RetryStrategies.HTTPOrNetworkError
             }, function (error, response, body) {
-                if (response.statusCode == 200) {
-                    resolve(body);
+                if (!error && response.statusCode == 200) {
+                    resolve(body)
                 } else {
-                    let message = response.statusCode + ' ' + (error || '') + (response.headers['error-info'] || '')
-                    logger.error(message)
-                    reject(message)
+                    logger.error(error || (url + ' download error'))
+                    error = error || {}
+                    error.code = response ? response.statusCode : 500
+                    reject(error)
                 }
             })
         })
@@ -209,8 +211,12 @@ class executor extends EventEmitter {
     }
 
     async downloadSheet(dir, template, append, failover, watermark, showMarker, showHeader, params) {
+        params.upload = true
+        params.withSheetUrl = true
+        params.withScoreDetail = watermark === true
+        params.withMarkTrack = watermark === true
         try {
-            let totalCount = await api.countStudents(env.examId, true)
+            let totalCount = await api.countStudents(env.examId, params)
             this.emit('total', totalCount)
 
             let count = 0
@@ -218,11 +224,6 @@ class executor extends EventEmitter {
             this.emit('count', 0)
             for (;;) {
                 pageNumber++
-
-                params.upload = true
-                params.withSheeturl = true
-                params.withScoreDetail = watermark === true
-                params.withMarkTrack = watermark === true
                 let array = await api.getStudents(env.examId, pageNumber, 10, params)
                 if (array == undefined || array.length == 0) {
                     break

+ 12 - 6
source/test/api-test.js

@@ -5,11 +5,17 @@ var env = require('../lib/env.js')
 async function run() {
     //console.log(await api.countStudents(1, true));
     //let array = await api.getPackages(265)
-    let array = await api.getStudents(153, 1, 1, true, undefined, true, true)
-    console.log(JSON.stringify(array));
+    let array = await api.getStudents(3, 1, 10, {
+        subjectCode: 'B149',
+        upload: true,
+        withSheetUrl: true,
+        withScoreDetail: true,
+        withMarkTrack: true
+    })
+    console.log(JSON.stringify(array))
 }
 
-env.server = config.servers[2]
-env.loginName = 'admin-wdyy'
-env.password = '123'
-run();
+env.server = config.servers[1]
+env.loginName = 'yhxy'
+env.password = '123456'
+run()

+ 6 - 8
source/test/image-test.js

@@ -1,10 +1,8 @@
 const image = require('../lib/image.js')()
-const upyun = require('../lib/upyun.js')
-const config = require('../lib/config.js')
 
-let client = upyun('gx-sheet', config.upyun.operator, config.upyun.password)
-image.downloadFile('/55-1402/20053A/181000885-2.jpg', '/1.jpg', {}, '/Users/luoshi', client, 'gx-sheet', false).then(() => {
-    console.log('success')
-}).catch(err => {
-    console.log(err)
-})
+async function test() {
+    await image.downloadUrl('https://ft-slice.markingcloud.com/266-197/103/20173403793-9.jpg')
+    //require('fs').writeFileSync('/Users/luoshi/Downloads/test.jpg', data)
+}
+
+test()