From 3440aa4faa23e267735f564476d8bccaf8c0208f Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sat, 9 Sep 2023 00:20:50 +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=E6=80=BB=E8=AE=A1=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 | 11 ++- .../monitor/model/vo/DashboardTotalVO.java | 68 +++++++++++++++ .../monitor/service/DashboardService.java | 45 ++++++++++ .../cnadmin/monitor/service/LogService.java | 12 ++- .../service/impl/DashboardServiceImpl.java | 65 +++++++++++++++ .../monitor/service/impl/LogServiceImpl.java | 5 ++ .../src/main/resources/mapper/LogMapper.xml | 7 ++ .../system/mapper/AnnouncementMapper.java | 4 +- ...rdVO.java => DashboardAnnouncementVO.java} | 2 +- .../system/service/AnnouncementService.java | 4 +- .../service/impl/AnnouncementServiceImpl.java | 4 +- .../resources/mapper/AnnouncementMapper.xml | 2 +- .../src/api/{ => common}/dashboard.ts | 15 +++- .../src/assets/icons/svg/data.svg | 1 + .../src/assets/icons/svg/hot.svg | 1 + .../src/assets/icons/svg/popularity.svg | 1 + .../src/assets/icons/svg/same-city.svg | 1 + .../workplace/components/announcement.vue | 6 +- .../workplace/components/carousel.vue | 12 +-- .../workplace/components/content-chart.vue | 2 +- .../workplace/components/data-panel.vue | 83 ++++++++++++------- .../workplace/components/popular-content.vue | 2 +- .../views/dashboard/workplace/locale/en-US.ts | 11 +-- .../views/dashboard/workplace/locale/zh-CN.ts | 11 +-- .../real-time-monitor/locale/en-US.ts | 3 +- .../common/DashboardController.java | 17 ++-- 26 files changed, 320 insertions(+), 75 deletions(-) create mode 100644 continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardTotalVO.java create mode 100644 continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/DashboardService.java create mode 100644 continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/DashboardServiceImpl.java rename continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/{AnnouncementDashboardVO.java => DashboardAnnouncementVO.java} (95%) rename continew-admin-ui/src/api/{ => common}/dashboard.ts (65%) create mode 100644 continew-admin-ui/src/assets/icons/svg/data.svg create mode 100644 continew-admin-ui/src/assets/icons/svg/hot.svg create mode 100644 continew-admin-ui/src/assets/icons/svg/popularity.svg create mode 100644 continew-admin-ui/src/assets/icons/svg/same-city.svg 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 da50fec2..df13b8e2 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 @@ -18,6 +18,7 @@ package top.charles7c.cnadmin.monitor.mapper; import top.charles7c.cnadmin.common.base.BaseMapper; import top.charles7c.cnadmin.monitor.model.entity.LogDO; +import top.charles7c.cnadmin.monitor.model.vo.DashboardTotalVO; /** * 系统日志 Mapper @@ -25,4 +26,12 @@ import top.charles7c.cnadmin.monitor.model.entity.LogDO; * @author Charles7c * @since 2022/12/22 21:47 */ -public interface LogMapper extends BaseMapper {} +public interface LogMapper extends BaseMapper { + + /** + * 查询仪表盘总计信息 + * + * @return 总计信息 + */ + DashboardTotalVO selectDashboardTotal(); +} 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 new file mode 100644 index 00000000..5e0871e2 --- /dev/null +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/DashboardTotalVO.java @@ -0,0 +1,68 @@ +/* + * 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.math.BigDecimal; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * 仪表盘总计信息 + * + * @author Charles7c + * @since 2023/9/8 21:32 + */ +@Data +public class DashboardTotalVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 浏览量(PV) + */ + @Schema(description = "浏览量(PV)", example = "88888") + private Long pvCount; + + /** + * IP 数 + */ + @Schema(description = "IP 数", example = "66666") + private Long ipCount; + + /** + * 今日浏览量(PV) + */ + @Schema(description = "今日浏览量", example = "1234") + private Long todayPvCount; + + /** + * 较昨日新增 PV(百分比) + */ + @Schema(description = "较昨日新增(百分比)", example = "23.4") + private BigDecimal newPvFromYesterday; + + /** + * 昨日浏览量(PV) + */ + @JsonIgnore + private Long yesterdayPvCount; +} 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 new file mode 100644 index 00000000..96eef1f9 --- /dev/null +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/DashboardService.java @@ -0,0 +1,45 @@ +/* + * 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.service; + +import java.util.List; + +import top.charles7c.cnadmin.monitor.model.vo.DashboardTotalVO; +import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO; + +/** + * 仪表盘业务接口 + * + * @author Charles7c + * @since 2023/9/8 21:32 + */ +public interface DashboardService { + + /** + * 查询总计信息 + * + * @return 总计信息 + */ + DashboardTotalVO getTotal(); + + /** + * 查询公告列表 + * + * @return 公告列表 + */ + List listAnnouncement(); +} 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 4b72467c..f6bdf3aa 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 @@ -21,10 +21,7 @@ import top.charles7c.cnadmin.common.model.vo.PageDataVO; import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery; import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery; import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery; -import top.charles7c.cnadmin.monitor.model.vo.LoginLogVO; -import top.charles7c.cnadmin.monitor.model.vo.OperationLogVO; -import top.charles7c.cnadmin.monitor.model.vo.SystemLogDetailVO; -import top.charles7c.cnadmin.monitor.model.vo.SystemLogVO; +import top.charles7c.cnadmin.monitor.model.vo.*; /** * 系统日志业务接口 @@ -75,4 +72,11 @@ public interface LogService { * @return 系统日志详情 */ SystemLogDetailVO get(Long logId); + + /** + * 查询仪表盘总计信息 + * + * @return 仪表盘总计信息 + */ + DashboardTotalVO getDashboardTotal(); } 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 new file mode 100644 index 00000000..89737415 --- /dev/null +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/DashboardServiceImpl.java @@ -0,0 +1,65 @@ +/* + * 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.service.impl; + +import java.math.BigDecimal; +import java.util.List; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.stereotype.Service; + +import cn.hutool.core.util.NumberUtil; + +import top.charles7c.cnadmin.monitor.model.vo.DashboardTotalVO; +import top.charles7c.cnadmin.monitor.service.DashboardService; +import top.charles7c.cnadmin.monitor.service.LogService; +import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO; +import top.charles7c.cnadmin.system.service.AnnouncementService; + +/** + * 仪表盘业务实现 + * + * @author Charles7c + * @since 2023/9/8 21:32 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DashboardServiceImpl implements DashboardService { + + private final LogService logService; + private final AnnouncementService announcementService; + + @Override + public DashboardTotalVO getTotal() { + DashboardTotalVO totalVO = logService.getDashboardTotal(); + Long todayPvCount = totalVO.getTodayPvCount(); + Long yesterdayPvCount = totalVO.getYesterdayPvCount(); + BigDecimal newPvCountFromYesterday = NumberUtil.sub(todayPvCount, yesterdayPvCount); + BigDecimal newPvFromYesterday = (0 == yesterdayPvCount) ? BigDecimal.valueOf(100) + : NumberUtil.round(NumberUtil.mul(NumberUtil.div(newPvCountFromYesterday, yesterdayPvCount), 100), 1); + totalVO.setNewPvFromYesterday(newPvFromYesterday); + return totalVO; + } + + @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 4e084f0d..16727f2a 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 @@ -145,6 +145,11 @@ public class LogServiceImpl implements LogService { return detailVO; } + @Override + public DashboardTotalVO getDashboardTotal() { + return logMapper.selectDashboardTotal(); + } + /** * 填充数据 * diff --git a/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml b/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml index 2c4a88b9..d2ae4931 100644 --- a/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml +++ b/continew-admin-monitor/src/main/resources/mapper/LogMapper.xml @@ -1,4 +1,11 @@ + \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/AnnouncementMapper.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/AnnouncementMapper.java index b665e12e..9133ee38 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/AnnouncementMapper.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/AnnouncementMapper.java @@ -20,7 +20,7 @@ import java.util.List; import top.charles7c.cnadmin.common.base.BaseMapper; import top.charles7c.cnadmin.system.model.entity.AnnouncementDO; -import top.charles7c.cnadmin.system.model.vo.AnnouncementDashboardVO; +import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO; /** * 公告 Mapper @@ -35,5 +35,5 @@ public interface AnnouncementMapper extends BaseMapper { * * @return 公告列表 */ - List selectDashboardList(); + List selectDashboardList(); } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDashboardVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java similarity index 95% rename from continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDashboardVO.java rename to continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java index c0883da8..23035d32 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/AnnouncementDashboardVO.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DashboardAnnouncementVO.java @@ -32,7 +32,7 @@ import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum; */ @Data @Schema(description = "仪表盘公告信息") -public class AnnouncementDashboardVO implements Serializable { +public class DashboardAnnouncementVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/AnnouncementService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/AnnouncementService.java index 9ba168b6..8ae5ee18 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/AnnouncementService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/AnnouncementService.java @@ -21,9 +21,9 @@ import java.util.List; import top.charles7c.cnadmin.common.base.BaseService; import top.charles7c.cnadmin.system.model.query.AnnouncementQuery; import top.charles7c.cnadmin.system.model.request.AnnouncementRequest; -import top.charles7c.cnadmin.system.model.vo.AnnouncementDashboardVO; import top.charles7c.cnadmin.system.model.vo.AnnouncementDetailVO; import top.charles7c.cnadmin.system.model.vo.AnnouncementVO; +import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO; /** * 公告业务接口 @@ -39,5 +39,5 @@ public interface AnnouncementService * * @return 公告列表 */ - List listDashboard(); + List listDashboard(); } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/AnnouncementServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/AnnouncementServiceImpl.java index 838a17f7..fb99accf 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/AnnouncementServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/AnnouncementServiceImpl.java @@ -27,9 +27,9 @@ import top.charles7c.cnadmin.system.mapper.AnnouncementMapper; import top.charles7c.cnadmin.system.model.entity.AnnouncementDO; import top.charles7c.cnadmin.system.model.query.AnnouncementQuery; import top.charles7c.cnadmin.system.model.request.AnnouncementRequest; -import top.charles7c.cnadmin.system.model.vo.AnnouncementDashboardVO; import top.charles7c.cnadmin.system.model.vo.AnnouncementDetailVO; import top.charles7c.cnadmin.system.model.vo.AnnouncementVO; +import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO; import top.charles7c.cnadmin.system.service.AnnouncementService; /** @@ -44,7 +44,7 @@ public class AnnouncementServiceImpl extends BaseServiceImpl implements AnnouncementService { @Override - public List listDashboard() { + public List listDashboard() { return baseMapper.selectDashboardList(); } } \ No newline at end of file diff --git a/continew-admin-system/src/main/resources/mapper/AnnouncementMapper.xml b/continew-admin-system/src/main/resources/mapper/AnnouncementMapper.xml index 3bad9748..f33e41ee 100644 --- a/continew-admin-system/src/main/resources/mapper/AnnouncementMapper.xml +++ b/continew-admin-system/src/main/resources/mapper/AnnouncementMapper.xml @@ -3,7 +3,7 @@