const API = require("../../lib/API"); const { BaseStdResponse } = require("../../BaseStdResponse"); const db = require("../../plugin/DataBase/db"); const AccessControl = require("../../lib/AccessControl"); class AddAttendanceItems extends API { constructor() { super(); this.setPath('/Attendance'); this.setMethod('POST'); } async onRequest(req, res) { let { uuid, session, name, user, day_of_week, loopy, begintime, endtime, position, radius, address, admin } = req.body; // 检查必需的参数是否缺失 if ([uuid, session, name, user, day_of_week, loopy, begintime, endtime, position, radius].some(value => value === '' || value === null || value === undefined)) { res.json({ ...BaseStdResponse.MISSING_PARAMETER, endpoint: 1513123 }); return; } // 检查 session 是否有效 if (!await AccessControl.checkSession(uuid, session)) { res.json({ ...BaseStdResponse.ACCESS_DENIED, endpoint: 48153145 }); return; } // 确认权限 let permission = await AccessControl.getPermission(uuid); if (!permission.includes('admin') && !permission.includes('manage')) { res.json({ ...BaseStdResponse.PERMISSION_DENIED, endpoint: 481454 }); return; } user = user.split('|'); admin = admin.split('|'); let uuids = [], admins = []; try { uuids = await AccessControl.checkUser(user); if(admin != '') admins = await AccessControl.checkUser(admin, true); } catch (error) { return res.json({ ...BaseStdResponse.ERR, endpoint: 513513, msg: error.message }); } // 插入数据 const sql = `INSERT INTO kq_items (name, createUser, createTime, user, day_of_week, loopy, begintime, endtime, position, radius, address, admin) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`; const values = [ name, uuid, new Date().getTime(), JSON.stringify(uuids), day_of_week, loopy, begintime, endtime, JSON.stringify(position), radius, address, JSON.stringify(admins) ]; try { const result = await db.query(sql, values); if (result.affectedRows !== 1) { res.json({ ...BaseStdResponse.DATABASE_ERR, endpoint: 513513 }); return; } res.json({ ...BaseStdResponse.OK }); } catch (error) { res.json({ ...BaseStdResponse.DATABASE_ERR, endpoint: 513513, msg: error.message }); } } } module.exports.AddAttendanceItems = AddAttendanceItems;