| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- const API = require("../../lib/API")
- const db = require("../../plugin/DataBase/db")
- const AccessControl = require("../../lib/AccessControl")
- const { BaseStdResponse } = require("../../BaseStdResponse")
- class GetMySendCountRequestList extends API {
- constructor() {
- super()
- this.setPath("/Goods/SendCountRequest/MyList")
- this.setMethod("GET")
- }
- async onRequest(req, res) {
- let { uuid, session, pagesize, current, direction, status } = req.query
- if ([uuid, session, pagesize, current].some(value => value === "" || value === null || value === undefined))
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (isNaN(pagesize) || pagesize <= 0 || pagesize > 50 || isNaN(current) || current <= 0)
- return res.json({ ...BaseStdResponse.ERR, msg: "参数错误" })
- if (!await AccessControl.checkSession(uuid, session))
- return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- const directionList = ["sent", "received"]
- if (direction && !directionList.includes(direction))
- return res.json({ ...BaseStdResponse.ERR, msg: "direction参数错误" })
- const statusList = ["pending", "approved", "rejected"]
- if (status && !statusList.includes(status))
- return res.json({ ...BaseStdResponse.ERR, msg: "status参数错误" })
- const userRows = await db.query("SELECT id FROM users WHERE uuid = ?", [uuid])
- if (!userRows || userRows.length !== 1)
- return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "获取用户信息失败!" })
- const userId = userRows[0].id
- const offset = (Number(current) - 1) * Number(pagesize)
- let sql = `
- SELECT
- r.id,
- r.sender_uuid,
- su.username AS sender_username,
- su.avatar AS sender_avatar,
- r.receiver_user_id,
- ru.username AS receiver_username,
- ru.avatar AS receiver_avatar,
- CASE WHEN r.sender_uuid = ? THEN 'sent' ELSE 'received' END AS direction,
- CASE WHEN r.sender_uuid = ? THEN ru.username ELSE su.username END AS counterparty_username,
- CASE WHEN r.sender_uuid = ? THEN ru.avatar ELSE su.avatar END AS counterparty_avatar,
- r.count,
- r.status,
- r.created_at,
- r.reviewed_at,
- r.reject_reason
- FROM
- lepao_send_count_request r
- LEFT JOIN users su ON su.uuid = r.sender_uuid
- LEFT JOIN users ru ON ru.id = r.receiver_user_id
- WHERE
- (r.sender_uuid = ? OR r.receiver_user_id = ?)
- `
- let countSql = `
- SELECT COUNT(*) AS total
- FROM
- lepao_send_count_request r
- WHERE
- (r.sender_uuid = ? OR r.receiver_user_id = ?)
- `
- const params = [uuid, uuid, uuid, uuid, userId]
- const countParams = [uuid, userId]
- if (direction === "sent") {
- sql += ` AND r.sender_uuid = ?`
- countSql += ` AND r.sender_uuid = ?`
- params.push(uuid)
- countParams.push(uuid)
- }
- if (direction === "received") {
- sql += ` AND r.receiver_user_id = ?`
- countSql += ` AND r.receiver_user_id = ?`
- params.push(userId)
- countParams.push(userId)
- }
- if (status) {
- sql += ` AND r.status = ?`
- countSql += ` AND r.status = ?`
- params.push(status)
- countParams.push(status)
- }
- sql += `
- ORDER BY r.id DESC
- LIMIT ? OFFSET ?
- `
- params.push(String(pagesize), String(offset))
- const rows = await db.query(sql, params)
- const countRows = await db.query(countSql, countParams)
- if (!rows || !countRows)
- return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "获取赠送记录失败!" })
- res.json({
- ...BaseStdResponse.OK,
- data: rows,
- pagination: {
- current: Number(current),
- pagesize: Number(pagesize),
- total: countRows[0]?.total || 0
- }
- })
- }
- }
- module.exports.GetMySendCountRequestList = GetMySendCountRequestList
|