|
|
@@ -739,6 +739,75 @@ export class TaskService implements OnModuleInit {
|
|
|
.getRawMany()
|
|
|
}
|
|
|
|
|
|
+ async numStatistics() {
|
|
|
+ const res = {
|
|
|
+ totalHoursYesterday: 0,
|
|
|
+ totalHoursToday: 0,
|
|
|
+ orderCountYesterday: 0,
|
|
|
+ orderCountToday: 0
|
|
|
+ }
|
|
|
+ await Promise.all([
|
|
|
+ (async () => {
|
|
|
+ // 查询昨日发送总时长
|
|
|
+ const totalHoursYesterday = await this.taskItemRepository
|
|
|
+ .createQueryBuilder()
|
|
|
+ .select('SUM(tmp.c) / 60', 'hour')
|
|
|
+ .from(subQuery => {
|
|
|
+ return subQuery
|
|
|
+ .select('1', 'c')
|
|
|
+ .addSelect('UNIX_TIMESTAMP(task_item.sendAt) DIV 60 * 60', 'time')
|
|
|
+ .from(TaskItem, 'task_item')
|
|
|
+ .where('task_item.sendAt >= CURDATE() - INTERVAL 1 DAY')
|
|
|
+ .andWhere('task_item.sendAt < CURDATE()')
|
|
|
+ .andWhere('task_item.status != :status', { status: 'idle' })
|
|
|
+ .groupBy('time')
|
|
|
+ }, 'tmp')
|
|
|
+ .getRawOne()
|
|
|
+ res.totalHoursYesterday = totalHoursYesterday.hour === null ? 0 : totalHoursYesterday.hour
|
|
|
+ })(),
|
|
|
+ (async () => {
|
|
|
+ // 查询今日发送总时长
|
|
|
+ const totalHoursToday = await this.taskItemRepository
|
|
|
+ .createQueryBuilder()
|
|
|
+ .select('SUM(tmp.c) / 60', 'hour')
|
|
|
+ .from(subQuery => {
|
|
|
+ return subQuery
|
|
|
+ .select('1', 'c')
|
|
|
+ .addSelect('UNIX_TIMESTAMP(task_item.sendAt) DIV 60 * 60', 'time')
|
|
|
+ .from(TaskItem, 'task_item')
|
|
|
+ .where('task_item.sendAt >= CURDATE()')
|
|
|
+ .andWhere('task_item.status != :status', { status: 'idle' })
|
|
|
+ .groupBy('time')
|
|
|
+ }, 'tmp')
|
|
|
+ .getRawOne()
|
|
|
+ res.totalHoursToday = totalHoursToday.hour === null ? 0 : totalHoursToday.hour
|
|
|
+ })(),
|
|
|
+ (async () => {
|
|
|
+ // 查询昨日订单数
|
|
|
+ const yesterdayOrderCount = await this.taskRepository
|
|
|
+ .createQueryBuilder()
|
|
|
+ .select('COUNT(1)', 'sum')
|
|
|
+ .where('task.startedAt >= CURDATE() - INTERVAL 1 DAY')
|
|
|
+ .andWhere('task.startedAt < CURDATE()')
|
|
|
+ .getRawOne()
|
|
|
+ res.orderCountYesterday = yesterdayOrderCount.sum
|
|
|
+ })(),
|
|
|
+ (async () => {
|
|
|
+ // 查询今日订单数
|
|
|
+ const todayOrderCount = await this.taskRepository
|
|
|
+ .createQueryBuilder()
|
|
|
+ .select('COUNT(1)', 'sum')
|
|
|
+ .where('task.startedAt >= CURDATE()')
|
|
|
+ .andWhere('task.startedAt < CURDATE() + INTERVAL 1 DAY')
|
|
|
+ .getRawOne()
|
|
|
+ res.orderCountToday = todayOrderCount.sum
|
|
|
+ })()
|
|
|
+ ])
|
|
|
+
|
|
|
+ return res
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
async sentCountryStatistics(req: any) {
|
|
|
let where = {}
|
|
|
if (req.user.roles.includes('api') || req.user.roles.includes('superApi')) {
|