'use strict'; const Controller = require('egg').Controller; // 消息中心统计分析管理 class MsgCenterController extends Controller { constructor(ctx) { super(ctx); // 特殊的入参校验可以重写在这,默认可以使用commonRule this.createRule = { msgType: { type: 'number', required: false }, startTime: { type: 'number', min: 0 }, // 开始时间的时间戳 包含 endTime: { type: 'number', min: 0 }, // 结束时间的时间戳 不包含(客户端处理结束时间 下一日 ,下一月第一日 ,下一年第一日) type: [ '0', '1', '2' ], // 类型分为 0日 1月 2年 }; } // 消息渠道统计 async channel() { const { ctx } = this; // 校验参数 组装参数 const payload = ctx.validate(); // 调用 Service 进行业务处理 const data = await ctx.getData(payload, { value: [ 'colorTotal', 'grayTotal' ], }); // 设置响应内容和响应状态码 ctx.success({ data }); } // 消息查看率统计 async read() { const { ctx } = this; // 校验参数 组装参数 const payload = ctx.validate(this.createRule); // 调用 Service 进行业务处理 const data = await ctx.getDataAdd(payload, { value: [ 'readCount', 'total' ], }); // 设置响应内容和响应状态码 ctx.success({ data }); } // 消息抵达率统计 async over() { const { ctx } = this; // 校验参数 组装参数 const payload = ctx.validate(); // 调用 Service 进行业务处理 const data = await ctx.getData(payload, { value: [ 'readTotal', 'unReadTotal' ], }); // 设置响应内容和响应状态码 ctx.success({ data }); } } module.exports = MsgCenterController;