Files
miniapp-api/src/routes/preset.js
T

104 lines
2.4 KiB
JavaScript

const express = require('express');
const router = express.Router();
const { auth } = require('../middleware/auth');
const PlatformPreset = require('../models/PlatformPreset');
const UserEquity = require('../models/UserEquity');
const User = require('../models/User');
router.get('/', async (req, res, next) => {
try {
const presets = await PlatformPreset.find({ status: 'active' })
.sort({ isHot: -1, sortOrder: 1 })
.lean();
res.json({
success: true,
data: presets
});
} catch (error) {
next(error);
}
});
router.get('/hot', async (req, res, next) => {
try {
const presets = await PlatformPreset.find({ status: 'active', isHot: true })
.sort({ sortOrder: 1 })
.lean();
res.json({
success: true,
data: presets
});
} catch (error) {
next(error);
}
});
router.post('/import/:id', auth, async (req, res, next) => {
try {
const { id } = req.params;
const { expireDate, price } = req.body;
const preset = await PlatformPreset.findById(id);
if (!preset) {
return res.status(404).json({
success: false,
error: '预设平台不存在'
});
}
const user = await User.findById(req.user._id);
if (!user.isVip) {
const userEquityCount = await UserEquity.countDocuments({ owner: req.user._id });
if (userEquityCount >= user.platformLimit) {
return res.status(403).json({
success: false,
error: '非会员最多只能添加15个平台,请升级会员'
});
}
}
if (!expireDate) {
return res.status(400).json({
success: false,
error: '缺少到期时间'
});
}
const equityData = {
platform: preset.platform,
type: preset.type,
expireDate,
price: parseFloat(price) || preset.price || 0,
benefits: preset.benefits.map(b => ({
name: b.name,
type: b.type,
typeLabel: b.typeLabel,
expireDate,
used: false,
usedTime: null
})),
owner: req.user._id,
status: 'active',
note: preset.description || ''
};
const equity = await UserEquity.create(equityData);
user.platformCount = await UserEquity.countDocuments({ owner: req.user._id });
await user.save();
res.status(201).json({
success: true,
data: equity
});
} catch (error) {
next(error);
}
});
module.exports = router;