This commit is contained in:
dengqichen 2025-12-29 11:07:44 +08:00
parent 98f020df0a
commit 972f064c16
17 changed files with 552 additions and 169 deletions

View File

@ -137,11 +137,11 @@
<scope>provided</scope>
</dependency>
<!-- User Agent Parser -->
<!-- User Agent Parser - Browscap Java (替换yauaa解决死锁问题) -->
<dependency>
<groupId>nl.basjes.parse.useragent</groupId>
<artifactId>yauaa</artifactId>
<version>7.26.0</version>
<groupId>com.blueconic</groupId>
<artifactId>browscap-java</artifactId>
<version>1.4.3</version>
</dependency>
<!-- Test -->

View File

@ -7,10 +7,10 @@ import com.qqchen.deploy.backend.deploy.query.ApplicationQuery;
import com.qqchen.deploy.backend.deploy.service.IApplicationService;
import com.qqchen.deploy.backend.framework.api.Response;
import com.qqchen.deploy.backend.framework.controller.BaseController;
import com.qqchen.deploy.backend.framework.dto.PageResult;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -54,9 +54,9 @@ public class ApplicationApiController extends BaseController<Application, Applic
return super.findAll();
}
@Override
public Response<Page<ApplicationDTO>> page(ApplicationQuery query) {
return super.page(query);
@GetMapping("/page")
public Response<PageResult<ApplicationDTO>> pageWithStats(ApplicationQuery query) {
return Response.success(applicationService.pageWithStats(query));
}
@Override

View File

@ -34,7 +34,7 @@ public class ApplicationCategoryApiController extends BaseController<Application
}
@Override
public Response<ApplicationCategoryDTO> update(Long id, @Validated @RequestBody ApplicationCategoryDTO dto) {
public Response<ApplicationCategoryDTO> update(@PathVariable Long id, @Validated @RequestBody ApplicationCategoryDTO dto) {
return super.update(id, dto);
}

View File

@ -37,12 +37,12 @@ public class EnvironmentApiController extends BaseController<Environment, Enviro
}
@Override
public Response<Void> delete(@Validated @RequestBody Long id) {
public Response<Void> delete(@PathVariable Long id) {
return super.delete(id);
}
@Override
public Response<EnvironmentDTO> findById(@Validated @RequestBody Long id) {
public Response<EnvironmentDTO> findById(@PathVariable Long id) {
return super.findById(id);
}

View File

@ -8,8 +8,8 @@ import com.qqchen.deploy.backend.deploy.query.JenkinsSyncHistoryQuery;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
@ -26,23 +26,23 @@ public class JenkinsSyncHistoryApiController extends BaseController<JenkinsSyncH
@Override
public Response<JenkinsSyncHistoryDTO> create(JenkinsSyncHistoryDTO dto) {
public Response<JenkinsSyncHistoryDTO> create(@Validated @RequestBody JenkinsSyncHistoryDTO dto) {
return super.create(dto);
}
@Override
public Response<JenkinsSyncHistoryDTO> update(Long aLong, JenkinsSyncHistoryDTO dto) {
return super.update(aLong, dto);
public Response<JenkinsSyncHistoryDTO> update(@PathVariable Long id, @Validated @RequestBody JenkinsSyncHistoryDTO dto) {
return super.update(id, dto);
}
@Override
public Response<Void> delete(Long aLong) {
return super.delete(aLong);
public Response<Void> delete(@PathVariable Long id) {
return super.delete(id);
}
@Override
public Response<JenkinsSyncHistoryDTO> findById(Long aLong) {
return super.findById(aLong);
public Response<JenkinsSyncHistoryDTO> findById(@PathVariable Long id) {
return super.findById(id);
}
@Override

View File

@ -13,6 +13,7 @@ import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -31,23 +32,23 @@ public class RepositoryGroupApiController extends BaseController<RepositoryGroup
private IRepositoryGroupService repositoryGroupService;
@Override
public Response<RepositoryGroupDTO> create(RepositoryGroupDTO dto) {
public Response<RepositoryGroupDTO> create(@Validated @RequestBody RepositoryGroupDTO dto) {
return super.create(dto);
}
@Override
public Response<RepositoryGroupDTO> update(Long aLong, RepositoryGroupDTO dto) {
return super.update(aLong, dto);
public Response<RepositoryGroupDTO> update(@PathVariable Long id, @Validated @RequestBody RepositoryGroupDTO dto) {
return super.update(id, dto);
}
@Override
public Response<Void> delete(Long aLong) {
return super.delete(aLong);
public Response<Void> delete(@PathVariable Long id) {
return super.delete(id);
}
@Override
public Response<RepositoryGroupDTO> findById(Long aLong) {
return super.findById(aLong);
public Response<RepositoryGroupDTO> findById(@PathVariable Long id) {
return super.findById(id);
}
@Override

View File

@ -57,6 +57,9 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
@Slf4j
@Service
@ -65,12 +68,24 @@ public class JenkinsServiceIntegrationImpl extends BaseExternalSystemIntegration
@Resource
private IExternalSystemRepository systemRepository;
private final RestTemplate restTemplate = new RestTemplate();
private final RestTemplate restTemplate;
// Jenkins Crumb缓存 - 线程安全
private static final Map<Long, JenkinsCrumbCache> CRUMB_CACHE = new ConcurrentHashMap<>();
// 每个Jenkins系统独立的锁 - 避免不同系统间互相阻塞
private static final Map<Long, ReentrantLock> SYSTEM_LOCKS = new ConcurrentHashMap<>();
private static final long CRUMB_EXPIRE_TIME = 25 * 60 * 1000; // 25分钟过期
private static final long LOCK_TIMEOUT_SECONDS = 3; // 锁超时时间3秒
public JenkinsServiceIntegrationImpl() {
// 配置RestTemplate超时防止网络故障时长时间阻塞
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(5000); // 连接超时5秒
factory.setReadTimeout(10000); // 读取超时10秒
this.restTemplate = new RestTemplate(factory);
}
/**
* Jenkins Crumb缓存内部类
@ -95,29 +110,71 @@ public class JenkinsServiceIntegrationImpl extends BaseExternalSystemIntegration
/**
* 线程安全地获取Jenkins Crumb缓存
* 使用ReentrantLock + tryLock实现带超时的锁机制避免死锁
* 如果缓存不存在或已过期会重新获取和解密
*/
private synchronized JenkinsCrumbCache getCrumbCache(ExternalSystem system) {
private JenkinsCrumbCache getCrumbCache(ExternalSystem system) {
Long systemId = system.getId();
// 快速路径如果缓存有效直接返回
JenkinsCrumbCache cache = CRUMB_CACHE.get(systemId);
if (cache == null || cache.isExpired()) {
log.debug("Jenkins Crumb缓存失效重新获取: systemId={}", systemId);
// 解密系统信息只在这里解密一次
ExternalSystem decryptedSystem = decryptSystem(system);
// 获取新的crumb
JenkinsCrumbIssuerResponse crumb = fetchCrumbFromJenkins(decryptedSystem);
// 创建新缓存
cache = new JenkinsCrumbCache(crumb, decryptedSystem);
CRUMB_CACHE.put(systemId, cache);
log.debug("Jenkins Crumb缓存已更新: systemId={}, expireTime={}", systemId, cache.expireTime);
if (cache != null && !cache.isExpired()) {
return cache;
}
// 获取该Jenkins系统的独立锁公平锁避免线程饥饿
ReentrantLock lock = SYSTEM_LOCKS.computeIfAbsent(systemId, k -> new ReentrantLock(true));
try {
// 尝试获取锁最多等待3秒
if (lock.tryLock(LOCK_TIMEOUT_SECONDS, TimeUnit.SECONDS)) {
try {
// 双重检查获取锁后再次检查缓存
cache = CRUMB_CACHE.get(systemId);
if (cache != null && !cache.isExpired()) {
log.debug("Jenkins Crumb缓存命中双重检查: systemId={}", systemId);
return cache;
}
log.debug("Jenkins Crumb缓存失效重新获取: systemId={}", systemId);
// 解密系统信息只在这里解密一次
ExternalSystem decryptedSystem = decryptSystem(system);
// 获取新的crumb网络I/O但不持有synchronized锁
JenkinsCrumbIssuerResponse crumb = fetchCrumbFromJenkins(decryptedSystem);
// 创建新缓存
cache = new JenkinsCrumbCache(crumb, decryptedSystem);
CRUMB_CACHE.put(systemId, cache);
log.debug("Jenkins Crumb缓存已更新: systemId={}, expireTime={}", systemId, cache.expireTime);
return cache;
} finally {
lock.unlock();
}
} else {
// 获取锁超时使用降级策略
log.warn("获取Jenkins Crumb锁超时{}秒systemId={}", LOCK_TIMEOUT_SECONDS, systemId);
// 降级策略使用过期缓存容忍短暂的认证失败
cache = CRUMB_CACHE.get(systemId);
if (cache != null) {
log.warn("使用过期的Jenkins Crumb缓存作为降级: systemId={}, 过期时间差={}ms",
systemId, System.currentTimeMillis() - cache.expireTime);
return cache;
}
// 没有缓存可用抛出异常
throw new BusinessException(ResponseCode.JENKINS_API_ERROR,
new Object[]{"CRUMB_LOCK_TIMEOUT", "获取Jenkins认证信息超时请稍后重试"});
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("获取Jenkins Crumb锁被中断: systemId={}", systemId, e);
throw new BusinessException(ResponseCode.JENKINS_API_ERROR,
new Object[]{"CRUMB_LOCK_INTERRUPTED", "获取Jenkins认证信息被中断"});
}
return cache;
}
/**

View File

@ -1,7 +1,9 @@
package com.qqchen.deploy.backend.deploy.repository;
import com.qqchen.deploy.backend.deploy.entity.Application;
import com.qqchen.deploy.backend.deploy.repository.projection.ApplicationEnabledStatistics;
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -14,4 +16,15 @@ public interface IApplicationRepository extends IBaseRepository<Application, Lon
*/
Long countByApplicationCategoryIdAndDeletedFalse(Long applicationCategoryId);
/**
* 按启用状态分组统计应用数量一次查询获取已启用和已禁用的数量
*
* @return 统计结果列表包含enabled状态和对应的count
*/
@Query("SELECT a.enabled as enabled, COUNT(a) as count " +
"FROM Application a " +
"WHERE a.deleted = false " +
"GROUP BY a.enabled")
List<ApplicationEnabledStatistics> countByEnabledGroupBy();
}

View File

@ -0,0 +1,20 @@
package com.qqchen.deploy.backend.deploy.repository.projection;
/**
* 应用启用状态统计投影接口
* 用于Spring Data JPA的查询结果映射
*/
public interface ApplicationEnabledStatistics {
/**
* 获取启用状态
* @return true=已启用false=已禁用
*/
Boolean getEnabled();
/**
* 获取该状态下的应用数量
* @return 应用数量
*/
Long getCount();
}

View File

@ -4,15 +4,20 @@ import com.qqchen.deploy.backend.deploy.dto.ApplicationDTO;
import com.qqchen.deploy.backend.deploy.dto.DevelopmentLanguageTypeDTO;
import com.qqchen.deploy.backend.deploy.entity.Application;
import com.qqchen.deploy.backend.deploy.query.ApplicationQuery;
import com.qqchen.deploy.backend.framework.dto.PageResult;
import com.qqchen.deploy.backend.framework.service.IBaseService;
import org.springframework.data.domain.Page;
import java.util.List;
public interface IApplicationService extends IBaseService<Application, ApplicationDTO, ApplicationQuery, Long> {
Page<ApplicationDTO> page(ApplicationQuery query);
/**
* 分页查询应用带统计信息
*
* @param query 查询条件
* @return 分页结果包含已启用和已禁用的总数统计
*/
PageResult<ApplicationDTO> pageWithStats(ApplicationQuery query);
List<DevelopmentLanguageTypeDTO> getAllDevelopmentLanguageTypes();

View File

@ -19,7 +19,9 @@ import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository;
import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository;
import com.qqchen.deploy.backend.deploy.repository.IRepositoryProjectRepository;
import com.qqchen.deploy.backend.deploy.repository.ITeamApplicationRepository;
import com.qqchen.deploy.backend.deploy.repository.projection.ApplicationEnabledStatistics;
import com.qqchen.deploy.backend.deploy.service.IApplicationService;
import com.qqchen.deploy.backend.framework.dto.PageResult;
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
import com.qqchen.deploy.backend.framework.exception.BusinessException;
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
@ -109,6 +111,31 @@ public class ApplicationServiceImpl extends BaseServiceImpl<Application, Applica
});
}
@Override
public PageResult<ApplicationDTO> pageWithStats(ApplicationQuery query) {
Page<ApplicationDTO> page = super.page(query);
fillApplicationRelations(page.getContent());
// 一次查询获取启用和禁用状态的应用总数按enabled分组统计
List<ApplicationEnabledStatistics> statistics = applicationRepository.countByEnabledGroupBy();
// 解析统计结果
Long enabledCount = 0L;
Long disabledCount = 0L;
for (ApplicationEnabledStatistics stat : statistics) {
if (Boolean.TRUE.equals(stat.getEnabled())) {
enabledCount = stat.getCount();
} else if (Boolean.FALSE.equals(stat.getEnabled())) {
disabledCount = stat.getCount();
}
}
// 构建PageResult并添加统计字段
return new PageResult<>(page)
.addExtraField("enabledCount", enabledCount)
.addExtraField("disabledCount", disabledCount);
}
@Override
public Page<ApplicationDTO> page(ApplicationQuery query) {
Page<ApplicationDTO> page = super.page(query);

View File

@ -0,0 +1,239 @@
package com.qqchen.deploy.backend.framework.dto;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
/**
* 通用分页结果包装类
* 实现Page接口保留Spring Data Page的所有字段并支持添加额外的统计字段
* 额外字段会通过@JsonAnyGetter展开到与totalElements同一层级
*
* @param <T> 分页数据类型
*/
public class PageResult<T> implements Page<T>, Serializable {
private static final long serialVersionUID = 1L;
/**
* 内部Page对象用于委托所有Page接口方法
*/
@JsonIgnore
private final Page<T> page;
/**
* 额外的统计字段会被展开到JSON的顶层
*/
@JsonIgnore
private final Map<String, Object> extraFields = new HashMap<>();
/**
* 构造函数
*
* @param page Spring Data Page对象
*/
public PageResult(Page<T> page) {
this.page = page;
}
/**
* 添加额外的统计字段
*
* @param key 字段名
* @param value 字段值
* @return 当前对象支持链式调用
*/
public PageResult<T> addExtraField(String key, Object value) {
this.extraFields.put(key, value);
return this;
}
/**
* Jackson注解将extraFields的内容展开到JSON的顶层
* 使得额外字段与totalElements等在同一层级
*/
@JsonAnyGetter
public Map<String, Object> getExtraFields() {
return extraFields;
}
/**
* Jackson注解支持反序列化时设置额外字段
*/
@JsonAnySetter
public void setExtraField(String key, Object value) {
extraFields.put(key, value);
}
// ==================== 实现Page接口的所有方法 ====================
/**
* 获取当前页的数据列表
*/
@Override
public List<T> getContent() {
return page.getContent();
}
/**
* 获取总记录数
*/
@Override
public long getTotalElements() {
return page.getTotalElements();
}
/**
* 获取总页数
*/
@Override
public int getTotalPages() {
return page.getTotalPages();
}
/**
* 获取当前页码从0开始
*/
@Override
public int getNumber() {
return page.getNumber();
}
/**
* 获取每页大小
*/
@Override
public int getSize() {
return page.getSize();
}
/**
* 获取当前页的实际记录数
*/
@Override
public int getNumberOfElements() {
return page.getNumberOfElements();
}
/**
* 是否有内容
*/
@Override
public boolean hasContent() {
return page.hasContent();
}
/**
* 是否为空
*/
@Override
public boolean isEmpty() {
return page.isEmpty();
}
/**
* 是否为第一页
*/
@Override
public boolean isFirst() {
return page.isFirst();
}
/**
* 是否为最后一页
*/
@Override
public boolean isLast() {
return page.isLast();
}
/**
* 是否有下一页
*/
@Override
public boolean hasNext() {
return page.hasNext();
}
/**
* 是否有上一页
*/
@Override
public boolean hasPrevious() {
return page.hasPrevious();
}
/**
* 获取排序信息
*/
@Override
public Sort getSort() {
return page.getSort();
}
/**
* 获取分页信息
*/
@Override
public Pageable getPageable() {
return page.getPageable();
}
/**
* 获取下一页的分页信息
*/
@Override
public Pageable nextPageable() {
return page.nextPageable();
}
/**
* 获取上一页的分页信息
*/
@Override
public Pageable previousPageable() {
return page.previousPageable();
}
/**
* 转换当前页的数据类型
*
* @param converter 转换函数
* @param <U> 目标类型
* @return 新的PageResult对象
*/
@Override
public <U> PageResult<U> map(Function<? super T, ? extends U> converter) {
Page<U> mappedPage = page.map(converter);
PageResult<U> result = new PageResult<>(mappedPage);
// 复制额外字段
result.extraFields.putAll(this.extraFields);
return result;
}
/**
* 获取迭代器
*/
@Override
public Iterator<T> iterator() {
return page.iterator();
}
/**
* 获取内部Page对象用于需要直接访问Page的场景
*/
@JsonIgnore
public Page<T> getPage() {
return page;
}
}

View File

@ -1,13 +1,16 @@
package com.qqchen.deploy.backend.framework.utils;
import com.blueconic.browscap.Capabilities;
import com.blueconic.browscap.ParseException;
import com.blueconic.browscap.UserAgentParser;
import com.blueconic.browscap.UserAgentService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import nl.basjes.parse.useragent.UserAgent;
import nl.basjes.parse.useragent.UserAgentAnalyzer;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@ -19,20 +22,32 @@ import java.util.concurrent.TimeoutException;
* @date 2025-11-20
*
* 🔧 死锁修复说明
* 1. 原问题UserAgent解析库在持有缓存锁时写日志导致死锁
* 2. 解决方案异步解析 + 超时降级
* 3. 超时时间200ms可配置
* 4. 降级策略超时返回"Unknown"
* 1. 原问题yauaa库在持有缓存锁时写日志导致死锁
* 2. 解决方案1异步解析 + 超时降级
* 3. 解决方案2更换为Browscap Java库无日志依赖线程安全
* 4. 超时时间200ms可配置
* 5. 降级策略超时返回"Unknown"
*
* 📝 2025-12-29更新
* - 从yauaa更换为Browscap Java
* - Browscap优势性能更好(~2ms)活跃维护无日志依赖问题
*/
@Slf4j
@Component
public class UserAgentUtil {
private static final UserAgentAnalyzer USER_AGENT_ANALYZER = UserAgentAnalyzer
.newBuilder()
.hideMatcherLoadStats()
.withCache(10000)
.build();
private static final UserAgentParser USER_AGENT_PARSER;
static {
try {
// 初始化Browscap解析器使用默认配置
USER_AGENT_PARSER = new UserAgentService().loadParser();
log.info("Browscap UserAgent解析器初始化成功");
} catch (IOException | ParseException e) {
log.error("Browscap UserAgent解析器初始化失败", e);
throw new RuntimeException("Failed to initialize Browscap UserAgent parser", e);
}
}
/**
* UserAgent解析专用线程池
@ -85,7 +100,7 @@ public class UserAgentUtil {
/**
* 同步解析User-Agent信息内部方法
*
* 此方法可能导致死锁仅供内部使用
* 此方法可能耗时仅供内部使用
* 外部调用请使用 parseUserAgentAsync()
*
* @param userAgentString User-Agent字符串
@ -93,14 +108,15 @@ public class UserAgentUtil {
*/
private UserAgentInfo parseUserAgentSync(String userAgentString) {
try {
UserAgent userAgent = USER_AGENT_ANALYZER.parse(userAgentString);
// 使用Browscap解析User-Agent
Capabilities capabilities = USER_AGENT_PARSER.parse(userAgentString);
return UserAgentInfo.builder()
.browser(getBrowserName(userAgent))
.browserVersion(userAgent.getValue(UserAgent.AGENT_VERSION))
.os(getOperatingSystem(userAgent))
.osVersion(userAgent.getValue(UserAgent.OPERATING_SYSTEM_VERSION))
.deviceType(userAgent.getValue(UserAgent.DEVICE_CLASS))
.browser(getBrowserName(capabilities))
.browserVersion(capabilities.getBrowserMajorVersion())
.os(getOperatingSystem(capabilities))
.osVersion(capabilities.getPlatformVersion())
.deviceType(capabilities.getDeviceType())
.build();
} catch (Exception e) {
log.warn("解析User-Agent失败: {}", userAgentString, e);
@ -111,7 +127,7 @@ public class UserAgentUtil {
/**
* 解析User-Agent信息兼容旧代码
*
* 已废弃此方法可能导致死锁
* 已废弃建议使用异步方法
* 请使用 parseUserAgentAsync() 替代
*
* @param userAgentString User-Agent字符串
@ -174,71 +190,39 @@ public class UserAgentUtil {
/**
* 获取浏览器名称
*/
private String getBrowserName(UserAgent userAgent) {
String agentName = userAgent.getValue(UserAgent.AGENT_NAME);
String agentVersion = userAgent.getValue(UserAgent.AGENT_VERSION);
private String getBrowserName(Capabilities capabilities) {
String browser = capabilities.getBrowser();
String version = capabilities.getBrowserMajorVersion();
if ("Unknown".equals(agentName)) {
if (browser == null || browser.isEmpty() || "Unknown".equals(browser)) {
return "Unknown";
}
// 返回浏览器名称 + 主版本号
if (agentVersion != null && !agentVersion.isEmpty() && !"Unknown".equals(agentVersion)) {
String majorVersion = agentVersion.split("\\.")[0];
return agentName + " " + majorVersion;
if (version != null && !version.isEmpty() && !"Unknown".equals(version)) {
return browser + " " + version;
}
return agentName;
return browser;
}
/**
* 获取操作系统名称
*/
private String getOperatingSystem(UserAgent userAgent) {
String osName = userAgent.getValue(UserAgent.OPERATING_SYSTEM_NAME);
String osVersion = userAgent.getValue(UserAgent.OPERATING_SYSTEM_VERSION);
private String getOperatingSystem(Capabilities capabilities) {
String platform = capabilities.getPlatform();
String version = capabilities.getPlatformVersion();
if ("Unknown".equals(osName)) {
if (platform == null || platform.isEmpty() || "Unknown".equals(platform)) {
return "Unknown";
}
// Windows NT 版本号转换为友好名称
if ("Windows NT".equals(osName) && osVersion != null && !osVersion.isEmpty()) {
return convertWindowsNTVersion(osVersion);
}
// 返回操作系统名称 + 版本
if (osVersion != null && !osVersion.isEmpty() && !"Unknown".equals(osVersion)) {
return osName + " " + osVersion;
if (version != null && !version.isEmpty() && !"Unknown".equals(version)) {
return platform + " " + version;
}
return osName;
}
/**
* 将Windows NT版本号转换为用户友好的显示名称
*/
private String convertWindowsNTVersion(String ntVersion) {
switch (ntVersion) {
case "10.0":
return "Windows 10/11"; // Windows 10 11 都是 NT 10.0
case "6.3":
return "Windows 8.1";
case "6.2":
return "Windows 8";
case "6.1":
return "Windows 7";
case "6.0":
return "Windows Vista";
case "5.2":
return "Windows Server 2003";
case "5.1":
return "Windows XP";
case "5.0":
return "Windows 2000";
default:
return "Windows NT " + ntVersion; // 未知版本保持原样
}
return platform;
}
/**

View File

@ -13,6 +13,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -27,23 +28,23 @@ public class RoleApiController extends BaseController<Role, RoleDTO, Long, RoleQ
private IRoleService roleService;
@Override
public Response<RoleDTO> create(RoleDTO dto) {
public Response<RoleDTO> create(@Validated @RequestBody RoleDTO dto) {
return super.create(dto);
}
@Override
public Response<RoleDTO> update(Long aLong, RoleDTO dto) {
return super.update(aLong, dto);
public Response<RoleDTO> update(@PathVariable Long id, @Validated @RequestBody RoleDTO dto) {
return super.update(id, dto);
}
@Override
public Response<Void> delete(Long aLong) {
return super.delete(aLong);
public Response<Void> delete(@PathVariable Long id) {
return super.delete(id);
}
@Override
public Response<RoleDTO> findById(Long aLong) {
return super.findById(aLong);
public Response<RoleDTO> findById(@PathVariable Long id) {
return super.findById(id);
}
@Override

View File

@ -12,6 +12,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -33,23 +34,23 @@ public class FormDataApiController extends BaseController<FormData, FormDataDTO,
private IFormDataService formDataService;
@Override
public Response<FormDataDTO> create(FormDataDTO dto) {
public Response<FormDataDTO> create(@Validated @RequestBody FormDataDTO dto) {
return super.create(dto);
}
@Override
public Response<FormDataDTO> update(Long aLong, FormDataDTO dto) {
return super.update(aLong, dto);
public Response<FormDataDTO> update(@PathVariable Long id, @Validated @RequestBody FormDataDTO dto) {
return super.update(id, dto);
}
@Override
public Response<Void> delete(Long aLong) {
return super.delete(aLong);
public Response<Void> delete(@PathVariable Long id) {
return super.delete(id);
}
@Override
public Response<FormDataDTO> findById(Long aLong) {
return super.findById(aLong);
public Response<FormDataDTO> findById(@PathVariable Long id) {
return super.findById(id);
}
@Override

View File

@ -668,7 +668,8 @@ INSERT INTO `deploy-ease-platform`.`workflow_definition` (`id`, `name`, `key`, `
-- --------------------------------------------------------------------------------------
INSERT INTO `deploy-ease-platform`.`deploy_application_category` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `code`, `name`, `description`, `icon`, `enabled`, `sort`) VALUES (1, 'admin', NOW(), 'admin', NOW(), 1, b'0', 'DL-SCP', '需求计划', '', '', b'1', 0);
INSERT INTO `deploy-ease-platform`.`deploy_application_category` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `code`, `name`, `description`, `icon`, `enabled`, `sort`) VALUES (2, 'admin', NOW(), 'admin', NOW(), 1, b'0', 'SZ-ISCP', '供应计划', '', '', b'1', 0);
INSERT INTO `deploy-ease-platform`.`deploy_application_category` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `code`, `name`, `description`, `icon`, `enabled`, `sort`) VALUES (3, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 'OMS-ORDER', '订单', '', '', b'1', 0);
INSERT INTO `deploy-ease-platform`.`deploy_application_category` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `code`, `name`, `description`, `icon`, `enabled`, `sort`) VALUES (3, 'admin', NOW(), 'admin', NOW(), 1, b'0', 'OMS-ORDER', '订单', '', '', b'1', 0);
INSERT INTO `deploy-ease-platform`.`deploy_application_category` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `code`, `name`, `description`, `icon`, `enabled`, `sort`) VALUES (4, 'admin', NOW(), 'admin', NOW(), 1, b'0', 'OMS-ORDER-HP', '订单豪鹏项目', '', '', b'1', 0);
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (1, 'scp-meta', '元数据', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
@ -685,14 +686,14 @@ INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (12, 'scp-process', 'scp-process', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (13, 'scp-service-manager', 'scp-service-manager', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (14, 'scp-customization-engine', 'scp-customization-engine', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (15, 'themetis-engine', 'themetis-engine', '', 0, 2, b'1', 0, 'dengqichen', NOW(), 'dengqichen', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (15, 'themetis-engine', 'themetis-engine', '', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (16, 'themetis-scheduler', 'themetis-scheduler', '', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (17, 'scp-xxl-job', 'scp-xxl-job', '', 0, 1, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (18, 'stone-message-center', 'stone-message-center', '', 0, 1, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (19, 'scp-order', 'scp-order', '', 0, 1, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (20, 'datax-admin', 'datax-admin', '', 0, 1, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (21, 'scp-algorithm', 'scp-algorithm', '', 0, 1, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (22, 'scp-forecast-model', 'scp-forecast-model', '', 2, 1, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (17, 'scp-xxl-job', 'scp-xxl-job', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (18, 'stone-message-center', 'stone-message-center', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (19, 'scp-order', 'scp-order', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (20, 'datax-admin', 'datax-admin', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (21, 'scp-algorithm', 'scp-algorithm', '', 0, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (22, 'scp-forecast-model', 'scp-forecast-model', '', 2, 1, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (23, 'etl-ignite-server', 'etl-ignite-server', '内存数据库', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (24, 'etl-integration-ui-server', 'etl-integration-ui-server', 'UI server', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (25, 'etl-executor', 'etl-executor', 'etl执行器', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
@ -700,26 +701,61 @@ INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (27, 'themetis-control-panel-server', 'themetis-control-panel-server', '控制台', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (28, 'themetis-permission-server', 'themetis-permission-server', '权限系统', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (29, 'themetis-gateway', 'themetis-gateway', '网关', 0, 2, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (30, 'lianyu-oms-admin', 'lianyu-oms-admin', 'oms2.0-后台管理服务', 0, 3, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (31, 'lianyu-oms-gateway', 'lianyu-oms-gateway', 'oms2.0-网关服务', 0, 3, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (32, 'lianyu-oms-job', 'lianyu-oms-job', 'oms2.0-定时任务', 0, 3, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (33, 'lianyu-oms-main', 'lianyu-oms-main', 'oms2.0-主业务', 0, 3, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (34, 'lianyu-oms-web', 'lianyu-oms-web', 'oms2.0-前端', 0, 3, b'1', 0, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (30, 'lianyu-oms-admin', 'lianyu-oms-admin', 'oms2.0-后台管理服务', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (31, 'lianyu-oms-gateway', 'lianyu-oms-gateway', 'oms2.0-网关服务', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (32, 'lianyu-oms-job', 'lianyu-oms-job', 'oms2.0-定时任务', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (33, 'lianyu-oms-main', 'lianyu-oms-main', 'oms2.0-主业务', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (34, 'lianyu-oms-web', 'lianyu-oms-web', 'oms2.0-前端', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (35, 'service-lianyu-oms-api', 'service-lianyu-oms-api', '链宇OMS 2.0 基础包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (36, 'service-lianyu-oms-cir', 'service-lianyu-oms-cir', '链宇OMS 2.0 要货需求jar包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (37, 'service-lianyu-oms-cpq', 'service-lianyu-oms-cpq', '链宇OMS 2.0 cpq的jar包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (38, 'service-lianyu-oms-ioa', 'service-lianyu-oms-ioa', '链宇OMS 2.0 要货需求jar包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (39, 'service-lianyu-oms-mdm', 'service-lianyu-oms-mdm', '链宇OMS 2.0 要货需求jar包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (40, 'service-lianyu-oms-oam', 'service-lianyu-oms-oam', '链宇OMS 2.0 要货需求jar包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (41, 'service-lianyu-oms-oct', 'service-lianyu-oms-oct', '链宇OMS 2.0 要货需求jar包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (42, 'service-lianyu-oms-orm', 'service-lianyu-oms-orm', '链宇OMS 2.0 要货需求jar包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (43, 'service-lianyu-oms-osp', 'service-lianyu-oms-osp', '链宇OMS 2.0 要货需求jar包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (44, 'service-lianyu-oms-otm', 'service-lianyu-oms-otm', '链宇OMS 2.0 关联交易jar包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (45, 'service-lianyu-oms-sso', 'service-lianyu-oms-sso', '链宇OMS 2.0 系统服务包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (46, 'service-lianyu-oms-sys', 'service-lianyu-oms-sys', '链宇OMS 2.0 系统服务包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (47, 'service-lianyu-oms-wop', 'service-lianyu-oms-wop', '链宇OMS 2.0 要货需求jar包', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (48, 'tools-lianyu-oms-base', 'tools-lianyu-oms-base', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (49, 'tools-lianyu-oms-config', 'tools-lianyu-oms-config', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (50, 'tools-lianyu-oms-core', 'tools-lianyu-oms-core', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (51, 'tools-lianyu-oms-entity', 'tools-lianyu-oms-entity', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (52, 'tools-lianyu-oms-model', 'tools-lianyu-oms-model', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (53, 'tools-lianyu-oms-parent', 'tools-lianyu-oms-parent', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (54, 'tools-lianyu-oms-task', 'tools-lianyu-oms-task', '链宇OMS 2.0 基础包\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (55, 'lianyu-oms-jenkins', 'lianyu-oms-jenkins', '链宇OMS 2.0 标准产品统一环境\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (56, 'lianyu-oms-nacos', 'lianyu-oms-nacos', 'Nacos集群环境配置\n', 0, 3, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (57, 'hp-lianyu-oms-datahub', 'hp-lianyu-oms-datahub', 'OMS 2.0 集成服务', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (58, 'hp-lianyu-oms-front', 'hp-lianyu-oms-front', 'OMS2.0 豪鹏开发环境前端服务', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (59, 'hp-lianyu-oms-gateway', 'hp-lianyu-oms-gateway', 'OMS 2.0 豪鹏开发环境网关服务', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (60, 'hp-lianyu-oms-job', 'hp-lianyu-oms-job', 'OMS 2.0 豪鹏开发环境定时任务', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (61, 'hp-lianyu-oms-main', 'hp-lianyu-oms-main', 'OMS 2.0 主业务服务任务', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (62, 'hp-lianyu-oms-starter', 'hp-lianyu-oms-starter', 'OMS 2.0 主查询服务', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (63, 'hp-lianyu-oms-system', 'hp-lianyu-oms-system', 'OMS 2.0', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (64, 'hp-tools-lianyu-oms-admin', 'hp-tools-lianyu-oms-admin', '豪鹏工具后台管理服务,提供用户权限、菜单、资源等接口信息。', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (65, 'hp-tools-lianyu-oms-base', 'hp-tools-lianyu-oms-base', '豪鹏基础jar包。', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (66, 'hp-tools-lianyu-oms-core', 'hp-tools-lianyu-oms-core', '豪鹏工具核心包。', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (67, 'hp-tools-lianyu-oms-datacenter', 'hp-tools-lianyu-oms-datacenter', '豪鹏基础类包。', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_application` (`id`, `app_code`, `app_name`, `app_desc`, `language`, `application_category_id`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (68, 'hp-tools-lianyu-oms-parent', 'hp-tools-lianyu-oms-parent', '豪鹏父类包。\n', 0, 4, b'1', 0, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (1, NULL, 'LONGI-DEV', '隆基DEV', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 2, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (2, NULL, 'LONGI-UAT', '隆基UAT', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 3, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (5, NULL, 'LOCALIZATION_DEV', '国产化DEV', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (6, NULL, 'DEMO1', 'DEMO1', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (7, NULL, 'CONVERGENCE', '融合环境', '', b'1', 1, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (8, NULL, 'OMS2.0-TEST', '订单2.0测试环境', NULL, b'1', 1, 'songwei', NOW(), 'songwei', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (9, NULL, 'OMS2.0-PROD', '订单2.0生产环境', NULL, b'1', 1, 'songwei', NOW(), 'songwei', NOW(), 3, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (7, NULL, 'CONVERGENCE', '融合环境', '', b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (8, NULL, 'OMS2.0-TEST', '订单2.0测试环境', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (9, NULL, 'OMS2.0-PROD', '订单2.0生产环境', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 3, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (10, NULL, 'OMS2.0-HP', '订单2.0豪鹏环境', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (11, NULL, 'OMS2.0-HP-DEV', '订单2.0郝鹏dev环境', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_environment` (`id`, `tenant_code`, `env_code`, `env_name`, `env_desc`, `enabled`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`) VALUES (12, NULL, 'OMS2.0-HP-UPDATE', '订单2.0郝鹏开发环境', NULL, b'1', 1, 'admin', NOW(), 'admin', NOW(), 1, b'0');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (3, 'admin', NOW(), 'admin', NOW(), 1, b'0', 'DP_SCP', '需求计划', '', 1, '超级管理员', b'1', 0, 'STANDARD', b'0');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (4, 'admin', NOW(), 'admin', NOW(), 2, b'0', 'DL_SCP_LONGI', '隆基项目', '', 1, '超级管理员', b'1', 0, 'SYNC_MODE', b'1');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (5, 'admin', NOW(), 'admin', NOW(), 3, b'0', 'LOCALIZATION', '国产化改造', '', 1, '超级管理员', b'1', 0, 'STANDARD', b'0');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (7, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 'OMS-ORDER', '订单', '', 1, '超级管理员', b'1', 0, 'STANDARD', b'0');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (4, 'admin', NOW(), 'admin', NOW(), 3, b'0', 'DL_SCP_LONGI', '隆基项目', '', 6, '盛泽强', b'1', 0, 'SYNC_MODE', b'1');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (5, 'admin', NOW(), 'admin', NOW(), 4, b'0', 'LOCALIZATION', '国产化改造', '', 11, '邓骐辰', b'1', 0, 'STANDARD', b'0');
INSERT INTO `deploy-ease-platform`.`deploy_team` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_code`, `team_name`, `description`, `owner_id`, `owner_name`, `enabled`, `sort`, `development_mode`, `enable_git_sync_check`) VALUES (7, 'admin', NOW(), 'admin', NOW(), 1, b'0', 'OMS-ORDER', '订单', '', 1, '超级管理员', b'1', 0, 'STANDARD', b'0');
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (25, 'admin', NOW(), 'admin', NOW(), 1, b'0', 5, 5, '汤峰岷', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (26, 'admin', NOW(), 'admin', NOW(), 1, b'0', 5, 11, '邓骐辰', '', NOW());
@ -733,15 +769,16 @@ INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `cre
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (34, 'admin', NOW(), 'admin', NOW(), 1, b'0', 4, 5, '汤峰岷', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (35, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 5, '汤峰岷', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (36, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 11, '邓骐辰', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (37, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 3, 14, '宋伟', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (38, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 4, 14, '宋伟', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (37, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 14, '宋伟', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (38, 'admin', NOW(), 'admin', NOW(), 1, b'0', 4, 14, '宋伟', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (39, 'admin', NOW(), 'admin', NOW(), 1, b'0', 5, 15, '路宽', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (40, 'dengqichen', NOW(), 'dengqichen', NOW(), 1, b'0', 7, 11, '邓骐辰', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (41, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 7, 14, '宋伟', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (42, 'yangfan', NOW(), 'yangfan', NOW(), 1, b'0', 5, 16, '杨帆', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (43, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 3, 16, '杨帆', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (44, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 3, 10, '马也', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (45, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 3, 12, '王栋柱', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (40, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 11, '邓骐辰', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (41, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 14, '宋伟', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (42, 'admin', NOW(), 'admin', NOW(), 1, b'0', 5, 16, '杨帆', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (43, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 16, '杨帆', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (44, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 10, '马也', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_member` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `user_id`, `user_name`, `role_in_team`, `join_time`) VALUES (45, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 12, '王栋柱', '', NOW());
INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `application_id`, `environment_id`, `build_type`, `source_git_system_id`, `source_git_project_id`, `source_branch`, `target_git_system_id`, `target_git_project_id`, `target_branch`, `deploy_system_id`, `deploy_job`, `workflow_definition_id`, `runtime_type`, `k8s_system_id`, `k8s_namespace_name`, `k8s_deployment_name`, `docker_server_id`, `docker_container_name`, `server_id`, `log_query_command`) VALUES (2, 'admin', NOW(), 'admin', NOW(), 1, b'0', 4, 2, 2, 'JENKINS', 2, 497, 'release/1.4.0', 4, 401, 'release/1.4.1', 3, 'ibp-uat-scp-longi-module', 1, 'K8S', 8, 'ibp-uat', 'backend-longi-scp-longi-module-group-1-v1', NULL, NULL, NULL, NULL);
INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `application_id`, `environment_id`, `build_type`, `source_git_system_id`, `source_git_project_id`, `source_branch`, `target_git_system_id`, `target_git_project_id`, `target_branch`, `deploy_system_id`, `deploy_job`, `workflow_definition_id`, `runtime_type`, `k8s_system_id`, `k8s_namespace_name`, `k8s_deployment_name`, `docker_server_id`, `docker_container_name`, `server_id`, `log_query_command`) VALUES (9, 'admin', NOW(), 'admin', NOW(), 1, b'0', 4, 1, 2, 'JENKINS', 4, 413, 'release/1.4.0', NULL, NULL, NULL, 3, 'ibp-uat-scp-meta', 1, 'K8S', 8, 'ibp-uat', 'backend-longi-scp-meta-group-1-v4', NULL, NULL, NULL, NULL);
@ -815,20 +852,24 @@ INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`,
INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `application_id`, `environment_id`, `build_type`, `source_git_system_id`, `source_git_project_id`, `source_branch`, `target_git_system_id`, `target_git_project_id`, `target_branch`, `deploy_system_id`, `deploy_job`, `workflow_definition_id`, `runtime_type`, `k8s_system_id`, `k8s_namespace_name`, `k8s_deployment_name`, `docker_server_id`, `docker_container_name`, `server_id`, `log_query_command`) VALUES (97, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 32, 9, 'JENKINS', 2, 703, 'prod', NULL, NULL, NULL, 1, 'prod-lianyu-oms-job', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `application_id`, `environment_id`, `build_type`, `source_git_system_id`, `source_git_project_id`, `source_branch`, `target_git_system_id`, `target_git_project_id`, `target_branch`, `deploy_system_id`, `deploy_job`, `workflow_definition_id`, `runtime_type`, `k8s_system_id`, `k8s_namespace_name`, `k8s_deployment_name`, `docker_server_id`, `docker_container_name`, `server_id`, `log_query_command`) VALUES (98, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 31, 9, 'JENKINS', 2, 691, 'prod', NULL, NULL, NULL, 1, 'prod-lianyu-oms-gateway', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `application_id`, `environment_id`, `build_type`, `source_git_system_id`, `source_git_project_id`, `source_branch`, `target_git_system_id`, `target_git_project_id`, `target_branch`, `deploy_system_id`, `deploy_job`, `workflow_definition_id`, `runtime_type`, `k8s_system_id`, `k8s_namespace_name`, `k8s_deployment_name`, `docker_server_id`, `docker_container_name`, `server_id`, `log_query_command`) VALUES (99, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 30, 9, 'JENKINS', 2, 704, 'prod', NULL, NULL, NULL, 1, 'prod-lianyu-oms-admin', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `deploy-ease-platform`.`deploy_team_application` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `application_id`, `environment_id`, `build_type`, `source_git_system_id`, `source_git_project_id`, `source_branch`, `target_git_system_id`, `target_git_project_id`, `target_branch`, `deploy_system_id`, `deploy_job`, `workflow_definition_id`, `runtime_type`, `k8s_system_id`, `k8s_namespace_name`, `k8s_deployment_name`, `docker_server_id`, `docker_container_name`, `server_id`, `log_query_command`) VALUES (100, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 56, 10, 'JENKINS', NULL, NULL, '', NULL, NULL, NULL, 1, 'lianyu-oms-nacos', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (8, 'admin', NOW(), 'admin', NOW(), 1, b'0', 5, 5, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (9, 'admin', NOW(), 'admin', NOW(), 1, b'0', 4, 1, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (10, 'admin', NOW(), 'admin', NOW(), 1, b'0', 4, 2, b'1', '[6]', b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (11, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 6, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (12, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 3, 7, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (13, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 7, 8, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (14, 'songwei', NOW(), 'songwei', NOW(), 1, b'0', 7, 9, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (12, 'admin', NOW(), 'admin', NOW(), 1, b'0', 3, 7, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (13, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 8, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (14, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 9, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (15, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 12, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (16, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 11, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `approval_required`, `approver_user_ids`, `require_code_review`, `remark`) VALUES (17, 'admin', NOW(), 'admin', NOW(), 1, b'0', 7, 10, b'0', NULL, b'0', '');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_notification_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `notification_channel_id`, `pre_approval_notification_enabled`, `pre_approval_notification_template_id`, `build_notification_enabled`, `build_notification_template_id`, `build_failure_file_enabled`) VALUES (7, 'admin', NOW(), 'admin', NOW(), 2, b'0', 5, 5, 3, b'0', NULL, b'1', 9, b'1');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_notification_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `notification_channel_id`, `pre_approval_notification_enabled`, `pre_approval_notification_template_id`, `build_notification_enabled`, `build_notification_template_id`, `build_failure_file_enabled`) VALUES (8, 'admin', NOW(), 'admin', NOW(), 2, b'0', 4, 2, 4, b'0', NULL, b'1', 8, b'1');
INSERT INTO `deploy-ease-platform`.`deploy_team_environment_notification_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `version`, `deleted`, `team_id`, `environment_id`, `notification_channel_id`, `pre_approval_notification_enabled`, `pre_approval_notification_template_id`, `build_notification_enabled`, `build_notification_template_id`, `build_failure_file_enabled`) VALUES (9, 'admin', NOW(), 'admin', NOW(), 2, b'0', 4, 1, 4, b'0', NULL, b'1', 8, b'1');
-- --------------------------------------------------------------------------------------
-- 初始化通知渠道数据
-- --------------------------------------------------------------------------------------

View File

@ -12,15 +12,9 @@ INSERT INTO system_release (
)
VALUES (
'system', NOW(), 'system', NOW(), 1, 0,
1.43, 'ALL', NOW(),
1.45, 'ALL', NOW(),
'【后端】
- cleanupSession()Shell输入输出流强制中断阻塞的read操作
- readSSHOutput()readSSHError()线
- types.tsk8sNamespaceId: number和k8sDeploymentId: number改为k8sNamespaceName: string和k8sDeploymentName: string
- K8sRuntimeConfig组件name进行选择和匹配namespaceName查找对应的namespace ID来加载Deployment列表
- RuntimeConfigSection和TeamApplicationDialog组件的props传递和表单数据结构使name字段进行数据绑定和提交
- TeamApplicationManageDialog的保存逻辑name字段而非ID
- enabledCount disabledCount totalElements data
',
0, NULL, NULL, 0
);