提交 bb36255d 编写于 作者: zhouweidong's avatar zhouweidong

合并分支 'dev' 到 'master'

Dev合并到master

查看合并请求 !19
# **iBiz4j Spring R7 Template ChangeLog**
## [v2020.08.10]
增强:
- 支持seata分布式事务
- 支持文件上传大小设置
- 支持动态代码表
- 支持表格无分页配置
优化:
- 修复子系统服务接口中台模式update空值问题
- 开启mysql批量更新设置
## [v2020.07.21]
增强:
- 数据查询:支持上下文的in查询
......
......@@ -8,7 +8,7 @@ TARGET=PSSYSAPP
<#assign redisDataBase = "0" >
<#assign dbUserName="root">
<#assign dbPassWord="123456">
<#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&allowMultiQueries=true">
<#assign dbDriver="com.mysql.jdbc.Driver">
<#if sysrun?? && sysrun.getPSDevSlnMSDepApp()??>
<#assign depApp=sysrun.getPSDevSlnMSDepApp()>
......@@ -46,6 +46,7 @@ TARGET=PSSYSAPP
<#assign dbUrl=sysRunDBInst.getConnUrl()>
<#if (sysRunDBInst.getDBType()=='MYSQL5')>
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign dbUrl=dbUrl+"&allowMultiQueries=true">
<#elseif (sysRunDBInst.getDBType()=='DB2')>
<#assign dbDriver="com.ibm.db2.jcc.DB2Driver">
<#elseif (sysRunDBInst.getDBType()=='ORACLE')>
......
......@@ -23,6 +23,8 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import ${pub.getPKGCodeName()}.util.web.SearchContextHandlerMethodArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Slf4j
......@@ -55,6 +57,9 @@ import java.util.List;
})
public class ${app.getPKGCodeName()}Application extends WebMvcConfigurerAdapter{
@Autowired
SearchContextHandlerMethodArgumentResolver resolver;
public static void main(String[] args) {
SpringApplication.run(${app.getPKGCodeName()}Application.class,args);
}
......@@ -62,6 +67,6 @@ public class ${app.getPKGCodeName()}Application extends WebMvcConfigurerAdapter{
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(new ${pub.getPKGCodeName()}.util.web.SearchContextHandlerMethodArgumentResolver());
argumentResolvers.add(resolver);
}
}
......@@ -77,6 +77,18 @@ zuul:
path: /ibzorganizations/**
serviceId: ${r'${ibiz.ref.service.ou:ibzou-api}'}
stripPrefix: false
oudict:
path: /dictionarys/**/Ibzou**
serviceId: ${r'${ibiz.ref.service.ou:ibzou-api}'}
stripPrefix: false
uaadict:
path: /dictionarys/**/SysOperator
serviceId: ${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
dict:
path: /dictionarys/**
serviceId: ${r'${ibiz.ref.service.dict:ibzdict-api}'}
stripPrefix: false
</#if>
</#if>
<#comment>通过设置该参数,避免Zuul转发请求时丢失Authorization请求头信息</#comment>
......
......@@ -24,6 +24,8 @@ import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import java.util.List;
import ${pub.getPKGCodeName()}.util.web.SearchContextHandlerMethodArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
@Slf4j
@EnableDiscoveryClient
......@@ -59,6 +61,9 @@ import java.util.List;
@EnableScheduling
public class DevBootApplication extends WebMvcConfigurerAdapter{
@Autowired
SearchContextHandlerMethodArgumentResolver resolver;
public static void main(String[] args) {
SpringApplication.run(DevBootApplication.class,args);
}
......@@ -66,6 +71,6 @@ public class DevBootApplication extends WebMvcConfigurerAdapter{
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(new ${pub.getPKGCodeName()}.util.web.SearchContextHandlerMethodArgumentResolver());
argumentResolvers.add(resolver);
}
}
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
package ${pub.getPKGCodeName()}.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
@Import({com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration.class})
</#if>
public class DevBootAutoConfiguration {
}
<#ibiztemplate>
TARGET=PSSYSSERVICEAPI
TARGET=PSSYSTEM
</#ibiztemplate>
package ${pub.getPKGCodeName()}.config;
......
......@@ -87,6 +87,18 @@ zuul:
path: /ibzorganizations/**
serviceId: ${r'${ibiz.ref.service.ou:ibzou-api}'}
stripPrefix: false
oudict:
path: /dictionarys/**/Ibzou**
serviceId: ${r'${ibiz.ref.service.ou:ibzou-api}'}
stripPrefix: false
uaadict:
path: /dictionarys/**/SysOperator
serviceId: ${r'${ibiz.ref.service.uaa:ibzuaa-api}'}
stripPrefix: false
dict:
path: /dictionarys/**
serviceId: ${r'${ibiz.ref.service.dict:ibzdict-api}'}
stripPrefix: false
</#if>
</#if>
<#comment>通过设置该参数,避免Zuul转发请求时丢失Authorization请求头信息</#comment>
......
......@@ -101,6 +101,31 @@ TARGET=PSSYSTEM
<artifactId>jobs-spring-boot-starter</artifactId>
</dependency>
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
<!-- 阿里seata分布式事务 -->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
</#if>
</dependencies>
<properties>
......
......@@ -21,6 +21,9 @@ import ${pub.getPKGCodeName()}.core.${item.getPSSystemModule().getCodeName()?low
import lombok.extern.slf4j.Slf4j;
import ${pub.getPKGCodeName()}.core.${item.getPSSystemModule().getCodeName()?lower_case}.domain.${item.codeName};
import org.springframework.stereotype.Service;
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
import io.seata.spring.annotation.GlobalTransactional;
</#if>
import org.springframework.transaction.annotation.Transactional;
import org.springframework.context.annotation.Primary;
import java.util.*;
......@@ -54,7 +57,7 @@ public class ${item.codeName}ExService extends ${item.codeName}ServiceImpl {
* @return
*/
@Override
@Transactional
<@transactionalAnno deaction/>
public ${item.getCodeName()} ${srfmethodname(deaction.getCodeName())}(${item.getCodeName()} et) {
return super.${srfmethodname(deaction.getCodeName())}(et);
}
......@@ -170,4 +173,15 @@ public class ${item.codeName}ExService extends ${item.codeName}ServiceImpl {
</#if>
</#macro>
<#comment>事务注解</#comment>
<#macro transactionalAnno deaction>
<#if deaction.getTransactionMode?? && deaction.getTransactionMode()??>
<#if deaction.getTransactionMode()=='GLOBAL'>
@GlobalTransactional
<#elseif deaction.getTransactionMode()=='DEFAULT'>
@Transactional
</#if>
</#if>
</#macro>
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
<?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.9.xsd">
<changeSet author="Think (generated)" id="1595929877142-2">
<preConditions onFail="MARK_RAN" >
<not>
<tableExists tableName="undo_log" />
</not>
</preConditions>
<createTable remarks="AT transaction mode undo table" tableName="undo_log">
<column name="branch_id" remarks="branch transaction id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="xid" remarks="global transaction id" type="VARCHAR(100)">
<constraints nullable="false"/>
</column>
<column name="context" remarks="undo_log context,such as serialization" type="VARCHAR(128)">
<constraints nullable="false"/>
</column>
<column name="rollback_info" remarks="rollback info" type="LONGBLOB">
<constraints nullable="false"/>
</column>
<column name="log_status" remarks="0:normal status,1:defense status" type="INT">
<constraints nullable="false"/>
</column>
<column name="log_created" remarks="create datetime" type="datetime">
<constraints nullable="false"/>
</column>
<column name="log_modified" remarks="modify datetime" type="datetime">
<constraints nullable="false"/>
</column>
</createTable>
<addUniqueConstraint columnNames="xid, branch_id" constraintName="ux_undo_log" tableName="undo_log"/>
</changeSet>
</databaseChangeLog>
</#if>
......@@ -119,7 +119,23 @@ TARGET=PSDATAENTITY
<#if de.getDefaultPSDEDataSet()??>
<#assign deDefaultDataSet=de.getDefaultPSDEDataSet()>
<#if deDefaultDataSet.getPSDEDataQueries()??>
<#assign enableOrderby=false>
<#if deDefaultDataSet.getMajorSortPSDEField()?? || deDefaultDataSet.getMinorSortPSDEField()??>
<#assign enableOrderby=true>
</#if>
<#assign enableGroup=false>
<#if deDefaultDataSet.isEnableGroup()>
<#list deDefaultDataSet.getPSDEDataSetGroupParams() as groupParam>
<#if groupParam.isEnableGroup()>
<#assign enableGroup=true>
<#break>
</#if>
</#list>
</#if>
<select id="selectBy${srfcaseformat(MajorField.codeName,'l_u2lC')?cap_first}" resultMap="${de.codeName}ResultMap">
<#if enableGroup || enableOrderby>
select <#if enableGroup><@outputGroup deDefaultDataSet/><#else>*</#if> from (
</#if>
select t1.* from (
<#if deDefaultDataSet.getPSDEDataQueries()??>
<#list deDefaultDataSet.getPSDEDataQueries() as defaultDQ>
......@@ -129,8 +145,17 @@ TARGET=PSDATAENTITY
<include refid="${defaultDQ.getCodeName()}" />
</#list>
</#if>
) t1
where ${MajorField.getName()?lower_case}=<#noparse>#{</#noparse>${MajorkeyField.codeName?lower_case}<#noparse>}</#noparse>
) t1
where ${MajorField.getName()?lower_case}=<#noparse>#{</#noparse>${MajorkeyField.codeName?lower_case}<#noparse>}</#noparse>
<#if enableGroup || enableOrderby>
)t1
<#if enableGroup>
group by <#assign groupIndex = 0 ><#list deDefaultDataSet.getPSDEDataSetGroupParams() as groupParam><#if groupParam.isEnableGroup()><#if groupIndex gt 0>,</#if><#if groupParam.getGroupCode()??>${groupParam.getGroupCode()}<#else>${groupParam.getName()}</#if><#assign groupIndex = groupIndex + 1 ></#if></#list>
</#if>
<#if enableOrderby>
order by <#if deDefaultDataSet.getMajorSortPSDEField()??>${deDefaultDataSet.getMajorSortPSDEField().getName()?lower_case}</#if> <#if deDefaultDataSet.getMajorSortDir()??> ${deDefaultDataSet.getMajorSortDir()?lower_case}</#if> <#if deDefaultDataSet.getMinorSortPSDEField()??>, ${deDefaultDataSet.getMinorSortPSDEField().getName()?lower_case} </#if> <#if deDefaultDataSet.getMinorSortDir()??> ${deDefaultDataSet.getMinorSortDir()?lower_case}</#if>
</#if>
</#if>
</select>
</#if>
</#if>
......@@ -145,10 +170,23 @@ TARGET=PSDATAENTITY
<#if resultSet??>
<#list resultSet as singleSet>
<#if singleSet.getPSDEDataQueries()??>
<#assign enableOrderby=false>
<#if singleSet.getMajorSortPSDEField()?? || singleSet.getMinorSortPSDEField()??>
<#assign enableOrderby=true>
</#if>
<#assign enableGroup=false>
<#if singleSet.isEnableGroup()>
<#list singleSet.getPSDEDataSetGroupParams() as groupParam>
<#if groupParam.isEnableGroup()>
<#assign enableGroup=true>
<#break>
</#if>
</#list>
</#if>
<!--数据集合[${singleSet.getCodeName()}]-->
<select id="search${singleSet.getCodeName()}" parameterType="${pub.getPKGCodeName()}.core.${de.getPSSystemModule().getCodeName()?lower_case}.filter.${de.codeName}SearchContext" <#if singleSet.isEnableGroup()>resultType="java.util.HashMap"<#else>resultMap="${de.codeName}ResultMap"</#if>>
<#if singleSet.isEnableGroup()>
select <#list singleSet.getPSDEDataSetGroupParams() as groupParam><#if groupParam_index gt 0>,</#if><#if groupParam.isEnableGroup()><#if groupParam.getGroupCode()??>${groupParam.getGroupCode()}<#else>${groupParam.getName()}</#if><#else>${groupParam.getGroupCode()}</#if> as "${groupParam.getName()?lower_case}"</#list> from (
<#if enableGroup || enableOrderby>
select <#if enableGroup><@outputGroup singleSet/><#else>*</#if> from (
</#if>
select t1.* from (
<#list singleSet.getPSDEDataQueries() as dataQuery>
......@@ -160,9 +198,14 @@ TARGET=PSDATAENTITY
)t1
<where><if test="ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere"><#noparse>${ew.sqlSegment}</#noparse></if></where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere"><#noparse>${ew.sqlSegment}</#noparse></if>
<#if singleSet.isEnableGroup()>
) groupinfo
<#if enableGroup || enableOrderby>
)t1
<#if enableGroup>
group by <#assign groupIndex = 0 ><#list singleSet.getPSDEDataSetGroupParams() as groupParam><#if groupParam.isEnableGroup()><#if groupIndex gt 0>,</#if><#if groupParam.getGroupCode()??>${groupParam.getGroupCode()}<#else>${groupParam.getName()}</#if><#assign groupIndex = groupIndex + 1 ></#if></#list>
</#if>
<#if enableOrderby>
order by <#if singleSet.getMajorSortPSDEField()??>${singleSet.getMajorSortPSDEField().getName()?lower_case}</#if> <#if singleSet.getMajorSortDir()??> ${singleSet.getMajorSortDir()?lower_case}</#if> <#if singleSet.getMinorSortPSDEField()??>, ${singleSet.getMinorSortPSDEField().getName()?lower_case} </#if> <#if singleSet.getMinorSortDir()??> ${singleSet.getMinorSortDir()?lower_case}</#if>
</#if>
</#if>
</select>
......@@ -242,3 +285,8 @@ TARGET=PSDATAENTITY
</#if>
<#return false>
</#function>
<#comment>输出数据集分组</#comment>
<#macro outputGroup singleSet>
<#list singleSet.getPSDEDataSetGroupParams() as groupParam><#if groupParam_index gt 0>,</#if><#if groupParam.isEnableGroup()><#if groupParam.getGroupCode()??>${groupParam.getGroupCode()}<#else>${groupParam.getName()}</#if><#else>${groupParam.getGroupCode()}</#if> as "${groupParam.getName()?lower_case}"</#list>
</#macro>
......@@ -30,8 +30,8 @@ TARGET=PSSYSTEM
<#-- properties, usually record jars version constants -->
<properties>
<!-- Spring Cloud Alibaba(2.1.x.RELEASE) & Spring Cloud(Spring Cloud Greenwich) & Spring Boot(2.1.x.RELEASE) compatibility -->
<spring-cloud-alibaba.version>2.1.1.RELEASE</spring-cloud-alibaba.version>
<!-- Spring Cloud Alibaba(2.2.x.RELEASE) & Spring Cloud(Spring Cloud Greenwich) & Spring Boot(2.2.x.RELEASE) compatibility -->
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
<spring-cloud-openfeign.version>2.2.1.RELEASE</spring-cloud-openfeign.version>
......@@ -91,6 +91,12 @@ TARGET=PSSYSTEM
<!-- eureka微服务注册中心 -->
<eureka-client.version>2.2.1.RELEASE</eureka-client.version>
<!-- 阿里sentinel熔断器 -->
<alibaba-sentinel.version>2.1.1.RELEASE</alibaba-sentinel.version>
<!-- 阿里seata分布式事务 -->
<alibaba-seata.version>1.3.0</alibaba-seata.version>
<#if sys.getAllPSSystemDBConfigs()??>
<#list sys.getAllPSSystemDBConfigs() as dbConfig>
<#if dbConfig.getDBType()=='MYSQL5'>
......@@ -294,6 +300,33 @@ TARGET=PSSYSTEM
<version>${r'${baomidou-jobs.version}'}</version>
</dependency>
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
<!-- 阿里seata分布式事务 -->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>${r'${alibaba-seata.version}'}</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version> ${r'${spring-cloud-alibaba.version}'}</version>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
</#if>
</dependencies>
</dependencyManagement>
......@@ -321,6 +354,7 @@ TARGET=PSSYSTEM
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${r'${alibaba-sentinel.version}'}</version>
</dependency>
<!-- Lombok -->
......
......@@ -8,7 +8,7 @@ TARGET=PSSYSSERVICEAPI
<#assign redisDataBase = "0" >
<#assign dbUserName="root">
<#assign dbPassWord="123456">
<#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&allowMultiQueries=true">
<#assign dbDriver="com.mysql.jdbc.Driver">
<#if sysrun?? && sysrun.getPSDevSlnMSDepAPI()?? >
<#assign depSysApi=sysrun.getPSDevSlnMSDepAPI()>
......@@ -46,6 +46,7 @@ TARGET=PSSYSSERVICEAPI
<#assign dbUrl=sysRunDBInst.getConnUrl()>
<#if (sysRunDBInst.getDBType()=='MYSQL5')>
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign dbUrl=dbUrl+"&allowMultiQueries=true">
<#elseif (sysRunDBInst.getDBType()=='DB2')>
<#assign dbDriver="com.ibm.db2.jcc.DB2Driver">
<#elseif (sysRunDBInst.getDBType()=='ORACLE')>
......
......@@ -25,6 +25,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import ${pub.getPKGCodeName()}.util.web.SearchContextHandlerMethodArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Slf4j
......@@ -64,6 +66,9 @@ import java.util.List;
@EnableScheduling
public class ${sys.codeName}${item.codeName}Application extends WebMvcConfigurerAdapter{
@Autowired
SearchContextHandlerMethodArgumentResolver resolver;
public static void main(String[] args) {
SpringApplication.run(${sys.codeName}${item.codeName}Application.class, args);
}
......@@ -71,6 +76,6 @@ public class ${sys.codeName}${item.codeName}Application extends WebMvcConfigurer
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(new ${pub.getPKGCodeName()}.util.web.SearchContextHandlerMethodArgumentResolver());
argumentResolvers.add(resolver);
}
}
......@@ -16,7 +16,13 @@ import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
import org.springframework.context.annotation.Import;
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
@Import({
com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration.class,
})
</#if>
@Configuration
@ConditionalOnClass(${item.codeName}RestConfiguration.class)
@ConditionalOnWebApplication
......
......@@ -5,6 +5,11 @@ TARGET=PSDESERVICEAPI
<#if de.isSubSysDE()==false>
<#assign pubPkgCodeName = pub.getPKGCodeName()>
<#assign itemSysApiCodeNameLC = item.getPSSysServiceAPI().getCodeName()?lower_case>
<#assign dtoBase="DTOBase">
<#comment>中台模式通过DTOClient设置dirtyflag</#comment>
<#if ((de.getPSSubSysServiceAPI().getServiceType())!'')=='MIDDLEPLATFORM'>
<#assign dtoBase="DTOClient">
</#if>
package ${pubPkgCodeName}.${itemSysApiCodeNameLC}.dto;
import java.sql.Timestamp;
......@@ -20,13 +25,14 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.fastjson.annotation.JSONField;
import ${pub.getPKGCodeName()}.util.domain.DTOBase;
import ${pub.getPKGCodeName()}.util.domain.DTOClient;
import lombok.Data;
/**
* 服务DTO对象[${item.getCodeName()}DTO]
*/
@Data
public class ${item.getCodeName()}DTO extends DTOBase implements Serializable {
public class ${item.getCodeName()}DTO extends ${dtoBase} implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -32,6 +32,32 @@ TARGET=PSSYSTEM
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
<!-- 阿里seata分布式事务 -->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
</#if>
</dependencies>
</project>
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
package ${pub.getPKGCodeName()}.util.domain;
public class DTOClient extends DTOBase {
@Override
public void modify(String field,Object val) {
if(val==null){
this.getFocusNull().add(field.toLowerCase());
getExtensionparams().put("dirtyflagenable",true);
getExtensionparams().put(field.toLowerCase()+"dirtyflag",true);
}
else{
this.getFocusNull().remove(field.toLowerCase());
getExtensionparams().remove(field.toLowerCase()+"dirtyflag");
}
}
}
......@@ -5,6 +5,8 @@ package ${pub.getPKGCodeName()}.util.security;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Date;
public interface AuthTokenUtil {
String generateToken(UserDetails userDetails);
......@@ -12,6 +14,8 @@ public interface AuthTokenUtil {
Boolean validateToken(String token, UserDetails userDetails);
String getUsernameFromToken(String token);
Date getExpirationDateFromToken(String token) ;
}
......@@ -13,10 +13,16 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import java.util.LinkedHashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class SearchContextHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Value("${r'${ibiz.pageLimit:1000}'}")
private int pageLimit=1000;
private static ObjectMapper objectMapper=new ObjectMapper();
@Override
......@@ -32,6 +38,9 @@ public class SearchContextHandlerMethodArgumentResolver implements HandlerMethod
for (String key : params.keySet()) {
set.put(key,params.get(key)[0]);
}
if((!set.containsKey("size")) ){
set.put("size",pageLimit);
}
String json=objectMapper.writeValueAsString(set);
return objectMapper.readValue(json,parameter.getParameterType());
}
......
......@@ -7,7 +7,7 @@ TARGET=PSSYSTEM
<#assign redisDataBase = "0" >
<#assign dbUserName="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&allowMultiQueries=true">
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign bDynamicDS=false>
<#assign bmogo=false>
......@@ -26,22 +26,52 @@ TARGET=PSSYSTEM
<#break>
</#if>
</#list>
<#assign TcServerCluster="default">
<#assign seataServerName="seata-server">
<#assign nacosAddress="localhost">
<#assign nacosGroup="DEFAULT_GROUP">
<#assign nacosNamespace="">
<#assign nacosUserName="">
<#assign nacosPassWord="">
<#comment>前端应用微服务平台配置</#comment>
<#if sys.getAllPSDevSlnMSDepApps()??>
<#list sys.getAllPSDevSlnMSDepApps() as depApp>
<#if depApp.getPSDCMSPlatform()??>
<#assign appPlatform=depApp.getPSDCMSPlatform()>
<#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 appPlatform.getUserParam("spring.redis.port","6379")??>
<#assign redisPort = appPlatform.getUserParam("spring.redis.port","6379")>
<#assign redisPort = appPlatform.getUserParam("spring.redis.port","6379")>
</#if>
<#if appPlatform.getUserParam("spring.redis.database","0")??>
<#assign redisDataBase = appPlatform.getUserParam("spring.redis.database","0")>
<#assign redisDataBase = appPlatform.getUserParam("spring.redis.database","0")>
</#if>
<#if appPlatform.getUserParam("spring.data.mongodb.uri",mongodbUri)??>
<#assign mongodbUri = appPlatform.getUserParam("spring.data.mongodb.uri",mongodbUri)>
<#assign mongodbUri = appPlatform.getUserParam("spring.data.mongodb.uri",mongodbUri)>
</#if>
<#if appPlatform.getUserParam("seata.service.vgroup-mapping."+sys.getName()+"group",TcServerCluster)??>
<#assign TcServerCluster = appPlatform.getUserParam("seata.service.vgroup-mapping."+sys.getName()+"group",TcServerCluster)>
</#if>
<#if appPlatform.getUserParam("seata.registry.nacos.application",seataServerName)??>
<#assign seataServerName = appPlatform.getUserParam("seata.registry.nacos.application",seataServerName)>
</#if>
<#if appPlatform.getUserParam("seata.registry.nacos.server-addr",nacosAddress)??>
<#assign nacosAddress = appPlatform.getUserParam("seata.registry.nacos.server-addr",nacosAddress)>
</#if>
<#if appPlatform.getUserParam("seata.registry.nacos.group",nacosGroup)??>
<#assign nacosGroup = appPlatform.getUserParam("seata.registry.nacos.group",nacosGroup)>
</#if>
<#if appPlatform.getUserParam("seata.registry.nacos.namespace",nacosNamespace)??>
<#assign nacosNamespace = appPlatform.getUserParam("seata.registry.nacos.namespace",nacosNamespace)>
</#if>
<#if appPlatform.getUserParam("seata.registry.nacos.userName",nacosUserName)??>
<#assign nacosUserName = appPlatform.getUserParam("seata.registry.nacos.userName",nacosUserName)>
</#if>
<#if appPlatform.getUserParam("seata.registry.nacos.password",nacosPassWord)??>
<#assign nacosPassWord = appPlatform.getUserParam("seata.registry.nacos.password",nacosPassWord)>
</#if>
<#break>
</#if>
......@@ -53,17 +83,38 @@ TARGET=PSSYSTEM
<#if depSysApi.getPSDCMSPlatform()?? >
<#assign sysApiPlatform=depSysApi.getPSDCMSPlatform()>
<#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 sysApiPlatform.getUserParam("spring.redis.port","6379")??>
<#assign redisPort = sysApiPlatform.getUserParam("spring.redis.port","6379")>
<#assign redisPort = sysApiPlatform.getUserParam("spring.redis.port","6379")>
</#if>
<#if sysApiPlatform.getUserParam("spring.redis.database","0")??>
<#assign redisDataBase = sysApiPlatform.getUserParam("spring.redis.database","0")>
<#assign redisDataBase = sysApiPlatform.getUserParam("spring.redis.database","0")>
</#if>
<#if sysApiPlatform.getUserParam("spring.data.mongodb.uri",mongodbUri)??>
<#assign mongodbUri = sysApiPlatform.getUserParam("spring.data.mongodb.uri",mongodbUri)>
</#if>
<#if sysApiPlatform.getUserParam("seata.service.vgroup-mapping."+sys.getName()+"group",TcServerCluster)??>
<#assign TcServerCluster = sysApiPlatform.getUserParam("seata.service.vgroup-mapping."+sys.getName()+"group",TcServerCluster)>
</#if>
<#if sysApiPlatform.getUserParam("seata.registry.nacos.application",seataServerName)??>
<#assign seataServerName = sysApiPlatform.getUserParam("seata.registry.nacos.application",seataServerName)>
</#if>
<#if sysApiPlatform.getUserParam("seata.registry.nacos.server-addr",nacosAddress)??>
<#assign nacosAddress = sysApiPlatform.getUserParam("seata.registry.nacos.server-addr",nacosAddress)>
</#if>
<#if sysApiPlatform.getUserParam("seata.registry.nacos.group",nacosGroup)??>
<#assign nacosGroup = sysApiPlatform.getUserParam("seata.registry.nacos.group",nacosGroup)>
</#if>
<#if sysApiPlatform.getUserParam("seata.registry.nacos.namespace",nacosNamespace)??>
<#assign nacosNamespace = sysApiPlatform.getUserParam("seata.registry.nacos.namespace",nacosNamespace)>
</#if>
<#if sysApiPlatform.getUserParam("seata.registry.nacos.userName",nacosUserName)??>
<#assign nacosUserName = sysApiPlatform.getUserParam("seata.registry.nacos.userName",nacosUserName)>
</#if>
<#if sysApiPlatform.getUserParam("seata.registry.nacos.password",nacosPassWord)??>
<#assign nacosPassWord = sysApiPlatform.getUserParam("seata.registry.nacos.password",nacosPassWord)>
</#if>
<#break>
</#if>
</#list>
......@@ -76,6 +127,7 @@ TARGET=PSSYSTEM
<#assign dbUrl=sysRunDBInst.getConnUrl()>
<#if (sysRunDBInst.getDBType()=='MYSQL5')>
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign dbUrl=dbUrl+"&allowMultiQueries=true">
<#elseif (sysRunDBInst.getDBType()=='DB2')>
<#assign dbDriver="com.ibm.db2.jcc.DB2Driver">
<#elseif (sysRunDBInst.getDBType()=='ORACLE')>
......@@ -98,6 +150,7 @@ TARGET=PSSYSTEM
<#assign dbUrl=appDBInst.getConnUrl()>
<#if (appDBInst.getDBType()=='MYSQL5')>
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign dbUrl=dbUrl+"&allowMultiQueries=true">
<#elseif (appDBInst.getDBType()=='DB2')>
<#assign dbDriver="com.ibm.db2.jcc.DB2Driver">
<#elseif (appDBInst.getDBType()=='ORACLE')>
......@@ -123,6 +176,7 @@ TARGET=PSSYSTEM
<#assign dbUrl=sysApiDBInst.getConnUrl()>
<#if (sysApiDBInst.getDBType()=='MYSQL5')>
<#assign dbDriver="com.mysql.jdbc.Driver">
<#assign dbUrl=dbUrl+"&allowMultiQueries=true">
<#elseif (sysApiDBInst.getDBType()=='DB2')>
<#assign dbDriver="com.ibm.db2.jcc.DB2Driver">
<#elseif (sysApiDBInst.getDBType()=='ORACLE')>
......@@ -156,6 +210,10 @@ spring:
max-wait: 300ms
max-idle: 16
min-idle: 8
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
<#if bmogo>
data:
mongodb:
......@@ -230,6 +288,25 @@ server:
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
min-response-size: 10240
<#if pub.isEnableGlobalTransaction?? && pub.isEnableGlobalTransaction()?? && pub.isEnableGlobalTransaction()==true>
seata:
enabled: true #是否开启全局事务
application-id: ${sys.getName()} #服务标识
tx-service-group: ${sys.getName()}group #事务组
service:
vgroup-mapping:
${sys.getName()}group: ${TcServerCluster} #指定事务组对应的Tc Server集群
registry:
type: nacos #注册中心
nacos:
application: ${seataServerName} #Tc Server服务标识
server-addr: ${nacosAddress} #注册中心地址
group: ${nacosGroup} #服务组
namespace: ${nacosNamespace} #服务命名空间
userName: "${nacosUserName}" #用户名
password: "${nacosPassWord}" #密码
</#if>
<#macro singleDatasourceConfig>
datasource:
username: ${dbUserName}
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册