|
@@ -29,7 +29,7 @@ export const GET = withAuth(async (request) => {
|
|
|
}
|
|
|
|
|
|
const searchQuery = {};
|
|
|
-
|
|
|
+ let sortParams = {};
|
|
|
for (const [key, value] of searchParams.entries()) {
|
|
|
if (["current", "pageSize"].includes(key)) continue;
|
|
|
|
|
@@ -54,13 +54,26 @@ export const GET = withAuth(async (request) => {
|
|
|
case "id":
|
|
|
searchQuery._id = value;
|
|
|
break;
|
|
|
+ case "sort":
|
|
|
+ if (value && value != '{}') {
|
|
|
+ const sortObj = JSON.parse(value);
|
|
|
+ const sortField = Object.keys(sortObj)[0]; // 获取字段名,例如 'points'
|
|
|
+ if (sortObj[sortField] === "ascend") {
|
|
|
+ sortParams[sortField] = 1; // 升序
|
|
|
+ } else {
|
|
|
+ sortParams[sortField] = -1; // 降序
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
const skip = (current - 1) * pageSize;
|
|
|
const totalUsers = await User.countDocuments(searchQuery);
|
|
|
- const usersData = await User.aggregate([
|
|
|
+
|
|
|
+ // 构建聚合管道
|
|
|
+ const pipeline = [
|
|
|
{ $match: searchQuery },
|
|
|
{ $project: { password: 0 } },
|
|
|
{
|
|
@@ -73,7 +86,14 @@ export const GET = withAuth(async (request) => {
|
|
|
{ $sort: { sortOrder: 1, createdAt: -1 } },
|
|
|
{ $skip: skip },
|
|
|
{ $limit: pageSize },
|
|
|
- ]);
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+ if (Object.keys(sortParams).length > 0) {
|
|
|
+ pipeline.splice(3, 1, { $sort: { ...sortParams } });
|
|
|
+ }
|
|
|
+
|
|
|
+ const usersData = await User.aggregate(pipeline);
|
|
|
|
|
|
const response = NextResponse.json({
|
|
|
success: true,
|