This commit is contained in:
lik
2026-06-02 13:43:56 +08:00
parent 2577c05c72
commit da60f0e3ef
3 changed files with 31 additions and 42 deletions

View File

@@ -5,18 +5,23 @@ class HandlerEscortRecord {
constructor() {
}
async getMyRecords(ctx) {
async getRecords(ctx) {
try {
const userId = ctx.state.user?._id || ctx.request.query?.userId;
if (!userId) {
return ResponseUtil.badRequest(ctx, "缺少用户ID");
const { page = 1, pageSize = 20, status, userId, appointmentDate } = ctx.request.query;
if (!status || status.length === 0) {
return ResponseUtil.badRequest(ctx, "缺少状态参数");
}
const { page = 1, pageSize = 20, status } = ctx.request.query;
const records = await DBModel.EscortRecord.findRecordsByUser(userId, {
// status解析成数组
const statusArray = status.split(',')
const records = await DBModel.EscortRecord.findRecords({
page: parseInt(page),
pageSize: parseInt(pageSize),
status,
status: statusArray,
userId,
appointmentDate,
});
return ResponseUtil.success(ctx, { records }, "查询成功");

View File

@@ -142,50 +142,34 @@ const EscortRecordSchema = mongoose.Schema(
);
/**
* 根据用户ID查找陪诊记录
*
* @param {ObjectId} userId - 订单提交用户ID
* 查找陪诊记录(支持多条件筛选)
*
* @param {Object} options - 查询选项
* @param {number} [options.page=1] - 页码
* @param {number} [options.pageSize=20] - 每页数量
* @param {string} [options.status] - 状态筛选
* @param {Array<string>} options.status - 状态筛选(必需,数组)
* @param {ObjectId} [options.userId] - 订单提交用户ID可选
* @param {string} [options.appointmentDate] - 预约日期筛选(可选,格式 YYYY-MM-DD
* @param {Function} [cb] - 可选的回调函数
* @returns {Promise<Array>} 陪诊记录列表(按预约日期倒序)
*/
EscortRecordSchema.statics.findRecordsByUser = async function (userId, options = {}, cb) {
const { page = 1, pageSize = 20, status } = options;
const filter = { userId };
EscortRecordSchema.statics.findRecords = async function (options = {}, cb) {
const { page = 1, pageSize = 20, status, userId, appointmentDate } = options;
const filter = {};
if (status) {
filter.status = status;
if (status && Array.isArray(status) && status.length > 0) {
filter.status = { $in: status };
}
const skip = (page - 1) * pageSize;
if (userId) {
filter.userId = userId;
}
return await this.find(filter)
.sort({ "schedule.date": -1 })
.skip(skip)
.limit(pageSize)
.exec(cb);
};
/**
* 根据陪诊员ID查找陪诊记录
*
* @param {ObjectId} attendantId - 陪诊员用户ID
* @param {Object} options - 查询选项
* @param {number} [options.page=1] - 页码
* @param {number} [options.pageSize=20] - 每页数量
* @param {string} [options.status] - 状态筛选
* @param {Function} [cb] - 可选的回调函数
* @returns {Promise<Array>} 陪诊记录列表(按预约日期倒序)
*/
EscortRecordSchema.statics.findRecordsByAttendant = async function (attendantId, options = {}, cb) {
const { page = 1, pageSize = 20, status } = options;
const filter = { "attendant.id": attendantId };
if (status) {
filter.status = status;
if (appointmentDate) {
const start = new Date(appointmentDate);
const end = new Date(start);
end.setDate(end.getDate() + 1);
filter["schedule.date"] = { $gte: start, $lt: end };
}
const skip = (page - 1) * pageSize;

View File

@@ -17,7 +17,7 @@ function registerRoutes(app) {
const handlerEscortRecord = new HandlerEscortRecord();
const handlerResource = new HandlerResource();
router.get("/escort-record/my", handlerEscortRecord.getMyRecords.bind(handlerEscortRecord));
router.get("/escort-record/my", handlerEscortRecord.getRecords.bind(handlerEscortRecord));
router.get("/escort-record/attendant", handlerEscortRecord.getAttendantRecords.bind(handlerEscortRecord));
router.get("/escort-record/:id", handlerEscortRecord.getRecordById.bind(handlerEscortRecord));
router.post("/escort-record", handlerEscortRecord.createRecord.bind(handlerEscortRecord));