fix : user order count
This commit is contained in:
@@ -18,9 +18,7 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
async getUserOrderCount(userId: string) {
|
async getUserOrderCount(userId: string) {
|
||||||
const pipeline = [
|
const pipeline = [
|
||||||
{
|
{
|
||||||
$match: {
|
$match: { user: new Types.ObjectId(userId) },
|
||||||
user: new Types.ObjectId(userId),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
$lookup: {
|
$lookup: {
|
||||||
@@ -30,9 +28,7 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
as: "orderItems",
|
as: "orderItems",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{ $unwind: "$orderItems" },
|
||||||
$unwind: "$orderItems",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
$group: {
|
$group: {
|
||||||
_id: {
|
_id: {
|
||||||
@@ -49,34 +45,25 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
$sum: {
|
$sum: {
|
||||||
$cond: [
|
$cond: [
|
||||||
{
|
{
|
||||||
$or: [
|
$or: [{ $eq: ["$_id.itemStatus", OrderItemsStatus.Processing] }],
|
||||||
{ $eq: ["$_id.orderStatus", OrdersStatus.process_by_seller] },
|
|
||||||
{ $eq: ["$_id.orderStatus", OrdersStatus.wait_payment] },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
$cond: [
|
|
||||||
{
|
|
||||||
$or: [
|
|
||||||
{ $eq: ["$_id.itemStatus", OrderItemsStatus.Processing] },
|
|
||||||
{ $eq: ["$_id.itemStatus", OrderItemsStatus.Shipped] },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
|
1,
|
||||||
0,
|
0,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
delivered: {
|
delivered: {
|
||||||
|
$sum: {
|
||||||
|
$cond: [{ $eq: ["$_id.itemStatus", OrderItemsStatus.Delivered] }, 1, 0],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cancelled: {
|
||||||
$sum: {
|
$sum: {
|
||||||
$cond: [
|
$cond: [
|
||||||
{
|
{
|
||||||
$and: [
|
$in: [
|
||||||
{ $eq: ["$_id.orderStatus", OrdersStatus.process_by_seller] },
|
"$_id.itemStatus",
|
||||||
{ $eq: ["$_id.itemStatus", OrderItemsStatus.Delivered] },
|
[OrderItemsStatus.cancelled_system, OrderItemsStatus.cancelled_user, OrderItemsStatus.cancelled_shop],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
1,
|
1,
|
||||||
@@ -84,18 +71,14 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
cancelled: {
|
returned: {
|
||||||
$sum: {
|
$sum: {
|
||||||
$cond: [
|
$cond: [{ $eq: ["$_id.itemStatus", OrderItemsStatus.Returned] }, 1, 0],
|
||||||
{
|
},
|
||||||
$and: [
|
},
|
||||||
{ $eq: ["$_id.orderStatus", OrdersStatus.cancelled_system] },
|
shipped: {
|
||||||
{ $eq: ["$_id.itemStatus", OrderItemsStatus.cancelled_system] },
|
$sum: {
|
||||||
],
|
$cond: [{ $eq: ["$_id.itemStatus", OrderItemsStatus.Shipped] }, 1, 0],
|
||||||
},
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -106,12 +89,22 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
processing: 1,
|
processing: 1,
|
||||||
delivered: 1,
|
delivered: 1,
|
||||||
cancelled: 1,
|
cancelled: 1,
|
||||||
|
returned: 1,
|
||||||
|
shipped: 1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const result = await this.model.aggregate(pipeline);
|
const [result] = await this.model.aggregate(pipeline);
|
||||||
return result[0] || { processing: 0, delivered: 0, cancelled: 0 };
|
return (
|
||||||
|
result || {
|
||||||
|
processing: 0,
|
||||||
|
delivered: 0,
|
||||||
|
cancelled: 0,
|
||||||
|
returned: 0,
|
||||||
|
shipped: 0,
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getUserOrders(userId: string, statusQuery: OrderStatusQuery) {
|
async getUserOrders(userId: string, statusQuery: OrderStatusQuery) {
|
||||||
@@ -123,7 +116,6 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
|
|
||||||
switch (statusQuery) {
|
switch (statusQuery) {
|
||||||
case "Cancelled":
|
case "Cancelled":
|
||||||
// matchQuery.$or = [{ orderStatus: OrdersStatus.cancelled_system }, { orderStatus: OrdersStatus.Cancelled }];
|
|
||||||
orderItemsMatchQuery.$or = [
|
orderItemsMatchQuery.$or = [
|
||||||
{ "orderItems.status": OrderItemsStatus.cancelled_system },
|
{ "orderItems.status": OrderItemsStatus.cancelled_system },
|
||||||
{ "orderItems.status": OrderItemsStatus.cancelled_shop },
|
{ "orderItems.status": OrderItemsStatus.cancelled_shop },
|
||||||
@@ -131,21 +123,15 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
case "Processing":
|
case "Processing":
|
||||||
// matchQuery.$or = [{ orderStatus: OrdersStatus.process_by_seller }, { orderStatus: OrdersStatus.wait_payment }];
|
|
||||||
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Processing;
|
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Processing;
|
||||||
// { "orderItems.status": OrderItemsStatus.Shipped },
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "Delivered":
|
case "Delivered":
|
||||||
// matchQuery.orderStatus = OrdersStatus.process_by_seller;
|
|
||||||
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Delivered;
|
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Delivered;
|
||||||
break;
|
break;
|
||||||
case "Returned":
|
case "Returned":
|
||||||
// matchQuery.orderStatus = OrdersStatus.process_by_seller;
|
|
||||||
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Returned;
|
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Returned;
|
||||||
break;
|
break;
|
||||||
case "Shipped":
|
case "Shipped":
|
||||||
// matchQuery.orderStatus = OrdersStatus.process_by_seller;
|
|
||||||
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Shipped;
|
orderItemsMatchQuery["orderItems.status"] = OrderItemsStatus.Shipped;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user