diff --git a/src/main/java/org/springblade/modules/system/controller/LogApiController.java b/src/main/java/org/springblade/modules/system/controller/LogApiController.java index 4cba24f..e3bcebd 100644 --- a/src/main/java/org/springblade/modules/system/controller/LogApiController.java +++ b/src/main/java/org/springblade/modules/system/controller/LogApiController.java @@ -59,14 +59,14 @@ public class LogApiController { } /** + * 日志列表(登录,修改操作) * 查询多条(分页) */ @GetMapping("/logOnList") public R> logOnList(@ApiIgnore LogDTO log, Query query) { // HttpServletRequest request = WebUtil.getRequest(); - User user = UserCache.getUser("", ""); - Map> logList = logService.logOnList(log); - return R.data(null); - } + List logList = logService.logOnList(log); + return R.data(logList); + } } diff --git a/src/main/java/org/springblade/modules/system/dto/LogDTO.java b/src/main/java/org/springblade/modules/system/dto/LogDTO.java index 3ea852f..eae54f8 100644 --- a/src/main/java/org/springblade/modules/system/dto/LogDTO.java +++ b/src/main/java/org/springblade/modules/system/dto/LogDTO.java @@ -14,4 +14,9 @@ public class LogDTO { private String startTime; private String endTime; + + // 日志类型:1登录日志 2修改日志 + private String logType; + + private String userId; } diff --git a/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml b/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml index 8031518..b05b518 100644 --- a/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml +++ b/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml @@ -27,14 +27,25 @@ tenant_id AS tenantId, create_by AS createBy, create_time AS createTime, - title AS title + title AS title, + method_name as methodName FROM `blade_log_api` WHERE create_by != '' + + and method_name = 'token' + + + and method_name != 'token' + + AND create_time BETWEEN #{startTime} AND #{endTime} + + + and create_by = #{userId} + ORDER BY create_time DESC - diff --git a/src/main/java/org/springblade/modules/system/service/ILogApiService.java b/src/main/java/org/springblade/modules/system/service/ILogApiService.java index dd141dd..8960d6b 100644 --- a/src/main/java/org/springblade/modules/system/service/ILogApiService.java +++ b/src/main/java/org/springblade/modules/system/service/ILogApiService.java @@ -4,6 +4,7 @@ package org.springblade.modules.system.service; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.core.log.model.LogApi; import org.springblade.modules.system.dto.LogDTO; +import org.springblade.modules.system.vo.LogRecord; import org.springblade.modules.system.vo.LogVO; import java.util.List; @@ -16,5 +17,5 @@ import java.util.Map; */ public interface ILogApiService extends IService { - Map> logOnList(LogDTO log); + List logOnList(LogDTO log); } diff --git a/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java index d824e3b..b38acc9 100644 --- a/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java +++ b/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java @@ -2,19 +2,22 @@ package org.springblade.modules.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springblade.common.cache.UserCache; import org.springblade.core.log.model.LogApi; import org.springblade.modules.system.dto.LogDTO; +import org.springblade.modules.system.entity.User; import org.springblade.modules.system.mapper.LogApiMapper; import org.springblade.modules.system.service.ILogApiService; +import org.springblade.modules.system.vo.LogRecord; import org.springblade.modules.system.vo.LogVO; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -25,19 +28,112 @@ import java.util.stream.Collectors; @Service public class LogApiServiceImpl extends ServiceImpl implements ILogApiService { - @Override - public Map> logOnList(LogDTO log) { - SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public List logOnList(LogDTO log) { + + List logRecords = new LinkedList<>(); + LogRecord logRecord = new LogRecord(); + + SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // yyyy-MM年月日志标识 + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + + // 按照月份查询日志所有数据 List logs = baseMapper.logOnList(log); - logs.forEach(logVO -> { - logVO.setTime(formatter2.format(logVO.getCreateTime())); - logVO.setTitle(logVO.getCreateBy() + ":" + logVO.getTitle()); - }); + // 记录年月 + AtomicReference yearMonth = new AtomicReference<>(null); + // logs遍历计数器 + AtomicInteger count = new AtomicInteger(0); + // logs总长度 + int totalLogs = logs.size(); + + // 遍历日志数据 +// logs.forEach(logInfo -> { + for (LogVO logInfo:logs){ + + count.incrementAndGet(); + // 当前年月 + String currentYearMonth = formatter.format(logInfo.getCreateTime()); + + // 记录年月是否为空,空则插入 + if (yearMonth.get() == null) { + // 当前年月赋值给记录年月 + yearMonth.set(currentYearMonth); + + // logRecord的当前年月是否为空,空则插入当前年月 + if(logRecord.getTime() == null){ + logRecord.setTime(currentYearMonth); + } + // 将该条数据插入logs + if(logRecord.getLogs() == null){ + logRecord.setLogs(new ArrayList<>()); + } + logRecord.getLogs().add(logInfo); + } else { + // 当前年月等于记录年月 + if (yearMonth.get().equals(currentYearMonth)) { + // 将该条数据插入logs + logRecord.getLogs().add(logInfo); + + }else{ // 当前年月不等于记录年月 + // 将当前年月赋值给记录年月 + yearMonth.set(currentYearMonth); + // 将上一组数据存入 + for (LogVO logVO : logRecord.getLogs()){ + User user = UserCache.getUser(logVO.getTenantId(), logVO.getCreateBy()); + if(user != null){ + logVO.setRealName(user.getRealName()); + logVO.setTitle(user.getRealName() + logVO.getTitle()); + } + +// formatter1.format(logVO.getCreateTime()).substring(8); + String substring = formatter1.format(logVO.getCreateTime()).substring(8); + logVO.setTime(substring.substring(0,2) + "日" + substring.substring(2)); + + + } + logRecords.add(logRecord); + + // 一组年月的日志已插入,logRecord对象创建一个新的 + logRecord = new LogRecord(); + // logRecord的当前年月是否为空,空则插入当前年月 + logRecord.setTime(currentYearMonth); + + // 将该条数据插入logs + logRecord.setLogs(new LinkedList<>(Collections.singletonList(logInfo))); + +// // 将logs内容创建新对象 +// logRecord.setLogs(new LinkedList<>()); +// // 将该条数据插入logs +// logRecord.getLogs().add(logInfo); + + } + } + if (count.get() == totalLogs) { + for (LogVO logVO : logRecord.getLogs()){ + User user = UserCache.getUser(logVO.getTenantId(), logVO.getCreateBy()); + if(user != null){ + logVO.setRealName(user.getRealName()); + logVO.setTitle(user.getRealName() + logVO.getTitle()); + } + + String substring = formatter1.format(logVO.getCreateTime()).substring(8); + logVO.setTime(substring.substring(0,2) + "日" + substring.substring(2)); + + } + // 最后一次执行的逻辑,将logRecord保存 + logRecords.add(logRecord); + } + }; + +// logs.forEach(logVO -> { +// logVO.setTime(formatter2.format(logVO.getCreateTime())); +// logVO.setTitle(logVO.getCreateBy() + ":" + logVO.getTitle()); +// }); - Map> groupedByMonth = logs.stream().collect(Collectors.groupingBy(date -> date.getTime().substring(0, 7))); +// Map> groupedByMonth = logs.stream().collect(Collectors.groupingBy(date -> date.getTime().substring(0, 7))); - return groupedByMonth; + return logRecords; } } diff --git a/src/main/java/org/springblade/modules/system/vo/LogRecord.java b/src/main/java/org/springblade/modules/system/vo/LogRecord.java index 4406378..7359bbf 100644 --- a/src/main/java/org/springblade/modules/system/vo/LogRecord.java +++ b/src/main/java/org/springblade/modules/system/vo/LogRecord.java @@ -14,8 +14,10 @@ import java.util.List; public class LogRecord { private static final long serialVersionUID = 1L; + // 时间 private String time; + // 日志实体 private List logs; } diff --git a/src/main/java/org/springblade/modules/system/vo/LogVO.java b/src/main/java/org/springblade/modules/system/vo/LogVO.java index c586d3a..5c797ae 100644 --- a/src/main/java/org/springblade/modules/system/vo/LogVO.java +++ b/src/main/java/org/springblade/modules/system/vo/LogVO.java @@ -1,6 +1,7 @@ package org.springblade.modules.system.vo; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.util.Date; @@ -18,9 +19,13 @@ public class LogVO { private String createBy; + @JsonIgnore private Date createTime; private String time; private String title; + + // 真实姓名 + private String realName; }