From 127dde693d7f4b85a5e56c3a00363082cb12bffb Mon Sep 17 00:00:00 2001 From: weijing <> Date: Tue, 31 Jan 2023 10:47:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=AE=A1=E7=90=86=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AttrTransformServiceImpl.java | 8 +- .../dao/BusinessApiDao.java} | 10 +- .../entity/BusinessApi.java} | 22 +++-- .../service/BusinessApiService.java} | 19 ++-- .../service/impl/BusinessApiServiceImpl.java | 71 ++++++++++++++ .../com/skyeye/dsform/entity/DsFormPage.java | 5 + .../service/impl/DsFormPageServiceImpl.java | 8 ++ .../operate/controller/OperateController.java | 42 ++++++++ .../com/skyeye/operate/entity/Operate.java | 3 +- .../service/OperateOpenPageService.java | 7 ++ .../operate/service/OperateService.java | 4 + .../service/impl/OperateApiServiceImpl.java | 47 --------- .../impl/OperateOpenPageServiceImpl.java | 24 +++++ .../service/impl/OperateServiceImpl.java | 95 ++++++++++++++++++- 14 files changed, 291 insertions(+), 74 deletions(-) rename skyeye-promote/skyeye-common/src/main/java/com/skyeye/{operate/dao/OperateApiDao.java => business/dao/BusinessApiDao.java} (70%) rename skyeye-promote/skyeye-common/src/main/java/com/skyeye/{operate/entity/OperateApi.java => business/entity/BusinessApi.java} (77%) rename skyeye-promote/skyeye-common/src/main/java/com/skyeye/{operate/service/OperateApiService.java => business/service/BusinessApiService.java} (55%) create mode 100644 skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/impl/BusinessApiServiceImpl.java delete mode 100644 skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateApiServiceImpl.java diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/attr/service/impl/AttrTransformServiceImpl.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/attr/service/impl/AttrTransformServiceImpl.java index 15fd32c2..a68386e7 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/attr/service/impl/AttrTransformServiceImpl.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/attr/service/impl/AttrTransformServiceImpl.java @@ -108,9 +108,11 @@ public class AttrTransformServiceImpl extends SkyeyeBusinessServiceImpl { +public interface BusinessApiDao extends SkyeyeBaseMapper { } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/OperateApi.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/entity/BusinessApi.java similarity index 77% rename from skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/OperateApi.java rename to skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/entity/BusinessApi.java index da00bb9a..36be0091 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/OperateApi.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/entity/BusinessApi.java @@ -2,7 +2,7 @@ * Copyright 卫志强 QQ:598748873@qq.com Inc. All rights reserved. 开源地址:https://gitee.com/doc_wei01/skyeye ******************************************************************************/ -package com.skyeye.operate.entity; +package com.skyeye.business.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -17,25 +17,29 @@ import lombok.Data; import java.util.Map; /** - * @ClassName: OperateApi - * @Description: 操作信息对应的接口信息实体类 + * @ClassName: BusinessApi + * @Description: 业务对象对应的接口信息实体类 * @author: skyeye云系列--卫志强 * @date: 2023/1/29 18:07 * @Copyright: 2023 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. * 注意:本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的 */ @Data -@TableName(value = "skyeye_operate_api", autoResultMap = true) -@ApiModel("操作信息对应的接口信息实体类") -public class OperateApi extends OperatorUserInfo { +@TableName(value = "skyeye_business_api", autoResultMap = true) +@ApiModel("业务对象对应的接口信息实体类") +public class BusinessApi extends OperatorUserInfo { @TableId("id") @Property(value = "主键id") private String id; - @TableField("operate_id") - @Property(value = "操作信息的id") - private String operateId; + @TableField("object_id") + @Property(value = "业务对象的id") + private String objectId; + + @TableField("object_key") + @Property(value = "业务对象的key") + private String objectKey; @TableField("service_str") @ApiModelProperty(value = "接口对应的服务,由前端进行配置,方便前端解析", required = "required") diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateApiService.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/BusinessApiService.java similarity index 55% rename from skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateApiService.java rename to skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/BusinessApiService.java index f432db11..17abcb15 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateApiService.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/BusinessApiService.java @@ -2,21 +2,28 @@ * Copyright 卫志强 QQ:598748873@qq.com Inc. All rights reserved. 开源地址:https://gitee.com/doc_wei01/skyeye ******************************************************************************/ -package com.skyeye.operate.service; +package com.skyeye.business.service; import com.skyeye.base.business.service.SkyeyeBusinessService; -import com.skyeye.operate.entity.OperateApi; +import com.skyeye.business.entity.BusinessApi; + +import java.util.List; +import java.util.Map; /** - * @ClassName: OperateApiService - * @Description: 操作信息对应的接口信息服务接口层 + * @ClassName: BusinessApiService + * @Description: 业务对象对应的接口信息服务接口层 * @author: skyeye云系列--卫志强 * @date: 2023/1/29 18:07 * @Copyright: 2023 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. * 注意:本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的 */ -public interface OperateApiService extends SkyeyeBusinessService { +public interface BusinessApiService extends SkyeyeBusinessService { - void deleteByOperateId(String operateId); + void deleteByObjectId(String objectId); + + BusinessApi selectByObjectId(String objectId); + + Map selectByObjectIds(List objectIds); } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/impl/BusinessApiServiceImpl.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/impl/BusinessApiServiceImpl.java new file mode 100644 index 00000000..ac0fb6fc --- /dev/null +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/business/service/impl/BusinessApiServiceImpl.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright 卫志强 QQ:598748873@qq.com Inc. All rights reserved. 开源地址:https://gitee.com/doc_wei01/skyeye + ******************************************************************************/ + +package com.skyeye.business.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl; +import com.skyeye.business.dao.BusinessApiDao; +import com.skyeye.business.entity.BusinessApi; +import com.skyeye.business.service.BusinessApiService; +import com.skyeye.common.util.mybatisplus.MybatisPlusUtil; +import com.skyeye.exception.CustomException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @ClassName: BusinessApiServiceImpl + * @Description: 业务对象对应的接口信息服务层 + * @author: skyeye云系列--卫志强 + * @date: 2023/1/29 18:07 + * @Copyright: 2023 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注意:本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的 + */ +@Service +public class BusinessApiServiceImpl extends SkyeyeBusinessServiceImpl implements BusinessApiService { + + @Override + @Transactional(value = TRANSACTION_MANAGER_VALUE, rollbackFor = {Exception.class}) + public String createEntity(BusinessApi entity, String userId) { + if (StrUtil.isEmpty(entity.getObjectId())) { + throw new CustomException("关联信息id为空,请确认."); + } + deleteByObjectId(entity.getObjectId()); + return super.createEntity(entity, userId); + } + + @Override + @Transactional(value = TRANSACTION_MANAGER_VALUE, rollbackFor = {Exception.class}) + public void deleteByObjectId(String objectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(MybatisPlusUtil.toColumns(BusinessApi::getObjectId), objectId); + remove(queryWrapper); + } + + @Override + public BusinessApi selectByObjectId(String objectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(MybatisPlusUtil.toColumns(BusinessApi::getObjectId), objectId); + return getOne(queryWrapper); + } + + @Override + public Map selectByObjectIds(List objectIds) { + if (CollectionUtil.isEmpty(objectIds)) { + return new HashMap<>(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in(MybatisPlusUtil.toColumns(BusinessApi::getObjectId), objectIds); + List businessApiList = list(queryWrapper); + return businessApiList.stream().collect(Collectors.toMap(BusinessApi::getObjectId, bean -> bean)); + } + +} diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/entity/DsFormPage.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/entity/DsFormPage.java index a2e9ecaf..66662c55 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/entity/DsFormPage.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/entity/DsFormPage.java @@ -14,6 +14,7 @@ import com.skyeye.annotation.cache.RedisCacheField; import com.skyeye.annotation.unique.UniqueField; import com.skyeye.common.constans.RedisConstants; import com.skyeye.common.entity.features.OperatorUserInfo; +import com.skyeye.operate.entity.Operate; import lombok.Data; import java.util.List; @@ -65,4 +66,8 @@ public class DsFormPage extends OperatorUserInfo { @Property("表单布局关联的组件信息") private List dsFormPageContents; + @TableField(exist = false) + @Property("表单布局关联的操作按钮信息") + private List operateList; + } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/service/impl/DsFormPageServiceImpl.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/service/impl/DsFormPageServiceImpl.java index 15e4fedf..5d875e58 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/service/impl/DsFormPageServiceImpl.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/dsform/service/impl/DsFormPageServiceImpl.java @@ -22,6 +22,8 @@ import com.skyeye.dsform.entity.DsFormPageContent; import com.skyeye.dsform.entity.DsFormPageContentVo; import com.skyeye.dsform.service.DsFormPageContentService; import com.skyeye.dsform.service.DsFormPageService; +import com.skyeye.operate.entity.Operate; +import com.skyeye.operate.service.OperateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -48,6 +50,9 @@ public class DsFormPageServiceImpl extends SkyeyeBusinessServiceImpl params = inputObject.getParams(); @@ -93,6 +98,9 @@ public class DsFormPageServiceImpl extends SkyeyeBusinessServiceImpl operateList = operateService.getOperatesByClassName(dsFormPage.getClassName()); + dsFormPage.setOperateList(operateList); return dsFormPage; } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/controller/OperateController.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/controller/OperateController.java index 8d9c9240..c9890290 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/controller/OperateController.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/controller/OperateController.java @@ -10,6 +10,7 @@ import com.skyeye.annotation.api.ApiImplicitParams; import com.skyeye.annotation.api.ApiOperation; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; +import com.skyeye.operate.entity.Operate; import com.skyeye.operate.service.OperateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -44,4 +45,45 @@ public class OperateController { operateService.queryOperateList(inputObject, outputObject); } + /** + * 新增/编辑操作 + * + * @param inputObject 入参以及用户信息等获取对象 + * @param outputObject 出参以及提示信息的返回值对象 + */ + @ApiOperation(id = "writeOperate", value = "新增/编辑操作", method = "POST", allUse = "2") + @ApiImplicitParams(classBean = Operate.class) + @RequestMapping("/post/OperateController/writeOperate") + public void writeOperate(InputObject inputObject, OutputObject outputObject) { + operateService.saveOrUpdateEntity(inputObject, outputObject); + } + + /** + * 根据id查看操作信息 + * + * @param inputObject 入参以及用户信息等获取对象 + * @param outputObject 出参以及提示信息的返回值对象 + */ + @ApiOperation(id = "queryOperateById", value = "根据id查看操作信息", method = "GET", allUse = "2") + @ApiImplicitParams({ + @ApiImplicitParam(id = "id", name = "id", value = "操作信息的id", required = "required")}) + @RequestMapping("/post/OperateController/queryOperateById") + public void queryOperateById(InputObject inputObject, OutputObject outputObject) { + operateService.selectById(inputObject, outputObject); + } + + /** + * 根据id删除操作信息 + * + * @param inputObject 入参以及用户信息等获取对象 + * @param outputObject 出参以及提示信息的返回值对象 + */ + @ApiOperation(id = "deleteOperateById", value = "根据id删除操作信息", method = "DELETE", allUse = "2") + @ApiImplicitParams({ + @ApiImplicitParam(id = "id", name = "id", value = "操作信息的id", required = "required")}) + @RequestMapping("/post/OperateController/deleteOperateById") + public void deleteOperateById(InputObject inputObject, OutputObject outputObject) { + operateService.deleteById(inputObject, outputObject); + } + } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/Operate.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/Operate.java index 47e783b6..25eece1b 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/Operate.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/entity/Operate.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.skyeye.annotation.api.ApiModel; import com.skyeye.annotation.api.ApiModelProperty; import com.skyeye.annotation.cache.RedisCacheField; +import com.skyeye.business.entity.BusinessApi; import com.skyeye.common.entity.features.OperatorUserInfo; import lombok.Data; @@ -61,7 +62,7 @@ public class Operate extends OperatorUserInfo { @TableField(exist = false) @ApiModelProperty(value = "当事件类型为请求事件时,填写的接口信息", required = "json") - private OperateApi operateApi; + private BusinessApi businessApi; @TableField(exist = false) @ApiModelProperty(value = "当事件类型为新开页面时,填写的页面/布局信息", required = "json") diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateOpenPageService.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateOpenPageService.java index 70004f7c..da222b57 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateOpenPageService.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateOpenPageService.java @@ -7,6 +7,9 @@ package com.skyeye.operate.service; import com.skyeye.base.business.service.SkyeyeBusinessService; import com.skyeye.operate.entity.OperateOpenPage; +import java.util.List; +import java.util.Map; + /** * @ClassName: OperateOpenPageService * @Description: 操作信息对应的新开页面信息服务接口层 @@ -19,4 +22,8 @@ public interface OperateOpenPageService extends SkyeyeBusinessService selectByOperateIds(List operateIds); + } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateService.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateService.java index 7d8c523f..6673d3ea 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateService.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/OperateService.java @@ -9,6 +9,8 @@ import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; import com.skyeye.operate.entity.Operate; +import java.util.List; + /** * @ClassName: OperateService * @Description: 操作管理服务接口类 @@ -21,4 +23,6 @@ public interface OperateService extends SkyeyeBusinessService { void queryOperateList(InputObject inputObject, OutputObject outputObject); + List getOperatesByClassName(String className); + } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateApiServiceImpl.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateApiServiceImpl.java deleted file mode 100644 index 04361454..00000000 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateApiServiceImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright 卫志强 QQ:598748873@qq.com Inc. All rights reserved. 开源地址:https://gitee.com/doc_wei01/skyeye - ******************************************************************************/ - -package com.skyeye.operate.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl; -import com.skyeye.common.util.mybatisplus.MybatisPlusUtil; -import com.skyeye.exception.CustomException; -import com.skyeye.operate.dao.OperateApiDao; -import com.skyeye.operate.entity.OperateApi; -import com.skyeye.operate.service.OperateApiService; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * @ClassName: OperateApiServiceImpl - * @Description: 操作信息对应的接口信息服务层 - * @author: skyeye云系列--卫志强 - * @date: 2023/1/29 18:07 - * @Copyright: 2023 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. - * 注意:本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的 - */ -@Service -public class OperateApiServiceImpl extends SkyeyeBusinessServiceImpl implements OperateApiService { - - @Override - @Transactional(value = TRANSACTION_MANAGER_VALUE, rollbackFor = {Exception.class}) - public String createEntity(OperateApi entity, String userId) { - if (StrUtil.isEmpty(entity.getOperateId())) { - throw new CustomException("操作信息id为空,请确认."); - } - deleteByOperateId(entity.getOperateId()); - return super.createEntity(entity, userId); - } - - @Override - @Transactional(value = TRANSACTION_MANAGER_VALUE, rollbackFor = {Exception.class}) - public void deleteByOperateId(String operateId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(MybatisPlusUtil.toColumns(OperateApi::getOperateId), operateId); - remove(queryWrapper); - } - -} diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateOpenPageServiceImpl.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateOpenPageServiceImpl.java index 77867bf5..45dc51f8 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateOpenPageServiceImpl.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateOpenPageServiceImpl.java @@ -4,6 +4,7 @@ package com.skyeye.operate.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl; @@ -15,6 +16,11 @@ import com.skyeye.operate.service.OperateOpenPageService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * @ClassName: OperateOpenPageServiceImpl * @Description: 操作信息对应的新开页面信息服务层 @@ -43,4 +49,22 @@ public class OperateOpenPageServiceImpl extends SkyeyeBusinessServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(MybatisPlusUtil.toColumns(OperateOpenPage::getOperateId), operateId); + return getOne(queryWrapper); + } + + @Override + public Map selectByOperateIds(List operateIds) { + if (CollectionUtil.isEmpty(operateIds)) { + return new HashMap<>(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in(MybatisPlusUtil.toColumns(OperateOpenPage::getOperateId), operateIds); + List operateOpenPageList = list(queryWrapper); + return operateOpenPageList.stream().collect(Collectors.toMap(OperateOpenPage::getOperateId, bean -> bean)); + } } diff --git a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateServiceImpl.java b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateServiceImpl.java index c18caca2..cc63d20a 100644 --- a/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateServiceImpl.java +++ b/skyeye-promote/skyeye-common/src/main/java/com/skyeye/operate/service/impl/OperateServiceImpl.java @@ -4,18 +4,29 @@ package com.skyeye.operate.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl; +import com.skyeye.business.entity.BusinessApi; +import com.skyeye.business.service.BusinessApiService; +import com.skyeye.cache.redis.RedisCache; +import com.skyeye.common.constans.RedisConstants; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; import com.skyeye.common.util.mybatisplus.MybatisPlusUtil; +import com.skyeye.operate.classenum.EventType; import com.skyeye.operate.dao.OperateDao; import com.skyeye.operate.entity.Operate; +import com.skyeye.operate.entity.OperateOpenPage; +import com.skyeye.operate.service.OperateOpenPageService; import com.skyeye.operate.service.OperateService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.stream.Collectors; /** * @ClassName: OperateServiceImpl @@ -28,6 +39,15 @@ import java.util.Map; @Service public class OperateServiceImpl extends SkyeyeBusinessServiceImpl implements OperateService { + @Autowired + private BusinessApiService businessApiService; + + @Autowired + private OperateOpenPageService operateOpenPageService; + + @Autowired + private RedisCache redisCache; + /** * 获取操作列表 * @@ -38,14 +58,83 @@ public class OperateServiceImpl extends SkyeyeBusinessServiceImpl params = inputObject.getParams(); String className = params.get("className").toString(); + List operateList = getOperatesByClassName(className); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(MybatisPlusUtil.toColumns(Operate::getClassName), className); - List operateList = list(wrapper); iAuthUserService.setName(operateList, "createId", "createName"); iAuthUserService.setName(operateList, "lastUpdateId", "lastUpdateName"); outputObject.setBeans(operateList); outputObject.settotal(operateList.size()); } + @Override + public List getOperatesByClassName(String className) { + String cacheKey = getCacheKeyByClassName(className); + List operateList = redisCache.getList(cacheKey, key -> { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(MybatisPlusUtil.toColumns(Operate::getClassName), className); + List operates = list(wrapper); + List ids = operates.stream().map(Operate::getId).collect(Collectors.toList()); + + // 获取接口配置信息 + Map businessApiMap = businessApiService.selectByObjectIds(ids); + // 获取新开页面配置信息 + Map operateOpenPageMap = operateOpenPageService.selectByOperateIds(ids); + operates.forEach(operate -> { + String id = operate.getId(); + operate.setBusinessApi(businessApiMap.get(id)); + operate.setOperateOpenPage(operateOpenPageMap.get(id)); + }); + + return operates; + }, RedisConstants.ALL_USE_TIME, Operate.class); + return operateList; + } + + @Override + public void writePostpose(Operate entity, String userId) { + super.writePostpose(entity, userId); + if (StrUtil.equals(entity.getEventType(), EventType.AJAX.getKey())) { + // 保存请求事件 + BusinessApi businessApi = entity.getBusinessApi(); + businessApi.setObjectId(entity.getId()); + businessApiService.createEntity(businessApi, userId); + } else if (StrUtil.equals(entity.getEventType(), EventType.OPEN_PAGE.getKey())) { + // 保存新开页面事件 + OperateOpenPage operateOpenPage = entity.getOperateOpenPage(); + operateOpenPage.setOperateId(entity.getId()); + operateOpenPageService.createEntity(operateOpenPage, userId); + } + String cacheKey = getCacheKeyByClassName(entity.getClassName()); + jedisClientService.del(cacheKey); + } + + @Override + public Operate getDataFromDb(String id) { + Operate operate = super.getDataFromDb(id); + if (StrUtil.equals(operate.getEventType(), EventType.AJAX.getKey())) { + // 查询请求事件 + BusinessApi businessApi = businessApiService.selectByObjectId(id); + operate.setBusinessApi(businessApi); + } else if (StrUtil.equals(operate.getEventType(), EventType.OPEN_PAGE.getKey())) { + // 查询新开页面事件 + OperateOpenPage operateOpenPage = operateOpenPageService.selectByOperateId(id); + operate.setOperateOpenPage(operateOpenPage); + } + return operate; + } + + @Override + public void deletePostpose(Operate entity) { + // 删除的时候不用区分事件类型,直接每张表都删除一次 + businessApiService.deleteByObjectId(entity.getId()); + operateOpenPageService.deleteByOperateId(entity.getId()); + // 清空缓存 + String cacheKey = getCacheKeyByClassName(entity.getClassName()); + jedisClientService.del(cacheKey); + } + + private String getCacheKeyByClassName(String className) { + return String.format(Locale.ROOT, "skyeye:operate:className:%s", className); + } + }