Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
poc-api
Project
Project
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
poc
poc-api
Commits
7d033828
Commit
7d033828
authored
Dec 23, 2024
by
alex yao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:数据统计-平台积分统计
parent
cf8affcd
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
717 additions
and
0 deletions
+717
-0
MemberPointUsageOverallQuery.sql
...m/poc/data_analyze/query/MemberPointUsageOverallQuery.sql
+9
-0
MemberPointUsageOverallQueryCondition.java
..._analyze/query/MemberPointUsageOverallQueryCondition.java
+34
-0
MemberPointUsageOverallQueryItem.java
.../data_analyze/query/MemberPointUsageOverallQueryItem.java
+77
-0
MemberPointUsageTrendQuery.sql
...com/poc/data_analyze/query/MemberPointUsageTrendQuery.sql
+29
-0
MemberPointUsageTrendQueryCondition.java
...ta_analyze/query/MemberPointUsageTrendQueryCondition.java
+55
-0
MemberPointUsageTrendQueryItem.java
...oc/data_analyze/query/MemberPointUsageTrendQueryItem.java
+47
-0
BizDataAnalyzePointRecordService.java
...ata_analyze/service/BizDataAnalyzePointRecordService.java
+4
-0
BizDataAnalyzePointRecordServiceImpl.java
...ze/service/impl/BizDataAnalyzePointRecordServiceImpl.java
+10
-0
DataStatisticsService.java
...va/cn/com/poc/expose/aggregate/DataStatisticsService.java
+29
-0
DataStatisticsServiceImpl.java
.../poc/expose/aggregate/impl/DataStatisticsServiceImpl.java
+98
-0
PlatformPointTrendDto.java
...poc/expose/dto/data_statistics/PlatformPointTrendDto.java
+36
-0
PlatformPointTrendRequestDto.java
...ose/dto/data_statistics/PlatformPointTrendRequestDto.java
+32
-0
PlatformPointUsageDto.java
...poc/expose/dto/data_statistics/PlatformPointUsageDto.java
+63
-0
PointUsage.java
...ava/cn/com/poc/expose/dto/data_statistics/PointUsage.java
+28
-0
PlatformPointUsageEntity.java
...va/cn/com/poc/expose/entity/PlatformPointUsageEntity.java
+63
-0
DataStatisticsRest.java
src/main/java/cn/com/poc/expose/rest/DataStatisticsRest.java
+32
-0
DataStatisticsRestImpl.java
...a/cn/com/poc/expose/rest/impl/DataStatisticsRestImpl.java
+71
-0
No files found.
src/main/java/cn/com/poc/data_analyze/query/MemberPointUsageOverallQuery.sql
0 → 100644
View file @
7d033828
SELECT
COALESCE
(
SUM
(
CASE
WHEN
DATE
(
datetime
)
=
CURDATE
()
THEN
point_num
ELSE
NULL
END
),
0
)
AS
today_total_points
,
COALESCE
(
SUM
(
CASE
WHEN
YEARWEEK
(
datetime
,
1
)
=
YEARWEEK
(
CURDATE
(),
1
)
THEN
point_num
ELSE
NULL
END
),
0
)
AS
week_total_points
,
COALESCE
(
SUM
(
CASE
WHEN
YEAR
(
datetime
)
=
YEAR
(
CURRENT_DATE
)
AND
MONTH
(
datetime
)
=
MONTH
(
CURRENT_DATE
)
THEN
point_num
ELSE
NULL
END
),
0
)
AS
month_total_points
,
COALESCE
(
SUM
(
CASE
WHEN
YEAR
(
datetime
)
=
YEAR
(
CURRENT_DATE
)
THEN
point_num
ELSE
NULL
END
),
0
)
AS
year_total_points
FROM
biz_data_analyze_point_record
WHERE
1
=
1
<<
and
member_id
=
:
memberId
>>
<<
and
channel
in
(:
channels
)
>>
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/query/MemberPointUsageOverallQueryCondition.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
data_analyze
.
query
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* Query Condition class for MemberPointUsageOverallQuery
*/
public
class
MemberPointUsageOverallQueryCondition
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
java
.
lang
.
Long
memberId
;
public
java
.
lang
.
Long
getMemberId
()
{
return
this
.
memberId
;
}
public
void
setMemberId
(
java
.
lang
.
Long
memberId
)
{
this
.
memberId
=
memberId
;
}
private
List
<
String
>
channels
;
public
List
<
String
>
getChannels
()
{
return
channels
;
}
public
void
setChannels
(
List
<
String
>
channels
)
{
this
.
channels
=
channels
;
}
}
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/query/MemberPointUsageOverallQueryItem.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
data_analyze
.
query
;
import
cn.com.yict.framemax.data.model.BaseItemClass
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
java.io.Serializable
;
/**
* Query Item class for MemberPointUsageOverallQuery
*/
@Entity
public
class
MemberPointUsageOverallQueryItem
extends
BaseItemClass
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* today_total_points
* today_total_points
*/
private
java
.
lang
.
Double
todayTotalPoints
;
@Column
(
name
=
"today_total_points"
)
public
java
.
lang
.
Double
getTodayTotalPoints
()
{
return
this
.
todayTotalPoints
;
}
public
void
setTodayTotalPoints
(
java
.
lang
.
Double
todayTotalPoints
)
{
this
.
todayTotalPoints
=
todayTotalPoints
;
}
/**
* week_total_points
* week_total_points
*/
private
java
.
lang
.
Double
weekTotalPoints
;
@Column
(
name
=
"week_total_points"
)
public
java
.
lang
.
Double
getWeekTotalPoints
()
{
return
this
.
weekTotalPoints
;
}
public
void
setWeekTotalPoints
(
java
.
lang
.
Double
weekTotalPoints
)
{
this
.
weekTotalPoints
=
weekTotalPoints
;
}
/**
* month_total_points
* month_total_points
*/
private
java
.
lang
.
Double
monthTotalPoints
;
@Column
(
name
=
"month_total_points"
)
public
java
.
lang
.
Double
getMonthTotalPoints
()
{
return
this
.
monthTotalPoints
;
}
public
void
setMonthTotalPoints
(
java
.
lang
.
Double
monthTotalPoints
)
{
this
.
monthTotalPoints
=
monthTotalPoints
;
}
/**
* year_total_points
* year_total_points
*/
private
java
.
lang
.
Double
yearTotalPoints
;
@Column
(
name
=
"year_total_points"
)
public
java
.
lang
.
Double
getYearTotalPoints
()
{
return
this
.
yearTotalPoints
;
}
public
void
setYearTotalPoints
(
java
.
lang
.
Double
yearTotalPoints
)
{
this
.
yearTotalPoints
=
yearTotalPoints
;
}
}
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/query/MemberPointUsageTrendQuery.sql
0 → 100644
View file @
7d033828
WITH
RECURSIVE
DateRange
AS
(
SELECT
:
startDate
AS
date_value
UNION
ALL
SELECT
DATE_ADD
(
date_value
,
INTERVAL
1
DAY
)
FROM
DateRange
WHERE
DATE_ADD
(
date_value
,
INTERVAL
1
DAY
)
<=
:
endDate
),
pointData
AS
(
SELECT
DATE
(
datetime
)
AS
consume_date
,
SUM
(
point_num
)
AS
total_points
FROM
biz_data_analyze_point_record
WHERE
1
=
1
<<
and
member_id
=
:
memberId
>>
<<
and
datetime
>=
:
startDate
and
datetime
<=
:
endDate
>>
<<
and
channel
=
:
channel
>>
GROUP
BY
DATE
(
datetime
)
)
SELECT
dr
.
date_value
AS
dialogue_date
,
COALESCE
(
pd
.
total_points
,
0
)
AS
total_points
FROM
DateRange
dr
LEFT
JOIN
pointData
pd
ON
dr
.
date_value
=
pd
.
consume_date
ORDER
BY
dr
.
date_value
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/query/MemberPointUsageTrendQueryCondition.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
data_analyze
.
query
;
import
java.io.Serializable
;
/**
* Query Condition class for MemberPointUsageQuery
*/
public
class
MemberPointUsageTrendQueryCondition
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
java
.
lang
.
String
startDate
;
public
java
.
lang
.
String
getStartDate
()
{
return
this
.
startDate
;
}
public
void
setStartDate
(
java
.
lang
.
String
startDate
)
{
this
.
startDate
=
startDate
;
}
private
java
.
lang
.
String
endDate
;
public
java
.
lang
.
String
getEndDate
()
{
return
this
.
endDate
;
}
public
void
setEndDate
(
java
.
lang
.
String
endDate
)
{
this
.
endDate
=
endDate
;
}
private
java
.
lang
.
Long
memberId
;
public
java
.
lang
.
Long
getMemberId
()
{
return
this
.
memberId
;
}
public
void
setMemberId
(
java
.
lang
.
Long
memberId
)
{
this
.
memberId
=
memberId
;
}
private
String
channel
;
public
String
getChannel
()
{
return
channel
;
}
public
void
setChannel
(
String
channel
)
{
this
.
channel
=
channel
;
}
}
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/query/MemberPointUsageTrendQueryItem.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
data_analyze
.
query
;
import
java.io.Serializable
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
cn.com.yict.framemax.data.model.BaseItemClass
;
/**
* Query Item class for MemberPointUsageQuery
*/
@Entity
public
class
MemberPointUsageTrendQueryItem
extends
BaseItemClass
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* dialogue_date
* dialogue_date
*/
private
String
dialogueDate
;
@Column
(
name
=
"dialogue_date"
)
public
String
getDialogueDate
()
{
return
this
.
dialogueDate
;
}
public
void
setDialogueDate
(
String
dialogueDate
)
{
this
.
dialogueDate
=
dialogueDate
;
}
/**
* total_points
* total_points
*/
private
java
.
lang
.
Double
totalPoints
;
@Column
(
name
=
"total_points"
)
public
java
.
lang
.
Double
getTotalPoints
()
{
return
this
.
totalPoints
;
}
public
void
setTotalPoints
(
java
.
lang
.
Double
totalPoints
)
{
this
.
totalPoints
=
totalPoints
;
}
}
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/service/BizDataAnalyzePointRecordService.java
View file @
7d033828
...
@@ -24,4 +24,8 @@ public interface BizDataAnalyzePointRecordService extends BaseService {
...
@@ -24,4 +24,8 @@ public interface BizDataAnalyzePointRecordService extends BaseService {
List
<
ChannelPointsCountQueryItem
>
channelPointsCountQuery
(
ChannelPointsCountQueryCondition
condition
,
PagingInfo
pagingInfo
);
List
<
ChannelPointsCountQueryItem
>
channelPointsCountQuery
(
ChannelPointsCountQueryCondition
condition
,
PagingInfo
pagingInfo
);
List
<
DataAnalyzePointRecordQueryItem
>
dataAnalyzePointRecordQuery
(
DataAnalyzePointRecordQueryCondition
condition
,
PagingInfo
pagingInfo
);
List
<
DataAnalyzePointRecordQueryItem
>
dataAnalyzePointRecordQuery
(
DataAnalyzePointRecordQueryCondition
condition
,
PagingInfo
pagingInfo
);
List
<
MemberPointUsageTrendQueryItem
>
memberPointUsageTrendQuery
(
MemberPointUsageTrendQueryCondition
condition
,
PagingInfo
pagingInfo
);
List
<
MemberPointUsageOverallQueryItem
>
memberPointUsageOverallQuery
(
MemberPointUsageOverallQueryCondition
condition
,
PagingInfo
pagingInfo
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/data_analyze/service/impl/BizDataAnalyzePointRecordServiceImpl.java
View file @
7d033828
...
@@ -103,4 +103,14 @@ public class BizDataAnalyzePointRecordServiceImpl extends BaseServiceImpl
...
@@ -103,4 +103,14 @@ public class BizDataAnalyzePointRecordServiceImpl extends BaseServiceImpl
public
List
<
DataAnalyzePointRecordQueryItem
>
dataAnalyzePointRecordQuery
(
DataAnalyzePointRecordQueryCondition
condition
,
PagingInfo
pagingInfo
)
{
public
List
<
DataAnalyzePointRecordQueryItem
>
dataAnalyzePointRecordQuery
(
DataAnalyzePointRecordQueryCondition
condition
,
PagingInfo
pagingInfo
)
{
return
this
.
sqlDao
.
query
(
condition
,
DataAnalyzePointRecordQueryItem
.
class
,
pagingInfo
);
return
this
.
sqlDao
.
query
(
condition
,
DataAnalyzePointRecordQueryItem
.
class
,
pagingInfo
);
}
}
@Override
public
List
<
MemberPointUsageTrendQueryItem
>
memberPointUsageTrendQuery
(
MemberPointUsageTrendQueryCondition
condition
,
PagingInfo
pagingInfo
)
{
return
this
.
sqlDao
.
query
(
condition
,
MemberPointUsageTrendQueryItem
.
class
,
pagingInfo
);
}
@Override
public
List
<
MemberPointUsageOverallQueryItem
>
memberPointUsageOverallQuery
(
MemberPointUsageOverallQueryCondition
condition
,
PagingInfo
pagingInfo
)
{
return
this
.
sqlDao
.
query
(
condition
,
MemberPointUsageOverallQueryItem
.
class
,
pagingInfo
);
}
}
}
\ No newline at end of file
src/main/java/cn/com/poc/expose/aggregate/DataStatisticsService.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
aggregate
;
import
cn.com.poc.data_analyze.domain.DataAnalyzeTimeRange
;
import
cn.com.poc.data_analyze.query.MemberPointUsageTrendQueryItem
;
import
cn.com.poc.expose.entity.PlatformPointUsageEntity
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author alex.yao
* @date 2024/12/23
*/
public
interface
DataStatisticsService
{
/**
* 平台积分使用情况
*
* @param memberId 会员ID
* @param channels 渠道列表
*/
PlatformPointUsageEntity
platformPointUsage
(
Long
memberId
,
List
<
String
>
channels
);
/**
* 平台积分使用趋势
*/
Map
<
String
,
List
<
MemberPointUsageTrendQueryItem
>>
platformPointTrend
(
Long
memberId
,
List
<
String
>
channels
,
DataAnalyzeTimeRange
timeRange
);
}
src/main/java/cn/com/poc/expose/aggregate/impl/DataStatisticsServiceImpl.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
aggregate
.
impl
;
import
cn.com.poc.common.utils.Assert
;
import
cn.com.poc.common.utils.DateUtils
;
import
cn.com.poc.data_analyze.constants.DataAnalyzeTimeRangeEnum
;
import
cn.com.poc.data_analyze.domain.DataAnalyzeTimeRange
;
import
cn.com.poc.data_analyze.query.MemberPointUsageOverallQueryCondition
;
import
cn.com.poc.data_analyze.query.MemberPointUsageOverallQueryItem
;
import
cn.com.poc.data_analyze.query.MemberPointUsageTrendQueryCondition
;
import
cn.com.poc.data_analyze.query.MemberPointUsageTrendQueryItem
;
import
cn.com.poc.data_analyze.service.BizDataAnalyzePointRecordService
;
import
cn.com.poc.expose.aggregate.DataStatisticsService
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointUsageDto
;
import
cn.com.poc.expose.entity.PlatformPointUsageEntity
;
import
cn.com.yict.framemax.core.i18n.I18nMessageException
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TreeMap
;
/**
* @author alex.yao
* @date 2024/12/23
*/
@Service
public
class
DataStatisticsServiceImpl
implements
DataStatisticsService
{
@Resource
private
BizDataAnalyzePointRecordService
bizDataAnalyzePointRecordService
;
@Override
public
PlatformPointUsageEntity
platformPointUsage
(
Long
memberId
,
List
<
String
>
channels
)
{
MemberPointUsageOverallQueryCondition
memberPointUsageOverallQueryCondition
=
new
MemberPointUsageOverallQueryCondition
();
memberPointUsageOverallQueryCondition
.
setMemberId
(
memberId
);
memberPointUsageOverallQueryCondition
.
setChannels
(
channels
);
List
<
MemberPointUsageOverallQueryItem
>
items
=
bizDataAnalyzePointRecordService
.
memberPointUsageOverallQuery
(
memberPointUsageOverallQueryCondition
,
null
);
PlatformPointUsageEntity
platformPointUsageEntity
=
new
PlatformPointUsageEntity
();
if
(
CollectionUtils
.
isNotEmpty
(
items
))
{
MemberPointUsageOverallQueryItem
memberPointUsageOverallQueryItem
=
items
.
get
(
0
);
platformPointUsageEntity
.
setToday
(
memberPointUsageOverallQueryItem
.
getTodayTotalPoints
());
platformPointUsageEntity
.
setWeek
(
memberPointUsageOverallQueryItem
.
getWeekTotalPoints
());
platformPointUsageEntity
.
setMonth
(
memberPointUsageOverallQueryItem
.
getMonthTotalPoints
());
platformPointUsageEntity
.
setYear
(
memberPointUsageOverallQueryItem
.
getYearTotalPoints
());
}
else
{
platformPointUsageEntity
.
setToday
(
0
D
);
platformPointUsageEntity
.
setWeek
(
0
D
);
platformPointUsageEntity
.
setMonth
(
0
D
);
platformPointUsageEntity
.
setYear
(
0
D
);
}
return
platformPointUsageEntity
;
}
@Override
public
Map
<
String
,
List
<
MemberPointUsageTrendQueryItem
>>
platformPointTrend
(
Long
memberId
,
List
<
String
>
channels
,
DataAnalyzeTimeRange
timeRange
)
{
Map
<
String
,
List
<
MemberPointUsageTrendQueryItem
>>
result
=
new
TreeMap
<>();
String
startTime
;
String
endTime
;
Date
startDate
;
Date
endDate
;
switch
(
DataAnalyzeTimeRangeEnum
.
getByType
(
timeRange
.
getRangType
()))
{
case
week:
endDate
=
DateUtils
.
getTodayEnd
();
startDate
=
DateUtils
.
getDayStartTime
(
DateUtils
.
addDays
(
endDate
,
-
6
));
startTime
=
DateUtils
.
formatDate
(
startDate
,
DateUtils
.
yyyy_MM_dd
);
endTime
=
DateUtils
.
formatDate
(
endDate
,
DateUtils
.
yyyy_MM_dd_HH_mm_ss
);
break
;
case
month:
endDate
=
DateUtils
.
getTodayEnd
();
startDate
=
DateUtils
.
getDayStartTime
(
DateUtils
.
addMonth
(
endDate
,
-
1
));
startTime
=
DateUtils
.
formatDate
(
startDate
,
DateUtils
.
yyyy_MM_dd
);
endTime
=
DateUtils
.
formatDate
(
endDate
,
DateUtils
.
yyyy_MM_dd_HH_mm_ss
);
break
;
case
customize:
Assert
.
notBlank
(
timeRange
.
getStartTime
());
Assert
.
notBlank
(
timeRange
.
getEndTime
());
startTime
=
timeRange
.
getStartTime
();
endDate
=
DateUtils
.
getDayEnd
(
DateUtils
.
stringToDateShort
(
timeRange
.
getEndTime
()));
endTime
=
DateUtils
.
formatDate
(
endDate
,
DateUtils
.
yyyy_MM_dd_HH_mm_ss
);
break
;
default
:
throw
new
I18nMessageException
(
"data-analyze/not.support.rang.type"
);
}
for
(
String
channel
:
channels
)
{
MemberPointUsageTrendQueryCondition
memberPointUsageTrendQueryCondition
=
new
MemberPointUsageTrendQueryCondition
();
memberPointUsageTrendQueryCondition
.
setStartDate
(
startTime
);
memberPointUsageTrendQueryCondition
.
setEndDate
(
endTime
);
memberPointUsageTrendQueryCondition
.
setMemberId
(
memberId
);
memberPointUsageTrendQueryCondition
.
setChannel
(
channel
);
List
<
MemberPointUsageTrendQueryItem
>
items
=
bizDataAnalyzePointRecordService
.
memberPointUsageTrendQuery
(
memberPointUsageTrendQueryCondition
,
null
);
result
.
put
(
channel
,
items
);
}
return
result
;
}
}
src/main/java/cn/com/poc/expose/dto/data_statistics/PlatformPointTrendDto.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
dto
.
data_statistics
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @author alex.yao
* @date 2024/12/23
*/
public
class
PlatformPointTrendDto
implements
Serializable
{
/**
* 渠道
*/
private
String
channel
;
/**
* 积分使用情况
*/
private
List
<
PointUsage
>
pointUsages
;
public
String
getChannel
()
{
return
channel
;
}
public
void
setChannel
(
String
channel
)
{
this
.
channel
=
channel
;
}
public
List
<
PointUsage
>
getPointUsages
()
{
return
pointUsages
;
}
public
void
setPointUsages
(
List
<
PointUsage
>
pointUsages
)
{
this
.
pointUsages
=
pointUsages
;
}
}
src/main/java/cn/com/poc/expose/dto/data_statistics/PlatformPointTrendRequestDto.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
dto
.
data_statistics
;
import
cn.com.poc.data_analyze.domain.DataAnalyzeTimeRange
;
import
java.util.List
;
/**
* @author alex.yao
* @date 2024/12/23
*/
public
class
PlatformPointTrendRequestDto
{
private
List
<
String
>
channel
;
private
DataAnalyzeTimeRange
timeRange
;
public
List
<
String
>
getChannel
()
{
return
channel
;
}
public
void
setChannel
(
List
<
String
>
channel
)
{
this
.
channel
=
channel
;
}
public
DataAnalyzeTimeRange
getTimeRange
()
{
return
timeRange
;
}
public
void
setTimeRange
(
DataAnalyzeTimeRange
timeRange
)
{
this
.
timeRange
=
timeRange
;
}
}
src/main/java/cn/com/poc/expose/dto/data_statistics/PlatformPointUsageDto.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
dto
.
data_statistics
;
import
java.io.Serializable
;
/**
* @author alex.yao
* @date 2024/12/23
*/
public
class
PlatformPointUsageDto
implements
Serializable
{
/**
* 今日使用量
*/
private
Double
today
;
/**
* 本周使用量
*/
private
Double
week
;
/**
* 本月使用量
*/
private
Double
month
;
/**
* 本年使用量
*/
private
Double
year
;
public
Double
getToday
()
{
return
today
;
}
public
void
setToday
(
Double
today
)
{
this
.
today
=
today
;
}
public
Double
getWeek
()
{
return
week
;
}
public
void
setWeek
(
Double
week
)
{
this
.
week
=
week
;
}
public
Double
getMonth
()
{
return
month
;
}
public
void
setMonth
(
Double
month
)
{
this
.
month
=
month
;
}
public
Double
getYear
()
{
return
year
;
}
public
void
setYear
(
Double
year
)
{
this
.
year
=
year
;
}
}
src/main/java/cn/com/poc/expose/dto/data_statistics/PointUsage.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
dto
.
data_statistics
;
/**
* @author alex.yao
* @date 2024/12/23
*/
public
class
PointUsage
{
private
String
date
;
private
Double
count
;
public
String
getDate
()
{
return
date
;
}
public
void
setDate
(
String
date
)
{
this
.
date
=
date
;
}
public
Double
getCount
()
{
return
count
;
}
public
void
setCount
(
Double
count
)
{
this
.
count
=
count
;
}
}
src/main/java/cn/com/poc/expose/entity/PlatformPointUsageEntity.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
entity
;
import
java.io.Serializable
;
/**
* @author alex.yao
* @date 2024/12/23
*/
public
class
PlatformPointUsageEntity
implements
Serializable
{
/**
* 今日使用量
*/
private
Double
today
;
/**
* 本周使用量
*/
private
Double
week
;
/**
* 本月使用量
*/
private
Double
month
;
/**
* 本年使用量
*/
private
Double
year
;
public
Double
getToday
()
{
return
today
;
}
public
void
setToday
(
Double
today
)
{
this
.
today
=
today
;
}
public
Double
getWeek
()
{
return
week
;
}
public
void
setWeek
(
Double
week
)
{
this
.
week
=
week
;
}
public
Double
getMonth
()
{
return
month
;
}
public
void
setMonth
(
Double
month
)
{
this
.
month
=
month
;
}
public
Double
getYear
()
{
return
year
;
}
public
void
setYear
(
Double
year
)
{
this
.
year
=
year
;
}
}
src/main/java/cn/com/poc/expose/rest/DataStatisticsRest.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
rest
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointTrendDto
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointTrendRequestDto
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointUsageDto
;
import
cn.com.yict.framemax.core.rest.BaseRest
;
import
cn.com.yict.framemax.web.permission.Access
;
import
cn.com.yict.framemax.web.permission.Permission
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.List
;
/**
* 数据统计接口
*
* @author alex.yao
* @date 2024/12/23
*/
@Permission
(
Access
.
Safety
)
public
interface
DataStatisticsRest
extends
BaseRest
{
/**
* 平台积分使用情况
*/
PlatformPointUsageDto
platformPointUsage
(
@RequestParam
List
<
String
>
channels
);
/**
* 平台积分使用趋势
*/
List
<
PlatformPointTrendDto
>
platformPointTrend
(
@RequestBody
PlatformPointTrendRequestDto
dto
);
}
src/main/java/cn/com/poc/expose/rest/impl/DataStatisticsRestImpl.java
0 → 100644
View file @
7d033828
package
cn
.
com
.
poc
.
expose
.
rest
.
impl
;
import
cn.com.poc.common.utils.Assert
;
import
cn.com.poc.common.utils.BlContext
;
import
cn.com.poc.data_analyze.query.MemberPointUsageTrendQueryItem
;
import
cn.com.poc.expose.aggregate.DataStatisticsService
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointTrendDto
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointTrendRequestDto
;
import
cn.com.poc.expose.dto.data_statistics.PlatformPointUsageDto
;
import
cn.com.poc.expose.dto.data_statistics.PointUsage
;
import
cn.com.poc.expose.entity.PlatformPointUsageEntity
;
import
cn.com.poc.expose.rest.DataStatisticsRest
;
import
cn.com.poc.support.security.oauth.entity.UserBaseEntity
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* @author alex.yao
* @date 2024/12/23
*/
@Component
public
class
DataStatisticsRestImpl
implements
DataStatisticsRest
{
@Resource
private
DataStatisticsService
dataStatisticsService
;
@Override
public
PlatformPointUsageDto
platformPointUsage
(
List
<
String
>
channels
)
{
Assert
.
notEmpty
(
channels
);
UserBaseEntity
userBaseEntity
=
BlContext
.
getCurrentUser
();
PlatformPointUsageEntity
platformPointUsageEntity
=
dataStatisticsService
.
platformPointUsage
(
userBaseEntity
.
userId
,
channels
);
PlatformPointUsageDto
platformPointUsageDto
=
new
PlatformPointUsageDto
();
platformPointUsageDto
.
setToday
(
BigDecimal
.
valueOf
(
platformPointUsageEntity
.
getToday
()).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
doubleValue
());
platformPointUsageDto
.
setWeek
((
BigDecimal
.
valueOf
(
platformPointUsageEntity
.
getWeek
()).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
doubleValue
()));
platformPointUsageDto
.
setMonth
((
BigDecimal
.
valueOf
(
platformPointUsageEntity
.
getMonth
()).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
doubleValue
()));
platformPointUsageDto
.
setYear
((
BigDecimal
.
valueOf
(
platformPointUsageEntity
.
getYear
()).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
doubleValue
()));
return
platformPointUsageDto
;
}
@Override
public
List
<
PlatformPointTrendDto
>
platformPointTrend
(
PlatformPointTrendRequestDto
dto
)
{
Assert
.
notEmpty
(
dto
.
getChannel
());
List
<
PlatformPointTrendDto
>
result
=
new
ArrayList
<>();
UserBaseEntity
userBaseEntity
=
BlContext
.
getCurrentUser
();
Map
<
String
,
List
<
MemberPointUsageTrendQueryItem
>>
pointTrend
=
dataStatisticsService
.
platformPointTrend
(
userBaseEntity
.
userId
,
dto
.
getChannel
(),
dto
.
getTimeRange
());
Set
<
String
>
keySet
=
pointTrend
.
keySet
();
for
(
String
channel
:
keySet
)
{
PlatformPointTrendDto
platformPointTrendDto
=
new
PlatformPointTrendDto
();
platformPointTrendDto
.
setChannel
(
channel
);
List
<
MemberPointUsageTrendQueryItem
>
items
=
pointTrend
.
get
(
channel
);
List
<
PointUsage
>
pointUsages
=
new
ArrayList
<>();
for
(
MemberPointUsageTrendQueryItem
item
:
items
)
{
PointUsage
pointUsage
=
new
PointUsage
();
pointUsage
.
setDate
(
item
.
getDialogueDate
());
pointUsage
.
setCount
(
BigDecimal
.
valueOf
(
item
.
getTotalPoints
()).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
doubleValue
());
pointUsages
.
add
(
pointUsage
);
}
platformPointTrendDto
.
setPointUsages
(
pointUsages
);
result
.
add
(
platformPointTrendDto
);
}
return
result
;
}
}
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