carController.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. // 单车行为统计分析
  4. class CarController extends Controller {
  5. constructor(ctx) {
  6. super(ctx);
  7. this.createRule = {
  8. pageNumber: { type: 'number', min: 0, required: false },
  9. pageSize: { type: 'number', min: 0, required: false },
  10. startTime: { type: 'number', min: 0 }, // 开始时间的时间戳 包含
  11. endTime: { type: 'number', min: 0 }, // 结束时间的时间戳 不包含(客户端处理结束时间 下一日 ,下一月第一日 ,下一年第一日)
  12. mode: { type: 'string', required: false }, // 分为4种 0代表0-60 1代表60-75 2代表75-90 3代表90-100
  13. modeKey: { type: 'string', required: false },
  14. // 分为2种 driving_safety_score驾驶得分(默认) energyConservationScore节能得分
  15. };
  16. this.createIndexRule = {
  17. pageNumber: { type: 'number', min: 0, required: false },
  18. pageSize: { type: 'number', min: 0, required: false },
  19. startTime: { type: 'number', min: 0 }, // 开始时间的时间戳 包含
  20. endTime: { type: 'number', min: 0 }, // 结束时间的时间戳 不包含(客户端处理结束时间 下一日 ,下一月第一日 ,下一年第一日)
  21. vin: { type: 'string' }, // 车辆vin
  22. };
  23. this.createVinRule = {
  24. pageNumber: { type: 'number', min: 0, required: false },
  25. pageSize: { type: 'number', min: 0, required: false },
  26. startTime: { type: 'number', min: 0 }, // 开始时间的时间戳 包含
  27. endTime: { type: 'number', min: 0 }, // 结束时间的时间戳 不包含(客户端处理结束时间 下一日 ,下一月第一日 ,下一年第一日)
  28. vin: { type: 'string' }, // 车辆vin
  29. };
  30. this.createListRule = {
  31. pageNumber: { type: 'number', min: 0, required: false },
  32. pageSize: { type: 'number', min: 0, required: false },
  33. };
  34. }
  35. // 单车 用户驾驶评分分布/节能驾驶评分分布 列表
  36. async listWithDrive() {
  37. const { ctx, service } = this;
  38. // 校验参数 组装参数
  39. const payload = ctx.validate(this.createRule);
  40. // 调用 Service 进行业务处理
  41. const data = await service.carService.listWithDrive(payload);
  42. // 设置响应内容和响应状态码
  43. ctx.success({ data });
  44. }
  45. // 单车信息查询
  46. async list() {
  47. const { ctx, service } = this;
  48. // 校验参数 组装参数
  49. const payload = ctx.validate(this.createListRule);
  50. // 调用 Service 进行业务处理
  51. const data = await service.carService.list(payload);
  52. // 设置响应内容和响应状态码
  53. ctx.success({ data });
  54. }
  55. // 单车行为查询
  56. async indexSingle() {
  57. const { ctx, service } = this;
  58. // 校验参数 组装参数
  59. const payload = ctx.validate(this.createIndexRule);
  60. // 调用 Service 进行业务处理
  61. const data = await service.carService.indexSingle(payload);
  62. // 设置响应内容和响应状态码
  63. ctx.success({ data });
  64. }
  65. // 单车 出行分布信息
  66. async indexTrip() {
  67. const { ctx, service } = this;
  68. // 校验参数 组装参数
  69. const payload = ctx.validate(this.createIndexRule);
  70. // 调用 Service 进行业务处理
  71. const data = await service.carService.indexTrip(payload);
  72. // 设置响应内容和响应状态码
  73. ctx.success({ data });
  74. }
  75. // 单车 单次行程 列表
  76. async listWithTravel() {
  77. const { ctx, service } = this;
  78. // 校验参数 组装参数
  79. const payload = ctx.validate(this.createVinRule);
  80. // 调用 Service 进行业务处理
  81. const data = await service.carService.listWithTravel(payload);
  82. // 设置响应内容和响应状态码
  83. ctx.success({ data });
  84. }
  85. // 单车 单次充电周期 列表
  86. async listWithCharging() {
  87. const { ctx, service } = this;
  88. // 校验参数 组装参数
  89. const payload = ctx.validate(this.createVinRule);
  90. // 调用 Service 进行业务处理
  91. const data = await service.carService.listWithCharging(payload);
  92. // 设置响应内容和响应状态码
  93. ctx.success({ data });
  94. }
  95. // 提供三方tbox列表查询
  96. async tbox() {
  97. const { ctx, service } = this;
  98. // 校验参数 组装参数
  99. const payload = ctx.validate(this.createRule);
  100. // 调用 Service 进行业务处理
  101. const data = await service.carService.tbox(payload);
  102. // 设置响应内容和响应状态码
  103. ctx.success({ data });
  104. }
  105. }
  106. module.exports = CarController;