From 831ad6c1eda7106e797336a189e6df35fdac14a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Mon, 29 Jan 2024 18:13:05 +0800 Subject: [PATCH] =?UTF-8?q?2.0-=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86xm?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=201=E4=BA=A7=E5=93=81=E3=80=81=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=97=E8=A1=A8=E5=90=8E=E7=AB=AF=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E9=83=A8=E9=97=A8=E8=87=AA=E5=8A=A8=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=97=A0=E6=9D=83=E9=99=90=E6=9F=A5=E8=AF=A2=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=202=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E8=AE=BE=E7=BD=AE=E3=80=81=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=88=86=E5=88=AB=E5=A2=9E=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=A8=8B=E5=BA=A6=E9=80=89=E9=A1=B9=203?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2=E4=BA=A7=E5=93=81=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E3=80=81=E9=A1=B9=E7=9B=AE=E7=BC=96=E8=BE=91=E5=88=86?= =?UTF-8?q?=E5=88=AB=E5=A2=9E=E5=8A=A0=E5=BD=92=E5=B1=9E=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=204=E8=A1=A8xm=5Fproduct=E3=80=81xm=5Fprojec?= =?UTF-8?q?t=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5show=5Fout=E3=80=81deptid?= =?UTF-8?q?=5Fpath?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xm-bootstrap/pom.xml | 13 +- .../src/main/java/com/XmApplication.java | 2 - .../src/main/resources/application-prod.yml | 19 +- xm-cloud-bootstrap/README.md | 0 xm-cloud-bootstrap/pom.xml | 52 ++ .../src/main/java/com/AutoConfig.java | 15 + .../src/main/java/com/SwaggerConfig.java | 100 ++++ .../src/main/java/com/WebSecurityConfig.java | 66 +++ .../src/main/java/com/XmApplication.java | 17 + .../src/main/resources/application-prod.yml | 278 ++++++++++ .../src/main/resources/application.yml | 5 + .../db/activiti.oracle.create.engine.sql | 510 ++++++++++++++++++ .../db/activiti.oracle.create.history.sql | 156 ++++++ .../db/activiti.oracle.create.identity.sql | 48 ++ .../resources/locale/message_zh.properties | 8 + .../src/main/resources/logback-spring.xml | 36 ++ .../src/main/resources/processes/readme.txt | 0 .../com/xm/core/ctrl/XmProductController.java | 10 + .../com/xm/core/ctrl/XmProjectController.java | 11 + .../java/com/xm/core/entity/XmProduct.java | 7 + .../java/com/xm/core/entity/XmProject.java | 5 +- .../com/xm/core/mapper/XmProductMapper.xml | 16 + .../com/xm/core/mapper/XmProjectMapper.xml | 17 + 23 files changed, 1377 insertions(+), 14 deletions(-) create mode 100644 xm-cloud-bootstrap/README.md create mode 100644 xm-cloud-bootstrap/pom.xml create mode 100644 xm-cloud-bootstrap/src/main/java/com/AutoConfig.java create mode 100644 xm-cloud-bootstrap/src/main/java/com/SwaggerConfig.java create mode 100644 xm-cloud-bootstrap/src/main/java/com/WebSecurityConfig.java create mode 100644 xm-cloud-bootstrap/src/main/java/com/XmApplication.java create mode 100644 xm-cloud-bootstrap/src/main/resources/application-prod.yml create mode 100644 xm-cloud-bootstrap/src/main/resources/application.yml create mode 100644 xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.engine.sql create mode 100644 xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.history.sql create mode 100644 xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.identity.sql create mode 100644 xm-cloud-bootstrap/src/main/resources/locale/message_zh.properties create mode 100644 xm-cloud-bootstrap/src/main/resources/logback-spring.xml create mode 100644 xm-cloud-bootstrap/src/main/resources/processes/readme.txt diff --git a/xm-bootstrap/pom.xml b/xm-bootstrap/pom.xml index 4e3d4262..39fd8f83 100644 --- a/xm-bootstrap/pom.xml +++ b/xm-bootstrap/pom.xml @@ -4,26 +4,21 @@ 4.0.0 xm-bootstrap jar - xm-bootstrap 唛盟云-项目管理系统服务端启动器 + xm-bootstrap 唛盟云-项目管理系统服务端单体应用启动器 com.xm xm-backend 2.0.0-RELEASE - - com.xm - xm-core - com.mdp - mdp-oauth2-client-cloud + mdp-boot-starter ${mdp.version} - com.mdp - mdp-cloud-starter - ${mdp.version} + com.xm + xm-core diff --git a/xm-bootstrap/src/main/java/com/XmApplication.java b/xm-bootstrap/src/main/java/com/XmApplication.java index 410f5e25..fe8eb5ff 100644 --- a/xm-bootstrap/src/main/java/com/XmApplication.java +++ b/xm-bootstrap/src/main/java/com/XmApplication.java @@ -1,10 +1,8 @@ package com; import org.springframework.boot.SpringApplication; -import org.springframework.cloud.client.SpringCloudApplication; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -@SpringCloudApplication @EnableRedisHttpSession public class XmApplication { diff --git a/xm-bootstrap/src/main/resources/application-prod.yml b/xm-bootstrap/src/main/resources/application-prod.yml index 1d84a84a..4700b290 100644 --- a/xm-bootstrap/src/main/resources/application-prod.yml +++ b/xm-bootstrap/src/main/resources/application-prod.yml @@ -268,10 +268,25 @@ logging: # mdp平台授权验证服务器访问地址 cloud环境下换成 http://gate,本地调试如果不起验证服务器,可改为 https://www.qingqinkj.com/api/m1/oauth2/oauth2 # 客户端必须在数据库表adm.oauth_client_details中配置,否则无法访问 mdp: - api-gate: http://gate + #cloud环境下换成 http://gate,如果是本地运行,填写服务器的gate的微服务的ip地址及端口即可;如果不需要调第三方接口,无须填写 + api-gate: http://127.0.0.1:7014 + #平台管理机构号 platform-branch-id: platform-branch-001 - # 站点语言类型cn\en等 + #配置图片文件上传下载的相关参数 + arc: + #图片上传存放的根目录 + image-upload-root-path: D:/arcfile/images + #图片下载、预览的url前缀 + image-download-base-uri: https://127.0.1:7014/ + #文件上传存放的根目录 + file-upload-root-path: D:/arcfile/files + #文件下载、预览的url前缀 + file-download-base-uri: https://127.0.1:7014/ + # 站点语言类型中文站点cn、英文站点en等 site-type: cn + jwt: + # 如果不对接oauth2授权中心,jwt将由本地系统自行分发自行验证 设为false + connect-oauth2-server: false oauth2: server: uri: http://oauth2server diff --git a/xm-cloud-bootstrap/README.md b/xm-cloud-bootstrap/README.md new file mode 100644 index 00000000..e69de29b diff --git a/xm-cloud-bootstrap/pom.xml b/xm-cloud-bootstrap/pom.xml new file mode 100644 index 00000000..aa12d8b4 --- /dev/null +++ b/xm-cloud-bootstrap/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + xm-bootstrap + jar + xm-bootstrap 唛盟云-项目管理系统服务端cloud启动器 + + com.xm + xm-backend + 2.0.0-RELEASE + + + + com.xm + xm-core + + + com.mdp + mdp-oauth2-client-cloud + ${mdp.version} + + + com.mdp + mdp-cloud-starter + ${mdp.version} + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + 唛盟云-项目管理系统微服务启动器 + \ No newline at end of file diff --git a/xm-cloud-bootstrap/src/main/java/com/AutoConfig.java b/xm-cloud-bootstrap/src/main/java/com/AutoConfig.java new file mode 100644 index 00000000..eb3c3b90 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/java/com/AutoConfig.java @@ -0,0 +1,15 @@ +package com; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +/** + * 要使用mdp平台功能,必须 扫码com.mdp包 + * 一些默认公共配置 + */ +@ComponentScan(basePackages={"com.mdp"}) +@Configuration +public class AutoConfig { +} diff --git a/xm-cloud-bootstrap/src/main/java/com/SwaggerConfig.java b/xm-cloud-bootstrap/src/main/java/com/SwaggerConfig.java new file mode 100644 index 00000000..565943e3 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/java/com/SwaggerConfig.java @@ -0,0 +1,100 @@ +package com; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.ArrayList; +import java.util.List; + +/** + * api 文档, + * 生产环境需要禁止访问,每个项目需要单独引入swagger包,不能继承 + * 如果要mdp swagger enhance生效,必须 把启动文件置于com.mdp的上层或者顶层目录下,否则加载不到升级文件 + * mdp swagger enhance主要解决的是接收参数是map的时候的文档输出问题。参考 https://blog.csdn.net/x11819130/article/details/111608470 + * 需要将下面路径放到 WebSecurityConfig 中 + * + * "/swagger-ui.html", + * "/webjars/**", + * "/swagger-ui/**", + * "/swagger-resources/**", + * "/v2/*", + * "/csrf", + * "/" + */ + +//@ConditionalOnProperty(havingValue = "dev",name = {"spring.profiles.active"}) +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + @Value(value = "${spring.application.name:}") + String applicationName=""; + + @Value(value = "${spring.application.name:}") + String springProfilesActive=""; + + @Value(value = "${server.port:}") + String serverPort=""; + + @Value(value = "${swagger2.enable:true}") + boolean enableSwagger2; + + @Bean + public Docket customDocket() { + ParameterBuilder tokenPar= new ParameterBuilder(); + List pars=new ArrayList<>(); + tokenPar.name("Authorization").description("令牌 格式:【bearer 令牌值】,注意bearer后根一个空格。").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); + pars.add(tokenPar.build()); + tokenPar.name("accessToken").description("令牌,直接填写令牌值").modelRef(new ModelRef("string")).parameterType("query").required(false).build(); + pars.add(tokenPar.build()); + Docket docket= new Docket(DocumentationType.SWAGGER_2).select(). + apis(RequestHandlerSelectors.any()) + .build().globalOperationParameters(pars) + .apiInfo(apiInfo()).enable(enableSwagger2); + + /* + * 下面的语句是开启对JWT的支持,当用户用Swagger调用受JWT认证保护的方法, + * 必须要先提交参数(例如令牌) + */ + //存储用户必须提交的参数 + List apikey = new ArrayList(); + //规定用户需要输入什么参数 + apikey.add(new ApiKey("accesToken", "accesToken", "accesToken")); + docket.securitySchemes(apikey); + + //以下定义如果用户JWT认证通过,则在Swagger中全局有效 + AuthorizationScope scope = new AuthorizationScope("global", "accessEverything"); + AuthorizationScope[] scopeArray = {scope}; + //存储令牌和作用域 + SecurityReference reference = new SecurityReference("token", scopeArray); + List refList = new ArrayList(); + refList.add(reference); + SecurityContext context = SecurityContext.builder().securityReferences(refList).build(); + List cxtList = new ArrayList(); + cxtList.add(context); + docket.securityContexts(cxtList); + return docket; + } + + + private ApiInfo apiInfo() { + Contact contact = new Contact("广州擎勤网络科技有限公司", String.format("https://www.qingqinkj.com/api/m1/%s/swagger-ui.html",applicationName), "cyc58469@163.com"); + return new ApiInfoBuilder() + .title("唛盟接口") + .description(String.format("接口文档 本地访问地址 http://localhost:%s/swagger-ui.html",serverPort)) + .contact(contact) + .version("1.0.0") + .build(); + } + + +} diff --git a/xm-cloud-bootstrap/src/main/java/com/WebSecurityConfig.java b/xm-cloud-bootstrap/src/main/java/com/WebSecurityConfig.java new file mode 100644 index 00000000..a64fb0b1 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/java/com/WebSecurityConfig.java @@ -0,0 +1,66 @@ +package com; + +import com.mdp.safe.client.jwt.JwtAuthenticationConverter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.oauth2.jwt.JwtDecoder; + +/** + * com.qqkj.WebSecurityConfig + * + * @author chenyc + * @date 2019/10/10 + */ +@EnableWebSecurity +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + + @Autowired + JwtAuthenticationConverter jwtConverter; + + + @Autowired + JwtDecoder jwtDecoder; + + @Override + public void configure(WebSecurity web) throws Exception { + web.ignoring().antMatchers("/webjars/**"); + } + + /** + * 允许匿名访问所有接口 主要是 oauth 接口 + * @param http + * @throws Exception + */ + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests().antMatchers( + "/**/xm/core/xmTask/shareTaskDetail", + "/**/xm/core/xmTask/getOutTask", + "/**/xm/core/xmTask/upBrowseTimes", + "/**/xm/core/xmBranchState/list/portal/allBranchSum", + "/**/xm/core/xmProjectState/list/portal", + "/**/core/xmRecordVisit/add", + + "/swagger-ui.html", + "/webjars/**", + "/swagger-ui/**", + "/swagger-resources/**", + "/v2/*", + "/csrf", + "/" + + ).permitAll(). + + anyRequest().authenticated(); + http.oauth2Client().and().logout().disable(); + http.formLogin().usernameParameter("userloginid"); + http.oauth2Login(); + http.oauth2ResourceServer().jwt().decoder(jwtDecoder).jwtAuthenticationConverter(jwtConverter); + http.csrf().disable(); + } + +} diff --git a/xm-cloud-bootstrap/src/main/java/com/XmApplication.java b/xm-cloud-bootstrap/src/main/java/com/XmApplication.java new file mode 100644 index 00000000..410f5e25 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/java/com/XmApplication.java @@ -0,0 +1,17 @@ +package com; + +import org.springframework.boot.SpringApplication; +import org.springframework.cloud.client.SpringCloudApplication; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; + +@SpringCloudApplication +@EnableRedisHttpSession +public class XmApplication { + + + public static void main(String[] args) { + SpringApplication.run(XmApplication.class,args); + + } + +} diff --git a/xm-cloud-bootstrap/src/main/resources/application-prod.yml b/xm-cloud-bootstrap/src/main/resources/application-prod.yml new file mode 100644 index 00000000..1d84a84a --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/application-prod.yml @@ -0,0 +1,278 @@ +server: + port: 7067 + servlet: + context-path: + session: + timeout: 43200 + storeType: none + tomcat: + max-swallow-size: -1 + util: + http: + parser: + HttpParser: requestTargetAllow=|{}[] + error: + include-exception: true + include-stacktrace: ALWAYS + include-message: ALWAYS + compression: + enabled: true + min-response-size: 1024 + mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/* + +management: + endpoints: + web: + exposure: + include: metrics,httptrace + +spring: + cloud: + consul: + host: 134.175.57.249 + port: 8500 + inetutils: + preferredNetworks[0]: ^10\. + preferredNetworks[1]: ^172\. + discovery: + prefer-ip-address: true + healthCheckInterval: 15s + servlet: + multipart: + max-file-size: 10MB + max-request-size: 10MB + # 安全模块 + security: + oauth2: + resourceserver: + jwt: + jwk-set-uri: ${mdp.oauth2.server.uri}/oauth2/jwks + client: + # 下面配置 password 模式 + registration: + password-client: + provider: def-oauth-server + client-id: ${spring.application.name} + client-secret: ${spring.application.name}-8888 + authorization-grant-type: password + scope: all + # 下面配置 client_credentials 模式 + def-client: + provider: def-oauth-server + client-id: ${spring.application.name} + client-secret: ${spring.application.name}-8888 + authorization-grant-type: client_credentials + scope: all + # 下面配置authorization_code模式 + code-client: + provider: def-oauth-server + client-id: ${spring.application.name} + client-secret: ${spring.application.name}-8888 + authorization-grant-type: authorization_code + # 授权码模式下需要配置重定向地址 + redirect-uri: ${messages.base-uri}/authorized + scope: all + provider: + def-oauth-server: + # 授权码方式获取code + authorization-uri: ${mdp.oauth2.server.uri}/oauth2/authorize + # 获取token接口 + token-uri: ${mdp.oauth2.server.uri}/oauth2/token + mail: + host: smtp.mxhichina.com + port: 25 + username: kf@qingqinkj.com + password: QqKj@169$458 + default-encoding: UTF-8 + properties: + mail: + smtp: + auth: true + starttls: + enable: true + required: true + socketFactoryClass: javax.net.ssl.SSLSocketFactory + debug: true + jackson: + mapper: + default-view-inclusion: false + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + serialization: + indent_output: true + fail_on_empty_beans: false + deserialization: + fail_on_unknown_properties: false + parser: + allow_unquoted_control_chars: true + allow_single_quotes: true + + mvc: + date-format: yyyy-MM-dd HH:mm:ss + ## quartz定时任务,采用数据库方式 + quartz: + job-store-type: jdbc + initialize-schema: embedded + #定时任务启动开关,true-开 false-关 + auto-startup: false + #启动时更新己存在的Job + overwrite-existing-jobs: false + properties: + org: + quartz: + scheduler: + instanceName: MyScheduler + instanceId: AUTO + jobStore: + class: org.quartz.impl.jdbcjobstore.JobStoreTX + driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate + tablePrefix: QRTZ_ + isClustered: true + misfireThreshold: 60000 + clusterCheckinInterval: 10000 + threadPool: + class: org.quartz.simpl.SimpleThreadPool + threadCount: 10 + threadPriority: 5 + threadsInheritContextClassLoaderOfInitializingThread: true + jpa: + open-in-view: false + activiti: + check-process-definitions: false + #启用作业执行器 + async-executor-activate: false + #启用异步执行器 + job-executor-activate: false + aop: + proxy-target-class: true + #配置freemarker + freemarker: + # 设置模板后缀名 + suffix: .ftl + # 设置文档类型 + content-type: text/html + # 设置页面编码格式 + charset: UTF-8 + # 设置页面缓存 + cache: false + prefer-file-system-access: false + # 设置ftl文件路径 + template-loader-path: + - classpath:/templates + resource: + static-locations: classpath:/static/,classpath:/public/ + autoconfigure: + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure + datasource: + primary: master + strict: false, + druid: + stat-view-servlet: + enabled: true + loginUsername: root + loginPassword: 123456 + allow: + web-stat-filter: + enabled: true + dynamic: + druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) + # 连接池的配置信息 + # 初始化大小,最小,最大 + initial-size: 5 + min-idle: 5 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: stat,wall,slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + datasource: + master: + # url: jdbc:mysql://124.223.85.6:31605/xm?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true + #username: zchcgl + #password: zchcgl123!@# + #driver-class-name: com.mysql.cj.jdbc.Driver + + url: jdbc:mysql://123.207.117.5:3306/xm?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=CTT + username: root + password: 1qaz@WSX + driver-class-name: com.mysql.cj.jdbc.Driver + + + # 多数据源配置 + #multi-datasource1: + #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + #username: root + #password: root + #driver-class-name: com.mysql.cj.jdbc.Driver + mem-ds: + url: jdbc:mysql://123.207.117.5:3306/adm?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=CTT + username: root + password: 1qaz@WSX + driver-class-name: com.mysql.cj.jdbc.Driver + mall-ds: + url: jdbc:mysql://123.207.117.5:3306/adm?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=CTT + username: root + password: 1qaz@WSX + driver-class-name: com.mysql.cj.jdbc.Driver + #redis 配置 + redis: + database: 0 + host: 134.175.57.249 + timeout: 300s + lettuce: + pool: + max-active: 8 #最大连接数据库连接数,设 -1 为没有限制 + max-idle: 20 #最大等待连接中的数量,设 0 为没有限制 + max-wait: 10000 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 + min-idle: 8 #最小等待连接中的数量,设 0 为没有限制 + shutdown-timeout: 100ms + password: QqKj*123 + port: 6379 +#mybatis plus 设置 +mybatis-plus: + mapper-locations: classpath*:/**/**Mapper.xml + global-config: + # 关闭MP3.0自带的banner + banner: false + db-config: + #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)"; + id-type: ASSIGN_ID + # 默认数据库表下划线命名 + table-underline: true + logic-delete-value: 1 + logic-not-delete-value: 0 + configuration: + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 返回类型为Map,显示null对应的字段 + call-setters-on-nulls: true + +#Mybatis输出sql日志 +logging: + level: + org.jeecg.modules.system.mapper : info + +# mdp平台授权验证服务器访问地址 cloud环境下换成 http://gate,本地调试如果不起验证服务器,可改为 https://www.qingqinkj.com/api/m1/oauth2/oauth2 +# 客户端必须在数据库表adm.oauth_client_details中配置,否则无法访问 +mdp: + api-gate: http://gate + platform-branch-id: platform-branch-001 + # 站点语言类型cn\en等 + site-type: cn + oauth2: + server: + uri: http://oauth2server + diff --git a/xm-cloud-bootstrap/src/main/resources/application.yml b/xm-cloud-bootstrap/src/main/resources/application.yml new file mode 100644 index 00000000..f747d326 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/application.yml @@ -0,0 +1,5 @@ +spring: + application: + name: xm + profiles: + active: prod \ No newline at end of file diff --git a/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.engine.sql b/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.engine.sql new file mode 100644 index 00000000..664b7f35 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.engine.sql @@ -0,0 +1,510 @@ +create table ACT_GE_PROPERTY ( + NAME_ NVARCHAR2(64), + VALUE_ NVARCHAR2(300), + REV_ INTEGER, + primary key (NAME_) +); + +insert into ACT_GE_PROPERTY +values ('schema.version', '6.0.0.4', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(6.0.0.4)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + NAME_ NVARCHAR2(255), + DEPLOYMENT_ID_ NVARCHAR2(64), + BYTES_ BLOB, + GENERATED_ NUMBER(1,0) CHECK (GENERATED_ IN (1,0)), + primary key (ID_) +); + +create table ACT_RE_DEPLOYMENT ( + ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255), + CATEGORY_ NVARCHAR2(255), + KEY_ NVARCHAR2(255), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + DEPLOY_TIME_ TIMESTAMP(6), + ENGINE_VERSION_ NVARCHAR2(255), + primary key (ID_) +); + +create table ACT_RE_MODEL ( + ID_ NVARCHAR2(64) not null, + REV_ INTEGER, + NAME_ NVARCHAR2(255), + KEY_ NVARCHAR2(255), + CATEGORY_ NVARCHAR2(255), + CREATE_TIME_ TIMESTAMP(6), + LAST_UPDATE_TIME_ TIMESTAMP(6), + VERSION_ INTEGER, + META_INFO_ NVARCHAR2(2000), + DEPLOYMENT_ID_ NVARCHAR2(64), + EDITOR_SOURCE_VALUE_ID_ NVARCHAR2(64), + EDITOR_SOURCE_EXTRA_VALUE_ID_ NVARCHAR2(64), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RU_EXECUTION ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + PROC_INST_ID_ NVARCHAR2(64), + BUSINESS_KEY_ NVARCHAR2(255), + PARENT_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + SUPER_EXEC_ NVARCHAR2(64), + ROOT_PROC_INST_ID_ NVARCHAR2(64), + ACT_ID_ NVARCHAR2(255), + IS_ACTIVE_ NUMBER(1,0) CHECK (IS_ACTIVE_ IN (1,0)), + IS_CONCURRENT_ NUMBER(1,0) CHECK (IS_CONCURRENT_ IN (1,0)), + IS_SCOPE_ NUMBER(1,0) CHECK (IS_SCOPE_ IN (1,0)), + IS_EVENT_SCOPE_ NUMBER(1,0) CHECK (IS_EVENT_SCOPE_ IN (1,0)), + IS_MI_ROOT_ NUMBER(1,0) CHECK (IS_MI_ROOT_ IN (1,0)), + SUSPENSION_STATE_ INTEGER, + CACHED_ENT_STATE_ INTEGER, + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + NAME_ NVARCHAR2(255), + START_TIME_ TIMESTAMP(6), + START_USER_ID_ NVARCHAR2(255), + LOCK_TIME_ TIMESTAMP(6), + IS_COUNT_ENABLED_ NUMBER(1,0) CHECK (IS_COUNT_ENABLED_ IN (1,0)), + EVT_SUBSCR_COUNT_ INTEGER, + TASK_COUNT_ INTEGER, + JOB_COUNT_ INTEGER, + TIMER_JOB_COUNT_ INTEGER, + SUSP_JOB_COUNT_ INTEGER, + DEADLETTER_JOB_COUNT_ INTEGER, + VAR_COUNT_ INTEGER, + ID_LINK_COUNT_ INTEGER, + primary key (ID_) +); + +create table ACT_RU_JOB ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) NOT NULL, + LOCK_EXP_TIME_ TIMESTAMP(6), + LOCK_OWNER_ NVARCHAR2(255), + EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)), + EXECUTION_ID_ NVARCHAR2(64), + PROCESS_INSTANCE_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + RETRIES_ INTEGER, + EXCEPTION_STACK_ID_ NVARCHAR2(64), + EXCEPTION_MSG_ NVARCHAR2(2000), + DUEDATE_ TIMESTAMP(6), + REPEAT_ NVARCHAR2(255), + HANDLER_TYPE_ NVARCHAR2(255), + HANDLER_CFG_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RU_TIMER_JOB ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) NOT NULL, + LOCK_EXP_TIME_ TIMESTAMP(6), + LOCK_OWNER_ NVARCHAR2(255), + EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)), + EXECUTION_ID_ NVARCHAR2(64), + PROCESS_INSTANCE_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + RETRIES_ INTEGER, + EXCEPTION_STACK_ID_ NVARCHAR2(64), + EXCEPTION_MSG_ NVARCHAR2(2000), + DUEDATE_ TIMESTAMP(6), + REPEAT_ NVARCHAR2(255), + HANDLER_TYPE_ NVARCHAR2(255), + HANDLER_CFG_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RU_SUSPENDED_JOB ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) NOT NULL, + EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)), + EXECUTION_ID_ NVARCHAR2(64), + PROCESS_INSTANCE_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + RETRIES_ INTEGER, + EXCEPTION_STACK_ID_ NVARCHAR2(64), + EXCEPTION_MSG_ NVARCHAR2(2000), + DUEDATE_ TIMESTAMP(6), + REPEAT_ NVARCHAR2(255), + HANDLER_TYPE_ NVARCHAR2(255), + HANDLER_CFG_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RU_DEADLETTER_JOB ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) NOT NULL, + EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)), + EXECUTION_ID_ NVARCHAR2(64), + PROCESS_INSTANCE_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + EXCEPTION_STACK_ID_ NVARCHAR2(64), + EXCEPTION_MSG_ NVARCHAR2(2000), + DUEDATE_ TIMESTAMP(6), + REPEAT_ NVARCHAR2(255), + HANDLER_TYPE_ NVARCHAR2(255), + HANDLER_CFG_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RE_PROCDEF ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + CATEGORY_ NVARCHAR2(255), + NAME_ NVARCHAR2(255), + KEY_ NVARCHAR2(255) NOT NULL, + VERSION_ INTEGER NOT NULL, + DEPLOYMENT_ID_ NVARCHAR2(64), + RESOURCE_NAME_ NVARCHAR2(2000), + DGRM_RESOURCE_NAME_ varchar(4000), + DESCRIPTION_ NVARCHAR2(2000), + HAS_START_FORM_KEY_ NUMBER(1,0) CHECK (HAS_START_FORM_KEY_ IN (1,0)), + HAS_GRAPHICAL_NOTATION_ NUMBER(1,0) CHECK (HAS_GRAPHICAL_NOTATION_ IN (1,0)), + SUSPENSION_STATE_ INTEGER, + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + ENGINE_VERSION_ NVARCHAR2(255), + primary key (ID_) +); + +create table ACT_RU_TASK ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + EXECUTION_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255), + PARENT_TASK_ID_ NVARCHAR2(64), + DESCRIPTION_ NVARCHAR2(2000), + TASK_DEF_KEY_ NVARCHAR2(255), + OWNER_ NVARCHAR2(255), + ASSIGNEE_ NVARCHAR2(255), + DELEGATION_ NVARCHAR2(64), + PRIORITY_ INTEGER, + CREATE_TIME_ TIMESTAMP(6), + DUE_DATE_ TIMESTAMP(6), + CATEGORY_ NVARCHAR2(255), + SUSPENSION_STATE_ INTEGER, + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + FORM_KEY_ NVARCHAR2(255), + CLAIM_TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_RU_IDENTITYLINK ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + GROUP_ID_ NVARCHAR2(255), + TYPE_ NVARCHAR2(255), + USER_ID_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create table ACT_RU_VARIABLE ( + ID_ NVARCHAR2(64) not null, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) not null, + NAME_ NVARCHAR2(255) not null, + EXECUTION_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + BYTEARRAY_ID_ NVARCHAR2(64), + DOUBLE_ NUMBER(*,10), + LONG_ NUMBER(19,0), + TEXT_ NVARCHAR2(2000), + TEXT2_ NVARCHAR2(2000), + primary key (ID_) +); + +create table ACT_RU_EVENT_SUBSCR ( + ID_ NVARCHAR2(64) not null, + REV_ integer, + EVENT_TYPE_ NVARCHAR2(255) not null, + EVENT_NAME_ NVARCHAR2(255), + EXECUTION_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + ACTIVITY_ID_ NVARCHAR2(64), + CONFIGURATION_ NVARCHAR2(255), + CREATED_ TIMESTAMP(6) not null, + PROC_DEF_ID_ NVARCHAR2(64), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_EVT_LOG ( + LOG_NR_ NUMBER(19), + TYPE_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + TIME_STAMP_ TIMESTAMP(6) not null, + USER_ID_ NVARCHAR2(255), + DATA_ BLOB, + LOCK_OWNER_ NVARCHAR2(255), + LOCK_TIME_ TIMESTAMP(6) null, + IS_PROCESSED_ NUMBER(3) default 0, + primary key (LOG_NR_) +); + +create sequence act_evt_log_seq; + +create table ACT_PROCDEF_INFO ( + ID_ NVARCHAR2(64) not null, + PROC_DEF_ID_ NVARCHAR2(64) not null, + REV_ integer, + INFO_JSON_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_EXEC_ROOT on ACT_RU_EXECUTION(ROOT_PROC_INST_ID_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_); +create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_); +create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_); +create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); + +create index ACT_IDX_BYTEAR_DEPL on ACT_GE_BYTEARRAY(DEPLOYMENT_ID_); +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RE_PROCDEF + add constraint ACT_UNIQ_PROCDEF + unique (KEY_,VERSION_, TENANT_ID_); + +create index ACT_IDX_EXE_PROCINST on ACT_RU_EXECUTION(PROC_INST_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_PARENT on ACT_RU_EXECUTION(PARENT_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PARENT + foreign key (PARENT_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_SUPER + foreign key (SUPER_EXEC_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_PROCDEF on ACT_RU_EXECUTION(PROC_DEF_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_TSKASS_TASK on ACT_RU_IDENTITYLINK(TASK_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_TSKASS_TASK + foreign key (TASK_ID_) + references ACT_RU_TASK (ID_); + +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_ATHRZ_PROCEDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_IDL_PROCINST on ACT_RU_IDENTITYLINK(PROC_INST_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_IDL_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_PROCDEF on ACT_RU_TASK(PROC_DEF_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_VAR_EXE on ACT_RU_VARIABLE(EXECUTION_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_VAR_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION(ID_); + +create index ACT_IDX_VAR_BYTEARRAY on ACT_RU_VARIABLE(BYTEARRAY_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_BYTEARRAY + foreign key (BYTEARRAY_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_JOB_EXECUTION_ID on ACT_RU_JOB(EXECUTION_ID_); +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_EXECUTION + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_JOB_PROC_INST_ID on ACT_RU_JOB(PROCESS_INSTANCE_ID_); +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_PROCESS_INSTANCE + foreign key (PROCESS_INSTANCE_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_JOB_PROC_DEF_ID on ACT_RU_JOB(PROC_DEF_ID_); +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_PROC_DEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_JOB_EXCEPTION on ACT_RU_JOB(EXCEPTION_STACK_ID_); +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_TJOB_EXECUTION_ID on ACT_RU_TIMER_JOB(EXECUTION_ID_); +alter table ACT_RU_TIMER_JOB + add constraint ACT_FK_TJOB_EXECUTION + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TJOB_PROC_INST_ID on ACT_RU_TIMER_JOB(PROCESS_INSTANCE_ID_); +alter table ACT_RU_TIMER_JOB + add constraint ACT_FK_TJOB_PROCESS_INSTANCE + foreign key (PROCESS_INSTANCE_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TJOB_PROC_DEF_ID on ACT_RU_TIMER_JOB(PROC_DEF_ID_); +alter table ACT_RU_TIMER_JOB + add constraint ACT_FK_TJOB_PROC_DEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_TJOB_EXCEPTION on ACT_RU_TIMER_JOB(EXCEPTION_STACK_ID_); +alter table ACT_RU_TIMER_JOB + add constraint ACT_FK_TJOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_SJOB_EXECUTION_ID on ACT_RU_SUSPENDED_JOB(EXECUTION_ID_); +alter table ACT_RU_SUSPENDED_JOB + add constraint ACT_FK_SJOB_EXECUTION + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_SJOB_PROC_INST_ID on ACT_RU_SUSPENDED_JOB(PROCESS_INSTANCE_ID_); +alter table ACT_RU_SUSPENDED_JOB + add constraint ACT_FK_SJOB_PROCESS_INSTANCE + foreign key (PROCESS_INSTANCE_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_SJOB_PROC_DEF_ID on ACT_RU_SUSPENDED_JOB(PROC_DEF_ID_); +alter table ACT_RU_SUSPENDED_JOB + add constraint ACT_FK_SJOB_PROC_DEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_SJOB_EXCEPTION on ACT_RU_SUSPENDED_JOB(EXCEPTION_STACK_ID_); +alter table ACT_RU_SUSPENDED_JOB + add constraint ACT_FK_SJOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_DJOB_EXECUTION_ID on ACT_RU_DEADLETTER_JOB(EXECUTION_ID_); +alter table ACT_RU_DEADLETTER_JOB + add constraint ACT_FK_DJOB_EXECUTION + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_DJOB_PROC_INST_ID on ACT_RU_DEADLETTER_JOB(PROCESS_INSTANCE_ID_); +alter table ACT_RU_DEADLETTER_JOB + add constraint ACT_FK_DJOB_PROCESS_INSTANCE + foreign key (PROCESS_INSTANCE_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_DJOB_PROC_DEF_ID on ACT_RU_DEADLETTER_JOB(PROC_DEF_ID_); +alter table ACT_RU_DEADLETTER_JOB + add constraint ACT_FK_DJOB_PROC_DEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_DJOB_EXCEPTION on ACT_RU_DEADLETTER_JOB(EXCEPTION_STACK_ID_); +alter table ACT_RU_DEADLETTER_JOB + add constraint ACT_FK_DJOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_EVENT_SUBSCR on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_); +alter table ACT_RU_EVENT_SUBSCR + add constraint ACT_FK_EVENT_EXEC + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION(ID_); + +create index ACT_IDX_MODEL_SOURCE on ACT_RE_MODEL(EDITOR_SOURCE_VALUE_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE + foreign key (EDITOR_SOURCE_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_MODEL_SOURCE_EXTRA on ACT_RE_MODEL(EDITOR_SOURCE_EXTRA_VALUE_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE_EXTRA + foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_MODEL_DEPLOYMENT on ACT_RE_MODEL(DEPLOYMENT_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_DEPLOYMENT + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +create index ACT_IDX_PROCDEF_INFO_JSON on ACT_PROCDEF_INFO(INFO_JSON_ID_); +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_JSON_BA + foreign key (INFO_JSON_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_PROCDEF_INFO_PROC on ACT_PROCDEF_INFO(PROC_DEF_ID_); +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_UNIQ_INFO_PROCDEF + unique (PROC_DEF_ID_); diff --git a/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.history.sql b/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.history.sql new file mode 100644 index 00000000..05191157 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.history.sql @@ -0,0 +1,156 @@ +create table ACT_HI_PROCINST ( + ID_ NVARCHAR2(64) not null, + PROC_INST_ID_ NVARCHAR2(64) not null, + BUSINESS_KEY_ NVARCHAR2(255), + PROC_DEF_ID_ NVARCHAR2(64) not null, + START_TIME_ TIMESTAMP(6) not null, + END_TIME_ TIMESTAMP(6), + DURATION_ NUMBER(19,0), + START_USER_ID_ NVARCHAR2(255), + START_ACT_ID_ NVARCHAR2(255), + END_ACT_ID_ NVARCHAR2(255), + SUPER_PROCESS_INSTANCE_ID_ NVARCHAR2(64), + DELETE_REASON_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) default '', + NAME_ NVARCHAR2(255), + primary key (ID_), + unique (PROC_INST_ID_) +); + +create table ACT_HI_ACTINST ( + ID_ NVARCHAR2(64) not null, + PROC_DEF_ID_ NVARCHAR2(64) not null, + PROC_INST_ID_ NVARCHAR2(64) not null, + EXECUTION_ID_ NVARCHAR2(64) not null, + ACT_ID_ NVARCHAR2(255) not null, + TASK_ID_ NVARCHAR2(64), + CALL_PROC_INST_ID_ NVARCHAR2(64), + ACT_NAME_ NVARCHAR2(255), + ACT_TYPE_ NVARCHAR2(255) not null, + ASSIGNEE_ NVARCHAR2(255), + START_TIME_ TIMESTAMP(6) not null, + END_TIME_ TIMESTAMP(6), + DURATION_ NUMBER(19,0), + DELETE_REASON_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) default '', + primary key (ID_) +); + +create table ACT_HI_TASKINST ( + ID_ NVARCHAR2(64) not null, + PROC_DEF_ID_ NVARCHAR2(64), + TASK_DEF_KEY_ NVARCHAR2(255), + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + PARENT_TASK_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255), + DESCRIPTION_ NVARCHAR2(2000), + OWNER_ NVARCHAR2(255), + ASSIGNEE_ NVARCHAR2(255), + START_TIME_ TIMESTAMP(6) not null, + CLAIM_TIME_ TIMESTAMP(6), + END_TIME_ TIMESTAMP(6), + DURATION_ NUMBER(19,0), + DELETE_REASON_ NVARCHAR2(2000), + PRIORITY_ INTEGER, + DUE_DATE_ TIMESTAMP(6), + FORM_KEY_ NVARCHAR2(255), + CATEGORY_ NVARCHAR2(255), + TENANT_ID_ NVARCHAR2(255) default '', + primary key (ID_) +); + +create table ACT_HI_VARINST ( + ID_ NVARCHAR2(64) not null, + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255) not null, + VAR_TYPE_ NVARCHAR2(100), + REV_ INTEGER, + BYTEARRAY_ID_ NVARCHAR2(64), + DOUBLE_ NUMBER(*,10), + LONG_ NUMBER(19,0), + TEXT_ NVARCHAR2(2000), + TEXT2_ NVARCHAR2(2000), + CREATE_TIME_ TIMESTAMP(6), + LAST_UPDATED_TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_HI_DETAIL ( + ID_ NVARCHAR2(64) not null, + TYPE_ NVARCHAR2(255) not null, + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + ACT_INST_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255) not null, + VAR_TYPE_ NVARCHAR2(64), + REV_ INTEGER, + TIME_ TIMESTAMP(6) not null, + BYTEARRAY_ID_ NVARCHAR2(64), + DOUBLE_ NUMBER(*,10), + LONG_ NUMBER(19,0), + TEXT_ NVARCHAR2(2000), + TEXT2_ NVARCHAR2(2000), + primary key (ID_) +); + +create table ACT_HI_COMMENT ( + ID_ NVARCHAR2(64) not null, + TYPE_ NVARCHAR2(255), + TIME_ TIMESTAMP(6) not null, + USER_ID_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + ACTION_ NVARCHAR2(255), + MESSAGE_ NVARCHAR2(2000), + FULL_MSG_ BLOB, + primary key (ID_) +); + +create table ACT_HI_ATTACHMENT ( + ID_ NVARCHAR2(64) not null, + REV_ INTEGER, + USER_ID_ NVARCHAR2(255), + NAME_ NVARCHAR2(255), + DESCRIPTION_ NVARCHAR2(2000), + TYPE_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + URL_ NVARCHAR2(2000), + CONTENT_ID_ NVARCHAR2(64), + TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_HI_IDENTITYLINK ( + ID_ NVARCHAR2(64), + GROUP_ID_ NVARCHAR2(255), + TYPE_ NVARCHAR2(255), + USER_ID_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_); +create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_); +create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_); +create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_); +create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_); +create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_); +create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_); +create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_); +create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_); +create index ACT_IDX_HI_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_); + +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_); +create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); diff --git a/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.identity.sql b/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.identity.sql new file mode 100644 index 00000000..d63bac36 --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.identity.sql @@ -0,0 +1,48 @@ +create table ACT_ID_GROUP ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + NAME_ NVARCHAR2(255), + TYPE_ NVARCHAR2(255), + primary key (ID_) +); + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ NVARCHAR2(64), + GROUP_ID_ NVARCHAR2(64), + primary key (USER_ID_, GROUP_ID_) +); + +create table ACT_ID_USER ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + FIRST_ NVARCHAR2(255), + LAST_ NVARCHAR2(255), + EMAIL_ NVARCHAR2(255), + PWD_ NVARCHAR2(255), + PICTURE_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create table ACT_ID_INFO ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + USER_ID_ NVARCHAR2(64), + TYPE_ NVARCHAR2(64), + KEY_ NVARCHAR2(255), + VALUE_ NVARCHAR2(255), + PASSWORD_ BLOB, + PARENT_ID_ NVARCHAR2(255), + primary key (ID_) +); + +create index ACT_IDX_MEMB_GROUP on ACT_ID_MEMBERSHIP(GROUP_ID_); +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_GROUP + foreign key (GROUP_ID_) + references ACT_ID_GROUP (ID_); + +create index ACT_IDX_MEMB_USER on ACT_ID_MEMBERSHIP(USER_ID_); +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_USER + foreign key (USER_ID_) + references ACT_ID_USER (ID_); diff --git a/xm-cloud-bootstrap/src/main/resources/locale/message_zh.properties b/xm-cloud-bootstrap/src/main/resources/locale/message_zh.properties new file mode 100644 index 00000000..da88fd9d --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/locale/message_zh.properties @@ -0,0 +1,8 @@ +# 消息转换器,格式为: +# 技术错误码=业务错误码+消息 +# 支持动态数据转换.如下面重试次数是通过程序传入的. +# errcode01=[0760881]您输入的密码不正确,请重新输入,您还可以再试{0}次. +# +# +#tips001=[0760000]网络不给力,请稍后再试. +t123456162Service27=[0760001]测试错误码转义 diff --git a/xm-cloud-bootstrap/src/main/resources/logback-spring.xml b/xm-cloud-bootstrap/src/main/resources/logback-spring.xml new file mode 100644 index 00000000..e00fed6b --- /dev/null +++ b/xm-cloud-bootstrap/src/main/resources/logback-spring.xml @@ -0,0 +1,36 @@ + + + + + + [%X{gloNo}][%d{yyyy-MM-dd HH:mm:ss}][%-5level][%logger][%X{reqNo}] -%msg%n + + + + + + logs/xm.log + + logs/xm.%d{yyyy-MM-dd}.%i.log + + 20 + 100MB + + + [%X{gloNo}][%d{yyyy-MM-dd HH:mm:ss}][%-5level][%logger][%X{reqNo}] -%msg%n + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xm-cloud-bootstrap/src/main/resources/processes/readme.txt b/xm-cloud-bootstrap/src/main/resources/processes/readme.txt new file mode 100644 index 00000000..e69de29b diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java index 2f34ad7a..c948ad0f 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java @@ -7,6 +7,8 @@ import com.mdp.core.entity.Result; import com.mdp.core.query.QueryTools; import com.mdp.core.utils.RequestUtils; import com.mdp.msg.client.PushNotifyMsgService; +import com.mdp.safe.client.cache.DeptRedisCacheService; +import com.mdp.safe.client.entity.Dept; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.mdp.sensitive.SensitiveWordService; @@ -68,6 +70,9 @@ public class XmProductController { @Autowired SensitiveWordService sensitiveWordService; + @Autowired + DeptRedisCacheService deptRedisCacheService; + Map fieldsMap = toMap(new XmProduct()); @Value("${mdp.platform-branch-id:platform-branch-001}") @@ -180,6 +185,11 @@ public class XmProductController { params.put("linkBranchId",user.getBranchId()); QueryTools.alias(params,"branchId res.branchId"); QueryWrapper qw = QueryTools.initQueryWrapper(XmProduct.class , params); + Dept dept=deptRedisCacheService.getDept(user.getDeptid()); + params.put("myIdPath",dept.getIdPath()); + params.put("myDeptid",user.getDeptid()); + params.put("myBranchId",user.getBranchId()); + params.put("myUserid",user.getUserid()); List> datas = xmProductService.selectListMapByWhereWithState(page,qw,params); return Result.ok().setData(datas).setTotal(page.getTotal()); } diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java index 02038699..4af4441e 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java @@ -10,6 +10,8 @@ import com.mdp.core.query.QueryTools; import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.RequestUtils; import com.mdp.msg.client.PushNotifyMsgService; +import com.mdp.safe.client.cache.DeptRedisCacheService; +import com.mdp.safe.client.entity.Dept; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.mdp.sensitive.SensitiveWordService; @@ -73,6 +75,9 @@ public class XmProjectController { @Autowired SensitiveWordService sensitiveWordService; + @Autowired + DeptRedisCacheService deptRedisCacheService; + Map fieldsMap = BaseUtils.toMap(new XmProject()); @@ -118,6 +123,12 @@ public class XmProjectController { params.put("platformBranchId",platformBranchId); QueryTools.alias(params,"branchId res.branchId"); QueryWrapper qw = QueryTools.initQueryWrapper(XmProject.class , params); + + Dept dept=deptRedisCacheService.getDept(user.getDeptid()); + params.put("myIdPath",dept.getIdPath()); + params.put("myDeptid",user.getDeptid()); + params.put("myBranchId",user.getBranchId()); + params.put("myUserid",user.getUserid()); List> datas = xmProjectService.selectListMapByWhere(page,qw,params); //列出XmProject列表 return Result.ok().setData(datas).setTotal(page.getTotal()); diff --git a/xm-core/src/main/java/com/xm/core/entity/XmProduct.java b/xm-core/src/main/java/com/xm/core/entity/XmProduct.java index 8cfd0dc6..2c53b8ea 100644 --- a/xm-core/src/main/java/com/xm/core/entity/XmProduct.java +++ b/xm-core/src/main/java/com/xm/core/entity/XmProduct.java @@ -157,6 +157,13 @@ public class XmProduct implements java.io.Serializable { @ApiModelProperty(notes="",allowEmptyValue=true,example="",allowableValues="") String qxCode; + + @ApiModelProperty(notes="是否对外公开0-完全不可见,1-仅本司人员可见,2-关联人员可见(众包-外包-招投标),3-本部门上级及下属部门可见,4-仅本部及上级可见,5-仅本部及下级可见 9-不区分",allowEmptyValue=true,example="",allowableValues="") + String showOut; + + @ApiModelProperty(notes="部门编号全路径编号",allowEmptyValue=true,example="",allowableValues="") + String deptidPath; + /** *产品编号 **/ diff --git a/xm-core/src/main/java/com/xm/core/entity/XmProject.java b/xm-core/src/main/java/com/xm/core/entity/XmProject.java index d2cfa6a1..82212319 100644 --- a/xm-core/src/main/java/com/xm/core/entity/XmProject.java +++ b/xm-core/src/main/java/com/xm/core/entity/XmProject.java @@ -186,7 +186,7 @@ public class XmProject implements java.io.Serializable { String deptid; - @ApiModelProperty(notes="是否对外公开0-完全不可见,1-仅本司人员可见,2-关联人员可见(众包-外包-招投标)",allowEmptyValue=true,example="",allowableValues="") + @ApiModelProperty(notes="是否对外公开0-完全不可见,1-仅本司人员可见,2-关联人员可见(众包-外包-招投标),3-本部门上级及下属部门可见,4-仅本部及上级可见,5-仅本部及下级可见 9-不区分",allowEmptyValue=true,example="",allowableValues="") String showOut; @@ -269,6 +269,9 @@ public class XmProject implements java.io.Serializable { @ApiModelProperty(notes="",allowEmptyValue=true,example="",allowableValues="") String qxCode; + @ApiModelProperty(notes="部门编号全路径编号",allowEmptyValue=true,example="",allowableValues="") + String deptidPath; + /** *项目编号 **/ diff --git a/xm-core/src/main/java/com/xm/core/mapper/XmProductMapper.xml b/xm-core/src/main/java/com/xm/core/mapper/XmProductMapper.xml index abc49ee1..586cce05 100644 --- a/xm-core/src/main/java/com/xm/core/mapper/XmProductMapper.xml +++ b/xm-core/src/main/java/com/xm/core/mapper/XmProductMapper.xml @@ -41,6 +41,22 @@ ) + + and ( + (res.adm_userid= #{ext.myUserid} or res.pm_userid=#{ext.myUserid} or res.ass_userid=#{ext.myUserid}) + or (CASE + WHEN res.show_out = '1' THEN + res.branch_id = #{ext.myBranchId} + when res.show_out='3' then + res.deptid_path like CONCAT(#{ext.myIdPath},'%') or #{ext.myIdPath} like CONCAT(res.deptid_path,'%') + when res.show_out='4' then + res.deptid_path like CONCAT(#{ext.myIdPath},'%') + when res.show_out='5' then + #{ext.myIdPath} like CONCAT(res.deptid_path,'%') + when res.show_out='6' then + res.deptid=#{ext.myDeptid} + end)) +