Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz4j Spring R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7后台标准模板
iBiz4j Spring R7
提交
f9ed7097
提交
f9ed7097
编写于
7月 21, 2020
作者:
zhouweidong
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'dev' 到 'master'
版本合并20200721 查看合并请求
!17
上级
2e49fbe1
52eec457
变更
52
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
52 个修改的文件
包含
1388 行增加
和
244 行删除
+1388
-244
CHANGELOG.md
CHANGELOG.md
+17
-0
Dockerfile.ftl
...%PUBPRJ%-app-%APP_PKGPATH%/src/main/docker/Dockerfile.ftl
+10
-1
%APP%Application.java.ftl
...ava/%SYS_PKGPATH%/%APP_PKGPATH%/%APP%Application.java.ftl
+10
-0
%APP%SecurityConfig.java.ftl
...KGPATH%/%APP_PKGPATH%/config/%APP%SecurityConfig.java.ftl
+1
-0
application-%APP_PKGPATH%-prod.yml.ftl
...src/main/resources/application-%APP_PKGPATH%-prod.yml.ftl
+10
-7
application.yml.ftl
...-app-%APP_PKGPATH%/src/main/resources/application.yml.ftl
+1
-1
DevBootApplication.java.ftl
...t/src/main/java/%SYS_PKGPATH%/DevBootApplication.java.ftl
+14
-0
application-dev.yml.ftl
SLN/%PUBPRJ%-boot/src/main/resources/application-dev.yml.ftl
+8
-7
application.yml.ftl
SLN/%PUBPRJ%-boot/src/main/resources/application.yml.ftl
+1
-1
%ITEM%FeignClient.java.ftl
...ATH%/core/%MOD_PKGPATH%/client/%ITEM%FeignClient.java.ftl
+6
-1
%DE%.java.ftl
...ava/%SYS_PKGPATH%/core/%MOD_PKGPATH%/domain/%DE%.java.ftl
+41
-0
%DE%Mapper.java.ftl
...YS_PKGPATH%/core/%MOD_PKGPATH%/mapper/%DE%Mapper.java.ftl
+5
-0
%DE%%ITEM%.java.ftl
...S_PKGPATH%/core/%MOD_PKGPATH%/mapping/%DE%%ITEM%.java.ftl
+32
-0
I%DE%Service.java.ftl
...PKGPATH%/core/%MOD_PKGPATH%/service/I%DE%Service.java.ftl
+12
-0
%DE%ServiceImpl.java.ftl
.../core/%MOD_PKGPATH%/service/impl/%DE%ServiceImpl.java.ftl
+219
-16
%DE%ServiceEx.java.ftl
...S_PKGPATH%/core/extensions.service/%DE%ServiceEx.java.ftl
+0
-30
20200709124030_init_ibzaudit.xml.ftl
.../liquibase/changelog/20200709124030_init_ibzaudit.xml.ftl
+27
-0
${de.codeName}Mapper.xml.ftl
...r/%MOD_PKGPATH%/%DE_PKGPATH%/${de.codeName}Mapper.xml.ftl
+7
-11
pom.xml.ftl
SLN/%PUBPRJ%-dependencies/pom.xml.ftl
+25
-0
Dockerfile.ftl
...-provider-%SYSAPI_PKGPATH%/src/main/docker/Dockerfile.ftl
+11
-2
%SYS%%API%Application.java.ftl
..._PKGPATH%/%SYSAPI_PKGPATH%/%SYS%%API%Application.java.ftl
+14
-0
%API%AutoConfiguration.java.ftl
...%/%SYSAPI_PKGPATH%/config/%API%AutoConfiguration.java.ftl
+15
-0
%ITEM%Mapping.java.ftl
..._PKGPATH%/%SYSAPI_PKGPATH%/mapping/%ITEM%Mapping.java.ftl
+3
-1
%ITEM%Resource.java.ftl
...YS_PKGPATH%/%SYSAPI_PKGPATH%/rest/%ITEM%Resource.java.ftl
+46
-8
application.yml.ftl
...r-%SYSAPI_PKGPATH%/src/main/resources/application.yml.ftl
+1
-1
Audit.java.ftl
...rc/main/java/%SYS_PKGPATH%/util/annotation/Audit.java.ftl
+18
-0
DEField.java.ftl
.../main/java/%SYS_PKGPATH%/util/annotation/DEField.java.ftl
+21
-5
AuditAspect.java.ftl
.../main/java/%SYS_PKGPATH%/util/aspect/AuditAspect.java.ftl
+170
-0
DEFieldDefaultValueAspect.java.ftl
...S_PKGPATH%/util/aspect/DEFieldDefaultValueAspect.java.ftl
+2
-2
VersionCheckAspect.java.ftl
...ava/%SYS_PKGPATH%/util/aspect/VersionCheckAspect.java.ftl
+10
-8
CacheConfig.java.ftl
...c/main/java/%SYS_PKGPATH%/util/cache/CacheConfig.java.ftl
+0
-8
LayeringCache.java.ftl
.../%SYS_PKGPATH%/util/cache/layering/LayeringCache.java.ftl
+0
-8
LayeringCacheManager.java.ftl
...KGPATH%/util/cache/layering/LayeringCacheManager.java.ftl
+0
-8
CustomizedRedisCache.java.ftl
...S_PKGPATH%/util/cache/redis/CustomizedRedisCache.java.ftl
+0
-8
FastJsonRedisSerializer.java.ftl
...KGPATH%/util/cache/redis/FastJsonRedisSerializer.java.ftl
+0
-44
KryoRedisSerializer.java.ftl
...YS_PKGPATH%/util/cache/redis/KryoRedisSerializer.java.ftl
+0
-8
RedisConfig.java.ftl
.../java/%SYS_PKGPATH%/util/cache/redis/RedisConfig.java.ftl
+0
-8
StringRedisSerializer.java.ftl
..._PKGPATH%/util/cache/redis/StringRedisSerializer.java.ftl
+0
-8
IBZOUFeignClient.java.ftl
.../java/%SYS_PKGPATH%/util/client/IBZOUFeignClient.java.ftl
+1
-1
IBZUAAFeignClient.java.ftl
...java/%SYS_PKGPATH%/util/client/IBZUAAFeignClient.java.ftl
+1
-1
IBZWFFeignClient.java.ftl
.../java/%SYS_PKGPATH%/util/client/IBZWFFeignClient.java.ftl
+1
-1
IBZDataAudit.java.ftl
...main/java/%SYS_PKGPATH%/util/domain/IBZDataAudit.java.ftl
+36
-0
LiquibaseProp.java.ftl
...ain/java/%SYS_PKGPATH%/util/domain/LiquibaseProp.java.ftl
+12
-1
DEFieldCacheMap.java.ftl
...n/java/%SYS_PKGPATH%/util/helper/DEFieldCacheMap.java.ftl
+26
-0
IBZDataAuditMapper.java.ftl
...ava/%SYS_PKGPATH%/util/mapper/IBZDataAuditMapper.java.ftl
+10
-0
AuthenticationUser.java.ftl
...a/%SYS_PKGPATH%/util/security/AuthenticationUser.java.ftl
+28
-0
IBZDataAuditService.java.ftl
...a/%SYS_PKGPATH%/util/service/IBZDataAuditService.java.ftl
+22
-0
SimpleAuditService.java.ftl
...va/%SYS_PKGPATH%/util/service/SimpleAuditService.java.ftl
+318
-0
FeignRequestInterceptor.java.ftl
...a/%SYS_PKGPATH%/util/web/FeignRequestInterceptor.java.ftl
+2
-0
application-eureka.yml.ftl
...UBPRJ%-util/src/main/resources/application-eureka.yml.ftl
+42
-0
application-nacos.yml.ftl
...PUBPRJ%-util/src/main/resources/application-nacos.yml.ftl
+40
-0
application-sys.yml.ftl
SLN/%PUBPRJ%-util/src/main/resources/application-sys.yml.ftl
+92
-38
未找到文件。
CHANGELOG.md
浏览文件 @
f9ed7097
# **iBiz4j Spring R7 Template ChangeLog**
# **iBiz4j Spring R7 Template ChangeLog**
## [v2020.07.21]
增强:
-
数据查询:支持上下文的in查询
-
数据查询:支持无值忽略条件
-
支持实体数据导入
修复:
-
补充mapping别名,解决实体在多服务接口中,boot启动mapping重名问题
-
修复服务接口嵌套版本检查bug
-
附加逻辑添加逻辑所有者判断
## [v2020.07.14]
-
支持nacos.eureka服务注册中心,通过配置进行切换
-
支持serviceId动态化配置
-
支持mybatis-plus动态数据源
-
支持数据审计
## [v2020.07.02]
## [v2020.07.02]
-
支持测试行为模式
-
支持测试行为模式
-
数据保存时增加版本检查
-
数据保存时增加版本检查
...
...
SLN/%PUBPRJ%-app/%PUBPRJ%-app-%APP_PKGPATH%/src/main/docker/Dockerfile.ftl
浏览文件 @
f9ed7097
...
@@ -2,20 +2,29 @@
...
@@ -2,20 +2,29 @@
TARGET=PSSYSAPP
TARGET=PSSYSAPP
</#ibiztemplate>
</#ibiztemplate>
<#assign httpPort = "8080">
<#assign httpPort = "8080">
<#assign timezone = "Asia/Shanghai">
<#if sysrun?? >
<#if sysrun?? >
<#if sysrun.getPSDevSlnMSDepApp()??>
<#if sysrun.getPSDevSlnMSDepApp()??>
<#if sysrun.getPSDevSlnMSDepApp().getHttpPort()??>
<#if sysrun.getPSDevSlnMSDepApp().getHttpPort()??>
<#assign httpPort = sysrun.getPSDevSlnMSDepApp().getHttpPort()?c>
<#assign httpPort = sysrun.getPSDevSlnMSDepApp().getHttpPort()?c>
</#if>
</#if>
<#if sysrun.getPSDevSlnMSDepApp().getUserParam("timezone","")?? && sysrun.getPSDevSlnMSDepApp().getUserParam("timezone","")!="">
<#assign timezone = sysrun.getPSDevSlnMSDepApp().getUserParam("timezone","")>
<#elseif sysrun.getPSDevSlnMSDepApp().getPSDCMSPlatform().getUserParam("timezone","")?? && sysrun.getPSDevSlnMSDepApp().getPSDCMSPlatform().getUserParam("timezone","")!="">
<#assign timezone = sysrun.getPSDevSlnMSDepApp().getPSDCMSPlatform().getUserParam("timezone","")>
</#if>
</#if>
</#if>
</#if>
</#if>
FROM openjdk:8-jre-alpine
FROM openjdk:8-jre-alpine
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
ENV TZ=${timezone} \
SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
IBIZ_SLEEP=0 \
IBIZ_SLEEP=0 \
JAVA_OPTS=""
JAVA_OPTS=""
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
CMD echo "The application will start in ${r'${IBIZ_SLEEP}'}s..." && \
CMD echo "The application will start in ${r'${IBIZ_SLEEP}'}s..." && \
sleep ${r'${IBIZ_SLEEP}'} && \
sleep ${r'${IBIZ_SLEEP}'} && \
java ${r'${JAVA_OPTS}'} -Djava.security.egd=file:/dev/./urandom -jar /${pub.getCodeName()?lower_case}-app-${app.getPKGCodeName()?lower_case}.jar
java ${r'${JAVA_OPTS}'} -Djava.security.egd=file:/dev/./urandom -jar /${pub.getCodeName()?lower_case}-app-${app.getPKGCodeName()?lower_case}.jar
...
...
SLN/%PUBPRJ%-app/%PUBPRJ%-app-%APP_PKGPATH%/src/main/java/%SYS_PKGPATH%/%APP_PKGPATH%/%APP%Application.java.ftl
浏览文件 @
f9ed7097
<#
ibiztemplate
>
<#
ibiztemplate
>
TARGET
=
PSSYSAPP
TARGET
=
PSSYSAPP
</#
ibiztemplate
>
</#
ibiztemplate
>
<#
assign
bDynamicDS
=
false
>
<#
list
sys
.
getAllPSDataEntities
()
as
entity
>
<#
if
(
entity
.
getStorageMode
()==
1
||
entity
.
getStorageMode
()==
2
)
&&
entity
.
getDSLink
()
!='DEFAULT'>
<#
assign
bDynamicDS
=
true
>
<#
break
>
</#
if
>
</#
list
>
package
${
pub
.
getPKGCodeName
()}.${
app
.
getPKGCodeName
()?
lower_case
};
package
${
pub
.
getPKGCodeName
()}.${
app
.
getPKGCodeName
()?
lower_case
};
import
lombok
.
extern
.
slf4j
.
Slf4j
;
import
lombok
.
extern
.
slf4j
.
Slf4j
;
...
@@ -42,6 +49,9 @@ import java.util.List;
...
@@ -42,6 +49,9 @@ import java.util.List;
<#
if
bmogo
==
false
>
<#
if
bmogo
==
false
>
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
</#
if
>
</#
if
>
<#
if
bDynamicDS
>
com
.
alibaba
.
druid
.
spring
.
boot
.
autoconfigure
.
DruidDataSourceAutoConfigure
.
class
</#
if
>
})
})
public
class
${
app
.
getPKGCodeName
()}
Application
extends
WebMvcConfigurerAdapter
{
public
class
${
app
.
getPKGCodeName
()}
Application
extends
WebMvcConfigurerAdapter
{
...
...
SLN/%PUBPRJ%-app/%PUBPRJ%-app-%APP_PKGPATH%/src/main/java/%SYS_PKGPATH%/%APP_PKGPATH%/config/%APP%SecurityConfig.java.ftl
浏览文件 @
f9ed7097
...
@@ -109,6 +109,7 @@ public class ${app.getPKGCodeName()}SecurityConfig extends WebSecurityConfigurer
...
@@ -109,6 +109,7 @@ public class ${app.getPKGCodeName()}SecurityConfig extends WebSecurityConfigurer
"
/**/
fonts
/**
",
"
/**/
fonts
/**
",
"
/**/
js
/**
",
"
/**/
js
/**
",
"
/**/
img
/**
",
"
/**/
img
/**
",
"
/**/
svg
/**
",
"
/
"
"
/
"
).permitAll()
).permitAll()
//放行登录请求
//放行登录请求
...
...
SLN/%PUBPRJ%-app/%PUBPRJ%-app-%APP_PKGPATH%/src/main/resources/application-%APP_PKGPATH%-prod.yml.ftl
浏览文件 @
f9ed7097
...
@@ -30,7 +30,9 @@ zuul:
...
@@ -30,7 +30,9 @@ zuul:
<#if psDataEntity.hasPSDEWF()?? && psDataEntity.hasPSDEWF()==true>
<#if psDataEntity.hasPSDEWF()?? && psDataEntity.hasPSDEWF()==true>
<#assign haswfentity=true>
<#assign haswfentity=true>
</#if>
</#if>
<#if psDataEntity.getStorageMode()==4>
<#assign sybSysServiceType=(psDataEntity.getPSSubSysServiceAPI().getServiceType())!''>
<#comment>服务类型为中台和MASA走自身处理</#comment>
<#if psDataEntity.getStorageMode()==4 && (sybSysServiceType!='MIDDLEPLATFORM' && sybSysServiceType!='MASA')>
<#comment>serviceApi模式</#comment>
<#comment>serviceApi模式</#comment>
<#assign serviceId=(psDataEntity.getPSSubSysServiceAPI().getServiceCodeName())!''>
<#assign serviceId=(psDataEntity.getPSSubSysServiceAPI().getServiceCodeName())!''>
<#assign serviceUrl=srfpluralize(appDataEntity.codeName?lower_case)>
<#assign serviceUrl=srfpluralize(appDataEntity.codeName?lower_case)>
...
@@ -40,6 +42,7 @@ zuul:
...
@@ -40,6 +42,7 @@ zuul:
<#assign serviceId=systemName+"-"+sysApi>
<#assign serviceId=systemName+"-"+sysApi>
</#if>
</#if>
<#if serviceId!="">
<#if serviceId!="">
<#assign serviceId="$"+"{ibiz.ref.service."+serviceId?lower_case+":"+serviceId+"}">
${appEntity}:
${appEntity}:
path: /${serviceUrl}/**
path: /${serviceUrl}/**
serviceId: ${serviceId}
serviceId: ${serviceId}
...
@@ -49,30 +52,30 @@ zuul:
...
@@ -49,30 +52,30 @@ zuul:
<#if haswfentity==true>
<#if haswfentity==true>
wfcore:
wfcore:
path: /wfcore/**
path: /wfcore/**
serviceId:
ibzwf-api
serviceId:
${r'${ibiz.ref.service.wf:ibzwf-api}'}
stripPrefix: true
stripPrefix: true
</#if>
</#if>
<#if sys.getPSSystemSetting()?? && sys.getPSSystemSetting().getDataAccCtrlArch()?? && sys.getPSSystemSetting().getDataAccCtrlArch()==1>
<#if sys.getPSSystemSetting()?? && sys.getPSSystemSetting().getDataAccCtrlArch()?? && sys.getPSSystemSetting().getDataAccCtrlArch()==1>
loginv7:
loginv7:
path: /v7/login
path: /v7/login
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
changepwd:
changepwd:
path: /v7/changepwd
path: /v7/changepwd
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
uaa:
uaa:
path: /uaa/**
path: /uaa/**
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
config:
config:
path: /config/**
path: /config/**
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
<#if sys.getCodeName()!='ibzou' && sys.getCodeName()!='ibzrt'>
<#if sys.getCodeName()!='ibzou' && sys.getCodeName()!='ibzrt'>
oucore:
oucore:
path: /ibzorganizations/**
path: /ibzorganizations/**
serviceId:
ibzou-api
serviceId:
${r'${ibiz.ref.service.ou:ibzou-api}'}
stripPrefix: false
stripPrefix: false
</#if>
</#if>
</#if>
</#if>
...
...
SLN/%PUBPRJ%-app/%PUBPRJ%-app-%APP_PKGPATH%/src/main/resources/application.yml.ftl
浏览文件 @
f9ed7097
...
@@ -3,6 +3,6 @@ TARGET=PSSYSAPP
...
@@ -3,6 +3,6 @@ TARGET=PSSYSAPP
</#ibiztemplate>
</#ibiztemplate>
spring:
spring:
profiles:
profiles:
include: sys , ${app.getPKGCodeName()?lower_case}-prod
include: sys ,
nacos,
${app.getPKGCodeName()?lower_case}-prod
application:
application:
name: ${sys.getCodeName()?lower_case}-${app.getPKGCodeName()?lower_case}
name: ${sys.getCodeName()?lower_case}-${app.getPKGCodeName()?lower_case}
SLN/%PUBPRJ%-boot/src/main/java/%SYS_PKGPATH%/DevBootApplication.java.ftl
浏览文件 @
f9ed7097
<#
ibiztemplate
>
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
</#
ibiztemplate
>
<#
assign
bDynamicDS
=
false
>
<#
list
sys
.
getAllPSDataEntities
()
as
entity
>
<#
if
(
entity
.
getStorageMode
()==
1
||
entity
.
getStorageMode
()==
2
)
&&
entity
.
getDSLink
()
!='DEFAULT'>
<#
assign
bDynamicDS
=
true
>
<#
break
>
</#
if
>
</#
list
>
package
${
pub
.
getPKGCodeName
()};
package
${
pub
.
getPKGCodeName
()};
import
lombok
.
extern
.
slf4j
.
Slf4j
;
import
lombok
.
extern
.
slf4j
.
Slf4j
;
...
@@ -14,6 +21,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
...
@@ -14,6 +21,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import
org
.
springframework
.
web
.
method
.
support
.
HandlerMethodArgumentResolver
;
import
org
.
springframework
.
web
.
method
.
support
.
HandlerMethodArgumentResolver
;
import
org
.
springframework
.
web
.
servlet
.
config
.
annotation
.
WebMvcConfigurerAdapter
;
import
org
.
springframework
.
web
.
servlet
.
config
.
annotation
.
WebMvcConfigurerAdapter
;
import
org
.
springframework
.
context
.
annotation
.
ComponentScan
;
import
org
.
springframework
.
context
.
annotation
.
ComponentScan
;
import
org
.
springframework
.
scheduling
.
annotation
.
EnableAsync
;
import
org
.
springframework
.
scheduling
.
annotation
.
EnableScheduling
;
import
java
.
util
.
List
;
import
java
.
util
.
List
;
@
Slf4j
@
Slf4j
...
@@ -34,6 +43,9 @@ import java.util.List;
...
@@ -34,6 +43,9 @@ import java.util.List;
<#
if
bmogo
==
false
>
<#
if
bmogo
==
false
>
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
</#
if
>
</#
if
>
<#
if
bDynamicDS
>
com
.
alibaba
.
druid
.
spring
.
boot
.
autoconfigure
.
DruidDataSourceAutoConfigure
.
class
</#
if
>
})
})
@
ComponentScan
(
basePackages
=
{
"${pub.getPKGCodeName()}"
}
@
ComponentScan
(
basePackages
=
{
"${pub.getPKGCodeName()}"
}
//
,
excludeFilters
={
//
,
excludeFilters
={
...
@@ -43,6 +55,8 @@ import java.util.List;
...
@@ -43,6 +55,8 @@ import java.util.List;
@
Import
({
@
Import
({
org
.
springframework
.
cloud
.
openfeign
.
FeignClientsConfiguration
.
class
org
.
springframework
.
cloud
.
openfeign
.
FeignClientsConfiguration
.
class
})
})
@
EnableAsync
@
EnableScheduling
public
class
DevBootApplication
extends
WebMvcConfigurerAdapter
{
public
class
DevBootApplication
extends
WebMvcConfigurerAdapter
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
...
...
SLN/%PUBPRJ%-boot/src/main/resources/application-dev.yml.ftl
浏览文件 @
f9ed7097
...
@@ -50,7 +50,8 @@ zuul:
...
@@ -50,7 +50,8 @@ zuul:
<#comment>serviceApi模式</#comment>
<#comment>serviceApi模式</#comment>
<#assign serviceId=(psDataEntity.getPSSubSysServiceAPI().getServiceCodeName())!''>
<#assign serviceId=(psDataEntity.getPSSubSysServiceAPI().getServiceCodeName())!''>
<#assign serviceUrl=srfpluralize(appDataEntity.name?lower_case)>
<#assign serviceUrl=srfpluralize(appDataEntity.name?lower_case)>
<#if serviceId!="">
<#if serviceId!="">
<#assign serviceId="$"+"{ibiz.ref.service."+serviceId?lower_case+":"+serviceId+"}">
${appEntity}:
${appEntity}:
path: /${serviceUrl}/**
path: /${serviceUrl}/**
serviceId: ${serviceId}
serviceId: ${serviceId}
...
@@ -61,30 +62,30 @@ zuul:
...
@@ -61,30 +62,30 @@ zuul:
<#if haswfentity==true>
<#if haswfentity==true>
wfcore:
wfcore:
path: /wfcore/**
path: /wfcore/**
serviceId:
ibzwf-api
serviceId:
${r'${ibiz.ref.service.wf:ibzwf-api}'}
stripPrefix: true
stripPrefix: true
</#if>
</#if>
<#if sys.getPSSystemSetting()?? && sys.getPSSystemSetting().getDataAccCtrlArch()?? && sys.getPSSystemSetting().getDataAccCtrlArch()==1>
<#if sys.getPSSystemSetting()?? && sys.getPSSystemSetting().getDataAccCtrlArch()?? && sys.getPSSystemSetting().getDataAccCtrlArch()==1>
loginv7:
loginv7:
path: /v7/login
path: /v7/login
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
changepwd:
changepwd:
path: /v7/changepwd
path: /v7/changepwd
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
uaa:
uaa:
path: /uaa/**
path: /uaa/**
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
config:
config:
path: /config/**
path: /config/**
serviceId:
ibzuaa-api
serviceId:
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
stripPrefix: false
<#if sys.getCodeName()!='ibzou' && sys.getCodeName()!='ibzrt'>
<#if sys.getCodeName()!='ibzou' && sys.getCodeName()!='ibzrt'>
oucore:
oucore:
path: /ibzorganizations/**
path: /ibzorganizations/**
serviceId:
ibzou-api
serviceId:
${r'${ibiz.ref.service.ou:ibzou-api}'}
stripPrefix: false
stripPrefix: false
</#if>
</#if>
</#if>
</#if>
...
...
SLN/%PUBPRJ%-boot/src/main/resources/application.yml.ftl
浏览文件 @
f9ed7097
...
@@ -19,7 +19,7 @@ TARGET=PSSYSTEM
...
@@ -19,7 +19,7 @@ TARGET=PSSYSTEM
</#if>
</#if>
spring:
spring:
profiles:
profiles:
include: sys , <#if refAppYaml!=''>${refAppYaml}</#if> <#if refProviderYaml!=''> ${refProviderYaml} </#if> dev
include: sys ,
nacos,
<#if refAppYaml!=''>${refAppYaml}</#if> <#if refProviderYaml!=''> ${refProviderYaml} </#if> dev
application:
application:
name: ${item.getCodeName()?lower_case}
name: ${item.getCodeName()?lower_case}
main:
main:
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/client/%ITEM%FeignClient.java.ftl
浏览文件 @
f9ed7097
...
@@ -25,10 +25,15 @@ import org.springframework.cloud.openfeign.FeignClient;
...
@@ -25,10 +25,15 @@ import org.springframework.cloud.openfeign.FeignClient;
</#
if
>
</#
if
>
<#
comment
>
contextId
存在下划线时,项目运行报错,模板中转中划线处理
</#
comment
>
<#
comment
>
contextId
存在下划线时,项目运行报错,模板中转中划线处理
</#
comment
>
<#
assign
contextId
=
item
.
codeName
?
replace
(
"_"
,
"-"
)>
<#
assign
contextId
=
item
.
codeName
?
replace
(
"_"
,
"-"
)>
<#
if
((
item
.
getPSSubSysServiceAPI
().
getServiceCodeName
())
!'')!=''>
<#
assign
serviceId
=
"$"
+
"{ibiz.ref.service."
+
item
.
getPSSubSysServiceAPI
().
getServiceCodeName
()?
lower_case
+
":"
+
item
.
getPSSubSysServiceAPI
().
getServiceCodeName
()+
"}"
>
<#
else
>
<#
assign
serviceId
=
"$"
+
"{ibiz.ref.service."
+
item
.
getPSSubSysServiceAPI
().
codeName
?
lower_case
+
":}"
>
</#
if
>
/**
/**
*
实体
[${
item
.
codeName
}]
服务对象接口
*
实体
[${
item
.
codeName
}]
服务对象接口
*/
*/
@
FeignClient
(
value
=
"${
(item.getPSSubSysServiceAPI().getServiceCodeName())!''
}"
,
contextId
=
"${contextId}"
,
fallback
=
${
item
.
codeName
}
Fallback
.
class
)
@
FeignClient
(
value
=
"${
serviceId
}"
,
contextId
=
"${contextId}"
,
fallback
=
${
item
.
codeName
}
Fallback
.
class
)
public
interface
${
item
.
codeName
}
FeignClient
{
public
interface
${
item
.
codeName
}
FeignClient
{
<#
if
item
.
getPSSubSysServiceAPIDEMethods
()??>
<#
if
item
.
getPSSubSysServiceAPIDEMethods
()??>
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/domain/%DE%.java.ftl
浏览文件 @
f9ed7097
...
@@ -24,6 +24,7 @@ import ${pub.getPKGCodeName()}.util.enums.DEFieldDefaultValueType;
...
@@ -24,6 +24,7 @@ import ${pub.getPKGCodeName()}.util.enums.DEFieldDefaultValueType;
import
java
.
io
.
Serializable
;
import
java
.
io
.
Serializable
;
import
lombok
.*;
import
lombok
.*;
import
org
.
springframework
.
data
.
annotation
.
Transient
;
import
org
.
springframework
.
data
.
annotation
.
Transient
;
import
${
pub
.
getPKGCodeName
()}.
util
.
annotation
.
Audit
;
<#
comment
>
SQL
存储
-
Mybatis
</#
comment
>
<#
comment
>
SQL
存储
-
Mybatis
</#
comment
>
<#
if
de
.
getStorageMode
()==
1
>
<#
if
de
.
getStorageMode
()==
1
>
...
@@ -86,9 +87,37 @@ public class ${item.getCodeName()} extends EntityMP implements Serializable {
...
@@ -86,9 +87,37 @@ public class ${item.getCodeName()} extends EntityMP implements Serializable {
</#
if
>
</#
if
>
</#
if
>
</#
if
>
</#
if
>
</#
if
>
<#
comment
>
审计
</#
comment
>
<#
if
defield
.
isEnableAudit
()==
true
&&
de
.
getAuditMode
()
!=0>
<#
assign
defStdType
=
srfjavatype
(
defield
.
stdDataType
)>
<#
if
defieldano
??
&&
defieldano
!='' >
<#
assign
defieldano
=
defieldano
+
" , "
>
</#
if
>
<#
assign
defieldano
=
defieldano
+
"value =
\"
"
+
jsonfield
+
"
\"
"
>
<#
if
defield
.
getPSCodeList
??
&&
defield
.
getPSCodeList
()??>
<#
if
((
defield
.
getPredefinedType
())
!'')!='LOGICVALID'>
<#
assign
defieldano
=
defieldano
+
",dict=
\"
"
+
defield
.
getPSCodeList
().
codeName
+
"
\"
"
>
</#
if
>
</#
if
>
<#
if
defDataType
==
"DATETIME"
||
defDataType
==
"DATE"
||
defDataType
==
"TIME"
||
defDataType
==
'PICKUPDATA'
&&
defStdType
==
'Timestamp'
>
<#
if
defDataType
==
"DATETIME"
>
<#
assign
defieldano
=
defieldano
+
",fieldType=
\"
DATETIME
\"
,format=
\"
yyyy-MM-dd HH:mm:ss
\"
"
>
<#
elseif
defDataType
==
"DATE"
>
<#
assign
defieldano
=
defieldano
+
",fieldType=
\"
DATE
\"
,format=
\"
yyyy-MM-dd
\"
"
>
<#
elseif
defDataType
==
"TIME"
>
<#
assign
defieldano
=
defieldano
+
",fieldType=
\"
TIME
\"
,format=
\"
HH:mm
\"
"
>
<#
elseif
defDataType
==
'PICKUPDATA'
&&
defStdType
==
'Timestamp'
><#
comment
>
外键值附加数据,数据类型为时间
</#
comment
>
<#
assign
defieldano
=
defieldano
+
",fieldType=
\"
DATETIME
\"
,format=
\"
yyyy-MM-dd HH:mm:ss
\"
"
>
</#
if
>
</#
if
>
</#
if
>
/**
/**
*
${
defield
.
getLogicName
()}
*
${
defield
.
getLogicName
()}
*/
*/
<#
comment
>
审计注解
</#
comment
>
<#
if
defield
.
isEnableAudit
()==
true
&&
de
.
getAuditMode
()
!=0>
@
Audit
</#
if
>
<#
comment
>
属性默认值
</#
comment
>
<#
comment
>
属性默认值
</#
comment
>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
@
DEField
(${
defieldano
})
@
DEField
(${
defieldano
})
...
@@ -337,6 +366,10 @@ public class ${item.getCodeName()} extends EntityMongo implements Serializable {
...
@@ -337,6 +366,10 @@ public class ${item.getCodeName()} extends EntityMongo implements Serializable {
<#
if
defield
.
isKeyDEField
()==
true
>
<#
if
defield
.
isKeyDEField
()==
true
>
@
Id
()
@
Id
()
</#
if
>
</#
if
>
<#
comment
>
审计注解
</#
comment
>
<#
if
defield
.
isEnableAudit
()==
true
&&
de
.
getAuditMode
()
!=0>
@
Audit
</#
if
>
<#
comment
>
属性默认值
</#
comment
>
<#
comment
>
属性默认值
</#
comment
>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
@
DEField
(${
defieldano
})
@
DEField
(${
defieldano
})
...
@@ -501,6 +534,10 @@ public class ${item.getCodeName()} extends EntityClient implements Serializable
...
@@ -501,6 +534,10 @@ public class ${item.getCodeName()} extends EntityClient implements Serializable
/**
/**
*
${
defield
.
getLogicName
()}
*
${
defield
.
getLogicName
()}
*/
*/
<#
comment
>
审计注解
</#
comment
>
<#
if
defield
.
isEnableAudit
()==
true
&&
de
.
getAuditMode
()
!=0>
@
Audit
</#
if
>
<#
comment
>
属性默认值
</#
comment
>
<#
comment
>
属性默认值
</#
comment
>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
@
DEField
(${
defieldano
})
@
DEField
(${
defieldano
})
...
@@ -677,6 +714,10 @@ public class ${item.getCodeName()} extends EntityBase implements Serializable {
...
@@ -677,6 +714,10 @@ public class ${item.getCodeName()} extends EntityBase implements Serializable {
/**
/**
*
${
defield
.
getLogicName
()}
*
${
defield
.
getLogicName
()}
*/
*/
<#
comment
>
审计注解
</#
comment
>
<#
if
defield
.
isEnableAudit
()==
true
&&
de
.
getAuditMode
()
!=0>
@
Audit
</#
if
>
<#
comment
>
属性默认值
</#
comment
>
<#
comment
>
属性默认值
</#
comment
>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
<#
if
defieldano
??
&&
defieldano
!='' && defield.isPhisicalDEField()==true>
@
DEField
(${
defieldano
})
@
DEField
(${
defieldano
})
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/mapper/%DE%Mapper.java.ftl
浏览文件 @
f9ed7097
...
@@ -21,6 +21,11 @@ import java.io.Serializable;
...
@@ -21,6 +21,11 @@ import java.io.Serializable;
import
com
.
baomidou
.
mybatisplus
.
core
.
toolkit
.
Constants
;
import
com
.
baomidou
.
mybatisplus
.
core
.
toolkit
.
Constants
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
<#
if
item
.
getDSLink
??
&&
item
.
getDSLink
()??>
<#
if
item
.
getDSLink
()
!='DEFAULT'>
@
com
.
baomidou
.
dynamic
.
datasource
.
annotation
.
DS
(
"${item.getDSLink()?lower_case}"
)
</#
if
>
</#
if
>
public
interface
${
item
.
getCodeName
()}
Mapper
extends
BaseMapper
<${
item
.
getCodeName
()}>{
public
interface
${
item
.
getCodeName
()}
Mapper
extends
BaseMapper
<${
item
.
getCodeName
()}>{
<#
if
item
.
getAllPSDEDataSets
()??>
<#
if
item
.
getAllPSDEDataSets
()??>
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/mapping/%DE%%ITEM%.java.ftl
0 → 100644
浏览文件 @
f9ed7097
<#
ibiztemplate
>
TARGET
=
PSDEDATAIMP
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
core
.${
de
.
getPSSystemModule
().
codeName
?
lower_case
}.
mapping
;
import
${
pub
.
getPKGCodeName
()}.
core
.${
de
.
getPSSystemModule
().
codeName
?
lower_case
}.
domain
.${
de
.
codeName
};
import
org
.
mapstruct
.*;
import
java
.
util
.
List
;
@
Mapper
(
componentModel
=
"spring"
,
uses
=
{})
public
interface
${
de
.
codeName
}${
item
.
codeName
}
{
<#
assign
keyFieldName
=
srfcaseformat
(
de
.
getKeyPSDEField
().
getCodeName
(),
'l_u2lC'
)>
<#
if
item
.
getPSDEDataImportItems
??
&&
item
.
getPSDEDataImportItems
()??>
@
Mappings
({
@
Mapping
(
target
=
"${keyFieldName}"
,
source
=
"${keyFieldName}"
),
<#
list
item
.
getPSDEDataImportItems
()
as
importItem
>
<#
if
importItem
.
getPSDEField
()??
&&
importItem
.
getPSDEField
().
isKeyDEField
()==
false
>
<#
assign
deFieldName
=
srfcaseformat
(
importItem
.
getPSDEField
().
getCodeName
(),
'l_u2lC'
)>
@
Mapping
(
target
=
"${deFieldName}"
,
source
=
"${deFieldName}"
),
</#
if
>
</#
list
>
})
@
BeanMapping
(
ignoreByDefault
=
true
)
</#
if
>
${
de
.
codeName
}
toDomain
(${
de
.
codeName
}
entity
);
List
<${
de
.
codeName
}>
toDomain
(
List
<${
de
.
codeName
}>
entities
);
}
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/service/I%DE%Service.java.ftl
浏览文件 @
f9ed7097
...
@@ -7,6 +7,14 @@ TARGET=PSDATAENTITY
...
@@ -7,6 +7,14 @@ TARGET=PSDATAENTITY
<#
if
de
.
getPSDEFieldByPDT
(
'ORGID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'ORGSECTORID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'CREATEMAN'
,
true
)??
>
<#
if
de
.
getPSDEFieldByPDT
(
'ORGID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'ORGSECTORID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'CREATEMAN'
,
true
)??
>
<#
assign
hasDEPrefield
=
true
>
<#
assign
hasDEPrefield
=
true
>
</#
if
>
</#
if
>
<#
assign
hasDEImport
=
false
>
<#
comment
>
实体数据导入
</#
comment
>
<#
if
de
.
getAllPSDEDataImports
??
&&
de
.
getAllPSDEDataImports
()??>
<#
list
de
.
getAllPSDEDataImports
()
as
deImport
>
<#
assign
hasDEImport
=
true
>
<#
break
>
</#
list
>
</#
if
>
<#
if
de
.
getStorageMode
()==
1
||
de
.
getStorageMode
()==
2
||
de
.
getStorageMode
()==
4
||
de
.
getStorageMode
()==
0
>
<#
if
de
.
getStorageMode
()==
1
||
de
.
getStorageMode
()==
2
||
de
.
getStorageMode
()==
4
||
de
.
getStorageMode
()==
0
>
package
${
pub
.
getPKGCodeName
()}.
core
.${
item
.
getPSSystemModule
().
getCodeName
()?
lower_case
}.
service
;
package
${
pub
.
getPKGCodeName
()}.
core
.${
item
.
getPSSystemModule
().
getCodeName
()?
lower_case
}.
service
;
...
@@ -194,6 +202,10 @@ public interface I${item.codeName}Service{
...
@@ -194,6 +202,10 @@ public interface I${item.codeName}Service{
</#
if
>
</#
if
>
</#
list
>
</#
list
>
</#
if
>
</#
if
>
<#
comment
>
实体数据导入
</#
comment
>
<#
if
hasDEImport
>
JSONObject
importData
(
List
<${
de
.
codeName
}>
entities
,
int
batchSize
,
boolean
isIgnoreError
);
</#
if
>
</#
macro
>
</#
macro
>
<#
comment
>
输出测试行为
</#
comment
>
<#
comment
>
输出测试行为
</#
comment
>
...
...
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/%MOD_PKGPATH%/service/impl/%DE%ServiceImpl.java.ftl
浏览文件 @
f9ed7097
此差异已折叠。
点击以展开。
SLN/%PUBPRJ%-core/src/main/java/%SYS_PKGPATH%/core/extensions.service/%DE%ServiceEx.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSDATAENTITY
</#
ibiztemplate
>
<#
comment
>
判断当前实体是否包含自定义行为
</#
comment
>
<#
assign
hasServiceEx
=
false
>
<#
if
item
.
getAllPSDEActions
()??>
<#
list
item
.
getAllPSDEActions
()
as
deaction
>
<#
if
deaction
.
isEnableBackend
()
&&
deaction
.
getActionType
()==
'USERCUSTOM'
>
<#
assign
hasServiceEx
=
true
>
<#
break
>
<#
elseif
deaction
.
isEnableBackend
()
&&
deaction
.
getTestActionMode
??
&&
deaction
.
getTestActionMode
()??
&&
(
deaction
.
getTestActionMode
()
==
1
||
deaction
.
getTestActionMode
()
==
3
)>
<#
assign
hasServiceEx
=
true
>
<#
break
>
</#
if
>
</#
list
>
</#
if
>
<#
if
hasServiceEx
&&
(
de
.
getStorageMode
()==
1
||
de
.
getStorageMode
()==
2
||
de
.
getStorageMode
()==
4
||
de
.
getStorageMode
()==
0
)
>
package
${
pub
.
getPKGCodeName
()}.
core
.
extensions
.
service
;
/**
*
扩展目录已变更,请到
[${
pub
.
getPKGCodeName
()}.
core
.
extensions
.
service
.
xxExService
]
中来进行扩展
*
若您之前有在当前目录下扩展过其它的
service
对象,请将扩展的代码移到新的扩展类中,并注释掉老的扩展类,防止
Bean
重复
*/
@
Deprecated
public
class
${
item
.
codeName
}
ServiceEx
{
}
</#
if
>
SLN/%PUBPRJ%-core/src/main/resources/liquibase/changelog/20200709124030_init_ibzaudit.xml.ftl
0 → 100644
浏览文件 @
f9ed7097
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="Think (generated)" id="1566027230162-1">
<preConditions onFail="MARK_RAN" >
<not>
<tableExists tableName="IBZDATAAUDIT" />
</not>
</preConditions>
<createTable remarks="数据审计" tableName="IBZDATAAUDIT">
<column name="DATAAUDITID" remarks="数据审计标识" type="VARCHAR2(100 BYTE)">
<constraints primaryKey="true" primaryKeyName="SYS_C00115093"/>
</column>
<column name="OPPERSONID" remarks="操作人标识" type="VARCHAR2(100 BYTE)"/>
<column name="OPPERSONNAME" remarks="操作人名称" type="VARCHAR2(100 BYTE)"/>
<column name="AUDITTYPE" remarks="审计行为类型" type="VARCHAR2(60 BYTE)"/>
<column name="OPTIME" remarks="操作时间" type="date"/>
<column name="IPADDRESS" remarks="访问地址" type="VARCHAR2(100 BYTE)"/>
<column name="AUDITOBJECTDATA" remarks="审计对象(表数据)" type="VARCHAR2(100 BYTE)"/>
<column name="AUDITOBJECT" remarks="审计对象(表)" type="VARCHAR2(100 BYTE)"/>
<column name="AUDITINFO" remarks="审计明细" type="CLOB"/>
<column name="ISDATACHANGED" remarks="审计数据是否发生变化" type="INTEGER"/>
</createTable>
</changeSet>
</databaseChangeLog>
SLN/%PUBPRJ%-core/src/main/resources/mapper/%MOD_PKGPATH%/%DE_PKGPATH%/${de.codeName}Mapper.xml.ftl
浏览文件 @
f9ed7097
...
@@ -204,8 +204,10 @@ TARGET=PSDATAENTITY
...
@@ -204,8 +204,10 @@ TARGET=PSDATAENTITY
<#comment>数据查询context条件转换</#comment>
<#comment>数据查询context条件转换</#comment>
<#function contextParamConvert contextParam>
<#function contextParamConvert contextParam>
<#comment>补充上下文的IN查询(in通过$获取参数,其余为#): IN (${srfdatacontext('cityid','{"defname":"CITYID","dename":"CITY"}')}) -->IN ( ${srf.srfdatacontext.cityid} ) </#comment>
<#assign resultParam=contextParam?replace("(IN|in) \\(\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}\\)","$1 (\\$\{srf.$2.$3})","r")>
<#comment>平台配置格式替换${srfdatacontext('cityid','{"defname":"CITYID","dename":"CITY"}')} --> #{srf.srfdatacontext.cityid} </#comment>
<#comment>平台配置格式替换${srfdatacontext('cityid','{"defname":"CITYID","dename":"CITY"}')} --> #{srf.srfdatacontext.cityid} </#comment>
<#assign resultParam=
contex
tParam?replace("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}","#\{srf.$1.$2}","r")>
<#assign resultParam=
resul
tParam?replace("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}","#\{srf.$1.$2}","r")>
<#comment>用户配置格式替换${srfdatacontext('cityid')} --> #{srf.srfdatacontext.cityid} </#comment>
<#comment>用户配置格式替换${srfdatacontext('cityid')} --> #{srf.srfdatacontext.cityid} </#comment>
<#assign resultParam=resultParam?replace("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)'\\)}","#\{srf.$1.$2}","r")>
<#assign resultParam=resultParam?replace("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)'\\)}","#\{srf.$1.$2}","r")>
<#comment>将上下文参数转小写 #{srf.srfdatacontext.SRFORGID} --> #{srf.srfdatacontext.srforgid}</#comment>
<#comment>将上下文参数转小写 #{srf.srfdatacontext.SRFORGID} --> #{srf.srfdatacontext.srforgid}</#comment>
...
@@ -213,14 +215,6 @@ TARGET=PSDATAENTITY
...
@@ -213,14 +215,6 @@ TARGET=PSDATAENTITY
<#list params as param>
<#list params as param>
<#assign resultParam=resultParam?replace(param,param?lower_case,'i')>
<#assign resultParam=resultParam?replace(param,param?lower_case,'i')>
</#list>
</#list>
<#--<#assign resultParam="">-->
<#--<#assign resultParam=contextParam?replace('$\{srfdatacontext(\'','#\{srf.datacontext.')?replace("','\\{[\\S]*}'\\)}","\\}","r")><#comment>数据上下文</#comment>-->
<#--<#assign resultParam=resultParam?replace('$\{srfsessioncontext(\'','#\{srf.sessioncontext.')?replace("','\\{[\\S]*}'\\)}","\\}","r")><#comment>用户上下文</#comment>-->
<#--<#assign resultParam=resultParam?replace('$\{srfwebcontext(\'','#\{srf.webcontext.')?replace("','\\{[\\S]*}'\\)}","\\}","r")><#comment>网页请求上下文</#comment>-->
<#--<#assign params=resultParam?matches('#\\{srf.[\\S]*}')>-->
<#--<#list params as param>-->
<#--<#assign resultParam=resultParam?replace(param,param?lower_case)><#comment>将上下文参数转小写</#comment>-->
<#--</#list>-->
<#return resultParam>
<#return resultParam>
</#function>
</#function>
...
@@ -228,8 +222,10 @@ TARGET=PSDATAENTITY
...
@@ -228,8 +222,10 @@ TARGET=PSDATAENTITY
<#function checkNullContextParamConvert contextParam>
<#function checkNullContextParamConvert contextParam>
<#comment>获取数据查询中的条件,并对条件进行转义 <![CDATA[ age <='20' ]]></#comment>
<#comment>获取数据查询中的条件,并对条件进行转义 <![CDATA[ age <='20' ]]></#comment>
<#assign resultParam=contextParam?replace("(\\s+[\\w|\\.|\\`]+\\s*?)(<>|<=|<|>=|>)(\\s*[\\w|\\'|$\{}()'\",:\\\\]+\\s+?)"," <![CDATA[ $1$2$3 ]]> ","r")>
<#assign resultParam=contextParam?replace("(\\s+[\\w|\\.|\\`]+\\s*?)(<>|<=|<|>=|>)(\\s*[\\w|\\'|$\{}()'\",:\\\\]+\\s+?)"," <![CDATA[ $1$2$3 ]]> ","r")>
<#comment>补充上下文的IN查询(in通过$获取参数,其余为#)</#comment>
<#assign resultParam=resultParam?replace("<#assign _value=srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)><#if _value\\?length gt 0>(.*?)\\(\\$\\{_value}\\)<#else>1=1</#if>","<choose><when test=\"srf.$1.$2 != null\"> <![CDATA[ $4 \\$\{srf.$1.$2} ]]> </when><otherwise>1=1</otherwise></choose>","r")>
<#comment>获取模型中的空值条件,在条件外层补充mybatis判断条件 <choose><when test="srf.datacontext.name != null"> <![CDATA[ t1.`NAME` <= #{srf.datacontext.name} ]]> </when><otherwise>1=1</otherwise></choose> </#comment>
<#comment>获取模型中的空值条件,在条件外层补充mybatis判断条件 <choose><when test="srf.datacontext.name != null"> <![CDATA[ t1.`NAME` <= #{srf.datacontext.name} ]]> </when><otherwise>1=1</otherwise></choose> </#comment>
<#assign resultParam=resultParam?replace("<#assign _value=srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)><#if _value\\?length gt 0>(.*?)
=(.*?)<#else>1=1</#if>","<choose><when test=\"srf.$1.$2 != null\"> <![CDATA[ $4=
#\{srf.$1.$2} ]]> </when><otherwise>1=1</otherwise></choose>","r")>
<#assign resultParam=resultParam?replace("<#assign _value=srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)><#if _value\\?length gt 0>(.*?)
\\$\\{_value}.*?<#else>1=1</#if>","<choose><when test=\"srf.$1.$2 != null\"> <![CDATA[ $4
#\{srf.$1.$2} ]]> </when><otherwise>1=1</otherwise></choose>","r")>
<#comment>对数据查询中的其余条件的context进行解析</#comment>
<#comment>对数据查询中的其余条件的context进行解析</#comment>
<#assign resultParam=contextParamConvert(resultParam)>
<#assign resultParam=contextParamConvert(resultParam)>
<#return resultParam>
<#return resultParam>
...
@@ -239,7 +235,7 @@ TARGET=PSDATAENTITY
...
@@ -239,7 +235,7 @@ TARGET=PSDATAENTITY
<#function checkIgnoreNullvalueCond dataQueryCode>
<#function checkIgnoreNullvalueCond dataQueryCode>
<#if dataQueryCode.getPSDEDataQueryCodeConds()??>
<#if dataQueryCode.getPSDEDataQueryCodeConds()??>
<#list dataQueryCode.getPSDEDataQueryCodeConds() as dedqfieldcond>
<#list dataQueryCode.getPSDEDataQueryCodeConds() as dedqfieldcond>
<#if srfjavasqlcode(dedqfieldcond.getCustomCond())?matches("(.*?)srf
datacontext
(.*?)\\\\\"ignoreempty\\\\\":true(.*?)")>
<#if srfjavasqlcode(dedqfieldcond.getCustomCond())?matches("(.*?)srf
(datacontext|sessioncontext|webcontext)
(.*?)\\\\\"ignoreempty\\\\\":true(.*?)")>
<#return true>
<#return true>
</#if>
</#if>
</#list>
</#list>
...
...
SLN/%PUBPRJ%-dependencies/pom.xml.ftl
浏览文件 @
f9ed7097
<#ibiztemplate>
<#ibiztemplate>
TARGET=PSSYSTEM
TARGET=PSSYSTEM
</#ibiztemplate>
</#ibiztemplate>
<#assign bDynamicDS=false>
<#list sys.getAllPSDataEntities() as entity>
<#if (entity.getStorageMode()==1 || entity.getStorageMode()==2) && entity.getDSLink()!='DEFAULT'>
<#assign bDynamicDS=true>
<#break>
</#if>
</#list>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
...
@@ -81,6 +88,9 @@ TARGET=PSSYSTEM
...
@@ -81,6 +88,9 @@ TARGET=PSSYSTEM
<!--baomidou-jobs定时服务 -->
<!--baomidou-jobs定时服务 -->
<baomidou-jobs.version>1.0.3</baomidou-jobs.version>
<baomidou-jobs.version>1.0.3</baomidou-jobs.version>
<!-- eureka微服务注册中心 -->
<eureka-client.version>2.2.1.RELEASE</eureka-client.version>
<#if sys.getAllPSSystemDBConfigs()??>
<#if sys.getAllPSSystemDBConfigs()??>
<#list sys.getAllPSSystemDBConfigs() as dbConfig>
<#list sys.getAllPSSystemDBConfigs() as dbConfig>
<#if dbConfig.getDBType()=='MYSQL5'>
<#if dbConfig.getDBType()=='MYSQL5'>
...
@@ -337,6 +347,13 @@ TARGET=PSSYSTEM
...
@@ -337,6 +347,13 @@ TARGET=PSSYSTEM
<artifactId>h2</artifactId>
<artifactId>h2</artifactId>
</dependency>
</dependency>
<!-- eureka服务注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>${r'${eureka-client.version}'}</version>
</dependency>
<#if sys.getAllPSSystemDBConfigs()??>
<#if sys.getAllPSSystemDBConfigs()??>
<#list sys.getAllPSSystemDBConfigs() as dbConfig>
<#list sys.getAllPSSystemDBConfigs() as dbConfig>
<#if dbConfig.getDBType()=='MYSQL5'>
<#if dbConfig.getDBType()=='MYSQL5'>
...
@@ -363,6 +380,14 @@ TARGET=PSSYSTEM
...
@@ -363,6 +380,14 @@ TARGET=PSSYSTEM
</#list>
</#list>
</#if>
</#if>
<#if bDynamicDS>
<!-- mp动态数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</dependency>
</#if>
</dependencies>
</dependencies>
</project>
</project>
SLN/%PUBPRJ%-provider/%PUBPRJ%-provider-%SYSAPI_PKGPATH%/src/main/docker/Dockerfile.ftl
浏览文件 @
f9ed7097
...
@@ -2,20 +2,29 @@
...
@@ -2,20 +2,29 @@
TARGET=PSSYSSERVICEAPI
TARGET=PSSYSSERVICEAPI
</#ibiztemplate>
</#ibiztemplate>
<#assign httpPort = "8081">
<#assign httpPort = "8081">
<#assign timezone = "Asia/Shanghai">
<#if sysrun?? >
<#if sysrun?? >
<#if sysrun.getPSDevSlnMSDepAPI()??>
<#if sysrun.getPSDevSlnMSDepAPI()??>
<#if sysrun.getPSDevSlnMSDepAPI().getHttpPort()??>
<#if sysrun.getPSDevSlnMSDepAPI().getHttpPort()??>
<#assign httpPort = sysrun.getPSDevSlnMSDepAPI().getHttpPort()?c>
<#assign httpPort = sysrun.getPSDevSlnMSDepAPI().getHttpPort()?c>
</#if>
<#if sysrun.getPSDevSlnMSDepAPI().getUserParam("timezone","")?? && sysrun.getPSDevSlnMSDepAPI().getUserParam("timezone","")!="">
<#assign timezone = sysrun.getPSDevSlnMSDepAPI().getUserParam("timezone","")>
<#elseif sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatform().getUserParam("timezone","")?? && sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatform().getUserParam("timezone","")!="">
<#assign timezone = sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatform().getUserParam("timezone","")>
</#if>
</#if>
</#if>
</#if>
</#if>
</#if>
FROM openjdk:8-jre-alpine
FROM openjdk:8-jre-alpine
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
ENV TZ=${timezone} \
SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
IBIZ_SLEEP=0 \
IBIZ_SLEEP=0 \
JAVA_OPTS=""
JAVA_OPTS=""
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
CMD echo "The application will start in ${r'${IBIZ_SLEEP}'}s..." && \
CMD echo "The application will start in ${r'${IBIZ_SLEEP}'}s..." && \
sleep ${r'${IBIZ_SLEEP}'} && \
sleep ${r'${IBIZ_SLEEP}'} && \
java ${r'${JAVA_OPTS}'} -Djava.security.egd=file:/dev/./urandom -jar /${pub.getCodeName()?lower_case}-provider-${api.getCodeName()?lower_case}.jar
java ${r'${JAVA_OPTS}'} -Djava.security.egd=file:/dev/./urandom -jar /${pub.getCodeName()?lower_case}-provider-${api.getCodeName()?lower_case}.jar
...
...
SLN/%PUBPRJ%-provider/%PUBPRJ%-provider-%SYSAPI_PKGPATH%/src/main/java/%SYS_PKGPATH%/%SYSAPI_PKGPATH%/%SYS%%API%Application.java.ftl
浏览文件 @
f9ed7097
<#
ibiztemplate
>
<#
ibiztemplate
>
TARGET
=
PSSYSSERVICEAPI
TARGET
=
PSSYSSERVICEAPI
</#
ibiztemplate
>
</#
ibiztemplate
>
<#
assign
bDynamicDS
=
false
>
<#
list
sys
.
getAllPSDataEntities
()
as
entity
>
<#
if
(
entity
.
getStorageMode
()==
1
||
entity
.
getStorageMode
()==
2
)
&&
entity
.
getDSLink
()
!='DEFAULT'>
<#
assign
bDynamicDS
=
true
>
<#
break
>
</#
if
>
</#
list
>
package
${
pub
.
getPKGCodeName
()}.${
item
.
codeName
?
lower_case
};
package
${
pub
.
getPKGCodeName
()}.${
item
.
codeName
?
lower_case
};
import
lombok
.
extern
.
slf4j
.
Slf4j
;
import
lombok
.
extern
.
slf4j
.
Slf4j
;
...
@@ -16,6 +23,8 @@ import org.mybatis.spring.annotation.MapperScan;
...
@@ -16,6 +23,8 @@ import org.mybatis.spring.annotation.MapperScan;
import
org
.
springframework
.
web
.
method
.
support
.
HandlerMethodArgumentResolver
;
import
org
.
springframework
.
web
.
method
.
support
.
HandlerMethodArgumentResolver
;
import
org
.
springframework
.
web
.
servlet
.
config
.
annotation
.
WebMvcConfigurerAdapter
;
import
org
.
springframework
.
web
.
servlet
.
config
.
annotation
.
WebMvcConfigurerAdapter
;
import
org
.
springframework
.
cloud
.
openfeign
.
EnableFeignClients
;
import
org
.
springframework
.
cloud
.
openfeign
.
EnableFeignClients
;
import
org
.
springframework
.
scheduling
.
annotation
.
EnableAsync
;
import
org
.
springframework
.
scheduling
.
annotation
.
EnableScheduling
;
import
java
.
util
.
List
;
import
java
.
util
.
List
;
@
Slf4j
@
Slf4j
...
@@ -43,11 +52,16 @@ import java.util.List;
...
@@ -43,11 +52,16 @@ import java.util.List;
<#
if
bmogo
==
false
>
<#
if
bmogo
==
false
>
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
</#
if
>
</#
if
>
<#
if
bDynamicDS
>
com
.
alibaba
.
druid
.
spring
.
boot
.
autoconfigure
.
DruidDataSourceAutoConfigure
.
class
</#
if
>
})
})
@
Import
({
@
Import
({
org
.
springframework
.
cloud
.
openfeign
.
FeignClientsConfiguration
.
class
org
.
springframework
.
cloud
.
openfeign
.
FeignClientsConfiguration
.
class
})
})
@
EnableFeignClients
(
basePackages
=
{
"${pub.getPKGCodeName()}"
})
@
EnableFeignClients
(
basePackages
=
{
"${pub.getPKGCodeName()}"
})
@
EnableAsync
@
EnableScheduling
public
class
${
sys
.
codeName
}${
item
.
codeName
}
Application
extends
WebMvcConfigurerAdapter
{
public
class
${
sys
.
codeName
}${
item
.
codeName
}
Application
extends
WebMvcConfigurerAdapter
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
...
...
SLN/%PUBPRJ%-provider/%PUBPRJ%-provider-%SYSAPI_PKGPATH%/src/main/java/%SYS_PKGPATH%/%SYSAPI_PKGPATH%/config/%API%AutoConfiguration.java.ftl
浏览文件 @
f9ed7097
...
@@ -13,6 +13,9 @@ import org.springframework.context.annotation.Bean;
...
@@ -13,6 +13,9 @@ import org.springframework.context.annotation.Bean;
import
org
.
springframework
.
context
.
annotation
.
Configuration
;
import
org
.
springframework
.
context
.
annotation
.
Configuration
;
import
org
.
springframework
.
web
.
context
.
support
.
AnnotationConfigWebApplicationContext
;
import
org
.
springframework
.
web
.
context
.
support
.
AnnotationConfigWebApplicationContext
;
import
org
.
springframework
.
web
.
servlet
.
DispatcherServlet
;
import
org
.
springframework
.
web
.
servlet
.
DispatcherServlet
;
import
org
.
springframework
.
scheduling
.
concurrent
.
ThreadPoolTaskExecutor
;
import
java
.
util
.
concurrent
.
Executor
;
import
java
.
util
.
concurrent
.
ThreadPoolExecutor
;
@
Configuration
@
Configuration
@
ConditionalOnClass
(${
item
.
codeName
}
RestConfiguration
.
class
)
@
ConditionalOnClass
(${
item
.
codeName
}
RestConfiguration
.
class
)
...
@@ -27,6 +30,18 @@ public class ${item.codeName}AutoConfiguration implements ApplicationContextAwar
...
@@ -27,6 +30,18 @@ public class ${item.codeName}AutoConfiguration implements ApplicationContextAwar
this
.
applicationContext
=
applicationContext
;
this
.
applicationContext
=
applicationContext
;
}
}
@
Bean
(
"asyncExecutor"
)
public
Executor
asyncExecutor
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
executor
.
setCorePoolSize
(
10
);
executor
.
setMaxPoolSize
(
20
);
executor
.
setQueueCapacity
(
2000
);
executor
.
setKeepAliveSeconds
(
600
);
executor
.
setThreadNamePrefix
(
"asyncExecutor-"
);
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
return
executor
;
}
//
@
Bean
//
@
Bean
//
public
ServletRegistrationBean
${
item
.
codeName
?
lower_case
}
Servlet
()
{
//
public
ServletRegistrationBean
${
item
.
codeName
?
lower_case
}
Servlet
()
{
//
AnnotationConfigWebApplicationContext
dispatcherServletConfiguration
=
new
AnnotationConfigWebApplicationContext
();
//
AnnotationConfigWebApplicationContext
dispatcherServletConfiguration
=
new
AnnotationConfigWebApplicationContext
();
...
...
SLN/%PUBPRJ%-provider/%PUBPRJ%-provider-%SYSAPI_PKGPATH%/src/main/java/%SYS_PKGPATH%/%SYSAPI_PKGPATH%/mapping/%ITEM%Mapping.java.ftl
浏览文件 @
f9ed7097
...
@@ -5,6 +5,8 @@ TARGET=PSDESERVICEAPI
...
@@ -5,6 +5,8 @@ TARGET=PSDESERVICEAPI
<#
if
de
.
isSubSysDE
()==
false
&&
de
.
getAllPSDEServiceAPIs
()??>
<#
if
de
.
isSubSysDE
()==
false
&&
de
.
getAllPSDEServiceAPIs
()??>
<#
assign
pubPkgCodeName
=
pub
.
getPKGCodeName
()>
<#
assign
pubPkgCodeName
=
pub
.
getPKGCodeName
()>
<#
assign
itemSysApiCodeNameLC
=
item
.
getPSSysServiceAPI
().
getCodeName
()?
lower_case
>
<#
assign
itemSysApiCodeNameLC
=
item
.
getPSSysServiceAPI
().
getCodeName
()?
lower_case
>
<#
assign
itemSysApiCodeName
=
item
.
getPSSysServiceAPI
().
getCodeName
()>
<#
assign
mappingName
=
itemSysApiCodeName
+
item
.
codeName
+
"Mapping"
>
package
${
pubPkgCodeName
}.${
itemSysApiCodeNameLC
}.
mapping
;
package
${
pubPkgCodeName
}.${
itemSysApiCodeNameLC
}.
mapping
;
import
org
.
mapstruct
.*;
import
org
.
mapstruct
.*;
...
@@ -13,7 +15,7 @@ import ${pubPkgCodeName}.${itemSysApiCodeNameLC}.dto.${item.getCodeName()}DTO;
...
@@ -13,7 +15,7 @@ import ${pubPkgCodeName}.${itemSysApiCodeNameLC}.dto.${item.getCodeName()}DTO;
import
${
pub
.
getPKGCodeName
()}.
util
.
domain
.
MappingBase
;
import
${
pub
.
getPKGCodeName
()}.
util
.
domain
.
MappingBase
;
import
org
.
mapstruct
.
factory
.
Mappers
;
import
org
.
mapstruct
.
factory
.
Mappers
;
@
Mapper
(
componentModel
=
"spring"
,
uses
=
{},
@
Mapper
(
componentModel
=
"spring"
,
uses
=
{},
implementationName
=
"${mappingName}"
,
nullValuePropertyMappingStrategy
=
NullValuePropertyMappingStrategy
.
IGNORE
,
nullValuePropertyMappingStrategy
=
NullValuePropertyMappingStrategy
.
IGNORE
,
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
${
item
.
getCodeName
()}
Mapping
extends
MappingBase
<${
item
.
codeName
}
DTO
,
${
de
.
codeName
}>
{
public
interface
${
item
.
getCodeName
()}
Mapping
extends
MappingBase
<${
item
.
codeName
}
DTO
,
${
de
.
codeName
}>
{
...
...
SLN/%PUBPRJ%-provider/%PUBPRJ%-provider-%SYSAPI_PKGPATH%/src/main/java/%SYS_PKGPATH%/%SYSAPI_PKGPATH%/rest/%ITEM%Resource.java.ftl
浏览文件 @
f9ed7097
...
@@ -22,6 +22,14 @@ TARGET=PSDESERVICEAPI
...
@@ -22,6 +22,14 @@ TARGET=PSDESERVICEAPI
<#
if
de
.
getPSDEFieldByPDT
(
'ORGID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'ORGSECTORID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'CREATEMAN'
,
true
)??
>
<#
if
de
.
getPSDEFieldByPDT
(
'ORGID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'ORGSECTORID'
,
true
)??
||
de
.
getPSDEFieldByPDT
(
'CREATEMAN'
,
true
)??
>
<#
assign
hasDEPrefield
=
true
>
<#
assign
hasDEPrefield
=
true
>
</#
if
>
</#
if
>
<#
assign
hasDEImport
=
false
>
<#
comment
>
实体数据导入
</#
comment
>
<#
if
de
.
getAllPSDEDataImports
??
&&
de
.
getAllPSDEDataImports
()??>
<#
list
de
.
getAllPSDEDataImports
()
as
deImport
>
<#
assign
hasDEImport
=
true
>
<#
break
>
</#
list
>
</#
if
>
package
${
pubPkgCodeName
}.${
itemSysApiCodeNameLC
}.
rest
;
package
${
pubPkgCodeName
}.${
itemSysApiCodeNameLC
}.
rest
;
import
java
.
sql
.
Timestamp
;
import
java
.
sql
.
Timestamp
;
...
@@ -250,11 +258,11 @@ public class ${itemCodeName}Resource {
...
@@ -250,11 +258,11 @@ public class ${itemCodeName}Resource {
<#
else
>
<#
else
>
<@
SecurityAnnotation
deaction
/>
<@
SecurityAnnotation
deaction
/>
@
ApiOperation
(
value
=
"${deaction.getLogicName()}"
,
tags
=
{
"${deLogicName}"
},
notes
=
"${deaction.getLogicName()}"
)
@
ApiOperation
(
value
=
"${deaction.getLogicName()}"
,
tags
=
{
"${deLogicName}"
},
notes
=
"${deaction.getLogicName()}"
)
@
RequestMapping
(
method
=
RequestMethod
.${
reqMtd
},
value
=
"${fullPath}
/{${itemCodeNameLC + keyCNLC}}
/${deactionCodeName?lower_case}"
)
@
RequestMapping
(
method
=
RequestMethod
.${
reqMtd
},
value
=
"${fullPath}
<#if deaction.getRequestParamType() == 'NOKEY'><#else>/{${itemCodeNameLC + keyCNLC}}</#if>
/${deactionCodeName?lower_case}"
)
<#
if
de
.
getStorageMode
()==
4
><#
else
>
@
Transactional
</#
if
>
<#
if
de
.
getStorageMode
()==
4
><#
else
>
@
Transactional
</#
if
>
public
ResponseEntity
<${
itemCodeName
}
DTO
>
${
deactionCodeName
?
uncap_first
}(
${
id_etParams
}
)
{
public
ResponseEntity
<${
itemCodeName
}
DTO
>
${
deactionCodeName
?
uncap_first
}(
<#
if
deaction
.
getRequestParamType
()
==
'NOKEY'
>${
id_etParams4
}<#
else
>${
id_etParams
}</#
if
>
)
{
${
deCodeName
}
domain
=
${
itemCodeNameLC
}
Mapping
.
toDomain
(${
itemCodeNameLC
}
dto
);
${
deCodeName
}
domain
=
${
itemCodeNameLC
}
Mapping
.
toDomain
(${
itemCodeNameLC
}
dto
);
domain
.
set
${
dePKCodeName
}(${
itemCodeNameLC
+
keyCNLC
});
<#
if
deaction
.
getRequestParamType
()
==
'NOKEY'
><#
else
>
domain
.
set
${
dePKCodeName
}(${
itemCodeNameLC
+
keyCNLC
});</#
if
>
domain
=
${
deCodeNameLC
}
Service
.${
srfmethodname
(
deactionCodeName
)}(
domain
);
domain
=
${
deCodeNameLC
}
Service
.${
srfmethodname
(
deactionCodeName
)}(
domain
);
${
itemCodeNameLC
}
dto
=
${
itemCodeNameLC
}
Mapping
.
toDto
(
domain
);
${
itemCodeNameLC
}
dto
=
${
itemCodeNameLC
}
Mapping
.
toDto
(
domain
);
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(${
itemCodeNameLC
}
dto
);
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(${
itemCodeNameLC
}
dto
);
...
@@ -557,9 +565,9 @@ public class ${itemCodeName}Resource {
...
@@ -557,9 +565,9 @@ public class ${itemCodeName}Resource {
<#
else
>
<#
else
>
<@
SecurityAnnotation
deaction
/>
<@
SecurityAnnotation
deaction
/>
@
ApiOperation
(
value
=
"${byTagParams}${deLogicName}"
,
tags
=
{
"${deLogicName}"
},
notes
=
"${byTagParams}${deLogicName}"
)
@
ApiOperation
(
value
=
"${byTagParams}${deLogicName}"
,
tags
=
{
"${deLogicName}"
},
notes
=
"${byTagParams}${deLogicName}"
)
@
RequestMapping
(
method
=
RequestMethod
.${
reqMtd
},
value
=
"${fullPath}
/{${itemCodeNameLC + keyCNLC}}
/${deactionCodeName?lower_case}"
)
@
RequestMapping
(
method
=
RequestMethod
.${
reqMtd
},
value
=
"${fullPath}
<#if deaction.getRequestParamType() == 'NOKEY'><#else>/{${itemCodeNameLC + keyCNLC}}</#if>
/${deactionCodeName?lower_case}"
)
<#
if
de
.
getStorageMode
()==
4
><#
else
>
@
Transactional
</#
if
>
<#
if
de
.
getStorageMode
()==
4
><#
else
>
@
Transactional
</#
if
>
public
ResponseEntity
<${
itemCodeName
}
DTO
>
${
deactionCodeName
?
uncap_first
}${
byParams
}(
${
id_etParams
}
)
{
public
ResponseEntity
<${
itemCodeName
}
DTO
>
${
deactionCodeName
?
uncap_first
}${
byParams
}(
<#
if
deaction
.
getRequestParamType
()
==
'NOKEY'
>${
id_etParams4
}<#
else
>${
id_etParams
}</#
if
>
)
{
${
deCodeName
}
domain
=
${
itemCodeNameLC
}
Mapping
.
toDomain
(${
itemCodeNameLC
}
dto
);
${
deCodeName
}
domain
=
${
itemCodeNameLC
}
Mapping
.
toDomain
(${
itemCodeNameLC
}
dto
);
${
parentSetParams
}
${
parentSetParams
}
domain
=
${
deCodeNameLC
}
Service
.${
srfmethodname
(
deactionCodeName
)}(
domain
)
;
domain
=
${
deCodeNameLC
}
Service
.${
srfmethodname
(
deactionCodeName
)}(
domain
)
;
...
@@ -614,7 +622,37 @@ public class ${itemCodeName}Resource {
...
@@ -614,7 +622,37 @@ public class ${itemCodeName}Resource {
</#
if
>
</#
if
>
</#
list
>
</#
list
>
</#
if
>
</#
if
>
<#--
关系接口
end
-->
<#
comment
>
实体数据导入
</#
comment
>
<#
if
hasDEImport
>
<#
list
de
.
getAllPSDEDataImports
()
as
deImport
>
@
Autowired
${
pub
.
getPKGCodeName
()}.
core
.${
de
.
getPSSystemModule
().
codeName
?
lower_case
}.
mapping
.${
deCodeName
}${
deImport
.
codeName
}
${
deImport
.
codeName
?
lower_case
}
ImpMapping
;
</#
list
>
@
RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/${srfpluralize(itemCodeNameLC)}/import"
)
public
ResponseEntity
<
JSONObject
>
importData
(@
RequestParam
(
value
=
"config"
)
String
config
,
@
RequestBody
List
<${
deCodeName
}>
dtos
){
JSONObject
rs
=
new
JSONObject
();
if
(
dtos
.
size
()==
0
){
rs
.
put
(
"rst"
,
1
);
rs
.
put
(
"msg"
,
"未传入内容"
);
return
ResponseEntity
.
status
(
HttpStatus
.
NO_CONTENT
).
body
(
rs
);
}
else
{
<#
list
de
.
getAllPSDEDataImports
()
as
deImport
>
<#
if
deImport_index
==
0
>
if
(
config
.
equals
(
"${deImport.codeName}"
)){
rs
=${
deCodeNameLC
}
Service
.
importData
(${
deImport
.
codeName
?
lower_case
}
ImpMapping
.
toDomain
(
dtos
),${
deImport
.
getBatchSize
()?
c
},${
deImport
.
isIgnoreError
()?
c
});
}
<#
else
>
else
if
(
config
.
equals
(
"${deImport.codeName}"
)){
rs
=${
deCodeNameLC
}
Service
.
importData
(${
deImport
.
codeName
?
lower_case
}
ImpMapping
.
toDomain
(
dtos
),${
deImport
.
getBatchSize
()?
c
},${
deImport
.
isIgnoreError
()?
c
});
}
</#
if
>
</#
list
>
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
rs
);
}
}
</#
if
>
}
}
</#
if
>
</#
if
>
</#
if
>
</#
if
>
...
@@ -784,9 +822,9 @@ public class ${itemCodeName}Resource {
...
@@ -784,9 +822,9 @@ public class ${itemCodeName}Resource {
<#
else
>
<#
else
>
<@
SecurityAnnotation
deaction
/>
<@
SecurityAnnotation
deaction
/>
@
ApiOperation
(
value
=
"${deaction.getLogicName()}"
,
tags
=
{
"${deLogicName}"
},
notes
=
"${deaction.getLogicName()}"
)
@
ApiOperation
(
value
=
"${deaction.getLogicName()}"
,
tags
=
{
"${deLogicName}"
},
notes
=
"${deaction.getLogicName()}"
)
@
RequestMapping
(
method
=
RequestMethod
.${
reqMtd
},
value
=
"${fullPath}
/{${itemCodeNameLC + keyCNLC}}
/${deactionCodeName?lower_case}/test"
)
@
RequestMapping
(
method
=
RequestMethod
.${
reqMtd
},
value
=
"${fullPath}
<#if deaction.getRequestParamType() == 'NOKEY'><#else>/{${itemCodeNameLC + keyCNLC}}</#if>
/${deactionCodeName?lower_case}/test"
)
<#
if
de
.
getStorageMode
()==
4
><#
else
>
@
Transactional
</#
if
>
<#
if
de
.
getStorageMode
()==
4
><#
else
>
@
Transactional
</#
if
>
public
ResponseEntity
<
Boolean
>
test
${
deactionCodeName
?
cap_first
}(
${
id_etParams
}
)
{
public
ResponseEntity
<
Boolean
>
test
${
deactionCodeName
?
cap_first
}(
<#
if
deaction
.
getRequestParamType
()
==
'NOKEY'
>${
id_etParams4
}<#
else
>${
id_etParams
}</#
if
>
)
{
${
deCodeName
}
domain
=
${
itemCodeNameLC
}
Mapping
.
toDomain
(${
itemCodeNameLC
}
dto
);
${
deCodeName
}
domain
=
${
itemCodeNameLC
}
Mapping
.
toDomain
(${
itemCodeNameLC
}
dto
);
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(${
deCodeNameLC
}
Service
.
test
${
srfmethodname
(
deactionCodeName
)?
cap_first
}(
domain
));
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(${
deCodeNameLC
}
Service
.
test
${
srfmethodname
(
deactionCodeName
)?
cap_first
}(
domain
));
}
}
...
...
SLN/%PUBPRJ%-provider/%PUBPRJ%-provider-%SYSAPI_PKGPATH%/src/main/resources/application.yml.ftl
浏览文件 @
f9ed7097
...
@@ -3,6 +3,6 @@ TARGET=PSSYSSERVICEAPI
...
@@ -3,6 +3,6 @@ TARGET=PSSYSSERVICEAPI
</#ibiztemplate>
</#ibiztemplate>
spring:
spring:
profiles:
profiles:
include: sys , ${item.codeName?lower_case}-prod
include: sys ,
nacos,
${item.codeName?lower_case}-prod
application:
application:
name: ${sys.getCodeName()?lower_case}-${item.getCodeName()?lower_case}
name: ${sys.getCodeName()?lower_case}-${item.getCodeName()?lower_case}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/annotation/Audit.java.ftl
0 → 100644
浏览文件 @
f9ed7097
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
annotation
;
import
java
.
lang
.
annotation
.
ElementType
;
import
java
.
lang
.
annotation
.
Retention
;
import
java
.
lang
.
annotation
.
RetentionPolicy
;
import
java
.
lang
.
annotation
.
Target
;
@
Retention
(
RetentionPolicy
.
RUNTIME
)
@
Target
({
ElementType
.
FIELD
})
public
@
interface
Audit
{
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/annotation/DEField.java.ftl
浏览文件 @
f9ed7097
...
@@ -19,6 +19,11 @@ public @interface DEField
...
@@ -19,6 +19,11 @@ public @interface DEField
*
@
return
*
@
return
*/
*/
String
name
()
default
""
;
String
name
()
default
""
;
/**
*
属性名称
*
@
return
*/
String
value
()
default
""
;
/**
/**
*
是否为数据主键
*
是否为数据主键
*
@
return
*
@
return
...
@@ -29,29 +34,40 @@ public @interface DEField
...
@@ -29,29 +34,40 @@ public @interface DEField
*
@
return
*
@
return
*/
*/
String
defaultValue
()
default
""
;
String
defaultValue
()
default
""
;
/**
*
属性类型
*
@
return
*/
String
fieldType
()
default
""
;
/**
/**
*
默认值类型
*
默认值类型
*
@
return
*
@
return
*/
*/
DEFieldDefaultValueType
defaultValueType
()
default
DEFieldDefaultValueType
.
NONE
;
DEFieldDefaultValueType
defaultValueType
()
default
DEFieldDefaultValueType
.
NONE
;
/**
/**
*
预置属性类型
*
预置属性类型
*
@
return
*
@
return
*/
*/
DEPredefinedFieldType
preType
()
default
DEPredefinedFieldType
.
NONE
;
DEPredefinedFieldType
preType
()
default
DEPredefinedFieldType
.
NONE
;
/**
/**
*
逻辑删除有效值
*
逻辑删除有效值
*
@
return
*
@
return
*/
*/
String
logicval
()
default
""
;
String
logicval
()
default
""
;
/**
/**
*
逻辑删除无效值
*
逻辑删除无效值
*
@
return
*
@
return
*/
*/
String
logicdelval
()
default
""
;
String
logicdelval
()
default
""
;
/**
*
代码表
*
@
return
*/
String
dict
()
default
""
;
/**
*
日期格式化
*
@
return
*/
String
format
()
default
""
;
}
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/aspect/AuditAspect.java.ftl
0 → 100644
浏览文件 @
f9ed7097
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
aspect
;
import
lombok
.
SneakyThrows
;
import
${
pub
.
getPKGCodeName
()}.
util
.
annotation
.
Audit
;
import
${
pub
.
getPKGCodeName
()}.
util
.
domain
.
EntityBase
;
import
${
pub
.
getPKGCodeName
()}.
util
.
helper
.
DEFieldCacheMap
;
import
${
pub
.
getPKGCodeName
()}.
util
.
service
.
IBZDataAuditService
;
import
org
.
aspectj
.
lang
.
JoinPoint
;
import
org
.
aspectj
.
lang
.
ProceedingJoinPoint
;
import
org
.
aspectj
.
lang
.
annotation
.
AfterReturning
;
import
org
.
aspectj
.
lang
.
annotation
.
Around
;
import
org
.
aspectj
.
lang
.
annotation
.
Aspect
;
import
org
.
springframework
.
beans
.
factory
.
annotation
.
Autowired
;
import
org
.
springframework
.
expression
.
EvaluationContext
;
import
org
.
springframework
.
expression
.
Expression
;
import
org
.
springframework
.
expression
.
ExpressionParser
;
import
org
.
springframework
.
expression
.
spel
.
standard
.
SpelExpressionParser
;
import
org
.
springframework
.
expression
.
spel
.
support
.
StandardEvaluationContext
;
import
org
.
springframework
.
stereotype
.
Component
;
import
org
.
springframework
.
util
.
ObjectUtils
;
import
org
.
springframework
.
util
.
StringUtils
;
import
org
.
springframework
.
web
.
context
.
request
.
RequestAttributes
;
import
org
.
springframework
.
web
.
context
.
request
.
RequestContextHolder
;
import
org
.
springframework
.
web
.
context
.
request
.
ServletRequestAttributes
;
import
javax
.
servlet
.
http
.
HttpServletRequest
;
import
java
.
util
.
Map
;
/**
*
实体数据审计切面类
*/
@
Aspect
@
Component
public
class
AuditAspect
{
private
final
ExpressionParser
parser
=
new
SpelExpressionParser
();
@
Autowired
IBZDataAuditService
dataAuditService
;
/**
*
实体数据建立切面,在成功创建数据后将新增数据内容记录审计日志内(审计明细【
AuditInfo
】中只记录审计属性变化情况,审计属性在平台属性中配置)
*
@
param
point
*/
@
AfterReturning
(
value
=
"execution(* ${pub.getPKGCodeName()}.core.*.service.*.create(..))"
)
@
SneakyThrows
public
void
create
(
JoinPoint
point
){
HttpServletRequest
request
=
null
;
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
if
(
requestAttributes
!=null){
request
=((
ServletRequestAttributes
)
requestAttributes
).
getRequest
();
}
Object
[]
args
=
point
.
getArgs
();
if
(
ObjectUtils
.
isEmpty
(
args
)
||
args
.
length
==
0
)
return
;
Object
serviceParam
=
args
[
0
];
EntityBase
entity
=(
EntityBase
)
serviceParam
;//
创建数据
Map
<
String
,
Audit
>
auditFields
=
DEFieldCacheMap
.
getAuditFields
(
entity
.
getClass
());
if
(
auditFields
.
size
()==
0
)//
是否有审计属性
return
;
String
idField
=
DEFieldCacheMap
.
getDEKeyField
(
entity
.
getClass
());
Object
idValue
=
""
;
if
(
!StringUtils.isEmpty(idField)){
idValue
=
entity
.
get
(
idField
);
}
//
记录审计日志
dataAuditService
.
createAudit
(
request
,
entity
,
idValue
,
auditFields
);
return
;
}
/**
*
实体数据更新切面,在成功更新数据后将新增数据内容记录审计日志内(审计明细【
AuditInfo
】中只记录审计属性变化情况,审计属性在平台属性中配置)
*
使用环切【
@
Around
】获取到更新前后的实体数据并进行差异比较,并将差异内容记入审计日志内
*
@
param
point
*/
@
Around
(
"execution(* ${pub.getPKGCodeName()}.core.*.service.*.update(..))"
)
public
Object
update
(
ProceedingJoinPoint
point
)
throws
Throwable
{
HttpServletRequest
request
=
null
;
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
if
(
requestAttributes
!=null){
request
=((
ServletRequestAttributes
)
requestAttributes
).
getRequest
();
}
Object
serviceObj
=
point
.
getTarget
();
Object
args
[]=
point
.
getArgs
();
if
(
ObjectUtils
.
isEmpty
(
args
)
||
args
.
length
==
0
)
return
point
.
proceed
();
Object
arg
=
args
[
0
];
EntityBase
entity
=
(
EntityBase
)
arg
;
Map
<
String
,
Audit
>
auditFields
=
DEFieldCacheMap
.
getAuditFields
(
entity
.
getClass
());
//
是否有审计属性
if
(
auditFields
.
size
()==
0
)
return
point
.
proceed
();
String
idField
=
DEFieldCacheMap
.
getDEKeyField
(
entity
.
getClass
());
Object
idValue
=
""
;
if
(
!StringUtils.isEmpty(idField)){
idValue
=
entity
.
get
(
idField
);
}
if
(
ObjectUtils
.
isEmpty
(
idValue
))
return
point
.
proceed
();
//
获取更新前实体
EntityBase
beforeEntity
=
getEntity
(
serviceObj
,
idValue
);
//
执行更新操作
point
.
proceed
();
//
记录审计日志
dataAuditService
.
updateAudit
(
request
,
beforeEntity
,
serviceObj
,
idValue
,
auditFields
);
return
true
;
}
/**
*
实体数据更新切面,在成功更新数据后将新增数据内容记录审计日志内(审计明细【
AuditInfo
】中只记录审计属性变化情况,审计属性在平台属性中配置)
*
使用环切【
@
Around
】获取要删除的完整数据,并将审计属性相关信息记录到审计日志中
*
@
param
point
*
@
return
*
@
throws
Throwable
*/
@
Around
(
"execution(* ${pub.getPKGCodeName()}.core.*.service.*.remove(..))"
)
public
Object
remove
(
ProceedingJoinPoint
point
)
throws
Throwable
{
HttpServletRequest
request
=
null
;
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
if
(
requestAttributes
!=null){
request
=((
ServletRequestAttributes
)
requestAttributes
).
getRequest
();
}
Object
serviceObj
=
point
.
getTarget
();
Object
args
[]=
point
.
getArgs
();
if
(
ObjectUtils
.
isEmpty
(
args
)
||
args
.
length
==
0
)
return
point
.
proceed
();
Object
idValue
=
args
[
0
];
EntityBase
entity
=
getEntity
(
serviceObj
,
idValue
);
Map
<
String
,
Audit
>
auditFields
=
DEFieldCacheMap
.
getAuditFields
(
entity
.
getClass
());
if
(
auditFields
.
size
()==
0
){
return
point
.
proceed
();
}
else
{
//
执行删除操作
point
.
proceed
();
//
记录审计日志
dataAuditService
.
removeAudit
(
request
,
entity
,
idValue
,
auditFields
);
return
true
;
}
}
/**
*
获取实体
*
@
param
service
*
@
param
id
*
@
return
*/
@
SneakyThrows
private
EntityBase
getEntity
(
Object
service
,
Object
id
){
EntityBase
entity
=
null
;
if
(
!ObjectUtils.isEmpty(service)){
EvaluationContext
oldContext
=
new
StandardEvaluationContext
();
oldContext
.
setVariable
(
"service"
,
service
);
oldContext
.
setVariable
(
"id"
,
id
);
Expression
oldExp
=
parser
.
parseExpression
(
"#service.get(#id)"
);
return
oldExp
.
getValue
(
oldContext
,
EntityBase
.
class
);
}
return
entity
;
}
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/aspect/DEFieldDefaultValueAspect.java.ftl
浏览文件 @
f9ed7097
...
@@ -98,9 +98,9 @@ public class DEFieldDefaultValueAspect
...
@@ -98,9 +98,9 @@ public class DEFieldDefaultValueAspect
for
(
Object
item
:(
List
)
obj
)
{
for
(
Object
item
:(
List
)
obj
)
{
if
(
item
instanceof
EntityBase
)
{
if
(
item
instanceof
EntityBase
)
{
if
(
deFields
==
null
)
{
if
(
deFields
==
null
)
{
deFields
=
DEFieldCacheMap
.
getDEFields
(
obj
.
getClass
());
deFields
=
DEFieldCacheMap
.
getDEFields
(
item
.
getClass
());
curUser
=
AuthenticationUser
.
getAuthenticationUser
();
curUser
=
AuthenticationUser
.
getAuthenticationUser
();
keyField
=
DEFieldCacheMap
.
getDEKeyField
(
obj
.
getClass
());
keyField
=
DEFieldCacheMap
.
getDEKeyField
(
item
.
getClass
());
if
(
StringUtils
.
isEmpty
(
keyField
))
if
(
StringUtils
.
isEmpty
(
keyField
))
return
true
;
return
true
;
}
}
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/aspect/VersionCheckAspect.java.ftl
浏览文件 @
f9ed7097
...
@@ -50,14 +50,16 @@ public class VersionCheckAspect
...
@@ -50,14 +50,16 @@ public class VersionCheckAspect
@
Before
(
"execution(* ${pub.getPKGCodeName()}.*.rest.*.updateBy*(..)) && @annotation(versionCheck)"
)
@
Before
(
"execution(* ${pub.getPKGCodeName()}.*.rest.*.updateBy*(..)) && @annotation(versionCheck)"
)
public
void
BeforeUpdateBy
(
JoinPoint
point
,
VersionCheck
versionCheck
){
public
void
BeforeUpdateBy
(
JoinPoint
point
,
VersionCheck
versionCheck
){
Object
[]
args
=
point
.
getArgs
();
Object
[]
args
=
point
.
getArgs
();
Object
id
=
args
[
1
];
if
(
args
.
length
>=
2
){
Object
dto
=
args
[
2
];
Object
id
=
args
[
args
.
length
-
2
];
if
(
ObjectUtils
.
isEmpty
(
id
)
||
ObjectUtils
.
isEmpty
(
dto
))
Object
dto
=
args
[
args
.
length
-
1
];
return
;
if
(
ObjectUtils
.
isEmpty
(
id
)
||
ObjectUtils
.
isEmpty
(
dto
))
String
versionField
=
versionCheck
.
versionfield
();
return
;
if
(
StringUtils
.
isEmpty
(
versionField
))
String
versionField
=
versionCheck
.
versionfield
();
return
;
if
(
StringUtils
.
isEmpty
(
versionField
))
versionCheck
(
versionCheck
,
point
.
getTarget
(),
dto
,
id
);
return
;
versionCheck
(
versionCheck
,
point
.
getTarget
(),
dto
,
id
);
}
}
}
private
void
versionCheck
(
VersionCheck
versionCheck
,
Object
resource
,
Object
dto
,
Object
id
){
private
void
versionCheck
(
VersionCheck
versionCheck
,
Object
resource
,
Object
dto
,
Object
id
){
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/CacheConfig.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
;
public
class
CacheConfig
{
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/layering/LayeringCache.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
layering
;
public
class
LayeringCache
{
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/layering/LayeringCacheManager.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
layering
;
public
class
LayeringCacheManager
{
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/redis/CustomizedRedisCache.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
redis
;
public
class
CustomizedRedisCache
{
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/redis/FastJsonRedisSerializer.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
redis
;
<#--
import
com
.
alibaba
.
fastjson
.
JSON
;-->
<#--
import
com
.
alibaba
.
fastjson
.
serializer
.
SerializerFeature
;-->
<#--
import
org
.
springframework
.
data
.
redis
.
serializer
.
RedisSerializer
;-->
<#--
import
org
.
springframework
.
data
.
redis
.
serializer
.
SerializationException
;-->
<#--
import
java
.
nio
.
charset
.
Charset
;-->
public
class
FastJsonRedisSerializer
{
<#--
public
static
final
Charset
DEFAULT_CHARSET
=
Charset
.
forName
(
"UTF-8"
);-->
<#--
private
Class
<
T
>
clazz
;-->
<#--
public
FastJsonRedisSerializer
(
Class
<
T
>
clazz
)
{-->
<#--
super
();-->
<#--
this
.
clazz
=
clazz
;-->
<#--}-->
<#--@
Override
-->
<#--
public
byte
[]
serialize
(
T
t
)
throws
SerializationException
-->
<#--{-->
<#--
if
(
t
==
null
)
{-->
<#--
return
new
byte
[
0
];-->
<#--}-->
<#--
return
JSON
.
toJSONString
(
t
,
SerializerFeature
.
WriteClassName
).
getBytes
(
DEFAULT_CHARSET
);-->
<#--}-->
<#--@
Override
-->
<#--
public
T
deserialize
(
byte
[]
bytes
)
throws
SerializationException
-->
<#--{-->
<#--
if
(
bytes
==
null
||
bytes
.
length
<=
0
)
{-->
<#--
return
null
;-->
<#--}-->
<#--
String
str
=
new
String
(
bytes
,
DEFAULT_CHARSET
);-->
<#--
return
(
T
)
JSON
.
parseObject
(
str
,
clazz
);-->
<#--}-->
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/redis/KryoRedisSerializer.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
redis
;
public
class
KryoRedisSerializer
{
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/redis/RedisConfig.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
redis
;
public
class
RedisConfig
{
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/cache/redis/StringRedisSerializer.java.ftl
已删除
100644 → 0
浏览文件 @
2e49fbe1
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
cache
.
redis
;
public
class
StringRedisSerializer
{
}
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/client/IBZOUFeignClient.java.ftl
浏览文件 @
f9ed7097
...
@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.PathVariable;
...
@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import
java
.
util
.
Map
;
import
java
.
util
.
Map
;
import
java
.
util
.
Set
;
import
java
.
util
.
Set
;
@
FeignClient
(
value
=
"
ibzou-api
"
,
fallback
=
IBZOUFallback
.
class
)
@
FeignClient
(
value
=
"
${r'${ibiz.ref.service.ou:ibzou-api}'}
"
,
fallback
=
IBZOUFallback
.
class
)
public
interface
IBZOUFeignClient
public
interface
IBZOUFeignClient
{
{
/**
/**
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/client/IBZUAAFeignClient.java.ftl
浏览文件 @
f9ed7097
...
@@ -10,7 +10,7 @@ import org.springframework.cloud.openfeign.FeignClient;
...
@@ -10,7 +10,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
@
FeignClient
(
value
=
"
ibzuaa-api
"
,
fallback
=
IBZUAAFallback
.
class
)
@
FeignClient
(
value
=
"
${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
"
,
fallback
=
IBZUAAFallback
.
class
)
public
interface
IBZUAAFeignClient
public
interface
IBZUAAFeignClient
{
{
/**
/**
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/client/IBZWFFeignClient.java.ftl
浏览文件 @
f9ed7097
...
@@ -7,7 +7,7 @@ import org.springframework.cloud.openfeign.FeignClient;
...
@@ -7,7 +7,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
java
.
util
.*;
import
java
.
util
.*;
@
FeignClient
(
value
=
"
ibzwf-api
"
,
fallback
=
IBZWFFallback
.
class
)
@
FeignClient
(
value
=
"
${r'${ibiz.ref.service.wf:ibzwf-api}'}
"
,
fallback
=
IBZWFFallback
.
class
)
public
interface
IBZWFFeignClient
public
interface
IBZWFFeignClient
{
{
@
RequestMapping
(
method
=
RequestMethod
.
GET
,
value
=
"/{system}-app-{appname}/{entity}/process-definitions/{processDefinitionKey}/usertasks/{taskDefinitionKey}/tasks"
)
@
RequestMapping
(
method
=
RequestMethod
.
GET
,
value
=
"/{system}-app-{appname}/{entity}/process-definitions/{processDefinitionKey}/usertasks/{taskDefinitionKey}/tasks"
)
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/domain/IBZDataAudit.java.ftl
0 → 100644
浏览文件 @
f9ed7097
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
domain
;
import
com
.
baomidou
.
mybatisplus
.
annotation
.
IdType
;
import
com
.
baomidou
.
mybatisplus
.
annotation
.
TableId
;
import
com
.
baomidou
.
mybatisplus
.
annotation
.
TableName
;
import
com
.
fasterxml
.
jackson
.
annotation
.
JsonIgnoreProperties
;
import
lombok
.
Data
;
import
java
.
io
.
Serializable
;
import
java
.
sql
.
Timestamp
;
import
java
.
util
.
Objects
;
/**
*
实体
[
DataAudit
]
数据对象
*/
@
TableName
(
value
=
"IBZDATAAUDIT"
)
@
JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@
Data
public
class
IBZDataAudit
implements
Serializable
{
@
TableId
(
value
=
"dataauditid"
,
type
=
IdType
.
UUID
)//
指定主键生成策略
private
String
dataauditid
;
private
String
dataauditname
;
private
String
oppersonid
;
private
String
oppersonname
;
private
String
audittype
;
private
Timestamp
optime
;
private
String
ipaddress
;
private
String
auditinfo
;
private
Object
auditobjectdata
;
private
String
auditobject
;
private
int
isdatachanged
;
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/domain/LiquibaseProp.java.ftl
浏览文件 @
f9ed7097
<#
ibiztemplate
>
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
</#
ibiztemplate
>
<#
assign
bDynamicDS
=
false
>
<#
list
sys
.
getAllPSDataEntities
()
as
entity
>
<#
if
(
entity
.
getStorageMode
()==
1
||
entity
.
getStorageMode
()==
2
)
&&
entity
.
getDSLink
()
!='DEFAULT'>
<#
assign
bDynamicDS
=
true
>
<#
break
>
</#
if
>
</#
list
>
package
${
pub
.
getPKGCodeName
()}.
util
.
domain
;
package
${
pub
.
getPKGCodeName
()}.
util
.
domain
;
import
lombok
.
Data
;
import
lombok
.
Data
;
import
org
.
springframework
.
boot
.
context
.
properties
.
ConfigurationProperties
;
import
org
.
springframework
.
boot
.
context
.
properties
.
ConfigurationProperties
;
import
org
.
springframework
.
stereotype
.
Component
;
import
org
.
springframework
.
stereotype
.
Component
;
@
Data
@
Component
@
Component
<#
if
bDynamicDS
>
@
ConfigurationProperties
(
prefix
=
"spring.datasource.dynamic.datasource.master"
)
<#
else
>
@
ConfigurationProperties
(
prefix
=
"spring.datasource"
)
@
ConfigurationProperties
(
prefix
=
"spring.datasource"
)
@
Data
</#
if
>
public
class
LiquibaseProp
{
public
class
LiquibaseProp
{
private
String
url
;
private
String
url
;
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/helper/DEFieldCacheMap.java.ftl
浏览文件 @
f9ed7097
...
@@ -4,6 +4,7 @@ TARGET=PSSYSTEM
...
@@ -4,6 +4,7 @@ TARGET=PSSYSTEM
package
${
pub
.
getPKGCodeName
()}.
util
.
helper
;
package
${
pub
.
getPKGCodeName
()}.
util
.
helper
;
import
${
pub
.
getPKGCodeName
()}.
util
.
annotation
.
Audit
;
import
${
pub
.
getPKGCodeName
()}.
util
.
annotation
.
DEField
;
import
${
pub
.
getPKGCodeName
()}.
util
.
annotation
.
DEField
;
import
org
.
springframework
.
util
.
ObjectUtils
;
import
org
.
springframework
.
util
.
ObjectUtils
;
import
org
.
springframework
.
util
.
StringUtils
;
import
org
.
springframework
.
util
.
StringUtils
;
...
@@ -25,6 +26,8 @@ public class DEFieldCacheMap {
...
@@ -25,6 +26,8 @@ public class DEFieldCacheMap {
private
static
Hashtable
<
String
,
Hashtable
<
String
,
DEField
>>
cacheDEField
=
new
Hashtable
<>();
private
static
Hashtable
<
String
,
Hashtable
<
String
,
DEField
>>
cacheDEField
=
new
Hashtable
<>();
private
static
Hashtable
<
String
,
Hashtable
<
String
,
Audit
>>
cacheAuditField
=
new
Hashtable
<>();
private
static
Hashtable
<
String
,
String
>
cacheDEKeyField
=
new
Hashtable
<>();
private
static
Hashtable
<
String
,
String
>
cacheDEKeyField
=
new
Hashtable
<>();
private
static
Object
objLock1
=
new
Object
();
private
static
Object
objLock1
=
new
Object
();
...
@@ -47,6 +50,7 @@ public class DEFieldCacheMap {
...
@@ -47,6 +50,7 @@ public class DEFieldCacheMap {
List
<
Field
>
list
=
new
ArrayList
<
Field
>();
List
<
Field
>
list
=
new
ArrayList
<
Field
>();
Hashtable
<
String
,
String
>
keys
=
new
Hashtable
<
String
,
String
>();
Hashtable
<
String
,
String
>
keys
=
new
Hashtable
<
String
,
String
>();
Hashtable
<
String
,
DEField
>
defields
=
new
Hashtable
<>();
Hashtable
<
String
,
DEField
>
defields
=
new
Hashtable
<>();
Hashtable
<
String
,
Audit
>
auditfields
=
new
Hashtable
<>();
Hashtable
<
String
,
String
>
dekeyfields
=
new
Hashtable
<>();
Hashtable
<
String
,
String
>
dekeyfields
=
new
Hashtable
<>();
Field
[]
fields
=
clazz
.
getDeclaredFields
();
Field
[]
fields
=
clazz
.
getDeclaredFields
();
for
(
Field
field
:
fields
){
for
(
Field
field
:
fields
){
...
@@ -54,16 +58,21 @@ public class DEFieldCacheMap {
...
@@ -54,16 +58,21 @@ public class DEFieldCacheMap {
list
.
add
(
field
);
list
.
add
(
field
);
keys
.
put
(
field
.
getName
().
toLowerCase
(),
field
.
getName
());
keys
.
put
(
field
.
getName
().
toLowerCase
(),
field
.
getName
());
DEField
deField
=
field
.
getAnnotation
(
DEField
.
class
);
DEField
deField
=
field
.
getAnnotation
(
DEField
.
class
);
Audit
auditField
=
field
.
getAnnotation
(
Audit
.
class
);
if
(
!ObjectUtils.isEmpty(deField)) {
if
(
!ObjectUtils.isEmpty(deField)) {
defields
.
put
(
field
.
getName
(),
deField
);
defields
.
put
(
field
.
getName
(),
deField
);
if
(
deField
.
isKeyField
())
if
(
deField
.
isKeyField
())
cacheDEKeyField
.
put
(
className
,
field
.
getName
());
cacheDEKeyField
.
put
(
className
,
field
.
getName
());
}
}
if
(
!ObjectUtils.isEmpty(auditField)) {
auditfields
.
put
(
field
.
getName
(),
auditField
);
}
}
}
cacheMap
.
put
(
className
,
result
);
cacheMap
.
put
(
className
,
result
);
cacheList
.
put
(
className
,
list
);
cacheList
.
put
(
className
,
list
);
cacheKey
.
put
(
className
,
keys
);
cacheKey
.
put
(
className
,
keys
);
cacheDEField
.
put
(
className
,
defields
);
cacheDEField
.
put
(
className
,
defields
);
cacheAuditField
.
put
(
className
,
auditfields
);
return
result
;
return
result
;
}
}
}
}
...
@@ -100,6 +109,23 @@ public class DEFieldCacheMap {
...
@@ -100,6 +109,23 @@ public class DEFieldCacheMap {
}
}
}
}
/**
*
从缓存中查询审计属性集合
*
@
param
*
@
return
*/
public
static
<
T
>
Hashtable
<
String
,
Audit
>
getAuditFields
(
Class
<
T
>
clazz
)
{
String
className
=
clazz
.
getName
();
if
(
className
.
indexOf
(
"_$"
)>
0
)
className
=
className
.
substring
(
0
,
className
.
lastIndexOf
(
"_$"
));
if
(
cacheAuditField
.
containsKey
(
className
))
return
cacheAuditField
.
get
(
className
);
else
{
DEFieldCacheMap
.
getFieldMap
(
className
);
return
cacheAuditField
.
get
(
className
);
}
}
/**
/**
*
从缓存中查询实体对象主键
*
从缓存中查询实体对象主键
*
@
param
*
@
param
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/mapper/IBZDataAuditMapper.java.ftl
0 → 100644
浏览文件 @
f9ed7097
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
mapper
;
import
com
.
baomidou
.
mybatisplus
.
core
.
mapper
.
BaseMapper
;
import
${
pub
.
getPKGCodeName
()}.
util
.
domain
.
IBZDataAudit
;
public
interface
IBZDataAuditMapper
extends
BaseMapper
<
IBZDataAudit
>
{
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/security/AuthenticationUser.java.ftl
浏览文件 @
f9ed7097
...
@@ -68,6 +68,10 @@ public class AuthenticationUser implements UserDetails
...
@@ -68,6 +68,10 @@ public class AuthenticationUser implements UserDetails
@
JsonIgnore
@
JsonIgnore
private
Map
<
String
,
Object
>
userSessionParam
;//
用户自定义
session
值
private
Map
<
String
,
Object
>
userSessionParam
;//
用户自定义
session
值
private
Map
<
String
,
Set
<
String
>>
orgInfo
;//
上下级组织信息
private
Map
<
String
,
Set
<
String
>>
orgInfo
;//
上下级组织信息
private
String
porg
;
private
String
sorg
;
private
String
pdept
;
private
String
sdept
;
@
JsonIgnore
@
JsonIgnore
...
@@ -136,6 +140,10 @@ public class AuthenticationUser implements UserDetails
...
@@ -136,6 +140,10 @@ public class AuthenticationUser implements UserDetails
sessionParams
.
put
(
"srflocale"
,
this
.
getLang
());
sessionParams
.
put
(
"srflocale"
,
this
.
getLang
());
sessionParams
.
put
(
"srftimezone"
,
""
);
sessionParams
.
put
(
"srftimezone"
,
""
);
sessionParams
.
put
(
"srfusercode"
,
this
.
getUsercode
());
sessionParams
.
put
(
"srfusercode"
,
this
.
getUsercode
());
sessionParams
.
put
(
"srfporg"
,
this
.
getPorg
());
sessionParams
.
put
(
"srfsorg"
,
this
.
getSorg
());
sessionParams
.
put
(
"srfpdept"
,
this
.
getPdept
());
sessionParams
.
put
(
"srfsdept"
,
this
.
getSdept
());
}
}
return
this
.
sessionParams
;
return
this
.
sessionParams
;
}
}
...
@@ -146,6 +154,26 @@ public class AuthenticationUser implements UserDetails
...
@@ -146,6 +154,26 @@ public class AuthenticationUser implements UserDetails
return
new
HashMap
<>();
return
new
HashMap
<>();
}
}
public
void
setOrgInfo
(
Map
<
String
,
Set
<
String
>>
orgInfo
)
{
this
.
orgInfo
=
orgInfo
;
if
(
!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("parentorg"))){
porg
=(
String
.
format
(
"'%s'"
,
String
.
join
(
"','"
,
orgInfo
.
get
(
"parentorg"
))));
this
.
getSessionParams
().
put
(
"srfporg"
,
porg
);
}
if
(
!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("suborg")) ){
sorg
=(
String
.
format
(
"'%s'"
,
String
.
join
(
"','"
,
orgInfo
.
get
(
"suborg"
))));
this
.
getSessionParams
().
put
(
"srfsorg"
,
sorg
);
}
if
(
!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("parentdept"))){
pdept
=(
String
.
format
(
"'%s'"
,
String
.
join
(
"','"
,
orgInfo
.
get
(
"parentdept"
))));
this
.
getSessionParams
().
put
(
"srfpdept"
,
pdept
);
}
if
(
!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("subdept"))){
sdept
=(
String
.
format
(
"'%s'"
,
String
.
join
(
"','"
,
orgInfo
.
get
(
"subdept"
))));
this
.
getSessionParams
().
put
(
"srfsdept"
,
sdept
);
}
}
public
void
setPermissionList
(
JSONObject
permissionList
)
{
public
void
setPermissionList
(
JSONObject
permissionList
)
{
this
.
permissionList
=
permissionList
;
this
.
permissionList
=
permissionList
;
if
(
authorities
==
null
&&
permissionList
!=null){
if
(
authorities
==
null
&&
permissionList
!=null){
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/service/IBZDataAuditService.java.ftl
0 → 100644
浏览文件 @
f9ed7097
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
service
;
import
${
pub
.
getPKGCodeName
()}.
util
.
annotation
.
Audit
;
import
${
pub
.
getPKGCodeName
()}.
util
.
domain
.
EntityBase
;
import
org
.
springframework
.
scheduling
.
annotation
.
Async
;
import
javax
.
servlet
.
http
.
HttpServletRequest
;
import
java
.
util
.
Map
;
/**
*
实体
[
DataAudit
]
服务对象接口
*/
public
interface
IBZDataAuditService
{
@
Async
(
"asyncExecutor"
)
void
createAudit
(
HttpServletRequest
request
,
EntityBase
entity
,
Object
idValue
,
Map
<
String
,
Audit
>
auditFields
);
@
Async
(
"asyncExecutor"
)
void
updateAudit
(
HttpServletRequest
request
,
EntityBase
beforeEntity
,
Object
serviceObj
,
Object
idValue
,
Map
<
String
,
Audit
>
auditFields
);
@
Async
(
"asyncExecutor"
)
void
removeAudit
(
HttpServletRequest
request
,
EntityBase
entity
,
Object
idValue
,
Map
<
String
,
Audit
>
auditFields
);
}
\ No newline at end of file
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/service/SimpleAuditService.java.ftl
0 → 100644
浏览文件 @
f9ed7097
此差异已折叠。
点击以展开。
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/web/FeignRequestInterceptor.java.ftl
浏览文件 @
f9ed7097
...
@@ -32,6 +32,8 @@ public class FeignRequestInterceptor implements RequestInterceptor {
...
@@ -32,6 +32,8 @@ public class FeignRequestInterceptor implements RequestInterceptor {
if
(
headerNames
!= null) {
if
(
headerNames
!= null) {
while
(
headerNames
.
hasMoreElements
())
{
while
(
headerNames
.
hasMoreElements
())
{
String
name
=
headerNames
.
nextElement
();
String
name
=
headerNames
.
nextElement
();
if
(
name
.
equalsIgnoreCase
(
"transfer-encoding"
))
continue
;
String
values
=
request
.
getHeader
(
name
);
String
values
=
request
.
getHeader
(
name
);
requestTemplate
.
header
(
name
,
values
);
requestTemplate
.
header
(
name
,
values
);
}
}
...
...
SLN/%PUBPRJ%-util/src/main/resources/application-eureka.yml.ftl
0 → 100644
浏览文件 @
f9ed7097
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
<#assign eurekaUrl = "http://127.0.0.1:8762/eureka/" >
<#comment>前端应用微服务平台配置</#comment>
<#if sys.getAllPSDevSlnMSDepApps()??>
<#list sys.getAllPSDevSlnMSDepApps() as depApp>
<#if depApp.getPSDCMSPlatform()??>
<#assign appPlatform=depApp.getPSDCMSPlatform()>
<#if appPlatform.getUserParam("eureka","http://127.0.0.1:8762/eureka/")??>
<#assign eurekaUrl = appPlatform.getUserParam("eureka","http://127.0.0.1:8762/eureka/")>
</#if>
<#break>
</#if>
</#list>
</#if>
<#comment>服务接口微服务平台配置</#comment>
<#if sys.getAllPSDevSlnMSDepAPIs()??>
<#list sys.getAllPSDevSlnMSDepAPIs() as depSysApi>
<#if depSysApi.getPSDCMSPlatform()?? >
<#assign sysApiPlatform=depSysApi.getPSDCMSPlatform()>
<#if sysApiPlatform.getUserParam("eureka","http://127.0.0.1:8762/eureka/")??>
<#assign eurekaUrl = sysApiPlatform.getUserParam("eureka","http://127.0.0.1:8762/eureka/")>
</#if>
<#break>
</#if>
</#list>
</#if>
#eureka配置中心
spring:
cloud:
nacos:
discovery:
enabled: false
eureka:
client:
enabled: true
serviceUrl:
defaultZone: ${eurekaUrl}
SLN/%PUBPRJ%-util/src/main/resources/application-nacos.yml.ftl
0 → 100644
浏览文件 @
f9ed7097
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
<#assign nacosUrl = "127.0.0.1:8848" >
<#comment>前端应用微服务平台配置</#comment>
<#if sys.getAllPSDevSlnMSDepApps()??>
<#list sys.getAllPSDevSlnMSDepApps() as depApp>
<#if depApp.getPSDCMSPlatform()??>
<#assign appPlatform=depApp.getPSDCMSPlatform()>
<#if appPlatform.getUserParam("nacos","127.0.0.1:8848")??>
<#assign nacosUrl = appPlatform.getUserParam("nacos","127.0.0.1:8848")>
</#if>
<#break>
</#if>
</#list>
</#if>
<#comment>服务接口微服务平台配置</#comment>
<#if sys.getAllPSDevSlnMSDepAPIs()??>
<#list sys.getAllPSDevSlnMSDepAPIs() as depSysApi>
<#if depSysApi.getPSDCMSPlatform()?? >
<#assign sysApiPlatform=depSysApi.getPSDCMSPlatform()>
<#if sysApiPlatform.getUserParam("nacos","127.0.0.1:8848")??>
<#assign nacosUrl = sysApiPlatform.getUserParam("nacos","127.0.0.1:8848")>
</#if>
<#break>
</#if>
</#list>
</#if>
#nacos配置中心
spring:
cloud:
nacos:
discovery:
server-addr: ${nacosUrl}
enabled: true
eureka:
client:
enabled: false
SLN/%PUBPRJ%-util/src/main/resources/application-sys.yml.ftl
浏览文件 @
f9ed7097
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
TARGET=PSSYSTEM
TARGET=PSSYSTEM
</#ibiztemplate>
</#ibiztemplate>
<#comment>通用配置文件</#comment>
<#comment>通用配置文件</#comment>
<#assign nacosUrl = "127.0.0.1:8848" >
<#assign redisHost = "127.0.0.1" >
<#assign redisHost = "127.0.0.1" >
<#assign redisPort = "6379" >
<#assign redisPort = "6379" >
<#assign redisDataBase = "0" >
<#assign redisDataBase = "0" >
...
@@ -10,14 +9,18 @@ TARGET=PSSYSTEM
...
@@ -10,14 +9,18 @@ TARGET=PSSYSTEM
<#assign dbPassWord="root">
<#assign dbPassWord="root">
<#assign dbUrl="jdbc:mysql://127.0.0.1:3306/"+sys.name+"?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true">
<#assign dbUrl="jdbc:mysql://127.0.0.1:3306/"+sys.name+"?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true">
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign bDynamicDS=false>
<#list sys.getAllPSDataEntities() as entity>
<#if (entity.getStorageMode()==1 || entity.getStorageMode()==2) && entity.getDSLink()!='DEFAULT'>
<#assign bDynamicDS=true>
<#break>
</#if>
</#list>
<#comment>前端应用微服务平台配置</#comment>
<#comment>前端应用微服务平台配置</#comment>
<#if sys.getAllPSDevSlnMSDepApps()??>
<#if sys.getAllPSDevSlnMSDepApps()??>
<#list sys.getAllPSDevSlnMSDepApps() as depApp>
<#list sys.getAllPSDevSlnMSDepApps() as depApp>
<#if depApp.getPSDCMSPlatform()??>
<#if depApp.getPSDCMSPlatform()??>
<#assign appPlatform=depApp.getPSDCMSPlatform()>
<#assign appPlatform=depApp.getPSDCMSPlatform()>
<#if appPlatform.getUserParam("nacos","127.0.0.1:8848")??>
<#assign nacosUrl = appPlatform.getUserParam("nacos","127.0.0.1:8848")>
</#if>
<#if appPlatform.getUserParam("spring.redis.host","127.0.0.1")??>
<#if appPlatform.getUserParam("spring.redis.host","127.0.0.1")??>
<#assign redisHost = appPlatform.getUserParam("spring.redis.host","127.0.0.1")>
<#assign redisHost = appPlatform.getUserParam("spring.redis.host","127.0.0.1")>
</#if>
</#if>
...
@@ -36,9 +39,6 @@ TARGET=PSSYSTEM
...
@@ -36,9 +39,6 @@ TARGET=PSSYSTEM
<#list sys.getAllPSDevSlnMSDepAPIs() as depSysApi>
<#list sys.getAllPSDevSlnMSDepAPIs() as depSysApi>
<#if depSysApi.getPSDCMSPlatform()?? >
<#if depSysApi.getPSDCMSPlatform()?? >
<#assign sysApiPlatform=depSysApi.getPSDCMSPlatform()>
<#assign sysApiPlatform=depSysApi.getPSDCMSPlatform()>
<#if sysApiPlatform.getUserParam("nacos","127.0.0.1:8848")??>
<#assign nacosUrl = sysApiPlatform.getUserParam("nacos","127.0.0.1:8848")>
</#if>
<#if sysApiPlatform.getUserParam("spring.redis.host","127.0.0.1")??>
<#if sysApiPlatform.getUserParam("spring.redis.host","127.0.0.1")??>
<#assign redisHost = sysApiPlatform.getUserParam("spring.redis.host","127.0.0.1")>
<#assign redisHost = sysApiPlatform.getUserParam("spring.redis.host","127.0.0.1")>
</#if>
</#if>
...
@@ -122,12 +122,8 @@ TARGET=PSSYSTEM
...
@@ -122,12 +122,8 @@ TARGET=PSSYSTEM
</#if>
</#if>
</#list>
</#list>
</#if>
</#if>
#
nacos配置中心
、数据源
#
缓存
、数据源
spring:
spring:
cloud:
nacos:
discovery:
server-addr: ${nacosUrl}
cache:
cache:
redis:
redis:
time-to-live: 3600
time-to-live: 3600
...
@@ -144,32 +140,11 @@ spring:
...
@@ -144,32 +140,11 @@ spring:
max-wait: 300ms
max-wait: 300ms
max-idle: 16
max-idle: 16
min-idle: 8
min-idle: 8
datasource:
<#if bDynamicDS>
username: ${dbUserName}
<@dynamicDatasourceConfig/>
password: '${dbPassWord}'
<#else>
url: ${dbUrl}
<@singleDatasourceConfig/>
driver-class-name: ${dbDriver}
</#if>
filters: stat,wall,log4j2
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#获取连接等待超时时间
max-wait: 60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis: 60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
isSyncDBSchema: false
defaultSchema: ${dbUserName}
conf: classpath:liquibase/master.xml
#Mybatis-plus配置
#Mybatis-plus配置
mybatis-plus:
mybatis-plus:
...
@@ -234,3 +209,82 @@ server:
...
@@ -234,3 +209,82 @@ server:
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
min-response-size: 10240
min-response-size: 10240
<#macro singleDatasourceConfig>
datasource:
username: ${dbUserName}
password: '${dbPassWord}'
url: ${dbUrl}
driver-class-name: ${dbDriver}
filters: stat,wall,log4j2
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#获取连接等待超时时间
max-wait: 60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis: 60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
isSyncDBSchema: false
defaultSchema: ${dbUserName}
conf: classpath:liquibase/master.xml
</#macro>
<#macro dynamicDatasourceConfig>
datasource:
dynamic:
druid: #以下是全局默认值,可以全局更改
filters: stat,wall,log4j2
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#获取连接等待超时时间
max-wait: 60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis: 60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
datasource:
master:
username: ${dbUserName}
password: '${dbPassWord}'
url: ${dbUrl}
driver-class-name: ${dbDriver}
conf: classpath:liquibase/master.xml
isSyncDBSchema: false
defaultSchema: ${dbUserName}
<#list sys.getAllPSDataEntities() as entity>
<#if (entity.getStorageMode()==1 || entity.getStorageMode()==2) && entity.getDSLink()!='DEFAULT'>
<#assign dbLink=entity.getDSLink()?lower_case>
<#if !P.exists('dynamicDatasource',dbLink)>
${dbLink}:
username: ${dbUserName}
password: '${dbPassWord}'
url: ${dbUrl}
driver-class-name: ${dbDriver}
conf: classpath:liquibase/master.xml
isSyncDBSchema: false
defaultSchema: ${dbUserName}
</#if>
</#if>
</#list>
</#macro>
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录