| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- const API = require("../../../lib/API")
- const db = require("../../../plugin/DataBase/db")
- const AccessControl = require("../../../lib/AccessControl")
- const { BaseStdResponse } = require("../../../BaseStdResponse")
- const { evaluateRefundEligibility } = require("../../../lib/OrderRefundService")
- class GetOrderDetail extends API {
- constructor() {
- super()
- this.setPath('/Admin/Order/Detail')
- this.setMethod('get')
- }
- async onRequest(req, res) {
- const { uuid, session, orderId } = req.query
- if (!uuid || !session || !orderId) {
- return res.json({
- ...BaseStdResponse.MISSING_PARAMETER
- })
- }
- 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("product")) {
- return res.json({
- ...BaseStdResponse.PERMISSION_DENIED
- })
- }
- const sql = `
- SELECT
- o.orderId,
- o.create_time,
- o.pay_time,
- o.price,
- o.original_price,
- o.discount_amount,
- o.coupon_code,
- o.state,
- o.pay_id,
- o.pay_type,
- o.goods_id,
- o.create_user,
- g.name,
- g.content,
- g.icon,
- g.isHot,
- g.description,
- g.category,
- g.features,
- g.lepao_count,
- g.ic_count,
- g.vip,
- u.username,
- u.avatar,
- u.email AS user_email
- FROM
- orders o
- LEFT JOIN
- goods g ON o.goods_id = g.id
- LEFT JOIN
- users u ON o.create_user = u.uuid
- WHERE
- o.orderId = ?
- `
- const rows = await db.query(sql, [orderId])
- if (!rows || rows.length !== 1) {
- return res.json({
- ...BaseStdResponse.ERR,
- msg: '订单不存在'
- })
- }
- const order = rows[0]
- const userRows = await db.query(
- 'SELECT lepao_count FROM users WHERE uuid = ? LIMIT 1',
- [order.create_user]
- )
- const userLepaoCount = userRows?.[0]?.lepao_count ?? 0
- const refundEligibility = evaluateRefundEligibility({
- state: order.state,
- payTime: order.pay_time,
- userLepaoCount,
- goodsLepaoCount: order.lepao_count,
- skipTimeLimit: true
- })
- order.canRefund = refundEligibility.canRefund
- order.refundDisabledReason = refundEligibility.reason
- order.user_lepao_count = Number(userLepaoCount || 0)
- res.json({
- ...BaseStdResponse.OK,
- data: order
- })
- }
- }
- module.exports.GetOrderDetail = GetOrderDetail
|