Browse Source

基础框架发布: 8.2.24

1) 支持云平台部署,即支持配置文件存储与classpath中

前端核心发布: 8.2.24
main
wangshaoping 2 months ago
parent
commit
441964d0e8
  1. 270
      app.platform/src/main/resources/config/application.properties
  2. 48
      app.platform/src/main/resources/config/banner.txt
  3. 9
      app.platform/src/main/resources/config/license.lic
  4. 129
      app.platform/src/main/resources/config/logback-spring.xml
  5. 4
      cips.frontend/package.json
  6. 4
      erm.frontend/package.json
  7. 4
      gradle.properties
  8. 4
      io.sc.engine.mv.frontend/package.json
  9. 32
      io.sc.engine.rule.client/src/main/resources/META-INF/platform/plugins/exportable-resources.json
  10. 4
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl
  11. 2
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/processor/sql.tpl
  12. 4
      io.sc.engine.rule.frontend/package.json
  13. 2
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java
  14. 4
      io.sc.engine.st.frontend/package.json
  15. 4
      io.sc.platform.ai.frontend/package.json
  16. 2
      io.sc.platform.core.frontend/package.json
  17. 4
      io.sc.platform.core.frontend/template-project/package.json
  18. 10
      io.sc.platform.core/src/main/java/io/sc/platform/core/Environment.java
  19. 17
      io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/LicenseManagerServiceImpl.java
  20. 15
      io.sc.platform.core/src/main/java/io/sc/platform/core/springboot/BeforeEnvironmentProcessor.java
  21. 4
      io.sc.platform.developer.doc/package.json
  22. 4
      io.sc.platform.developer.frontend/package.json
  23. 3
      io.sc.platform.installer/src/main/java/io/sc/platform/installer/service/impl/InstallerServiceImpl.java
  24. 4
      io.sc.platform.lcdp.frontend/package.json
  25. 4
      io.sc.platform.license.keygen.frontend/package.json
  26. 4
      io.sc.platform.mvc.frontend/package.json
  27. 4
      io.sc.platform.scheduler.manager.frontend/package.json
  28. 4
      io.sc.platform.system.frontend/package.json
  29. 5
      io.sc.platform.util/src/main/java/io/sc/platform/util/compiler/memory/MemoryJavaCompilerClassLoader.java
  30. 4
      io.sc.standard.frontend/package.json
  31. 4
      io.sc.website/package.json
  32. 4
      wra.report.frontend/package.json

270
app.platform/src/main/resources/config/application.properties

@ -0,0 +1,270 @@
##########################################################################
#(100) excluded auto configuration - io.sc.platform.core
##########################################################################
spring.autoconfigure.exclude =
spring.main.allow-circular-references = true
##########################################################################
#(150) application configuration - io.sc.platform.core
##########################################################################
# - io.sc.platform.core
application.audit-log-mode = none
#application.audit-log-mode = none
#application.audit-log-mode = log
#application.audit-log-mode = database
application.is-multi-corporation-mode = false
# - io.sc.platform.installer
application.installer.enabled = true
# - io.sc.platform.jdbc.liquibase
application.updater.enabled = false
# - io.sc.platform.security
# the default password, apply to reset password
application.password.default = password
# password validator enable, true or false
application.password.validator.enable = false
# the password strength, must be: weak, middle or strong
application.password.validator.passedStrength = weak
application.password.validator.expression = ^(?\=.*[a-z])(?\=.*[A-Z])(?\=.*\\d)(?\=.*[@$\!%*?&])[A-Za-z\\d@$\!%*?&]{6,}$
application.password.validator.strongLength = 12
application.password.validator.middleLength = 8
application.password.validator.weakLength = 6
##########################################################################
#(200) spring.main configuration - io.sc.platform.core
##########################################################################
spring.main.allow-bean-definition-overriding = false
spring.main.banner-mode = console
spring.main.lazy-initialization = false
spring.main.log-startup-info = true
spring.main.register-shutdown-hook = true
##########################################################################
#(210) jasypt encryptor configuration - io.sc.platform.core
##########################################################################
jasypt.encryptor.bean = platformJasyptStringEncryptor
##########################################################################
#(300) web server configuration - io.sc.platform.core
##########################################################################
server.compression.enabled = true
server.ssl.enabled = false
server.ssl.key-store = classpath:keystore/keystore.p12
server.ssl.key-store-password = ENC(BWQMgGHmKLMSOsLQgyf1ejQl45HER/XG)
server.ssl.keyStoreType = PKCS12
server.ssl.keyAlias = platform
server.address =
server.port = 8080
server.servlet.context-path = /
server.servlet.session.timeout = 30m
server.error.path = /error
server.error.whitelabel.enabled = true
server.error.include-exception = true
server.error.include-binding-errors = always
server.error.include-message = always
server.error.include-stacktrace = always
##########################################################################
#(1000) dataSource configuration - io.sc.platform.jdbc
##########################################################################
spring.datasource.items[primary].driver-class-name = com.p6spy.engine.spy.P6SpyDriver
spring.datasource.items[primary].url = jdbc:p6spy:mysql://localhost:3306/platform?autoReconnect\=true&allowPublicKeyRetrieval\=true&useSSL\=false&useUnicode\=true&characterEncoding\=UTF-8&serverTimezone\=Asia/Shanghai
spring.datasource.items[primary].username = platform
spring.datasource.items[primary].password = ENC(E3rUCM1nWlEGnX51AQmiUoQAKa2gLwAy)
##########################################################################
#(1100) jpa configuration - io.sc.platform.orm.jpa
##########################################################################
spring.jpa.open-in-view = false
spring.jpa.show-sql = false
spring.jpa.generate-ddl = false
spring.jpa.hibernate.ddl-auto = none
spring.jpa.hibernate.jdbc.batch_size = 25
spring.jpa.properties.hibernate.enable_lazy_load_no_trans = true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.properties.sql.dialect = io.sc.platform.jdbc.sql.dialect.impl.MysqlDialect
##########################################################################
#(1500) hikari configuration - io.sc.platform.jdbc
##########################################################################
#spring.datasource.items[primary].hikari.autoCommit = true
#spring.datasource.items[primary].hikari.connectionTimeout = 10000
#spring.datasource.items[primary].hikari.idleTimeout = 600000
#spring.datasource.items[primary].hikari.maxLifetime = 1800000
#spring.datasource.items[primary].hikari.minimumIdle = 10
#spring.datasource.items[primary].hikari.maximumPoolSize = 10
#spring.datasource.items[primary].hikari.metricRegistry =
#spring.datasource.items[primary].hikari.healthCheckRegistry =
#spring.datasource.items[primary].hikari.poolName =
#spring.datasource.items[primary].hikari.initializationFailTimeout = 1
#spring.datasource.items[primary].hikari.isolateInternalQueries = false
#spring.datasource.items[primary].hikari.allowPoolSuspension = false
#spring.datasource.items[primary].hikari.readOnly = false
#spring.datasource.items[primary].hikari.registerMbeans = false
#spring.datasource.items[primary].hikari.catalog =
#spring.datasource.items[primary].hikari.connectionInitSql =
#spring.datasource.items[primary].hikari.driverClassName =
#spring.datasource.items[primary].hikari.transactionIsolation =
#spring.datasource.items[primary].hikari.validationTimeout = 5000
#spring.datasource.items[primary].hikari.leakDetectionThreshold = 0
#spring.datasource.items[primary].hikari.dataSource =
#spring.datasource.items[primary].hikari.schema =
#spring.datasource.items[primary].hikari.threadFactory =
#spring.datasource.items[primary].hikari.scheduledExecutor =
##########################################################################
#(2100) spring.session configuration - io.sc.platform.mvc
##########################################################################
spring.session.store-type = none
#spring.session.store-type = jdbc
#spring.session.store-type = redis
spring.session.jdbc.initializer.enabled = false
spring.session.jdbc.cleanup-cron = 0 */5 * * * *
spring.session.redis.namespace = spring:session
spring.session.redis.cleanupCron = 0 */5 * * * *
##########################################################################
#(2200) spring web configuration (WebProperties) - io.sc.platform.mvc
##########################################################################
spring.web.resources.add-mappings = true
spring.web.resources.cache.cachecontrol.cache-public = true
spring.web.resources.cache.cachecontrol.must-revalidate = true
spring.web.resources.chain.cache = true
spring.web.resources.chain.compressed = true
##########################################################################
#(2300) management http server configuration - io.sc.platform.mvc
##########################################################################
management.endpoints.enabled-by-default = true
management.endpoints.web.exposure.include = *
management.context-path = /actuator
management.security.enabled = false
##########################################################################
#(2400) thymeleaf configuration - io.sc.platform.mvc
##########################################################################
spring.thymeleaf.enabled = true
spring.thymeleaf.cache = false
spring.thymeleaf.encoding = UTF-8
spring.thymeleaf.mode = HTML
spring.thymeleaf.prefix = classpath:/templates/
spring.thymeleaf.check-template = false
spring.thymeleaf.check-template-location = false
spring.thymeleaf.servlet.content-type = text/html
##########################################################################
#(2500) jackson configuration - io.sc.platform.mvc
##########################################################################
spring.jackson.time-zone = Asia/Shanghai
spring.jackson.date-format = yyyy-MM-dd HH:mm:ss
spring.jackson.serialization.indent_output = true
spring.jackson.serialization.fail_on_empty_beans = false
spring.jackson.deserialization.fail_on_ignored_properties = false
spring.jackson.parser.allow_comments = true
spring.jackson.parser.allow_single_quotes = true
spring.jackson.parser.allow_trailing_comma = true
spring.jackson.parser.allow_unquoted_field_names = true
spring.jackson.parser.ignore_undefined = true
spring.jackson.parser.allow_unquoted_control_chars = true
##########################################################################
#(2600) i18n message source configuration - io.sc.platform.mvc
##########################################################################
spring.messages.alwaysUseMessageFormat = false
spring.messages.cacheDuration = -1
spring.messages.encoding = UTF-8
spring.messages.fallbackToSystemLocale = false
spring.messages.useCodeAsDefaultMessage = false
##########################################################################
#(2700) servlet multipart configuration - io.sc.platform.mvc
##########################################################################
spring.servlet.multipart.enabled = true
spring.servlet.multipart.file-size-threshold = 1GB
spring.servlet.multipart.location = ${application.home.dir}/work/web/upload
spring.servlet.multipart.max-file-size = 1GB
spring.servlet.multipart.max-request-size = 1GB
spring.servlet.multipart.resolve-lazily = false
##########################################################################
#(3000) platform web security configuration - io.sc.platform.security.loginform
##########################################################################
spring.security.jwt.rsa.jwk-key-id = io.sc.platform.security.rsa.jwk-key-id
spring.security.jwt.rsa.public-key-location = file://${dir.config.jwt}/public-key.txt
spring.security.jwt.rsa.private-key-location = file://${dir.config.jwt}/private-key.txt
spring.security.formLogin.loginPage = /
spring.security.formLogin.loginProcessingUrl = /login
spring.security.formLogin.failureUrl = /login-error
spring.security.logout.logoutUrl = /logout
spring.security.logout.logoutSuccessUrl = /
##########################################################################
#(4000) email configuration - io.sc.platform.communication
##########################################################################
spring.mail.host = zzz.xxx.yyy
spring.mail.port = 25
spring.mail.protocol = smtp
spring.mail.test-connection = false
spring.mail.default-encoding = UTF-8
spring.mail.properties.mail.smtp.auth = true
spring.mail.username = xxx
spring.mail.password = yyy
##########################################################################
#(5000) flowable bpm configuration - io.sc.platform.flowable
##########################################################################
# core
flowable.asyncExecutorActivate = false
flowable.asyncHistoryExecutorActivate = false
flowable.check-process-definitions = false
flowable.custom-mybatis-mappers =
flowable.custom-mybatis-x-m-l-mappers =
flowable.database-schema =
flowable.database-schema-update = true
flowable.db-history-used = true
flowable.deployment-name = SpringBootAutoDeployment
flowable.history-level =
flowable.process-definition-location-prefix = classpath*:/processes/
flowable.process-definition-location-suffixes = **.bpmn20.xml,**.bpmn
# process
flowable.process.definition-cache-limit = -1
flowable.process.enable-safe-xml = true
flowable.process.servlet.load-on-startup = -1
flowable.process.servlet.name = Flowable BPMN Rest API
flowable.process.servlet.path = /process-api
# cmmn
flowable.cmmn.enabled = false
# content
flowable.content.enabled = false
# dmn
flowable.dmn.enabled = false
# form
flowable.form.enabled = false
# idm
flowable.idm.enabled = false
##########################################################################
#(8000) cxf configuration - io.sc.platform.ws.cxf
##########################################################################
cxf.path = /webservices
##########################################################################
#(9000) p6spy configuration - io.sc.platform.jdbc
##########################################################################
p6spy.enabled = true
p6spy.ignorePattern = true
##########################################################################
#(10000) scheduler manager configuration - io.sc.platform.scheduler.executor
##########################################################################
scheduler.manager.urls[0] = http://localhost:8080/
##########################################################################
#(10001) scheduler executor configuration - io.sc.platform.scheduler.executor
##########################################################################
scheduler.executor.name = default
##########################################################################
#(10010) ai server configuration - io.sc.platform.ai
##########################################################################
ai.ollama.api-host = http://localhost:11434

48
app.platform/src/main/resources/config/banner.txt

@ -0,0 +1,48 @@
**************************************************************************************
Name: app.platform
Version: ${application.version}
Base on Spring Boot ${spring-boot.version}
**************************************************************************************
System.environment:
--------------------------------------------------------------------------------------
java.specification.version = 17
java.specification.vendor = Oracle Corporation
java.specification.name = Java Platform API Specification
java.vm.specification.version = 17
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.name = Java Virtual Machine Specification
java.home = /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
java.version = 17.0.7
java.vendor = Oracle Corporation
java.vendor.url = https://java.oracle.com/
java.vm.version = 17.0.7+8-LTS-224
java.vm.vendor = Oracle Corporation
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.class.version = 61.0
java.class.path = ${java.class.path2}
java.library.path = /Users/wangshaoping/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
java.io.tmpdir = /var/folders/82/6m96_g610hj1v1tcpvhtjysr0000gn/T/
java.ext.dirs = ${java.ext.dirs}
os.name = Mac OS X
os.arch = aarch64
os.version = 15.2
user.name = wangshaoping
user.home = /Users/wangshaoping
user.dir = /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform
Application.environment
--------------------------------------------------------------------------------------
application.name = app.platform
application.is-running-in-development = true
application.is-running-in-web-container = false
application.home.dir = /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform
application.installer.enabled = ${application.installer.enabled}
application.updater.enabled = ${application.updater.enabled}
application.audit-log-mode = ${application.audit-log-mode}
spring.config.location = file:/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/config/application.properties
spring.banner.location = file:/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/config/banner.txt
logging.config = file:/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/config/logback-spring.xml
p6spy.enabled = ${p6spy.enabled}
p6spy.ignorePattern = ${p6spy.ignorePattern}
**************************************************************************************

9
app.platform/src/main/resources/config/license.lic

@ -0,0 +1,9 @@
RQ9OoShN2sicAxBzT4v3XW2p42iF7MjVMvyIjgh039fWOxdEK86b7LI7+O0m+UpYC4p/Pe86wVgi
GiTOzDmKGWpJN5qFyob33YQtgPLsnfLQclnoh0sbn1gqJejRFNQYpozEoC8T2B9Gnk5b/+O1Wy4f
9L6jv1U2E8wPM3SWvzccHVnjSQpbYJSdnP4QtH4v6BBAfmYtf84wkgOJqgXsXyGv6U//hdkyYzFB
8ieTCqz+2mrIyxYHZXrCmQOIYbvgflTFcElmv+k6wFSvLkiF/YoGcAIw/CljISPO4Worp4N6Z8rT
6Ukl5t+MKPdQS4/nWN6UtuRxqGLIlqJr9Q/4LkPIO+tuVJUr0+F6e54eX3quU5jmMuJ3vYRhnIDF
DkKA0bwsVqmML3odzCqhFONXGkqHMtiBmrOb5c3zNoLGcNN5r3vajqp0aWywaFKmNJPv4/vMdy+f
IBwMHBnSgbTRQVOQjWVC2pgecT6RFbRvwFKabIDxr+8EQ8cyxhgVDcvytYTVYoUPJSfOd5U3lDoe
/p9M+yX6uzEfpg9S1ytKacjv1gXQRMzKPczhCKO0945k6UGroybCo6xLGLJAn259NcNF5D7yIpFK
hA8b0EFZq/b717+ydjPj40wQIitfYeptAFSIwSCxgT4EhFWW4luhqk23P/CPy6JfGxvYiblj+7c=

129
app.platform/src/main/resources/config/logback-spring.xml

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 自动扫描本文件,如果发生变化,则重新初始化日志系统,并设置每隔5秒钟扫描一次 -->
<configuration debug="false" scan="true" scanPeriod="5 seconds">
<!--
以下为 logback 的 spring 扩展支持的功能,即支持从 application.properties 文件中获取属性,并在此文件中采用 ${} 方式使用。
要使用此功能,必须使用 logback-ext-spring 扩展 jar 包,以 gradle 构建系统,则需要加入以下依赖
dependencies {
compile(
"org.logback-extensions:logback-ext-spring:0.1.2"
)
}
-->
<property name="homedir" value="/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform"/>
<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
<!--
<appender name="STDOUT_DEBUG" class="ch.qos.logback.core.ConsoleAppender" description="控制台日志, 仅显示 INFO+ 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" description="控制台日志, 仅显示 DEBUG+ 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender" description="所有日志文件, 显示 TRACE+ 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<file>${homedir}/logs/log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${homedir}/logs/log.%d.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
</appender>
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender" description="信息日志文件, 仅显示 DEBUG 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<file>${homedir}/logs/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${homedir}/logs/debug.%d.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender" description="信息日志文件, 仅显示 INFO 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<file>${homedir}/logs/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${homedir}/logs/info.%d.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender" description="警告日志文件,, 仅显示 WARN 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<file>${homedir}/logs/warn.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${homedir}/logs/warn.%d.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender" description="错误日志文件, 仅显示 ERROR 的日志">
<encoder><pattern>${pattern}</pattern></encoder>
<file>${homedir}/logs/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${homedir}/logs/error.%d.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="FILE_DEBUG" />
<appender-ref ref="FILE_INFO" />
<appender-ref ref="FILE_WARN" />
<appender-ref ref="FILE_ERROR" />
</root>
<logger name="io.sc.engine.rule.generated" level="debug">
<appender-ref ref="STDOUT_DEBUG" />
</logger>
-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>${pattern}</pattern></encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
<logger name="io.sc.engine.rule.generated" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
</configuration>

4
cips.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "cips.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
erm.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "erm.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
gradle.properties

@ -37,9 +37,9 @@ application_version=1.0.0
# platform
###########################################################
platform_group=io.sc
platform_version=8.2.23
platform_version=8.2.24
platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.83
platform_core_frontend_version=8.2.84
###########################################################
# dependencies version

4
io.sc.engine.mv.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.mv.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

32
io.sc.engine.rule.client/src/main/resources/META-INF/platform/plugins/exportable-resources.json

@ -29,31 +29,31 @@
},
{
"type" :"file",
"name" :"io.sc.engine.rule.core-8.2.22.jar",
"description" :"io.sc.engine.rule.core-8.2.22.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.core-8.2.22.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.core-8.2.22.jar"
"name" :"io.sc.engine.rule.core-8.2.23.jar",
"description" :"io.sc.engine.rule.core-8.2.23.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.core-8.2.23.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.core-8.2.23.jar"
},
{
"type" :"file",
"name" :"io.sc.platform.util-8.2.22.jar",
"description" :"io.sc.platform.util-8.2.22.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.platform.util-8.2.22.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.platform.util-8.2.22.jar"
"name" :"io.sc.platform.util-8.2.23.jar",
"description" :"io.sc.platform.util-8.2.23.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.platform.util-8.2.23.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.platform.util-8.2.23.jar"
},
{
"type" :"file",
"name" :"io.sc.creditreport.core-8.2.22.jar",
"description" :"io.sc.creditreport.core-8.2.22.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.creditreport.core-8.2.22.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.creditreport.core-8.2.22.jar"
"name" :"io.sc.creditreport.core-8.2.23.jar",
"description" :"io.sc.creditreport.core-8.2.23.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.creditreport.core-8.2.23.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.creditreport.core-8.2.23.jar"
},
{
"type" :"file",
"name" :"io.sc.engine.rule.client.spring-8.2.22.jar",
"description" :"io.sc.engine.rule.client.spring-8.2.22.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.client.spring-8.2.22.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.client.spring-8.2.22.jar"
"name" :"io.sc.engine.rule.client.spring-8.2.23.jar",
"description" :"io.sc.engine.rule.client.spring-8.2.23.jar",
"sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.client.spring-8.2.23.jar"],
"target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.client.spring-8.2.23.jar"
},
{

4
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl

@ -2,7 +2,7 @@
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.type.TypeReference;
import groovy.transform.Canonical;
import io.sc.engine.rule.client.Executor;
import io.sc.engine.rule.core.client.Executor;
import io.sc.engine.rule.core.ResourceAbstract;
import io.sc.engine.rule.core.RuleSetResult;
import io.sc.engine.rule.core.SingleRuleResult;
@ -26,8 +26,6 @@ import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import java.util.Random;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static io.sc.engine.rule.core.function.ArithmeticFunction.multiply;

2
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/processor/sql.tpl

@ -1 +1 @@
#(tabs(SqlFieldMapping.groovy(parameter,processor,model),2))
#(tabs(SqlFieldMapping.groovy(parameter,processor),2))

4
io.sc.engine.rule.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.rule.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java

@ -568,8 +568,8 @@ public class TestCaseServiceImpl extends DaoServiceImpl<TestCaseEntity, String,
for(int i=0;i<maxCol;i++){
names.add(row.getCell(i).getStringCellValue());
}
Map<String, Object> parameters = new HashMap<>();
for(int rowIndex=7; rowIndex<=maxRow;rowIndex++) {
Map<String, Object> parameters = new HashMap<>();
row = sheet.getRow(rowIndex);
//组装参数
for (int colIndex = 2; colIndex < maxCol; colIndex++) {

4
io.sc.engine.st.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.st.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.ai.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.ai.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.83",
"version": "8.2.84",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.83",
"version": "8.2.84",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.83",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

10
io.sc.platform.core/src/main/java/io/sc/platform/core/Environment.java

@ -28,8 +28,10 @@ public class Environment {
private boolean isRunningInDevelopment;
private boolean isRunningInWebContainer;
private boolean isMultiCorportationMode;
private boolean isConfigInClasspath;
private RuntimeStatus runtimeStatus;
private static class EnvironmentHolder{
private static Environment instance =new Environment();
}
@ -95,6 +97,14 @@ public class Environment {
isMultiCorportationMode = multiCorportationMode;
}
public boolean isConfigInClasspath() {
return isConfigInClasspath;
}
public void setConfigInClasspath(boolean configInClasspath) {
isConfigInClasspath = configInClasspath;
}
public RuntimeStatus getRuntimeStatus() {
return runtimeStatus;
}

17
io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/LicenseManagerServiceImpl.java

@ -1,6 +1,7 @@
package io.sc.platform.core.service.impl;
import io.sc.platform.core.DirectoryManager;
import io.sc.platform.core.Environment;
import io.sc.platform.core.License;
import io.sc.platform.core.enums.LicenseStatus;
import io.sc.platform.core.exception.LicenseInvalidatedException;
@ -9,10 +10,13 @@ import io.sc.platform.core.util.*;
import io.sc.platform.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.io.FileInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Calendar;
@ -38,8 +42,17 @@ public class LicenseManagerServiceImpl implements LicenseManagerService {
@Override
public void load() {
try {
String file = DirectoryManager.getInstance().getByName(DirectoryManager.CONFIG_DIR) + "/license.lic";
String licenseString = FileUtil.readString(new FileInputStream(file), "UTF-8");
InputStream inputStream =null;
if(Environment.getInstance().isConfigInClasspath()){
Resource rs =new DefaultResourceLoader().getResource("classpath:/config/license.lic");
if(rs.exists()) {
inputStream =rs.getInputStream();
}
}else {
String file = DirectoryManager.getInstance().getByName(DirectoryManager.CONFIG_DIR) + "/license.lic";
inputStream =new FileInputStream(file);
}
String licenseString = FileUtil.readString(inputStream, "UTF-8");
String publicKey = RSAUtil.loadPublicKeyBase64String("classpath:/license.publicKey.txt");
byte[] encrypted = RSAUtil.decryptByPublicKey(Base64.getMimeDecoder().decode(licenseString), publicKey);
String json = new String(encrypted, StandardCharsets.UTF_8);

15
io.sc.platform.core/src/main/java/io/sc/platform/core/springboot/BeforeEnvironmentProcessor.java

@ -48,6 +48,7 @@ public class BeforeEnvironmentProcessor implements EnvironmentPostProcessor, Ord
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Environment.getInstance().setMultiCorportationMode(environment.getProperty(Environment.KEY_IS_MULTI_CORPORATION_MODE,Boolean.class,false));
Environment.getInstance().setConfigInClasspath(environment.getProperty("cp_config",Boolean.class,false));
// 将属性添加到 spring boot ConfigurableEnvironment 最后,拥有最低优先级
platformProperties.put(Environment.KEY_APPLICATION_NAME,Environment.getInstance().getApplicationName());
@ -65,9 +66,17 @@ public class BeforeEnvironmentProcessor implements EnvironmentPostProcessor, Ord
// 设置系统属性
String applicationName =Environment.getInstance().getApplicationName();
platformProperties.put("spring.application.name",applicationName);
platformProperties.put("spring.config.location", FILE_PREFIX + applicationHomeDir + "/config/application.properties");
platformProperties.put("spring.banner.location", FILE_PREFIX + applicationHomeDir + "/config/banner.txt");
platformProperties.put("logging.config", FILE_PREFIX + applicationHomeDir + "/config/logback-spring.xml");
//设置配置文件路径
if(Environment.getInstance().isConfigInClasspath()){
platformProperties.put("spring.config.location", "classpath:/config/application.properties");
platformProperties.put("spring.banner.location", "classpath:/config/banner.txt");
platformProperties.put("logging.config", "classpath:/config/logback-spring.xml");
}else {
platformProperties.put("spring.config.location", FILE_PREFIX + applicationHomeDir + "/config/application.properties");
platformProperties.put("spring.banner.location", FILE_PREFIX + applicationHomeDir + "/config/banner.txt");
platformProperties.put("logging.config", FILE_PREFIX + applicationHomeDir + "/config/logback-spring.xml");
}
// 设置插件贡献的系统属性
SpringFactoriesLoader.loadFactories(PluginSpiService.class, this.getClass().getClassLoader());

4
io.sc.platform.developer.doc/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.doc",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"main": "index.js",
"scripts": {
@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15"
},
"dependencies": {
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"vue": "3.5.13",
"vue-i18n": "11.0.1"

4
io.sc.platform.developer.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

3
io.sc.platform.installer/src/main/java/io/sc/platform/installer/service/impl/InstallerServiceImpl.java

@ -39,6 +39,9 @@ public class InstallerServiceImpl implements InstallerService {
@Override
public boolean isInstalled() {
if(Environment.getInstance().isConfigInClasspath()){
return true;
}
if(isInstalled==null){
Resource resource =new DefaultResourceLoader().getResource("file:" + DirectoryManager.getInstance().getHomeDir() + "/config/.installed");
if(resource.exists()){

4
io.sc.platform.lcdp.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.lcdp.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.license.keygen.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.license.keygen.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.mvc.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.mvc.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.scheduler.manager.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.scheduler.manager.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.system.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.system.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

5
io.sc.platform.util/src/main/java/io/sc/platform/util/compiler/memory/MemoryJavaCompilerClassLoader.java

@ -30,4 +30,9 @@ public class MemoryJavaCompilerClassLoader extends URLClassLoader {
classBytes.remove(className);
return defineClass(className, buffer, 0, buffer.length);
}
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
return super.loadClass(name);
}
}

4
io.sc.standard.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.standard.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.website/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.website",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"main": "index.js",
"scripts": {
@ -28,6 +28,6 @@
},
"dependencies": {
"vue": "3.5.13",
"platform-core": "8.2.82"
"platform-core": "8.2.84"
}
}

4
wra.report.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "wra.report.frontend",
"version": "8.2.22",
"version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.82",
"platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

Loading…
Cancel
Save