Initial backend code

This commit is contained in:
Developer
2026-05-02 12:49:41 +08:00
commit 8bab5d67b2
21 changed files with 7616 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
const express = require('express');
const router = express.Router();
const { auth } = require('../middleware/auth');
const User = require('../models/User');
router.get('/profile', auth, async (req, res, next) => {
try {
const user = await User.findById(req.user._id).select('-__v');
res.json({
success: true,
data: user
});
} catch (error) {
next(error);
}
});
router.put('/profile', auth, async (req, res, next) => {
try {
const allowedUpdates = ['nickname', 'avatarUrl', 'phoneNumber', 'profile'];
const updates = {};
Object.keys(req.body).forEach(key => {
if (allowedUpdates.includes(key)) {
updates[key] = req.body[key];
}
});
const user = await User.findByIdAndUpdate(
req.user._id,
updates,
{ new: true, runValidators: true }
).select('-__v');
res.json({
success: true,
data: user
});
} catch (error) {
next(error);
}
});
router.get('/stats', auth, async (req, res, next) => {
try {
const Equity = require('../models/Equity');
const Trade = require('../models/Trade');
const [totalEquities, activeEquities, totalTrades, sellingTrades] = await Promise.all([
Equity.countDocuments({ owner: req.user._id }),
Equity.countDocuments({ owner: req.user._id, status: 'active' }),
Trade.countDocuments({ $or: [{ seller: req.user._id }, { buyer: req.user._id }] }),
Trade.countDocuments({ seller: req.user._id, status: 'pending' })
]);
res.json({
success: true,
data: {
totalEquities,
activeEquities,
totalTrades,
sellingTrades
}
});
} catch (error) {
next(error);
}
});
module.exports = router;