代码拉取完成,页面将自动刷新
DDK-动态字典键,接入方只需要接入字典键SDK,即可以完成相关的通知更新功能等
字段名称 | 类型 | 备注 |
---|---|---|
id | bigint(20) | mysql 自增主键 |
uuid | varchar(40) | 雪花算法随机UUID |
desc | varchar(80) | 功能描述 |
create_time | datetime | 创建时间 |
update_time | datetime | 更新时间 |
is_delete | int(11) | 状态 状态 1删除,0未删除 |
env | varchar(16) | 环境 |
字段名称 | 类型 | 备注 |
---|---|---|
group_id | varchar(40) | 事业群组id,唯一 |
group_name | varchar(80) | 组名字 |
字段名称 | 类型 | 备注 |
---|---|---|
team_id | varchar(40) | 项目组id,唯一 |
team_name | varchar(80) | 项目组名字 |
group_uuid | varchar(40) | 事业群关联uuid |
字段名称 | 类型 | 备注 |
---|---|---|
app_id | varchar(40) | 项目id,全局唯一 |
app_name | varchar(80) | 项目名字 |
team_uuid | varchar(40) | 项目组关联uuid |
字段名称 | 类型 | 备注 |
---|---|---|
app_config_name | varchar(40) | 配置名称 |
app_config_value | varchar(200) | 配置值, |
app_config_type | varchar(16) | 配置类型 |
app_uuid | varchar(40) | 项目关联uuid |
字段名称 | 类型 | 备注 |
---|---|---|
notice_config_name | varchar(40) | 通知配置名称 |
notice_config_resource | varchar(200) | 通知配置资源 |
notice_value | varchar(200) | 测试配置值;因为可能通过配置值进行特殊处理 |
app_uuid | varchar(40) | 项目关联uuid,多个数据库记录多条记录 |
public class NoticeConfigServiceImpl extends BaseService<NoticeConfigVO> implements NoticeConfigService {
@Override public void save(List<NoticeConfigVO> newNoticeConfigList, List<String> appUuid) {
// 针对集合的需要特殊处理,通过唯一资源进行数据的更新删除插入处理。不根据数据库id
if (CollectionUtils.isEmpty(newNoticeConfigList)) {
return;
}
NoticeConfigVO noticeConfig = newNoticeConfigList.iterator().next();
String noticeConfigResource = noticeConfig.getNoticeConfigResource();
List<NoticeConfigVO> oldNoticeConfigList = noticeConfigMapping.dos2vos(noticeConfigMapper.queryByNoticeConfigResource(noticeConfigResource, getEnv()));
Map<String, NoticeConfigVO> newMap = newNoticeConfigList.stream().collect(Collectors.toMap(NoticeConfigVO::getAppUuid, x -> x));
Map<String, NoticeConfigVO> oldMap = oldNoticeConfigList.stream().collect(Collectors.toMap(NoticeConfigVO::getAppUuid, x -> x));
// 全部 appUuid
Set<String> uuids = Sets.newHashSet(appUuid);
uuids.addAll(oldNoticeConfigList.stream().map(NoticeConfigVO::getAppUuid).collect(Collectors.toList()));
final ExceptionHolder holder = new ExceptionHolder();
// 使用声明式事务
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override protected void doInTransactionWithoutResult(TransactionStatus status) {
try {
for (String uuid : uuids) {
// 数据库有,但是新的vo没有,删除
if (oldMap.get(uuid) != null && newMap.get(uuid) == null) {
noticeConfigMapper.delete(oldMap.get(uuid).getId());
}
// 数据库有,新的vo也有,更新
if (oldMap.get(uuid) != null && newMap.get(uuid) != null) {
NoticeConfigVO noticeConfigVO = newMap.get(uuid);
beforeUpdate(noticeConfigVO);
noticeConfigMapper.update(noticeConfigMapping.vo2do(noticeConfigVO));
}
// 数据库没有,则插入
if (oldMap.get(uuid) == null && newMap.get(uuid) != null) {
NoticeConfigVO noticeConfigVO = newMap.get(uuid);
beforeInsert(noticeConfigVO);
noticeConfigMapper.insert(noticeConfigMapping.vo2do(noticeConfigVO));
}
// 数据库没有,并且新的vo也没有 无需操作 这种情况不可能出现~~~
// no op
}
} catch (Exception e) {
logger.error("[NoticeConfigService][save] 保存异常,事务回滚");
status.setRollbackOnly();
holder.setException(e);
}
}
});
if (holder.getException() != null) {
throw new RuntimeException(holder.getException());
}
}
}
字段名称 | 类型 | 备注 |
---|---|---|
id | bigint(20) | 主键 |
module | varchar(40) | 操作模块 |
target_id | varchar(40) | 对象编号,取uuid |
operator_type | varchar(40) | 操作类型 |
content | text | 操作数据 |
create_time | datetime | 创建时间 |
env | varchar(16) | 操作环境 |
注册表
设计如下字段名称 | 类型 | 备注 |
---|---|---|
id | bigint(20) | mysql 自增主键 |
uuid | varchar(40) | 雪花算法随机UUID |
desc | varchar(80) | 功能描述 |
create_time | datetime | 创建时间 |
update_time | datetime | 更新时间 |
is_delete | int(11) | 状态 1有效,0无效 |
env | String | 环境 |
client_address | varchar(40) | SDK 服务ip地址 |
client_port | int(11) | SDK 服务端口 |
app_id | varchar(40) | SDK 服务服务名字 |
register_time | datetime | 服务注册时间 |
last_update_time | datetime | 上次注册更新时间 |
/*
Navicat Premium Data Transfer
Source Server : local
Source Server Type : MySQL
Source Server Version : 50731
Source Host : localhost:3306
Source Schema : ddk
Target Server Type : MySQL
Target Server Version : 50731
File Encoding : 65001
Date: 14/01/2023 17:29:16
*/
SET NAMES utf8mb4;
SET
FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for ddk_app
-- ----------------------------
DROP TABLE IF EXISTS `ddk_app`;
CREATE TABLE `ddk_app`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '雪花算法随机UUID',
`desc` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '功能描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`is_delete` int(11) NOT NULL COMMENT '状态 1无效,0有效',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '环境',
`app_id` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '项目id,全局唯一',
`app_name` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '项目名字',
`team_uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '项目组关联uuid',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ----------------------------
-- Table structure for ddk_app_config
-- ----------------------------
DROP TABLE IF EXISTS `ddk_app_config`;
CREATE TABLE `ddk_app_config`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '雪花算法随机UUID',
`desc` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '功能描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`is_delete` int(11) NOT NULL COMMENT '状态 1无效,0有效',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '环境',
`app_config_name` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '配置名称',
`app_config_value` varchar(200) COLLATE utf8mb4_bin NOT NULL COMMENT '配置值,',
`app_config_type` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '配置类型',
`app_uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '项目关联uuid',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ----------------------------
-- Table structure for ddk_group
-- ----------------------------
DROP TABLE IF EXISTS `ddk_group`;
CREATE TABLE `ddk_group`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`group_id` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '事业群组id,唯一',
`group_name` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '组名字',
`uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '雪花算法随机UUID',
`desc` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '功能描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`is_delete` int(11) NOT NULL COMMENT '状态 1无效,0有效',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '环境',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ----------------------------
-- Table structure for ddk_lock
-- ----------------------------
DROP TABLE IF EXISTS `ddk_lock`;
CREATE TABLE `ddk_lock`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`resource` varchar(200) NOT NULL COMMENT '锁定的资源',
`desc` varchar(200) NOT NULL DEFAULT '' COMMENT '描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`env` varchar(16) NOT NULL COMMENT '环境',
PRIMARY KEY (`id`),
UNIQUE KEY `uiq_idx_resource` (`resource`)
) ENGINE=InnoDB AUTO_INCREMENT=667 DEFAULT CHARSET=utf8mb4 COMMENT='数据库分布式锁表';
-- ----------------------------
-- Table structure for ddk_log
-- ----------------------------
DROP TABLE IF EXISTS `ddk_log`;
CREATE TABLE `ddk_log`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`module` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '模块',
`target_id` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '对象编号,取uuid',
`operator_type` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '操作类型',
`content` text COLLATE utf8mb4_bin NOT NULL COMMENT '操作数据',
`create_time` datetime NOT NULL COMMENT '创建时间',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '操作环境',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ----------------------------
-- Table structure for ddk_notice_config
-- ----------------------------
DROP TABLE IF EXISTS `ddk_notice_config`;
CREATE TABLE `ddk_notice_config`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '雪花算法随机UUID',
`desc` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '功能描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`is_delete` int(11) NOT NULL COMMENT '状态 1无效,0有效',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '环境',
`notice_config_name` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '通知配置名称',
`notice_config_resource` varchar(200) COLLATE utf8mb4_bin NOT NULL COMMENT '通知配置资源',
`notice_value` varchar(200) COLLATE utf8mb4_bin NOT NULL COMMENT '测试配置值,因为可能通过配置值进行特殊处理',
`app_uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '项目关联uuid,多个则会有多条记录',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ----------------------------
-- Table structure for ddk_register
-- ----------------------------
DROP TABLE IF EXISTS `ddk_register`;
CREATE TABLE `ddk_register`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '雪花算法随机UUID',
`desc` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '功能描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`is_delete` int(11) NOT NULL COMMENT '状态 1无效,0有效',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '环境',
`client_address` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT 'client 服务ip地址',
`client_port` int(11) NOT NULL COMMENT 'client 服务端口',
`app_id` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT 'client 服务服务id',
`register_time` datetime NOT NULL COMMENT '服务注册时间',
`last_update_time` datetime NOT NULL COMMENT '上次注册更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ----------------------------
-- Table structure for ddk_team
-- ----------------------------
DROP TABLE IF EXISTS `ddk_team`;
CREATE TABLE `ddk_team`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '雪花算法随机UUID',
`desc` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '功能描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`is_delete` int(11) NOT NULL COMMENT '状态 1无效,0有效',
`env` varchar(16) COLLATE utf8mb4_bin NOT NULL COMMENT '环境',
`team_id` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '项目组id,唯一',
`team_name` varchar(80) COLLATE utf8mb4_bin NOT NULL COMMENT '项目组名字',
`group_uuid` varchar(40) COLLATE utf8mb4_bin NOT NULL COMMENT '事业群关联uuid',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
SET
FOREIGN_KEY_CHECKS = 1;
字段名称 | 类型 | 备注 |
---|---|---|
id | bigint(20) | mysql 自增主键 |
resource | varchar(40) | 雪花算法随机UUID |
desc | varchar(200) | 功能描述 |
env | varchar(200) | 环境 |
create_time | datetime | 资源锁定时间 |
@Service public class LockServiceImpl implements LockService {
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(LockServiceImpl.class);
@Resource private LockMapper lockMapper;
private static final int TIMEOUT = 3000;
@Override public Long acquire(String key) {
// 查询
String env = EnvUtils.getEnv();
LockDO oldLock = lockMapper.queryByResource(key, env);
if (oldLock != null) {
if (System.currentTimeMillis() - oldLock.getCreateTime().getTime() > TIMEOUT) {
release(key, oldLock.getId());
}
return null;
}
try {
LockDO lockDO = new LockDO();
lockDO.setResource(key);
lockDO.setDesc(key);
lockDO.setEnv(env);
lockDO.setCreateTime(new Date());
lockMapper.insert(lockDO);
return lockDO.getId();
} catch (DuplicateKeyException ex) {
LOGGER.warn("[LockService][acquire][DuplicateKeyException] lock acquire error:{}", ThrowableUtil.stackTraceToString(ex));
} catch (Exception ex) {
LOGGER.warn("[LockService][acquire][Exception] lock acquire error:{}", ThrowableUtil.stackTraceToString(ex));
}
return null;
}
@Override public boolean release(String key, Long lockId) {
return lockMapper.delete(lockId, key, EnvUtils.getEnv()) > 0;
}
}
admin/admin-views/pom.xml
中的前后端分离注释部分
打开编译即可,命令(mvn clean package install)
admin/admin-views/resources/vueboot
下启动前端:npm run dev
前后端都启动之后,访问:http://localhost:9528
admin/admin-dal/config/gen.properties
相关的参数参见注释
<plugin>
<groupId>cn.icanci.loopstack</groupId>
<artifactId>lsi-dalgen-maven-plugin</artifactId>
<version>0.0.0.1-SNAPSHOT</version>
<configuration>
<configFiles>
<!-- configFile 声明配置文件地址 可以选择多个配置文件,可以生成多个数据源的DAL信息 -->
<configFile>config/gen.properties</configFile>
</configFiles>
</configuration>
</plugin>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。