Statistics.service.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { Provide } from '@midwayjs/decorator';
  2. import { InjectEntityModel } from '@midwayjs/typegoose';
  3. import { ReturnModelType } from '@typegoose/typegoose';
  4. import { User } from '../entity/User.entity';
  5. import { OrderDetail } from '../entity/OrderDetail.entity';
  6. const moment = require('moment');
  7. interface infoInterface {
  8. name: string;
  9. value: number;
  10. }
  11. @Provide()
  12. export class StatisticsService {
  13. @InjectEntityModel(User)
  14. userModel: ReturnModelType<typeof User>;
  15. @InjectEntityModel(OrderDetail)
  16. orderDetailModel: ReturnModelType<typeof OrderDetail>;
  17. // 每个月下单数量
  18. async order(): Promise<Array<any>> {
  19. const result = [];
  20. const time = moment().format('YYYY');
  21. for (let i = 1; i < 13; i++) {
  22. let buy_time;
  23. if (i < 10) buy_time = `${time}-0${i}`;
  24. else buy_time = `${time}-${i}`;
  25. const info: infoInterface = { name: '', value: 0 };
  26. info.name = i + '月';
  27. info.value = await this.orderDetailModel
  28. .count({ buy_time: { $regex: buy_time } })
  29. .lean();
  30. result.push(info);
  31. }
  32. return result;
  33. }
  34. // 每个月注册数量
  35. async user(): Promise<Array<any>> {
  36. const result = [];
  37. const time = moment().format('YYYY');
  38. for (let i = 1; i < 13; i++) {
  39. let create_time;
  40. if (i < 10) create_time = `${time}-0${i}`;
  41. else create_time = `${time}-${i}`;
  42. result.push(
  43. await this.userModel
  44. .count({ create_time: { $regex: create_time } })
  45. .lean()
  46. );
  47. }
  48. return result;
  49. }
  50. }