From b49986420e52cb0da66a830f4f5508f9aea81573 Mon Sep 17 00:00:00 2001 From: pepsi Date: Wed, 12 Oct 2022 18:28:03 +0800 Subject: [PATCH 1/2] add new api --- .../controller/api/OperateLogController.java | 27 ++++++++++++- .../dto/OperateLogQueryDetailRespDTO.java | 3 ++ .../server/service/OperateLogService.java | 11 +++--- .../service/impl/OperateLogServiceImpl.java | 38 +++++++++++++++---- .../server/service/OperateLogServiceTest.java | 4 +- 5 files changed, 67 insertions(+), 16 deletions(-) diff --git a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/controller/api/OperateLogController.java b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/controller/api/OperateLogController.java index 71bfbc8..c317bc7 100644 --- a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/controller/api/OperateLogController.java +++ b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/controller/api/OperateLogController.java @@ -65,7 +65,30 @@ public class OperateLogController { return CommonResponse.fail("the time span is greater than 7"); } try { - CommonPageResponse resp = operateLogService.queryForPage(req); + CommonPageResponse resp = operateLogService.queryBasicInfoForPage(req); + return CommonResponse.success(resp); + } catch (Exception e) { + logger.error("query operate logs failed,", e); + return CommonResponse.fail(e.getMessage()); + } + } + + + @RequestMapping(value = "/operateLog/queryDetailForPage", method = RequestMethod.POST) + @ApiOperation(value = "操作日志分页查询(详情列表)") + public CommonResponse> operateLogsQueryDetail(@RequestBody @Valid OperateLogQueryReqDTO req, + BindingResult bindingResult) { + //参数缺失等返回 + if (bindingResult.hasErrors()) { + return CommonResponse.fail(bindingResult.getAllErrors().get(0).getDefaultMessage()); + } + //时间跨度校验。 + if (DateUtil.betweenDay(req.getStartTime(), req.getEndTime(), true) > 7) { + logger.error("start and end date interval greater than 7."); + return CommonResponse.fail("the time span is greater than 7"); + } + try { + CommonPageResponse resp = operateLogService.queryForPage(req); return CommonResponse.success(resp); } catch (Exception e) { logger.error("query operate logs failed,", e); @@ -75,7 +98,7 @@ public class OperateLogController { @RequestMapping(value = "/operateLog/queryDetail", method = RequestMethod.POST) - @ApiOperation(value = "操作日志详情查询") + @ApiOperation(value = "单条操作日志详情查询") public CommonResponse operateLogDetail(@RequestBody OperateLogQueryDetailReqDTO reqDTO) { try { OperateLogQueryDetailRespDTO detail = operateLogService.queryOperateLogDetail(reqDTO); diff --git a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/dto/OperateLogQueryDetailRespDTO.java b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/dto/OperateLogQueryDetailRespDTO.java index bf16531..6e0a6f3 100644 --- a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/dto/OperateLogQueryDetailRespDTO.java +++ b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/dto/OperateLogQueryDetailRespDTO.java @@ -14,6 +14,9 @@ import java.util.Date; @Data public class OperateLogQueryDetailRespDTO { + @ApiModelProperty(value = "记录ID", position = 1) + private String id; + /** * 操作人 */ diff --git a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/OperateLogService.java b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/OperateLogService.java index e6626af..06c1930 100644 --- a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/OperateLogService.java +++ b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/OperateLogService.java @@ -17,21 +17,21 @@ public interface OperateLogService { boolean insertOperaLog(OperateLogReqDTO operateLogReq) throws Exception; /** - * 分页查询 + * 分页查询 返回基本字段 * * @param req * @return */ - CommonPageResponse queryForPage(OperateLogQueryReqDTO req) throws Exception; + CommonPageResponse queryBasicInfoForPage(OperateLogQueryReqDTO req) throws Exception; + /** - * query from es + * 返回详情信息 * * @param req * @return - * @throws Exception */ - CommonPageResponse queryForPageFromEs(OperateLogQueryReqDTO req) throws Exception; + CommonPageResponse queryForPage(OperateLogQueryReqDTO req) throws Exception; /** * 查询每个日志的详情 @@ -40,4 +40,5 @@ public interface OperateLogService { * @return */ OperateLogQueryDetailRespDTO queryOperateLogDetail(OperateLogQueryDetailReqDTO req) throws Exception; + } diff --git a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java index 0828587..a9d8ba2 100644 --- a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java +++ b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java @@ -39,6 +39,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.*; +import java.util.function.BiConsumer; /*** * @author: pepsi @@ -96,6 +97,16 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return insert(json, indexNamePrex + indexSuffixDate); } + @Override + public CommonPageResponse queryBasicInfoForPage(OperateLogQueryReqDTO req) throws Exception { + CommonPageResponse detailResp = queryForPage(req); + if (detailResp.getList() == null || detailResp.getList().isEmpty()) { + return CommonPageResponse.zero(detailResp.getPage(), detailResp.getPageSize()); + } + List respList = assembleOperateLogResp(detailResp.getList()); + return CommonPageResponse.list(detailResp.getPage(), detailResp.getPageSize(), detailResp.getTotalCount(), respList); + } + /*** * 根据数据中的日期信息找到所属的索引 * 目前是按7天的规则。 @@ -127,7 +138,7 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe } @Override - public CommonPageResponse queryForPage(OperateLogQueryReqDTO req) throws Exception { + public CommonPageResponse queryForPage(OperateLogQueryReqDTO req) throws Exception { //这里做个区分。时从ES查询获取还是从DB获取. if (esStorageFlag) { return queryForPageFromEs(req); @@ -138,7 +149,12 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe if (recordList == null || recordList.isEmpty()) { return CommonPageResponse.zero(req.getPage(), req.getPageSize()); } - List respList = assembleOperateLogResp(recordList); + List respList = new ArrayList<>(); + recordList.forEach(item -> { + OperateLogQueryDetailRespDTO detail = operateLogConverter.toDetailDto(item); + detail.setId(item.getId().toString()); + respList.add(detail); + }); return CommonPageResponse.list(req.getPage(), req.getPageSize(), page.getTotal(), respList); } @@ -148,7 +164,7 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe * @param req * @return */ - public CommonPageResponse queryForPageFromEs(OperateLogQueryReqDTO req) throws Exception { + public CommonPageResponse queryForPageFromEs(OperateLogQueryReqDTO req) throws Exception { //根据查询的时间段获取所属的索引集合 Set indices = betweenIndices(req.getStartTime(), req.getEndTime()); if (indices.isEmpty()) { @@ -171,8 +187,16 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe String oprLogStr = hit.getSourceAsString(); resMap.put(hit.getId(), JSONObject.parseObject(oprLogStr, OperateLogRecordEntity.class)); } - List respList = assembleOperateLogResp(resMap); - return CommonPageResponse.list(req.getPage(), req.getPageSize(), hits.getTotalHits().value, respList); + List detailLists = new ArrayList<>(); + resMap.forEach(new BiConsumer() { + @Override + public void accept(String id, OperateLogRecordEntity entity) { + OperateLogQueryDetailRespDTO detail = operateLogConverter.toDetailDto(entity); + detail.setId(id); + detailLists.add(detail); + } + }); + return CommonPageResponse.list(req.getPage(), req.getPageSize(), hits.getTotalHits().value, detailLists); } @Override @@ -306,7 +330,7 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return resList; } - private List assembleOperateLogResp(List recordList) { + private List assembleOperateLogResp(List recordList) { List resList = new ArrayList<>(); recordList.forEach((ele) -> { OperateLogQueryRespDTO response = new OperateLogQueryRespDTO(); @@ -317,7 +341,7 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe response.setOperateTime(ele.getOperateTime()); response.setOperateUserPhone(ele.getIdentityUserPhone()); response.setOuName(ele.getOuName()); - response.setId(ele.getId().toString()); + response.setId(ele.getId()); resList.add(response); }); return resList; diff --git a/axzo-log-server/src/test/java/cn/axzo/log/platform/server/service/OperateLogServiceTest.java b/axzo-log-server/src/test/java/cn/axzo/log/platform/server/service/OperateLogServiceTest.java index cf369ff..13ea206 100644 --- a/axzo-log-server/src/test/java/cn/axzo/log/platform/server/service/OperateLogServiceTest.java +++ b/axzo-log-server/src/test/java/cn/axzo/log/platform/server/service/OperateLogServiceTest.java @@ -77,7 +77,7 @@ public class OperateLogServiceTest extends LogPlatApplicationTestBase { OperateLogQueryReqDTO req = new OperateLogQueryReqDTO(); req.setPage(1L); req.setPageSize(3L); - CommonPageResponse response = operateLogService.queryForPage(req); + CommonPageResponse response = operateLogService.queryBasicInfoForPage(req); long totalCount = response.getTotalCount(); Assert.assertEquals(3L, totalCount); List respList = response.getList(); @@ -91,7 +91,7 @@ public class OperateLogServiceTest extends LogPlatApplicationTestBase { req.setPageSize(20L); req.setStartTime(DateUtil.parse("2022-09-01 00:00:00", "yyyy-MM-dd HH:mm:ss").toJdkDate()); req.setEndTime(DateUtil.parse("2023-09-01 00:00:00", "yyyy-MM-dd HH:mm:ss").toJdkDate()); - CommonPageResponse response = operateLogService.queryForPageFromEs(req); + CommonPageResponse response = operateLogService.queryBasicInfoForPage(req); long totalCount = response.getTotalCount(); Assert.assertEquals(103L, totalCount); List respList = response.getList(); From 73436bf5336eb1c9c785fd2881889109b323d2fd Mon Sep 17 00:00:00 2001 From: pepsi Date: Wed, 12 Oct 2022 18:30:39 +0800 Subject: [PATCH 2/2] add new api --- .../service/impl/OperateLogServiceImpl.java | 123 ++++++++---------- 1 file changed, 52 insertions(+), 71 deletions(-) diff --git a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java index a9d8ba2..bde7d82 100644 --- a/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java +++ b/axzo-log-server/src/main/java/cn/axzo/log/platform/server/service/impl/OperateLogServiceImpl.java @@ -97,46 +97,6 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return insert(json, indexNamePrex + indexSuffixDate); } - @Override - public CommonPageResponse queryBasicInfoForPage(OperateLogQueryReqDTO req) throws Exception { - CommonPageResponse detailResp = queryForPage(req); - if (detailResp.getList() == null || detailResp.getList().isEmpty()) { - return CommonPageResponse.zero(detailResp.getPage(), detailResp.getPageSize()); - } - List respList = assembleOperateLogResp(detailResp.getList()); - return CommonPageResponse.list(detailResp.getPage(), detailResp.getPageSize(), detailResp.getTotalCount(), respList); - } - - /*** - * 根据数据中的日期信息找到所属的索引 - * 目前是按7天的规则。 - * @param date - * @return - */ - private String findIndexSuffixDate(Date date) { - long mills = date.getTime(); - long weekMills = mills % intervalMills; - Date currDate = new Date(mills - weekMills); - return DateUtil.format(currDate, DatePattern.PURE_DATE_PATTERN); - } - - private OperateLogRecordEntity fieldFill(OperateLogReqDTO req) { - //补充 termimnal identityType featureName. - OperateLogRecordEntity unifiedLogRecord = operateLogConverter.toEntity(req); - // 通过接口调用,获取用户手机姓名 - IdentityProfileDto identityProfile = qryIdentityProfile(req.getIdentityId(), req.getIdentityType()); - if (identityProfile != null && identityProfile.getPersonProfile() != null) { - unifiedLogRecord.setIdentityUserName(identityProfile.getPersonProfile().getRealName()); - unifiedLogRecord.setIdentityUserPhone(identityProfile.getPersonProfile().getPhone()); - } - // 通过接口方式调用 workspaceApi单位等信息, - GetDetailRes workspaceInf = qryWorkspaceInfo(req.getWorkspaceId()); - unifiedLogRecord.setWorkspaceName(null != workspaceInf ? workspaceInf.getName() : null); - OrganizationalUnitVO ouInf = qryOrgUnitInf(req.getOuId()); - unifiedLogRecord.setOuName(ouInf != null ? ouInf.getName() : null); - return unifiedLogRecord; - } - @Override public CommonPageResponse queryForPage(OperateLogQueryReqDTO req) throws Exception { //这里做个区分。时从ES查询获取还是从DB获取. @@ -158,6 +118,28 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return CommonPageResponse.list(req.getPage(), req.getPageSize(), page.getTotal(), respList); } + @Override + public CommonPageResponse queryBasicInfoForPage(OperateLogQueryReqDTO req) throws Exception { + CommonPageResponse detailResp = queryForPage(req); + if (detailResp.getList() == null || detailResp.getList().isEmpty()) { + return CommonPageResponse.zero(detailResp.getPage(), detailResp.getPageSize()); + } + List respList = assembleOperateLogResp(detailResp.getList()); + return CommonPageResponse.list(detailResp.getPage(), detailResp.getPageSize(), detailResp.getTotalCount(), respList); + } + + @Override + public OperateLogQueryDetailRespDTO queryOperateLogDetail(OperateLogQueryDetailReqDTO req) throws Exception { + if (esStorageFlag) { + return queryOperateLogDetailFromEs(req.getOperateTime(), req.getId()); + } + //从DB查询 + OperateLogRecordEntity entity = operateLogRepository.queryById(Long.valueOf(req.getId())); + if (entity == null) { + return null; + } + return operateLogConverter.toDetailDto(entity); + } /*** * 从ES获取查询结果 @@ -199,19 +181,6 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return CommonPageResponse.list(req.getPage(), req.getPageSize(), hits.getTotalHits().value, detailLists); } - @Override - public OperateLogQueryDetailRespDTO queryOperateLogDetail(OperateLogQueryDetailReqDTO req) throws Exception { - if (esStorageFlag) { - return queryOperateLogDetailFromEs(req.getOperateTime(), req.getId()); - } - //从DB查询 - OperateLogRecordEntity entity = operateLogRepository.queryById(Long.valueOf(req.getId())); - if (entity == null) { - return null; - } - return operateLogConverter.toDetailDto(entity); - } - /** * 对于 es 而言,需要索引信息. * @@ -234,6 +203,36 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return operateLogConverter.toDetailDto(entity); } + /*** + * 根据数据中的日期信息找到所属的索引 + * 目前是按7天的规则。 + * @param date + * @return + */ + private String findIndexSuffixDate(Date date) { + long mills = date.getTime(); + long weekMills = mills % intervalMills; + Date currDate = new Date(mills - weekMills); + return DateUtil.format(currDate, DatePattern.PURE_DATE_PATTERN); + } + + private OperateLogRecordEntity fieldFill(OperateLogReqDTO req) { + //补充 termimnal identityType featureName. + OperateLogRecordEntity unifiedLogRecord = operateLogConverter.toEntity(req); + // 通过接口调用,获取用户手机姓名 + IdentityProfileDto identityProfile = qryIdentityProfile(req.getIdentityId(), req.getIdentityType()); + if (identityProfile != null && identityProfile.getPersonProfile() != null) { + unifiedLogRecord.setIdentityUserName(identityProfile.getPersonProfile().getRealName()); + unifiedLogRecord.setIdentityUserPhone(identityProfile.getPersonProfile().getPhone()); + } + // 通过接口方式调用 workspaceApi单位等信息, + GetDetailRes workspaceInf = qryWorkspaceInfo(req.getWorkspaceId()); + unifiedLogRecord.setWorkspaceName(null != workspaceInf ? workspaceInf.getName() : null); + OrganizationalUnitVO ouInf = qryOrgUnitInf(req.getOuId()); + unifiedLogRecord.setOuName(ouInf != null ? ouInf.getName() : null); + return unifiedLogRecord; + } + /*** * 获取2个时间段之间的索引。startTime + 7 < endTime 即可。 * @param startDate @@ -312,24 +311,6 @@ public class OperateLogServiceImpl extends BaseEsService implements OperateLogSe return searchSourceBuilder; } - - private List assembleOperateLogResp(Map recordMap) { - List resList = new ArrayList<>(); - recordMap.forEach((id, item) -> { - OperateLogQueryRespDTO resp = new OperateLogQueryRespDTO(); - resp.setOperateUserName(item.getIdentityUserName()); - resp.setFeatureCode(item.getFeatureCode()); - resp.setFeatureName(item.getFeatureName()); - resp.setContentSummary(item.getContentSummary()); - resp.setOperateTime(item.getOperateTime()); - resp.setOperateUserPhone(item.getIdentityUserPhone()); - resp.setOuName(item.getOuName()); - resp.setId(id); - resList.add(resp); - }); - return resList; - } - private List assembleOperateLogResp(List recordList) { List resList = new ArrayList<>(); recordList.forEach((ele) -> {