From 656d508b35128525e6e490bb234e5be326962fa0 Mon Sep 17 00:00:00 2001 From: shanjianq <49084314+shanjianq@users.noreply.github.com> Date: Sun, 9 Oct 2022 14:32:26 +0800 Subject: [PATCH] finish thread pool config change verify (#776) * init code for verify module * init code for verify module * create application for config modify in thread pool manage * finish rejectModification * finish rejectModification * add todo * finish threadPoolManage accept * finish threadPoolManage accept * finish threadPoolManage config verify * formatting code * optimize ConfigModifyVerifyService * finish config modification verify * finish config modification verify * finish webConfig modification verify * finish webConfig modification verify * finish webConfig modification verify * finish threadPoolInstanceConfig modification verify * finish adapterThreadPoolConfig modification verify * finish adapterThreadPoolConfig modification verify * finish adapterThreadPoolConfig modification verify * optmize ConfigVerifyController * optmize ConfigVerifyController * optmize ConfigVerifyController * fix ConfigModifyVerifyReqDTO * fix bug * optimize verifyController * optimize verifyController * fix request param * finish modify application query page * finish modify application query page * finish modify application query detail * finish modify application query detail * finish thread pool config modification verify module * optimize accept modification logic * formatting code * fix bug * formatting code * formatting code * update sql file * add annotation * add annotation and formatting code * add annotation and formatting code * remove useless code * fix sql Co-authored-by: airoger --- .../constant/ConfigModifyTypeConstants.java | 41 ++++++ .../cn/hippo4j/common/constant/Constants.java | 2 + .../cn/hippo4j/common/enums/VerifyEnum.java | 58 ++++++++ hippo4j-config/pom.xml | 7 + .../config/controller/ConfigController.java | 20 ++- .../config/mapper/HisConfigVerifyMapper.java | 29 ++++ .../config/model/HisConfigVerifyInfo.java | 101 +++++++++++++ .../biz/adapter/ThreadPoolAdapterReqDTO.java | 5 + .../ConfigModificationQueryRespDTO.java | 97 ++++++++++++ .../threadpool/ConfigModifySaveReqDTO.java | 124 ++++++++++++++++ .../threadpool/ConfigModifyVerifyReqDTO.java | 138 ++++++++++++++++++ .../biz/ConfigModificationQueryService.java | 45 ++++++ .../biz/ConfigModificationVerifyService.java | 55 +++++++ ...stractConfigModificationVerifyService.java | 114 +++++++++++++++ ...olConfigModificationVerifyServiceImpl.java | 52 +++++++ .../ConfigModificationQueryServiceImpl.java | 62 ++++++++ ...ceConfigModificationVerifyServiceImpl.java | 53 +++++++ ...geConfigModificationVerifyServiceImpl.java | 53 +++++++ .../biz/impl/ThreadPoolServiceImpl.java | 31 ++-- ...olConfigModificationVerifyServiceImpl.java | 52 +++++++ ...ConfigModificationVerifyServiceChoose.java | 57 ++++++++ .../controller/ConfigVerifyController.java | 64 ++++++++ .../ThreadPoolAdapterController.java | 33 +++-- .../controller/ThreadPoolController.java | 45 +++--- .../console/model/WebThreadPoolReqDTO.java | 20 +++ .../console/model/WebThreadPoolRespDTO.java | 10 ++ hippo4j-server/conf/hippo4j_manager.sql | 23 +++ .../conf/sql-upgrade/1.4.2_upgrade.sql | 20 +++ .../sql-script/h2/hippo4j_manager.sql | 18 +++ .../sql-script/mysql/hippo4j_manager.sql | 22 +++ 30 files changed, 1413 insertions(+), 38 deletions(-) create mode 100644 hippo4j-common/src/main/java/cn/hippo4j/common/constant/ConfigModifyTypeConstants.java create mode 100644 hippo4j-common/src/main/java/cn/hippo4j/common/enums/VerifyEnum.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/mapper/HisConfigVerifyMapper.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/model/HisConfigVerifyInfo.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModificationQueryRespDTO.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifySaveReqDTO.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifyVerifyReqDTO.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationQueryService.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationVerifyService.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AbstractConfigModificationVerifyService.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AdapterThreadPoolConfigModificationVerifyServiceImpl.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigModificationQueryServiceImpl.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolInstanceConfigModificationVerifyServiceImpl.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolManageConfigModificationVerifyServiceImpl.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/WebThreadPoolConfigModificationVerifyServiceImpl.java create mode 100644 hippo4j-config/src/main/java/cn/hippo4j/config/verify/ConfigModificationVerifyServiceChoose.java create mode 100644 hippo4j-console/src/main/java/cn/hippo4j/console/controller/ConfigVerifyController.java diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/constant/ConfigModifyTypeConstants.java b/hippo4j-common/src/main/java/cn/hippo4j/common/constant/ConfigModifyTypeConstants.java new file mode 100644 index 00000000..84a8bf61 --- /dev/null +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/constant/ConfigModifyTypeConstants.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.common.constant; + +public class ConfigModifyTypeConstants { + + /** + * Thread pool manager change + */ + public static final int THREAD_POOL_MANAGER = 1; + + /** + * Thread pool instance change + */ + public static final int THREAD_POOL_INSTANCE = 2; + + /** + * Web thread pool change + */ + public static final int WEB_THREAD_POOL = 3; + + /** + * Adapter thread pool change + */ + public static final int ADAPTER_THREAD_POOL = 4; +} diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/constant/Constants.java b/hippo4j-common/src/main/java/cn/hippo4j/common/constant/Constants.java index fb80954e..12e9ef5a 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/constant/Constants.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/constant/Constants.java @@ -62,6 +62,8 @@ public class Constants { public static final String LISTENER_PATH = CONFIG_CONTROLLER_PATH + "/listener"; + public static final String VERIFY_PATH = CONFIG_CONTROLLER_PATH + "/verify"; + public static final String MONITOR_PATH = BASE_PATH + "/monitor"; public static final String REGISTER_ADAPTER_BASE_PATH = BASE_PATH + "/adapter/thread-pool"; diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/enums/VerifyEnum.java b/hippo4j-common/src/main/java/cn/hippo4j/common/enums/VerifyEnum.java new file mode 100644 index 00000000..d8f79afe --- /dev/null +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/enums/VerifyEnum.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.common.enums; + +public enum VerifyEnum { + + /** + * unVerify + */ + TO_VERIFY(0, "待审核"), + + /** + * accept + */ + VERIFY_ACCEPT(1, "审核通过"), + + /** + * reject + */ + VERIFY_REJECT(2, "审核拒绝"), + + /** + * invalid + */ + VERIFY_INVALID(3, "失效"); + + private final Integer verifyStatus; + + private final String desc; + + VerifyEnum(Integer verifyStatus, String desc) { + this.verifyStatus = verifyStatus; + this.desc = desc; + } + + public String getDesc() { + return this.desc; + } + + public Integer getVerifyStatus() { + return this.verifyStatus; + } +} diff --git a/hippo4j-config/pom.xml b/hippo4j-config/pom.xml index e999ccdd..925e5f71 100644 --- a/hippo4j-config/pom.xml +++ b/hippo4j-config/pom.xml @@ -59,6 +59,12 @@ hippo4j-adapter-base + + cn.hippo4j + hippo4j-discovery + ${version} + + io.netty netty-all @@ -79,5 +85,6 @@ spring-boot-starter-test test + diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java b/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java index 25543ee8..f4c48610 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java @@ -17,17 +17,22 @@ package cn.hippo4j.config.controller; +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; import cn.hippo4j.common.constant.Constants; import cn.hippo4j.common.model.register.DynamicThreadPoolRegisterWrapper; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.StringUtil; +import cn.hippo4j.common.toolkit.UserContext; import cn.hippo4j.common.web.base.Result; import cn.hippo4j.common.web.base.Results; import cn.hippo4j.config.model.ConfigAllInfo; import cn.hippo4j.config.model.ConfigInfoBase; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifySaveReqDTO; import cn.hippo4j.config.service.ConfigCacheService; import cn.hippo4j.config.service.ConfigServletInner; import cn.hippo4j.config.service.biz.ConfigService; import cn.hippo4j.config.toolkit.Md5ConfigUtil; +import cn.hippo4j.config.verify.ConfigModificationVerifyServiceChoose; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.springframework.util.StringUtils; @@ -50,6 +55,8 @@ public class ConfigController { private final ConfigServletInner configServletInner; + private final ConfigModificationVerifyServiceChoose configModificationVerifyServiceChoose; + @GetMapping public Result detailConfigInfo(@RequestParam("tpId") String tpId, @RequestParam("itemId") String itemId, @@ -62,7 +69,18 @@ public class ConfigController { @PostMapping public Result publishConfig(@RequestParam(value = "identify", required = false) String identify, @RequestBody ConfigAllInfo config) { - configService.insertOrUpdate(identify, true, config); + if (UserContext.getUserRole().equals("ROLE_ADMIN")) { + configService.insertOrUpdate(identify, true, config); + } else { + ConfigModifySaveReqDTO modifySaveReqDTO = BeanUtil.convert(config, ConfigModifySaveReqDTO.class); + modifySaveReqDTO.setCorePoolSize(config.getCoreSize()); + modifySaveReqDTO.setMaximumPoolSize(config.getMaxSize()); + modifySaveReqDTO.setModifyUser(UserContext.getUserName()); + modifySaveReqDTO.setModifyAll(StringUtil.isEmpty(identify) ? true : false); + modifySaveReqDTO.setIdentify(identify); + modifySaveReqDTO.setType(ConfigModifyTypeConstants.THREAD_POOL_INSTANCE); + configModificationVerifyServiceChoose.choose(modifySaveReqDTO.getType()).saveConfigModifyApplication(modifySaveReqDTO); + } return Results.success(true); } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/mapper/HisConfigVerifyMapper.java b/hippo4j-config/src/main/java/cn/hippo4j/config/mapper/HisConfigVerifyMapper.java new file mode 100644 index 00000000..c7c5b53e --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/mapper/HisConfigVerifyMapper.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.mapper; + +import cn.hippo4j.config.model.HisConfigVerifyInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * his config verify info mapper + */ +@Mapper +public interface HisConfigVerifyMapper extends BaseMapper { +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/HisConfigVerifyInfo.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/HisConfigVerifyInfo.java new file mode 100644 index 00000000..4fdab92a --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/HisConfigVerifyInfo.java @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.model; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.util.Date; + +/** + * His config verify info + */ +@Data +@TableName("his_config_verify") +public class HisConfigVerifyInfo { + + @TableId(type = IdType.AUTO) + private Long id; + + /** + * Change type + */ + private Integer type; + + /** + * Tenant id + */ + private String tenantId; + + /** + * Item id + */ + private String itemId; + + /** + * Thread pool id + */ + private String tpId; + + /** + * Thread pool mark + */ + private String mark; + + /** + * Thread pool instance identify + */ + private String identify; + + /** + * Config content + */ + private String content; + + /** + * Weather modify all thread pool instances + */ + private Boolean modifyAll = false; + + /** + * GmtCreate + */ + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + /** + * ModifyUserId + */ + private String modifyUser; + + /** + * Verify status + */ + private Integer verifyStatus; + + /** + * GmtVerify + */ + private Date gmtVerify; + + /** + * VerifyUser + */ + private String verifyUser; +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/adapter/ThreadPoolAdapterReqDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/adapter/ThreadPoolAdapterReqDTO.java index e55b4571..55514186 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/adapter/ThreadPoolAdapterReqDTO.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/adapter/ThreadPoolAdapterReqDTO.java @@ -66,4 +66,9 @@ public class ThreadPoolAdapterReqDTO { * Client address list */ private List clientAddressList; + + /** + * weather Modify all instances + */ + private Boolean modifyAll; } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModificationQueryRespDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModificationQueryRespDTO.java new file mode 100644 index 00000000..331db35e --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModificationQueryRespDTO.java @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.model.biz.threadpool; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * Config modify query resp + */ +@Data +public class ConfigModificationQueryRespDTO { + + /** + * His_config_verify id + */ + private String id; + + /** + * Config modify type + */ + private Integer type; + + /** + * Thread pool mark + */ + private String mark; + + /** + * Tenant id + */ + private String tenantId; + + /** + * Item id + */ + private String itemId; + + /** + * Thread pool id + */ + private String tpId; + + /** + * Thread pool identify + */ + private String identify; + + /** + * Weather modify all instances + */ + private Boolean modifyAll; + + /** + * Modify user + */ + private String modifyUser; + + /** + * Verify status + */ + private Integer verifyStatus; + + /** + * GmtCreate + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date gmtCreate; + + /** + * GmtVerify + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date gmtVerify; + + /** + * Verify user + */ + private String verifyUser; +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifySaveReqDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifySaveReqDTO.java new file mode 100644 index 00000000..035bd038 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifySaveReqDTO.java @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.model.biz.threadpool; + +import lombok.Data; + +import javax.validation.constraints.Pattern; + +@Data +public class ConfigModifySaveReqDTO { + + /** + * Thread pool config change type. + */ + private Integer type; + + /** + * Thread pool instance id + */ + private String identify; + + /** + * Weather modify all instances + */ + private Boolean modifyAll = false; + + /** + * Tenant Id + */ + @Pattern(regexp = "^((?!\\+).)*$", message = "租户、项目、线程池 ID 包含+号") + private String tenantId; + + /** + * Thread pool id + */ + @Pattern(regexp = "^((?!\\+).)*$", message = "租户、项目、线程池 ID 包含+号") + private String tpId; + + /** + * Item id + */ + @Pattern(regexp = "^((?!\\+).)*$", message = "租户、项目、线程池 ID 包含+号") + private String itemId; + + /** + * Thread pool mark + */ + private String mark; + + /** + * Core pool size + */ + private Integer corePoolSize; + + /** + * Maximum pool size + */ + private Integer maximumPoolSize; + + /** + * Queue type + */ + private Integer queueType; + + /** + * Capacity + */ + private Integer capacity; + + /** + * Keep alive time + */ + private Integer keepAliveTime; + + /** + * Execute time out + */ + private Long executeTimeOut; + + /** + * Is alarm + */ + private Integer isAlarm; + + /** + * Capacity alarm + */ + private Integer capacityAlarm; + + /** + * Liveness alarm + */ + private Integer livenessAlarm; + + /** + * Rejected type + */ + private Integer rejectedType; + + /** + * Allow core thread timeout + */ + private Integer allowCoreThreadTimeOut; + + /** + * ModifyUser + */ + private String modifyUser; +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifyVerifyReqDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifyVerifyReqDTO.java new file mode 100644 index 00000000..946e4764 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ConfigModifyVerifyReqDTO.java @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.model.biz.threadpool; + +import com.fasterxml.jackson.annotation.JsonAlias; +import lombok.Data; + +import java.util.List; + +/** + * Config modify verify dto + */ +@Data +public class ConfigModifyVerifyReqDTO { + + /** + * His config verify id + */ + private String id; + + /** + * Config verify type + */ + private Integer type; + + /** + * Tenant id + */ + private String tenantId; + + /** + * Item id + */ + private String itemId; + + /** + * Instance identify + */ + private String identify; + + /** + * Adapter thread pool mark + */ + private String mark; + + /** + * Adapter thread pool key + */ + private String threadPoolKey; + + /** + * Thread pool id + */ + @JsonAlias("threadPoolId") + private String tpId; + + /** + * Weather modify all instances + */ + private Boolean modifyAll; + + /** + * Weather accept config modification + */ + private Boolean accept; + + /** + * Core pool size + */ + private Integer corePoolSize; + + /** + * Maximum pool size + */ + private Integer maximumPoolSize; + + /** + * Queue type + */ + private Integer queueType; + + /** + * Capacity + */ + private Integer capacity; + + /** + * Keep alive time + */ + private Integer keepAliveTime; + + /** + * Execute time out + */ + private Long executeTimeOut; + + /** + * Rejected type + */ + private Integer rejectedType; + + /** + * Is alarm + */ + private Integer isAlarm; + + /** + * Capacity alarm + */ + private Integer capacityAlarm; + + /** + * Liveness alarm + */ + @JsonAlias("activeAlarm") + private Integer livenessAlarm; + + /** + * Allow core thread timeout + */ + private Integer allowCoreThreadTimeOut; + +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationQueryService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationQueryService.java new file mode 100644 index 00000000..2f8d3f63 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationQueryService.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz; + +import cn.hippo4j.common.model.ThreadPoolParameterInfo; +import cn.hippo4j.config.model.biz.threadpool.ConfigModificationQueryRespDTO; +import cn.hippo4j.config.model.biz.threadpool.ThreadPoolQueryReqDTO; +import com.baomidou.mybatisplus.core.metadata.IPage; + +/** + * Config modification application query service. + */ +public interface ConfigModificationQueryService { + + /** + * Query config modification application page. + * + * @param reqDTO + * @return + */ + IPage queryApplicationPage(ThreadPoolQueryReqDTO reqDTO); + + /** + * Query config modification detail by application id. + * + * @param id + * @return + */ + ThreadPoolParameterInfo queryApplicationDetail(Long id); +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationVerifyService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationVerifyService.java new file mode 100644 index 00000000..633df590 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/ConfigModificationVerifyService.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz; + +import cn.hippo4j.config.model.biz.threadpool.ConfigModifySaveReqDTO; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; + +/** + * Config modification verify service. + */ +public interface ConfigModificationVerifyService { + + /** + * Get type. + * + * @return + */ + Integer type(); + + /** + * Save config change application. + * + * @param reqDTO + */ + void saveConfigModifyApplication(ConfigModifySaveReqDTO reqDTO); + + /** + * Reject config modification. + * + * @param reqDTO + */ + void rejectModification(ConfigModifyVerifyReqDTO reqDTO); + + /** + * Accept config modification. + * + * @param reqDTO + */ + void acceptModification(ConfigModifyVerifyReqDTO reqDTO); +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AbstractConfigModificationVerifyService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AbstractConfigModificationVerifyService.java new file mode 100644 index 00000000..c60bc43b --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AbstractConfigModificationVerifyService.java @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz.impl; + +import cn.hippo4j.common.enums.VerifyEnum; +import cn.hippo4j.common.model.InstanceInfo; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.common.toolkit.ConditionUtil; +import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.common.toolkit.UserContext; +import cn.hippo4j.config.mapper.HisConfigVerifyMapper; +import cn.hippo4j.config.model.HisConfigVerifyInfo; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifySaveReqDTO; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; +import cn.hippo4j.config.service.biz.ConfigModificationVerifyService; +import cn.hippo4j.discovery.core.BaseInstanceRegistry; +import cn.hippo4j.discovery.core.Lease; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Abstract config modification verify service. + */ +public abstract class AbstractConfigModificationVerifyService implements ConfigModificationVerifyService { + + @Resource + protected HisConfigVerifyMapper hisConfigVerifyMapper; + + @Resource + private BaseInstanceRegistry baseInstanceRegistry; + + @Override + public void saveConfigModifyApplication(ConfigModifySaveReqDTO reqDTO) { + HisConfigVerifyInfo hisConfigVerifyInfo = BeanUtil.convert(reqDTO, HisConfigVerifyInfo.class); + hisConfigVerifyInfo.setContent(JSONUtil.toJSONString(reqDTO)); + hisConfigVerifyInfo.setVerifyStatus(VerifyEnum.TO_VERIFY.getVerifyStatus()); + hisConfigVerifyMapper.insert(hisConfigVerifyInfo); + } + + @Override + public void rejectModification(ConfigModifyVerifyReqDTO reqDTO) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .eq(HisConfigVerifyInfo::getId, Long.parseLong(reqDTO.getId())) + .set(HisConfigVerifyInfo::getVerifyStatus, VerifyEnum.VERIFY_REJECT.getVerifyStatus()) + .set(HisConfigVerifyInfo::getGmtVerify, new Date()) + .set(HisConfigVerifyInfo::getVerifyUser, UserContext.getUserName()); + hisConfigVerifyMapper.update(null, updateWrapper); + } + + public void acceptModification(ConfigModifyVerifyReqDTO reqDTO) { + updateThreadPoolParameter(reqDTO); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .eq(HisConfigVerifyInfo::getId, Long.parseLong(reqDTO.getId())) + .set(HisConfigVerifyInfo::getVerifyStatus, VerifyEnum.VERIFY_ACCEPT.getVerifyStatus()) + .set(HisConfigVerifyInfo::getGmtVerify, new Date()) + .set(HisConfigVerifyInfo::getVerifyUser, UserContext.getUserName()); + hisConfigVerifyMapper.update(null, updateWrapper); + Date gmtVerify = hisConfigVerifyMapper.selectById(reqDTO.getId()).getGmtVerify(); + LambdaUpdateWrapper invalidUpdateWrapper = new LambdaUpdateWrapper() + .eq(HisConfigVerifyInfo::getType, reqDTO.getType()) + .eq(reqDTO.getTenantId() != null, HisConfigVerifyInfo::getTenantId, reqDTO.getTenantId()) + .eq(reqDTO.getItemId() != null, HisConfigVerifyInfo::getItemId, reqDTO.getItemId()) + .eq(reqDTO.getTpId() != null, HisConfigVerifyInfo::getTpId, reqDTO.getTpId()) + .and(reqDTO.getIdentify() != null, wrapper -> wrapper.eq(HisConfigVerifyInfo::getIdentify, reqDTO.getIdentify()).or().eq(HisConfigVerifyInfo::getModifyAll, true)) + .lt(HisConfigVerifyInfo::getGmtVerify, gmtVerify) + .set(HisConfigVerifyInfo::getVerifyStatus, VerifyEnum.VERIFY_INVALID.getVerifyStatus()); + hisConfigVerifyMapper.update(null, invalidUpdateWrapper); + } + + /** + * Get client address. + * + * @param reqDTO + * @return + */ + protected List getClientAddress(ConfigModifyVerifyReqDTO reqDTO) { + List clientAddressList = new ArrayList<>(); + List> leases = baseInstanceRegistry.listInstance(reqDTO.getItemId()); + ConditionUtil + .condition(reqDTO.getModifyAll(), + () -> leases.forEach(lease -> clientAddressList.add(lease.getHolder().getCallBackUrl())), + () -> clientAddressList.add( + leases.stream() + .filter(lease -> lease.getHolder().getIdentify().equals(reqDTO.getIdentify())).findAny().orElseThrow(() -> new RuntimeException("该线程池实例不存在")).getHolder() + .getCallBackUrl())); + return clientAddressList; + } + + /** + * Update thread pool parameter. + * + * @param reqDTO + */ + protected abstract void updateThreadPoolParameter(ConfigModifyVerifyReqDTO reqDTO); +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AdapterThreadPoolConfigModificationVerifyServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AdapterThreadPoolConfigModificationVerifyServiceImpl.java new file mode 100644 index 00000000..6178da1f --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/AdapterThreadPoolConfigModificationVerifyServiceImpl.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz.impl; + +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; +import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +/** + * Adapter thread pool config modification verify service impl. + */ +@Slf4j +@Service +public class AdapterThreadPoolConfigModificationVerifyServiceImpl extends AbstractConfigModificationVerifyService { + + private final RestTemplate restTemplate = new RestTemplate(); + + @Override + public Integer type() { + return ConfigModifyTypeConstants.ADAPTER_THREAD_POOL; + } + + @Override + protected void updateThreadPoolParameter(ConfigModifyVerifyReqDTO reqDTO) { + for (String each : getClientAddress(reqDTO)) { + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/adapter/thread-pool/update") + .toString(); + restTemplate.postForObject(urlString, JSONUtil.toJSONString(reqDTO), Object.class); + } + } +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigModificationQueryServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigModificationQueryServiceImpl.java new file mode 100644 index 00000000..c3cbcd3d --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigModificationQueryServiceImpl.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz.impl; + +import cn.hippo4j.common.model.ThreadPoolParameterInfo; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.config.mapper.HisConfigVerifyMapper; +import cn.hippo4j.config.model.HisConfigVerifyInfo; +import cn.hippo4j.config.model.biz.threadpool.ConfigModificationQueryRespDTO; +import cn.hippo4j.config.model.biz.threadpool.ThreadPoolQueryReqDTO; +import cn.hippo4j.config.service.biz.ConfigModificationQueryService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * Config modification query service impl + */ +@Service +public class ConfigModificationQueryServiceImpl implements ConfigModificationQueryService { + + @Resource + private HisConfigVerifyMapper hisConfigVerifyMapper; + + @Override + public IPage queryApplicationPage(ThreadPoolQueryReqDTO reqDTO) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(HisConfigVerifyInfo.class) + .eq(!StringUtils.isBlank(reqDTO.getTenantId()), HisConfigVerifyInfo::getTenantId, reqDTO.getTenantId()) + .eq(!StringUtils.isBlank(reqDTO.getItemId()), HisConfigVerifyInfo::getItemId, reqDTO.getItemId()) + .orderByDesc(HisConfigVerifyInfo::getGmtCreate); + return hisConfigVerifyMapper.selectPage(reqDTO, wrapper).convert(each -> BeanUtil.convert(each, ConfigModificationQueryRespDTO.class)); + } + + @Override + public ThreadPoolParameterInfo queryApplicationDetail(Long id) { + HisConfigVerifyInfo hisConfigVerifyInfo = hisConfigVerifyMapper.selectById(id); + ThreadPoolParameterInfo poolParameterInfo = JSONUtil.parseObject(hisConfigVerifyInfo.getContent(), ThreadPoolParameterInfo.class); + poolParameterInfo.setCorePoolSize(poolParameterInfo.corePoolSizeAdapt()); + poolParameterInfo.setMaximumPoolSize(poolParameterInfo.maximumPoolSizeAdapt()); + return poolParameterInfo; + } +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolInstanceConfigModificationVerifyServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolInstanceConfigModificationVerifyServiceImpl.java new file mode 100644 index 00000000..085cc70d --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolInstanceConfigModificationVerifyServiceImpl.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz.impl; + +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.config.model.ConfigAllInfo; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; +import cn.hippo4j.config.service.biz.ConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * Thread pool instance config modification verify service impl. + */ +@Slf4j +@Service +public class ThreadPoolInstanceConfigModificationVerifyServiceImpl extends AbstractConfigModificationVerifyService { + + @Resource + private ConfigService configService; + + @Override + public Integer type() { + return ConfigModifyTypeConstants.THREAD_POOL_INSTANCE; + } + + @Override + protected void updateThreadPoolParameter(ConfigModifyVerifyReqDTO reqDTO) { + ConfigAllInfo config = BeanUtil.convert(reqDTO, ConfigAllInfo.class); + config.setCoreSize(reqDTO.getCorePoolSize()); + config.setMaxSize(reqDTO.getMaximumPoolSize()); + configService.insertOrUpdate(reqDTO.getIdentify(), true, config); + } + +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolManageConfigModificationVerifyServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolManageConfigModificationVerifyServiceImpl.java new file mode 100644 index 00000000..1b569857 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolManageConfigModificationVerifyServiceImpl.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz.impl; + +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; +import cn.hippo4j.config.model.biz.threadpool.ThreadPoolSaveOrUpdateReqDTO; +import cn.hippo4j.config.service.biz.ThreadPoolService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * Thread pool manager config modification verify service impl. + */ +@Slf4j +@Service +public class ThreadPoolManageConfigModificationVerifyServiceImpl extends AbstractConfigModificationVerifyService { + + @Resource + private ThreadPoolService threadPoolService; + + @Override + public Integer type() { + return ConfigModifyTypeConstants.THREAD_POOL_MANAGER; + } + + @Override + public void updateThreadPoolParameter(ConfigModifyVerifyReqDTO reqDTO) { + ThreadPoolSaveOrUpdateReqDTO saveOrUpdateReqDTO = BeanUtil.convert(reqDTO, ThreadPoolSaveOrUpdateReqDTO.class); + saveOrUpdateReqDTO.setCoreSize(reqDTO.getCorePoolSize()); + saveOrUpdateReqDTO.setMaxSize(reqDTO.getMaximumPoolSize()); + threadPoolService.saveOrUpdateThreadPoolConfig(null, saveOrUpdateReqDTO); + } + +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java index 8c58e935..d64c7698 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java @@ -17,20 +17,19 @@ package cn.hippo4j.config.service.biz.impl; +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; import cn.hippo4j.common.enums.DelEnum; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.toolkit.UserContext; import cn.hippo4j.config.mapper.ConfigInfoMapper; import cn.hippo4j.config.model.ConfigAllInfo; import cn.hippo4j.config.model.LogRecordInfo; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolDelReqDTO; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolQueryReqDTO; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolRespDTO; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolSaveOrUpdateReqDTO; +import cn.hippo4j.config.model.biz.threadpool.*; import cn.hippo4j.config.service.biz.ConfigService; import cn.hippo4j.config.service.biz.OperationLogService; import cn.hippo4j.config.service.biz.ThreadPoolService; -import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.config.verify.ConfigModificationVerifyServiceChoose; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -55,6 +54,8 @@ public class ThreadPoolServiceImpl implements ThreadPoolService { private final OperationLogService operationLogService; + private final ConfigModificationVerifyServiceChoose configModificationVerifyServiceChoose; + @Override public IPage queryThreadPoolPage(ThreadPoolQueryReqDTO reqDTO) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(ConfigAllInfo.class) @@ -82,10 +83,22 @@ public class ThreadPoolServiceImpl implements ThreadPoolService { @Override public void saveOrUpdateThreadPoolConfig(String identify, ThreadPoolSaveOrUpdateReqDTO reqDTO) { - ConfigAllInfo configAllInfo = BeanUtil.convert(reqDTO, ConfigAllInfo.class); - Long executeTimeOut = Objects.equals(configAllInfo.getExecuteTimeOut(), 0L) ? null : configAllInfo.getExecuteTimeOut(); - configAllInfo.setExecuteTimeOut(executeTimeOut); - configService.insertOrUpdate(identify, false, configAllInfo); + // TODO to optimize the Role of judgment + if (UserContext.getUserRole().equals("ROLE_ADMIN")) { + ConfigAllInfo configAllInfo = BeanUtil.convert(reqDTO, ConfigAllInfo.class); + Long executeTimeOut = Objects.equals(configAllInfo.getExecuteTimeOut(), 0L) ? null : configAllInfo.getExecuteTimeOut(); + configAllInfo.setExecuteTimeOut(executeTimeOut); + configService.insertOrUpdate(identify, false, configAllInfo); + } else { + ConfigModifySaveReqDTO modifySaveReqDTO = BeanUtil.convert(reqDTO, ConfigModifySaveReqDTO.class); + modifySaveReqDTO.setCorePoolSize(reqDTO.getCoreSize()); + modifySaveReqDTO.setMaximumPoolSize(reqDTO.getMaxSize()); + modifySaveReqDTO.setModifyUser(UserContext.getUserName()); + modifySaveReqDTO.setModifyAll(false); + modifySaveReqDTO.setType(ConfigModifyTypeConstants.THREAD_POOL_MANAGER); + configModificationVerifyServiceChoose.choose(modifySaveReqDTO.getType()).saveConfigModifyApplication(modifySaveReqDTO); + } + } @Override diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/WebThreadPoolConfigModificationVerifyServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/WebThreadPoolConfigModificationVerifyServiceImpl.java new file mode 100644 index 00000000..29712765 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/WebThreadPoolConfigModificationVerifyServiceImpl.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.service.biz.impl; + +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; +import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +/** + * Web thread pool config modification verify service impl. + */ +@Slf4j +@Service +public class WebThreadPoolConfigModificationVerifyServiceImpl extends AbstractConfigModificationVerifyService { + + private final RestTemplate restTemplate = new RestTemplate(); + + @Override + public Integer type() { + return ConfigModifyTypeConstants.WEB_THREAD_POOL; + } + + @Override + protected void updateThreadPoolParameter(ConfigModifyVerifyReqDTO reqDTO) { + for (String each : getClientAddress(reqDTO)) { + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/web/update/pool") + .toString(); + restTemplate.postForObject(urlString, JSONUtil.toJSONString(reqDTO), Object.class); + } + } +} diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/verify/ConfigModificationVerifyServiceChoose.java b/hippo4j-config/src/main/java/cn/hippo4j/config/verify/ConfigModificationVerifyServiceChoose.java new file mode 100644 index 00000000..98769559 --- /dev/null +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/verify/ConfigModificationVerifyServiceChoose.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.config.verify; + +import cn.hippo4j.common.config.ApplicationContextHolder; +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; +import cn.hippo4j.config.service.biz.ConfigModificationVerifyService; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * Config change verify service choose + */ +@Component +public class ConfigModificationVerifyServiceChoose implements CommandLineRunner { + + /** + * Storage config change verify service container. + */ + private Map configChangeVerifyServiceChooseMap = new HashMap<>(); + + /** + * Choose by type. + * + * @param type {@link ConfigModifyTypeConstants} + * @return + */ + public ConfigModificationVerifyService choose(Integer type) { + ConfigModificationVerifyService verifyService = configChangeVerifyServiceChooseMap.get(type); + return verifyService; + } + + @Override + public void run(String... args) throws Exception { + Map configChangeVerifyServiceMap = + ApplicationContextHolder.getBeansOfType(ConfigModificationVerifyService.class); + configChangeVerifyServiceMap.values().forEach(each -> configChangeVerifyServiceChooseMap.put(each.type(), each)); + } +} diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ConfigVerifyController.java b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ConfigVerifyController.java new file mode 100644 index 00000000..313af1a0 --- /dev/null +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ConfigVerifyController.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.console.controller; + +import cn.hippo4j.common.constant.Constants; +import cn.hippo4j.common.model.ThreadPoolParameterInfo; +import cn.hippo4j.common.toolkit.ConditionUtil; +import cn.hippo4j.common.web.base.Result; +import cn.hippo4j.common.web.base.Results; +import cn.hippo4j.config.model.biz.threadpool.ConfigModificationQueryRespDTO; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifyVerifyReqDTO; +import cn.hippo4j.config.model.biz.threadpool.ThreadPoolQueryReqDTO; +import cn.hippo4j.config.service.biz.ConfigModificationQueryService; +import cn.hippo4j.config.service.biz.ConfigModificationVerifyService; +import cn.hippo4j.config.verify.ConfigModificationVerifyServiceChoose; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@AllArgsConstructor +@RequestMapping(Constants.VERIFY_PATH) +public class ConfigVerifyController { + + private final ConfigModificationVerifyServiceChoose serviceChoose; + + private final ConfigModificationQueryService queryService; + + @PostMapping + public Result verifyConfigModification(@RequestBody ConfigModifyVerifyReqDTO reqDTO) { + ConfigModificationVerifyService modifyVerifyService = serviceChoose.choose(reqDTO.getType()); + ConditionUtil + .condition(reqDTO.getAccept(), + () -> modifyVerifyService.acceptModification(reqDTO), + () -> modifyVerifyService.rejectModification(reqDTO)); + return Results.success(); + } + + @PostMapping("/query/application/page") + public Result> modificationApplicationPage(@RequestBody ThreadPoolQueryReqDTO reqDTO) { + return Results.success(queryService.queryApplicationPage(reqDTO)); + } + + @GetMapping("/query/application/detail") + public Result modificationApplicationDetail(@RequestParam("id") String id) { + return Results.success(queryService.queryApplicationDetail(Long.parseLong(id))); + } + +} diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java index 8937a004..a30b6d07 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java @@ -17,12 +17,17 @@ package cn.hippo4j.console.controller; +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.common.toolkit.UserContext; import cn.hippo4j.common.web.base.Result; import cn.hippo4j.common.web.base.Results; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterReqDTO; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterRespDTO; +import cn.hippo4j.config.model.biz.threadpool.ConfigModifySaveReqDTO; import cn.hippo4j.config.service.ThreadPoolAdapterService; +import cn.hippo4j.config.verify.ConfigModificationVerifyServiceChoose; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -30,11 +35,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; -import java.util.HashMap; import java.util.List; import java.util.Set; -import static cn.hippo4j.common.constant.Constants.HTTP_EXECUTE_TIMEOUT; import static cn.hippo4j.common.constant.Constants.REGISTER_ADAPTER_BASE_PATH; /** @@ -46,6 +49,8 @@ public class ThreadPoolAdapterController { private final ThreadPoolAdapterService threadPoolAdapterService; + private final ConfigModificationVerifyServiceChoose configModificationVerifyServiceChoose; + private final RestTemplate restTemplate = new RestTemplate(); @GetMapping(REGISTER_ADAPTER_BASE_PATH + "/query") @@ -62,13 +67,23 @@ public class ThreadPoolAdapterController { @PostMapping(REGISTER_ADAPTER_BASE_PATH + "/update") public Result updateAdapterThreadPool(@RequestBody ThreadPoolAdapterReqDTO requestParameter) { - for (String each : requestParameter.getClientAddressList()) { - String urlString = new StringBuilder() - .append("http://") - .append(each) - .append("/adapter/thread-pool/update") - .toString(); - restTemplate.postForObject(urlString, JSONUtil.toJSONString(requestParameter), Object.class); + if (UserContext.getUserRole().equals("ROLE_ADMIN")) { + for (String each : requestParameter.getClientAddressList()) { + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/adapter/thread-pool/update") + .toString(); + restTemplate.postForObject(urlString, JSONUtil.toJSONString(requestParameter), Object.class); + } + } else { + ConfigModifySaveReqDTO modifySaveReqDTO = BeanUtil.convert(requestParameter, ConfigModifySaveReqDTO.class); + modifySaveReqDTO.setModifyUser(UserContext.getUserName()); + modifySaveReqDTO.setTenantId(requestParameter.getTenant()); + modifySaveReqDTO.setItemId(requestParameter.getItem()); + modifySaveReqDTO.setTpId(requestParameter.getThreadPoolKey()); + modifySaveReqDTO.setType(ConfigModifyTypeConstants.ADAPTER_THREAD_POOL); + configModificationVerifyServiceChoose.choose(modifySaveReqDTO.getType()).saveConfigModifyApplication(modifySaveReqDTO); } return Results.success(); } diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java index f0da644b..09909cf8 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java @@ -17,22 +17,18 @@ package cn.hippo4j.console.controller; +import cn.hippo4j.common.constant.ConfigModifyTypeConstants; import cn.hippo4j.common.constant.Constants; import cn.hippo4j.common.model.InstanceInfo; -import cn.hippo4j.common.toolkit.CollectionUtil; -import cn.hippo4j.common.toolkit.JSONUtil; -import cn.hippo4j.common.toolkit.StringUtil; +import cn.hippo4j.common.toolkit.*; import cn.hippo4j.common.web.base.Result; import cn.hippo4j.common.web.base.Results; import cn.hippo4j.common.web.exception.ErrorCodeEnum; import cn.hippo4j.config.model.CacheItem; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolDelReqDTO; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolQueryReqDTO; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolRespDTO; -import cn.hippo4j.config.model.biz.threadpool.ThreadPoolSaveOrUpdateReqDTO; +import cn.hippo4j.config.model.biz.threadpool.*; import cn.hippo4j.config.service.ConfigCacheService; import cn.hippo4j.config.service.biz.ThreadPoolService; -import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.config.verify.ConfigModificationVerifyServiceChoose; import cn.hippo4j.console.model.ThreadPoolInstanceInfo; import cn.hippo4j.console.model.WebThreadPoolReqDTO; import cn.hippo4j.console.model.WebThreadPoolRespDTO; @@ -44,13 +40,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; -import java.util.HashMap; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static cn.hippo4j.common.constant.Constants.HTTP_EXECUTE_TIMEOUT; import static cn.hippo4j.common.toolkit.ContentUtil.getGroupKey; /** @@ -65,6 +60,8 @@ public class ThreadPoolController { private final BaseInstanceRegistry baseInstanceRegistry; + private final ConfigModificationVerifyServiceChoose configModificationVerifyServiceChoose; + private final RestTemplate restTemplate = new RestTemplate(); @PostMapping("/query/page") @@ -157,6 +154,8 @@ public class ThreadPoolController { continue; } WebThreadPoolRespDTO result = BeanUtil.convert(data, WebThreadPoolRespDTO.class); + result.setItemId(itemId); + result.setTenantId(each.getHolder().getGroupKey().split("[+]")[1]); result.setActive(each.getHolder().getActive()); result.setIdentify(each.getHolder().getIdentify()); result.setClientAddress(each.getHolder().getCallBackUrl()); @@ -191,13 +190,20 @@ public class ThreadPoolController { @PostMapping("/web/update/pool") public Result updateWebThreadPool(@RequestBody WebThreadPoolReqDTO requestParam) { - for (String each : requestParam.getClientAddressList()) { - String urlString = new StringBuilder() - .append("http://") - .append(each) - .append("/web/update/pool") - .toString(); - restTemplate.postForObject(urlString, JSONUtil.toJSONString(requestParam), Object.class); + if (UserContext.getUserRole().equals("ROLE_ADMIN")) { + for (String each : requestParam.getClientAddressList()) { + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/web/update/pool") + .toString(); + restTemplate.postForObject(urlString, JSONUtil.toJSONString(requestParam), Object.class); + } + } else { + ConfigModifySaveReqDTO modifySaveReqDTO = BeanUtil.convert(requestParam, ConfigModifySaveReqDTO.class); + modifySaveReqDTO.setModifyUser(UserContext.getUserName()); + modifySaveReqDTO.setType(ConfigModifyTypeConstants.WEB_THREAD_POOL); + configModificationVerifyServiceChoose.choose(modifySaveReqDTO.getType()).saveConfigModifyApplication(modifySaveReqDTO); } return Results.success(); } @@ -215,9 +221,9 @@ public class ThreadPoolController { String groupKey = getGroupKey(tpId, itemTenantKey); Map content = ConfigCacheService.getContent(groupKey); Map activeMap = - leases.stream().map(Lease::getHolder).filter(each -> StringUtil.isNotBlank(each.getActive())) + leases.stream().map(each -> each.getHolder()).filter(each -> StringUtil.isNotBlank(each.getActive())) .collect(Collectors.toMap(InstanceInfo::getIdentify, InstanceInfo::getActive)); - Map clientBasePathMap = leases.stream().map(Lease::getHolder) + Map clientBasePathMap = leases.stream().map(each -> each.getHolder()) .filter(each -> StringUtil.isNotBlank(each.getClientBasePath())) .collect(Collectors.toMap(InstanceInfo::getIdentify, InstanceInfo::getClientBasePath)); List returnThreadPool = new ArrayList<>(); @@ -232,4 +238,5 @@ public class ThreadPoolController { }); return Results.success(returnThreadPool); } + } diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolReqDTO.java b/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolReqDTO.java index 9576da15..47deec6a 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolReqDTO.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolReqDTO.java @@ -27,6 +27,21 @@ import java.util.List; @Data public class WebThreadPoolReqDTO { + /** + * Thread-pool id + */ + private String tenantId; + + /** + * Item id + */ + private String itemId; + + /** + * thread pool instance id + */ + private String identify; + /** * Core pool size */ @@ -42,6 +57,11 @@ public class WebThreadPoolReqDTO { */ private Integer keepAliveTime; + /** + * weather modify all instances + */ + private Boolean modifyAll; + /** * Client address list */ diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolRespDTO.java b/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolRespDTO.java index b32cb9d2..73be8520 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolRespDTO.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/model/WebThreadPoolRespDTO.java @@ -25,6 +25,16 @@ import lombok.Data; @Data public class WebThreadPoolRespDTO { + /** + * thread pool tenant id + */ + private String tenantId; + + /** + * item id + */ + private String itemId; + /** * Active */ diff --git a/hippo4j-server/conf/hippo4j_manager.sql b/hippo4j-server/conf/hippo4j_manager.sql index dd21c444..5a3df46f 100644 --- a/hippo4j-server/conf/hippo4j_manager.sql +++ b/hippo4j-server/conf/hippo4j_manager.sql @@ -208,6 +208,29 @@ CREATE TABLE `notify` ( UNIQUE KEY `uk_notify_biz_key` (`tenant_id`,`item_id`,`tp_id`,`platform`,`type`,`del_flag`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知表'; +-- ---------------------------- +-- Table structure for his_config_verify +-- ---------------------------- +DROP TABLE IF EXISTS `his_config_verify`; +CREATE TABLE `his_config_verify` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `type` int NULL DEFAULT NULL COMMENT '变更类型', + `mark` varchar(128) DEFAULT NULL COMMENT '框架线程池类型', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(256) DEFAULT NULL COMMENT '线程池ID', + `identify` varchar(64) DEFAULT NULL COMMENT '线程池唯一标识', + `content` longtext NULL COMMENT '参数变更内容', + `modify_all` tinyint(1) NULL DEFAULT NULL COMMENT '是否全部修改', + `gmt_create` datetime NULL DEFAULT NULL COMMENT '参数变更时间', + `modify_user` varchar(128) DEFAULT NULL COMMENT '修改人', + `verify_status` tinyint(1) NULL DEFAULT NULL COMMENT '审核状态 0:待审核 1:审核通过 2:审核拒绝', + `gmt_verify` datetime NULL DEFAULT NULL COMMENT '审核时间', + `verify_user` varchar(128) DEFAULT NULL COMMENT '审核人', +PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET=utf8mb4 COMMENT = '参数变更审核记录表'; + + /* Init SQL */ INSERT IGNORE INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0'); diff --git a/hippo4j-server/conf/sql-upgrade/1.4.2_upgrade.sql b/hippo4j-server/conf/sql-upgrade/1.4.2_upgrade.sql index e0a718b0..1ec3ec5b 100644 --- a/hippo4j-server/conf/sql-upgrade/1.4.2_upgrade.sql +++ b/hippo4j-server/conf/sql-upgrade/1.4.2_upgrade.sql @@ -15,3 +15,23 @@ ALTER TABLE inst_config Modify COLUMN tp_id varchar(256) COMMENT '线程池ID'; ALTER TABLE his_run_data Modify COLUMN tp_id varchar(256) COMMENT '线程池ID'; ALTER TABLE notify Modify COLUMN tp_id varchar(256) COMMENT '线程池ID'; + +DROP TABLE IF EXISTS `his_config_verify`; +CREATE TABLE `his_config_verify` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `type` int NULL DEFAULT NULL COMMENT '变更类型', + `mark` varchar(128) DEFAULT NULL COMMENT '框架线程池类型', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(256) DEFAULT NULL COMMENT '线程池ID', + `identify` varchar(64) DEFAULT NULL COMMENT '线程池唯一标识', + `content` longtext DEFAULT NULL COMMENT '参数变更内容', + `modify_all` tinyint(1) NULL DEFAULT NULL COMMENT '是否全部修改', + `gmt_create` datetime NULL DEFAULT NULL COMMENT '参数变更时间', + `modify_user` varchar(128) DEFAULT NULL COMMENT '修改人', + `verify_status` tinyint(1) NULL DEFAULT NULL COMMENT '审核状态 0:待审核 1:审核通过 2:审核拒绝', + `gmt_verify` datetime NULL DEFAULT NULL COMMENT '审核时间', + `verify_user` varchar(128) DEFAULT NULL COMMENT '审核人', +PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET=utf8mb4 COMMENT = '参数变更审核记录表'; + diff --git a/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql b/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql index c88c39e8..715fde00 100755 --- a/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql +++ b/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql @@ -144,6 +144,24 @@ CREATE TABLE IF NOT EXISTS `notify` ( PRIMARY KEY (`id`) ); +CREATE TABLE IF NOT EXISTS `his_config_verify` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `type` int NULL DEFAULT NULL COMMENT '变更类型', + `mark` varchar(128) DEFAULT NULL COMMENT '框架线程池类型', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(256) DEFAULT NULL COMMENT '线程池ID', + `identify` varchar(64) DEFAULT NULL COMMENT '线程池唯一标识', + `content` longtext COMMENT '参数变更内容', + `modify_all` tinyint(1) COMMENT '是否全部修改', + `gmt_create` datetime COMMENT '参数变更时间', + `modify_user` varchar(128) DEFAULT NULL COMMENT '修改人', + `verify_status` tinyint(1) COMMENT '审核状态 0:待审核 1:审核通过 2:审核拒绝', + `gmt_verify` datetime COMMENT '审核时间', + `verify_user` varchar(128) DEFAULT NULL COMMENT '审核人', + PRIMARY KEY (`id`) USING BTREE +); + INSERT INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0'); INSERT INTO `item` (`id`, `tenant_id`, `item_id`, `item_name`, `item_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', '动态线程池示例项目', '动态线程池示例项目,对应 Hippo 项目的 example 模块', '马称', '2021-10-24 16:11:00', '2021-10-24 16:11:00', '0'); diff --git a/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql b/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql index 2942b01b..64ed9118 100644 --- a/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql +++ b/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql @@ -198,6 +198,28 @@ CREATE TABLE IF NOT EXISTS `notify` ( UNIQUE KEY `uk_notify_biz_key` (`tenant_id`,`item_id`,`tp_id`,`platform`,`type`,`del_flag`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知表'; +-- ---------------------------- +-- Table structure for his_config_verify +-- ---------------------------- +DROP TABLE IF EXISTS `his_config_verify`; +CREATE TABLE `his_config_verify` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `type` int NULL DEFAULT NULL COMMENT '变更类型', + `mark` varchar(128) DEFAULT NULL COMMENT '框架线程池类型', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(256) DEFAULT NULL COMMENT '线程池ID', + `identify` varchar(64) DEFAULT NULL COMMENT '线程池唯一标识', + `content` longtext NULL COMMENT '参数变更内容', + `modify_all` tinyint(1) NULL DEFAULT NULL COMMENT '是否全部修改', + `gmt_create` datetime NULL DEFAULT NULL COMMENT '参数变更时间', + `modify_user` varchar(128) DEFAULT NULL COMMENT '修改人', + `verify_status` tinyint(1) NULL DEFAULT NULL COMMENT '审核状态 0:待审核 1:审核通过 2:审核拒绝', + `gmt_verify` datetime NULL DEFAULT NULL COMMENT '审核时间', + `verify_user` varchar(128) DEFAULT NULL COMMENT '审核人', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET=utf8mb4 COMMENT = '参数变更审核记录表'; + /* Init SQL */ INSERT IGNORE INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0');