From dc1691f0195ef6c96aee36f50fc7e86cfcf651b9 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sat, 9 Sep 2023 15:09:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E4=BB=AA=E8=A1=A8?= =?UTF-8?q?=E7=9B=98=E8=AE=BF=E5=AE=A2=E5=9C=B0=E5=9F=9F=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=8C=BA=E5=9D=97=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cnadmin/monitor/mapper/LogMapper.java | 8 ++ .../model/vo/DashboardGeoDistributionVO.java | 51 ++++++++ .../model/vo/DashboardPopularModuleVO.java | 1 + .../monitor/model/vo/DashboardTotalVO.java | 1 + .../monitor/service/DashboardService.java | 8 ++ .../cnadmin/monitor/service/LogService.java | 10 +- .../service/impl/DashboardServiceImpl.java | 16 ++- .../monitor/service/impl/LogServiceImpl.java | 8 +- .../src/main/resources/mapper/LogMapper.xml | 10 ++ .../model/vo/DashboardAnnouncementVO.java | 2 +- continew-admin-ui/src/api/common/dashboard.ts | 24 ++-- .../components/categories-percent.vue | 114 ------------------ .../dashboard/workplace/components/docs.vue | 23 +++- .../workplace/components/geo-distribution.vue | 90 ++++++++++++++ .../workplace/components/popular-module.vue | 6 +- .../src/views/dashboard/workplace/index.vue | 2 +- .../views/dashboard/workplace/locale/en-US.ts | 6 +- .../views/dashboard/workplace/locale/zh-CN.ts | 6 +- .../common/DashboardController.java | 7 ++ 19 files changed, 253 insertions(+), 140 deletions(-) create mode 100644 continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardGeoDistributionVO.java delete mode 100644 continew-admin-ui/src/views/dashboard/workplace/components/categories-percent.vue create mode 100644 continew-admin-ui/src/views/dashboard/workplace/components/geo-distribution.vue diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/mapper/LogMapper.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/mapper/LogMapper.java index 577f634c..ce99e3cd 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/mapper/LogMapper.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/mapper/LogMapper.java @@ -17,6 +17,7 @@ package top.charles7c.cnadmin.monitor.mapper; import java.util.List; +import java.util.Map; import top.charles7c.cnadmin.common.base.BaseMapper; import top.charles7c.cnadmin.monitor.model.entity.LogDO; @@ -44,4 +45,11 @@ public interface LogMapper extends BaseMapper { * @return 仪表盘热门模块列表 */ List selectListDashboardPopularModule(); + + /** + * 查询仪表盘访客地域分布信息 + * + * @return 仪表盘访客地域分布信息 + */ + List> selectListDashboardGeoDistribution(); } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardGeoDistributionVO.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardGeoDistributionVO.java new file mode 100644 index 00000000..ea3619dc --- /dev/null +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardGeoDistributionVO.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.cnadmin.monitor.model.vo; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * 仪表盘-访客地域分布信息 + * + * @author Charles7c + * @since 2023/9/9 12:07 + */ +@Data +@Schema(description = "仪表盘-访客地域分布信息") +public class DashboardGeoDistributionVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 地点列表 + */ + @Schema(description = "地点列表", example = "[\"中国北京北京市\",\"中国广东省深圳市\"]") + private List locations; + + /** + * 地点 IP 统计信息 + */ + @Schema(description = "地点 IP 统计信息", + example = "[{\"name\":\"中国北京北京市\",\"value\":1000},{\"name\":\"中国广东省深圳市\",\"value\": 500}]") + private List> locationIpStatistics; +} diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardPopularModuleVO.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardPopularModuleVO.java index b9825d0e..f387e4d8 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardPopularModuleVO.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardPopularModuleVO.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; * @since 2023/9/9 9:52 */ @Data +@Schema(description = "仪表盘-热门模块信息") public class DashboardPopularModuleVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardTotalVO.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardTotalVO.java index 1fc728b4..7bc642f5 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardTotalVO.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardTotalVO.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; * @since 2023/9/8 21:32 */ @Data +@Schema(description = "仪表盘-总计信息") public class DashboardTotalVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/DashboardService.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/DashboardService.java index bce9dc57..8f2d14fd 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/DashboardService.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/DashboardService.java @@ -18,6 +18,7 @@ package top.charles7c.cnadmin.monitor.service; import java.util.List; +import top.charles7c.cnadmin.monitor.model.vo.DashboardGeoDistributionVO; import top.charles7c.cnadmin.monitor.model.vo.DashboardPopularModuleVO; import top.charles7c.cnadmin.monitor.model.vo.DashboardTotalVO; import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO; @@ -44,6 +45,13 @@ public interface DashboardService { */ List listPopularModule(); + /** + * 查询访客地域分布信息 + * + * @return 访客地域分布信息 + */ + DashboardGeoDistributionVO getGeoDistribution(); + /** * 查询公告列表 * diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/LogService.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/LogService.java index 0749a0dc..f0f35e66 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/LogService.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/LogService.java @@ -17,6 +17,7 @@ package top.charles7c.cnadmin.monitor.service; import java.util.List; +import java.util.Map; import top.charles7c.cnadmin.common.model.query.PageQuery; import top.charles7c.cnadmin.common.model.vo.PageDataVO; @@ -87,5 +88,12 @@ public interface LogService { * * @return 仪表盘热门模块列表 */ - List listPopularModule(); + List listDashboardPopularModule(); + + /** + * 查询仪表盘访客地域分布信息 + * + * @return 仪表盘访客地域分布信息 + */ + List> listDashboardGeoDistribution(); } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/DashboardServiceImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/DashboardServiceImpl.java index 23b34279..51a2d6bf 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/DashboardServiceImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/DashboardServiceImpl.java @@ -18,14 +18,18 @@ package top.charles7c.cnadmin.monitor.service.impl; import java.math.BigDecimal; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; +import top.charles7c.cnadmin.monitor.model.vo.DashboardGeoDistributionVO; import top.charles7c.cnadmin.monitor.model.vo.DashboardPopularModuleVO; import top.charles7c.cnadmin.monitor.model.vo.DashboardTotalVO; import top.charles7c.cnadmin.monitor.service.DashboardService; @@ -61,7 +65,7 @@ public class DashboardServiceImpl implements DashboardService { @Override public List listPopularModule() { - List popularModuleList = logService.listPopularModule(); + List popularModuleList = logService.listDashboardPopularModule(); for (DashboardPopularModuleVO popularModule : popularModuleList) { Long todayPvCount = popularModule.getTodayPvCount(); Long yesterdayPvCount = popularModule.getYesterdayPvCount(); @@ -73,6 +77,16 @@ public class DashboardServiceImpl implements DashboardService { return popularModuleList; } + @Override + public DashboardGeoDistributionVO getGeoDistribution() { + List> locationIpStatistics = logService.listDashboardGeoDistribution(); + DashboardGeoDistributionVO geoDistribution = new DashboardGeoDistributionVO(); + geoDistribution.setLocationIpStatistics(locationIpStatistics); + geoDistribution.setLocations( + locationIpStatistics.stream().map(m -> Convert.toStr(m.get("name"))).collect(Collectors.toList())); + return geoDistribution; + } + @Override public List listAnnouncement() { return announcementService.listDashboard(); diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java index a52e395a..00248641 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java @@ -17,6 +17,7 @@ package top.charles7c.cnadmin.monitor.service.impl; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; @@ -151,10 +152,15 @@ public class LogServiceImpl implements LogService { } @Override - public List listPopularModule() { + public List listDashboardPopularModule() { return logMapper.selectListDashboardPopularModule(); } + @Override + public List> listDashboardGeoDistribution() { + return logMapper.selectListDashboardGeoDistribution(); + } + /** * 填充数据 * diff --git a/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml b/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml index 499d7fea..0934a667 100644 --- a/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml +++ b/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml @@ -22,4 +22,14 @@ ORDER BY `pvCount` DESC LIMIT 10 + + \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java index 80936eb6..583b38b2 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java @@ -31,7 +31,7 @@ import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum; * @since 2023/8/20 10:55 */ @Data -@Schema(description = "仪表盘公告信息") +@Schema(description = "仪表盘-公告信息") public class DashboardAnnouncementVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/continew-admin-ui/src/api/common/dashboard.ts b/continew-admin-ui/src/api/common/dashboard.ts index 35ed3749..6583b828 100644 --- a/continew-admin-ui/src/api/common/dashboard.ts +++ b/continew-admin-ui/src/api/common/dashboard.ts @@ -16,6 +16,11 @@ export interface DashboardPopularModuleRecord { newPvFromYesterday: number; } +export interface DashboardGeoDistributionRecord { + locations: string[]; + locationIpStatistics: []; +} + export interface DashboardAnnouncementRecord { id: string; title: string; @@ -32,6 +37,12 @@ export function listPopularModule() { ); } +export function getGeoDistribution() { + return axios.get( + `${BASE_URL}/geo/distribution` + ); +} + export function listAnnouncement() { return axios.get(`${BASE_URL}/announcement`); } @@ -43,15 +54,4 @@ export interface ContentDataRecord { export function queryContentData() { return axios.get('/api/content-data'); -} - -export interface PopularRecord { - key: number; - clickNumber: string; - title: string; - increases: number; -} - -export function queryPopularList(params: { type: string }) { - return axios.get('/api/popular/list', { params }); -} +} \ No newline at end of file diff --git a/continew-admin-ui/src/views/dashboard/workplace/components/categories-percent.vue b/continew-admin-ui/src/views/dashboard/workplace/components/categories-percent.vue deleted file mode 100644 index cbab4e33..00000000 --- a/continew-admin-ui/src/views/dashboard/workplace/components/categories-percent.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - - - diff --git a/continew-admin-ui/src/views/dashboard/workplace/components/docs.vue b/continew-admin-ui/src/views/dashboard/workplace/components/docs.vue index 434cfa0e..e45ddbab 100644 --- a/continew-admin-ui/src/views/dashboard/workplace/components/docs.vue +++ b/continew-admin-ui/src/views/dashboard/workplace/components/docs.vue @@ -3,8 +3,8 @@ class="general-card" :title="$t('workplace.docs')" :header-style="{ paddingBottom: 0 }" - :body-style="{ paddingTop: 0 }" - style="height: 166px" + :body-style="{ paddingTop: '10px', paddingBottom: '10px' }" + style="height: 198px" > @@ -58,3 +76,4 @@ color: rgb(var(--gray-8)); } + \ No newline at end of file diff --git a/continew-admin-ui/src/views/dashboard/workplace/components/geo-distribution.vue b/continew-admin-ui/src/views/dashboard/workplace/components/geo-distribution.vue new file mode 100644 index 00000000..0684840f --- /dev/null +++ b/continew-admin-ui/src/views/dashboard/workplace/components/geo-distribution.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/continew-admin-ui/src/views/dashboard/workplace/components/popular-module.vue b/continew-admin-ui/src/views/dashboard/workplace/components/popular-module.vue index 58097b89..2b5b212e 100644 --- a/continew-admin-ui/src/views/dashboard/workplace/components/popular-module.vue +++ b/continew-admin-ui/src/views/dashboard/workplace/components/popular-module.vue @@ -3,7 +3,7 @@