app.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. // app.js
  3. module.exports = app => {
  4. const mongoose = app.mongoose;
  5. const Schema = mongoose.Schema;
  6. const conn = app.mongooseDB.get('etlDB');
  7. const TempSchema = new Schema({
  8. _id: { type: String }, // vin+behavior_id+ 日月年+序列号
  9. user_id: { type: String }, // IVI用户ID
  10. vin: { type: String }, // 车辆VIN
  11. behavior_id: { type: Number }, // 行为ID 听歌20020000,听电台20010000,看新闻20050000,看视频 20030000
  12. create_time: { type: Number }, // 行为开始时间
  13. });
  14. TempSchema.index({ create_time: -1 });
  15. TempSchema.index({ create_time: -1, vin: -1 });
  16. app.getTempModel = function(dateStr) {
  17. return conn.model('Temp', TempSchema, `temp_${dateStr}`);
  18. };
  19. // 开始前执行
  20. app.beforeStart(async () => {
  21. // 此处是你原来的逻辑代码
  22. app.logger.info('启动成功');
  23. // TODO
  24. // 考虑所有的下拉都对应一个接口
  25. // 1.5-6上报类型
  26. // 2.br7里面的 驾驶模式等
  27. // 3.11里的远控功能 + app功能(后台处理好一定有名字)
  28. // 4.br22里的下拉
  29. // 5.车的人 一定在全量人里得有 在线记录里得人在全量人里得有 || 车行为对应的车必须在全量车里有
  30. // 车娱乐行为对应车行为对应全量车有 app功能的使用人对应全量人有 车辆上报对应车 转换车主对应全量人 tbox对应全车 在线车对应全车
  31. // app 3个用户 里的位置 车机3个用户 里的位置 问题 ==>rbac,onlineuser里通过数据in过滤来源的方式 ==> 多个promise 预处理后聚合处理
  32. // 6.drive_behavior月年规则 改为新增月年表存储。增量优化
  33. // 7.考虑驾驶行为/车况数据/在线用户/车辆数据 这4个表分解
  34. });
  35. // 准备好执行
  36. app.ready(async () => {
  37. // 举例,获取数据库图片域名,放到缓存,便于使用
  38. });
  39. // 关闭前执行
  40. app.beforeClose(async () => {
  41. // this.app.logger 应用级别的日志记录,如记录启动阶段的一些数据信息,记录一些业务上与请求无关的信息
  42. // this.app.coreLogger 开发应用时都不应该通过 CoreLogger 打印日志,而框架和插件则需要通过它来打印应用级别的日志,这样可以更清晰的区分应用和框架打印的日志,通过 CoreLogger 打印的日志会放到和 Logger 不同的文件中
  43. // this.ctx.logger 请求相关的,它打印的日志都会在前面带上一些当前请求相关的信息(如 [$userId/$ip/$traceId/${cost}ms $method $url])
  44. // this.ctx.coreLogger 和 Context Logger 的区别是一般只有插件和框架会通过它来记录日志
  45. // Controller Logger & Service Logger this.logger 本质上就是一个 Context Logger,会额外的加上文件路径
  46. // 同时 Context 上也挂载了 Request 和 Response 两个对象。和 Express 类似,
  47. // 这两个对象都提供了大量的便捷方法辅助开发,例如
  48. //
  49. // get request.query
  50. // get request.hostname
  51. // set response.body
  52. // set response.status
  53. // 参数校验 validate接入egg
  54. // this.ctx.curl 相当于ajax
  55. });
  56. // 监听
  57. // app.once('server', server => {
  58. // // websocket
  59. // });
  60. // app.on('error', (err, ctx) => {
  61. // // report error
  62. // });
  63. // app.on('request', ctx => {
  64. // // log receive request
  65. // });
  66. // app.on('response', ctx => {
  67. // // ctx.starttime is set by framework
  68. // const used = Date.now() - ctx.starttime;
  69. // // log total cost
  70. // });
  71. };