Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-cr20g
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
dsk-cr20g
Commits
0f3741cb
Commit
0f3741cb
authored
May 17, 2023
by
lcl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mybatis-plus替换mybatis
parent
25c3807f
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
532 additions
and
224 deletions
+532
-224
application-dev.yml
dsk-admin/src/main/resources/application-dev.yml
+1
-92
application.yml
dsk-admin/src/main/resources/application.yml
+93
-0
InsertAll.java
...va/com/dsk/common/core/mybatisplus/methods/InsertAll.java
+101
-0
MyBatisConfig.java
...src/main/java/com/dsk/framework/config/MyBatisConfig.java
+132
-132
MybatisPlusConfig.java
...main/java/com/dsk/framework/config/MybatisPlusConfig.java
+120
-0
CreateAndUpdateMetaObjectHandler.java
...amework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
+80
-0
CustomerDecisionChain.java
...ain/java/com/dsk/system/domain/CustomerDecisionChain.java
+4
-0
CustomerDecisionChainServiceImpl.java
...system/service/impl/CustomerDecisionChainServiceImpl.java
+1
-0
No files found.
dsk-admin/src/main/resources/application-dev.yml
View file @
0f3741cb
...
...
@@ -167,98 +167,7 @@ token:
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus
:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage
:
com.dsk.**.mapper
# 对应的 XML 文件位置
mapperLocations
:
classpath*:mapper/**/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage
:
com.dsk.**.domain
# 针对 typeAliasesPackage,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象
#typeAliasesSuperType: Class<?>
# 如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler
#typeHandlersPackage: null
# 如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性
#typeEnumsPackage: null
# 启动时是否检查 MyBatis XML 文件的存在,默认不检查
checkConfigLocation
:
false
# 通过该属性可指定 MyBatis 的执行器,MyBatis 的执行器总共有三种:
# SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)
# REUSE:该执行器类型会复用预处理语句(PreparedStatement)
# BATCH:该执行器类型会批量执行所有的更新语句
executorType
:
SIMPLE
configuration
:
# 自动驼峰命名规则(camel case)映射
# 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名
mapUnderscoreToCamelCase
:
true
# 默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理
# org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称
# org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引
# com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.
defaultEnumTypeHandler
:
org.apache.ibatis.type.EnumTypeHandler
# 当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
aggressiveLazyLoading
:
true
# MyBatis 自动映射策略
# NONE:不启用自动映射
# PARTIAL:只对非嵌套的 resultMap 进行自动映射
# FULL:对所有的 resultMap 都进行自动映射
autoMappingBehavior
:
PARTIAL
# MyBatis 自动映射时未知列或未知属性处理策
# NONE:不做任何处理 (默认值)
# WARNING:以日志的形式打印相关警告信息
# FAILING:当作映射失败处理,并抛出异常和详细信息
autoMappingUnknownColumnBehavior
:
NONE
# Mybatis一级缓存,默认为 SESSION
# SESSION session级别缓存,同一个session相同查询语句不会再次查询数据库
# STATEMENT 关闭一级缓存
localCacheScope
:
SESSION
# 开启Mybatis二级缓存,默认为 true
cacheEnabled
:
false
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
# 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
logImpl
:
org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config
:
# 是否打印 Logo banner
banner
:
true
# 是否初始化 SqlRunner
enableSqlRunner
:
false
dbConfig
:
# 主键类型
# AUTO 数据库ID自增
# NONE 空
# INPUT 用户输入ID
# ASSIGN_ID 全局唯一ID
# ASSIGN_UUID 全局唯一ID UUID
idType
:
AUTO
# 表名前缀
tablePrefix
:
null
# 字段 format,例: %s,(对主键无效)
columnFormat
:
null
# 表名是否使用驼峰转下划线命名,只对表名生效
tableUnderline
:
true
# 大写命名,对表名和字段名均生效
capitalMode
:
false
# 全局的entity的逻辑删除字段属性名
logicDeleteField
:
null
# 逻辑已删除值
logicDeleteValue
:
2
# 逻辑未删除值
logicNotDeleteValue
:
0
# 字段验证策略之 insert,在 insert 的时候的字段验证策略
# IGNORED 忽略判断
# NOT_NULL 非NULL判断
# NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
# DEFAULT 默认的,一般只用于注解里
# NEVER 不加入 SQL
insertStrategy
:
NOT_NULL
# 字段验证策略之 update,在 update 的时候的字段验证策略
updateStrategy
:
NOT_NULL
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
where-strategy
:
NOT_NULL
# PageHelper分页插件
pagehelper
:
...
...
dsk-admin/src/main/resources/application.yml
View file @
0f3741cb
spring
:
profiles
:
active
:
dev
# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus
:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage
:
com.dsk.**.mapper
# 对应的 XML 文件位置
mapperLocations
:
classpath*:mapper/**/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage
:
com.dsk.**.domain
# 针对 typeAliasesPackage,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象
#typeAliasesSuperType: Class<?>
# 如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler
#typeHandlersPackage: null
# 如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性
#typeEnumsPackage: null
# 启动时是否检查 MyBatis XML 文件的存在,默认不检查
checkConfigLocation
:
false
# 通过该属性可指定 MyBatis 的执行器,MyBatis 的执行器总共有三种:
# SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)
# REUSE:该执行器类型会复用预处理语句(PreparedStatement)
# BATCH:该执行器类型会批量执行所有的更新语句
executorType
:
SIMPLE
configuration
:
# 自动驼峰命名规则(camel case)映射
# 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名
mapUnderscoreToCamelCase
:
true
# 默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理
# org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称
# org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引
# com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.
defaultEnumTypeHandler
:
org.apache.ibatis.type.EnumTypeHandler
# 当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
aggressiveLazyLoading
:
true
# MyBatis 自动映射策略
# NONE:不启用自动映射
# PARTIAL:只对非嵌套的 resultMap 进行自动映射
# FULL:对所有的 resultMap 都进行自动映射
autoMappingBehavior
:
PARTIAL
# MyBatis 自动映射时未知列或未知属性处理策
# NONE:不做任何处理 (默认值)
# WARNING:以日志的形式打印相关警告信息
# FAILING:当作映射失败处理,并抛出异常和详细信息
autoMappingUnknownColumnBehavior
:
NONE
# Mybatis一级缓存,默认为 SESSION
# SESSION session级别缓存,同一个session相同查询语句不会再次查询数据库
# STATEMENT 关闭一级缓存
localCacheScope
:
SESSION
# 开启Mybatis二级缓存,默认为 true
cacheEnabled
:
false
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
# 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
logImpl
:
org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config
:
# 是否打印 Logo banner
banner
:
true
# 是否初始化 SqlRunner
enableSqlRunner
:
false
dbConfig
:
# 主键类型
# AUTO 数据库ID自增
# NONE 空
# INPUT 用户输入ID
# ASSIGN_ID 全局唯一ID
# ASSIGN_UUID 全局唯一ID UUID
idType
:
AUTO
# 表名前缀
tablePrefix
:
null
# 字段 format,例: %s,(对主键无效)
columnFormat
:
null
# 表名是否使用驼峰转下划线命名,只对表名生效
tableUnderline
:
true
# 大写命名,对表名和字段名均生效
capitalMode
:
false
# 全局的entity的逻辑删除字段属性名
logicDeleteField
:
null
# 逻辑已删除值
logicDeleteValue
:
2
# 逻辑未删除值
logicNotDeleteValue
:
0
# 字段验证策略之 insert,在 insert 的时候的字段验证策略
# IGNORED 忽略判断
# NOT_NULL 非NULL判断
# NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
# DEFAULT 默认的,一般只用于注解里
# NEVER 不加入 SQL
insertStrategy
:
NOT_NULL
# 字段验证策略之 update,在 update 的时候的字段验证策略
updateStrategy
:
NOT_NULL
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
where-strategy
:
NOT_NULL
dsk-common/src/main/java/com/dsk/common/core/mybatisplus/methods/InsertAll.java
0 → 100644
View file @
0f3741cb
package
com
.
dsk
.
common
.
core
.
mybatisplus
.
methods
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.core.injector.AbstractMethod
;
import
com.baomidou.mybatisplus.core.metadata.TableFieldInfo
;
import
com.baomidou.mybatisplus.core.metadata.TableInfo
;
import
com.baomidou.mybatisplus.core.metadata.TableInfoHelper
;
import
com.dsk.common.utils.StringUtils
;
import
org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator
;
import
org.apache.ibatis.executor.keygen.KeyGenerator
;
import
org.apache.ibatis.executor.keygen.NoKeyGenerator
;
import
org.apache.ibatis.mapping.MappedStatement
;
import
org.apache.ibatis.mapping.SqlSource
;
import
java.util.List
;
/**
* 单sql批量插入( 全量填充 )
*
* @author Lion Li
*/
public
class
InsertAll
extends
AbstractMethod
{
private
final
static
String
[]
FILL_PROPERTY
=
{
"createTime"
,
"createBy"
,
"updateTime"
,
"updateBy"
};
@Override
public
MappedStatement
injectMappedStatement
(
Class
<?>
mapperClass
,
Class
<?>
modelClass
,
TableInfo
tableInfo
)
{
final
String
sql
=
"<script>insert into %s %s values %s</script>"
;
final
String
fieldSql
=
prepareFieldSql
(
tableInfo
);
final
String
valueSql
=
prepareValuesSqlForMysqlBatch
(
tableInfo
);
KeyGenerator
keyGenerator
=
new
NoKeyGenerator
();
String
sqlMethod
=
"insertAll"
;
String
keyProperty
=
null
;
String
keyColumn
=
null
;
// 表包含主键处理逻辑,如果不包含主键当普通字段处理
if
(
StringUtils
.
isNotBlank
(
tableInfo
.
getKeyProperty
()))
{
if
(
tableInfo
.
getIdType
()
==
IdType
.
AUTO
)
{
/** 自增主键 */
keyGenerator
=
new
Jdbc3KeyGenerator
();
keyProperty
=
tableInfo
.
getKeyProperty
();
keyColumn
=
tableInfo
.
getKeyColumn
();
}
else
{
if
(
null
!=
tableInfo
.
getKeySequence
())
{
keyGenerator
=
TableInfoHelper
.
genKeyGenerator
(
sqlMethod
,
tableInfo
,
builderAssistant
);
keyProperty
=
tableInfo
.
getKeyProperty
();
keyColumn
=
tableInfo
.
getKeyColumn
();
}
}
}
final
String
sqlResult
=
String
.
format
(
sql
,
tableInfo
.
getTableName
(),
fieldSql
,
valueSql
);
SqlSource
sqlSource
=
languageDriver
.
createSqlSource
(
configuration
,
sqlResult
,
modelClass
);
return
this
.
addInsertMappedStatement
(
mapperClass
,
modelClass
,
sqlMethod
,
sqlSource
,
keyGenerator
,
keyProperty
,
keyColumn
);
}
private
String
prepareFieldSql
(
TableInfo
tableInfo
)
{
StringBuilder
fieldSql
=
new
StringBuilder
();
if
(
StringUtils
.
isNotBlank
(
tableInfo
.
getKeyColumn
()))
{
fieldSql
.
append
(
tableInfo
.
getKeyColumn
()).
append
(
","
);
}
tableInfo
.
getFieldList
().
forEach
(
x
->
fieldSql
.
append
(
x
.
getColumn
()).
append
(
","
));
fieldSql
.
delete
(
fieldSql
.
length
()
-
1
,
fieldSql
.
length
());
fieldSql
.
insert
(
0
,
"("
);
fieldSql
.
append
(
")"
);
return
fieldSql
.
toString
();
}
private
String
prepareValuesSqlForMysqlBatch
(
TableInfo
tableInfo
)
{
final
StringBuilder
valueSql
=
new
StringBuilder
();
valueSql
.
append
(
"<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" separator=\"),(\" close=\")\">"
);
if
(
StringUtils
.
isNotBlank
(
tableInfo
.
getKeyColumn
()))
{
valueSql
.
append
(
"\n#{item."
).
append
(
tableInfo
.
getKeyProperty
()).
append
(
"},\n"
);
}
List
<
TableFieldInfo
>
fieldList
=
tableInfo
.
getFieldList
();
int
last
=
fieldList
.
size
()
-
1
;
for
(
int
i
=
0
;
i
<
fieldList
.
size
();
i
++)
{
String
property
=
fieldList
.
get
(
i
).
getProperty
();
if
(!
StringUtils
.
equalsAny
(
property
,
FILL_PROPERTY
))
{
valueSql
.
append
(
"<if test=\"item."
).
append
(
property
).
append
(
" != null\">"
);
valueSql
.
append
(
"#{item."
).
append
(
property
).
append
(
"}"
);
if
(
i
!=
last
)
{
valueSql
.
append
(
","
);
}
valueSql
.
append
(
"</if>"
);
valueSql
.
append
(
"<if test=\"item."
).
append
(
property
).
append
(
" == null\">"
);
valueSql
.
append
(
"DEFAULT"
);
if
(
i
!=
last
)
{
valueSql
.
append
(
","
);
}
valueSql
.
append
(
"</if>"
);
}
else
{
valueSql
.
append
(
"#{item."
).
append
(
property
).
append
(
"}"
);
if
(
i
!=
last
)
{
valueSql
.
append
(
","
);
}
}
}
valueSql
.
append
(
"</foreach>"
);
return
valueSql
.
toString
();
}
}
dsk-framework/src/main/java/com/dsk/framework/config/MyBatisConfig.java
View file @
0f3741cb
This diff is collapsed.
Click to expand it.
dsk-framework/src/main/java/com/dsk/framework/config/MybatisPlusConfig.java
0 → 100644
View file @
0f3741cb
package
com
.
dsk
.
framework
.
config
;
import
com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer
;
import
com.baomidou.mybatisplus.core.MybatisConfiguration
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.baomidou.mybatisplus.core.injector.AbstractMethod
;
import
com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
;
import
com.baomidou.mybatisplus.core.injector.ISqlInjector
;
import
com.baomidou.mybatisplus.core.metadata.TableInfo
;
import
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
;
import
com.dsk.common.core.mybatisplus.methods.InsertAll
;
import
com.dsk.framework.mybatisplus.CreateAndUpdateMetaObjectHandler
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
java.util.List
;
/**
* mybatis-plus配置类
*
* @author Lion Li
*/
@EnableTransactionManagement
(
proxyTargetClass
=
true
)
@Configuration
// 指定要扫描的Mapper类的包的路径
@MapperScan
(
"${mybatis-plus.mapperPackage}"
)
public
class
MybatisPlusConfig
{
@Bean
public
MybatisPlusInterceptor
mybatisPlusInterceptor
()
{
MybatisPlusInterceptor
interceptor
=
new
MybatisPlusInterceptor
();
// 分页插件
interceptor
.
addInnerInterceptor
(
paginationInnerInterceptor
());
// 乐观锁插件
interceptor
.
addInnerInterceptor
(
optimisticLockerInnerInterceptor
());
// 阻断插件
// interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
return
interceptor
;
}
/**
* 分页插件,自动识别数据库类型
* https://baomidou.com/guide/interceptor-pagination.html
*/
public
PaginationInnerInterceptor
paginationInnerInterceptor
()
{
PaginationInnerInterceptor
paginationInnerInterceptor
=
new
PaginationInnerInterceptor
();
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor
.
setMaxLimit
(
500L
);
// 分页合理化
paginationInnerInterceptor
.
setOverflow
(
true
);
// paginationInnerInterceptor.setOptimizeJoin(new JsqlParserCountOptimize(true));
return
paginationInnerInterceptor
;
}
/**
* 乐观锁插件
* https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public
OptimisticLockerInnerInterceptor
optimisticLockerInnerInterceptor
()
{
return
new
OptimisticLockerInnerInterceptor
();
}
/**
* 如果是对全表的删除或更新操作,就会终止该操作
* https://baomidou.com/guide/interceptor-block-attack.html
*/
// public BlockAttackInnerInterceptor blockAttackInnerInterceptor() {
// return new BlockAttackInnerInterceptor();
// }
/**
* sql性能规范插件(垃圾SQL拦截)
* 如有需要可以启用
*/
// public IllegalSQLInnerInterceptor illegalSQLInnerInterceptor() {
// return new IllegalSQLInnerInterceptor();
// }
/**
* 自定义主键策略
* https://baomidou.com/guide/id-generator.html
*/
// @Bean
// public IdentifierGenerator idGenerator() {
// return new CustomIdGenerator();
// }
/**
* 元对象字段填充控制器
* https://baomidou.com/guide/auto-fill-metainfo.html
*/
@Bean
public
MetaObjectHandler
metaObjectHandler
()
{
return
new
CreateAndUpdateMetaObjectHandler
();
}
/**
* TenantLineInnerInterceptor 多租户插件
* https://baomidou.com/guide/interceptor-tenant-line.html
* DynamicTableNameInnerInterceptor 动态表名插件
* https://baomidou.com/guide/interceptor-dynamic-table-name.html
*/
@Bean
ConfigurationCustomizer
mybatisConfigurationCustomizer
()
{
return
new
ConfigurationCustomizer
()
{
@Override
public
void
customize
(
MybatisConfiguration
configuration
)
{
configuration
.
addInterceptor
(
new
com
.
github
.
pagehelper
.
PageInterceptor
());
}
};
}
}
dsk-framework/src/main/java/com/dsk/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
0 → 100644
View file @
0f3741cb
package
com
.
dsk
.
framework
.
mybatisplus
;
import
cn.hutool.http.HttpStatus
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.dsk.common.core.domain.model.LoginUser
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.reflection.MetaObject
;
import
java.util.Date
;
/**
* MP注入处理器
*
* @author Lion Li
* @date 2021/4/25
*/
@Slf4j
public
class
CreateAndUpdateMetaObjectHandler
implements
MetaObjectHandler
{
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
try
{
//根据属性名字设置要填充的值
if
(
metaObject
.
hasGetter
(
"createTime"
))
{
this
.
setFieldValByName
(
"createTime"
,
new
Date
(),
metaObject
);
}
if
(
metaObject
.
hasGetter
(
"createBy"
))
{
this
.
setFieldValByName
(
"createBy"
,
getLoginNickname
(),
metaObject
);
}
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"自动注入异常 => "
+
e
.
getMessage
(),
HttpStatus
.
HTTP_UNAUTHORIZED
);
}
updateFill
(
metaObject
);
}
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
try
{
if
(
metaObject
.
hasGetter
(
"updateBy"
))
{
this
.
setFieldValByName
(
"updateBy"
,
getLoginNickname
(),
metaObject
);
}
if
(
metaObject
.
hasGetter
(
"updateTime"
))
{
this
.
setFieldValByName
(
"updateTime"
,
new
Date
(),
metaObject
);
}
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"自动注入异常 => "
+
e
.
getMessage
(),
HttpStatus
.
HTTP_UNAUTHORIZED
);
}
}
/**
* 获取登录用户名
*/
private
String
getLoginUsername
()
{
LoginUser
loginUser
;
try
{
loginUser
=
SecurityUtils
.
getLoginUser
();
}
catch
(
Exception
e
)
{
log
.
warn
(
"自动注入警告 => 用户未登录"
);
return
null
;
}
return
loginUser
.
getUsername
();
}
/**
* 获取登录用户名
*/
private
String
getLoginNickname
()
{
LoginUser
loginUser
;
try
{
loginUser
=
SecurityUtils
.
getLoginUser
();
}
catch
(
Exception
e
)
{
log
.
warn
(
"自动注入警告 => 用户未登录"
);
return
null
;
}
return
loginUser
.
getUser
().
getNickName
();
}
}
dsk-system/src/main/java/com/dsk/system/domain/CustomerDecisionChain.java
View file @
0f3741cb
...
...
@@ -55,6 +55,10 @@ public class CustomerDecisionChain implements Serializable {
private
String
remark
;
private
Date
createTime
;
/**
* 更新人
*/
private
String
updateBy
;
private
Long
updateId
;
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/CustomerDecisionChainServiceImpl.java
View file @
0f3741cb
...
...
@@ -86,5 +86,6 @@ public class CustomerDecisionChainServiceImpl implements ICustomerDecisionChainS
private
void
verifyParameter
(
CustomerDecisionChain
customerDecisionChain
){
if
(
ObjectUtils
.
isEmpty
(
customerDecisionChain
.
getCustomerId
()))
throw
new
BeanException
(
"客户id不能为空!"
);
customerDecisionChain
.
setUpdateId
(
SecurityUtils
.
getUserId
());
customerDecisionChain
.
setUpdateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment