Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
newhxnrgl
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
svn
newhxnrgl
Commits
a48c2806
提交
a48c2806
authored
12月 29, 2020
作者:
chaoyanjun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
上级
a7e3cff3
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
43 个修改的文件
包含
2484 行增加
和
0 行删除
+2484
-0
.classpath
com.zrqx.works/.classpath
+32
-0
.project
com.zrqx.works/.project
+34
-0
org.eclipse.core.resources.prefs
com.zrqx.works/.settings/org.eclipse.core.resources.prefs
+2
-0
org.eclipse.jdt.core.prefs
com.zrqx.works/.settings/org.eclipse.jdt.core.prefs
+8
-0
org.eclipse.m2e.core.prefs
com.zrqx.works/.settings/org.eclipse.m2e.core.prefs
+4
-0
pom.xml
com.zrqx.works/pom.xml
+114
-0
WorksStart.java
com.zrqx.works/src/main/java/com/zrqx/works/WorksStart.java
+56
-0
ContentClient.java
.../java/com/zrqx/works/bg/client/content/ContentClient.java
+16
-0
ContentClientHystrix.java
...om/zrqx/works/bg/client/content/ContentClientHystrix.java
+15
-0
FileClient.java
...c/main/java/com/zrqx/works/bg/client/file/FileClient.java
+21
-0
FileClientHystric.java
...java/com/zrqx/works/bg/client/file/FileClientHystric.java
+22
-0
StatisticsClient.java
...com/zrqx/works/bg/client/statistics/StatisticsClient.java
+26
-0
StatisticsClientHystrix.java
...x/works/bg/client/statistics/StatisticsClientHystrix.java
+29
-0
MessageClient.java
.../java/com/zrqx/works/bg/client/sysuser/MessageClient.java
+26
-0
MessageClientHystric.java
...om/zrqx/works/bg/client/sysuser/MessageClientHystric.java
+30
-0
SysuserClient.java
.../java/com/zrqx/works/bg/client/sysuser/SysuserClient.java
+33
-0
SysuserClientHystric.java
...om/zrqx/works/bg/client/sysuser/SysuserClientHystric.java
+37
-0
AdvancedSearchController.java
...g/controller/advancedsearch/AdvancedSearchController.java
+231
-0
ApplyController.java
...a/com/zrqx/works/bg/controller/apply/ApplyController.java
+0
-0
DoorController.java
...ava/com/zrqx/works/bg/controller/door/DoorController.java
+37
-0
ExamineController.java
...m/zrqx/works/bg/controller/examine/ExamineController.java
+177
-0
SolrController.java
...ava/com/zrqx/works/bg/controller/solr/SolrController.java
+224
-0
ApplyMapper.java
...main/java/com/zrqx/works/bg/mapper/apply/ApplyMapper.java
+28
-0
ApplyResourceMapper.java
...a/com/zrqx/works/bg/mapper/apply/ApplyResourceMapper.java
+55
-0
ApplyResourceService.java
...com/zrqx/works/bg/service/apply/ApplyResourceService.java
+34
-0
ApplyResourceServiceImpl.java
...zrqx/works/bg/service/apply/ApplyResourceServiceImpl.java
+121
-0
ApplyService.java
...in/java/com/zrqx/works/bg/service/apply/ApplyService.java
+27
-0
ApplyServiceImpl.java
...ava/com/zrqx/works/bg/service/apply/ApplyServiceImpl.java
+152
-0
Redis.java
...rqx.works/src/main/java/com/zrqx/works/commons/Redis.java
+138
-0
Swagger2Config.java
...in/java/com/zrqx/works/commons/config/Swagger2Config.java
+87
-0
WebAppConfig.java
...main/java/com/zrqx/works/commons/config/WebAppConfig.java
+27
-0
CustomExceptionHandler.java
...rqx/works/commons/interceptor/CustomExceptionHandler.java
+87
-0
FeignHeaderInterceptor.java
...rqx/works/commons/interceptor/FeignHeaderInterceptor.java
+37
-0
InterceptorConfig.java
...com/zrqx/works/commons/interceptor/InterceptorConfig.java
+51
-0
LogAspect.java
...in/java/com/zrqx/works/commons/interceptor/LogAspect.java
+34
-0
TxAdviceInterceptor.java
...m/zrqx/works/commons/interceptor/TxAdviceInterceptor.java
+77
-0
Copy.java
...works/src/main/java/com/zrqx/works/commons/util/Copy.java
+59
-0
MapSort.java
...ks/src/main/java/com/zrqx/works/commons/util/MapSort.java
+39
-0
SysuserUtil.java
...rc/main/java/com/zrqx/works/commons/util/SysuserUtil.java
+16
-0
Task.java
...works/src/main/java/com/zrqx/works/commons/util/Task.java
+44
-0
application.yml
com.zrqx.works/src/main/resources/application.yml
+48
-0
bootstrap.yml
com.zrqx.works/src/main/resources/bootstrap.yml
+14
-0
logback-custom.xml
com.zrqx.works/src/main/resources/logback-custom.xml
+135
-0
没有找到文件。
com.zrqx.works/.classpath
0 → 100644
浏览文件 @
a48c2806
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry
kind=
"src"
output=
"target/classes"
path=
"src/main/java"
>
<attributes>
<attribute
name=
"optional"
value=
"true"
/>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
excluding=
"**"
kind=
"src"
output=
"target/classes"
path=
"src/main/resources"
>
<attributes>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
kind=
"src"
output=
"target/test-classes"
path=
"src/test/java"
>
<attributes>
<attribute
name=
"optional"
value=
"true"
/>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
excluding=
"**"
kind=
"src"
output=
"target/test-classes"
path=
"src/test/resources"
>
<attributes>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
kind=
"con"
path=
"org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"
>
<attributes>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
kind=
"con"
path=
"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"
/>
<classpathentry
kind=
"output"
path=
"target/classes"
/>
</classpath>
com.zrqx.works/.project
0 → 100644
浏览文件 @
a48c2806
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
com.zrqx.works
</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>
org.eclipse.wst.common.project.facet.core.builder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
org.eclipse.jdt.core.javabuilder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
org.eclipse.m2e.core.maven2Builder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
org.springframework.ide.eclipse.boot.validation.springbootbuilder
</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>
org.eclipse.jdt.core.javanature
</nature>
<nature>
org.eclipse.m2e.core.maven2Nature
</nature>
<nature>
org.eclipse.wst.common.project.facet.core.nature
</nature>
</natures>
</projectDescription>
com.zrqx.works/.settings/org.eclipse.core.resources.prefs
0 → 100644
浏览文件 @
a48c2806
eclipse.preferences.version=1
encoding/<project>=UTF-8
com.zrqx.works/.settings/org.eclipse.jdt.core.prefs
0 → 100644
浏览文件 @
a48c2806
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8
com.zrqx.works/.settings/org.eclipse.m2e.core.prefs
0 → 100644
浏览文件 @
a48c2806
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
com.zrqx.works/pom.xml
0 → 100644
浏览文件 @
a48c2806
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.zrqx
</groupId>
<artifactId>
com.zrqx.pom
</artifactId>
<version>
1.0.0
</version>
<relativePath>
../com.zrqx.pom
</relativePath>
</parent>
<groupId>
com.zrqx
</groupId>
<artifactId>
com.zrqx.works
</artifactId>
<dependencies>
<dependency>
<groupId>
com.zrqx
</groupId>
<artifactId>
com.zrqx.core
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-zipkin
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-eureka
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-config
</artifactId>
</dependency>
<!--表示为web工程 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<!-- 用于健康监控 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-feign
</artifactId>
</dependency>
<!--熔断器 -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-hystrix
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-hystrix-dashboard
</artifactId>
</dependency>
<!-- <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency> -->
<dependency>
<groupId>
org.jsoup
</groupId>
<artifactId>
jsoup
</artifactId>
<version>
1.8.3
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid
</artifactId>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<!-- 引入solrj -->
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-solr
</artifactId>
</dependency>
<!--分布式事务 -->
<!-- <dependency> <groupId>com.codingapi</groupId> <artifactId>transaction-springcloud</artifactId>
<exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>*</artifactId>
</exclusion> </exclusions> </dependency> <dependency> <groupId>com.codingapi</groupId>
<artifactId>tx-plugins-db</artifactId> <exclusions> <exclusion> <groupId>org.slf4j</groupId>
<artifactId>*</artifactId> </exclusion> </exclusions> </dependency> -->
<!--swagger2 -->
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
</dependency>
<!-- Springsecurity给服务端提供安全访问 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-security
</artifactId>
</dependency>
<!--用于测试的 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<!-- 热部署工具 -->
<!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId>
</dependency> -->
</dependencies>
</project>
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/WorksStart.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.netflix.eureka.EnableEurekaClient
;
import
org.springframework.cloud.netflix.feign.EnableFeignClients
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
com.alibaba.druid.pool.DruidDataSource
;
import
tk.mybatis.spring.annotation.MapperScan
;
@EnableScheduling
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
// 系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。
@MapperScan
(
basePackages
=
{
"com.zrqx.works.bg.mapper.*"
})
public
class
WorksStart
{
@Value
(
"${spring.datasource.url}"
)
private
String
url
;
@Value
(
"${spring.datasource.username}"
)
private
String
username
;
@Value
(
"${spring.datasource.password}"
)
private
String
password
;
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
WorksStart
.
class
);
public
static
void
main
(
String
[]
args
)
{
// 下面两行代码都可以用来启动
SpringApplication
.
run
(
WorksStart
.
class
,
args
);
// new SpringApplicationBuilder(AppStart.class).web(true).run(args);
logger
.
info
(
"works服务已启动....."
);
// test serversion
}
@Bean
public
DruidDataSource
dataSource
()
{
DruidDataSource
dataSource
=
new
DruidDataSource
();
dataSource
.
setUrl
(
url
);
dataSource
.
setUsername
(
username
);
// 用户名
dataSource
.
setPassword
(
password
);
// 密码
dataSource
.
setInitialSize
(
2
);
dataSource
.
setMaxActive
(
20
);
dataSource
.
setMinIdle
(
0
);
dataSource
.
setMaxWait
(
60000
);
dataSource
.
setValidationQuery
(
"SELECT 1"
);
dataSource
.
setTestOnBorrow
(
false
);
dataSource
.
setTestWhileIdle
(
true
);
dataSource
.
setPoolPreparedStatements
(
false
);
return
dataSource
;
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/content/ContentClient.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
content
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
com.zrqx.core.constant.content.ContentRequestPath
;
import
com.zrqx.core.util.CallBack
;
@FeignClient
(
name
=
"content"
,
fallback
=
ContentClientHystrix
.
class
)
public
interface
ContentClient
{
/** 资讯总量 */
@GetMapping
(
ContentRequestPath
.
BG
+
ContentRequestPath
.
CONTENT
+
ContentRequestPath
.
COUNT
)
CallBack
<
Integer
>
total
();
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/content/ContentClientHystrix.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
content
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.util.CallBack
;
@Component
public
class
ContentClientHystrix
implements
ContentClient
{
@Override
public
CallBack
<
Integer
>
total
()
{
return
CallBack
.
fail
();
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/file/FileClient.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
file
;
import
java.util.List
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.works.solr.SolrDownVo
;
@FeignClient
(
name
=
"file"
,
fallback
=
FileClientHystric
.
class
)
public
interface
FileClient
{
/** 查找用户,用户所属部门,用户角色*/
@PostMapping
(
"/ftp/download/selectdirectory"
)
public
CallBack
<
String
>
downSelect
(
List
<
SolrDownVo
>
sdvList
);
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/file/FileClientHystric.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
file
;
import
java.util.List
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.works.solr.SolrDownVo
;
/**
* @author Tujide.lv
*
*/
@Component
public
class
FileClientHystric
implements
FileClient
{
@Override
public
CallBack
<
String
>
downSelect
(
List
<
SolrDownVo
>
sdvList
)
{
return
CallBack
.
fail
();
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/statistics/StatisticsClient.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
statistics
;
import
java.util.List
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
com.zrqx.core.constant.statistics.StatisticsRequestPath
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.works.door.WaitExamineVo
;
@FeignClient
(
name
=
"statistics"
,
fallback
=
StatisticsClientHystrix
.
class
)
public
interface
StatisticsClient
{
/** 资源总量 */
@GetMapping
(
StatisticsRequestPath
.
BG
+
StatisticsRequestPath
.
NUMSTATISTICS
+
StatisticsRequestPath
.
TOTAL
)
CallBack
<
Integer
>
total
();
/** 产品种类 */
@GetMapping
(
StatisticsRequestPath
.
BG
+
StatisticsRequestPath
.
NUMSTATISTICS
+
StatisticsRequestPath
.
PRODUCT
)
CallBack
<
Integer
>
product
();
/** 待审核事物*/
@GetMapping
(
StatisticsRequestPath
.
BG
+
StatisticsRequestPath
.
NUMSTATISTICS
+
StatisticsRequestPath
.
WAITEXAMINE
)
CallBack
<
List
<
WaitExamineVo
>>
waitExamine
();
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/statistics/StatisticsClientHystrix.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
statistics
;
import
java.util.List
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.works.door.WaitExamineVo
;
@Component
public
class
StatisticsClientHystrix
implements
StatisticsClient
{
@Override
public
CallBack
<
Integer
>
total
()
{
return
CallBack
.
success
(-
1
);
}
@Override
public
CallBack
<
Integer
>
product
()
{
return
CallBack
.
success
(-
1
);
}
@Override
public
CallBack
<
List
<
WaitExamineVo
>>
waitExamine
()
{
// TODO Auto-generated method stub
return
CallBack
.
fail
();
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/sysuser/MessageClient.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
sysuser
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
com.zrqx.core.constant.sysuser.SysUserRequestPath
;
import
com.zrqx.core.model.sysuser.message.Message
;
import
com.zrqx.core.util.CallBack
;
@FeignClient
(
name
=
"sysuser"
,
fallback
=
MessageClientHystric
.
class
)
public
interface
MessageClient
{
/**
* 保存日志
* @param log
* @return
* @author yzg
* @date: 2018年8月16日 下午2:37:59
*/
@PostMapping
(
SysUserRequestPath
.
BG
+
SysUserRequestPath
.
MESSAGE
+
SysUserRequestPath
.
SAVE
)
CallBack
<
Boolean
>
saveMessage
(
@RequestBody
Message
message
);
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/sysuser/MessageClientHystric.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
sysuser
;
import
org.apache.log4j.Logger
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.model.sysuser.message.Message
;
import
com.zrqx.core.util.CallBack
;
/**
* @author Tujide.lv
*
*/
@Component
public
class
MessageClientHystric
implements
MessageClient
{
private
static
final
Logger
log
=
Logger
.
getLogger
(
MessageClientHystric
.
class
);
/**
* @see com.zrqx.order.client.SysuserClient#saveLog(com.zrqx.core.model.sysuser.log.Log)
* @param log
* @return
* @author ray
* @date: 2018年7月27日 上午10:59:35
*/
@Override
public
CallBack
<
Boolean
>
saveMessage
(
Message
message
)
{
return
CallBack
.
fail
();
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/sysuser/SysuserClient.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
sysuser
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
com.zrqx.core.constant.sysuser.SysUserRequestPath
;
import
com.zrqx.core.model.sysuser.log.Log
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
@FeignClient
(
name
=
"sysuser"
,
fallback
=
SysuserClientHystric
.
class
)
public
interface
SysuserClient
{
/**
* 保存日志
* @param log
* @return
* @author yzg
* @date: 2018年8月16日 下午2:37:59
*/
@PostMapping
(
SysUserRequestPath
.
BG
+
SysUserRequestPath
.
LOG
+
SysUserRequestPath
.
SAVE
)
CallBack
<
Boolean
>
saveLog
(
@RequestBody
Log
log
);
/** 查找用户,用户所属部门,用户角色*/
@GetMapping
(
SysUserRequestPath
.
BG
+
SysUserRequestPath
.
USER
+
SysUserRequestPath
.
BASICS
)
CallBack
<
UserVO
>
getUserById
(
@RequestParam
(
"userId"
)
String
userId
);
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/bg/client/sysuser/SysuserClientHystric.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
client
.
sysuser
;
import
org.apache.log4j.Logger
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.model.sysuser.log.Log
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
/**
* @author Tujide.lv
*
*/
@Component
public
class
SysuserClientHystric
implements
SysuserClient
{
private
static
final
Logger
log
=
Logger
.
getLogger
(
SysuserClientHystric
.
class
);
/**
* @see com.zrqx.order.client.SysuserClient#saveLog(com.zrqx.core.model.sysuser.log.Log)
* @param log
* @return
* @author ray
* @date: 2018年7月27日 上午10:59:35
*/
@Override
public
CallBack
<
Boolean
>
saveLog
(
Log
log
)
{
SysuserClientHystric
.
log
.
info
(
"保存操作日志失败"
);
return
CallBack
.
fail
();
}
@Override
public
CallBack
<
UserVO
>
getUserById
(
String
userId
)
{
// TODO Auto-generated method stub
return
CallBack
.
fail
();
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/controller/advancedsearch/AdvancedSearchController.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
controller
.
advancedsearch
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Scanner
;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.solr.client.solrj.SolrClient
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.apache.solr.client.solrj.response.QueryResponse
;
import
org.apache.solr.common.SolrDocument
;
import
org.apache.solr.common.SolrDocumentList
;
import
org.jsoup.Jsoup
;
import
org.jsoup.nodes.Document
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.zrqx.core.constant.BaseRequestPath
;
import
com.zrqx.core.constant.resource.ResourceRequestPath
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.form.works.bg.solr.AdvancedQueryForm
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.util.PageInfo
;
import
com.zrqx.core.util.PageParam
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
import
com.zrqx.core.vo.works.solr.SolrListVo
;
import
com.zrqx.works.bg.client.sysuser.SysuserClient
;
import
com.zrqx.works.bg.service.apply.ApplyService
;
import
com.zrqx.works.commons.Redis
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
/**
* ClassName: AdvancedSearchController
*
* @Description: TODO
* @author lizhuo
* @date 2019年2月11日
*/
@RestController
@RequestMapping
(
ResourceRequestPath
.
BG
+
ResourceRequestPath
.
ADVANCEDSEARCH
)
@Api
(
description
=
"工作台-高级检索"
)
public
class
AdvancedSearchController
{
@Autowired
private
Redis
redis
;
@Autowired
private
SolrClient
client
;
@Autowired
private
ApplyService
applyService
;
@Autowired
private
SysuserClient
sysuserClient
;
@ApiOperation
(
value
=
"分页查询"
,
notes
=
"查询列表"
)
@GetMapping
(
value
=
BaseRequestPath
.
PAGE
)
public
CallBack
<
PageInfo
<
SolrListVo
>>
page
(
AdvancedQueryForm
form
,
PageParam
pageParam
)
{
// 获取用户部门
String
userid
=
redis
.
getUser
().
getUserId
();
CallBack
<
UserVO
>
userVo
=
sysuserClient
.
getUserById
(
userid
);
List
<
Integer
>
deptIdList
=
userVo
.
getData
().
getDeptList
().
stream
().
map
(
a
->
{
return
a
.
getDeptId
();
}).
collect
(
Collectors
.
toList
());
StringBuffer
sb
=
new
StringBuffer
();
SolrQuery
sq
=
new
SolrQuery
();
if
(
form
.
getKeyword
()
==
null
)
{
sb
.
append
(
"*:*"
);
}
else
{
sb
.
append
(
"("
+
form
.
getKeyword
()
+
")"
);
}
if
(
StringUtils
.
isNotBlank
(
form
.
getResourceType
()))
{
sb
.
append
(
" && resourceType:"
+
form
.
getResourceType
());
}
if
(
StringUtils
.
isNotBlank
(
form
.
getCode
()))
{
sb
.
append
(
" && code:"
+
form
.
getCode
());
}
if
(
form
.
getDataSources
()
!=
null
)
{
sb
.
append
(
" && dataSources:"
+
form
.
getDataSources
());
}
if
(
form
.
getStartTime
()
!=
null
&&
form
.
getEndTime
()
!=
null
)
{
sb
.
append
(
" && publishTime:["
+
solrTime
(
form
.
getStartTime
())
+
" TO "
+
form
.
getEndTime
()
+
"T23:59:59Z"
+
"]"
);
}
if
(
StringUtils
.
isNotBlank
(
form
.
getMachiningList
()))
{
if
(
"已加工"
.
equals
(
form
.
getMachiningList
()))
{
sb
.
append
(
" && path: *"
);
}
else
{
sb
.
append
(
" && !path: *"
);
}
}
if
(
StringUtils
.
isNotBlank
(
form
.
getTypesettingList
()))
{
if
(
"有"
.
equals
(
form
.
getTypesettingList
()))
{
sb
.
append
(
" && typesettingList: *"
);
}
else
{
sb
.
append
(
" && !typesettingList: *"
);
}
}
if
(
form
.
getNumberCopyright
()
!=
null
)
{
sb
.
append
(
" && numberCopyright:"
+
form
.
getNumberCopyright
());
}
if
(
form
.
getStatus
()
!=
null
)
{
sb
.
append
(
" && goodsStatus:"
+
form
.
getStatus
());
}
if
(
form
.
getIsPaintBook
()
!=
null
)
{
sb
.
append
(
" && isPaintBook:"
+
form
.
getIsPaintBook
());
}
if
(
form
.
getIsCooperationBook
()
!=
null
)
{
sb
.
append
(
" && isCooperationBook:"
+
form
.
getIsCooperationBook
());
}
if
(
form
.
getDepartmentId
()
!=
null
)
{
sb
.
append
(
" && departmentId:"
+
form
.
getDepartmentId
());
}
if
(
form
.
getDownload
()
!=
null
)
{
sb
.
append
(
" && ( download:"
+
form
.
getDownload
());
deptIdList
.
forEach
(
item
->
{
sb
.
append
(
" || departmentId:"
+
item
);
});
sb
.
append
(
" )"
);
}
/*
* if (form.getFinish()!=null) { sb.append(" && finish:" + form.getFinish()); }
* if (form.getShowFinished()!=null) { sb.append(" && showFinished:" +
* form.getShowFinished()); }
*/
sq
.
addFilterQuery
(
"isDelete:0 && status:1"
);
sq
.
set
(
"q"
,
sb
.
toString
());
// 排序
sq
.
set
(
"sort"
,
pageParam
.
getOrderBy
());
// 分页
int
start
=
(
int
)
((
pageParam
.
getPageNum
()
-
1
)
*
pageParam
.
getPageSize
());
sq
.
setStart
(
start
);
sq
.
setRows
(
pageParam
.
getPageSize
());
try
{
QueryResponse
queryResponse
=
client
.
query
(
sq
);
SolrDocumentList
results
=
queryResponse
.
getResults
();
List
<
SolrListVo
>
list
=
new
ArrayList
<
SolrListVo
>();
for
(
SolrDocument
result
:
results
)
{
SolrListVo
slv
=
new
SolrListVo
();
String
id
=
(
String
)
result
.
get
(
"id"
);
slv
.
setId
(
id
);
slv
.
setName
((
String
)
result
.
get
(
"name"
));
slv
.
setAuthor
((
String
)
result
.
get
(
"author"
));
slv
.
setPublishTime
((
String
)
result
.
get
(
"publishTime"
));
slv
.
setEdition
((
String
)
result
.
get
(
"edition"
));
if
((
String
)
result
.
get
(
"intro"
)
!=
null
)
{
Document
d
=
Jsoup
.
parse
((
String
)
result
.
get
(
"intro"
));
slv
.
setIntro
(
d
.
text
());
}
else
{
slv
.
setIntro
((
String
)
result
.
get
(
"intro"
));
}
slv
.
setBookName
((
String
)
result
.
get
(
"bookName"
));
slv
.
setUpdateTime
((
Date
)
result
.
get
(
"updateTime"
));
slv
.
setStatus
((
Integer
)
result
.
get
(
"status"
));
slv
.
setResourceType
((
Integer
)
result
.
get
(
"resourceType"
));
slv
.
setCover
((
String
)
result
.
get
(
"cover"
));
slv
.
setCode
((
String
)
result
.
get
(
"code"
));
//20190816新增展示字段
slv
.
setIsbn
((
String
)
result
.
get
(
"isbn"
));
slv
.
setDataSources
((
Integer
)
result
.
get
(
"dataSources"
));
slv
.
setProcessingState
((
Integer
)
result
.
get
(
"processingState"
));
if
(
result
.
get
(
"numberCopyright"
)
!=
null
)
{
slv
.
setNumberCopyright
(
result
.
get
(
"numberCopyright"
).
toString
());
}
slv
.
setIsPaintBook
((
Integer
)
result
.
get
(
"isPaintBook"
));
slv
.
setIsCooperationBook
((
Integer
)
result
.
get
(
"isCooperationBook"
));
// 判断是否能下载
if
(
result
.
get
(
"departmentId"
)
!=
null
)
{
slv
.
setDepartment
((
Integer
)
result
.
get
(
"departmentId"
));
}
List
<
String
>
applyUserIds
=
(
List
)
result
.
get
(
"userId"
);
if
(
applyUserIds
!=
null
)
{
for
(
int
i
=
0
;
i
<
applyUserIds
.
size
();
i
++)
{
if
(
userid
.
equals
(
applyUserIds
.
get
(
i
)))
{
// 判断是否能下载
slv
.
setDownload
(
Integer
.
parseInt
(((
List
<
String
>)
result
.
get
(
"download"
)).
get
(
i
)));
}
}
}
// 判断是否能下载
if
(
slv
.
getDownload
()
==
null
||
slv
.
getDownload
()
!=
1
)
{
if
(
deptIdList
.
contains
(
slv
.
getDepartment
()))
{
slv
.
setDownload
(
1
);
}
else
{
slv
.
setDownload
(
0
);
}
}
list
.
add
(
slv
);
}
PageInfo
<
SolrListVo
>
page
=
new
PageInfo
<
SolrListVo
>();
page
.
setList
(
list
);
page
.
setPageNum
(
pageParam
.
getPageNum
());
page
.
setPageSize
(
pageParam
.
getPageSize
());
page
.
setTotal
(
results
.
getNumFound
());
return
CallBack
.
success
(
page
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
BaseException
(
"查询失败"
);
}
}
private
String
solrTime
(
String
date
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
time
=
new
Date
();
try
{
time
=
format
.
parse
(
date
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
long
ss
=
time
.
getTime
();
ss
=
ss
-
1000
;
Date
time2
=
new
Date
();
time2
.
setTime
(
ss
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd'T'HH:mm:ss'Z'"
);
String
solrformat
=
sdf
.
format
(
time2
);
return
solrformat
;
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/controller/apply/ApplyController.java
0 → 100644
浏览文件 @
a48c2806
差异被折叠。
点击展开。
com.zrqx.works/src/main/java/com/zrqx/works/bg/controller/door/DoorController.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
controller
.
door
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.zrqx.core.constant.works.WorksRequestPath
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.works.door.DoorDataVo
;
import
com.zrqx.works.bg.client.content.ContentClient
;
import
com.zrqx.works.bg.client.statistics.StatisticsClient
;
@RestController
@RequestMapping
(
WorksRequestPath
.
BG
+
WorksRequestPath
.
DOOR
)
@Api
(
description
=
"工作台-系统门户"
)
public
class
DoorController
{
@Autowired
private
ContentClient
contentClient
;
@Autowired
private
StatisticsClient
statisticsClient
;
@ApiOperation
(
value
=
"数量统计"
,
notes
=
"数量统计"
)
@GetMapping
(
value
=
WorksRequestPath
.
COUNT
)
public
CallBack
<
DoorDataVo
>
count
()
{
DoorDataVo
vo
=
new
DoorDataVo
();
vo
.
setResource
(
statisticsClient
.
total
().
getData
());
vo
.
setClassNum
(
statisticsClient
.
product
().
getData
());
vo
.
setContent
(
contentClient
.
total
().
getData
());
return
CallBack
.
success
(
vo
);
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/controller/examine/ExamineController.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
controller
.
examine
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
tk.mybatis.mapper.entity.Example.Criteria
;
import
com.zrqx.core.constant.works.WorksRequestPath
;
import
com.zrqx.core.enums.ResourceTypeEnum
;
import
com.zrqx.core.enums.works.apply.StatusEnum
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.form.works.bg.apply.ExamineStatusForm
;
import
com.zrqx.core.model.sysuser.message.Message
;
import
com.zrqx.core.model.works.apply.Apply
;
import
com.zrqx.core.model.works.apply.ApplyResource
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.util.Copy
;
import
com.zrqx.core.util.PageInfo
;
import
com.zrqx.core.util.PageMap
;
import
com.zrqx.core.util.PageParam
;
import
com.zrqx.core.vo.sysuser.bg.dept.DeptVO
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
import
com.zrqx.core.vo.works.apply.ApplyDetailsVo
;
import
com.zrqx.core.vo.works.apply.QueryApplyVo
;
import
com.zrqx.core.vo.works.apply.QueryResourceVo
;
import
com.zrqx.works.bg.client.sysuser.MessageClient
;
import
com.zrqx.works.bg.client.sysuser.SysuserClient
;
import
com.zrqx.works.bg.service.apply.ApplyResourceService
;
import
com.zrqx.works.bg.service.apply.ApplyService
;
import
com.zrqx.works.commons.Redis
;
@RestController
@RequestMapping
(
WorksRequestPath
.
BG
+
WorksRequestPath
.
EXAMINE
)
@Api
(
description
=
"工作台-我的审核"
)
public
class
ExamineController
{
@Autowired
private
ApplyService
service
;
@Autowired
private
ApplyResourceService
resourceService
;
@Autowired
private
Redis
redis
;
@Autowired
private
SysuserClient
sysuserClient
;
@Autowired
private
MessageClient
messageClient
;
@ApiOperation
(
value
=
"根据ID查看申请详情"
,
notes
=
"根据ID查看申请详情-申请id"
)
@GetMapping
(
value
=
WorksRequestPath
.
OID
)
public
CallBack
<
ApplyDetailsVo
>
selectById
(
@PathVariable
Integer
oid
)
{
return
CallBack
.
success
(
service
.
selectById
(
oid
));
}
@ApiOperation
(
value
=
"批量审核"
,
notes
=
"批量审核 "
)
@PostMapping
(
value
=
WorksRequestPath
.
BATCH_UPDATE_REVIEW
)
public
CallBack
<
String
>
updateById
(
@RequestBody
ExamineStatusForm
form
)
{
// 数据验证
if
(
form
.
getIds
().
length
==
0
)
{
throw
new
BaseException
(
7
,
"没有选中任何数据,请重新选择"
);
}
Criteria
cr
=
service
.
createCriteria
();
Integer
[]
arr
=
form
.
getIds
();
cr
.
andIn
(
"id"
,
Arrays
.
asList
(
arr
));
List
<
Apply
>
applyList
=
service
.
selectByCriteria
();
for
(
Apply
apply
:
applyList
)
{
if
(
apply
.
getStatus
()
!=
StatusEnum
.
TOBEAUDITED
.
getCode
())
{
throw
new
BaseException
(
7
,
"请选择未审核数据"
);
}
}
if
(
form
.
getStatus
()
==
StatusEnum
.
NOT_AUDITPASS
.
getCode
()
&&
StringUtils
.
isBlank
(
form
.
getOpinion
()))
{
throw
new
BaseException
(
7
,
"驳回需要填写审核意见"
);
}
// 数据保存
Date
date
=
new
Date
();
String
userId
=
redis
.
getUser
().
getUserId
();
// String userId = "11";
String
opinion
=
form
.
getOpinion
();
Integer
status
=
form
.
getStatus
();
for
(
Apply
updateApply
:
applyList
)
{
updateApply
.
setExamineTime
(
date
);
updateApply
.
setOpinion
(
opinion
);
updateApply
.
setExamineId
(
userId
);
updateApply
.
setStatus
(
status
);
service
.
updateByPrimaryKeySelective
(
updateApply
);
// 申请信息录入到消息中
Message
message
=
new
Message
();
message
.
setUserId
(
userId
);
message
.
setCreateTime
(
new
Date
());
message
.
setApplyId
(
updateApply
.
getId
());
message
.
setTitle
(
"您提交的资源下载申请状态发生改变!"
);
List
<
QueryResourceVo
>
qrVo
=
resourceService
.
page
(
updateApply
.
getId
());
StringBuffer
sb
=
new
StringBuffer
();
qrVo
.
forEach
(
qv
->
{
sb
.
append
(
"["
+
ResourceTypeEnum
.
getName
(
qv
.
getResourceType
())
+
"]"
+
qv
.
getName
()
+
";"
);
});
sb
.
append
(
qrVo
.
size
()
+
"条资源"
);
message
.
setContent
(
sb
.
toString
());
message
.
setStatus
(
0
);
message
.
setType
(
1
);
messageClient
.
saveMessage
(
message
);
}
// 保存审核信息
Criteria
resourceCr
=
resourceService
.
createCriteria
();
resourceCr
.
andIn
(
"applyId"
,
Arrays
.
asList
(
arr
));
if
(
status
.
equals
(
"1"
))
{
List
<
ApplyResource
>
arList
=
resourceService
.
selectByCriteria
();
arList
.
forEach
(
item
->{
item
.
getResourceId
();
item
.
getResourceType
();
});
}
// 修改资源状态
ApplyResource
ar
=
new
ApplyResource
();
ar
.
setStatus
(
status
);
if
(!
resourceService
.
updateByCriteriaSelective
(
ar
))
{
throw
new
BaseException
(
7
,
"资源状态修改失败"
);
}
return
CallBack
.
success
();
}
@ApiOperation
(
value
=
"分页查询"
,
notes
=
"分页查询"
)
@GetMapping
(
value
=
WorksRequestPath
.
PAGE
)
public
CallBack
<
PageMap
<
String
,
List
<
QueryApplyVo
>>>
page
(
Integer
status
,
PageParam
pageParam
)
{
pageParam
.
setOrderBy
(
"applyTime desc"
);
Criteria
cr
=
service
.
createCriteria
();
String
userId
=
redis
.
getUser
().
getUserId
();
// String userId = "11";
CallBack
<
UserVO
>
user
=
sysuserClient
.
getUserById
(
userId
);
List
<
DeptVO
>
deptList
=
user
.
getData
().
getDeptList
();
List
<
Integer
>
deptId
=
new
ArrayList
<
Integer
>();
for
(
DeptVO
deptVO
:
deptList
)
{
deptId
.
add
(
deptVO
.
getDeptId
());
}
if
(
deptId
.
size
()
==
0
)
{
throw
new
BaseException
(
7
,
"您还没有被分配部门"
);
}
cr
.
andIn
(
"deptId"
,
deptId
);
if
(
status
!=
null
)
{
cr
.
andEqualTo
(
"status"
,
status
);
}
PageInfo
<
Apply
>
applyPage
=
service
.
queryCriteria
(
pageParam
);
List
<
QueryApplyVo
>
qaVo
=
Copy
.
copyList
(
applyPage
.
getList
(),
QueryApplyVo
.
class
,
(
apply
,
vo
)
->
{
List
<
QueryResourceVo
>
qrVo
=
resourceService
.
page
(
apply
.
getId
());
vo
.
setResourceList
(
qrVo
);
UserVO
uservo
=
sysuserClient
.
getUserById
(
apply
.
getUserId
()).
getData
();
vo
.
setDepa
(
uservo
.
getDeptList
());
vo
.
setTopImg
(
uservo
.
getTopImg
());
vo
.
setUserName
(
uservo
.
getUserName
());
});
Map
<
String
,
List
<
QueryApplyVo
>>
map
=
qaVo
.
stream
().
collect
(
Collectors
.
groupingBy
(
QueryApplyVo:
:
getTime
));
PageMap
<
String
,
List
<
QueryApplyVo
>>
pageMap
=
new
PageMap
<>();
BeanUtils
.
copyProperties
(
applyPage
,
pageMap
);
pageMap
.
setMap
(
map
);
return
CallBack
.
success
(
pageMap
);
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/controller/solr/SolrController.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
bg
.
controller
.
solr
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.solr.client.solrj.SolrClient
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.apache.solr.client.solrj.response.QueryResponse
;
import
org.apache.solr.common.SolrDocument
;
import
org.apache.solr.common.SolrDocumentList
;
import
org.jsoup.Jsoup
;
import
org.jsoup.nodes.Document
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.zrqx.core.constant.BaseRequestPath
;
import
com.zrqx.core.constant.works.WorksRequestPath
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.form.works.bg.solr.SolrQueryForm
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.util.PageInfo
;
import
com.zrqx.core.util.PageParam
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
import
com.zrqx.core.vo.works.solr.SolrListVo
;
import
com.zrqx.works.bg.client.sysuser.SysuserClient
;
import
com.zrqx.works.bg.service.apply.ApplyService
;
import
com.zrqx.works.commons.Redis
;
@RestController
@RequestMapping
(
WorksRequestPath
.
BG
+
WorksRequestPath
.
SOLR
)
@Api
(
description
=
"工作台-资源广场-全文检索"
)
public
class
SolrController
{
@Autowired
private
Redis
redis
;
@Autowired
private
SolrClient
client
;
@Autowired
private
ApplyService
applyService
;
@Autowired
private
SysuserClient
sysuserClient
;
@ApiOperation
(
value
=
"分页查询"
,
notes
=
"查询列表"
)
@GetMapping
(
value
=
BaseRequestPath
.
PAGE
)
public
CallBack
<
PageInfo
<
SolrListVo
>>
page
(
SolrQueryForm
form
,
PageParam
pageParam
)
{
// 获取用户部门
String
userid
=
redis
.
getUser
().
getUserId
();
CallBack
<
UserVO
>
userVo
=
sysuserClient
.
getUserById
(
userid
);
List
<
Integer
>
deptIdList
=
userVo
.
getData
().
getDeptList
().
stream
().
map
(
a
->
{
return
a
.
getDeptId
();
}).
collect
(
Collectors
.
toList
());
StringBuffer
sb
=
new
StringBuffer
();
SolrQuery
sq
=
new
SolrQuery
();
if
(
StringUtils
.
isBlank
(
form
.
getKeyword
()))
{
form
.
setKeyword
(
"*"
);
}
sb
.
append
(
"keywords_li:"
+
form
.
getKeyword
());
if
(
form
.
getDataSources
()!=
null
)
{
sb
.
append
(
" && dataSources:"
+
form
.
getDataSources
());
}
if
(
StringUtils
.
isNotBlank
(
form
.
getResourceType
()))
{
sb
.
append
(
" && resourceType:"
+
form
.
getResourceType
());
}
if
(
StringUtils
.
isNotBlank
(
form
.
getCode
()))
{
sb
.
append
(
" && code:"
+
form
.
getCode
());
}
if
(
form
.
getDownload
()
!=
null
)
{
sb
.
append
(
" && ( download:"
+
form
.
getDownload
());
deptIdList
.
forEach
(
item
->
{
sb
.
append
(
" || departmentId:"
+
item
);
});
sb
.
append
(
" )"
);
}
sq
.
addFilterQuery
(
"isDelete:0 && status:1"
);
sq
.
set
(
"q"
,
sb
.
toString
());
// 排序
sq
.
set
(
"sort"
,
pageParam
.
getOrderBy
());
// 分页
int
start
=
(
int
)
((
pageParam
.
getPageNum
()
-
1
)
*
pageParam
.
getPageSize
());
sq
.
setStart
(
start
);
sq
.
setRows
(
pageParam
.
getPageSize
());
// 高亮
// 打开开关
sq
.
setHighlight
(
true
);
// 指定高亮域
sq
.
addHighlightField
(
"name"
);
// 设置前缀
sq
.
setHighlightSimplePre
(
"<span style='color:red'>"
);
// 设置后缀
sq
.
setHighlightSimplePost
(
"</span>"
);
try
{
QueryResponse
queryResponse
=
client
.
query
(
sq
);
SolrDocumentList
results
=
queryResponse
.
getResults
();
// 获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的
Map
<
String
,
Map
<
String
,
List
<
String
>>>
highlight
=
queryResponse
.
getHighlighting
();
List
<
SolrListVo
>
list
=
new
ArrayList
<
SolrListVo
>();
// 赋值
for
(
SolrDocument
result
:
results
)
{
SolrListVo
slv
=
new
SolrListVo
();
String
id
=
(
String
)
result
.
get
(
"id"
);
slv
.
setId
(
id
);
slv
.
setName
((
String
)
result
.
get
(
"name"
));
slv
.
setAuthor
((
String
)
result
.
get
(
"author"
));
slv
.
setPublishTime
((
String
)
result
.
get
(
"publishTime"
));
slv
.
setEdition
((
String
)
result
.
get
(
"edition"
));
if
((
String
)
result
.
get
(
"intro"
)!=
null
){
Document
d
=
Jsoup
.
parse
((
String
)
result
.
get
(
"intro"
));
slv
.
setIntro
(
d
.
text
());
}
else
{
slv
.
setIntro
((
String
)
result
.
get
(
"intro"
));
}
slv
.
setBookName
((
String
)
result
.
get
(
"bookName"
));
slv
.
setUpdateTime
((
Date
)
result
.
get
(
"updateTime"
));
slv
.
setStatus
((
Integer
)
result
.
get
(
"status"
));
slv
.
setResourceType
((
Integer
)
result
.
get
(
"resourceType"
));
slv
.
setCover
((
String
)
result
.
get
(
"cover"
));
slv
.
setCode
((
String
)
result
.
get
(
"code"
));
slv
.
setUploadTime
((
Date
)
result
.
get
(
"uploadTime"
));
//20190816新增展示字段
slv
.
setIsbn
((
String
)
result
.
get
(
"isbn"
));
slv
.
setDataSources
((
Integer
)
result
.
get
(
"dataSources"
));
slv
.
setProcessingState
((
Integer
)
result
.
get
(
"processingState"
));
if
(
result
.
get
(
"numberCopyright"
)
!=
null
)
{
slv
.
setNumberCopyright
(
result
.
get
(
"numberCopyright"
).
toString
());
}
slv
.
setIsPaintBook
((
Integer
)
result
.
get
(
"isPaintBook"
));
slv
.
setIsCooperationBook
((
Integer
)
result
.
get
(
"isCooperationBook"
));
if
(
result
.
get
(
"departmentId"
)
!=
null
)
{
slv
.
setDepartment
((
Integer
)
result
.
get
(
"departmentId"
));
}
List
<
String
>
applyUserIds
=(
List
)
result
.
get
(
"userId"
);
if
(
applyUserIds
!=
null
)
{
for
(
int
i
=
0
;
i
<
applyUserIds
.
size
();
i
++)
{
if
(
userid
.
equals
(
applyUserIds
.
get
(
i
)))
{
// 判断是否能下载
slv
.
setDownload
(
Integer
.
parseInt
(((
List
<
String
>)
result
.
get
(
"download"
)).
get
(
i
)));
}
}
}
// 判断是否能下载
if
(
slv
.
getDownload
()
==
null
||
slv
.
getDownload
()
!=
1
)
{
if
(
deptIdList
.
contains
(
slv
.
getDepartment
()))
{
slv
.
setDownload
(
1
);
}
else
{
slv
.
setDownload
(
0
);
}
}
// 高亮
Map
<
String
,
List
<
String
>>
map
=
highlight
.
get
(
result
.
get
(
"id"
));
List
<
String
>
namelist
=
map
.
get
(
"name"
);
if
(
namelist
!=
null
&&
namelist
.
size
()
>
0
)
{
slv
.
setName
(
namelist
.
get
(
0
));
}
list
.
add
(
slv
);
}
PageInfo
<
SolrListVo
>
page
=
new
PageInfo
<
SolrListVo
>();
page
.
setList
(
list
);
page
.
setPageNum
(
pageParam
.
getPageNum
());
page
.
setPageSize
(
pageParam
.
getPageSize
());
page
.
setTotal
(
results
.
getNumFound
());
return
CallBack
.
success
(
page
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
BaseException
(
"查询失败"
);
}
}
@ApiOperation
(
value
=
"全文更新索引"
,
notes
=
"全文更新索引"
)
@GetMapping
(
value
=
WorksRequestPath
.
ADDALL
)
public
CallBack
<
String
>
commandIndex
()
{
String
result
=
"0"
;
SolrQuery
sq
=
new
SolrQuery
();
sq
.
set
(
"qt"
,
"/dataimport"
);
sq
.
set
(
"command"
,
"full-import"
);
try
{
client
.
query
(
sq
);
client
.
commit
();
result
=
"1"
;
}
catch
(
Exception
e
)
{
throw
new
BaseException
(
"索引创建失败..."
);
}
return
CallBack
.
success
(
result
);
}
@ApiOperation
(
value
=
"增量更新索引"
,
notes
=
"增量更新索引"
)
@GetMapping
(
value
=
WorksRequestPath
.
ADDSOME
)
public
CallBack
<
String
>
updateDeltaIndex
()
{
String
result
=
"0"
;
SolrQuery
sq
=
new
SolrQuery
();
sq
.
set
(
"qt"
,
"/dataimport"
);
sq
.
set
(
"command"
,
"delta-import"
);
try
{
client
.
query
(
sq
);
client
.
commit
();
result
=
"1"
;
}
catch
(
Exception
e
)
{
throw
new
BaseException
(
"增量更新索引失败"
);
}
return
CallBack
.
success
(
result
);
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/mapper/apply/ApplyMapper.java
0 → 100644
浏览文件 @
a48c2806
/**
* @author niguanghui
* @date 2019年1月11日 下午3:44:46
*/
package
com
.
zrqx
.
works
.
bg
.
mapper
.
apply
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Select
;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.works.apply.Apply
;
/**
* @author niguanghui
* @date 2019年1月11日下午3:44:46
*/
@Mapper
public
interface
ApplyMapper
extends
BaseMapper
<
Apply
>{
/** 通过状态没有过期的数据*/
@Select
(
"<script>"
+
"select * from wor_apply "
+
"where id = #{id} and examineTime > DATE_SUB(NOW(), INTERVAL 2 DAY)"
+
"</script>"
)
List
<
Apply
>
selectValid
(
Integer
id
);
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/mapper/apply/ApplyResourceMapper.java
0 → 100644
浏览文件 @
a48c2806
/**
* @author niguanghui
* @date 2019年1月11日 下午4:45:48
*/
package
com
.
zrqx
.
works
.
bg
.
mapper
.
apply
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
com.zrqx.core.form.works.bg.apply.ApplyRecordForm
;
import
com.zrqx.core.form.works.bg.apply.ApplyResourceForm
;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.works.apply.ApplyResource
;
import
com.zrqx.core.util.PageParam
;
import
com.zrqx.core.vo.works.apply.ApplyRecordVo
;
/**
* @author niguanghui
* @date 2019年1月11日下午4:45:48
*/
@Mapper
public
interface
ApplyResourceMapper
extends
BaseMapper
<
ApplyResource
>{
/** 获得资源id和资源类型*/
@Select
(
"<script>"
+
"select resourceId,resourceType "
+
"from wor_apply_resource "
+
"where applyId = #{applyId} and resourceId is not null and resourceType is not null "
+
"</script>"
)
List
<
ApplyResourceForm
>
getIdAndType
(
Integer
applyId
);
/** 同一用户和资源,没有被驳回的资源状态和申请id*/
@Select
(
"<script>"
+
"select status,applyId from wor_apply_resource "
+
"where userId = #{userId} and resourceId = #{resourceId} and (status = 0 or status = 1)"
+
"</script>"
)
List
<
ApplyResource
>
selectReject
(
@Param
(
"userId"
)
String
userId
,
@Param
(
"resourceId"
)
String
resourceId
);
/** 获取下载记录列表*/
@Select
(
"<script>"
+
"select war.id,wa.userId as applyId,wa.applyTime,wa.examineId,wa.examineTime,"
+
"war.resourceName,file,war.download from wor_apply_resource war inner join wor_apply wa "
+
"on war.applyId=wa.id "
+
"<if test = '"
+
NOTBLANK
+
"(startTime)'>"
+
"and wa.applyTime >= concat(#{startTime}, ' 00:00:00' )"
+
"</if>"
+
"<if test = '"
+
NOTBLANK
+
"(endTime)'>"
+
"and wa.applyTime <= concat(#{endTime}, ' 23:59:59')"
+
"</if>"
+
"</script>"
)
List
<
ApplyRecordVo
>
queryByForm
(
ApplyRecordForm
arf
);
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/service/apply/ApplyResourceService.java
0 → 100644
浏览文件 @
a48c2806
/**
* @author niguanghui
* @date 2019年1月11日 下午4:46:21
*/
package
com
.
zrqx
.
works
.
bg
.
service
.
apply
;
import
java.util.List
;
import
org.springframework.data.domain.Page
;
import
com.zrqx.core.form.works.bg.apply.ApplyRecordForm
;
import
com.zrqx.core.model.works.apply.ApplyResource
;
import
com.zrqx.core.service.BaseService
;
import
com.zrqx.core.util.PageInfo
;
import
com.zrqx.core.util.PageParam
;
import
com.zrqx.core.vo.works.apply.ApplyRecordVo
;
import
com.zrqx.core.vo.works.apply.QueryResourceVo
;
/**
* @author niguanghui
* @date 2019年1月11日下午4:46:21
*/
public
interface
ApplyResourceService
extends
BaseService
<
ApplyResource
,
Integer
>
{
/** 查询申请Id下的申请资源-类型和名称 */
List
<
QueryResourceVo
>
page
(
Integer
applyId
);
/** 同一用户和资源,没有被驳回的资源状态和申请id*/
List
<
ApplyResource
>
selectReject
(
String
userId
,
String
resourceId
);
/** 获取下载记录列表*/
PageInfo
<
ApplyRecordVo
>
queryByForm
(
ApplyRecordForm
arf
,
PageParam
pageParam
);
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/service/apply/ApplyResourceServiceImpl.java
0 → 100644
浏览文件 @
a48c2806
/**
* @author niguanghui
* @date 2019年1月11日 下午4:46:57
*/
package
com
.
zrqx
.
works
.
bg
.
service
.
apply
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.solr.client.solrj.SolrClient
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.apache.solr.client.solrj.response.QueryResponse
;
import
org.apache.solr.common.SolrDocument
;
import
org.apache.solr.common.SolrDocumentList
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.form.works.bg.apply.ApplyRecordForm
;
import
com.zrqx.core.form.works.bg.apply.ApplyResourceForm
;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.works.apply.ApplyResource
;
import
com.zrqx.core.service.BaseServiceImpl
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.util.PageInfo
;
import
com.zrqx.core.util.PageParam
;
import
com.zrqx.core.vo.resource.animationlibrary.AnimationLibraryListVO
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
import
com.zrqx.core.vo.works.apply.ApplyRecordVo
;
import
com.zrqx.core.vo.works.apply.QueryResourceVo
;
import
com.zrqx.works.bg.client.sysuser.SysuserClient
;
import
com.zrqx.works.bg.mapper.apply.ApplyResourceMapper
;
/**
* @author niguanghui
* @date 2019年1月11日下午4:46:57
*/
@Service
public
class
ApplyResourceServiceImpl
extends
BaseServiceImpl
<
ApplyResource
,
Integer
>
implements
ApplyResourceService
{
@Autowired
private
SolrClient
client
;
@Autowired
private
ApplyResourceMapper
mapper
;
@Autowired
private
ApplyResourceService
resourceMapper
;
@Autowired
private
SysuserClient
sysuserClient
;
@Override
public
BaseMapper
<
ApplyResource
>
getMapper
()
{
return
mapper
;
}
/** 查询申请Id下的申请资源-类型和名称 */
@Override
public
List
<
QueryResourceVo
>
page
(
Integer
applyId
)
{
List
<
ApplyResourceForm
>
list
=
mapper
.
getIdAndType
(
applyId
);
List
<
QueryResourceVo
>
voList
=
new
ArrayList
<
QueryResourceVo
>();
for
(
ApplyResourceForm
ar
:
list
)
{
SolrQuery
sq
=
new
SolrQuery
();
StringBuffer
sb
=
new
StringBuffer
();
QueryResourceVo
arVo
=
new
QueryResourceVo
();
sb
.
append
(
"id:"
+
ar
.
getResourceId
());
sq
.
setQuery
(
sb
.
toString
());
sq
.
set
(
"sq"
,
"resourceType:"
+
ar
.
getResourceType
());
QueryResponse
queryResponse
;
try
{
queryResponse
=
client
.
query
(
sq
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
BaseException
(
7
,
"查询内容失败"
);
}
SolrDocumentList
results
=
queryResponse
.
getResults
();
for
(
SolrDocument
result
:
results
)
{
arVo
.
setName
((
String
)
result
.
get
(
"name"
));
arVo
.
setResourceType
((
Integer
)
result
.
get
(
"resourceType"
));
}
arVo
.
setResourceId
(
ar
.
getResourceId
());
voList
.
add
(
arVo
);
}
return
voList
;
}
/** 同一用户和资源,没有被驳回的资源状态和申请id */
@Override
public
List
<
ApplyResource
>
selectReject
(
String
userId
,
String
resourceId
)
{
return
mapper
.
selectReject
(
userId
,
resourceId
);
}
@Override
public
PageInfo
<
ApplyRecordVo
>
queryByForm
(
ApplyRecordForm
arf
,
PageParam
pageParam
)
{
pageParam
.
setOrderBy
(
"applyTime desc"
);
startPage
(
pageParam
);
List
<
ApplyRecordVo
>
arvList
=
mapper
.
queryByForm
(
arf
);
arvList
.
forEach
(
item
->{
UserVO
applyUser
=
sysuserClient
.
getUserById
(
item
.
getApplyId
()).
getData
();
UserVO
examineUser
=
sysuserClient
.
getUserById
(
item
.
getExamineId
()).
getData
();
if
(
applyUser
!=
null
)
{
item
.
setApplyName
(
applyUser
.
getUserName
());
if
(
applyUser
.
getDeptList
().
size
()>
0
)
{
item
.
setApplyDept
(
applyUser
.
getDeptList
().
get
(
0
).
getDeptName
());
}
}
if
(
examineUser
!=
null
)
{
item
.
setExamineName
(
examineUser
.
getUserName
());
if
(
examineUser
.
getDeptList
().
size
()>
0
)
{
item
.
setExamineDept
(
examineUser
.
getDeptList
().
get
(
0
).
getDeptName
());
}
}
});
return
new
PageInfo
<
ApplyRecordVo
>(
arvList
);
}
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/service/apply/ApplyService.java
0 → 100644
浏览文件 @
a48c2806
/**
* @author niguanghui
* @date 2019年1月11日 下午3:45:32
*/
package
com
.
zrqx
.
works
.
bg
.
service
.
apply
;
import
java.util.List
;
import
com.zrqx.core.model.works.apply.Apply
;
import
com.zrqx.core.service.BaseService
;
import
com.zrqx.core.vo.works.apply.ApplyDetailsVo
;
/**
* @author niguanghui
* @date 2019年1月11日下午3:45:32
*/
public
interface
ApplyService
extends
BaseService
<
Apply
,
Integer
>
{
/** 根据ID查看申请详情-申请id */
ApplyDetailsVo
selectById
(
Integer
oid
);
/** 是否可以下载资源 --1:可以*/
Integer
examine
(
String
resourceId
,
String
userId
);
/** 通过状态没有过期的数据*/
List
<
Apply
>
selectValid
(
Integer
applyId
);
}
com.zrqx.works/src/main/java/com/zrqx/works/bg/service/apply/ApplyServiceImpl.java
0 → 100644
浏览文件 @
a48c2806
/**
* @author niguanghui
* @date 2019年1月11日 下午3:46:16
*/
package
com
.
zrqx
.
works
.
bg
.
service
.
apply
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
org.apache.solr.client.solrj.SolrClient
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.apache.solr.client.solrj.response.QueryResponse
;
import
org.apache.solr.common.SolrDocument
;
import
org.apache.solr.common.SolrDocumentList
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
tk.mybatis.mapper.entity.Example.Criteria
;
import
com.zrqx.core.enums.works.apply.StatusEnum
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.works.apply.Apply
;
import
com.zrqx.core.model.works.apply.ApplyResource
;
import
com.zrqx.core.service.BaseServiceImpl
;
import
com.zrqx.core.util.CallBack
;
import
com.zrqx.core.vo.sysuser.bg.user.UserVO
;
import
com.zrqx.core.vo.works.apply.ApplyDetailsVo
;
import
com.zrqx.core.vo.works.apply.ApplyResourceVo
;
import
com.zrqx.core.vo.works.apply.ApplyVo
;
import
com.zrqx.core.vo.works.apply.ExamineVo
;
import
com.zrqx.works.bg.client.sysuser.SysuserClient
;
import
com.zrqx.works.bg.mapper.apply.ApplyMapper
;
/**
* @author niguanghui
* @date 2019年1月11日下午3:46:16
*/
@Service
public
class
ApplyServiceImpl
extends
BaseServiceImpl
<
Apply
,
Integer
>
implements
ApplyService
{
@Autowired
private
SolrClient
client
;
@Autowired
private
ApplyMapper
mapper
;
@Autowired
private
ApplyResourceService
resourceMapper
;
@Autowired
private
SysuserClient
sysuserClient
;
@Override
public
BaseMapper
<
Apply
>
getMapper
()
{
return
mapper
;
}
@Override
public
ApplyDetailsVo
selectById
(
Integer
oid
)
{
// 申请
ApplyDetailsVo
vo
=
new
ApplyDetailsVo
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Apply
apply
=
mapper
.
selectByPrimaryKey
(
oid
);
CallBack
<
UserVO
>
applyUser
=
sysuserClient
.
getUserById
(
apply
.
getUserId
());
ApplyVo
applyVo
=
new
ApplyVo
();
applyVo
.
setId
(
oid
);
applyVo
.
setTopImg
(
applyUser
.
getData
().
getTopImg
());
applyVo
.
setUserName
(
applyUser
.
getData
().
getUserName
());
applyVo
.
setDept
(
applyUser
.
getData
().
getDeptList
());
applyVo
.
setApplyTime
(
sdf
.
format
(
apply
.
getApplyTime
()));
applyVo
.
setReason
(
apply
.
getReason
());
applyVo
.
setStatus
(
apply
.
getStatus
());
vo
.
setApply
(
applyVo
);
if
(
apply
.
getStatus
()
==
StatusEnum
.
AUDITPASS
.
getCode
()
||
apply
.
getStatus
()
==
StatusEnum
.
NOT_AUDITPASS
.
getCode
())
{
String
examineId
=
apply
.
getExamineId
();
ExamineVo
examineVo
=
new
ExamineVo
();
if
(
null
!=
examineId
)
{
CallBack
<
UserVO
>
examineUser
=
sysuserClient
.
getUserById
(
examineId
);
if
(
examineUser
!=
null
&&
examineUser
.
getData
()
!=
null
)
{
examineVo
.
setUserName
(
examineUser
.
getData
().
getName
());
examineVo
.
setExamineTime
(
sdf
.
format
(
apply
.
getExamineTime
()));
examineVo
.
setDept
(
examineUser
.
getData
().
getDeptList
());
examineVo
.
setOpinion
(
apply
.
getOpinion
());
}
}
vo
.
setExamine
(
examineVo
);
}
// 资源
Criteria
rs
=
resourceMapper
.
createCriteria
();
rs
.
andEqualTo
(
"applyId"
,
oid
);
List
<
ApplyResource
>
list
=
resourceMapper
.
selectByCriteria
();
List
<
ApplyResourceVo
>
voList
=
new
ArrayList
<
ApplyResourceVo
>();
for
(
ApplyResource
ar
:
list
)
{
SolrQuery
sq
=
new
SolrQuery
();
StringBuffer
sb
=
new
StringBuffer
();
ApplyResourceVo
arVo
=
new
ApplyResourceVo
();
sb
.
append
(
"id:"
+
ar
.
getResourceId
());
sq
.
setQuery
(
sb
.
toString
());
sq
.
set
(
"sq"
,
"resourceType:"
+
ar
.
getResourceType
());
QueryResponse
queryResponse
;
try
{
queryResponse
=
client
.
query
(
sq
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
BaseException
(
7
,
"查询内容失败"
);
}
SolrDocumentList
results
=
queryResponse
.
getResults
();
for
(
SolrDocument
result
:
results
)
{
arVo
.
setName
((
String
)
result
.
get
(
"name"
));
arVo
.
setResourceType
((
Integer
)
result
.
get
(
"resourceType"
));
arVo
.
setIsbn
((
String
)
result
.
get
(
"isbn"
));
arVo
.
setEditionNum
((
String
)
result
.
get
(
"edition"
));
arVo
.
setUploadTime
((
Date
)
result
.
get
(
"uploadTime"
));
arVo
.
setResourceId
((
String
)
result
.
get
(
"id"
));
arVo
.
setFile
(
apply
.
getFile
());
}
voList
.
add
(
arVo
);
}
vo
.
setList
(
voList
);
return
vo
;
}
@Override
public
Integer
examine
(
String
resourceId
,
String
userId
)
{
Integer
status
=
0
;
Criteria
cr
=
resourceMapper
.
createCriteria
();
cr
.
andEqualTo
(
"resourceId"
,
resourceId
);
cr
.
andEqualTo
(
"userId"
,
userId
);
List
<
ApplyResource
>
arList
=
resourceMapper
.
selectByCriteria
();
if
(
null
!=
arList
&&
!
arList
.
isEmpty
())
{
for
(
ApplyResource
ar
:
arList
)
{
if
(
ar
.
getStatus
()
==
StatusEnum
.
AUDITPASS
.
getCode
())
{
List
<
Apply
>
eList
=
mapper
.
selectValid
(
ar
.
getApplyId
());
if
(
null
!=
eList
&&
!
eList
.
isEmpty
())
{
status
=
StatusEnum
.
AUDITPASS
.
getCode
();
}
}
}
}
return
status
;
}
@Override
public
List
<
Apply
>
selectValid
(
Integer
id
)
{
return
mapper
.
selectValid
(
id
);
}
}
com.zrqx.works/src/main/java/com/zrqx/works/commons/Redis.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
;
import
java.io.IOException
;
import
java.util.Enumeration
;
import
java.util.concurrent.TimeUnit
;
import
javax.servlet.http.HttpServletRequest
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.connection.jedis.JedisConnectionFactory
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
com.zrqx.core.enums.ResponseCodeEnum
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.model.sysuser.user.User
;
import
com.zrqx.core.util.JsonUtil.JsonUtil
;
/**
* Redis消息管理 ,调用时不能用多线程调用
* @author lpf
* @date 2018年6月5日上午10:03:01
*/
@Component
public
class
Redis
{
private
static
final
String
FG_TOKEN
=
"y-token"
;
private
static
final
String
BG_TOKEN
=
"x-token"
;
@Autowired
StringRedisTemplate
stringRedisTemplate
;
public
void
updateDatebase
(
int
num
)
{
JedisConnectionFactory
jedisConnectionFactory
=
(
JedisConnectionFactory
)
stringRedisTemplate
.
getConnectionFactory
();
jedisConnectionFactory
.
setDatabase
(
num
);
stringRedisTemplate
.
setConnectionFactory
(
jedisConnectionFactory
);
}
/**
* 获取后台登录用户信息
*
* @return
*/
public
User
getUser
()
{
return
getInfoObjectRedis
(
getToken
(
BG_TOKEN
),
User
.
class
);
}
public
String
fmtObj
(
Object
obj
)
throws
IOException
{
return
obj
instanceof
String
?
obj
.
toString
():
JsonUtil
.
bean2Json
(
obj
);
}
/**
* 添加到redis
* @param token
* Key
* @param obj
* Value
* @param timeout
* 过期时间
* @param unit
* TimeUnitEnum 时间格式
* @throws IOException
*/
public
void
set
(
String
token
,
Object
obj
,
long
timeout
,
TimeUnit
unit
)
throws
IOException
{
stringRedisTemplate
.
opsForValue
().
set
(
token
,
fmtObj
(
obj
),
timeout
,
unit
);
}
public
void
set
(
String
token
,
Object
obj
,
long
timeout
)
throws
IOException
{
stringRedisTemplate
.
opsForValue
().
set
(
token
,
fmtObj
(
obj
),
timeout
,
TimeUnit
.
SECONDS
);
}
/**
* 添加到redis
* @param token Key
* @param obj Value
* @throws IOException
*/
public
void
set
(
String
token
,
Object
obj
)
throws
IOException
{
stringRedisTemplate
.
opsForValue
().
set
(
token
,
fmtObj
(
obj
));
}
/**
* 根据key删除redis中的数据
* @param key
* @throws IOException
*/
public
void
delete
(
String
key
)
throws
IOException
{
stringRedisTemplate
.
delete
(
key
);
}
/**
* 根据key查询redis中的数据
*
* @param token
* @return
*/
public
String
get
(
String
token
)
{
return
stringRedisTemplate
.
opsForValue
().
get
(
token
);
}
public
<
T
>
T
getInfoObjectRedis
(
String
key
,
Class
<
T
>
objClass
){
try
{
String
userInfo
=
get
(
key
);
if
(
StringUtils
.
isEmpty
(
userInfo
))
{
throw
new
BaseException
(
ResponseCodeEnum
.
NO_LOGIN
);
}
return
JsonUtil
.
json2Bean
(
userInfo
,
objClass
);
}
catch
(
Exception
e
)
{
throw
new
BaseException
(
"获取用户信息错误!"
+
e
.
getMessage
());
}
}
public
static
String
getToken
(
String
tokenName
){
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
Enumeration
<
String
>
headerNames
=
request
.
getHeaderNames
();
String
token
=
null
;
while
(
headerNames
.
hasMoreElements
())
{
String
key
=
(
String
)
headerNames
.
nextElement
();
//TODO--前台获取token
if
(
key
.
toLowerCase
().
equals
(
tokenName
)){
token
=
request
.
getHeader
(
key
);
}
}
if
(
token
==
null
)
{
throw
new
BaseException
(
ResponseCodeEnum
.
NO_LOGIN
);
}
return
token
;
}
public
static
String
getBgToken
(){
return
getToken
(
BG_TOKEN
);
}
public
static
String
getFgToken
(){
return
getToken
(
FG_TOKEN
);
}
}
com.zrqx.works/src/main/java/com/zrqx/works/commons/config/Swagger2Config.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
config
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.bind.annotation.CrossOrigin
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.ParameterBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.service.Contact
;
import
springfox.documentation.service.Parameter
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
/**
* 访问地址
* http://ip:port/swagger-ui.html
最常用的5个注解
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
其它若干
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiClass
@ApiError
@ApiErrors
@ApiParamImplicit
@ApiParamsImplicit
*/
@EnableSwagger2
@Configuration
public
class
Swagger2Config
{
@Bean
public
Docket
createRestApi
()
{
//添加head参数start
ParameterBuilder
tokenPar
=
new
ParameterBuilder
();
List
<
Parameter
>
pars
=
new
ArrayList
<
Parameter
>();
tokenPar
.
name
(
"y-token"
).
description
(
"y令牌"
).
modelRef
(
new
ModelRef
(
"string"
)).
parameterType
(
"header"
).
required
(
false
).
build
();
pars
.
add
(
tokenPar
.
build
());
tokenPar
.
name
(
"x-token"
).
description
(
"x令牌"
).
modelRef
(
new
ModelRef
(
"string"
)).
parameterType
(
"header"
).
required
(
false
).
build
();
pars
.
add
(
tokenPar
.
build
());
//添加head参数end
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
select
()
//为当前包路径
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"com.zrqx"
))
.
paths
(
PathSelectors
.
any
())
.
build
()
.
globalOperationParameters
(
pars
);
}
//构建 api文档的详细信息函数
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
//页面标题
.
title
(
"sysUser 测试使用 Swagger2 构建RESTful API"
)
//描述
.
description
(
"sysUser服务 API 描述"
)
//创建人
.
contact
(
new
Contact
(
"陈新昌"
,
"www.baidu.com"
,
"cxinchang@126.com"
))
//版本号
.
version
(
"3.0"
)
.
build
();
}
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/commons/config/WebAppConfig.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
com.zrqx.core.constant.sysuser.SysUserRequestPath
;
import
com.zrqx.works.commons.interceptor.InterceptorConfig
;
@Configuration
public
class
WebAppConfig
extends
WebMvcConfigurerAdapter
{
/**
* 跨域支持
*/
@Override
public
void
addCorsMappings
(
CorsRegistry
registry
)
{
registry
.
addMapping
(
"/**"
).
allowedOrigins
(
"*"
).
allowedMethods
(
"*"
).
allowCredentials
(
false
).
maxAge
(
3600
);
}
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
//注册自定义拦截器,添加拦截路径和排除拦截路径
registry
.
addInterceptor
(
new
InterceptorConfig
()).
addPathPatterns
(
SysUserRequestPath
.
BG
+
"/**"
)
.
excludePathPatterns
(
SysUserRequestPath
.
BG
+
SysUserRequestPath
.
PERMISSIONS
+
SysUserRequestPath
.
LOGIN
);
}
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/commons/interceptor/CustomExceptionHandler.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
interceptor
;
import
java.util.Date
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.log4j.Logger
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.validation.BindException
;
import
org.springframework.validation.ObjectError
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.util.CallBack
;
/**
*controller 异常处理
* @ClassName: CustomExceptionHandler
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 杨振广
* @date 2016-7-14 上午9:45:40
*
*/
@ControllerAdvice
public
class
CustomExceptionHandler
{
private
static
Logger
logger
=
Logger
.
getLogger
(
CustomExceptionHandler
.
class
);
@ExceptionHandler
(
Exception
.
class
)
@ResponseStatus
(
HttpStatus
.
OK
)
@ResponseBody
public
Object
handlerException
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Exception
e
){
e
.
printStackTrace
();
StackTraceElement
[]
s
=
e
.
getStackTrace
();
StringBuffer
stes
=
new
StringBuffer
(
s
.
length
*
2
);
for
(
StackTraceElement
stackTraceElement
:
s
)
{
stes
.
append
(
stackTraceElement
.
toString
());
stes
.
append
(
"<br/>"
);
}
String
info
=
"异常时间:"
+
new
Date
().
toLocaleString
()+
"\n请求地址:"
+
request
.
getRequestURI
()+
"\n参数:"
+
request
.
getQueryString
()+
"\n"
+
e
.
getMessage
();
logger
.
error
(
info
+
"\n"
+
stes
.
toString
());
request
.
setAttribute
(
"error"
,
info
);
request
.
setAttribute
(
"errorInfo"
,
e
.
getStackTrace
());
return
CallBack
.
exception
(
e
.
getMessage
());
}
/**
* 参数验证异常处理
* @Title: handlerException
* @Description:
* @param request
* @param response
* @param e BindException
* @return
* @author lpf
* @date: 2018年5月9日 下午5:01:58
*/
@ExceptionHandler
(
BindException
.
class
)
@ResponseStatus
(
HttpStatus
.
OK
)
@ResponseBody
public
Object
handlerException
(
HttpServletRequest
request
,
HttpServletResponse
response
,
BindException
e
)
{
List
<
ObjectError
>
errors
=
e
.
getAllErrors
();
StringBuffer
msg
=
new
StringBuffer
();
for
(
ObjectError
objectError
:
errors
)
{
msg
.
append
(
objectError
.
getDefaultMessage
());
msg
.
append
(
","
);
}
msg
.
deleteCharAt
(
msg
.
length
()-
1
);
return
CallBack
.
validate
(
msg
.
toString
());
}
/**
* 执行异常处理
* @Description:
* @param e BaseException
* @return
* @date: 2018年5月9日 下午5:01:58
*
*/
@ExceptionHandler
(
BaseException
.
class
)
@ResponseStatus
(
HttpStatus
.
OK
)
@ResponseBody
public
Object
myException
(
BaseException
e
)
{
return
CallBack
.
exception
(
e
.
getCode
(),
null
,
e
.
getMessage
());
}
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/commons/interceptor/FeignHeaderInterceptor.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
interceptor
;
import
feign.RequestInterceptor
;
import
feign.RequestTemplate
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Feign配置
* 使用FeignClient进行服务间调用,传递headers信息
* @author lw
* @date 2018年10月17日下午2:48:44
*/
@Component
@Configuration
public
class
FeignHeaderInterceptor
implements
RequestInterceptor
{
@Override
public
void
apply
(
RequestTemplate
requestTemplate
)
{
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
if
(
attributes
!=
null
)
{
HttpServletRequest
request
=
attributes
.
getRequest
();
// 前台token
if
(
request
.
getHeader
(
"Y-Token"
)
!=
null
){
requestTemplate
.
header
(
"Y-Token"
,
request
.
getHeader
(
"Y-Token"
));
}
// 后台token
if
(
request
.
getHeader
(
"X-Token"
)
!=
null
){
requestTemplate
.
header
(
"X-Token"
,
request
.
getHeader
(
"X-Token"
));
}
}
}
}
com.zrqx.works/src/main/java/com/zrqx/works/commons/interceptor/InterceptorConfig.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
interceptor
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
public
class
InterceptorConfig
implements
HandlerInterceptor
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
InterceptorConfig
.
class
);
/**
* 进入controller层之前拦截请求
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @return
* @throws Exception
*/
@Override
public
boolean
preHandle
(
HttpServletRequest
httpServletRequest
,
HttpServletResponse
httpServletResponse
,
Object
o
)
throws
Exception
{
HttpSession
session
=
httpServletRequest
.
getSession
();
if
(
session
.
getAttribute
(
"user"
)
!=
null
){
return
true
;
}
else
{
// PrintWriter printWriter = httpServletResponse.getWriter();
// printWriter.write(JsonUtil.bean2Json(CallBack.create(ResponseCodeEnum.NO_LOGIN)));
// return false;
return
true
;
}
}
@Override
public
void
postHandle
(
HttpServletRequest
httpServletRequest
,
HttpServletResponse
httpServletResponse
,
Object
o
,
ModelAndView
modelAndView
)
throws
Exception
{
log
.
info
(
"--------------处理请求完成后视图渲染之前的处理操作---------------"
);
}
@Override
public
void
afterCompletion
(
HttpServletRequest
httpServletRequest
,
HttpServletResponse
httpServletResponse
,
Object
o
,
Exception
e
)
throws
Exception
{
log
.
info
(
"---------------视图渲染之后的操作--------------------------"
);
}
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/commons/interceptor/LogAspect.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
interceptor
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.model.sysuser.log.Log
;
import
com.zrqx.core.util.LogUtils
;
import
com.zrqx.works.bg.client.sysuser.SysuserClient
;
import
com.zrqx.works.commons.Redis
;
import
io.swagger.annotations.ApiOperation
;
@Aspect
@Component
public
class
LogAspect
{
@Autowired
private
SysuserClient
logService
;
@Autowired
private
Redis
redis
;
// 环绕通知,环绕增强,相当于MethodInterceptor
@Around
(
value
=
"execution(* com.zrqx.works.bg.controller..*(..)) and @annotation(annotation) and @annotation(org.springframework.web.bind.annotation.PostMapping)"
,
argNames
=
"annotation"
)
public
Object
arround
(
ProceedingJoinPoint
pjp
,
ApiOperation
annotation
)
throws
Throwable
{
Log
log
=
LogUtils
.
getLog
(
pjp
,
annotation
,
this
.
getClass
(),
redis
.
getUser
().
getName
(),
redis
.
getUser
().
getIp
());
logService
.
saveLog
(
log
);
return
log
.
getResult
();
}
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/commons/interceptor/TxAdviceInterceptor.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
interceptor
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Map
;
import
javax.sql.DataSource
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.springframework.aop.Advisor
;
import
org.springframework.aop.aspectj.AspectJExpressionPointcut
;
import
org.springframework.aop.support.DefaultPointcutAdvisor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.TransactionDefinition
;
import
org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource
;
import
org.springframework.transaction.interceptor.RollbackRuleAttribute
;
import
org.springframework.transaction.interceptor.RuleBasedTransactionAttribute
;
import
org.springframework.transaction.interceptor.TransactionAttribute
;
import
org.springframework.transaction.interceptor.TransactionInterceptor
;
/**
* Created by guozp on 2017/8/28.
*/
@Aspect
//@Component 事务依然生效
@Configuration
public
class
TxAdviceInterceptor
{
private
static
final
int
TX_METHOD_TIMEOUT
=
5
;
private
static
final
String
AOP_POINTCUT_EXPRESSION
=
"execution(* com.zrqx..service..*Impl.*(..))"
;
@Autowired
private
PlatformTransactionManager
transactionManager
;
// 其中 dataSource 框架会自动为我们注入
@Bean
(
name
=
"transactionManager"
)
public
PlatformTransactionManager
transactionManager
(
DataSource
dataSource
)
{
return
new
DataSourceTransactionManager
(
dataSource
);
}
@Bean
public
TransactionInterceptor
txAdvice
()
{
NameMatchTransactionAttributeSource
source
=
new
NameMatchTransactionAttributeSource
();
/*只读事务,不做更新操作*/
RuleBasedTransactionAttribute
readOnlyTx
=
new
RuleBasedTransactionAttribute
();
readOnlyTx
.
setReadOnly
(
true
);
readOnlyTx
.
setPropagationBehavior
(
TransactionDefinition
.
PROPAGATION_REQUIRED
);
/*当前存在事务就使用当前事务,当前不存在事务就创建一个新的事务*/
RuleBasedTransactionAttribute
requiredTx
=
new
RuleBasedTransactionAttribute
();
requiredTx
.
setRollbackRules
(
Collections
.
singletonList
(
new
RollbackRuleAttribute
(
Exception
.
class
)));
requiredTx
.
setPropagationBehavior
(
TransactionDefinition
.
PROPAGATION_REQUIRED
);
requiredTx
.
setTimeout
(
TX_METHOD_TIMEOUT
);
Map
<
String
,
TransactionAttribute
>
txMap
=
new
HashMap
<>();
txMap
.
put
(
"add*"
,
requiredTx
);
txMap
.
put
(
"save*"
,
requiredTx
);
txMap
.
put
(
"insert*"
,
requiredTx
);
txMap
.
put
(
"update*"
,
requiredTx
);
txMap
.
put
(
"delete*"
,
requiredTx
);
txMap
.
put
(
"get*"
,
readOnlyTx
);
txMap
.
put
(
"query*"
,
readOnlyTx
);
source
.
setNameMap
(
txMap
);
TransactionInterceptor
txAdvice
=
new
TransactionInterceptor
(
transactionManager
,
source
);
return
txAdvice
;
}
@Bean
public
Advisor
txAdviceAdvisor
()
{
AspectJExpressionPointcut
pointcut
=
new
AspectJExpressionPointcut
();
pointcut
.
setExpression
(
AOP_POINTCUT_EXPRESSION
);
return
new
DefaultPointcutAdvisor
(
pointcut
,
txAdvice
());
//return new DefaultPointcutAdvisor(pointcut, txAdvice);
}
}
\ No newline at end of file
com.zrqx.works/src/main/java/com/zrqx/works/commons/util/Copy.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
util
;
import
java.util.List
;
import
java.util.function.Predicate
;
import
java.util.stream.Collectors
;
import
org.springframework.beans.BeanUtils
;
import
com.zrqx.core.exception.BaseException
;
public
class
Copy
{
/**
* 批量复制对象
*
* @param list
* @param clazz
* @return
*/
public
static
<
VO
,
R
>
List
<
VO
>
copyList
(
List
<
R
>
list
,
Class
<
VO
>
clazz
)
{
return
list
.
stream
().
map
(
obj
->
{
VO
vo
=
null
;
try
{
vo
=
clazz
.
newInstance
();
BeanUtils
.
copyProperties
(
obj
,
vo
);
}
catch
(
InstantiationException
|
IllegalAccessException
e
)
{
e
.
printStackTrace
();
throw
new
BaseException
(
"批量复制对象时创建对象失败。"
);
}
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
/**
* 过滤批量复制对象
*
* @param list
* @param clazz
* @param filter
* @return
*/
public
static
<
VO
,
R
>
List
<
VO
>
copyList
(
List
<
R
>
list
,
Class
<
VO
>
clazz
,
Predicate
<
R
>
filter
)
{
return
list
.
stream
().
filter
(
filter
).
map
(
obj
->
{
VO
vo
=
null
;
try
{
vo
=
clazz
.
newInstance
();
BeanUtils
.
copyProperties
(
obj
,
vo
);
}
catch
(
InstantiationException
|
IllegalAccessException
e
)
{
e
.
printStackTrace
();
throw
new
BaseException
(
"批量复制对象时创建对象失败。"
);
}
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
}
com.zrqx.works/src/main/java/com/zrqx/works/commons/util/MapSort.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
util
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.stream.Stream
;
public
class
MapSort
{
public
static
<
K
,
V
extends
Comparable
<?
super
V
>>
Map
<
K
,
V
>
sortByValue
(
Map
<
K
,
V
>
map
,
boolean
asc
)
{
Map
<
K
,
V
>
result
=
new
LinkedHashMap
<>();
Stream
<
Entry
<
K
,
V
>>
stream
=
map
.
entrySet
().
stream
();
if
(
asc
)
// 升序
{
// stream.sorted(Comparator.comparing(e -> e.getValue()))
stream
.
sorted
(
Map
.
Entry
.<
K
,
V
>
comparingByValue
())
.
forEachOrdered
(
e
->
result
.
put
(
e
.
getKey
(),
e
.
getValue
()));
}
else
// 降序
{
// stream.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
stream
.
sorted
(
Map
.
Entry
.<
K
,
V
>
comparingByValue
().
reversed
()).
forEachOrdered
(
e
->
result
.
put
(
e
.
getKey
(),
e
.
getValue
()));
}
return
result
;
}
public
static
<
K
extends
Comparable
<?
super
K
>,
V
>
Map
<
K
,
V
>
sortByKey
(
Map
<
K
,
V
>
map
,
boolean
asc
)
{
Map
<
K
,
V
>
result
=
new
LinkedHashMap
<>();
Stream
<
Entry
<
K
,
V
>>
stream
=
map
.
entrySet
().
stream
();
if
(
asc
)
{
stream
.
sorted
(
Map
.
Entry
.<
K
,
V
>
comparingByKey
()).
forEachOrdered
(
e
->
result
.
put
(
e
.
getKey
(),
e
.
getValue
()));
}
else
{
stream
.
sorted
(
Map
.
Entry
.<
K
,
V
>
comparingByKey
().
reversed
()).
forEachOrdered
(
e
->
result
.
put
(
e
.
getKey
(),
e
.
getValue
()));
}
return
result
;
}
}
com.zrqx.works/src/main/java/com/zrqx/works/commons/util/SysuserUtil.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
util
;
public
class
SysuserUtil
{
/**
* 获取当前登录的系统管理员账号
*/
public
static
String
getSysuserAccount
(){
return
"test"
;
}
/**
* 获取当前登录的系统管理员的ip
*/
public
static
String
getSysuserIP
(){
return
"127.0.0.1"
;
}
}
com.zrqx.works/src/main/java/com/zrqx/works/commons/util/Task.java
0 → 100644
浏览文件 @
a48c2806
package
com
.
zrqx
.
works
.
commons
.
util
;
import
org.apache.solr.client.solrj.SolrClient
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
com.zrqx.core.exception.BaseException
;
@Component
public
class
Task
{
@Autowired
private
SolrClient
client
;
//全文更新索引
@Scheduled
(
cron
=
"0 0 1 * * ?"
)
public
void
commandIndex
()
{
SolrQuery
sq
=
new
SolrQuery
();
sq
.
set
(
"qt"
,
"/dataimport"
);
sq
.
set
(
"command"
,
"full-import"
);
try
{
client
.
query
(
sq
);
client
.
commit
();
System
.
out
.
println
(
"全文索引更新成功"
);
}
catch
(
Exception
e
)
{
throw
new
BaseException
(
"索引创建失败..."
);
}
}
//增量更新索引
@Scheduled
(
cron
=
"0 0 */1 * * ?"
)
public
void
updateDeltaIndex
()
{
SolrQuery
sq
=
new
SolrQuery
();
sq
.
set
(
"qt"
,
"/dataimport"
);
sq
.
set
(
"command"
,
"delta-import"
);
try
{
client
.
query
(
sq
);
client
.
commit
();
System
.
out
.
println
(
"增量索引更新成功"
);
}
catch
(
Exception
e
)
{
throw
new
BaseException
(
"增量更新索引失败"
);
}
}
}
com.zrqx.works/src/main/resources/application.yml
0 → 100644
浏览文件 @
a48c2806
security
:
sessions
:
always
#always设置保存用户状态(内存可能会被占满) stateless设置不保存用户状态
basic
:
enabled
:
false
#开启认证
user
:
name
:
user
password
:
123456
feign
:
hystrix
:
enabled
:
true
logging
:
level
:
com.zrqx.works.bg.mapper
:
DEBUG
mybatis
:
type-aliases-package
:
com.zrqx.core.model
mapper
:
mappers
:
-
com.zrqx.core.mapper.BaseMapper
not-empty
:
false
i-d-e-n-t-i-t-y
:
MYSQL
style
:
normal
b-e-f-o-r-e
:
true
pagehelper
:
helperDialect
:
mysql
reasonable
:
true
supportMethodsArguments
:
true
params
:
count=countSql
spring
:
jackson
:
date-format
:
yyyy-MM-dd HH:mm:ss
time-zone
:
GMT+8
http
:
multipart
:
maxFileSize
:
20Mb
maxRequestSize
:
20Mb
ribbon
:
connectionRequestTimeout
:
600000
ConnectTimeout
:
600000
ReadTimeout
:
600000
hystrix
:
command
:
default
:
execution
:
isolation
:
strategy
:
SEMAPHORE
thread
:
timeoutInMilliseconds
:
1200000
\ No newline at end of file
com.zrqx.works/src/main/resources/bootstrap.yml
0 → 100644
浏览文件 @
a48c2806
server
:
port
:
8314
spring
:
cloud
:
config
:
uri
:
http://localhost:8318
#配置中心地址
name
:
works
profile
:
prod
label
:
master
data
:
solr
:
#host: http://admin:admin@192.168.0.210:8983/solr/hxnrgl
host
:
http://admin:admin@192.168.2.234:8983/solr/hxnrgl
\ No newline at end of file
com.zrqx.works/src/main/resources/logback-custom.xml
0 → 100644
浏览文件 @
a48c2806
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"http://www.padual.com/java/logback.xsd"
debug=
"false"
scan=
"true"
scanPeriod=
"30 second"
>
<!--读取配置中心的属性-->
<springProperty
scope=
"context"
name=
"name"
source=
"spring.application.name"
/>
<property
name=
"ROOT"
value=
"/opt/logs/nrgl/${name}/"
/>
<property
name=
"FILESIZE"
value=
"50MB"
/>
<property
name=
"MAXHISTORY"
value=
"100"
/>
<property
name=
"DATETIME"
value=
"yyyy-MM-dd HH:mm:ss"
/>
<!-- 控制台打印 -->
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
charset=
"utf-8"
>
<pattern>
[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
</appender>
<!-- ERROR 输入到文件,按日期和文件大小 -->
<appender
name=
"ERROR"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder
charset=
"utf-8"
>
<pattern>
[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
ERROR
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${ROOT}%d/error.%i.log
</fileNamePattern>
<maxHistory>
${MAXHISTORY}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${FILESIZE}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- WARN 输入到文件,按日期和文件大小 -->
<appender
name=
"WARN"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder
charset=
"utf-8"
>
<pattern>
[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
WARN
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${ROOT}%d/warn.%i.log
</fileNamePattern>
<maxHistory>
${MAXHISTORY}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${FILESIZE}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- INFO 输入到文件,按日期和文件大小 -->
<appender
name=
"INFO"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder
charset=
"utf-8"
>
<pattern>
[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
INFO
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${ROOT}%d/info.%i.log
</fileNamePattern>
<maxHistory>
${MAXHISTORY}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${FILESIZE}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- DEBUG 输入到文件,按日期和文件大小 -->
<appender
name=
"DEBUG"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder
charset=
"utf-8"
>
<pattern>
[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
DEBUG
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${ROOT}%d/debug.%i.log
</fileNamePattern>
<maxHistory>
${MAXHISTORY}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${FILESIZE}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- TRACE 输入到文件,按日期和文件大小 -->
<appender
name=
"TRACE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder
charset=
"utf-8"
>
<pattern>
[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
</pattern>
</encoder>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
TRACE
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${ROOT}%d/trace.%i.log
</fileNamePattern>
<maxHistory>
${MAXHISTORY}
</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
${FILESIZE}
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- SQL相关日志输出-->
<logger
name=
"org.mybatis.spring"
level=
"DEBUG"
additivity=
"true"
/>
<logger
name=
"com.zrqx.works"
level=
"DEBUG"
additivity=
"true"
/>
<!-- Logger 根目录 -->
<root
level=
"INFO"
>
<appender-ref
ref=
"STDOUT"
/>
<appender-ref
ref=
"DEBUG"
/>
<appender-ref
ref=
"ERROR"
/>
<appender-ref
ref=
"WARN"
/>
<appender-ref
ref=
"INFO"
/>
<appender-ref
ref=
"TRACE"
/>
</root>
</configuration>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论