| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- const API = require("../../../lib/API")
- const db = require("../../../plugin/DataBase/db")
- const AccessControl = require("../../../lib/AccessControl")
- const { BaseStdResponse } = require("../../../BaseStdResponse")
- class ApproveSendCountRequest extends API {
- constructor() {
- super()
- this.setPath("/Admin/Goods/SendCountRequest/Approve")
- this.setMethod("POST")
- }
- async onRequest(req, res) {
- let { uuid, session, id } = req.body
- id = Number(id)
- if ([uuid, session, id].some(value => value === "" || value === null || value === undefined || Number.isNaN(id)))
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (!Number.isInteger(id) || id <= 0)
- return res.json({ ...BaseStdResponse.ERR, msg: "参数错误" })
- if (!await AccessControl.checkSession(uuid, session))
- return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- let permission = await AccessControl.getPermission(uuid)
- if (!permission.includes("admin") && !permission.includes("service"))
- return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
- const conn = await db.connect()
- try {
- await conn.beginTransaction()
- const [requestRows] = await conn.execute(
- `SELECT id, receiver_user_id, count, status
- FROM lepao_send_count_request
- WHERE id = ?
- FOR UPDATE`,
- [id]
- )
- if (!requestRows || requestRows.length !== 1) {
- await conn.rollback()
- return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "未找到赠送申请记录!" })
- }
- const request = requestRows[0]
- if (request.status !== "pending") {
- await conn.rollback()
- return res.json({ ...BaseStdResponse.ERR, msg: "该申请已审核,请刷新后重试!" })
- }
- const [incResult] = await conn.execute(
- "UPDATE users SET lepao_count = lepao_count + ? WHERE id = ?",
- [request.count, request.receiver_user_id]
- )
- if (!incResult || incResult.affectedRows !== 1) {
- await conn.rollback()
- return res.json({ ...BaseStdResponse.ERR, msg: "接收用户不存在,审核通过失败!" })
- }
- const [updateResult] = await conn.execute(
- `UPDATE lepao_send_count_request
- SET status = 'approved', reviewer_uuid = ?, reviewed_at = NOW(), reject_reason = NULL
- WHERE id = ?`,
- [uuid, id]
- )
- if (!updateResult || updateResult.affectedRows !== 1) {
- await conn.rollback()
- return res.json({ ...BaseStdResponse.ERR, msg: "更新审核状态失败,请稍后再试!" })
- }
- await conn.commit()
- return res.json({ ...BaseStdResponse.OK, msg: "审核通过成功" })
- } catch (err) {
- try { await conn.rollback() } catch (_) { }
- this.logger.error(`审核通过赠送申请失败!${err.message || "未知错误"}`)
- return res.json({ ...BaseStdResponse.ERR, msg: "审核通过失败,请稍后再试!" })
- }
- }
- }
- module.exports.ApproveSendCountRequest = ApproveSendCountRequest
|