Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gdtel-gztel-school-center
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
吴学德
gdtel-gztel-school-center
Commits
4a7b0b18
Commit
4a7b0b18
authored
Jan 18, 2021
by
罗承锋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页修改
parent
d7bf4c56
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
622 additions
and
9 deletions
+622
-9
common/src/main/java/com/winsun/mapper/HhrUserMapper.java
+20
-0
common/src/main/java/com/winsun/mapper/OrderMapper.java
+2
-1
common/src/main/java/com/winsun/utils/AccessStatisticDataSearchUtils.java
+98
-0
service-manager/src/main/java/com/winsun/controller/AnalysisController.java
+251
-0
service-manager/src/main/java/com/winsun/controller/OrderController.java
+2
-4
service-manager/src/main/java/com/winsun/controller/PartnerController.java
+1
-2
service-manager/src/main/java/com/winsun/service/AccessStatisticService.java
+16
-0
service-manager/src/main/java/com/winsun/service/impl/AccessStatisticServiceImpl.java
+164
-0
service-manager/src/main/resources/com/winsun/mapper/mapping/HhrUserMapper.xml
+68
-0
service-manager/src/main/resources/com/winsun/mapper/mapping/OrderMapper.xml
+0
-2
No files found.
common/src/main/java/com/winsun/mapper/HhrUserMapper.java
View file @
4a7b0b18
package
com
.
winsun
.
mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Component
;
import
com.baomidou.mybatisplus.mapper.BaseMapper
;
import
com.winsun.bean.HhrUser
;
import
java.util.List
;
import
java.util.Map
;
/**
* 合伙人用户表的Mapper
*/
@Mapper
@Component
public
interface
HhrUserMapper
extends
BaseMapper
<
HhrUser
>
{
/**
* 统计所有订单数
* @param userIds
* @param today
* @param toWeekStart
* @param toWeekEnd
* @param toMonthStart
* @param toMonthEnd
* @param isComplete
* @return
*/
Map
<
String
,
Object
>
statisticAllOrderNum
(
@Param
(
"userIds"
)
List
<
Integer
>
userIds
,
@Param
(
"today"
)
String
today
,
@Param
(
"toWeekStart"
)
String
toWeekStart
,
@Param
(
"toWeekEnd"
)
String
toWeekEnd
,
@Param
(
"toMonthStart"
)
String
toMonthStart
,
@Param
(
"toMonthEnd"
)
String
toMonthEnd
,
@Param
(
"isComplete"
)
boolean
isComplete
);
}
common/src/main/java/com/winsun/mapper/OrderMapper.java
View file @
4a7b0b18
...
...
@@ -2,6 +2,7 @@ package com.winsun.mapper;
import
com.baomidou.mybatisplus.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.winsun.bean.BroadBandOrder
;
import
com.winsun.bean.Order
;
import
org.apache.ibatis.annotations.*
;
...
...
@@ -92,6 +93,6 @@ public interface OrderMapper extends BaseMapper<Order> {
" and product_title = #{productTitle} and product_region = #{universityRegion} and product_university = #{universityName} and product_state=0 "
)
List
<
Map
<
String
,
Object
>>
queProductNameDataToUniversityNameData
(
String
productTitle
,
String
universityRegion
,
String
universityName
);
List
<
BroadBandOrder
>
selectBroadBandOrderList
(
BroadBandOrder
broadBandOrder
);
List
<
BroadBandOrder
>
selectBroadBandOrderList
(
Page
<
BroadBandOrder
>
page
,
BroadBandOrder
broadBandOrder
);
}
common/src/main/java/com/winsun/utils/AccessStatisticDataSearchUtils.java
0 → 100644
View file @
4a7b0b18
package
com
.
winsun
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.util.EntityUtils
;
import
java.io.IOException
;
@Slf4j
public
class
AccessStatisticDataSearchUtils
{
public
final
static
String
ES_URL
=
"http://172.18.101.171:9200/"
;
public
final
static
String
SEARCH
=
"/_search"
;
public
final
static
String
HOSTNAME
=
"ESC-NETWORK"
;
public
final
static
String
GRAFANA_URL
=
"http://172.18.101.171:3000/api/datasources/proxy/1/_msearch?max_concurrent_shard_requests=5"
;
private
final
static
String
AUTHORIZATION
=
"Bearer eyJrIjoiYUQ3QjlPOFVnejVwTVdHNWJrVDJPa2VUenNmajYyN1MiLCJuIjoieXJ5bSIsImlkIjoxfQ=="
;
/**
* es搜索
* @param query 查询表达式
* filter json数组,搜索条件
* aggs json对象,聚合搜索
* @return
*/
public
static
String
esSearch
(
String
query
)
{
// String query = "{\"size\":0,\"query\":{\"bool\":{\"filter\":[{\"range\":{\"@timestamp\":{\"gte\":1604795200000,\"lte\":1607895260000,\"format\":\"epoch_millis\"}}},{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"agent.hostname:\\\"ESC-NETWORK\\\" AND request:*.do*\"}}]}},\"aggs\":{\"groupBy\": {\"date_histogram\": {\"field\": \"@timestamp\",\"interval\": \"day\"},\"aggs\":{\"userCount\":{\"cardinality\":{\"field\":\"remote_addr\"}}}}}}";
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpResponse
response
=
null
;
String
resultString
=
""
;
try
{
// 创建Http Post请求
HttpPost
httppost
=
new
HttpPost
(
ES_URL
+
SEARCH
);
// 创建请求内容
StringEntity
entity
=
new
StringEntity
(
query
,
ContentType
.
APPLICATION_JSON
);
httppost
.
setEntity
(
entity
);
// 执行http请求
response
=
httpClient
.
execute
(
httppost
);
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
return
resultString
;
}
catch
(
Exception
e
)
{
log
.
error
(
"请求es接口异常"
);
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
null
;
}
/**
* grafanaSearch
* @param query
* @return
*/
public
static
String
grafanaSearch
(
String
query
)
{
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpResponse
response
=
null
;
String
resultString
=
""
;
try
{
// 创建Http Post请求
HttpPost
httppost
=
new
HttpPost
(
AccessStatisticDataSearchUtils
.
GRAFANA_URL
);
httppost
.
setHeader
(
"Authorization"
,
AccessStatisticDataSearchUtils
.
AUTHORIZATION
);
// 创建请求内容
StringEntity
entity
=
new
StringEntity
(
query
,
ContentType
.
APPLICATION_JSON
);
httppost
.
setEntity
(
entity
);
// 执行http请求
response
=
httpClient
.
execute
(
httppost
);
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
return
resultString
;
}
catch
(
Exception
e
)
{
log
.
error
(
"请求grafana接口异常"
);
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
""
;
}
}
service-manager/src/main/java/com/winsun/controller/AnalysisController.java
0 → 100644
View file @
4a7b0b18
package
com
.
winsun
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.winsun.auth.core.annotion.Permission
;
import
com.winsun.auth.core.base.controller.BaseController
;
import
com.winsun.auth.core.common.model.ResponseData
;
import
com.winsun.auth.core.shiro.ShiroUser
;
import
com.winsun.bean.HhrSupervisorSchool
;
import
com.winsun.bean.HhrUser
;
import
com.winsun.bean.UserSchool
;
import
com.winsun.mapper.HhrSupervisorSchoolMapper
;
import
com.winsun.mapper.HhrUserMapper
;
import
com.winsun.mapper.SysUserMapper
;
import
com.winsun.mapper.UserSchoolMapper
;
import
com.winsun.service.AccessStatisticService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
/**
* 首页数据获取
*/
@RequestMapping
((
"/analysis"
))
@RestController
@Slf4j
public
class
AnalysisController
extends
BaseController
{
private
HhrUserMapper
hhrUserMapper
;
private
SysUserMapper
sysUserMapper
;
private
HhrSupervisorSchoolMapper
hhrSupervisorSchoolMapper
;
private
UserSchoolMapper
userSchoolMapper
;
private
AccessStatisticService
accessStatisticService
;
@Autowired
public
AnalysisController
(
SysUserMapper
sysUserMapper
,
HhrUserMapper
hhrUserMapper
,
HhrSupervisorSchoolMapper
hhrSupervisorSchoolMapper
,
UserSchoolMapper
userSchoolMapper
,
AccessStatisticService
accessStatisticService
)
{
this
.
sysUserMapper
=
sysUserMapper
;
this
.
hhrUserMapper
=
hhrUserMapper
;
this
.
hhrSupervisorSchoolMapper
=
hhrSupervisorSchoolMapper
;
this
.
userSchoolMapper
=
userSchoolMapper
;
this
.
accessStatisticService
=
accessStatisticService
;
}
/**
* 获取用户信息
* @return
*/
@Permission
(
menuname
=
"获取用户信息"
,
value
=
"/getInfo"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
Map
<
String
,
Object
>>
getInfo
()
{
ShiroUser
shiroUser
=
getShiroUser
();
String
account
=
shiroUser
.
getAccount
();
log
.
info
(
"当前登录用户信息:"
+
account
);
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
result
.
put
(
"name"
,
shiroUser
.
getName
());
result
.
put
(
"phone"
,
shiroUser
.
getPhone
());
StringBuffer
sb
=
new
StringBuffer
();
for
(
String
str
:
shiroUser
.
getRoleNames
())
{
sb
.
append
(
str
+
" "
);
}
result
.
put
(
"roleNames"
,
sb
.
toString
());
result
.
put
(
"deptName"
,
shiroUser
.
getDeptName
());
return
ResponseData
.
success
(
result
);
}
/**
* 获取业务数据
* @return
*/
@Permission
(
menuname
=
"获取订单统计"
,
value
=
"/getOrderStatistic"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
Map
<
String
,
Object
>>
getOrderStatistic
()
{
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
ShiroUser
shiroUser
=
getShiroUser
();
Integer
id
=
shiroUser
.
getId
();
List
<
Integer
>
userIds
=
getUserIds
(
shiroUser
.
getId
(),
shiroUser
.
getRoleNames
());
String
today
,
toWeekStart
,
toWeekEnd
,
toMonthStart
,
toMonthEnd
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
nowDate
=
Calendar
.
getInstance
();
Calendar
weekDate
=
Calendar
.
getInstance
();
// 统计已有订单当日、周、月的情况
today
=
sdf
.
format
(
nowDate
.
getTime
());
// 获取本周
int
i
=
weekDate
.
get
(
Calendar
.
DAY_OF_WEEK
);
weekDate
.
add
(
Calendar
.
DATE
,
-
8
+
i
);
toWeekStart
=
sdf
.
format
(
weekDate
.
getTime
());
weekDate
.
add
(
Calendar
.
DATE
,
7
);
toWeekEnd
=
sdf
.
format
(
weekDate
.
getTime
());
// 获取当月
nowDate
.
set
(
Calendar
.
DATE
,
1
);
toMonthStart
=
sdf
.
format
(
nowDate
.
getTime
());
nowDate
.
add
(
Calendar
.
MONTH
,
1
);
toMonthEnd
=
sdf
.
format
(
nowDate
.
getTime
());
Map
<
String
,
Object
>
allOrders
=
hhrUserMapper
.
statisticAllOrderNum
(
userIds
,
today
,
toWeekStart
,
toWeekEnd
,
toMonthStart
,
toMonthEnd
,
false
);
resultMap
.
put
(
"allOrders"
,
allOrders
);
// 统计订单完成日、周、月情况
Map
<
String
,
Object
>
completeOrders
=
hhrUserMapper
.
statisticAllOrderNum
(
userIds
,
today
,
toWeekStart
,
toWeekEnd
,
toMonthStart
,
toMonthEnd
,
true
);
resultMap
.
put
(
"completeOrders"
,
completeOrders
);
// TODO 查询订单排名
return
ResponseData
.
success
(
resultMap
);
}
// 获取pv
@Permission
(
menuname
=
"获取pv"
,
value
=
"getPvStatistic"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
Map
<
String
,
Object
>>
getPvStatistic
(
String
startDate
,
String
endDate
,
String
type
)
{
// 判断身份
ShiroUser
shiroUser
=
getShiroUser
();
log
.
info
(
"获取当前登录信息"
+
JSON
.
toJSONString
(
shiroUser
));
List
<
Integer
>
userIds
=
getUserIds
(
shiroUser
.
getId
(),
shiroUser
.
getRoleNames
());
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Map
<
String
,
Object
>
pvStatisticsEchartData
=
null
;
try
{
// 督导查询合伙人id去匹配
pvStatisticsEchartData
=
accessStatisticService
.
getPvStatisticsEchartData
(
sdf
.
parse
(
startDate
),
sdf
.
parse
(
endDate
),
type
,
userIds
);
}
catch
(
ParseException
e
)
{
return
ResponseData
.
error
(
"日期格式错误"
);
}
return
ResponseData
.
success
(
pvStatisticsEchartData
);
}
// 获取uv
@Permission
(
menuname
=
"获取uv"
,
value
=
"getUvStatistic"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
Map
<
String
,
Object
>>
getUvStatistic
(
String
startDate
,
String
endDate
,
String
type
)
{
// 判断身份
ShiroUser
shiroUser
=
getShiroUser
();
log
.
info
(
"获取当前登录信息"
+
JSON
.
toJSONString
(
shiroUser
));
List
<
Integer
>
userIds
=
getUserIds
(
shiroUser
.
getId
(),
shiroUser
.
getRoleNames
());
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// 督导查询合伙人id去匹配
Map
<
String
,
Object
>
uvStatisticsEchartData
=
null
;
try
{
// 督导查询合伙人id去匹配
uvStatisticsEchartData
=
accessStatisticService
.
getUvStatisticsEchartData
(
sdf
.
parse
(
startDate
),
sdf
.
parse
(
endDate
),
type
,
userIds
);
}
catch
(
ParseException
e
)
{
return
ResponseData
.
error
(
"日期格式错误"
);
}
return
ResponseData
.
success
(
uvStatisticsEchartData
);
}
/**
* 获取管辖内用户id
* @return
*/
public
List
<
Integer
>
getUserIds
(
Integer
userId
,
List
<
String
>
roles
)
{
List
<
Integer
>
resultList
=
new
ArrayList
<>();
StringBuffer
sb
=
new
StringBuffer
();
for
(
String
role
:
roles
)
{
sb
.
append
(
role
);
}
String
rolesStr
=
sb
.
toString
();
if
(
rolesStr
.
indexOf
(
"超级管理员"
)
!=
-
1
)
{
return
resultList
;
}
else
if
(
rolesStr
.
indexOf
(
"县分管理员"
)
!=
-
1
){
// 县分管理员(查询管辖内的学校用户)
resultList
=
this
.
getSubNameUser
(
userId
);
}
else
if
(
rolesStr
.
indexOf
(
"督导"
)
!=
-
1
||
rolesStr
.
indexOf
(
"楼长"
)
!=
-
1
)
{
// 合伙人(督导、楼长,查询本人及下级信息)
resultList
=
this
.
getChildrenUser
(
userId
);
}
else
{
// 合伙人(成员,查询本人信息)
}
resultList
.
add
(
userId
);
return
resultList
;
}
/**
* 获取所有用户
* @param userId
* @return
*/
public
List
<
Integer
>
getAllUser
(
Integer
userId
)
{
Wrapper
<
HhrUser
>
wrapper
=
new
EntityWrapper
<>();
wrapper
.
setSqlSelect
(
"id"
);
wrapper
.
isNotNull
(
"id"
);
List
<
HhrUser
>
hhrUsers
=
hhrUserMapper
.
selectList
(
wrapper
);
List
<
Integer
>
resultList
=
new
ArrayList
<>();
hhrUsers
.
forEach
(
hhrUser
->
{
resultList
.
add
(
Integer
.
parseInt
(
hhrUser
.
getId
()));
});
return
resultList
;
}
/**
* 获取县分用户
* @param userId
* @return
*/
public
List
<
Integer
>
getSubNameUser
(
Integer
userId
)
{
Wrapper
<
HhrSupervisorSchool
>
wrapper
=
new
EntityWrapper
<>();
wrapper
.
eq
(
"userId"
,
userId
);
List
<
HhrSupervisorSchool
>
hhrSupervisorSchools
=
hhrSupervisorSchoolMapper
.
selectList
(
wrapper
);
if
(
hhrSupervisorSchools
==
null
||
hhrSupervisorSchools
.
size
()
==
0
)
{
return
new
ArrayList
<>();
}
String
[]
school
=
new
String
[
hhrSupervisorSchools
.
size
()];
for
(
int
i
=
0
;
i
<
hhrSupervisorSchools
.
size
();
++
i
)
{
school
[
i
]
=
hhrSupervisorSchools
.
get
(
i
).
getSchool
();
}
Wrapper
<
UserSchool
>
userSchoolWrapper
=
new
EntityWrapper
<>();
userSchoolWrapper
.
in
(
"school_id"
,
school
);
List
<
UserSchool
>
userSchools
=
userSchoolMapper
.
selectList
(
userSchoolWrapper
);
List
<
Integer
>
resultList
=
new
ArrayList
<>();
userSchools
.
forEach
(
userSchool
->
{
resultList
.
add
(
Integer
.
parseInt
(
userSchool
.
getUserId
()));
});
return
resultList
;
}
/**
* 获取子用户
* @param userId
* @return
*/
public
List
<
Integer
>
getChildrenUser
(
Integer
userId
)
{
Wrapper
<
HhrUser
>
wrapper
=
new
EntityWrapper
<>();
wrapper
.
like
(
"parent_ids"
,
userId
+
""
);
List
<
HhrUser
>
hhrUsers
=
hhrUserMapper
.
selectList
(
wrapper
);
List
<
Integer
>
resultList
=
new
ArrayList
<>();
hhrUsers
.
forEach
(
hhrUser
->
{
resultList
.
add
(
Integer
.
parseInt
(
hhrUser
.
getId
()));
});
return
resultList
;
}
}
service-manager/src/main/java/com/winsun/controller/OrderController.java
View file @
4a7b0b18
...
...
@@ -267,12 +267,10 @@ public class OrderController extends BaseController {
@Permission
(
menuname
=
"查询订单信息"
,
value
=
"broadBandOrder"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
Page
<
BroadBandOrder
>>
getBroadBandOrder
(
BroadBandOrder
broadBandOrder
)
{
broadBandOrder
.
setPageStart
((
broadBandOrder
.
getPageNo
()
-
1
)
*
broadBandOrder
.
getPageSize
());
List
<
BroadBandOrder
>
broadBandOrders
=
orderMapper
.
selectBroadBandOrderList
(
broadBandOrder
);
Page
<
BroadBandOrder
>
page
=
new
Page
<>(
broadBandOrder
.
getPageNo
(),
broadBandOrder
.
getPageSize
());
broadBandOrder
.
setPageStart
((
broadBandOrder
.
getPageNo
()
-
1
)
*
broadBandOrder
.
getPageSize
());
List
<
BroadBandOrder
>
broadBandOrders
=
orderMapper
.
selectBroadBandOrderList
(
page
,
broadBandOrder
);
page
.
setRecords
(
broadBandOrders
);
System
.
out
.
println
(
JSONArray
.
fromObject
(
broadBandOrders
).
toString
());
return
ResponseData
.
success
(
page
);
}
...
...
service-manager/src/main/java/com/winsun/controller/PartnerController.java
View file @
4a7b0b18
...
...
@@ -71,8 +71,7 @@ public class PartnerController extends BaseController {
@RequestParam
(
"schools"
)
Integer
[]
schools
,
@RequestParam
(
"subNames"
)
String
[]
subNames
,
@RequestParam
(
name
=
"position"
,
required
=
false
)
String
position
,
@RequestParam
(
name
=
"parentId"
,
required
=
false
)
String
parentId
,
@RequestParam
(
name
=
"parentIds"
,
required
=
false
)
String
parentIds
)
{
@RequestParam
(
name
=
"parentIds"
,
required
=
false
)
String
parentIds
)
{
SysUser
user
=
sysUserMapper
.
selectById
(
id
);
password
=
StringUtils
.
isNotBlank
(
password
)
?
MD5Utils
.
md5
(
password
,
user
.
getSalt
())
:
user
.
getPassword
();
parentId
=
!
"null"
.
equals
(
parentId
)
?
parentId
:
""
;
...
...
service-manager/src/main/java/com/winsun/service/AccessStatisticService.java
0 → 100644
View file @
4a7b0b18
package
com
.
winsun
.
service
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
* 访问统计量服务
*/
public
interface
AccessStatisticService
{
Map
<
String
,
Object
>
getPvStatisticsEchartData
(
Date
startDate
,
Date
endDate
,
String
type
,
List
<
Integer
>
userIds
);
Map
<
String
,
Object
>
getUvStatisticsEchartData
(
Date
startDate
,
Date
endDate
,
String
type
,
List
<
Integer
>
userIds
);
}
service-manager/src/main/java/com/winsun/service/impl/AccessStatisticServiceImpl.java
0 → 100644
View file @
4a7b0b18
package
com
.
winsun
.
service
.
impl
;
import
com.winsun.service.AccessStatisticService
;
import
com.winsun.utils.AccessStatisticDataSearchUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
net.sf.json.JSONArray
;
import
net.sf.json.JSONObject
;
import
org.springframework.stereotype.Service
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
/**
* luochengfeng
*/
@Slf4j
@Service
public
class
AccessStatisticServiceImpl
implements
AccessStatisticService
{
/**
* 获取pv访问统计量列表
* @return
*/
public
Map
<
String
,
Object
>
getPvStatisticsEchartData
(
Date
startDate
,
Date
endDate
,
String
type
,
List
<
Integer
>
userIds
)
{
SimpleDateFormat
sdf
=
null
;
if
(
"hour"
.
equals
(
type
))
{
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
else
if
(
"month"
.
equals
(
type
))
{
sdf
=
new
SimpleDateFormat
(
"yyyy-MM"
);
}
else
{
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
}
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
try
{
List
<
String
>
xAxisData
=
new
ArrayList
<>();
List
<
Integer
>
seriesData
=
new
ArrayList
<>();
Calendar
calendar
=
Calendar
.
getInstance
();
// 拆除数据
JSONArray
buckets
=
getAccessStatisticListData
(
startDate
,
endDate
,
type
,
userIds
);
JSONObject
bucket
=
new
JSONObject
();
for
(
Object
jsonObject
:
buckets
)
{
bucket
=
JSONObject
.
fromObject
(
jsonObject
);
if
(
bucket
.
get
(
"key"
)
==
null
||
bucket
.
get
(
"doc_count"
)
==
null
)
{
log
.
error
(
"获取pv访问量列表部分数据错误:"
+
JSONObject
.
fromObject
(
bucket
).
toString
());
break
;
}
Long
timestamp
=
bucket
.
getLong
(
"key"
);
calendar
.
setTimeInMillis
(
timestamp
);
if
(
startDate
.
getTime
()/
1000
<=
calendar
.
getTimeInMillis
()/
1000
)
{
xAxisData
.
add
(
sdf
.
format
(
calendar
.
getTime
()));
Integer
docCount
=
bucket
.
getInt
(
"doc_count"
);
seriesData
.
add
(
docCount
);
}
}
result
.
put
(
"xAxisData"
,
xAxisData
);
result
.
put
(
"seriesData"
,
seriesData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取pv访问量列表错误"
+
e
.
getMessage
());
e
.
printStackTrace
();
}
return
result
;
}
/**
* 获取uv访问统计量列表
* @param startDate
* @param endDate
* @param type
* @return
*/
public
Map
<
String
,
Object
>
getUvStatisticsEchartData
(
Date
startDate
,
Date
endDate
,
String
type
,
List
<
Integer
>
userIds
)
{
SimpleDateFormat
sdf
=
null
;
if
(
"hour"
.
equals
(
type
))
{
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
else
if
(
"month"
.
equals
(
type
))
{
sdf
=
new
SimpleDateFormat
(
"yyyy-MM"
);
}
else
{
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
}
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
try
{
List
<
String
>
xAxisData
=
new
ArrayList
<>();
List
<
Integer
>
seriesData
=
new
ArrayList
<>();
Calendar
calendar
=
Calendar
.
getInstance
();
// 拆除数据
JSONArray
buckets
=
getAccessStatisticListData
(
startDate
,
endDate
,
type
,
userIds
);
log
.
info
(
"uv数据:"
+
buckets
);
JSONObject
bucket
=
new
JSONObject
();
for
(
Object
jsonObject
:
buckets
)
{
bucket
=
JSONObject
.
fromObject
(
jsonObject
);
if
(
bucket
.
get
(
"key"
)
==
null
||
bucket
.
get
(
"userCount"
)
==
null
)
{
log
.
error
(
"获取uv访问量列表部分数据错误:"
+
JSONObject
.
fromObject
(
bucket
).
toString
());
break
;
}
Long
timestamp
=
bucket
.
getLong
(
"key"
);
calendar
.
setTimeInMillis
(
timestamp
);
if
(
startDate
.
getTime
()/
1000
<=
calendar
.
getTimeInMillis
()/
1000
)
{
xAxisData
.
add
(
sdf
.
format
(
calendar
.
getTime
()));
JSONObject
userCount
=
JSONObject
.
fromObject
(
bucket
.
get
(
"userCount"
));
Integer
value
=
userCount
.
getInt
(
"value"
);
seriesData
.
add
(
value
);
}
}
result
.
put
(
"xAxisData"
,
xAxisData
);
result
.
put
(
"seriesData"
,
seriesData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取uv访问量列表错误"
+
e
.
getMessage
());
e
.
printStackTrace
();
}
return
result
;
}
/**
* 获取指定日期的pv、uv访问统计量
* @param startDate
* @param endDate
* @return
*/
public
JSONArray
getAccessStatisticListData
(
Date
startDate
,
Date
endDate
,
String
type
,
List
<
Integer
>
userIds
){
JSONArray
buckets
=
new
JSONArray
();
// 判断用户id
StringBuilder
userIdsDql
=
new
StringBuilder
();
if
(
userIds
!=
null
&&
userIds
.
size
()
>
0
)
{
userIdsDql
.
append
(
"("
);
for
(
int
i
=
0
;
i
<
userIds
.
size
();
++
i
)
{
userIdsDql
.
append
(
"http_referer:*"
).
append
(
userIds
.
get
(
i
)).
append
(
"* "
);
if
(
userIds
.
size
()
!=
(
i
+
1
))
{
userIdsDql
.
append
(
"OR "
);
}
}
userIdsDql
.
append
(
")"
);
}
log
.
info
(
"统计用户:"
+
userIdsDql
.
toString
());
String
dql
=
"{\"size\":0,\"query\":{\"bool\":{\"filter\":[{\"range\":{\"@timestamp\":{\"gte\":"
+
startDate
.
getTime
()
+
",\"lte\":"
+
endDate
.
getTime
()
+
",\"format\":\"epoch_millis\"}}},{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"agent.hostname:\\\"ESC-NETWORK\\\" AND request:*.do* "
+
userIdsDql
.
toString
()
+
"\"}}]}},\"aggs\":{\"groupBy\": {\"date_histogram\": {\"field\": \"@timestamp\",\"interval\": \""
+
type
+
"\"},\"aggs\":{\"userCount\":{\"cardinality\":{\"field\":\"remote_addr\"}}}}}}"
;
log
.
info
(
"dql:"
+
dql
);
try
{
String
esSearch
=
AccessStatisticDataSearchUtils
.
esSearch
(
dql
);
log
.
info
(
esSearch
);
JSONObject
json
=
JSONObject
.
fromObject
(
esSearch
);
JSONObject
aggregations
=
JSONObject
.
fromObject
(
json
.
get
(
"aggregations"
));
JSONObject
groupBy
=
JSONObject
.
fromObject
(
aggregations
.
get
(
"groupBy"
));
buckets
=
JSONArray
.
fromObject
(
groupBy
.
get
(
"buckets"
));
}
catch
(
Exception
e
)
{
log
.
error
(
"处理数据异常,请检查数据格式是否正确"
);
log
.
error
(
e
.
getMessage
());
e
.
printStackTrace
();
}
return
buckets
;
}
}
service-manager/src/main/resources/com/winsun/mapper/mapping/HhrUserMapper.xml
0 → 100644
View file @
4a7b0b18
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.winsun.mapper.HhrUserMapper"
>
<select
id=
"statisticAllOrderNum"
resultType=
"java.util.HashMap"
>
SELECT
*
FROM
(
SELECT
count( * ) AS today
FROM
hhr_order
<where>
<if
test=
"userIds != null and userIds.size() > 0 "
>
hehuoren_id IN
<foreach
collection=
"userIds"
item=
"userId"
separator=
","
open=
"("
close=
")"
>
#{userId}
</foreach>
</if>
AND create_time
>
= #{today}
<if
test=
"isComplete == true"
>
AND order_status = "已完成"
</if>
</where>
) a,
(
SELECT
count( * ) AS toweek
FROM
hhr_order
<where>
<if
test=
"userIds != null and userIds.size() > 0 "
>
hehuoren_id IN
<foreach
collection=
"userIds"
item=
"userId"
separator=
","
open=
"("
close=
")"
>
#{userId}
</foreach>
</if>
AND create_time
>
= #{toWeekStart}
AND create_time
<
= #{toWeekEnd}
<if
test=
"isComplete == true"
>
AND order_status = "已完成"
</if>
</where>
) b,
(
SELECT
count( * ) AS tomonth
FROM
hhr_order
<where>
<if
test=
"userIds != null and userIds.size() > 0 "
>
hehuoren_id IN
<foreach
collection=
"userIds"
item=
"userId"
separator=
","
open=
"("
close=
")"
>
#{userId}
</foreach>
</if>
AND create_time
>
= #{toMonthStart}
AND create_time
<
= #{toMonthEnd}
<if
test=
"isComplete == true"
>
AND order_status = "已完成"
</if>
</where>
) c
</select>
</mapper>
\ No newline at end of file
service-manager/src/main/resources/com/winsun/mapper/mapping/OrderMapper.xml
View file @
4a7b0b18
...
...
@@ -158,7 +158,6 @@
where
ho.kd_order_id = ov.orderSeq
order by create_time desc
limit #{pageStart},#{pageSize}
</select>
</mapper>
\ 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