From 9b73dcf9d9b5a9b050463fed0101cec9717458ad Mon Sep 17 00:00:00 2001 From: haotianmingyue <2421912570@qq.com> Date: Mon, 9 Dec 2024 14:42:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E5=B7=AEMR?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=97=B6=E9=95=BF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backstage/BackstageController.java | 4 +- .../backstage/SysBackRoleController.java | 17 ++++++ .../backstage/daily/dailySysServer.java | 57 +++++++++++++++++-- .../web/service/SysLoginService.java | 4 +- .../system/domain/dto/SeOnlineTimeDto.java | 25 ++++++++ .../ruoyi/system/mapper/DailySysMapper.java | 5 ++ .../ruoyi/system/mapper/DailyUserMapper.java | 4 ++ .../system/service/IDailySysService.java | 9 ++- .../system/service/IDailyUserService.java | 10 ++++ .../system/service/ISysUserCountService.java | 12 ---- .../system/service/ISysUserStService.java | 22 +++++++ .../service/impl/DailySysServiceImpl.java | 5 ++ .../service/impl/DailyUserServiceImpl.java | 10 ++++ .../mapper/system/DailySysMapper.xml | 13 ++++- .../mapper/system/DailyUserMapper.xml | 8 ++- 15 files changed, 180 insertions(+), 25 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/SysBackRoleController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SeOnlineTimeDto.java delete mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserCountService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserStService.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/BackstageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/BackstageController.java index 898551d2..ba1916f6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/BackstageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/BackstageController.java @@ -8,7 +8,6 @@ import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.AppLoginBody; -import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; @@ -18,7 +17,6 @@ import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.service.*; import com.ruoyi.web.controller.app.baidu.GsonUtils; -import com.ruoyi.web.controller.backstage.daily.dailySysServer; //import org.apache.commons.collections.map.HashedMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,7 +50,7 @@ public class BackstageController { private ISysUserService sysUserService; @Autowired - private ISysUserCountService sysUserCountService; + private ISysUserStService sysUserCountService; @Autowired private IDailyUserService dailyUserService; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/SysBackRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/SysBackRoleController.java new file mode 100644 index 00000000..08ab9f71 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/SysBackRoleController.java @@ -0,0 +1,17 @@ +package com.ruoyi.web.controller.backstage; + + + + +/** + * 角色信息 + * + * @author 详见 system/SysRoleController.java + */ +//@RestController +//@RequestMapping("/system/role") +public class SysBackRoleController { + + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/daily/dailySysServer.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/daily/dailySysServer.java index e241b106..9fc10679 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/daily/dailySysServer.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/backstage/daily/dailySysServer.java @@ -1,15 +1,14 @@ package com.ruoyi.web.controller.backstage.daily; -import com.ruoyi.framework.websocket.UserOnlineTimeWebSocketServer; import com.ruoyi.system.domain.DailySys; import com.ruoyi.system.service.IDailySysService; -import com.ruoyi.system.service.ISysUserCountService; +import com.ruoyi.system.service.IDailyUserService; +import com.ruoyi.system.service.ISysUserStService; import com.ruoyi.system.service.ISysUserWorkCountService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -28,8 +27,13 @@ public class dailySysServer { @Autowired private IDailySysService dailySysService; + + // 用户每天统计表 @Autowired - private ISysUserCountService sysUserCountService; + private IDailyUserService dailyUserService; + + @Autowired + private ISysUserStService sysUserCountService; @Autowired private ISysUserWorkCountService sysUserWorkCountService; @@ -121,4 +125,49 @@ public class dailySysServer { } } } + + //测试统计每天用户在线时间总数,MR在线时间总数 + @GetMapping("/UserOnlineTime") + public void updateUserOnlineTime(){ + + LocalDate now = LocalDate.now(); + + LocalDate oneDayAgo = now.minusDays(1); + + + Long tOnlineTime = dailyUserService.getTotalOnlineTime(oneDayAgo); + Long tMRTime = dailyUserService.getTotalMRTime(oneDayAgo); + + System.out.println("昨天用户总在线时间为:"+tOnlineTime+" 昨天用户总的MR在线时间: "+tMRTime); + + //写入系统每天统计数据 + DailySys dailySys = dailySysService.selectDailySysByDate(oneDayAgo); + if (dailySys == null){ + LOGGER.info("计数昨天的用户作品总数, 并插入数据"); + + DailySys dailySys1 = new DailySys(); + dailySys1.settOnlineTime(tOnlineTime); + dailySys1.settMrTime(tMRTime); + dailySys1.setDate(oneDayAgo); + + int back = dailySysService.insertDailySys(dailySys1); + if(back == 0){ + LOGGER.info("插入昨天的统计用户在线/MR时长数据失败"); + } else{ + LOGGER.info("插入昨天的统计用户在线/MR时长总数数据成功"); + } + } + // 已有其他任务插入过数据, 后期直接写在一起, + else{ + dailySys.settOnlineTime(tOnlineTime); + dailySys.settMrTime(tMRTime); + int back = dailySysService.updateDailySys(dailySys); + if(back == 0){ + LOGGER.info("更新昨天的统计用户在线/MR时长数据失败"); + } else{ + LOGGER.info("更新昨天的统计用户在线/MR时长数据成功"); + } + } + + } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 54139342..9dd7242b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -231,12 +231,12 @@ public class SysLoginService if (userType.equals(Constants.COMMON_USER)){ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, "user.login.not.authority")); throw new ServiceException("无后台访问权限"); -// return ; + } if (userStatus.equals("1")){ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, "user.login.not.authority")); throw new ServiceException("账号已停用"); -// return ; + } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SeOnlineTimeDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SeOnlineTimeDto.java new file mode 100644 index 00000000..ed626d3a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SeOnlineTimeDto.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.domain.dto; + +import java.time.LocalDate; + +public class SeOnlineTimeDto { + + private Long tOnlineTime; + private LocalDate date; + + public Long gettOnlineTime() { + return tOnlineTime; + } + + public void settOnlineTime(Long tOnlineTime) { + this.tOnlineTime = tOnlineTime; + } + + public LocalDate getDate() { + return date; + } + + public void setDate(LocalDate date) { + this.date = date; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailySysMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailySysMapper.java index 0ef8783a..70d46133 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailySysMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailySysMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.system.mapper; import java.time.LocalDate; import java.util.List; import com.ruoyi.system.domain.DailySys; +import com.ruoyi.system.domain.dto.SeOnlineTimeDto; import com.ruoyi.system.domain.dto.SeUserCountDto; import com.ruoyi.system.domain.dto.SeUserWorkCountDto; import org.apache.ibatis.annotations.Param; @@ -37,6 +38,8 @@ public interface DailySysMapper public List selectDailySysWorkListBetweenDate(@Param("startDate")LocalDate startDate, @Param("endDate") LocalDate endDate); + public List gettOnlineTime(@Param("startDate")LocalDate startDate, @Param("endDate") LocalDate endDate); + /** * 新增记录系统每天需要统计的任务 * @@ -69,6 +72,8 @@ public interface DailySysMapper */ public int deleteDailySysByDailySysIds(Long[] dailySysIds); + + /* * 计数系统中用户的总数 * */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailyUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailyUserMapper.java index 2651025e..f5d2b0c8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailyUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DailyUserMapper.java @@ -67,4 +67,8 @@ public interface DailyUserMapper public int deleteDailyUserByDailyUserIds(Long[] dailyUserIds); public DailyUser selectByUserIdAndDate(@Param("userId") Long userId, @Param("date") LocalDate date); + + public Long getTotalOnlineTime(@Param("date") LocalDate date); + + public Long getTotalMRTime(@Param("date") LocalDate date); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailySysService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailySysService.java index 6f46e01d..7889e8fd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailySysService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailySysService.java @@ -3,6 +3,7 @@ package com.ruoyi.system.service; import java.time.LocalDate; import java.util.List; import com.ruoyi.system.domain.DailySys; +import com.ruoyi.system.domain.dto.SeOnlineTimeDto; import com.ruoyi.system.domain.dto.SeUserCountDto; import com.ruoyi.system.domain.dto.SeUserWorkCountDto; @@ -37,12 +38,14 @@ public interface IDailySysService */ public List selectDailySysList(DailySys dailySys); - // 获取近7天的每天用户总数 + // 获取指定时间内的每天用户总数 public List getSeUserCount(LocalDate startDate, LocalDate endDate); - //获取近7天的每天作品总数 + //获取指定起止时间内的每天作品总数 public List getSeUserWorkCount(LocalDate startDate, LocalDate endDate); + public List gettOnlineTime(LocalDate startDate, LocalDate endDate); + /** @@ -77,6 +80,8 @@ public interface IDailySysService */ public int deleteDailySysByDailySysId(Long dailySysId); + + /* * 返回系统中的用户总数 * */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailyUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailyUserService.java index 4244e893..53428d8c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailyUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDailyUserService.java @@ -61,4 +61,14 @@ public interface IDailyUserService * @return 结果 */ public int deleteDailyUserByDailyUserId(Long dailyUserId); + + /* + * 返回每天用户总的在线时间 + * */ + public Long getTotalOnlineTime(LocalDate date); + + /* + * 返回每天用户总的MR在线时间 + * */ + public Long getTotalMRTime(LocalDate date); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserCountService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserCountService.java deleted file mode 100644 index 7ddba971..00000000 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserCountService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.ruoyi.system.service; - -import com.ruoyi.system.domain.dto.SeUserCountDto; - -import java.util.List; - -// 计算每天用户数量的服务, 并更新数据库 -public interface ISysUserCountService { - public Long getUserCount(); - public List getSeUserCount(); - -} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserStService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserStService.java new file mode 100644 index 00000000..926973e9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserStService.java @@ -0,0 +1,22 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.dto.SeOnlineTimeDto; +import com.ruoyi.system.domain.dto.SeUserCountDto; + +import java.time.LocalDate; +import java.util.List; + +// 计算每天用户数量的服务, 并更新数据库 +public interface ISysUserStService { + public Long getUserCount(); + public List getSeUserCount(); + + // 计算时间范围内的用户总数 + public List getUserCountByTime(LocalDate startDate, LocalDate endDate); + + // 计算时间范围内用户在线时长 + public List gettOnlineTime(LocalDate startDate, LocalDate endDate); + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailySysServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailySysServiceImpl.java index e6c14434..9e40c03a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailySysServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailySysServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.system.service.impl; import java.time.LocalDate; import java.util.List; +import com.ruoyi.system.domain.dto.SeOnlineTimeDto; import com.ruoyi.system.domain.dto.SeUserCountDto; import com.ruoyi.system.domain.dto.SeUserWorkCountDto; import org.springframework.beans.factory.annotation.Autowired; @@ -67,6 +68,10 @@ public class DailySysServiceImpl implements IDailySysService return dailySysMapper.selectDailySysWorkListBetweenDate(startDate, endDate); } + public List gettOnlineTime(LocalDate startDate, LocalDate endDate){ + return dailySysMapper.gettOnlineTime(startDate, endDate); + } + /** * 新增记录系统每天需要统计的任务 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailyUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailyUserServiceImpl.java index 1de1be97..d181785c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailyUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DailyUserServiceImpl.java @@ -100,4 +100,14 @@ public class DailyUserServiceImpl implements IDailyUserService { return dailyUserMapper.deleteDailyUserByDailyUserId(dailyUserId); } + + @Override + public Long getTotalOnlineTime(LocalDate date){ + return dailyUserMapper.getTotalOnlineTime(date); + } + + @Override + public Long getTotalMRTime(LocalDate date){ + return dailyUserMapper.getTotalMRTime(date); + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/DailySysMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DailySysMapper.xml index f008be64..23b69dee 100644 --- a/ruoyi-system/src/main/resources/mapper/system/DailySysMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/DailySysMapper.xml @@ -30,6 +30,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + select daily_sys_id, t_user, t_online_time, t_mr_time, t_bought, t_interactions, t_shares, t_work, t_pass_work, t_back_work, t_income, t_refund, data from daily_sys @@ -70,8 +75,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select t_work, data from daily_sys where data between #{startDate} and #{endDate} + + + + - insert into daily_sys diff --git a/ruoyi-system/src/main/resources/mapper/system/DailyUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DailyUserMapper.xml index 43b164fb..79dbaca9 100644 --- a/ruoyi-system/src/main/resources/mapper/system/DailyUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/DailyUserMapper.xml @@ -41,7 +41,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + insert into daily_user