Commit 0e4de6e6 authored by 李尚科's avatar 李尚科

add huayun paas call data

parent 3dcd4167
'use strict';
const Controller = require('egg').Controller;
const moment = require('moment');
class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = 'hi, egg';
}
async setCookie(){
async setCookie() {
const {ctx} = this;
const { ctx } = this;
const expire = 7200 * 1000;
const date = new Date();
// ctx.cookies.set('auth_token', '0f42a68d19ef161a7c7665488e625ba8', { httpOnly: false, signed: false, maxAge: expire, expires: date, path: '/' });
......@@ -18,6 +18,196 @@ class HomeController extends Controller {
ctx.success(ctx.header.cookie);
}
async getAccessToken() {
const { ctx } = this;
const clientId = '961a170e-f939-4189-9163-c4c39051b586';
const clientScr = '53ed566c-72b8-4ebf-b0bb-78147623be71';
const url = 'http://221.194.132.83:7780/paas/accreditation';
const result = await ctx.helper.send_request(url, { clientId, clientScr });
const ret = result.data;
// console.info(result);
if (!ret || ret.status === 1 || !ret.message) {
ctx.faild('get accessToken failed!');
}
return ret.message;
}
async format(data) {
if (!Array.isArray(data) || data.length === 0) {
return [];
}
// console.info(data);
const ret = [];
for (let i in data) {
const item = data[i];
ret.push({
session_id: item.sessionId,
start_time: item.startTime,
end_time: item.endTime,
remote_url: item.remoteUrl,
local_url: item.localUrl,
skill_name: item.skillName,
listtime: item.listtime,
duretion: item.duretion,
keysser: item.keysser,
end_type: item.end_type,
agent_id: item.agentId,
call_type: item.call_Type,
r_start_time: item.r_startTime,
r_end_time: item.r_endTime,
path: item.path,
c_ivr_key: item.cIvrKey,
record_nama: item.record_Nama,
created_at: moment().format('YYYY-MM-DD HH:mm:ss'),
});
}
return ret;
}
async callIn(accessToken) {
const { ctx } = this;
const url = `http://221.194.132.83:7780/paas/Interface/${accessToken}/CallIn`;
let start_time = '2019-04-01 00:00:00';
let end_time = '2019-04-30 23:59:59';
const start = 0;
const limit = 10000;
const now_time = moment().format('YYYY-MM-DD HH:mm:ss');
for (let i = 0; i < 15; i++) {
const step_day = i === 0 ? 0 : 30;
start_time = moment(start_time).add(step_day, 'days').format('YYYY-MM-DD HH:mm:ss');
end_time = moment(end_time).add(step_day, 'days').format('YYYY-MM-DD HH:mm:ss');
console.info(start_time, end_time);
if (start_time >= now_time) {
break;
}
const result = await ctx.curl(url, { method: 'POST', contentType: 'json', dataType: 'json', timing: true, timeout: 300000, data: { start_time, end_time, start, limit } });
const ret = result.data;
if (ret.status != 0 || !ret.message || ret.count == 0) {
continue;
}
const message = ret.message;
const list = message.data;
const count = message.count;
console.info(count);
const insert_data = await this.format(list);
await ctx.prometheusModel.HuayunPaasCallin.bulkCreate(insert_data, { ignoreDuplicates: true });
if (count <= limit) {
continue;
}
//分页查询
const page = Math.ceil(count / limit);
for (let j = 1; j <= page - 1; j++) {
let start2 = j * limit;
console.info(j, start_time, end_time, start2, limit);
const result2 = await ctx.curl(url, { method: 'POST', contentType: 'json', dataType: 'json', timing: true, timeout: 300000, data: { start_time, end_time, start2, limit } });
const ret2 = result2.data;
if (ret2.status != 0 || !ret2.message || ret2.count == 0) {
continue;
}
const message2 = ret2.message;
const list2 = message2.data;
const insert_data2 = await this.format(list2);
await ctx.prometheusModel.HuayunPaasCallin.bulkCreate(insert_data2, { ignoreDuplicates: true });
}
}
}
async callOut(accessToken) {
const { ctx } = this;
const url = `http://221.194.132.83:7780/paas/Interface/${accessToken}/CallOut`;
let start_time = '2019-01-01 00:00:00';
let end_time = '2019-01-30 23:59:59';
const start = 0;
const limit = 10000;
const now_time = moment().format('YYYY-MM-DD HH:mm:ss');
for (let i = 0; i < 15; i++) {
const step_day = i === 0 ? 0 : 30;
start_time = moment(start_time).add(step_day, 'days').format('YYYY-MM-DD HH:mm:ss');
end_time = moment(end_time).add(step_day, 'days').format('YYYY-MM-DD HH:mm:ss');
console.info(start_time, end_time);
if (start_time >= now_time) {
break;
}
const result = await ctx.curl(url, { method: 'POST', contentType: 'json', dataType: 'json', timing: true, timeout: 300000, data: { start_time, end_time, start, limit } });
const ret = result.data;
if (ret.status != 0 || !ret.message || ret.count == 0) {
continue;
}
const message = ret.message;
const list = message.data;
const count = message.count;
console.info(count);
const insert_data = await this.format(list);
await ctx.prometheusModel.HuayunPaasCallOut.bulkCreate(insert_data, { ignoreDuplicates: true });
if (count <= limit) {
continue;
}
//分页查询
const page = Math.ceil(count / limit);
for (let j = 1; j <= page - 1; j++) {
let start2 = j * limit;
console.info(j, start_time, end_time, start2, limit);
const result2 = await ctx.curl(url, { method: 'POST', contentType: 'json', dataType: 'json', timing: true, timeout: 300000, data: { start_time, end_time, start2, limit } });
const ret2 = result2.data;
if (ret2.status != 0 || !ret2.message || ret2.count == 0) {
continue;
}
const message2 = ret2.message;
const list2 = message2.data;
const insert_data2 = await this.format(list2);
await ctx.prometheusModel.HuayunPaasCallOut.bulkCreate(insert_data2, { ignoreDuplicates: true });
}
}
}
async huayunCall() {
const { ctx } = this;
const accessToken = await this.getAccessToken();
// this.callIn(accessToken);
this.callOut(accessToken);
ctx.success({ status: true });
}
async huayunCallTest() {
const { ctx } = this;
let start_time = '2019-07-30 10:06:49';
// let end_time = moment(start_time).add(30, 'days').format('YYYY-MM-DD HH:mm:ss');
let end_time = '2019-08-15 18:31:01';
const accessToken = '8091d5922082e808c601c424bad0b9f2';
const start = 0;
const limit = 100;
const url = `http://221.194.132.83:7780/paas/Interface/${accessToken}/CallOut`;
const result2 = await ctx.curl(url, { method: 'POST', contentType: 'json', dataType: 'json', timing: true, timeout: 50000, data: { start_time, end_time, start, limit } });
// const last_one = await ctx.prometheusModel.HuayunPaasCallin.findOne({ order: [['id', 'desc']] });
ctx.success({ status: result2 });
// ctx.success({ status: await this.getAccessToken() });
}
}
module.exports = HomeController;
......@@ -26,6 +26,7 @@ module.exports = app => {
skill_name: STRING,
listtime: STRING,
duretion: STRING,
keysser: STRING,
end_type: STRING,
agent_id: STRING,
call_type: STRING,
......
......@@ -7,7 +7,8 @@ module.exports = app => {
const { controller } = app;
const router = app.router.namespace(app.config.projectRootPath);
router.get('/', controller.home.index);
router.get('/home/setCookie', controller.home.setCookie);
router.get('/home/huayun_call', controller.home.huayunCall);
router.get('/home/huayun_call_test', controller.home.huayunCallTest);
require('./router/gjj')(app);
......
......@@ -20,7 +20,7 @@ class HuaYunPaas extends Subscription {
async subscribe() {
const { ctx, app } = this;
if (['https://uat-nginx.jianbing.com'].includes(this.config.NODE_BASE_URL)) {
if (['https://pro-nginx.jianbing.com', 'https://lan-nginx.jianbing.com'].includes(this.config.NODE_BASE_URL)) {
//用redis的setnx来实现锁机制
let lock = 'huayun:pass:cron:' + moment().format('MMDD');
ctx.logger.info(lock);
......@@ -39,8 +39,10 @@ class HuaYunPaas extends Subscription {
const { ctx } = this;
const accessToken = await this.getAccessToken();
await this.callIn(accessToken);
await this.callOut(accessToken);
this.callIn(accessToken);
this.callOut(accessToken);
return true;
}
async callIn(accessToken) {
......@@ -49,7 +51,7 @@ class HuaYunPaas extends Subscription {
ctx.logger.info('in logic');
// const accessToken = await this.getAccessToken();
const url = `http://221.194.132.83:7780/paas/Interface/${accessToken}/CallIn`;
const lastOne = await ctx.prometheusModel.HuayunPaasCallin.findOne({ order: [['id', 'desc']] });
const lastOne = await ctx.prometheusModel.HuayunPaasCallin.findOne({ order: [['end_time', 'desc']] });
const start = 0;
const limit = 10000;
let start_time = moment().add(-1, 'days').format('YYYY-MM-DD HH:mm:ss');
......@@ -80,7 +82,7 @@ class HuaYunPaas extends Subscription {
ctx.logger.info('in logic');
// const accessToken = await this.getAccessToken();
const url = `http://221.194.132.83:7780/paas/Interface/${accessToken}/CallOut`;
const lastOne = await ctx.prometheusModel.HuayunPaasCallOut.findOne({ order: [['id', 'desc']] });
const lastOne = await ctx.prometheusModel.HuayunPaasCallOut.findOne({ order: [['end_time', 'desc']] });
const start = 0;
const limit = 10000;
let start_time = moment().add(-1, 'days').format('YYYY-MM-DD HH:mm:ss');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment