You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
1.6 KiB
100 lines
1.6 KiB
/**
|
|
* 数据库操作
|
|
*/
|
|
const BaseMod = require('../../base');
|
|
const dbName = require("./config");
|
|
|
|
class Dao extends BaseMod {
|
|
|
|
constructor() {
|
|
super()
|
|
this.tablePrefix = false; // 不使用表前缀
|
|
}
|
|
|
|
async group(data) {
|
|
let {
|
|
start_time,
|
|
end_time,
|
|
status: status_str
|
|
} = data;
|
|
let status;
|
|
if (status_str === "已下单") {
|
|
|
|
} else if (status_str === "已付款") {
|
|
status = {
|
|
$gt: 0
|
|
}
|
|
} else if (status_str === "已退款") {
|
|
status = {
|
|
$in: [2, 3]
|
|
}
|
|
}
|
|
const dbRes = await this.aggregate(dbName.uniPayOrders, {
|
|
match: {
|
|
create_date: {
|
|
$gte: start_time,
|
|
$lte: end_time
|
|
},
|
|
status
|
|
},
|
|
group: {
|
|
_id: {
|
|
appid: '$appid',
|
|
version: '$stat_data.app_version',
|
|
platform: '$stat_data.platform',
|
|
channel: '$stat_data.channel',
|
|
},
|
|
status: {
|
|
$first: '$status'
|
|
},
|
|
// 支付金额
|
|
total_fee: {
|
|
$sum: '$total_fee'
|
|
},
|
|
// 退款金额
|
|
refund_fee: {
|
|
$sum: '$refund_fee'
|
|
},
|
|
// 支付笔数
|
|
order_count: {
|
|
$sum: 1
|
|
},
|
|
// 支付人数(去重复)
|
|
user_count: {
|
|
$addToSet: '$user_id'
|
|
},
|
|
// 支付设备数(去重复)
|
|
device_count: {
|
|
$addToSet: '$device_id'
|
|
},
|
|
|
|
create_date: {
|
|
$min: '$create_date'
|
|
}
|
|
},
|
|
addFields: {
|
|
user_count: {
|
|
$size: '$user_count'
|
|
},
|
|
device_count: {
|
|
$size: '$device_count'
|
|
}
|
|
},
|
|
// 按创建时间排序
|
|
sort: {
|
|
create_date: 1
|
|
},
|
|
getAll: true
|
|
});
|
|
|
|
let list = dbRes.data;
|
|
list.map((item) => {
|
|
item.status_str = status_str;
|
|
});
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = new Dao();
|