| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- const API = require("../../lib/API.js");
- const db = require("../../plugin/DataBase/db.js");
- const Redis = require('../../plugin/DataBase/Redis');
- const config = require('../../config.json');
- const { BaseStdResponse } = require("../../BaseStdResponse.js");
- const AccessControl = require("../../lib/AccessControl.js");
- class GetAccount extends API {
- constructor() {
- super();
- this.setPath('/Order/Detail');
- this.setMethod('GET');
- }
- async getOrderDetail(uuid, orderId) {
- const sql = `
- SELECT
- a.orderId,
- a.create_time,
- a.price,
- a.state,
- a.pay_id,
- a.pay_type,
- a.pay_time,
- g.name,
- g.content,
- g.icon,
- g.isHot,
- g.description,
- g.category,
- g.features
- FROM
- orders a
- LEFT JOIN
- goods g
- ON
- a.goods_id = g.id
- WHERE
- a.create_user = ?
- AND
- a.orderId = ?
- `;
- const rows = await db.query(sql, [uuid, orderId]);
- return rows?.[0] || null;
- }
- async onRequest(req, res) {
- const { uuid, session, orderId } = req.query;
- if (!uuid || !session || !orderId) {
- return res.json({
- ...BaseStdResponse.MISSING_PARAMETER,
- endpoint: 1513126
- });
- }
- if (!await AccessControl.checkSession(uuid, session)) {
- return res.status(401).json({
- ...BaseStdResponse.ACCESS_DENIED
- });
- }
- let order = await this.getOrderDetail(uuid, orderId);
- if (!order) {
- return res.json({
- ...BaseStdResponse.ERR,
- msg: '订单获取失败!'
- });
- }
- // 订单未支付
- if (order.state === 0) {
- let payData = await Redis.get(`payData:${order.orderId}`);
- if (!payData) {
- // 标记为过期订单
- // await db.query('UPDATE orders SET state = 3 WHERE orderId = ?', [order.orderId]);
- // 重新获取订单信息(更新后的)
- order = await this.getOrderDetail(uuid, orderId);
- if (!order) {
- return res.json({
- ...BaseStdResponse.ERR,
- msg: '订单获取失败!'
- });
- }
- return res.json({
- ...BaseStdResponse.OK,
- data: order
- });
- }
- return res.json({
- ...BaseStdResponse.OK,
- data: order,
- payData: {
- payUrl: `${config.pay.url}/submit.php`,
- payData: JSON.parse(payData)
- }
- });
- }
- // 订单已支付或其他状态
- return res.json({
- ...BaseStdResponse.OK,
- data: order
- });
- }
- }
- module.exports.GetAccount = GetAccount;
|