feat: 完整支付配套——CoinLedger流水模型+充值/消费/退款全链写流水+管理后台订单/余额/退款/调整/统计页+用户明细页+余额卡明细入口

This commit is contained in:
2026-09-14 12:26:41 +08:00
parent 968396bed5
commit f13309e6cd
11 changed files with 497 additions and 36 deletions
+19
View File
@@ -0,0 +1,19 @@
const mongoose = require('mongoose')
/**
* 星尘余额流水 —— 每次充值/消费/退款/管理员调整都记一条
*/
const CoinLedgerSchema = new mongoose.Schema({
openid: { type: String, required: true, index: true },
userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', index: true },
// recharge=充值 | consume=消费 | refund=退款 | adjust=管理员调整 | gift=赠送
type: { type: String, enum: ['recharge', 'consume', 'refund', 'adjust', 'gift'], required: true },
amount: { type: Number, required: true }, // 正=入账 负=扣减
balanceAfter: { type: Number, required: true }, // 操作后余额(对账用)
description: { type: String, default: '' },
orderNo: { type: String, default: '', index: true },
adminName: { type: String, default: '' }, // adjust 时记录操作管理员
createdAt: { type: Date, default: Date.now, index: true }
})
module.exports = mongoose.model('CoinLedger', CoinLedgerSchema)
+31 -29
View File
@@ -1,29 +1,31 @@
const User = require('./User')
const Order = require('./Order')
const Knowledge = require('./Knowledge')
const KnowledgeLit = require('./KnowledgeLit')
const ShopItem = require('./ShopItem')
const Admin = require('./Admin')
const AdminLog = require('./AdminLog')
const AIChatQuota = require('./AIChatQuota')
const AIModel = require('./AIModel')
const LoginLog = require('./LoginLog')
const Feedback = require('./Feedback')
const Trend = require('./Trend')
const VerificationCode = require('./VerificationCode')
module.exports = {
User,
Order,
Knowledge,
KnowledgeLit,
ShopItem,
Admin,
AdminLog,
AIChatQuota,
AIModel,
LoginLog,
Feedback,
Trend,
VerificationCode
}
const User = require('./User')
const Order = require('./Order')
const Knowledge = require('./Knowledge')
const KnowledgeLit = require('./KnowledgeLit')
const ShopItem = require('./ShopItem')
const Admin = require('./Admin')
const AdminLog = require('./AdminLog')
const AIChatQuota = require('./AIChatQuota')
const AIModel = require('./AIModel')
const LoginLog = require('./LoginLog')
const Feedback = require('./Feedback')
const Trend = require('./Trend')
const VerificationCode = require('./VerificationCode')
const CoinLedger = require('./CoinLedger')
module.exports = {
User,
Order,
Knowledge,
KnowledgeLit,
ShopItem,
Admin,
AdminLog,
AIChatQuota,
AIModel,
LoginLog,
Feedback,
Trend,
VerificationCode,
CoinLedger
}