tmp
This commit is contained in:
@@ -5,18 +5,23 @@ class HandlerEscortRecord {
|
|||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMyRecords(ctx) {
|
async getRecords(ctx) {
|
||||||
try {
|
try {
|
||||||
const userId = ctx.state.user?._id || ctx.request.query?.userId;
|
const { page = 1, pageSize = 20, status, userId, appointmentDate } = ctx.request.query;
|
||||||
if (!userId) {
|
|
||||||
return ResponseUtil.badRequest(ctx, "缺少用户ID");
|
if (!status || status.length === 0) {
|
||||||
|
return ResponseUtil.badRequest(ctx, "缺少状态参数");
|
||||||
}
|
}
|
||||||
|
|
||||||
const { page = 1, pageSize = 20, status } = ctx.request.query;
|
// status解析成数组
|
||||||
const records = await DBModel.EscortRecord.findRecordsByUser(userId, {
|
const statusArray = status.split(',')
|
||||||
|
|
||||||
|
const records = await DBModel.EscortRecord.findRecords({
|
||||||
page: parseInt(page),
|
page: parseInt(page),
|
||||||
pageSize: parseInt(pageSize),
|
pageSize: parseInt(pageSize),
|
||||||
status,
|
status: statusArray,
|
||||||
|
userId,
|
||||||
|
appointmentDate,
|
||||||
});
|
});
|
||||||
|
|
||||||
return ResponseUtil.success(ctx, { records }, "查询成功");
|
return ResponseUtil.success(ctx, { records }, "查询成功");
|
||||||
|
|||||||
@@ -142,50 +142,34 @@ const EscortRecordSchema = mongoose.Schema(
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据用户ID查找陪诊记录
|
* 查找陪诊记录(支持多条件筛选)
|
||||||
*
|
*
|
||||||
* @param {ObjectId} userId - 订单提交用户ID
|
|
||||||
* @param {Object} options - 查询选项
|
* @param {Object} options - 查询选项
|
||||||
* @param {number} [options.page=1] - 页码
|
* @param {number} [options.page=1] - 页码
|
||||||
* @param {number} [options.pageSize=20] - 每页数量
|
* @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] - 可选的回调函数
|
* @param {Function} [cb] - 可选的回调函数
|
||||||
* @returns {Promise<Array>} 陪诊记录列表(按预约日期倒序)
|
* @returns {Promise<Array>} 陪诊记录列表(按预约日期倒序)
|
||||||
*/
|
*/
|
||||||
EscortRecordSchema.statics.findRecordsByUser = async function (userId, options = {}, cb) {
|
EscortRecordSchema.statics.findRecords = async function (options = {}, cb) {
|
||||||
const { page = 1, pageSize = 20, status } = options;
|
const { page = 1, pageSize = 20, status, userId, appointmentDate } = options;
|
||||||
const filter = { userId };
|
const filter = {};
|
||||||
|
|
||||||
if (status) {
|
if (status && Array.isArray(status) && status.length > 0) {
|
||||||
filter.status = status;
|
filter.status = { $in: status };
|
||||||
}
|
}
|
||||||
|
|
||||||
const skip = (page - 1) * pageSize;
|
if (userId) {
|
||||||
|
filter.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
return await this.find(filter)
|
if (appointmentDate) {
|
||||||
.sort({ "schedule.date": -1 })
|
const start = new Date(appointmentDate);
|
||||||
.skip(skip)
|
const end = new Date(start);
|
||||||
.limit(pageSize)
|
end.setDate(end.getDate() + 1);
|
||||||
.exec(cb);
|
filter["schedule.date"] = { $gte: start, $lt: end };
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据陪诊员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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const skip = (page - 1) * pageSize;
|
const skip = (page - 1) * pageSize;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ function registerRoutes(app) {
|
|||||||
const handlerEscortRecord = new HandlerEscortRecord();
|
const handlerEscortRecord = new HandlerEscortRecord();
|
||||||
const handlerResource = new HandlerResource();
|
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/attendant", handlerEscortRecord.getAttendantRecords.bind(handlerEscortRecord));
|
||||||
router.get("/escort-record/:id", handlerEscortRecord.getRecordById.bind(handlerEscortRecord));
|
router.get("/escort-record/:id", handlerEscortRecord.getRecordById.bind(handlerEscortRecord));
|
||||||
router.post("/escort-record", handlerEscortRecord.createRecord.bind(handlerEscortRecord));
|
router.post("/escort-record", handlerEscortRecord.createRecord.bind(handlerEscortRecord));
|
||||||
|
|||||||
Reference in New Issue
Block a user