diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/DdkEvent.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/DdkEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..7ccecabd48d04acdd897a1de2843aee78d5e3e57 --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/DdkEvent.java @@ -0,0 +1,11 @@ +package cn.icanci.loopstack.ddk.admin.biz.event; + +import cn.icanci.loopstack.lsi.event.BaseEvent; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 22:26 + */ +public class DdkEvent extends BaseEvent { + +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEvent.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEvent.java index 7e2e4bc3215b1e58f1b3f4459c8decf132156fd4..8edf826888805e2c1fc712a83a4f84c17875f0a8 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEvent.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEvent.java @@ -1,6 +1,10 @@ package cn.icanci.loopstack.ddk.admin.biz.event.log; -import cn.icanci.loopstack.lsi.event.BaseEvent; +import cn.icanci.loopstack.ddk.admin.biz.event.DdkEvent; +import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; +import cn.icanci.loopstack.ddk.common.enums.ModuleTypeEnum; + +import java.util.Date; import org.springframework.stereotype.Component; @@ -11,6 +15,66 @@ import org.springframework.stereotype.Component; * @since 1.0 Created in 2022/12/24 20:39 */ @Component -public class LogEvent extends BaseEvent { +public class LogEvent extends DdkEvent { + + private String targetId; + + private ModuleTypeEnum moduleType; + + private String context; + + private LogOperatorTypeEnum logOperatorType; + + private Date createTime; + + public LogEvent() { + } + + public LogEvent(String targetId, ModuleTypeEnum moduleType, String context, LogOperatorTypeEnum logOperatorType) { + this.targetId = targetId; + this.moduleType = moduleType; + this.context = context; + this.logOperatorType = logOperatorType; + this.createTime = new Date(); + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public ModuleTypeEnum getModuleType() { + return moduleType; + } + + public void setModuleType(ModuleTypeEnum moduleType) { + this.moduleType = moduleType; + } + + public String getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + + public LogOperatorTypeEnum getLogOperatorType() { + return logOperatorType; + } + + public void setLogOperatorType(LogOperatorTypeEnum logOperatorType) { + this.logOperatorType = logOperatorType; + } + + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEventListener.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEventListener.java index 9893964be75cefef3e83cbead2415d7f24d69ce5..dcb2c433d75d7fa288ded52f33ca2b1f7021ceb8 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEventListener.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/event/log/LogEventListener.java @@ -1,11 +1,17 @@ package cn.icanci.loopstack.ddk.admin.biz.event.log; +import cn.icanci.loopstack.ddk.admin.biz.service.LogService; +import cn.icanci.loopstack.ddk.admin.biz.utils.EnvUtils; +import cn.icanci.loopstack.ddk.common.model.log.LogOperateVO; import cn.icanci.loopstack.lsi.event.BaseEventListener; +import javax.annotation.Resource; + import org.springframework.stereotype.Service; /** * 日志事件监听 + * - 日志表进行日志的记录操作 * * @author icanci * @since 1.0 Created in 2022/12/24 20:40 @@ -13,8 +19,19 @@ import org.springframework.stereotype.Service; @Service public class LogEventListener extends BaseEventListener { + @Resource + private LogService logService; + @Override protected void event(LogEvent event) { - System.out.println(event); + LogOperateVO logOperateVO = new LogOperateVO(); + logOperateVO.setModule(event.getModuleType()); + logOperateVO.setTargetId(event.getTargetId()); + logOperateVO.setOperatorType(event.getLogOperatorType()); + logOperateVO.setContent(event.getContext()); + logOperateVO.setCreateTime(event.getCreateTime()); + logOperateVO.setEnv(EnvUtils.getEnv()); + + logService.log(logOperateVO); } } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/config/LogMapping.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/config/LogMapping.java new file mode 100644 index 0000000000000000000000000000000000000000..cdd173ea27dcd869af227bee5155ebd69a72b773 --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/config/LogMapping.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.ddk.admin.biz.mapping.config; + +import cn.icanci.loopstack.ddk.admin.biz.mapping.converter.LogOperatorTypeEnumConverter; +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.LogDO; +import cn.icanci.loopstack.ddk.common.model.log.LogOperateVO; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 23:33 + */ +@Mapper(componentModel = "spring", uses = { LogOperatorTypeEnumConverter.class }, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface LogMapping extends BaseMapping { +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/AbstractBaseConverter.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/AbstractBaseConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..4d8f520408ad31f9af670c1529b4431410dd5792 --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/AbstractBaseConverter.java @@ -0,0 +1,48 @@ +package cn.icanci.loopstack.ddk.admin.biz.mapping.converter; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +import org.apache.commons.lang3.StringUtils; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/11 17:03 + */ +public abstract class AbstractBaseConverter implements BaseConverter { + @Override + public String asString(T t) { + if (t != null) { + return t.name(); + } + return null; + } + + @SuppressWarnings("all") + @Override + public T asEnum(String str) { + if (StringUtils.isBlank(str)) { + return null; + } + Class clazz = getClass(); + Class actualTypeArgument = (Class) GenericSuperclassUtil.getActualTypeArgument(clazz); + return (T) T.valueOf(actualTypeArgument, str); + } + + /** + * 获取泛型类Class对象,不是泛型类则返回null + */ + private static final class GenericSuperclassUtil { + public static Class getActualTypeArgument(Class clazz) { + Class entityClass = null; + Type genericSuperclass = clazz.getGenericSuperclass(); + if (genericSuperclass instanceof ParameterizedType) { + Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass).getActualTypeArguments(); + if (actualTypeArguments != null && actualTypeArguments.length > 0) { + entityClass = (Class) actualTypeArguments[0]; + } + } + return entityClass; + } + } +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/BaseConverter.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/BaseConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..1114f79eea6f537723458005eaad01cec4b87d8b --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/BaseConverter.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.ddk.admin.biz.mapping.converter; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/11 17:00 + */ +public interface BaseConverter { + /** + * 枚举转编码 + * + * @param t 枚举 + * @return 编码 + */ + String asString(T t); + + /** + * 编码转枚举 + * + * @param str 编码 + * @return 枚举 + */ + public T asEnum(String str); +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/LogOperatorTypeEnumConverter.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/LogOperatorTypeEnumConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..a598e030aacf0f938366a57bc0a35c7193cbb810 --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/mapping/converter/LogOperatorTypeEnumConverter.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.ddk.admin.biz.mapping.converter; + +import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; + +import org.springframework.stereotype.Component; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/11 17:14 + */ +@Component +public class LogOperatorTypeEnumConverter extends AbstractBaseConverter { +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java new file mode 100644 index 0000000000000000000000000000000000000000..974a45818763d57a6fdfee3512c688c22bfa8bdb --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java @@ -0,0 +1,67 @@ +package cn.icanci.loopstack.ddk.admin.biz.service; + +import cn.icanci.loopstack.ddk.admin.biz.utils.EnvUtils; +import cn.icanci.loopstack.ddk.admin.biz.utils.IDHolder; +import cn.icanci.loopstack.ddk.common.enums.BooleanEnum; +import cn.icanci.loopstack.ddk.common.model.config.BaseVO; + +import java.util.Date; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 18:39 + */ +public abstract class BaseService { + protected String getEnv() { + return EnvUtils.getEnv(); + } + + private String genUuid() { + return IDHolder.generateNoBySnowFlake("CFG"); + } + + /** + * 是否是插入 + * + * @param t t + * @return 返回是否是插入 + */ + protected boolean doInsert(T t) { + return t.getId() == null || t.getId() == 0; + } + + /** + * 是否是删除的 + * + * @param t t + * @return 返回是否是删除的 + */ + protected boolean isDeleted(T t) { + return t.getIsDelete() == 1; + } + + /** + * 插入之前的动作 + * + * @param vo VO + */ + protected void beforeInsert(T vo) { + vo.setId(null); + vo.setEnv(getEnv()); + vo.setIsDelete(BooleanEnum.NO.getCode()); + vo.setUuid(genUuid()); + vo.setCreateTime(new Date()); + vo.setUpdateTime(new Date()); + } + + /** + * 更新之前的动作 + * + * @param vo VO + */ + protected void beforeUpdate(T vo) { + vo.setEnv(getEnv()); + vo.setUpdateTime(new Date()); + } + +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java index 4e34f6f301c068a7a177dfe2aa074806b2f90d16..f46290b89760a736b23b7fe73e8580c283edec6e 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java @@ -1,8 +1,43 @@ package cn.icanci.loopstack.ddk.admin.biz.service; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.config.GroupVO; + /** * @author icanci * @since 1.0 Created in 2023/01/05 21:40 */ public interface GroupService { + /** + * 分页查询 + * + * @param vo 查询模型 + * @param currentPage 当前页 + * @param pageSize 当前页大小 + * @return 返回分页查询数据 + */ + PageList queryPage(GroupVO vo, int currentPage, int pageSize); + + /** + * 保存一条记录 + * + * @param vo vo + */ + void save(GroupVO vo); + + /** + * 根据groupId查询数据 + * + * @param groupId groupId + * @return 返回查询的结果 + */ + GroupVO queryByGroupId(String groupId); + + /** + * 根据groupName查询数据 + * + * @param groupName groupName + * @return 返回查询的结果 + */ + GroupVO queryByGroupName(String groupName); } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/LogService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/LogService.java new file mode 100644 index 0000000000000000000000000000000000000000..d2678a40443e0acfe8f0b66615aa8f4950aa5c8e --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/LogService.java @@ -0,0 +1,28 @@ +package cn.icanci.loopstack.ddk.admin.biz.service; + +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.log.LogOperateVO; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 23:31 + */ +public interface LogService { + /** + * 记录日志 + * + * @param logOperate logOperate + */ + void log(LogOperateVO logOperate); + + /** + * queryPage + * + * @param module module + * @param targetId targetId + * @param pageNum pageNum + * @param pageSize pageSize + * @return PageList + */ + PageList queryPage(String module, String targetId, int pageNum, int pageSize); +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java index 99a094105097861cbf07239f61530c6423c154d5..c21969c24c8352668ca06383930762327e19fa4e 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java @@ -1,6 +1,22 @@ package cn.icanci.loopstack.ddk.admin.biz.service.impl; +import cn.hutool.json.JSONUtil; +import cn.icanci.loopstack.ddk.admin.biz.event.log.LogEvent; +import cn.icanci.loopstack.ddk.admin.biz.mapping.config.GroupMapping; +import cn.icanci.loopstack.ddk.admin.biz.service.BaseService; import cn.icanci.loopstack.ddk.admin.biz.service.GroupService; +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.GroupDO; +import cn.icanci.loopstack.ddk.admin.dal.mapper.mapper.GroupMapper; +import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; +import cn.icanci.loopstack.ddk.common.enums.ModuleTypeEnum; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.config.GroupVO; +import cn.icanci.loopstack.ddk.common.utils.PaginatorUtils; +import cn.icanci.loopstack.lsi.event.EventDispatcher; + +import java.util.List; + +import javax.annotation.Resource; import org.springframework.stereotype.Service; @@ -9,6 +25,54 @@ import org.springframework.stereotype.Service; * @since 1.0 Created in 2023/01/06 21:06 */ @Service -public class GroupServiceImpl implements GroupService { +public class GroupServiceImpl extends BaseService implements GroupService { + + @Resource + private GroupMapper groupMapper; + @Resource + private GroupMapping groupMapping; + + @Resource + private EventDispatcher eventDispatcher; + + @Override + public PageList queryPage(GroupVO vo, int currentPage, int pageSize) { + + vo.setEnv(getEnv()); + vo.setIsDelete(null); + + currentPage = Math.max(currentPage - 1, 0); + + List ret = groupMapper.selectPage(groupMapping.vo2do(vo), currentPage, pageSize); + + return PaginatorUtils.formatPaginator(groupMapping.dos2vos(ret), currentPage, pageSize); + } + + @Override + public void save(GroupVO vo) { + if (doInsert(vo)) { + beforeInsert(vo); + GroupDO ddkGroup = groupMapping.vo2do(vo); + groupMapper.insert(ddkGroup); + eventDispatcher.fire(new LogEvent(vo.getUuid(), ModuleTypeEnum.DDK_GROUP, JSONUtil.toJsonStr(ddkGroup), LogOperatorTypeEnum.CREATE), false); + } else { + beforeUpdate(vo); + GroupDO ddkGroup = groupMapping.vo2do(vo); + groupMapper.update(ddkGroup); + eventDispatcher.fire(new LogEvent(vo.getUuid(), ModuleTypeEnum.DDK_GROUP, JSONUtil.toJsonStr(ddkGroup), LogOperatorTypeEnum.UPDATE), false); + } + } + + @Override + public GroupVO queryByGroupId(String groupId) { + GroupDO group = groupMapper.selectByGroupId(groupId, getEnv()); + return groupMapping.do2vo(group); + } + + @Override + public GroupVO queryByGroupName(String groupName) { + GroupDO group = groupMapper.selectByGroupName(groupName, getEnv()); + return groupMapping.do2vo(group); + } } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/LogServiceImpl.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/LogServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..a702ad205afef00dc03c41815b8cd453e661687b --- /dev/null +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/LogServiceImpl.java @@ -0,0 +1,48 @@ +package cn.icanci.loopstack.ddk.admin.biz.service.impl; + +import cn.icanci.loopstack.ddk.admin.biz.mapping.config.LogMapping; +import cn.icanci.loopstack.ddk.admin.biz.service.LogService; +import cn.icanci.loopstack.ddk.admin.biz.utils.EnvUtils; +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.LogDO; +import cn.icanci.loopstack.ddk.admin.dal.mapper.mapper.LogMapper; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.log.LogOperateVO; +import cn.icanci.loopstack.ddk.common.utils.PaginatorUtils; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 23:32 + */ +@Service +public class LogServiceImpl implements LogService { + @Resource + private LogMapper logMapper; + + @Resource + private LogMapping logMapping; + + @Override + public void log(LogOperateVO logOperate) { + logMapper.insert(logMapping.vo2do(logOperate)); + } + + @Override + public PageList queryPage(String module, String targetId, int pageNum, int pageSize) { + LogDO operate = new LogDO(); + operate.setModule(module); + operate.setTargetId(targetId); + operate.setEnv(EnvUtils.getEnv()); + + pageNum = Math.max(pageNum - 1, 0); + + List ret = logMapper.selectPage(operate, pageNum, pageSize); + + return PaginatorUtils.formatPaginator(logMapping.dos2vos(ret), pageNum, pageSize); + } +} diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/utils/IDHolder.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/utils/IDHolder.java index a975f618b0940212167c781501181b81f76aab17..035e42f5ff93d15c5957f14c98e38bed8019eb65 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/utils/IDHolder.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/utils/IDHolder.java @@ -12,7 +12,7 @@ public class IDHolder { /** 分布式id服务 */ private static IDGeneratorService idGeneratorService; - private static final String DEFAULT_PREFIX = "REC"; + private static final String DEFAULT_PREFIX = "DDK"; public static void setIdGeneratorService(IDGeneratorService idGeneratorService) { IDHolder.idGeneratorService = idGeneratorService; diff --git a/admin/admin-dal/config/gen.properties b/admin/admin-dal/config/gen.properties index 3ed16159950672344092e4a5968afe3529efa242..f0e5ac26868693fc4f087bad95ff9bb79724f4a7 100644 --- a/admin/admin-dal/config/gen.properties +++ b/admin/admin-dal/config/gen.properties @@ -13,7 +13,7 @@ removePreTable=ddk_ # \u6570\u636E\u6A21\u5757\uFF0C\u591A\u6570\u636E\u6E90\u53EF\u914D\u7F6E\u4E0D\u540C\u7684dbModule\uFF0C\u4F1A\u81EA\u52A8\u5206\u5305 dbModule= # \u9700\u8981\u652F\u6301\u9006\u5411\u7684\u6570\u636E\u8868\uFF0C\u5168\u90E8\u5219\u586B\u5199*; \u975E\u5168\u90E8\u5219\u4F7F\u7528;\u53F7\u9694\u79BB\u6BD4\u5982: a;b;c;d; -include=*; +include=ddk_log; # \u9700\u8981\u751F\u6210\u7684\u5305\u540D\u5B57 packageName=cn.icanci.loopstack.ddk.admin.dal.mapper # \u751F\u6210\u6587\u4EF6\u7684\u4F5C\u8005 diff --git a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/entity/LogDO.java b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/entity/LogDO.java new file mode 100644 index 0000000000000000000000000000000000000000..285516c81beaf42ce9500f272a82a2991e5c10bc --- /dev/null +++ b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/entity/LogDO.java @@ -0,0 +1,109 @@ +package cn.icanci.loopstack.ddk.admin.dal.mapper.entity; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.math.BigDecimal; + +/** +* DdkLog +* ⚠️ 修改之后请勿使用生成器再次生成,否则会覆盖修改 +* +* @author icanci +* @since 1.0 Created in 2023/01/07 23:30 +*/ +public class LogDO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id 主键 + */ + private Long id; + + /** + * module 模块 + */ + private String module; + + /** + * target_id 对象编号,取uuid + */ + private String targetId; + + /** + * operator_type 操作类型 + */ + private String operatorType; + + /** + * content 操作数据 + */ + private String content; + + /** + * create_time 创建时间 + */ + private Date createTime; + + /** + * env 操作环境 + */ + private String env; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return this.id; + } + + public void setModule(String module) { + this.module = module; + } + + public String getModule() { + return this.module; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getTargetId() { + return this.targetId; + } + + public void setOperatorType(String operatorType) { + this.operatorType = operatorType; + } + + public String getOperatorType() { + return this.operatorType; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContent() { + return this.content; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getCreateTime() { + return this.createTime; + } + + public void setEnv(String env) { + this.env = env; + } + + public String getEnv() { + return this.env; + } +} \ No newline at end of file diff --git a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/GroupMapper.java b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/GroupMapper.java index 34bc29fb53725e355583890537a5390d898b1c40..edf93345575462cfa738c5833468215a4f085652 100644 --- a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/GroupMapper.java +++ b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/GroupMapper.java @@ -1,11 +1,12 @@ package cn.icanci.loopstack.ddk.admin.dal.mapper.mapper; -import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.*; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.GroupDO; import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + /** * DdkGroupMapper * ⚠️ 修改之后请勿使用生成器再次生成,否则会覆盖修改 @@ -63,7 +64,7 @@ public interface GroupMapper { * * @param ddkGroup 查询条件 **/ - List selectList (GroupDO ddkGroup); + List selectList(GroupDO ddkGroup); /** * 分页条件查询 @@ -72,7 +73,7 @@ public interface GroupMapper { * @param page 页 * @param pageSize 每页大小 **/ - List selectPage (@Param("ddkGroup") GroupDO ddkGroup, @Param("page") Integer page, @Param("pageSize") Integer pageSize); + List selectPage(@Param("ddkGroup") GroupDO ddkGroup, @Param("page") Integer page, @Param("pageSize") Integer pageSize); /** * 总量查询 @@ -80,4 +81,22 @@ public interface GroupMapper { * @param ddkGroup 查询条件 **/ int total(GroupDO ddkGroup); + + /** + * 根据groupId查询数据 + * + * @param groupId groupId + * @param env env + * @return 返回查询结果 + */ + GroupDO selectByGroupId(@Param("groupId") String groupId, @Param("env") String env); + + /** + * 根据groupName查询数据 + * + * @param groupName groupName + * @param env env + * @return 返回查询结果 + */ + GroupDO selectByGroupName(@Param("groupName") String groupName, @Param("env") String env); } diff --git a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/LogMapper.java b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/LogMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..0e3fd5201217a48dca3c04d575bee45a812d0026 --- /dev/null +++ b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/LogMapper.java @@ -0,0 +1,83 @@ +package cn.icanci.loopstack.ddk.admin.dal.mapper.mapper; + +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* DdkLogMapper +* ⚠️ 修改之后请勿使用生成器再次生成,否则会覆盖修改 +* +* @author icanci +* @since 1.0 Created in 2023/01/07 23:30 +*/ +@Mapper +public interface LogMapper { + + /** + * 新增一条记录 + * + * @param ddkLog 新增数据 + **/ + int insert(LogDO ddkLog); + + /** + * 新增多条记录 + * + * @param list 新增数据列表 + **/ + int batchInsert(List list); + + /** + * 更新一条记录 + * + * @param ddkLog 更新的数据 + **/ + int update(LogDO ddkLog); + + /** + * 根据id删除一条记录 + * + * @param key 主键 + **/ + int delete(Object key); + + /** + * 批量删除操作 + * + * @param list 删除的数据 + **/ + int batchDelete(List list); + + /** + * 根据主键查询 + * + * @param key 主键 + **/ + LogDO selectByKey(Object key); + + /** + * 根据条件查询 + * + * @param ddkLog 查询条件 + **/ + List selectList (LogDO ddkLog); + + /** + * 分页条件查询 + * + * @param ddkLog 查询条件 + * @param page 页 + * @param pageSize 每页大小 + **/ + List selectPage (@Param("ddkLog") LogDO ddkLog, @Param("page") Integer page, @Param("pageSize") Integer pageSize); + + /** + * 总量查询 + * + * @param ddkLog 查询条件 + **/ + int total(LogDO ddkLog); +} diff --git a/admin/admin-dal/src/main/resources/DataSource.md b/admin/admin-dal/src/main/resources/DataSource.md index d2af870f9110dedd5dce17a96460ec8d2cdbdd56..73f9834a58f8aec43e356cfa33741a98367cc830 100644 --- a/admin/admin-dal/src/main/resources/DataSource.md +++ b/admin/admin-dal/src/main/resources/DataSource.md @@ -5,92 +5,16 @@ | 作者 | icanci | | 数据库名 | ddk | -## ddk_app表结构说明 +## ddk_log表结构说明 | 代码字段名 | 字段名 | 数据类型(代码) | 数据类型 | 长度 | NullAble | 注释 | | :--------- | ------ | ---------------- | -------- | ---- | -------------- | ---- | | id | id | Long | bigint | 19 | NO | 主键 | -| uuid | uuid | String | varchar | 40 | NO | 雪花算法随机UUID | -| desc | desc | String | varchar | 80 | NO | 功能描述 | +| module | module | String | varchar | 40 | NO | 模块 | +| targetId | target_id | String | varchar | 40 | NO | 对象编号,取uuid | +| operatorType | operator_type | String | varchar | 40 | NO | 操作类型 | +| content | content | String | text | 65535 | NO | 操作数据 | | createTime | create_time | Date | datetime | | NO | 创建时间 | -| updateTime | update_time | Date | datetime | | NO | 更新时间 | -| isDelete | is_delete | Integer | int | 10 | NO | 状态 1无效,0有效 | -| env | env | String | varchar | 16 | NO | 环境 | -| appId | app_id | String | varchar | 40 | NO | 项目id,全局唯一 | -| appName | app_name | String | varchar | 80 | NO | 项目名字 | -| teamUuid | team_uuid | String | varchar | 40 | NO | 项目组关联uuid | - -## ddk_app_config表结构说明 -| 代码字段名 | 字段名 | 数据类型(代码) | 数据类型 | 长度 | NullAble | 注释 | -| :--------- | ------ | ---------------- | -------- | ---- | -------------- | ---- | -| id | id | Long | bigint | 19 | NO | 主键 | -| uuid | uuid | String | varchar | 40 | NO | 雪花算法随机UUID | -| desc | desc | String | varchar | 80 | NO | 功能描述 | -| createTime | create_time | Date | datetime | | NO | 创建时间 | -| updateTime | update_time | Date | datetime | | NO | 更新时间 | -| isDelete | is_delete | Integer | int | 10 | NO | 状态 1无效,0有效 | -| env | env | String | varchar | 16 | NO | 环境 | -| appConfigName | app_config_name | String | varchar | 40 | NO | 配置名称 | -| appConfigValue | app_config_value | String | varchar | 200 | NO | 配置值, | -| appConfigType | app_config_type | String | varchar | 16 | NO | 配置类型 | -| appUuid | app_uuid | String | varchar | 40 | NO | 项目关联uuid | - -## ddk_group表结构说明 -| 代码字段名 | 字段名 | 数据类型(代码) | 数据类型 | 长度 | NullAble | 注释 | -| :--------- | ------ | ---------------- | -------- | ---- | -------------- | ---- | -| id | id | Long | bigint | 19 | NO | 主键 | -| groupId | group_id | String | varchar | 40 | NO | 事业群组id,唯一 | -| groupName | group_name | String | varchar | 80 | NO | 组名字 | -| uuid | uuid | String | varchar | 40 | NO | 雪花算法随机UUID | -| desc | desc | String | varchar | 80 | NO | 功能描述 | -| createTime | create_time | Date | datetime | | NO | 创建时间 | -| updateTime | update_time | Date | datetime | | NO | 更新时间 | -| isDelete | is_delete | Integer | int | 10 | NO | 状态 1无效,0有效 | -| env | env | String | varchar | 16 | NO | 环境 | - -## ddk_notice_config表结构说明 -| 代码字段名 | 字段名 | 数据类型(代码) | 数据类型 | 长度 | NullAble | 注释 | -| :--------- | ------ | ---------------- | -------- | ---- | -------------- | ---- | -| id | id | Long | bigint | 19 | NO | 主键 | -| uuid | uuid | String | varchar | 40 | NO | 雪花算法随机UUID | -| desc | desc | String | varchar | 80 | NO | 功能描述 | -| createTime | create_time | Date | datetime | | NO | 创建时间 | -| updateTime | update_time | Date | datetime | | NO | 更新时间 | -| isDelete | is_delete | Integer | int | 10 | NO | 状态 1无效,0有效 | -| env | env | String | varchar | 16 | NO | 环境 | -| noticeConfigName | notice_config_name | String | varchar | 40 | NO | 通知配置名称 | -| noticeConfigResource | notice_config_resource | String | varchar | 200 | NO | 通知配置资源 | -| noticeValue | notice_value | String | varchar | 200 | NO | 测试配置值,因为可能通过配置值进行特殊处理 | -| appUuid | app_uuid | String | varchar | 40 | NO | 项目关联uuid,多个则会有多条记录 | - -## ddk_register表结构说明 -| 代码字段名 | 字段名 | 数据类型(代码) | 数据类型 | 长度 | NullAble | 注释 | -| :--------- | ------ | ---------------- | -------- | ---- | -------------- | ---- | -| id | id | Long | bigint | 19 | NO | 主键 | -| uuid | uuid | String | varchar | 40 | NO | 雪花算法随机UUID | -| desc | desc | String | varchar | 80 | NO | 功能描述 | -| createTime | create_time | Date | datetime | | NO | 创建时间 | -| updateTime | update_time | Date | datetime | | NO | 更新时间 | -| isDelete | is_delete | Integer | int | 10 | NO | 状态 1无效,0有效 | -| env | env | String | varchar | 16 | NO | 环境 | -| clientAddress | client_address | String | varchar | 40 | NO | client 服务ip地址 | -| clientPort | client_port | Integer | int | 10 | NO | client 服务端口 | -| appId | app_id | String | varchar | 40 | NO | client 服务服务id | -| registerTime | register_time | Date | datetime | | NO | 服务注册时间 | -| lastUpdateTime | last_update_time | Date | datetime | | NO | 上次注册更新时间 | - -## ddk_team表结构说明 -| 代码字段名 | 字段名 | 数据类型(代码) | 数据类型 | 长度 | NullAble | 注释 | -| :--------- | ------ | ---------------- | -------- | ---- | -------------- | ---- | -| id | id | Long | bigint | 19 | NO | 主键 | -| uuid | uuid | String | varchar | 40 | NO | 雪花算法随机UUID | -| desc | desc | String | varchar | 80 | NO | 功能描述 | -| createTime | create_time | Date | datetime | | NO | 创建时间 | -| updateTime | update_time | Date | datetime | | NO | 更新时间 | -| isDelete | is_delete | Integer | int | 10 | NO | 状态 1无效,0有效 | -| env | env | String | varchar | 16 | NO | 环境 | -| teamId | team_id | String | varchar | 40 | NO | 项目组id,唯一 | -| teamName | team_name | String | varchar | 80 | NO | 项目组名字 | -| groupUuid | group_uuid | String | varchar | 40 | NO | 事业群关联uuid | +| env | env | String | varchar | 16 | NO | 操作环境 | diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/AppConfigDOMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/AppConfigMapper.xml similarity index 100% rename from admin/admin-dal/src/main/resources/mybatis/mapper/AppConfigDOMapper.xml rename to admin/admin-dal/src/main/resources/mybatis/mapper/AppConfigMapper.xml diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/AppDOMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/AppMapper.xml similarity index 100% rename from admin/admin-dal/src/main/resources/mybatis/mapper/AppDOMapper.xml rename to admin/admin-dal/src/main/resources/mybatis/mapper/AppMapper.xml diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/GroupDOMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml similarity index 93% rename from admin/admin-dal/src/main/resources/mybatis/mapper/GroupDOMapper.xml rename to admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml index a05b3d2eaf96363b3a486096532e0e65e0a7d2db..a4e200c473af1607ac1ea3b8cbae83c5794d3039 100644 --- a/admin/admin-dal/src/main/resources/mybatis/mapper/GroupDOMapper.xml +++ b/admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml @@ -195,10 +195,10 @@ and `id` = #{ddkGroup.id} - and `group_id` = #{ddkGroup.groupId} + and `group_id` like CONCAT('%',#{ddkGroup.groupId},'%') - and `group_name` = #{ddkGroup.groupName} + and `group_name` like CONCAT('%',#{ddkGroup.groupName},'%') and `uuid` = #{ddkGroup.uuid} @@ -255,4 +255,18 @@ + + + + \ No newline at end of file diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/LogMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/LogMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..07d5b511222518db3ca023c6fe902058decdba72 --- /dev/null +++ b/admin/admin-dal/src/main/resources/mybatis/mapper/LogMapper.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + `id`, + `module`, + `target_id`, + `operator_type`, + `content`, + `create_time`, + `env` + + + + + INSERT INTO ddk_log + + + `id`, + + + `module`, + + + `target_id`, + + + `operator_type`, + + + `content`, + + + `create_time`, + + + `env` + + + + + #{id}, + + + #{module}, + + + #{targetId}, + + + #{operatorType}, + + + #{content}, + + + #{createTime}, + + + #{env} + + + + + + + INSERT INTO ddk_log ( + + ) VALUES + + ( + #{curr.id}, + #{curr.module}, + #{curr.targetId}, + #{curr.operatorType}, + #{curr.content}, + #{curr.createTime}, + #{curr.env} + ) + + + + + + UPDATE ddk_log + + `module` = #{module}, + `target_id` = #{targetId}, + `operator_type` = #{operatorType}, + `content` = #{content}, + `create_time` = #{createTime}, + `env` = #{env} + + WHERE `id` = #{id} + + + + + DELETE FROM ddk_log + WHERE `id` = #{key} + + + + + DELETE FROM ddk_log WHERE id IN + + #{item} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/NoticeConfigDOMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/NoticeConfigMapper.xml similarity index 100% rename from admin/admin-dal/src/main/resources/mybatis/mapper/NoticeConfigDOMapper.xml rename to admin/admin-dal/src/main/resources/mybatis/mapper/NoticeConfigMapper.xml diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/RegisterDOMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/RegisterMapper.xml similarity index 100% rename from admin/admin-dal/src/main/resources/mybatis/mapper/RegisterDOMapper.xml rename to admin/admin-dal/src/main/resources/mybatis/mapper/RegisterMapper.xml diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/TeamDOMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/TeamMapper.xml similarity index 100% rename from admin/admin-dal/src/main/resources/mybatis/mapper/TeamDOMapper.xml rename to admin/admin-dal/src/main/resources/mybatis/mapper/TeamMapper.xml diff --git a/admin/admin-views/pom.xml b/admin/admin-views/pom.xml index a9307a026f29130b671c8711a38cafdb879c861a..7b523f9f6409c6f826e4d77f991c7f92f060b273 100644 --- a/admin/admin-views/pom.xml +++ b/admin/admin-views/pom.xml @@ -39,43 +39,43 @@ - - org.codehaus.mojo - exec-maven-plugin - - - - exec-npm-install - package - - exec - - - npm - - install - - src/main/resources/vueboot - - - - - exec-npm-run-build - package - - exec - - - npm - - run - build - - src/main/resources/vueboot - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins diff --git a/admin/admin-views/src/main/resources/application.yml b/admin/admin-views/src/main/resources/application.yml index 68f9c800a5af62d69d6840e71674ff7ac3b21e03..30ae7654a4439005df746fd8132b17d915d4a958 100644 --- a/admin/admin-views/src/main/resources/application.yml +++ b/admin/admin-views/src/main/resources/application.yml @@ -14,7 +14,7 @@ ddk: spring: datasource: driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/ddk?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC + url: jdbc:mysql://127.0.0.1:3306/ddk?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&autoReconnect=true&useSSL=false username: root password: root servlet: diff --git a/admin/admin-views/src/main/resources/log4j2.xml b/admin/admin-views/src/main/resources/log4j2.xml index 9c6f19f992b340cca9155e3d2473340999199d79..6bf9bf58ef28440bdf3e12257da157ce5680fc55 100644 --- a/admin/admin-views/src/main/resources/log4j2.xml +++ b/admin/admin-views/src/main/resources/log4j2.xml @@ -20,7 +20,7 @@ - + diff --git a/admin/admin-views/src/main/resources/vueboot/src/api/groupApi.js b/admin/admin-views/src/main/resources/vueboot/src/api/groupApi.js new file mode 100644 index 0000000000000000000000000000000000000000..1a446a4137bf4fdc3eb41824d572fa729eaed1a6 --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/api/groupApi.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +/** + * 分页查询 + * + * @param group group + * @param paginator paginator + * @returns {*} + */ +export async function groupQuery(group, paginator) { + return await request({ + url: '/ddk/group/query', + method: 'post', + data: { + 'group': group, + 'paginator': paginator + } + }) +} + +/** + * 保存 + * + * @param group group + * @returns {*} + */ +export async function saveGroup(group) { + return await request({ + url: '/ddk/group/save', + method: 'post', + data: group + }) +} + +/** + * remoteValidateGroupId + * + * @param groupId groupId + * @returns {*} + */ +export async function remoteValidateGroupId(groupId) { + return await request({ + url: '/ddk/group/validateGroupId/' + groupId, + method: 'get' + }) +} + +/** + * remoteValidateGroupName + * + * @param groupName groupName + * @returns {*} + */ +export async function remoteValidateGroupName(groupName) { + return await request({ + url: '/ddk/group/validateGroupName/' + groupName, + method: 'get' + }) +} diff --git a/admin/admin-views/src/main/resources/vueboot/src/components/Breadcrumb/index.vue b/admin/admin-views/src/main/resources/vueboot/src/components/Breadcrumb/index.vue index 7cb91016cef292e5abcc1992ebb3ebeeeaf3822e..8cba4a6e19fecddc7c51123319a9f3d96ad4a7f1 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/components/Breadcrumb/index.vue +++ b/admin/admin-views/src/main/resources/vueboot/src/components/Breadcrumb/index.vue @@ -36,18 +36,18 @@ export default { const first = matched[0] if (first && first.name !== 'dashboard') { // 修改名字,页面横向导航 - matched = [{ path: '/dashboard', meta: { title: 'REC-规则引擎' }}].concat(matched) + matched = [{path: '/dashboard', meta: {title: 'DDK-动态字典键'}}].concat(matched) } this.levelList = matched }, pathCompile(path) { // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561 - const { params } = this.$route + const {params} = this.$route var toPath = pathToRegexp.compile(path) return toPath(params) }, handleLink(item) { - const { redirect, path } = item + const {redirect, path} = item if (redirect) { this.$router.push(redirect) return @@ -59,14 +59,15 @@ export default { diff --git a/admin/admin-views/src/main/resources/vueboot/src/main.js b/admin/admin-views/src/main/resources/vueboot/src/main.js index 5348ae4f8ca7fbebfcaa76d000d1410ec3d607c6..29162543d34e5c85c7f6b6c64979ca3ae9e185f5 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/main.js +++ b/admin/admin-views/src/main/resources/vueboot/src/main.js @@ -21,7 +21,7 @@ Vue.config.productionTip = false Vue.prototype.$cloneObj = function (data) { return JSON.parse(JSON.stringify(data)) } -Vue.prototype.recDateFormat = function (date) { +Vue.prototype.ddkDateFormat = function (date) { return moment(date).format('YYYY-MM-DD HH:mm:ss'); } diff --git a/admin/admin-views/src/main/resources/vueboot/src/router/index.js b/admin/admin-views/src/main/resources/vueboot/src/router/index.js index 6d0dc67d704cd202cb74ec8f0e70353da103cadf..57f472b4d1acdaf6271a27b5ccc6c5f2ae3dbce3 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/router/index.js +++ b/admin/admin-views/src/main/resources/vueboot/src/router/index.js @@ -21,161 +21,161 @@ Vue.use(Router) } **/ export const constantRouterMap = [ - { - path: '/login', - component: () => import('@/views/login/index'), - hidden: true - }, - { - path: '/404', - component: () => import('@/views/404'), - hidden: true - }, - { - path: '/', - component: Layout, - redirect: '/dashboard', - hidden: false, - children: [{ - path: 'dashboard', - name: 'dashboard', - meta: { - title: 'DDK-动态字典键', - icon: 'dashboard' - }, - component: () => import('@/views/dashboard/index') - }] - }, - { - path: '/config', - component: Layout, - meta: { - title: '配置', - icon: 'example' + { + path: '/login', + component: () => import('@/views/login/index'), + hidden: true }, - children: [ - { - path: 'group', - name: 'group', - component: () => import('@/views/config/group'), - meta: { - title: 'group', - icon: 'edit' - } - }, - { - path: 'team', - name: 'team', - component: () => import('@/views/config/team'), + { + path: '/404', + component: () => import('@/views/404'), + hidden: true + }, + { + path: '/', + component: Layout, + redirect: '/dashboard', + hidden: false, + children: [{ + path: 'dashboard', + name: 'dashboard', + meta: { + title: 'DDK-动态字典键', + icon: 'dashboard' + }, + component: () => import('@/views/dashboard/index') + }] + }, + { + path: '/config', + component: Layout, meta: { - title: 'team', - icon: 'link' - } - }, - // { - // path: 'metadata', - // name: 'metadata', - // component: () => import('@/views/ruleConfig/metadata'), - // meta: { - // title: '元数据配置', - // icon: 'exit-fullscreen' - // } - // }, { - // path: 'baseData', - // name: 'baseData', - // component: () => import('@/views/ruleConfig/baseData'), - // meta: { - // title: '基础数据配置', - // icon: 'form' - // } - // }, { - // path: 'dataSource', - // name: 'dataSource', - // component: () => import('@/views/ruleConfig/dataSource'), - // meta: { - // title: '数据源配置', - // icon: 'guide' - // } - // }, - ] - }, - // { - // path: '/recLogs', - // component: Layout, - // meta: { - // title: '执行日志', - // icon: 'tab' - // }, - // children: [ - // { - // path: 'log', - // name: 'log', - // component: () => import('@/views/recLogs/log'), - // meta: { - // title: '执行日志', - // icon: 'clipboard' - // } - // }, - // { - // path: 'logDetail', - // name: 'logDetail', - // component: () => import('@/views/recLogs/logDetail'), - // meta: { - // title: '执行日志详情', - // icon: 'clipboard' - // } - // }, - // ] - // }, - { - path: '/registerCenter', - component: Layout, - meta: { - title: '注册中心', - icon: 'education' + title: '配置', + icon: 'example' + }, + children: [ + { + path: 'group', + name: '事业群', + component: () => import('@/views/config/group'), + meta: { + title: '事业群', + icon: 'edit' + } + }, + { + path: 'team', + name: '项目组', + component: () => import('@/views/config/team'), + meta: { + title: '项目组', + icon: 'link' + } + }, + // { + // path: 'metadata', + // name: 'metadata', + // component: () => import('@/views/ruleConfig/metadata'), + // meta: { + // title: '元数据配置', + // icon: 'exit-fullscreen' + // } + // }, { + // path: 'baseData', + // name: 'baseData', + // component: () => import('@/views/ruleConfig/baseData'), + // meta: { + // title: '基础数据配置', + // icon: 'form' + // } + // }, { + // path: 'dataSource', + // name: 'dataSource', + // component: () => import('@/views/ruleConfig/dataSource'), + // meta: { + // title: '数据源配置', + // icon: 'guide' + // } + // }, + ] }, - children: [ - { - path: 'register', - name: 'register', - component: () => import('@/views/register/register'), + // { + // path: '/recLogs', + // component: Layout, + // meta: { + // title: '执行日志', + // icon: 'tab' + // }, + // children: [ + // { + // path: 'log', + // name: 'log', + // component: () => import('@/views/recLogs/log'), + // meta: { + // title: '执行日志', + // icon: 'clipboard' + // } + // }, + // { + // path: 'logDetail', + // name: 'logDetail', + // component: () => import('@/views/recLogs/logDetail'), + // meta: { + // title: '执行日志详情', + // icon: 'clipboard' + // } + // }, + // ] + // }, + { + path: '/registerCenter', + component: Layout, meta: { - title: '注册中心', - icon: 'bug' - } - }, - ] - }, - { - path: '/doc', - component: Layout, - meta: { - title: '开放文档', - icon: 'tab' + title: '注册中心', + icon: 'education' + }, + children: [ + { + path: 'register', + name: 'register', + component: () => import('@/views/register/register'), + meta: { + title: '注册中心', + icon: 'bug' + } + }, + ] }, - children: [ - { - path: 'docDetail', - name: 'docDetail', - component: () => import('@/views/doc/docDetail'), + { + path: '/doc', + component: Layout, meta: { - title: '项目文档', - icon: 'clipboard' - } - }, - ] - }, - { - path: '*', - redirect: '/404', - hidden: true - } + title: '开放文档', + icon: 'tab' + }, + children: [ + { + path: 'docDetail', + name: 'docDetail', + component: () => import('@/views/doc/docDetail'), + meta: { + title: '项目文档', + icon: 'clipboard' + } + }, + ] + }, + { + path: '*', + redirect: '/404', + hidden: true + } ] export default new Router({ - // mode: 'history', //后端支持可开 - scrollBehavior: () => ({ - y: 0 - }), - routes: constantRouterMap + // mode: 'history', //后端支持可开 + scrollBehavior: () => ({ + y: 0 + }), + routes: constantRouterMap }) diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue b/admin/admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue index 73b5941add524a62be6ec1a47b975f0d4eb1a106..7aaf140a504f6a8cc0a41db9ac43fda0440f9ef2 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue +++ b/admin/admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue @@ -7,44 +7,45 @@ 日志 + append-to-body + :close-on-click-modal="true" + :close-on-press-escape="true" + :show-close="true" + title="操作日志" + :visible.sync="dialogVisible" + width="60%"> + :header-cell-style="{background:'#eef1f6',color:'#606266'}" + :data="pageResult.data" + border + :default-sort="{prop: 'createTime', order: 'descending'}" + style="width: 100%; margin-top: 20px;font-size: 10px"> + align="center" + prop="module" + label="模块"> + align="center" + prop="operatorType" + label="操作类型"> + prop="content" + align="center" + label="操作内容"> + sortable + prop="createTime" + align="center" + width="150" + label="操作时间"> diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/groupForm.vue b/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/groupForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..e8bcc914091dacfa7cd287bbd6b93795dfd93ce6 --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/groupForm.vue @@ -0,0 +1,135 @@ + + + diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue b/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue index bf7066b0baccee7650afc643b8ef198ce21b5b02..4e8b3e689dea91be43a56e54e4261e799837b8c3 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue +++ b/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue @@ -1,12 +1,178 @@ diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/LogController.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/LogController.java new file mode 100644 index 0000000000000000000000000000000000000000..02a2ab4f0ba534d25d63ebcb7fc443e34da84b82 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/LogController.java @@ -0,0 +1,41 @@ +package cn.icanci.loopstack.ddk.web.controller; + +import cn.icanci.loopstack.ddk.admin.biz.service.LogService; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.Paginator; +import cn.icanci.loopstack.ddk.common.model.log.LogOperateVO; +import cn.icanci.loopstack.ddk.common.result.R; +import cn.icanci.loopstack.ddk.web.form.LogQueryForm; +import cn.icanci.loopstack.ddk.web.mapping.LogWebMapping; +import cn.icanci.loopstack.ddk.web.model.LogOperate; + +import java.util.Comparator; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 14:15 + */ +@RestController +@RequestMapping("/ddk/log") +public class LogController { + @Resource + private LogService logService; + @Resource + private LogWebMapping logWebMapping; + + @PostMapping("/query") + public R query(@RequestBody LogQueryForm form) { + LogOperate logOperate = form.getLogOperate(); + Paginator paginator = form.getPaginator(); + PageList pageList = logService.queryPage(logOperate.getModule(), logOperate.getTargetId(), paginator.getCurrentPage(), paginator.getPageSize()); + PageList ret = new PageList<>(logWebMapping.vos2webs(pageList.getData()), pageList.getPaginator()); + return R.builderOk().data("queryPage", ret).build(); + } +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java new file mode 100644 index 0000000000000000000000000000000000000000..d3f3d13f712910ee9fd525355e8ca5816493a8c9 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java @@ -0,0 +1,51 @@ +package cn.icanci.loopstack.ddk.web.controller.config; + +import cn.icanci.loopstack.ddk.admin.biz.service.GroupService; +import cn.icanci.loopstack.ddk.common.model.config.GroupVO; +import cn.icanci.loopstack.ddk.common.result.R; +import cn.icanci.loopstack.ddk.web.form.GroupQueryForm; +import cn.icanci.loopstack.ddk.web.mapping.GroupWebMapping; +import cn.icanci.loopstack.ddk.web.model.Group; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.*; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 18:17 + */ +@RestController +@RequestMapping("/ddk/group") +public class GroupController { + @Resource + private GroupService groupService; + + @Resource + private GroupWebMapping groupWebMapping; + + @PostMapping("query") + public R query(@RequestBody GroupQueryForm form) { + return R.builderOk() + .data("queryPage", groupService.queryPage(groupWebMapping.web2vo(form.getGroup()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())).build(); + } + + @PostMapping("save") + public R save(@RequestBody Group group) { + groupService.save(groupWebMapping.web2vo(group)); + return R.builderOk().build(); + } + + @GetMapping("validateGroupId/{groupId:.*}") + public R validateGroupId(@PathVariable("groupId") String groupId) { + GroupVO group = groupService.queryByGroupId(groupId); + return R.builderOk().data("result", group == null).build(); + } + + @GetMapping("validateGroupName/{groupName:.*}") + public R validateGroupName(@PathVariable("groupName") String groupName) { + GroupVO group = groupService.queryByGroupName(groupName); + return R.builderOk().data("result", group == null).build(); + } + +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/GroupQueryForm.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/GroupQueryForm.java new file mode 100644 index 0000000000000000000000000000000000000000..4ea4915eaa1a51ccc067298bb635a450a90c73d3 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/GroupQueryForm.java @@ -0,0 +1,22 @@ +package cn.icanci.loopstack.ddk.web.form; + +import cn.icanci.loopstack.ddk.web.model.Group; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 18:18 + */ +public class GroupQueryForm extends BaseQueryForm { + /** + * group 查询信息 + */ + private Group group; + + public Group getGroup() { + return group; + } + + public void setGroup(Group group) { + this.group = group; + } +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/LogQueryForm.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/LogQueryForm.java new file mode 100644 index 0000000000000000000000000000000000000000..5c11911190c0c5ede1160fd8b0048bbe2bb05e3f --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/LogQueryForm.java @@ -0,0 +1,22 @@ +package cn.icanci.loopstack.ddk.web.form; + +import cn.icanci.loopstack.ddk.web.model.LogOperate; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 23:45 + */ +public class LogQueryForm extends BaseQueryForm { + private static final long serialVersionUID = -934696142423210674L; + + private LogOperate logOperate; + + public LogOperate getLogOperate() { + return logOperate; + } + + public void setLogOperate(LogOperate logOperate) { + this.logOperate = logOperate; + } + +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/mapping/LogWebMapping.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/mapping/LogWebMapping.java new file mode 100644 index 0000000000000000000000000000000000000000..e37bb1c411693ffa91b1ae7677b514b528c7df64 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/mapping/LogWebMapping.java @@ -0,0 +1,31 @@ +package cn.icanci.loopstack.ddk.web.mapping; + +import cn.icanci.loopstack.ddk.common.model.log.LogOperateVO; +import cn.icanci.loopstack.ddk.web.model.LogOperate; + +import java.util.Collection; +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/06 20:55 + */ +@Mapper(componentModel = "spring", uses = {}, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface LogWebMapping { + default LogOperate vo2web(LogOperateVO vo) { + LogOperate logOperate = new LogOperate(); + logOperate.setId(vo.getId()); + logOperate.setModule(vo.getModule().getDesc()); + logOperate.setTargetId(vo.getTargetId()); + logOperate.setOperatorType(vo.getOperatorType().getDesc()); + logOperate.setContent(vo.getContent()); + logOperate.setCreateTime(vo.getCreateTime()); + logOperate.setEnv(logOperate.getEnv()); + return logOperate; + } + + List vos2webs(Collection vos); +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AdminLogin.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AdminLogin.java index fc6f0ed8a6d2e546a4d3b6f4782bae79b98a8feb..6d192873c859e8a9ca147f937567d4b754ad3bc9 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AdminLogin.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AdminLogin.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * 用户登录请求 * @@ -30,6 +32,7 @@ public class AdminLogin implements Serializable { /** * 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 角色 diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/App.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/App.java index c3a8e76b249440277944958c6f2b5affec36cbe6..d44867eb82f2ace1cecb5f505260583b62b2d948 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/App.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/App.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * DdkApp * @@ -16,130 +18,132 @@ public class App implements Serializable { /** * id 主键 */ - private Long id; + private Long id; /** * uuid 雪花算法随机UUID */ - private String uuid; + private String uuid; /** * desc 功能描述 */ - private String desc; + private String desc; /** * create_time 创建时间 */ - private Date createTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; /** * update_time 更新时间 */ - private Date updateTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; /** * is_delete 状态 1无效,0有效 */ - private Integer isDelete; + private Integer isDelete; /** * env 环境 */ - private String env; + private String env; /** * app_id 项目id,全局唯一 */ - private String appId; + private String appId; /** * app_name 项目名字 */ - private String appName; + private String appName; /** * team_uuid 项目组关联uuid */ - private String teamUuid; + private String teamUuid; public void setId(Long id) { - this.id = id; + this.id = id; } public Long getId() { - return this.id; + return this.id; } public void setUuid(String uuid) { - this.uuid = uuid; + this.uuid = uuid; } public String getUuid() { - return this.uuid; + return this.uuid; } public void setDesc(String desc) { - this.desc = desc; + this.desc = desc; } public String getDesc() { - return this.desc; + return this.desc; } public void setCreateTime(Date createTime) { - this.createTime = createTime; + this.createTime = createTime; } public Date getCreateTime() { - return this.createTime; + return this.createTime; } public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + this.updateTime = updateTime; } public Date getUpdateTime() { - return this.updateTime; + return this.updateTime; } public void setIsDelete(Integer isDelete) { - this.isDelete = isDelete; + this.isDelete = isDelete; } public Integer getIsDelete() { - return this.isDelete; + return this.isDelete; } public void setEnv(String env) { - this.env = env; + this.env = env; } public String getEnv() { - return this.env; + return this.env; } public void setAppId(String appId) { - this.appId = appId; + this.appId = appId; } public String getAppId() { - return this.appId; + return this.appId; } public void setAppName(String appName) { - this.appName = appName; + this.appName = appName; } public String getAppName() { - return this.appName; + return this.appName; } public void setTeamUuid(String teamUuid) { - this.teamUuid = teamUuid; + this.teamUuid = teamUuid; } public String getTeamUuid() { - return this.teamUuid; + return this.teamUuid; } } \ No newline at end of file diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AppConfig.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AppConfig.java index d1e4a2ce9e8753b4dc0a32b1b156cac87cf80cac..f599403d80dc6c4407667e6647250b83dcf964b1 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AppConfig.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/AppConfig.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * DdkAppConfig * @@ -16,143 +18,145 @@ public class AppConfig implements Serializable { /** * id 主键 */ - private Long id; + private Long id; /** * uuid 雪花算法随机UUID */ - private String uuid; + private String uuid; /** * desc 功能描述 */ - private String desc; + private String desc; /** * create_time 创建时间 */ - private Date createTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; /** * update_time 更新时间 */ - private Date updateTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; /** * is_delete 状态 1无效,0有效 */ - private Integer isDelete; + private Integer isDelete; /** * env 环境 */ - private String env; + private String env; /** * app_config_name 配置名称 */ - private String appConfigName; + private String appConfigName; /** * app_config_value 配置值, */ - private String appConfigValue; + private String appConfigValue; /** * app_config_type 配置类型 */ - private String appConfigType; + private String appConfigType; /** * app_uuid 项目关联uuid */ - private String appUuid; + private String appUuid; public void setId(Long id) { - this.id = id; + this.id = id; } public Long getId() { - return this.id; + return this.id; } public void setUuid(String uuid) { - this.uuid = uuid; + this.uuid = uuid; } public String getUuid() { - return this.uuid; + return this.uuid; } public void setDesc(String desc) { - this.desc = desc; + this.desc = desc; } public String getDesc() { - return this.desc; + return this.desc; } public void setCreateTime(Date createTime) { - this.createTime = createTime; + this.createTime = createTime; } public Date getCreateTime() { - return this.createTime; + return this.createTime; } public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + this.updateTime = updateTime; } public Date getUpdateTime() { - return this.updateTime; + return this.updateTime; } public void setIsDelete(Integer isDelete) { - this.isDelete = isDelete; + this.isDelete = isDelete; } public Integer getIsDelete() { - return this.isDelete; + return this.isDelete; } public void setEnv(String env) { - this.env = env; + this.env = env; } public String getEnv() { - return this.env; + return this.env; } public void setAppConfigName(String appConfigName) { - this.appConfigName = appConfigName; + this.appConfigName = appConfigName; } public String getAppConfigName() { - return this.appConfigName; + return this.appConfigName; } public void setAppConfigValue(String appConfigValue) { - this.appConfigValue = appConfigValue; + this.appConfigValue = appConfigValue; } public String getAppConfigValue() { - return this.appConfigValue; + return this.appConfigValue; } public void setAppConfigType(String appConfigType) { - this.appConfigType = appConfigType; + this.appConfigType = appConfigType; } public String getAppConfigType() { - return this.appConfigType; + return this.appConfigType; } public void setAppUuid(String appUuid) { - this.appUuid = appUuid; + this.appUuid = appUuid; } public String getAppUuid() { - return this.appUuid; + return this.appUuid; } } \ No newline at end of file diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Group.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Group.java index a8f4ba80029afe1088e15e60ff958645e16328c7..d360ebb7d720b40a065612432b7e0b1e90025fe7 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Group.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Group.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * DdkGroup * @@ -16,117 +18,119 @@ public class Group implements Serializable { /** * id 主键 */ - private Long id; + private Long id; /** * group_id 事业群组id,唯一 */ - private String groupId; + private String groupId; /** * group_name 组名字 */ - private String groupName; + private String groupName; /** * uuid 雪花算法随机UUID */ - private String uuid; + private String uuid; /** * desc 功能描述 */ - private String desc; + private String desc; /** * create_time 创建时间 */ - private Date createTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; /** * update_time 更新时间 */ - private Date updateTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; /** * is_delete 状态 1无效,0有效 */ - private Integer isDelete; + private Integer isDelete; /** * env 环境 */ - private String env; + private String env; public void setId(Long id) { - this.id = id; + this.id = id; } public Long getId() { - return this.id; + return this.id; } public void setGroupId(String groupId) { - this.groupId = groupId; + this.groupId = groupId; } public String getGroupId() { - return this.groupId; + return this.groupId; } public void setGroupName(String groupName) { - this.groupName = groupName; + this.groupName = groupName; } public String getGroupName() { - return this.groupName; + return this.groupName; } public void setUuid(String uuid) { - this.uuid = uuid; + this.uuid = uuid; } public String getUuid() { - return this.uuid; + return this.uuid; } public void setDesc(String desc) { - this.desc = desc; + this.desc = desc; } public String getDesc() { - return this.desc; + return this.desc; } public void setCreateTime(Date createTime) { - this.createTime = createTime; + this.createTime = createTime; } public Date getCreateTime() { - return this.createTime; + return this.createTime; } public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + this.updateTime = updateTime; } public Date getUpdateTime() { - return this.updateTime; + return this.updateTime; } public void setIsDelete(Integer isDelete) { - this.isDelete = isDelete; + this.isDelete = isDelete; } public Integer getIsDelete() { - return this.isDelete; + return this.isDelete; } public void setEnv(String env) { - this.env = env; + this.env = env; } public String getEnv() { - return this.env; + return this.env; } } \ No newline at end of file diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/LogOperate.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/LogOperate.java new file mode 100644 index 0000000000000000000000000000000000000000..5acf9e3305c5da06091d16d57b41c6faf03be973 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/LogOperate.java @@ -0,0 +1,97 @@ +package cn.icanci.loopstack.ddk.web.model; + +import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/11 13:39 + */ +public class LogOperate implements Serializable { + private static final long serialVersionUID = 2251407161280701653L; + /** 编号 */ + private String id; + + /** 操作模块 */ + private String module; + + /** 对象编号 */ + private String targetId; + + /** + * 操作类型 + * + * @see LogOperatorTypeEnum#name() + */ + private String operatorType; + + /** 操作内容 */ + private String content; + + /** 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 环境 */ + private String env; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getOperatorType() { + return operatorType; + } + + public void setOperatorType(String operatorType) { + this.operatorType = operatorType; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getEnv() { + return env; + } + + public void setEnv(String env) { + this.env = env; + } +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/NoticeConfig.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/NoticeConfig.java index 37dba7f075af3b537cd0ec0b93f09cfe23137f9c..86aad50a55870e1c5e99914527db7dcbbfb81218 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/NoticeConfig.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/NoticeConfig.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * DdkNoticeConfig * @@ -16,143 +18,145 @@ public class NoticeConfig implements Serializable { /** * id 主键 */ - private Long id; + private Long id; /** * uuid 雪花算法随机UUID */ - private String uuid; + private String uuid; /** * desc 功能描述 */ - private String desc; + private String desc; /** * create_time 创建时间 */ - private Date createTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; /** * update_time 更新时间 */ - private Date updateTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; /** * is_delete 状态 1无效,0有效 */ - private Integer isDelete; + private Integer isDelete; /** * env 环境 */ - private String env; + private String env; /** * notice_config_name 通知配置名称 */ - private String noticeConfigName; + private String noticeConfigName; /** * notice_config_resource 通知配置资源 */ - private String noticeConfigResource; + private String noticeConfigResource; /** * notice_value 测试配置值,因为可能通过配置值进行特殊处理 */ - private String noticeValue; + private String noticeValue; /** * app_uuid 项目关联uuid,多个则会有多条记录 */ - private String appUuid; + private String appUuid; public void setId(Long id) { - this.id = id; + this.id = id; } public Long getId() { - return this.id; + return this.id; } public void setUuid(String uuid) { - this.uuid = uuid; + this.uuid = uuid; } public String getUuid() { - return this.uuid; + return this.uuid; } public void setDesc(String desc) { - this.desc = desc; + this.desc = desc; } public String getDesc() { - return this.desc; + return this.desc; } public void setCreateTime(Date createTime) { - this.createTime = createTime; + this.createTime = createTime; } public Date getCreateTime() { - return this.createTime; + return this.createTime; } public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + this.updateTime = updateTime; } public Date getUpdateTime() { - return this.updateTime; + return this.updateTime; } public void setIsDelete(Integer isDelete) { - this.isDelete = isDelete; + this.isDelete = isDelete; } public Integer getIsDelete() { - return this.isDelete; + return this.isDelete; } public void setEnv(String env) { - this.env = env; + this.env = env; } public String getEnv() { - return this.env; + return this.env; } public void setNoticeConfigName(String noticeConfigName) { - this.noticeConfigName = noticeConfigName; + this.noticeConfigName = noticeConfigName; } public String getNoticeConfigName() { - return this.noticeConfigName; + return this.noticeConfigName; } public void setNoticeConfigResource(String noticeConfigResource) { - this.noticeConfigResource = noticeConfigResource; + this.noticeConfigResource = noticeConfigResource; } public String getNoticeConfigResource() { - return this.noticeConfigResource; + return this.noticeConfigResource; } public void setNoticeValue(String noticeValue) { - this.noticeValue = noticeValue; + this.noticeValue = noticeValue; } public String getNoticeValue() { - return this.noticeValue; + return this.noticeValue; } public void setAppUuid(String appUuid) { - this.appUuid = appUuid; + this.appUuid = appUuid; } public String getAppUuid() { - return this.appUuid; + return this.appUuid; } } \ No newline at end of file diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Register.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Register.java index cccf18f1bfbf307f1d2dba1959b75b2e0e41fc40..32deba0e7e201c4a27d6b936f6eaed5179227b48 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Register.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Register.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * DdkRegister * @@ -16,156 +18,158 @@ public class Register implements Serializable { /** * id 主键 */ - private Long id; + private Long id; /** * uuid 雪花算法随机UUID */ - private String uuid; + private String uuid; /** * desc 功能描述 */ - private String desc; + private String desc; /** * create_time 创建时间 */ - private Date createTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; /** * update_time 更新时间 */ - private Date updateTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; /** * is_delete 状态 1无效,0有效 */ - private Integer isDelete; + private Integer isDelete; /** * env 环境 */ - private String env; + private String env; /** * client_address client 服务ip地址 */ - private String clientAddress; + private String clientAddress; /** * client_port client 服务端口 */ - private Integer clientPort; + private Integer clientPort; /** * app_id client 服务服务id */ - private String appId; + private String appId; /** * register_time 服务注册时间 */ - private Date registerTime; + private Date registerTime; /** * last_update_time 上次注册更新时间 */ - private Date lastUpdateTime; + private Date lastUpdateTime; public void setId(Long id) { - this.id = id; + this.id = id; } public Long getId() { - return this.id; + return this.id; } public void setUuid(String uuid) { - this.uuid = uuid; + this.uuid = uuid; } public String getUuid() { - return this.uuid; + return this.uuid; } public void setDesc(String desc) { - this.desc = desc; + this.desc = desc; } public String getDesc() { - return this.desc; + return this.desc; } public void setCreateTime(Date createTime) { - this.createTime = createTime; + this.createTime = createTime; } public Date getCreateTime() { - return this.createTime; + return this.createTime; } public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + this.updateTime = updateTime; } public Date getUpdateTime() { - return this.updateTime; + return this.updateTime; } public void setIsDelete(Integer isDelete) { - this.isDelete = isDelete; + this.isDelete = isDelete; } public Integer getIsDelete() { - return this.isDelete; + return this.isDelete; } public void setEnv(String env) { - this.env = env; + this.env = env; } public String getEnv() { - return this.env; + return this.env; } public void setClientAddress(String clientAddress) { - this.clientAddress = clientAddress; + this.clientAddress = clientAddress; } public String getClientAddress() { - return this.clientAddress; + return this.clientAddress; } public void setClientPort(Integer clientPort) { - this.clientPort = clientPort; + this.clientPort = clientPort; } public Integer getClientPort() { - return this.clientPort; + return this.clientPort; } public void setAppId(String appId) { - this.appId = appId; + this.appId = appId; } public String getAppId() { - return this.appId; + return this.appId; } public void setRegisterTime(Date registerTime) { - this.registerTime = registerTime; + this.registerTime = registerTime; } public Date getRegisterTime() { - return this.registerTime; + return this.registerTime; } public void setLastUpdateTime(Date lastUpdateTime) { - this.lastUpdateTime = lastUpdateTime; + this.lastUpdateTime = lastUpdateTime; } public Date getLastUpdateTime() { - return this.lastUpdateTime; + return this.lastUpdateTime; } } \ No newline at end of file diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Team.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Team.java index df0dcdf0b5e7e7ec124187a75bcebc795304d9c6..575bf153541316c4bc9499c070a91aa4d5440deb 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Team.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/model/Team.java @@ -3,6 +3,8 @@ package cn.icanci.loopstack.ddk.web.model; import java.io.Serializable; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * DdkTeam * @@ -31,11 +33,13 @@ public class Team implements Serializable { /** * create_time 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * update_time 更新时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** diff --git a/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/LogOperatorTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/LogOperatorTypeEnum.java index ab6387bc1e82b0de88e9f66a96d74d9bb2e3ebe9..3a4b2de7e84fa1940b5ee73c904515f7bd89aa41 100644 --- a/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/LogOperatorTypeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/LogOperatorTypeEnum.java @@ -1,8 +1,52 @@ package cn.icanci.loopstack.ddk.common.enums; /** + * 日志操作类型 + * * @author icanci - * @since 1.0 Created in 2022/12/11 17:37 + * @since 1.0 Created in 2022/11/11 16:15 */ public enum LogOperatorTypeEnum { + /** + * CREATE + */ + CREATE("CREATE", "创建"), + /** + * UPDATE + */ + UPDATE("UPDATE", "更新"), + /** + * 删除 + */ + DELETE("DELETE", "删除"), + /** + * 发布 + */ + PUBLISH("PUBLISH", "发布"), + + ; + + LogOperatorTypeEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + private String code; + private String desc; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } } diff --git a/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/ModuleTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/ModuleTypeEnum.java index 11581fa2f54e9c4140e870015dfb8aa60022aad9..9ae28438ba27a4aac3e43c6a098ee94865996e25 100644 --- a/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/ModuleTypeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/ddk/common/enums/ModuleTypeEnum.java @@ -5,5 +5,34 @@ package cn.icanci.loopstack.ddk.common.enums; * @since 1.0 Created in 2022/12/11 17:37 */ public enum ModuleTypeEnum { + /** + * DDK_GROUP + */ + DDK_GROUP("DDK_GROUP", "事业群"), + ; + + ModuleTypeEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + private String code; + private String desc; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } } diff --git a/common/src/main/java/cn/icanci/loopstack/ddk/common/model/Paginator.java b/common/src/main/java/cn/icanci/loopstack/ddk/common/model/Paginator.java index 545632a592d8342ab68b6c7dd70e141534ad0ac4..c41aca4dc7223f149d108aff6040a21ee797b824 100644 --- a/common/src/main/java/cn/icanci/loopstack/ddk/common/model/Paginator.java +++ b/common/src/main/java/cn/icanci/loopstack/ddk/common/model/Paginator.java @@ -49,7 +49,7 @@ public class Paginator implements Serializable { * @param pageSize 每页条目数 * @param currentPage 当前页码 */ - protected Paginator(int totalCount, int pageSize, int currentPage) { + public Paginator(int totalCount, int pageSize, int currentPage) { this.totalCount = totalCount; this.pageSize = pageSize; this.currentPage = currentPage; diff --git a/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/BaseVO.java b/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/BaseVO.java index 7ecc16e2b8926b8569ce99df1d9d369cffd81037..772370d68349fee5eccbc8c42cf6d7ca0a45930a 100644 --- a/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/BaseVO.java +++ b/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/BaseVO.java @@ -15,39 +15,39 @@ public class BaseVO { /** * 数据库id */ - private Long id; + private Long id; /** * 雪花算法随机UUID */ - private String uuid; + private String uuid; /** * 功能描述 */ - private String desc; + private String desc; /** * 创建时间 */ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; + private Date createTime; /** * 更新时间 */ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - private Date updateTime; + private Date updateTime; /** * 状态 0有效,1无效 */ - private int isDelete; + private Integer isDelete; /** * 环境 */ - private String env; + private String env; public Long getId() { return id; @@ -89,11 +89,11 @@ public class BaseVO { this.updateTime = updateTime; } - public int getIsDelete() { + public Integer getIsDelete() { return isDelete; } - public void setIsDelete(int isDelete) { + public void setIsDelete(Integer isDelete) { this.isDelete = isDelete; } diff --git a/common/src/main/java/cn/icanci/loopstack/ddk/common/utils/PaginatorUtils.java b/common/src/main/java/cn/icanci/loopstack/ddk/common/utils/PaginatorUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..7f7ed14249a0a83c5ae598fc355660d2d8cf0656 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/ddk/common/utils/PaginatorUtils.java @@ -0,0 +1,37 @@ +package cn.icanci.loopstack.ddk.common.utils; + +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.Paginator; + +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.collections4.CollectionUtils; + +import com.google.common.collect.Lists; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 18:30 + */ +public class PaginatorUtils { + private PaginatorUtils() { + } + + /** + * 返回PageList + * + * @param ret 数据集合 + * @param currentPage 当前页 + * @param pageSize 当前页大小 + * @param T + * @return 返回PageList + */ + public static PageList formatPaginator(List ret, int currentPage, int pageSize) { + if (CollectionUtils.isEmpty(ret)) { + return new PageList(Lists.newArrayList(), new Paginator(0, pageSize, currentPage)); + } + List reallyRet = ret.stream().skip((long) currentPage * pageSize).limit(pageSize).collect(Collectors.toList()); + return new PageList(reallyRet, new Paginator(ret.size(), pageSize, currentPage)); + } +}