Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tikeyi
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
node_server
tikeyi
Commits
dd66583d
Commit
dd66583d
authored
May 24, 2022
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
f24753bb
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
130 additions
and
68 deletions
+130
-68
zyhdbz.ts
src/biz/zyhdbz.ts
+38
-55
activeQueueData.ts
src/data/interface/activeQueueData.ts
+50
-13
baiduStats.ts
src/data/interface/baiduStats.ts
+42
-0
No files found.
src/biz/zyhdbz.ts
View file @
dd66583d
import
{
lastActiveMap
,
sevenHourActivity
}
from
"../data/interface/activeQueueData"
;
import
{
getBaiduStats
,
getUV
}
from
"../data/interface/baiduStats"
;
import
{
getZyhdbzData
}
from
"../data/interface/data"
;
import
{
statsQueue
}
from
"../data/interface/queueData"
;
import
{
getKeyValueListData
,
getReflectionData
}
from
"./out"
;
import
moment
=
require
(
"moment"
);
export
async
function
getData
(
req
,
res
)
{
...
...
@@ -47,72 +49,53 @@ export async function getData(req, res) {
res
.
send
(
ret
);
}
function
getViewShowDateFormat
(
startTime
:
number
,
endTime
:
number
)
{
return
`
${
moment
(
startTime
).
format
(
'YYYY/MM/DD'
)}
~
${
moment
(
endTime
).
format
(
'MM/DD'
)}
`
;
}
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
result
=
[];
let
timeMs
=
new
Date
().
valueOf
();
for
(
let
key
in
lastActiveMap
)
{
let
{
hdxh
,
yhtsl
,
zcrs
,
dataList
,
hdkssj
,
hdjssj
}
=
lastActiveMap
[
key
];
let
state
=
"活动预告"
;
if
(
hdxh
==
"1"
)
state
=
"活动进行中"
;
else
if
(
hdxh
==
"2"
)
state
=
"活动结束"
;
let
access
=
0
;
let
trend
=
[];
if
(
hdkssj
<=
timeMs
)
{
dataList
.
forEach
(
info
=>
{
let
{
key
,
value
}
=
info
;
access
+=
value
;
});
if
(
hdkssj
+
(
7
*
3600
*
1000
)
>=
timeMs
)
{
trend
=
sevenHourActivity
;
}
else
{
trend
=
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
},
]
title
:
key
,
time
:
getViewShowDateFormat
(
hdkssj
,
hdjssj
),
state
,
registered
:
parseInt
(
zcrs
),
//注册人数
complaints
:
parseInt
(
yhtsl
),
//投诉量
access
,
trend
};
result
.
push
(
onceData
);
}
let
dataList
=
[
onceData
,
onceData2
];
res
.
send
({
dataList
});
res
.
send
({
dataList
:
result
});
}
src/data/interface/activeQueueData.ts
View file @
dd66583d
import
{
activityStats
}
from
"./baiduStats"
;
import
{
activityStats
,
getRecentlyActivityStats
}
from
"./baiduStats"
;
import
{
getActivityListData
}
from
"./data"
;
import
moment
=
require
(
"moment"
);
let
lastActiveMap
=
{};
export
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
];
let
{
hdkssj
,
hdjssj
,
hdmc
,
hdxh
,
hdzt
,
hdztxh
,
yhtsl
,
zcrs
}
=
activityList
[
i
];
if
(
!
hdkssj
||
!
hdjssj
||
!
hdmc
)
continue
;
let
{
startTime
,
endTime
}
=
getDateFormat
(
hdkssj
,
hdjssj
);
...
...
@@ -28,8 +23,8 @@ async function cacheActivityData() {
else
if
(
oldItem
.
startTime
!=
startTime
||
oldItem
.
endTime
!=
endTime
)
thisItemIsNew
=
true
;
if
(
thisItemIsNew
)
{
let
coun
t
=
await
activityStats
(
startTime
,
endTime
);
lastActiveMap
[
hdmc
]
=
{
startTime
,
endTime
,
count
};
let
dataLis
t
=
await
activityStats
(
startTime
,
endTime
);
lastActiveMap
[
hdmc
]
=
{
startTime
,
endTime
,
hdxh
,
hdzt
,
hdztxh
,
yhtsl
,
zcrs
,
dataList
,
hdkssj
,
hdjssj
};
}
}
return
haveUpdate
;
...
...
@@ -42,11 +37,12 @@ function getDateFormat(startTime:number, endTime:number) {
};
}
let
startScopeTime
=
0
;
let
endScopeTime
=
0
;
//这里放活动缓存机制
export
function
initActiv
e
Queue
()
{
cacheActivityData
();
export
function
initActiv
ity
Queue
()
{
cacheActivityData
();
//活动数据
setInterval
(
async
()
=>
{
let
thisTime
=
new
Date
().
valueOf
();
...
...
@@ -78,5 +74,46 @@ export function initActiveQueue() {
},
600
*
1000
);
},
10
*
1000
);
//今日数据
cacheTowData
();
setInterval
(
async
()
=>
{
cacheTowData
();
},
600
*
1000
);
}
//缓存近7个小时的数据
export
let
sevenHourActivity
=
[];
async
function
cacheTowData
()
{
let
nowTime
=
moment
();
let
startTime
=
moment
().
subtract
(
7
,
'hours'
);
let
startDay
=
startTime
.
get
(
'date'
);
let
today
=
nowTime
.
get
(
'date'
);
let
onceDayData
=
await
getRecentlyActivityStats
(
nowTime
.
format
(
'YYYYMMDD'
),
nowTime
.
add
(
1
,
'days'
).
format
(
'YYYYMMDD'
));
let
queueList
=
[];
let
count
=
0
;
for
(
let
i
=
0
;
i
<
onceDayData
.
length
;
i
++
)
{
if
(
count
>=
7
)
break
;
let
{
key
,
value
}
=
onceDayData
[
i
];
let
name
=
key
.
split
(
":"
)[
0
];
queueList
.
push
({
key
:
name
,
value
});
count
+=
1
;
}
if
(
startDay
!=
today
)
{
let
lastDayData
=
await
activityStats
(
startTime
.
format
(
'YYYYMMDD'
),
nowTime
.
format
(
'YYYYMMDD'
));
for
(
let
i
=
0
;
i
<
lastDayData
.
length
;
i
++
)
{
if
(
count
>=
8
)
break
;
let
{
key
,
value
}
=
lastDayData
[
i
];
let
name
=
key
.
split
(
":"
)[
0
];
queueList
.
push
({
key
:
name
,
value
});
count
+=
1
;
}
}
sevenHourActivity
=
queueList
;
}
src/data/interface/baiduStats.ts
View file @
dd66583d
...
...
@@ -197,3 +197,44 @@ function baiduStatsResultIsNull(res) {
if
(
!
resData
.
result
)
return
true
;
return
false
;
}
export
async
function
getRecentlyActivityStats
(
startTime
,
endTime
)
{
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"
,
"gran"
:
"hour"
,
"area"
:
"china"
}
let
uvResult
:
any
=
await
post
(
url
,
{
body
,
header
},
{});
if
(
!
baiduStatsResultIsNull
(
uvResult
)
)
{
console
.
log
(
"百度云接口异常"
);
return
[];
}
let
resultInfo
=
uvResult
.
body
.
data
[
0
].
result
;
if
(
!
Array
.
isArray
(
resultInfo
.
items
)
||
!
Array
.
isArray
(
resultInfo
.
items
[
0
])
||
!
Array
.
isArray
(
resultInfo
.
items
[
1
])
)
{
console
.
log
(
"百度云接口异常 没有近两天日活数据"
);
return
[];
}
let
titleList
=
resultInfo
.
items
[
0
];
let
dataList
=
resultInfo
.
items
[
1
];
let
resultList
=
[];
for
(
let
i
=
0
;
i
<
titleList
.
length
;
i
++
)
{
let
value
=
dataList
[
i
][
0
]
||
0
;
if
(
value
==
"--"
)
value
=
0
;
resultList
.
push
({
key
:
titleList
[
i
][
0
],
value
});
}
return
resultList
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment