| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const messageRecordModel_1 = require("../models/messageRecordModel");
- const mongoose_1 = require("mongoose");
- class MessageRecordController {
- /**
- * @route POST /api/message-record
- * @desc Creates a new message record
- * @access Private
- */
- async createRecord(req, res) {
- try {
- const newRecord = new messageRecordModel_1.MessageRecord(req.body);
- await newRecord.save();
- return res.status(201).json({ success: true, data: newRecord });
- }
- catch (error) {
- console.error("Error creating message record:", error);
- return res.status(500).json({ success: false, message: "Server error", error: error.message });
- }
- }
- /**
- * @route GET /api/message-records
- * @desc Retrieves all message records with pagination and optional filters
- * @access Private
- */
- async getPaginatedRecords(req, res) {
- const { page = 1, limit = 30, uid, activityId, status, startDate, endDate } = req.query;
- const pageNum = parseInt(page, 10);
- const limitNum = parseInt(limit, 10);
- // 动态构建查询过滤器
- const filters = {};
- if (uid) {
- filters.uid = uid;
- }
- if (activityId) {
- // 检查 activityId 是否是有效的 ObjectId 格式
- if (!(0, mongoose_1.isObjectIdOrHexString)(activityId)) {
- return res.status(400).json({ success: false, message: "Invalid activityId" });
- }
- filters.activityId = activityId;
- }
- if (status) {
- const statusNum = parseInt(status, 30);
- if (!isNaN(statusNum)) {
- filters.status = statusNum;
- }
- }
- // 处理日期范围筛选,默认为 createdAt
- if (startDate || endDate) {
- filters.createdAt = {};
- if (startDate) {
- filters.createdAt.$gte = new Date(startDate);
- }
- if (endDate) {
- filters.createdAt.$lte = new Date(endDate);
- }
- }
- try {
- const records = await messageRecordModel_1.MessageRecord.find(filters)
- .sort({ createdAt: -1 })
- .skip((pageNum - 1) * limitNum)
- .limit(limitNum);
- const total = await messageRecordModel_1.MessageRecord.countDocuments(filters);
- return res.status(200).json({
- success: true,
- data: records,
- pagination: {
- total,
- page: pageNum,
- limit: limitNum,
- totalPages: Math.ceil(total / limitNum),
- },
- });
- }
- catch (error) {
- console.error("Error fetching paginated records:", error);
- return res.status(500).json({ success: false, message: "Server error", error: error.message });
- }
- }
- /**
- * @route GET /api/message-records/user/:uid
- * @desc Retrieves message records by user UID
- * @access Private
- */
- async getRecordsByUid(req, res) {
- try {
- const records = await messageRecordModel_1.MessageRecord.find({ uid: req.params.uid }).sort({ createdAt: -1 });
- if (!records || records.length === 0) {
- return res.status(404).json({ success: false, message: "No records found for this user" });
- }
- return res.status(200).json({ success: true, data: records });
- }
- catch (error) {
- console.error("Error fetching records by user UID:", error);
- return res.status(500).json({ success: false, message: "Server error", error: error.message });
- }
- }
- /**
- * @route GET /api/message-records/activity/:activityId
- * @desc Retrieves message records by activity ID
- * @access Private
- */
- async getRecordsByActivityId(req, res) {
- try {
- // 检查 activityId 是否是有效的 ObjectId 格式
- if (!(0, mongoose_1.isObjectIdOrHexString)(req.params.activityId)) {
- return res.status(400).json({ success: false, message: "Invalid activityId" });
- }
- const records = await messageRecordModel_1.MessageRecord.find({ activityId: req.params.activityId }).sort({ createdAt: -1 });
- if (!records || records.length === 0) {
- return res.status(404).json({ success: false, message: "No records found for this activity" });
- }
- return res.status(200).json({ success: true, data: records });
- }
- catch (error) {
- console.error("Error fetching records by activity ID:", error);
- return res.status(500).json({ success: false, message: "Server error", error: error.message });
- }
- }
- /**
- * @route GET /api/message-record/:id
- * @desc Retrieves a single message record by ID
- * @access Private
- */
- async getRecordById(req, res) {
- try {
- // 检查 id 是否是有效的 ObjectId 格式
- if (!(0, mongoose_1.isObjectIdOrHexString)(req.params.id)) {
- return res.status(400).json({ success: false, message: "Invalid record ID" });
- }
- const record = await messageRecordModel_1.MessageRecord.findById(req.params.id);
- if (!record) {
- return res.status(404).json({ success: false, message: "Message record not found" });
- }
- return res.status(200).json({ success: true, data: record });
- }
- catch (error) {
- console.error("Error fetching message record by ID:", error);
- return res.status(500).json({ success: false, message: "Server error", error: error.message });
- }
- }
- /**
- * @route PUT /api/message-record/:id
- * @desc Updates the status of a message record
- * @access Private
- */
- async updateRecord(req, res) {
- try {
- // 检查 id 是否是有效的 ObjectId 格式
- if (!(0, mongoose_1.isObjectIdOrHexString)(req.params.id)) {
- return res.status(400).json({ success: false, message: "Invalid record ID" });
- }
- const updatedRecord = await messageRecordModel_1.MessageRecord.findByIdAndUpdate(req.params.id, req.body, { new: true, runValidators: true });
- if (!updatedRecord) {
- return res.status(404).json({ success: false, message: "Message record not found" });
- }
- return res.status(200).json({ success: true, data: updatedRecord });
- }
- catch (error) {
- console.error("Error updating message record:", error);
- return res.status(500).json({ success: false, message: "Server error", error: error.message });
- }
- }
- }
- exports.default = new MessageRecordController();
|