Commit f8709132 by lixinming

重点活动弹框

parent 49bfbe08
...@@ -16,13 +16,13 @@ export async function getData(req, res) { ...@@ -16,13 +16,13 @@ export async function getData(req, res) {
ret["yhtsl"] = getKeyValueListData("用户投诉量", yhtsl); ret["yhtsl"] = getKeyValueListData("用户投诉量", yhtsl);
ret["zyhdbzzjdt"] = getReflectionData("中间地图数据", zyhdbzzjdt, {num:"value", district:"key"}); ret["zyhdbzzjdt"] = getReflectionData("中间地图数据", zyhdbzzjdt, {num:"value", district:"key"});
let {monthStatsData, dayStatsData} = statsQueue["日活月活"]; let {monthStatsData, dayStatsData} = statsQueue["日活月活"];//百度云数据
ret["dau"] = getReflectionData("日活", dayStatsData, {}); ret["dau"] = getReflectionData("日活", dayStatsData, {});
ret["mau"] = getReflectionData("月活", monthStatsData, {}); ret["mau"] = getReflectionData("月活", monthStatsData, {});
ret["yhtslzs"] = {title:"用户投诉总数", data:parseInt(yhtslzs["用户投诉总数"] || 0)}; ret["yhtslzs"] = {title:"用户投诉总数", data:parseInt(yhtslzs["用户投诉总数"] || 0)};
let uv = statsQueue["uv"]; let uv = statsQueue["uv"];//百度云数据
ret["hdzfwrs"] = {title:"活动总访问人数", data:uv || 0}; ret["hdzfwrs"] = {title:"活动总访问人数", data:uv || 0};
//应用系统监控 //应用系统监控
...@@ -46,3 +46,73 @@ export async function getData(req, res) { ...@@ -46,3 +46,73 @@ export async function getData(req, res) {
//重要活动 //重要活动
res.send(ret); res.send(ret);
} }
export async function getPopData(req, res) {
//访问人数和访问趋势获取阿里云 玑脉大平台 数据
// let activeList:any = await getActiveListData();
// let resultList = [];
// activeList.forEach(item => {
// let state = "活动预告";
// if (item.hdztxh == '1') state = "活动进行中";
// else if (item.hdztxh == '2') state = "活动结束";
// let registered = 0;
// if (!isNaN(item.zcrs) ) registered = parseInt(item.zcrs);
// let complaints = 0;
// if (!isNaN(item.yhtsl) ) complaints = parseInt(item.yhtsl);
// resultList.push({
// title:item.hdmc,
// state,//状态
// time:item.hdsj,//活动时间
// registered,//注册人数
// complaints,//用户投诉量
// });
// });
// // let dataList = [];
let onceData = {
title:"聚合磁力2022跨界电商测试测试测试测试",
state:"活动预告",
registered:12600,//注册人数
time:"2022/01/22~01/23",//活动时间
access:99900,//访问人数
complaints:1000,//投诉量
trend:[
{key:"12:30", value:200},
{key:"13:00", value:100},
{key:"13:30", value:200},
{key:"14:00", value:100},
{key:"14:30", value:200},
{key:"15:00", value:100},
{key:"15:30", value:200},
]
};
let onceData2 = {
title:"青少年人工智能奥林匹克挑战赛",
state:"活动进行中",
registered:38699,//注册人数
time:"2022/01/22~01/23",//活动时间
access:42563,//访问人数
complaints:42563,//投诉量
trend:[
{key:"12:30", value:200},
{key:"13:00", value:50},
{key:"13:30", value:200},
{key:"14:00", value:50},
{key:"14:30", value:200},
{key:"15:00", value:50},
{key:"15:30", value:200},
]
};
let dataList = [onceData, onceData2];
res.send({dataList});
}
import { activityStats } from "./baiduStats";
import { getActivityListData } from "./data";
import moment = require("moment");
let lastActiveMap = {};
//第一次检测到有数据的时间 如果想要设定时间,把时间填这里
let haveDataTime = 0;
// let startScopeM = 0;
// let startScopeS = 0;
// let endScopeM = 0;
// let endScopeS = 0;
async function cacheActivityData() {
let activityList = await getActivityListData();
let haveUpdate = false;
for (let i = 0; i < activityList.length; i++) {
let {hdkssj, hdjssj, hdmc } = activityList[i];
if (!hdkssj || !hdjssj || !hdmc) continue;
let {startTime, endTime} = getDateFormat(hdkssj, hdjssj);
let oldItem = lastActiveMap[hdmc];
let thisItemIsNew = false;
if ( !oldItem ) thisItemIsNew = true;
else if (oldItem.startTime != startTime || oldItem.endTime != endTime ) thisItemIsNew = true;
if ( thisItemIsNew ) {
let count = await activityStats(startTime, endTime);
lastActiveMap[hdmc] = {startTime, endTime, count};
}
}
return haveUpdate;
}
function getDateFormat(startTime:number, endTime:number) {
return {
startTime:moment(startTime).format('YYYYMMDD'),
endTime: moment(endTime).format('YYYYMMDD'),
};
}
let startScopeTime = 0;
let endScopeTime= 0;
//这里放活动缓存机制
export function initActiveQueue() {
cacheActivityData();
setInterval( async () => {
let thisTime = new Date().valueOf();
//历史数据
if ( !haveDataTime ) {//当不设置活动更像时间的时候
let haveUpdate = cacheActivityData();
if (haveUpdate) {//如果发现了活动列表更新
haveDataTime = thisTime.valueOf();
//向上向下取10s
let startScopeM = parseInt(moment(thisTime-(10 * 1000)).format("m"));
let startScopeS = parseInt(moment(thisTime-(10 * 1000) ).format("s"));
let endScopeM = parseInt(moment(thisTime+(10 * 1000)).format("m"));
let endScopeS = parseInt(moment(thisTime+(10 * 1000) ).format("s"));
startScopeTime = (startScopeM * 60)+ startScopeS;
endScopeTime= (endScopeM * 60)+ endScopeS;
}
} else {//设置了活动更新时间 或者 系统第一次发现数据更新的时间
let thisM = parseInt(moment(thisTime).format("m"));
let thisS = parseInt(moment(thisTime).format("s"));
let thisMS = (thisM * 60) + thisS;
if (endScopeTime < startScopeTime) {//结束范围小于开始范围
if (thisMS >= startScopeTime || thisM <= endScopeTime) cacheActivityData();
} else {//正常时间轴
if ( thisMS >= startScopeTime && thisMS <= endScopeTime ) cacheActivityData();
}
}
//当天数据
}, 600* 1000);
}
\ No newline at end of file
...@@ -38,6 +38,7 @@ export async function getALYStats(isFirst) { ...@@ -38,6 +38,7 @@ export async function getALYStats(isFirst) {
//董老师说这里留个坑 2021-12-22 下午 15:09 这里暂时留 日常体育成绩 0dcce666-691b-422f-9e1d-7301b9d5164e 需要更换添加或者全部,就替换checkKeyList即可 //董老师说这里留个坑 2021-12-22 下午 15:09 这里暂时留 日常体育成绩 0dcce666-691b-422f-9e1d-7301b9d5164e 需要更换添加或者全部,就替换checkKeyList即可
//公元2022年1月20日 下午15点29分40秒 改成了 "2cec1889-29a5-49b5-8a82-c83663b34aec" => 这个是 玑脉大平台 域名是 shsunshine-zp.shec.edu.cn/ //公元2022年1月20日 下午15点29分40秒 改成了 "2cec1889-29a5-49b5-8a82-c83663b34aec" => 这个是 玑脉大平台 域名是 shsunshine-zp.shec.edu.cn/
//这个checkList 对应的是重要活动保障的 应用系统监控数据
let checkKeyList = ["2cec1889-29a5-49b5-8a82-c83663b34aec"]; let checkKeyList = ["2cec1889-29a5-49b5-8a82-c83663b34aec"];
let alyDataCount = 0; let alyDataCount = 0;
......
import moment = require("moment"); import moment = require("moment");
import { post } from "../../util/request"; import { post } from "../../util/request";
import { getActivityListData } from "./data";
function statsDataFormat() { function statsDataFormat() {
let dayStartTime = moment().add(-6, 'days'); let dayStartTime = moment().add(-6, 'days');
...@@ -86,7 +87,7 @@ function uvDataFormat() { ...@@ -86,7 +87,7 @@ function uvDataFormat() {
} }
export async function getUV() { export async function getUV() {
const site_id = 17390466; const site_id = 17390466;//这里获取的是 玑脉大平台 日活数据
let {startTime, endTime} = uvDataFormat(); let {startTime, endTime} = uvDataFormat();
let url = "https://api.baidu.com/json/tongji/v1/ReportService/getData"; let url = "https://api.baidu.com/json/tongji/v1/ReportService/getData";
let header = { let header = {
...@@ -155,3 +156,44 @@ export async function getPVCountBySiteId(siteId) { ...@@ -155,3 +156,44 @@ export async function getPVCountBySiteId(siteId) {
return count; return count;
} }
export async function activityStats(startTime:string, endTime:string) {
const site_id = 17390466;//使用 玑脉大平台 统计数据
let url = "https://api.baidu.com/json/tongji/v1/ReportService/getData";
let header = {
"username": "shkyzx",
"password": "Support01",
"token": "2444afaabacc40a0819a15815d7ec10f",
"account_type": 1
};
let body = {
"site_id": `${site_id}`,
"start_date": startTime,
"end_date": endTime,
"metrics": "pv_count",
"method": "trend/time/a",
"area": "china"
}
let uvResult:any = await post(url, {body, header}, {});
if ( !baiduStatsResultIsNull(uvResult) ) {
console.log("百度云接口异常");
return 0;
}
let resultInfo = uvResult.body.data[0].result;
if (!Array.isArray(resultInfo.sum) || !Array.isArray(resultInfo.sum[0]) || resultInfo.sum[0][0] == undefined || resultInfo.sum[0][0] == null ) {
console.log("百度云接口异常 没有sum数据");
return 0;
}
return resultInfo.sum[0][0];
}
function baiduStatsResultIsNull(res) {
if (!res.body || !res.body.data || !Array.isArray(res.body.data) || !res.body.data[0] ) return true;
let resData = res.body.data[0];
if (!resData.result ) return true;
return false;
}
\ No newline at end of file
...@@ -178,3 +178,20 @@ function listMappingObject(dataList, mappingInfo) { ...@@ -178,3 +178,20 @@ function listMappingObject(dataList, mappingInfo) {
return result return result
} }
//重要活动保障弹框的活动数据
export async function getActivityListData() {
//阿里云和百度云拿不到活动数据,这里的活动数据先共用 重要活动 的 访问流量与用户反馈的数据
await get获取token();
const body = {
client_id:requestConfig.client_id,
access_token:token,
};
let dataList = await post(getUrl(urlEnum.重要活动保障列表), body, {} );
if ( !Array.isArray(dataList) ) {
console.log("获取重要活动保障列表出错 返回的结果不是数组");
return [];
}
return dataList || [];
}
...@@ -96,7 +96,6 @@ async function statsBaiduData(isFirst) { ...@@ -96,7 +96,6 @@ async function statsBaiduData(isFirst) {
statsQueue["日活月活"] = 日活月活; statsQueue["日活月活"] = 日活月活;
} }
export async function initQueueData() { export async function initQueueData() {
console.log("开始初始化阿里云与百度云数据"); console.log("开始初始化阿里云与百度云数据");
let result = await getSiteInfoStats(true); let result = await getSiteInfoStats(true);
......
...@@ -22,9 +22,8 @@ export enum urlEnum { ...@@ -22,9 +22,8 @@ export enum urlEnum {
信息安全风险="/service/api/kyzx/xxaqfx", 信息安全风险="/service/api/kyzx/xxaqfx",
资源部署="/service/api/kyzx/zybs", 资源部署="/service/api/kyzx/zybs",
资源可用性="/service/api/kyzx/zykyx", 资源可用性="/service/api/kyzx/zykyx",
资源使用率趋势="/service/api/kyzx/zysylqs" 资源使用率趋势="/service/api/kyzx/zysylqs",
重要活动保障列表="/service/api/kyzx/zyhdbzlb"
}; };
export function getUrl(urlName) { export function getUrl(urlName) {
......
...@@ -12,4 +12,7 @@ export function setRouter(httpServer){ ...@@ -12,4 +12,7 @@ export function setRouter(httpServer){
httpServer.get('/zyhdbz', asyncHandler(zyhdbzBiz.getData)); httpServer.get('/zyhdbz', asyncHandler(zyhdbzBiz.getData));
httpServer.post('/zyhdbz', asyncHandler(zyhdbzBiz.getData)); httpServer.post('/zyhdbz', asyncHandler(zyhdbzBiz.getData));
httpServer.get('/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
httpServer.post('/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
} }
\ No newline at end of file
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