Browse Source

更新乐跑功能

Pchen0 11 months ago
parent
commit
938dbfb66d
4 changed files with 167 additions and 0 deletions
  1. 54 0
      apis/Lepao/AddAccount.js
  2. 49 0
      apis/Lepao/DeleteAccount.js
  3. 62 0
      apis/Lepao/GetAccount.js
  4. 2 0
      lib/IC/IC.js

+ 54 - 0
apis/Lepao/AddAccount.js

@@ -0,0 +1,54 @@
+const API = require("../../lib/API.js");
+const db = require("../../plugin/DataBase/db.js");
+const { BaseStdResponse } = require("../../BaseStdResponse.js");
+const AccessControl = require("../../lib/AccessControl");
+
+class GetType extends API {
+    constructor() {
+        super();
+
+        this.setPath('/Lepao/Account')
+        this.setMethod('POST')
+    }
+
+    async onRequest(req, res) {
+        let { uuid, session, student_num } = req.body
+
+        if ([uuid, session, student_num].some(value => value === '' || value === null || value === undefined))
+            return res.json({
+                ...BaseStdResponse.MISSING_PARAMETER,
+                endpoint: 1513126
+            })
+
+        if (!await AccessControl.checkSession(uuid, session))
+            return res.status(401).json({
+                ...BaseStdResponse.ACCESS_DENIED
+            })
+
+        const time = new Date().getTime()
+
+        let sql, r
+
+        sql = 'INSERT INTO lepao_account (student_num, create_user, create_time) VALUES (?, ?, ?, ?)'
+        r = await db.query(sql, [student_num, uuid, time])
+
+        try {
+            if (r && r.affectedRows > 0) {
+                res.json({
+                    ...BaseStdResponse.OK,
+                    id: r.insertId
+                })
+            } else {
+                res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '添加乐跑账号失败!数据库错误' })
+            }
+        } catch (err) {
+            this.logger.error(`添加乐跑账号失败!${err.stack}`)
+            res.json({
+                ...BaseStdResponse.ERR,
+                msg: "添加乐跑账号失败!",
+            });
+        }
+    }
+}
+
+module.exports.GetType = GetType;

+ 49 - 0
apis/Lepao/DeleteAccount.js

@@ -0,0 +1,49 @@
+const API = require("../../lib/API");
+const db = require("../../plugin/DataBase/db");
+const AccessControl = require("../../lib/AccessControl");
+const { BaseStdResponse } = require("../../BaseStdResponse");
+
+class DeleteAccount extends API {
+    constructor() {
+        super();
+
+        this.setPath('/Lepao/Account')
+        this.setMethod('DELETE')
+    }
+
+    async onRequest(req, res) {
+        let { uuid, session, id } = req.body
+
+        if ([uuid, session, id].some(value => value === '' || value === null || value === undefined))
+            return res.json({
+                ...BaseStdResponse.MISSING_PARAMETER
+            })
+
+        // 检查 session
+        if (!await AccessControl.checkSession(uuid, session))
+            return res.status(401).json({
+                ...BaseStdResponse.ACCESS_DENIED
+            })
+
+        let sql = 'DELETE FROM lepao_account WHERE id = ? AND create_user = ?'
+        let r = await db.query(sql, [id, uuid])
+
+        try {
+            if (r && r.affectedRows > 0) {
+                res.json({
+                    ...BaseStdResponse.OK
+                })
+            } else {
+                res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '删除账号失败!数据库错误' })
+            }
+        } catch (err) {
+            this.logger.error(`删除账号失败!${err.stack}`)
+            res.json({
+                ...BaseStdResponse.ERR,
+                msg: "删除账号失败!",
+            });
+        }
+    }
+}
+
+module.exports.DeleteAccount = DeleteAccount

+ 62 - 0
apis/Lepao/GetAccount.js

@@ -0,0 +1,62 @@
+const API = require("../../lib/API.js");
+const db = require("../../plugin/DataBase/db.js");
+const { BaseStdResponse } = require("../../BaseStdResponse.js");
+const AccessControl = require("../../lib/AccessControl");
+
+class GetAccount extends API {
+    constructor() {
+        super();
+
+        this.setPath('/Lepao/Account')
+        this.setMethod('GET')
+    }
+
+    async onRequest(req, res) {
+        let { uuid, session } = req.query
+
+        if ([uuid, session].some(value => value === '' || value === null || value === undefined))
+            return res.json({
+                ...BaseStdResponse.MISSING_PARAMETER,
+                endpoint: 1513126
+            })
+
+        if (!await AccessControl.checkSession(uuid, session))
+            return res.status(401).json({
+                ...BaseStdResponse.ACCESS_DENIED
+            })
+
+        let sql = `
+                SELECT 
+                    a.id,
+                    a.username,
+                    a.name,
+                    a.student_num,
+                    a.create_time,
+                    a.update_time,
+                    a.state,
+                    u.username AS create_user
+                FROM 
+                    lepao_account a
+                LEFT JOIN 
+                    users u 
+                ON 
+                    a.create_user = u.uuid
+                WHERE 
+                    a.create_user = ?
+            `
+
+        let rows = await db.query(sql, [uuid])
+
+        if (!rows)
+            return res.json({
+                ...BaseStdResponse.DATABASE_ERR
+            })
+
+        res.json({
+            ...BaseStdResponse.OK,
+            data: rows
+        })
+    }
+}
+
+module.exports.GetAccount = GetAccount;

+ 2 - 0
lib/IC/IC.js

@@ -33,7 +33,9 @@ class IC {
         return new Promise(async (resolve, reject) => {
             const url = config.url2 + '/login'
             try {
+                console.log('begin')
                 const res = await axios.post(url, { username, password })
+                console.log(res)
                 if (!res || res.data.code !== 0 || !res.data.ic_cookie) {
                     if (res.data && res.data.code === 401) {
                         let sql = 'UPDATE jw_account SET state = 2 WHERE username = ?'