用户管理差MR在线时长。

This commit is contained in:
haotianmingyue 2024-12-09 14:42:05 +08:00
parent 40cf99a12b
commit 9b73dcf9d9
15 changed files with 180 additions and 25 deletions

View File

@ -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;

View File

@ -0,0 +1,17 @@
package com.ruoyi.web.controller.backstage;
/**
* 角色信息
*
* @author 详见 system/SysRoleController.java
*/
//@RestController
//@RequestMapping("/system/role")
public class SysBackRoleController {
}

View File

@ -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时长数据成功");
}
}
}
}

View File

@ -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")));

View File

@ -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;
}
}

View File

@ -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<SeUserWorkCountDto> selectDailySysWorkListBetweenDate(@Param("startDate")LocalDate startDate, @Param("endDate") LocalDate endDate);
public List<SeOnlineTimeDto> gettOnlineTime(@Param("startDate")LocalDate startDate, @Param("endDate") LocalDate endDate);
/**
* 新增记录系统每天需要统计的任务
*
@ -69,6 +72,8 @@ public interface DailySysMapper
*/
public int deleteDailySysByDailySysIds(Long[] dailySysIds);
/*
* 计数系统中用户的总数
* */

View File

@ -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);
}

View File

@ -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<DailySys> selectDailySysList(DailySys dailySys);
// 获取近7天的每天用户总数
// 获取指定时间内的每天用户总数
public List<SeUserCountDto> getSeUserCount(LocalDate startDate, LocalDate endDate);
//获取近7天的每天作品总数
//获取指定起止时间内的每天作品总数
public List<SeUserWorkCountDto> getSeUserWorkCount(LocalDate startDate, LocalDate endDate);
public List<SeOnlineTimeDto> gettOnlineTime(LocalDate startDate, LocalDate endDate);
/**
@ -77,6 +80,8 @@ public interface IDailySysService
*/
public int deleteDailySysByDailySysId(Long dailySysId);
/*
* 返回系统中的用户总数
* */

View File

@ -61,4 +61,14 @@ public interface IDailyUserService
* @return 结果
*/
public int deleteDailyUserByDailyUserId(Long dailyUserId);
/*
* 返回每天用户总的在线时间
* */
public Long getTotalOnlineTime(LocalDate date);
/*
* 返回每天用户总的MR在线时间
* */
public Long getTotalMRTime(LocalDate date);
}

View File

@ -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<SeUserCountDto> getSeUserCount();
}

View File

@ -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<SeUserCountDto> getSeUserCount();
// 计算时间范围内的用户总数
public List<SeUserCountDto> getUserCountByTime(LocalDate startDate, LocalDate endDate);
// 计算时间范围内用户在线时长
public List<SeOnlineTimeDto> gettOnlineTime(LocalDate startDate, LocalDate endDate);
}

View File

@ -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<SeOnlineTimeDto> gettOnlineTime(LocalDate startDate, LocalDate endDate){
return dailySysMapper.gettOnlineTime(startDate, endDate);
}
/**
* 新增记录系统每天需要统计的任务
*

View File

@ -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);
}
}

View File

@ -30,6 +30,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="tWork" column="t_work"/>
</resultMap>
<resultMap id="seOnlineTimeDtoResult" type="SeOnlineTimeDto">
<result property="date" column="data"/>
<result property="tOnlineTime" column="t_online_time"/>
</resultMap>
<sql id="selectDailySysVo">
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
</sql>
@ -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}
</select>
<!-- 这里还不能直接套用-->
<select id="gettOnlineTime" parameterType="java.time.LocalDate" resultMap="seOnlineTimeDtoResult">
select t_online_time, data from daily_sys where data between #{startDate} and #{endDate}
</select>
<insert id="insertDailySys" parameterType="DailySys" useGeneratedKeys="true" keyProperty="dailySysId">
insert into daily_sys
<trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -41,7 +41,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectByUserIdAndDate" resultMap="DailyUserResult">
select * from daily_user where user_id = #{userId} and date = #{date}
</select>
<select id="getTotalOnlineTime" resultType="java.lang.Long">
select sum(online_time) from daily_user where date = #{date}
</select>
<select id="getTotalMRTime" resultType="java.lang.Long">
select sum(mr_time) from daily_user where date = #{date}
</select>
<insert id="insertDailyUser" parameterType="DailyUser" useGeneratedKeys="true" keyProperty="dailyUserId">
insert into daily_user
<trim prefix="(" suffix=")" suffixOverrides=",">