|
@@ -0,0 +1,36 @@
|
|
|
|
+import { Provide } from '@midwayjs/decorator';
|
|
|
|
+import { InjectEntityModel } from '@midwayjs/typegoose';
|
|
|
|
+import { ReturnModelType } from '@typegoose/typegoose';
|
|
|
|
+import { User } from '../entity/User.entity';
|
|
|
|
+import { OrderDetail } from '../entity/OrderDetail.entity';
|
|
|
|
+const moment = require('moment');
|
|
|
|
+interface infoInterface {
|
|
|
|
+ name: string;
|
|
|
|
+ value: number;
|
|
|
|
+}
|
|
|
|
+@Provide()
|
|
|
|
+export class StatisticsService {
|
|
|
|
+ @InjectEntityModel(User)
|
|
|
|
+ userModel: ReturnModelType<typeof User>;
|
|
|
|
+
|
|
|
|
+ @InjectEntityModel(OrderDetail)
|
|
|
|
+ orderDetailModel: ReturnModelType<typeof OrderDetail>;
|
|
|
|
+
|
|
|
|
+ // 每个月下单数量
|
|
|
|
+ async order(): Promise<Array<any>> {
|
|
|
|
+ const result = [];
|
|
|
|
+ const time = moment().format('YYYY');
|
|
|
|
+ for (let i = 1; i < 13; i++) {
|
|
|
|
+ let buy_time;
|
|
|
|
+ if (i < 10) buy_time = `${time}-0${i}`;
|
|
|
|
+ else buy_time = `${time}-${i}`;
|
|
|
|
+ const info: infoInterface = { name: '', value: 0 };
|
|
|
|
+ info.name = i + '月';
|
|
|
|
+ info.value = await this.orderDetailModel
|
|
|
|
+ .count({ buy_time: { $regex: buy_time } })
|
|
|
|
+ .lean();
|
|
|
|
+ result.push(info);
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+}
|