Commit ef2c6ac7 authored by 张智彪's avatar 张智彪

Merge branch 'lwby_advert_1' into 'master'

Lwby advert 1

See merge request !1
parents 928edd43 cc009a86
# lwby_ad_data
蓝湾博阅
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
2020-05-27 20:11:25,767 [main] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:26,001 [main] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:26,024 [localhost-startStop-1] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:53,862 [http-nio-8091-exec-7] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:54,069 [http-nio-8091-exec-1] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:54,070 [http-nio-8091-exec-10] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:54,073 [http-nio-8091-exec-5] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:54,074 [http-nio-8091-exec-4] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:11:54,075 [http-nio-8091-exec-9] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:09,313 [main] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:09,452 [main] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:09,474 [localhost-startStop-1] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:36,703 [http-nio-8091-exec-1] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:36,856 [http-nio-8091-exec-3] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:36,857 [http-nio-8091-exec-4] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:36,861 [http-nio-8091-exec-5] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:36,862 [http-nio-8091-exec-8] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-05-27 20:32:36,863 [http-nio-8091-exec-6] ERROR o.a.c.core.AprLifecycleListener -[DirectJDKLog.java:180]- An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
This diff is collapsed.
<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>
<groupId>com.boot</groupId>
<artifactId>lwby_copyright_book_data</artifactId>
<version>1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
<swagger.version>2.8.0</swagger.version>
<google.guava>23.0</google.guava>
<fastjson.version>1.2.47</fastjson.version>
<druid.version>1.1.9</druid.version>
<poi.version>3.17</poi.version>
<jwt.version>0.9.0</jwt.version>
<mybatis.version>1.3.2</mybatis.version>
</properties>
<dependencies>
<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-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${google.guava}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>
</dependency> -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>-->
<!--改为stater的方式-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.boot.security.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类
*
* @author maliang
*
*/
@SpringBootApplication
public class SecurityApplication {
public static void main(String[] args) {
SpringApplication.run(SecurityApplication.class, args);
}
}
package com.boot.security.server.advice;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.UnsatisfiedServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import com.boot.security.server.dto.ResponseInfo;
/**
* springmvc异常处理
*
* @author maliang
*
*/
@RestControllerAdvice
public class ExceptionHandlerAdvice {
private static final Logger log = LoggerFactory.getLogger("adminLogger");
@ExceptionHandler({ IllegalArgumentException.class })
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseInfo badRequestException(IllegalArgumentException exception) {
return new ResponseInfo(HttpStatus.BAD_REQUEST.value() + "", exception.getMessage());
}
@ExceptionHandler({ AccessDeniedException.class })
@ResponseStatus(HttpStatus.FORBIDDEN)
public ResponseInfo badRequestException(AccessDeniedException exception) {
return new ResponseInfo(HttpStatus.FORBIDDEN.value() + "", exception.getMessage());
}
@ExceptionHandler({ MissingServletRequestParameterException.class, HttpMessageNotReadableException.class,
UnsatisfiedServletRequestParameterException.class, MethodArgumentTypeMismatchException.class })
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseInfo badRequestException(Exception exception) {
return new ResponseInfo(HttpStatus.BAD_REQUEST.value() + "", exception.getMessage());
}
@ExceptionHandler(Throwable.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseInfo exception(Throwable throwable) {
log.error("系统异常", throwable);
return new ResponseInfo(HttpStatus.INTERNAL_SERVER_ERROR.value() + "", throwable.getMessage());
}
}
package com.boot.security.server.advice;
import com.boot.security.server.utils.UserUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.model.SysLogs;
import com.boot.security.server.service.SysLogService;
import io.swagger.annotations.ApiOperation;
/**
* 统一日志处理
*
* @author 398005446@qq.com
*
* 2017年8月19日
*/
@Aspect
@Component
public class LogAdvice {
@Autowired
private SysLogService logService;
@Around(value = "@annotation(com.boot.security.server.annotation.LogAnnotation)")
public Object logSave(ProceedingJoinPoint joinPoint) throws Throwable {
SysLogs sysLogs = new SysLogs();
sysLogs.setUser(UserUtil.getLoginUser()); // 设置当前登录用户
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
String module = null;
LogAnnotation logAnnotation = methodSignature.getMethod().getDeclaredAnnotation(LogAnnotation.class);
module = logAnnotation.module();
if (StringUtils.isEmpty(module)) {
ApiOperation apiOperation = methodSignature.getMethod().getDeclaredAnnotation(ApiOperation.class);
if (apiOperation != null) {
module = apiOperation.value();
}
}
if (StringUtils.isEmpty(module)) {
throw new RuntimeException("没有指定日志module");
}
sysLogs.setModule(module);
try {
Object object = joinPoint.proceed();
sysLogs.setFlag(true);
return object;
} catch (Exception e) {
sysLogs.setFlag(false);
sysLogs.setRemark(e.getMessage());
throw e;
} finally {
if (sysLogs.getUser() != null) {
logService.save(sysLogs);
}
}
}
}
买源码就到 《非凡资源店》
淘宝:https://shop412339646.taobao.com
更多优质源码,请访问:www.qiquCode.com
加微信获取最新源码信息:kofcheng201
<!--***************************************************
买源码就到 《非凡资源店》
网址:https://shop412339646.taobao.com
更多优质源码,请访问:www.qiquCode.com
加微信获取最新源码信息:kofcheng201
***************************************************
-->
\ No newline at end of file
package com.boot.security.server.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 日志注解
*
* @author 398005446@qq.com
*
* 2017年8月19日
*/
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface LogAnnotation {
String module() default "";
}
package com.boot.security.server.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
/**
* 线程池配置、启用异步
*
* @author maliang
*
* 2017年8月19日
*/
@EnableAsync(proxyTargetClass = true)
@Configuration
public class AsycTaskExecutorConfig {
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(50);
taskExecutor.setMaxPoolSize(100);
return taskExecutor;
}
}
package com.boot.security.server.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* Druid数据源配置
* 2018.05.24改为配置的方式,配置前缀spring.datasource.druid,看下application.yml
*
* @author maliang
*
*/
@Deprecated
//@Configuration
public class DruidConfig {
private static final Logger log = LoggerFactory.getLogger("adminLogger");
@Bean
public ServletRegistrationBean<StatViewServlet> druidServlet() {
log.info("init Druid Servlet Configuration ");
ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(
new StatViewServlet(), "/druid/*");
// IP白名单
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// IP黑名单(共同存在时,deny优先于allow)
// servletRegistrationBean.addInitParameter("deny", "192.168.27.26");
// // 控制台管理用户
// servletRegistrationBean.addInitParameter("loginUsername", "admin");
// servletRegistrationBean.addInitParameter("loginPassword", "admin");
// // 是否能够重置数据 禁用HTML页面上的“Reset All”功能
// servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean<WebStatFilter> filterRegistrationBean() {
FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<>(
new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
/**
* 数据源配置
*
* @author maliang
*
*/
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {
private String url;
private String username;
private String password;
private String driverClassName;
private int initialSize;
private int minIdle;
private int maxActive;
private int maxWait;
private int timeBetweenEvictionRunsMillis;
private int minEvictableIdleTimeMillis;
private String validationQuery;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean poolPreparedStatements;
private int maxPoolPreparedStatementPerConnectionSize;
private String filters;
private String connectionProperties;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public int getInitialSize() {
return initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMinIdle() {
return minIdle;
}
public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
public int getMaxWait() {
return maxWait;
}
public void setMaxWait(int maxWait) {
this.maxWait = maxWait;
}
public int getTimeBetweenEvictionRunsMillis() {
return timeBetweenEvictionRunsMillis;
}
public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
}
public int getMinEvictableIdleTimeMillis() {
return minEvictableIdleTimeMillis;
}
public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
}
public String getValidationQuery() {
return validationQuery;
}
public void setValidationQuery(String validationQuery) {
this.validationQuery = validationQuery;
}
public boolean isTestWhileIdle() {
return testWhileIdle;
}
public void setTestWhileIdle(boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
}
public boolean isTestOnBorrow() {
return testOnBorrow;
}
public void setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
public boolean isTestOnReturn() {
return testOnReturn;
}
public void setTestOnReturn(boolean testOnReturn) {
this.testOnReturn = testOnReturn;
}
public boolean isPoolPreparedStatements() {
return poolPreparedStatements;
}
public void setPoolPreparedStatements(boolean poolPreparedStatements) {
this.poolPreparedStatements = poolPreparedStatements;
}
public int getMaxPoolPreparedStatementPerConnectionSize() {
return maxPoolPreparedStatementPerConnectionSize;
}
public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {
this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
}
public String getFilters() {
return filters;
}
public void setFilters(String filters) {
this.filters = filters;
}
public String getConnectionProperties() {
return connectionProperties;
}
public void setConnectionProperties(String connectionProperties) {
this.connectionProperties = connectionProperties;
}
@Bean
@Primary
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(url);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
log.error("异常", e);
}
datasource.setConnectionProperties(connectionProperties);
return datasource;
}
}
}
package com.boot.security.server.config;
import java.io.IOException;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
@Configuration
public class JobConfig {
public static final String KEY = "applicationContextSchedulerContextKey";
@Bean("adminQuartzScheduler")
public SchedulerFactoryBean quartzScheduler(DataSource dataSource) {
SchedulerFactoryBean quartzScheduler = new SchedulerFactoryBean();
try {
quartzScheduler.setQuartzProperties(
PropertiesLoaderUtils.loadProperties(new ClassPathResource("quartz.properties")));
} catch (IOException e) {
e.printStackTrace();
}
quartzScheduler.setDataSource(dataSource);
quartzScheduler.setOverwriteExistingJobs(true);
quartzScheduler.setApplicationContextSchedulerContextKey(KEY);
quartzScheduler.setStartupDelay(10);
return quartzScheduler;
}
// @Autowired
// private JobService jobService;
// @Autowired
// private TaskExecutor taskExecutor;
//
// /**
// * 初始化一个定时删除日志的任务
// */
// @PostConstruct
// public void initDeleteLogsJob() {
// taskExecutor.execute(() -> {
// JobModel jobModel = new JobModel();
// jobModel.setJobName("delete-logs-job");
// jobModel.setCron("0 0 0 * * ?");
// jobModel.setDescription("定时删除三个月前日志");
// jobModel.setSpringBeanName("sysLogServiceImpl");
// jobModel.setMethodName("deleteLogs");
// jobModel.setIsSysJob(true);
// jobModel.setStatus(1);
//
// jobService.saveJob(jobModel);
// });
// }
}
package com.boot.security.server.config;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.view.RedirectView;
@Controller
public class LoginPageConfig {
@RequestMapping("/")
public RedirectView loginPage() {
return new RedirectView("/login.html");
}
}
package com.boot.security.server.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
/**
* redis配置<br>
* 集群下启动session共享,需打开@EnableRedisHttpSession<br>
* 单机下不需要
*
* @author maliang
*
* 2017年8月10日
*/
//@EnableRedisHttpSession
@Configuration
public class RedisConfig {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Bean("redisTemplate")
public RedisTemplate redisTemplate(@Lazy RedisConnectionFactory connectionFactory) {
RedisTemplate redis = new RedisTemplate();
GenericToStringSerializer<String> keySerializer = new GenericToStringSerializer<String>(String.class);
redis.setKeySerializer(keySerializer);
redis.setHashKeySerializer(keySerializer);
GenericJackson2JsonRedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer();
redis.setValueSerializer(valueSerializer);
redis.setHashValueSerializer(valueSerializer);
redis.setConnectionFactory(connectionFactory);
return redis;
}
}
package com.boot.security.server.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import com.boot.security.server.filter.TokenFilter;
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
/**
* spring security配置
*
* @author maliang
*
* 2020年04月20日
*
*/
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AuthenticationSuccessHandler authenticationSuccessHandler;
@Autowired
private AuthenticationFailureHandler authenticationFailureHandler;
@Autowired
private LogoutSuccessHandler logoutSuccessHandler;
@Autowired
private AuthenticationEntryPoint authenticationEntryPoint;
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private TokenFilter tokenFilter;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
// 基于token,所以不需要session
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
//对这些类型请求直接放开不做拦截
http.authorizeRequests()
.antMatchers("/", "/*.html", "/favicon.ico", "/css/**", "/js/**", "/fonts/**", "/layui/**", "/img/**",
"/v2/api-docs/**", "/swagger-resources/**", "/webjars/**", "/pages/**", "/druid/**",
"/statics/**")
.permitAll().anyRequest().authenticated();
//对于登录的地址和处理方法
http.formLogin().loginProcessingUrl("/login")
.successHandler(authenticationSuccessHandler).failureHandler(authenticationFailureHandler).and()
.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint);
http.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
// 解决不允许显示在iframe的问题
http.headers().frameOptions().disable();
http.headers().cacheControl();
//对请求进行处理(给token续命并且把当前用户保存到security的上下文环境中)
http.addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//实现UserDetailsService接口,security会调用其中方法创建登陆对象,并且获取对象拥有的权限
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
}
package com.boot.security.server.config;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import com.boot.security.server.dto.LoginUser;
import com.boot.security.server.dto.ResponseInfo;
import com.boot.security.server.dto.Token;
import com.boot.security.server.filter.TokenFilter;
import com.boot.security.server.service.TokenService;
import com.boot.security.server.utils.ResponseUtil;
/**
* spring security处理器
*
* @author maliang
*
* 2017年10月16日
*/
@Configuration
public class SecurityHandlerConfig {
@Autowired
private TokenService tokenService;
/**
* 登陆成功,返回Token
*
* @return
*/
@Bean
public AuthenticationSuccessHandler loginSuccessHandler() {
return new AuthenticationSuccessHandler() {
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
Token token = tokenService.saveToken(loginUser);
ResponseUtil.responseJson(response, HttpStatus.OK.value(), token);
}
};
}
/**
* 登陆失败
*
* @return
*/
@Bean
public AuthenticationFailureHandler loginFailureHandler() {
return new AuthenticationFailureHandler() {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
String msg = null;
if (exception instanceof BadCredentialsException) {
msg = "密码错误";
} else {
msg = exception.getMessage();
}
ResponseInfo info = new ResponseInfo(HttpStatus.UNAUTHORIZED.value() + "", msg);
ResponseUtil.responseJson(response, HttpStatus.UNAUTHORIZED.value(), info);
}
};
}
/**
* 未登录,返回401
*
* @return
*/
@Bean
public AuthenticationEntryPoint authenticationEntryPoint() {
return new AuthenticationEntryPoint() {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException, ServletException {
ResponseInfo info = new ResponseInfo(HttpStatus.UNAUTHORIZED.value() + "", "请先登录");
ResponseUtil.responseJson(response, HttpStatus.UNAUTHORIZED.value(), info);
}
};
}
/**
* 退出处理
*
* @return
*/
@Bean
public LogoutSuccessHandler logoutSussHandler() {
return new LogoutSuccessHandler() {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
ResponseInfo info = new ResponseInfo(HttpStatus.OK.value() + "", "退出成功");
String token = TokenFilter.getToken(request);
tokenService.deleteToken(token);
ResponseUtil.responseJson(response, HttpStatus.OK.value(), info);
}
};
}
}
package com.boot.security.server.config;
import com.boot.security.server.filter.TokenFilter;
import com.google.common.collect.Lists;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* swagger文档
*
* @author maliang
*
* 2017年7月21日
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket docket() {
ParameterBuilder builder = new ParameterBuilder();
builder.parameterType("header").name(TokenFilter.TOKEN_KEY)
.description("header参数")
.required(false)
.modelRef(new ModelRef("string")); // 在swagger里显示header
return new Docket(DocumentationType.SWAGGER_2).groupName("swagger接口文档")
.apiInfo(new ApiInfoBuilder().title("swagger接口文档")
.contact(new Contact("奇趣源码商城", "", "chengzg1011@163.com")).version("1.0").build())
.globalOperationParameters(Lists.newArrayList(builder.build()))
.select().paths(PathSelectors.any()).build();
}
}
package com.boot.security.server.config;
import java.io.File;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.boot.security.server.page.table.PageTableArgumentResolver;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 跨域支持
*
* @return
*/
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("*");
}
};
}
/**
* datatable分页解析
*
* @return
*/
@Bean
public PageTableArgumentResolver tableHandlerMethodArgumentResolver() {
return new PageTableArgumentResolver();
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(tableHandlerMethodArgumentResolver());
}
/**
* 上传文件根路径
*/
@Value("${files.path}")
private String filesPath;
/**
* 外部文件访问
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/statics/**")
.addResourceLocations(ResourceUtils.FILE_URL_PREFIX + filesPath + File.separator);
}
}
package com.boot.security.server.controller;
import com.alibaba.fastjson.JSONObject;
import com.boot.security.server.dao.AdvertDao;
import com.boot.security.server.model.AdvertiserData;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.service.AdvertiserService;
import com.boot.security.server.utils.UserUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/advertiserController")
public class AdvertiserController {
@Autowired
private AdvertiserService advertiserService;
@Autowired
private AdvertDao advertDao;
@PostMapping("/table")
@ApiOperation(value = "获取广告商管理数据")
@ResponseBody
public String getAdvertiserManagerData(@RequestBody PageTableRequest request) {
JSONObject advertiserManagerData = advertiserService.getAdvertiserManagerData(request);
return advertiserManagerData.toJSONString();
}
//返回根据日期返回所有广告汇总数据
@PreAuthorize("hasAuthority('advert:data:count')")
@PostMapping("/advertCount")
@ApiOperation(value = "获取广告数据汇总")
@ResponseBody
public String getAdvertiserDataCount(@RequestBody PageTableRequest request) {
Long id = UserUtil.getLoginUser().getId();
List<AdvertiserData> advertDataList = advertDao.getAdvertData(request.getStartTime(), request.getEndTime(),id);
Integer count = advertDao.getAdvertDataCount(request.getStartTime(), request.getEndTime(),id);
return PageTableHandler.getJSONObject(advertDataList,count);
}
//返回根据日期返回所有广告主数据
@PreAuthorize("hasAuthority('advertiser:data')")
@PostMapping("/advertiserData")
@ApiOperation(value = "获取广告主数据")
@ResponseBody
public String getAdvertiserData(@RequestBody PageTableRequest request) {
JSONObject advertiserData = advertiserService.getAdvertiserData(request);
return advertiserData.toJSONString();
}
//更新广告主数据
@PostMapping("/updateAdvertiserData")
@ApiOperation(value = "更新广告主管理数据")
@ResponseBody
public void updateAdvertiserData(@RequestBody PageTableRequest request) {
advertiserService.updateAdvertiserManagerData(request.getAdvertiserData());
}
//更新广告主数据
@PostMapping("/syncAdvertiserData")
@ApiOperation(value = "同步cms广告主数据")
@ResponseBody
public void syncAdvertiserData() {
advertiserService.syncAdvertiserAndAdvert();
}
}
package com.boot.security.server.controller;
import com.alibaba.fastjson.JSONObject;
import com.boot.security.server.dao.CopyrightDao;
import com.boot.security.server.model.BaseSettlement;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.service.CopyrightBookService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/copyrightBookController")
public class CopyrightBookController {
@Autowired
CopyrightBookService copyrightBookService;
@Autowired
CopyrightDao copyrightDao;
@PostMapping("/settlementMonth")
@ApiOperation(value = "获取月结算数据")
@ResponseBody
public String getSettlementMonthData(@RequestBody PageTableRequest request) {
return copyrightBookService.selectSettlement(request.getCopyrightIds(),request.getPage(),request.getLimit());
}
@PostMapping("/settlementBookMonth")
@ApiOperation(value = "获取书籍月结算数据")
@ResponseBody
public String getSettlementBookMonthData(@RequestBody PageTableRequest request) {
return copyrightBookService.selectBookSettlement(request.getCopyrightIds(),request.getStartTime(),request.getEndTime(),request.getBookId(),request.getBookName(),request.getPage(),request.getLimit());
}
@PostMapping("/getAllCopyright")
@ApiOperation(value = "版权方数据")
@ResponseBody
public String getAllCopyright(){
return copyrightBookService.getAllCopyright();
}
@PostMapping("/getSchema")
@ApiOperation(value = "获取总的未结算数据")
@ResponseBody
public String getSchema(@RequestBody PageTableRequest request){
return copyrightBookService.getSchema(request.getCopyrightIds());
}
@PostMapping("/getDeductionConfig")
@ApiOperation(value = "获取总的未结算数据")
@ResponseBody
public String getDeductionConfig(@RequestBody PageTableRequest request){
List<BaseSettlement> deductionConfig = copyrightDao.getDeductionConfig(request.getPage()-1,request.getLimit());
List<BaseSettlement> deductionConfigs = copyrightDao.getDeductionConfigCount();
JSONObject jsonObject = new JSONObject();
jsonObject.put("data",deductionConfig);
jsonObject.put("count",deductionConfigs.size());
jsonObject.put("code",0);
return jsonObject.toJSONString();
}
@PostMapping("/updateDeductionConfig")
@ApiOperation(value = "更新结算状态")
public void updateDeductionConfig(@RequestBody PageTableRequest request){
Integer type=1;
if(request.getTypeName().equals("固定比例")){
type=2;
}
List<BaseSettlement> array = request.getArray();
if(array.size()>0){
Integer page = request.getPage();
Integer limit = request.getLimit();
if(page==null|| limit==null){
page=0;
limit=1000;
}
for (BaseSettlement baseSettlement : array) {
copyrightDao.updateDeductionConfig(baseSettlement.getCopyrightId(),request.getTypeName(),type,request.getContext(),baseSettlement.getReportDate(),page,limit);
}
}
//copyrightDao.updateDeductionConfig(request.getCopyrightId(),request.getTypeName(),type,request.getContext(),request.getStartTime());
}
@PostMapping("/updateSettlementStatus")
@ApiOperation(value = "更新结算状态")
public void updateSettlementStatus(@RequestBody PageTableRequest request){
BaseSettlement baseSettlement = request.getBaseSettlement();
copyrightDao.updateSettlementStatus(baseSettlement.getCopyrightId(),baseSettlement.getReportDate(),baseSettlement.getStatus(),baseSettlement.getStatusName());
}
@PostMapping("/updateReleaseStatus")
@ApiOperation(value = "更新结算状态")
public void updateReleaseStatus(@RequestBody PageTableRequest request){
BaseSettlement baseSettlement = request.getBaseSettlement();
copyrightDao.updateReleaseStatus(baseSettlement.getCopyrightId(),baseSettlement.getReportDate(),baseSettlement.getReleaseStatus(),baseSettlement.getReleaseStatusName());
}
@PostMapping("/bookInfo")
@ApiOperation(value = "获取书籍上架信息")
@ResponseBody
public String getBookInfo(@RequestBody PageTableRequest request) {
return copyrightBookService.selectBookInfo(request.getCopyrightIds(),request.getPage(),request.getLimit());
}
}
package com.boot.security.server.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.dao.DictDao;
import com.boot.security.server.model.Dict;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/dicts")
public class DictController {
@Autowired
private DictDao dictDao;
@PreAuthorize("hasAuthority('dict:add')")
@PostMapping
@ApiOperation(value = "保存")
public Dict save(@RequestBody Dict dict) {
Dict d = dictDao.getByTypeAndK(dict.getType(), dict.getK());
if (d != null) {
throw new IllegalArgumentException("类型和key已存在");
}
dictDao.save(dict);
return dict;
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取")
public Dict get(@PathVariable Long id) {
return dictDao.getById(id);
}
@PreAuthorize("hasAuthority('dict:add')")
@PutMapping
@ApiOperation(value = "修改")
public Dict update(@RequestBody Dict dict) {
dictDao.update(dict);
return dict;
}
@PreAuthorize("hasAuthority('dict:query')")
@GetMapping(params = { "start", "length" })
@ApiOperation(value = "列表")
public PageTableResponse list(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return dictDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<Dict> list(PageTableRequest request) {
return dictDao.list(request.getParams(), request.getOffset(), request.getLimit());
}
}).handle(request);
}
@PreAuthorize("hasAuthority('dict:del')")
@DeleteMapping("/{id}")
@ApiOperation(value = "删除")
public void delete(@PathVariable Long id) {
dictDao.delete(id);
}
@GetMapping(params = "type")
public List<Dict> listByType(String type) {
return dictDao.listByType(type);
}
}
package com.boot.security.server.controller;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.utils.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "excel下载")
@RestController
@RequestMapping("/excels")
public class ExcelController {
private static final Logger log = LoggerFactory.getLogger("adminLogger");
@Autowired
private JdbcTemplate jdbcTemplate;
@ApiOperation("校验sql,并返回sql返回的数量")
@PostMapping("/sql-count")
public Integer checkSql(String sql) {
log.info(sql);
sql = getAndCheckSql(sql);
Integer count = 0;
try {
count = jdbcTemplate.queryForObject("select count(1) from (" + sql + ") t", Integer.class);
} catch (Exception e) {
throw new IllegalArgumentException(e.getMessage());
}
return count;
}
private String getAndCheckSql(String sql) {
sql = sql.trim().toLowerCase();
if (sql.endsWith(";") || sql.endsWith(";")) {
sql = sql.substring(0, sql.length() - 1);
}
if (!sql.startsWith("select")) {
throw new IllegalArgumentException("仅支持select语句");
}
return sql;
}
@LogAnnotation
@ApiOperation("根据sql导出excel")
@PostMapping
@PreAuthorize("hasAuthority('excel:down')")
public void downloadExcel(String sql, String fileName, HttpServletResponse response) {
sql = getAndCheckSql(sql);
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
if (!CollectionUtils.isEmpty(list)) {
Map<String, Object> map = list.get(0);
String[] headers = new String[map.size()];
int i = 0;
for (String key : map.keySet()) {
headers[i++] = key;
}
List<Object[]> datas = new ArrayList<>(list.size());
for (Map<String, Object> m : list) {
Object[] objects = new Object[headers.length];
for (int j = 0; j < headers.length; j++) {
objects[j] = m.get(headers[j]);
}
datas.add(objects);
}
ExcelUtil.excelExport(
fileName == null || fileName.trim().length() <= 0 ? DigestUtils.md5Hex(sql) : fileName, headers,
datas, response);
}
}
@LogAnnotation
@ApiOperation("根据sql在页面显示结果")
@PostMapping("/show-datas")
@PreAuthorize("hasAuthority('excel:show:datas')")
public List<Object[]> showData(String sql) {
sql = getAndCheckSql(sql);
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
if (!CollectionUtils.isEmpty(list)) {
Map<String, Object> map = list.get(0);
String[] headers = new String[map.size()];
int i = 0;
for (String key : map.keySet()) {
headers[i++] = key;
}
List<Object[]> datas = new ArrayList<>(list.size());
datas.add(headers);
for (Map<String, Object> m : list) {
Object[] objects = new Object[headers.length];
for (int j = 0; j < headers.length; j++) {
objects[j] = m.get(headers[j]);
}
datas.add(objects);
}
return datas;
}
return Collections.emptyList();
}
}
package com.boot.security.server.controller;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.boot.security.server.model.AdvertiserData;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.FileInfoDao;
import com.boot.security.server.dto.LayuiFile;
import com.boot.security.server.dto.LayuiFile.LayuiFileData;
import com.boot.security.server.model.FileInfo;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import com.boot.security.server.service.FileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "文件")
@RestController
@RequestMapping("/files")
public class FileController {
@Autowired
private FileService fileService;
@Autowired
private FileInfoDao fileInfoDao;
@LogAnnotation
@PostMapping
@ApiOperation(value = "文件上传")
public FileInfo uploadFile(MultipartFile file) throws IOException {
return fileService.save(file);
}
@PostMapping("/excel")
@ApiOperation(value = "excel上传")
public String uploadExcel(MultipartFile file) throws IOException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code",0);
fileService.saveExel(file);
return jsonObject.toJSONString();
}
/**
* layui富文本文件自定义上传
*
* @param file
* @param domain
* @return
* @throws IOException
*/
@LogAnnotation
@PostMapping("/layui")
@ApiOperation(value = "layui富文本文件自定义上传")
public LayuiFile uploadLayuiFile(MultipartFile file, String domain) throws IOException {
FileInfo fileInfo = fileService.save(file);
LayuiFile layuiFile = new LayuiFile();
layuiFile.setCode(0);
LayuiFileData data = new LayuiFileData();
layuiFile.setData(data);
data.setSrc(domain + "/statics" + fileInfo.getUrl());
data.setTitle(file.getOriginalFilename());
return layuiFile;
}
@GetMapping
@ApiOperation(value = "文件查询")
@PreAuthorize("hasAuthority('sys:file:query')")
public PageTableResponse listFiles(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return fileInfoDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<FileInfo> list(PageTableRequest request) {
List<FileInfo> list = fileInfoDao.list(request.getParams(), request.getOffset(), request.getLimit());
return list;
}
}).handle(request);
}
@LogAnnotation
@DeleteMapping("/{id}")
@ApiOperation(value = "文件删除")
@PreAuthorize("hasAuthority('sys:file:del')")
public void delete(@PathVariable String id) {
fileService.delete(id);
}
}
package com.boot.security.server.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dto.BeanField;
import com.boot.security.server.dto.GenerateDetail;
import com.boot.security.server.dto.GenerateInput;
import com.boot.security.server.service.GenerateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 代码生成接口
*
* @author maliang
*
*/
@Api(tags = "代码生成")
@RestController
@RequestMapping("/generate")
public class GenerateController {
@Autowired
private GenerateService generateService;
@ApiOperation("根据表名显示表信息")
@GetMapping(params = { "tableName" })
@PreAuthorize("hasAuthority('generate:edit')")
public GenerateDetail generateByTableName(String tableName) {
GenerateDetail detail = new GenerateDetail();
detail.setBeanName(generateService.upperFirstChar(tableName));
List<BeanField> fields = generateService.listBeanField(tableName);
detail.setFields(fields);
return detail;
}
@LogAnnotation
@ApiOperation("生成代码")
@PostMapping
@PreAuthorize("hasAuthority('generate:edit')")
public void save(@RequestBody GenerateInput input) {
generateService.saveCode(input);
}
}
package com.boot.security.server.controller;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.JobDao;
import com.boot.security.server.model.JobModel;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import com.boot.security.server.service.JobService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.quartz.CronExpression;
import org.quartz.SchedulerException;
import org.springframework.aop.support.AopUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;
@Api(tags = "定时任务")
@RestController
@RequestMapping("/jobs")
public class JobController {
@Autowired
private JobService jobService;
@Autowired
private JobDao jobDao;
@LogAnnotation
@ApiOperation("添加定时任务")
@PostMapping
@PreAuthorize("hasAuthority('job:add')")
public void add(@RequestBody JobModel jobModel) {
JobModel model = jobDao.getByName(jobModel.getJobName());
if (model != null) {
throw new IllegalArgumentException(jobModel.getJobName() + "已存在");
}
jobModel.setIsSysJob(false);
jobService.saveJob(jobModel);
}
@LogAnnotation
@ApiOperation("修改定时任务")
@PutMapping
@PreAuthorize("hasAuthority('job:add')")
public void update(@RequestBody JobModel jobModel) {
jobModel.setStatus(1);
jobService.saveJob(jobModel);
}
@LogAnnotation
@ApiOperation("删除定时任务")
@DeleteMapping("/{id}")
@PreAuthorize("hasAuthority('job:del')")
public void delete(@PathVariable Long id) throws SchedulerException {
jobService.deleteJob(id);
}
@ApiOperation("根据id获取定时任务")
@GetMapping("/{id}")
@PreAuthorize("hasAuthority('job:query')")
public JobModel getById(@PathVariable Long id) {
return jobDao.getById(id);
}
@GetMapping
@ApiOperation(value = "定时任务列表")
@PreAuthorize("hasAuthority('job:query')")
public PageTableResponse list(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return jobDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<JobModel> list(PageTableRequest request) {
List<JobModel> list = jobDao.list(request.getParams(), request.getOffset(), request.getLimit());
return list;
}
}).handle(request);
}
@ApiOperation(value = "校验cron表达式")
@GetMapping(params = "cron")
public boolean checkCron(String cron) {
return CronExpression.isValidExpression(cron);
}
@Autowired
private ApplicationContext applicationContext;
@ApiOperation(value = "springBean名字")
@GetMapping("/beans")
public List<String> listAllBeanName() {
String[] strings = applicationContext.getBeanDefinitionNames();
List<String> list = new ArrayList<>();
for (String str : strings) {
if (str.contains(".")) {
continue;
}
Class<?> clazz = getClass(str);
// if (clazz.isAssignableFrom(Controller.class) || clazz.isAnnotationPresent(RestController.class)) {
// continue;
// }
//
// list.add(str);
// 2018.07.26修改 上面注释的add添加了太多不认识的bean,改为下面的判断我们只添加service,bean少了不少
if (clazz.isAnnotationPresent(Service.class) && str.toLowerCase().contains("service")) {
list.add(str);
}
}
// list.sort((l1, l2) -> l1.compareTo(l2));
Collections.sort(list);// 2018.07.26修改排序
return list;
}
@ApiOperation(value = "springBean的无参方法")
@GetMapping("/beans/{name}")
public Set<String> listMethodName(@PathVariable String name) {
Class<?> clazz = getClass(name);
Method[] methods = clazz.getDeclaredMethods();
Set<String> names = new HashSet<>();
Arrays.asList(methods).forEach(m -> {
int b = m.getModifiers();// public 1 static 8 final 16
// if (b == 1 || b == 9 || b == 17 || b == 25) {
if (Modifier.isPublic(b)) { // 2018.07.26修改public方法的判断
Class<?>[] classes = m.getParameterTypes();
if (classes.length == 0) {
names.add(m.getName());
}
}
});
return names;
}
private Class<?> getClass(String name) {
Object object = applicationContext.getBean(name);
Class<?> clazz = object.getClass();
if (AopUtils.isAopProxy(object)) {
clazz = clazz.getSuperclass();
}
return clazz;
}
}
package com.boot.security.server.controller;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
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 com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.MailDao;
import com.boot.security.server.model.Mail;
import com.boot.security.server.model.MailTo;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import com.boot.security.server.service.MailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "邮件")
@RestController
@RequestMapping("/mails")
public class MailController {
@Autowired
private MailDao mailDao;
@Autowired
private MailService mailService;
@LogAnnotation
@PostMapping
@ApiOperation(value = "保存邮件")
@PreAuthorize("hasAuthority('mail:send')")
public Mail save(@RequestBody Mail mail) {
String toUsers = mail.getToUsers().trim();
if (StringUtils.isBlank(toUsers)) {
throw new IllegalArgumentException("收件人不能为空");
}
toUsers = toUsers.replace(" ", "");
toUsers = toUsers.replace(";", ";");
String[] strings = toUsers.split(";");
List<String> toUser = Arrays.asList(strings);
toUser = toUser.stream().filter(u -> !StringUtils.isBlank(u)).map(u -> u.trim()).collect(Collectors.toList());
mailService.save(mail, toUser);
return mail;
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取邮件")
@PreAuthorize("hasAuthority('mail:all:query')")
public Mail get(@PathVariable Long id) {
return mailDao.getById(id);
}
@GetMapping("/{id}/to")
@ApiOperation(value = "根据id获取邮件发送详情")
@PreAuthorize("hasAuthority('mail:all:query')")
public List<MailTo> getMailTo(@PathVariable Long id) {
return mailDao.getToUsers(id);
}
@GetMapping
@ApiOperation(value = "邮件列表")
@PreAuthorize("hasAuthority('mail:all:query')")
public PageTableResponse list(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return mailDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<Mail> list(PageTableRequest request) {
return mailDao.list(request.getParams(), request.getOffset(), request.getLimit());
}
}).handle(request);
}
}
package com.boot.security.server.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.NoticeDao;
import com.boot.security.server.dto.NoticeReadVO;
import com.boot.security.server.dto.NoticeVO;
import com.boot.security.server.model.Notice;
import com.boot.security.server.model.SysUser;
import com.boot.security.server.model.Notice.Status;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import com.boot.security.server.utils.UserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "公告")
@RestController
@RequestMapping("/notices")
public class NoticeController {
@Autowired
private NoticeDao noticeDao;
@LogAnnotation
@PostMapping
@ApiOperation(value = "保存公告")
@PreAuthorize("hasAuthority('notice:add')")
public Notice saveNotice(@RequestBody Notice notice) {
noticeDao.save(notice);
return notice;
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取公告")
@PreAuthorize("hasAuthority('notice:query')")
public Notice get(@PathVariable Long id) {
return noticeDao.getById(id);
}
@GetMapping(params = "id")
public NoticeVO readNotice(Long id) {
NoticeVO vo = new NoticeVO();
Notice notice = noticeDao.getById(id);
if (notice == null || notice.getStatus() == Status.DRAFT) {
return vo;
}
vo.setNotice(notice);
noticeDao.saveReadRecord(notice.getId(), UserUtil.getLoginUser().getId());
List<SysUser> users = noticeDao.listReadUsers(id);
vo.setUsers(users);
return vo;
}
@LogAnnotation
@PutMapping
@ApiOperation(value = "修改公告")
@PreAuthorize("hasAuthority('notice:add')")
public Notice updateNotice(@RequestBody Notice notice) {
Notice no = noticeDao.getById(notice.getId());
if (no.getStatus() == Status.PUBLISH) {
throw new IllegalArgumentException("发布状态的不能修改");
}
noticeDao.update(notice);
return notice;
}
@GetMapping
@ApiOperation(value = "公告管理列表")
@PreAuthorize("hasAuthority('notice:query')")
public PageTableResponse listNotice(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return noticeDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<Notice> list(PageTableRequest request) {
return noticeDao.list(request.getParams(), request.getOffset(), request.getLimit());
}
}).handle(request);
}
@LogAnnotation
@DeleteMapping("/{id}")
@ApiOperation(value = "删除公告")
@PreAuthorize("hasAuthority('notice:del')")
public void delete(@PathVariable Long id) {
noticeDao.delete(id);
}
@ApiOperation(value = "未读公告数")
@GetMapping("/count-unread")
public Integer countUnread() {
SysUser user = UserUtil.getLoginUser();
return noticeDao.countUnread(user.getId());
}
@GetMapping("/published")
@ApiOperation(value = "公告列表")
public PageTableResponse listNoticeReadVO(PageTableRequest request) {
request.getParams().put("userId", UserUtil.getLoginUser().getId());
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return noticeDao.countNotice(request.getParams());
}
}, new ListHandler() {
@Override
public List<NoticeReadVO> list(PageTableRequest request) {
return noticeDao.listNotice(request.getParams(), request.getOffset(), request.getLimit());
}
}).handle(request);
}
}
package com.boot.security.server.controller;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.PermissionDao;
import com.boot.security.server.dto.LoginUser;
import com.boot.security.server.model.Permission;
import com.boot.security.server.service.PermissionService;
import com.boot.security.server.utils.UserUtil;
import com.google.common.collect.Lists;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 权限相关接口
*
* @author maliang
*
*/
@Api(tags = "权限")
@RestController
@RequestMapping("/permissions")
public class PermissionController {
@Autowired
private PermissionDao permissionDao;
@Autowired
private PermissionService permissionService;
@ApiOperation(value = "当前登录用户拥有的权限")
@GetMapping("/current")
public List<Permission> permissionsCurrent() {
LoginUser loginUser = UserUtil.getLoginUser();
List<Permission> list = loginUser.getPermissions();
final List<Permission> permissions = list.stream().filter(l -> l.getType().equals(1))
.collect(Collectors.toList());
// setChild(permissions);
//
// return permissions.stream().filter(p -> p.getParentId().equals(0L)).collect(Collectors.toList());
// 2018.06.09 支持多级菜单
List<Permission> firstLevel = permissions.stream().filter(p -> p.getParentId().equals(0L)).collect(Collectors.toList());
firstLevel.parallelStream().forEach(p -> {
setChild(p, permissions);
});
return firstLevel;
}
/**
* 设置子元素
* 2018.06.09
*
* @param p
* @param permissions
*/
private void setChild(Permission p, List<Permission> permissions) {
List<Permission> child = permissions.parallelStream().filter(a -> a.getParentId().equals(p.getId())).collect(Collectors.toList());
p.setChild(child);
if (!CollectionUtils.isEmpty(child)) {
child.parallelStream().forEach(c -> {
//递归设置子元素,多级菜单支持
setChild(c, permissions);
});
}
}
// private void setChild(List<Permission> permissions) {
// permissions.parallelStream().forEach(per -> {
// List<Permission> child = permissions.stream().filter(p -> p.getParentId().equals(per.getId()))
// .collect(Collectors.toList());
// per.setChild(child);
// });
// }
/**
* 菜单列表
*
* @param pId
* @param permissionsAll
* @param list
*/
private void setPermissionsList(Long pId, List<Permission> permissionsAll, List<Permission> list) {
for (Permission per : permissionsAll) {
if (per.getParentId().equals(pId)) {
list.add(per);
if (permissionsAll.stream().filter(p -> p.getParentId().equals(per.getId())).findAny() != null) {
setPermissionsList(per.getId(), permissionsAll, list);
}
}
}
}
@GetMapping
@ApiOperation(value = "菜单列表")
@PreAuthorize("hasAuthority('sys:menu:query')")
public List<Permission> permissionsList() {
List<Permission> permissionsAll = permissionDao.listAll();
List<Permission> list = Lists.newArrayList();
setPermissionsList(0L, permissionsAll, list);
return list;
}
@GetMapping("/all")
@ApiOperation(value = "所有菜单")
@PreAuthorize("hasAuthority('sys:menu:query')")
public JSONArray permissionsAll() {
//获取当前登录用户,如果是admin用户则展示所有权限,否则只能看到当前用户拥有的权限
LoginUser loginUser = UserUtil.getLoginUser();
List<Permission> permissionsAll =null;
if(loginUser.getId().intValue()==1){
permissionsAll = permissionDao.listAll();
}else {
permissionsAll = loginUser.getPermissions();
}
//List<Permission> permissionsAll = permissionDao.listAll();
JSONArray array = new JSONArray();
setPermissionsTree(0L, permissionsAll, array);
return array;
}
@GetMapping("/parents")
@ApiOperation(value = "一级菜单")
@PreAuthorize("hasAuthority('sys:menu:query')")
public List<Permission> parentMenu() {
List<Permission> parents = permissionDao.listParents();
return parents;
}
/**
* 菜单树
*
* @param pId
* @param permissionsAll
* @param array
*/
private void setPermissionsTree(Long pId, List<Permission> permissionsAll, JSONArray array) {
for (Permission per : permissionsAll) {
if (per.getParentId().equals(pId)) {
String string = JSONObject.toJSONString(per);
JSONObject parent = (JSONObject) JSONObject.parse(string);
array.add(parent);
if (permissionsAll.stream().filter(p -> p.getParentId().equals(per.getId())).findAny() != null) {
JSONArray child = new JSONArray();
parent.put("child", child);
setPermissionsTree(per.getId(), permissionsAll, child);
}
}
}
}
@GetMapping(params = "roleId")
@ApiOperation(value = "根据角色id获取权限")
@PreAuthorize("hasAnyAuthority('sys:menu:query','sys:role:query')")
public List<Permission> listByRoleId(Long roleId) {
return permissionDao.listByRoleId(roleId);
}
@LogAnnotation
@PostMapping
@ApiOperation(value = "保存菜单")
@PreAuthorize("hasAuthority('sys:menu:add')")
public void save(@RequestBody Permission permission) {
permissionDao.save(permission);
}
@GetMapping("/{id}")
@ApiOperation(value = "根据菜单id获取菜单")
@PreAuthorize("hasAuthority('sys:menu:query')")
public Permission get(@PathVariable Long id) {
return permissionDao.getById(id);
}
@LogAnnotation
@PutMapping
@ApiOperation(value = "修改菜单")
@PreAuthorize("hasAuthority('sys:menu:add')")
public void update(@RequestBody Permission permission) {
permissionService.update(permission);
}
/**
* 校验权限
*
* @return
*/
@GetMapping("/owns")
@ApiOperation(value = "校验当前用户的权限")
public Set<String> ownsPermission() {
List<Permission> permissions = UserUtil.getLoginUser().getPermissions();
if (CollectionUtils.isEmpty(permissions)) {
return Collections.emptySet();
}
return permissions.parallelStream().filter(p -> !StringUtils.isEmpty(p.getPermission()))
.map(Permission::getPermission).collect(Collectors.toSet());
}
@LogAnnotation
@DeleteMapping("/{id}")
@ApiOperation(value = "删除菜单")
@PreAuthorize("hasAuthority('sys:menu:del')")
public void delete(@PathVariable Long id) {
permissionService.delete(id);
}
}
package com.boot.security.server.controller;
import java.util.Iterator;
import java.util.List;
import com.boot.security.server.dto.LoginUser;
import com.boot.security.server.utils.UserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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 com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.RoleDao;
import com.boot.security.server.dto.RoleDto;
import com.boot.security.server.model.Role;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import com.boot.security.server.service.RoleService;
import com.google.common.collect.Maps;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 角色相关接口
*
* @author maliang
*
*/
@Api(tags = "角色")
@RestController
@RequestMapping("/roles")
public class RoleController {
@Autowired
private RoleService roleService;
@Autowired
private RoleDao roleDao;
@LogAnnotation
@PostMapping
@ApiOperation(value = "保存角色")
@PreAuthorize("hasAuthority('sys:role:add')")
public void saveRole(@RequestBody RoleDto roleDto) {
roleService.saveRole(roleDto);
}
@GetMapping
@ApiOperation(value = "角色列表")
@PreAuthorize("hasAuthority('sys:role:query')")
public PageTableResponse listRoles(PageTableRequest request) {
//查询角色列表时,如果是admin用户显示所有角色,否则只显示除admin之外的角色
LoginUser loginUser = UserUtil.getLoginUser();
Long id = loginUser.getId();
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
if (id!=1){
return roleDao.count(request.getParams())-1;
}
return roleDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<Role> list(PageTableRequest request) {
List<Role> list = roleDao.list(request.getParams(), request.getOffset(), request.getLimit());
if (id!=1){
Iterator<Role> iterator = list.iterator();
while (iterator.hasNext()) {
Role role = iterator.next();
if(role.getId().intValue()==1){
iterator.remove();
}
}
}
return list;
}
}).handle(request);
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取角色")
@PreAuthorize("hasAuthority('sys:role:query')")
public Role get(@PathVariable Long id) {
return roleDao.getById(id);
}
@GetMapping("/all")
@ApiOperation(value = "所有角色")
@PreAuthorize("hasAnyAuthority('sys:user:query','sys:role:query')")
public List<Role> roles() {
return roleDao.list(Maps.newHashMap(), null, null);
}
@GetMapping(params = "userId")
@ApiOperation(value = "根据用户id获取拥有的角色")
@PreAuthorize("hasAnyAuthority('sys:user:query','sys:role:query')")
public List<Role> roles(Long userId) {
return roleDao.listByUserId(userId);
}
@LogAnnotation
@DeleteMapping("/{id}")
@ApiOperation(value = "删除角色")
@PreAuthorize("hasAuthority('sys:role:del')")
public void delete(@PathVariable Long id) {
roleService.deleteRole(id);
}
}
package com.boot.security.server.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.dao.SysLogsDao;
import com.boot.security.server.model.SysLogs;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "日志")
@RestController
@RequestMapping("/logs")
public class SysLogsController {
@Autowired
private SysLogsDao sysLogsDao;
@GetMapping
@PreAuthorize("hasAuthority('sys:log:query')")
@ApiOperation(value = "日志列表")
public PageTableResponse list(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return sysLogsDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<SysLogs> list(PageTableRequest request) {
return sysLogsDao.list(request.getParams(), request.getOffset(), request.getLimit());
}
}).handle(request);
}
}
package com.boot.security.server.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.boot.security.server.model.AdvertiserUserMap;
import com.boot.security.server.model.BaseSettlement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.annotation.LogAnnotation;
import com.boot.security.server.dao.UserDao;
import com.boot.security.server.dto.UserDto;
import com.boot.security.server.model.SysUser;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import com.boot.security.server.service.UserService;
import com.boot.security.server.utils.UserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 用户相关接口
*
* @author maliang
*
*/
@Api(tags = "用户")
@RestController
@RequestMapping("/users")
public class UserController {
private static final Logger log = LoggerFactory.getLogger("adminLogger");
@Autowired
private UserService userService;
@Autowired
private UserDao userDao;
@LogAnnotation
@PostMapping
@ApiOperation(value = "保存用户")
@PreAuthorize("hasAuthority('sys:user:add')")
public SysUser saveUser(@RequestBody UserDto userDto) {
SysUser u = userService.getUser(userDto.getUsername());
if (u != null) {
throw new IllegalArgumentException(userDto.getUsername() + "已存在");
}
return userService.saveUser(userDto);
}
@LogAnnotation
@PutMapping
@ApiOperation(value = "修改用户")
@PreAuthorize("hasAuthority('sys:user:add')")
public SysUser updateUser(@RequestBody UserDto userDto) {
return userService.updateUser(userDto);
}
@LogAnnotation
@PutMapping(params = "headImgUrl")
@ApiOperation(value = "修改头像")
public void updateHeadImgUrl(String headImgUrl) {
SysUser user = UserUtil.getLoginUser();
UserDto userDto = new UserDto();
BeanUtils.copyProperties(user, userDto);
userDto.setHeadImgUrl(headImgUrl);
userService.updateUser(userDto);
log.debug("{}修改了头像", user.getUsername());
}
@LogAnnotation
@PutMapping("/{username}")
@ApiOperation(value = "修改密码")
@PreAuthorize("hasAuthority('sys:user:password')")
public void changePassword(@PathVariable String username, String oldPassword, String newPassword) {
userService.changePassword(username, oldPassword, newPassword);
}
@GetMapping
@ApiOperation(value = "用户列表")
@PreAuthorize("hasAuthority('sys:user:query')")
public PageTableResponse listUsers(PageTableRequest request) {
System.out.println(request.getLimit());
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return userDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<SysUser> list(PageTableRequest request) {
List<SysUser> list = userDao.list(request.getParams(), request.getOffset(), request.getLimit());
return list;
}
}).handle(request);
}
@ApiOperation(value = "当前登录用户")
@GetMapping("/current")
public SysUser currentUser() {
return UserUtil.getLoginUser();
}
@ApiOperation(value = "获取版权方和用户的映射关系")
@GetMapping("/copyrightUserList")
public PageTableResponse getAdvertiserUserList(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return userDao.countCopyrightUserMap(request.getParams());
}
}, new ListHandler() {
@Override
public List<BaseSettlement> list(PageTableRequest request) {
List<BaseSettlement> list = userDao.getCopyrightUserMap();
return list;
}
}).handle(request);
}
@ApiOperation(value = "改变版权方和用户的映射关系")
@PostMapping("/updateCopyrightUserMap")
public void updateAdvertiserUserMap(@RequestBody BaseSettlement request) {
ArrayList<BaseSettlement> baseSettlement = new ArrayList<>();
baseSettlement.add(request);
userDao.updateBaseSettlementUserMap(request.getUserId(),baseSettlement);
}
@ApiOperation(value = "根据用户id获取用户")
@GetMapping("/{id}")
@PreAuthorize("hasAuthority('sys:user:query')")
public SysUser user(@PathVariable Long id) {
return userDao.getById(id);
}
}
package com.boot.security.server.dao;
import com.boot.security.server.model.AdvertiserData;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface AdvertDao {
@Select("select report_date reportDate,t.advertiser_id advertiserId,advertiser_name advertiserName,code_id codeId,ecpm,cpc,exposure,click,income from advert_data_count t inner join (select advertiser_id from advertiser_user_map where user_id=#{userId} and status=1) t1 on t.advertiser_id=t1.advertiser_id where report_date>= #{startTime} and report_date<=#{endTime}")
List<AdvertiserData> getAdvertData(@Param("startTime") String startTime, @Param("endTime") String endTime,@Param("userId") Long userId);
@Select("select count(*) from advert_data_count t inner join (select advertiser_id from advertiser_user_map where user_id=#{userId} and status=1) t1 on t.advertiser_id=t1.advertiser_id where report_date>= #{startTime} and report_date<=#{endTime}")
Integer getAdvertDataCount(@Param("startTime") String startTime, @Param("endTime") String endTime,@Param("userId") Long userId);
@Select("select advertiser_id advertiserId,advertiser_name advertiserName from advertiser_user_map t where user_id=#{userId} and status=1")
List<AdvertiserData> getAdvertiserByUserId(@Param("userId") Long userId);
//根据广告商di查广告id
@Select("select code_id codeId from advert_list t where advertiser_id=#{advertiserId}")
List<AdvertiserData> getAdvertDataById(@Param("advertiserId") Integer advertiserId);
//从advert_list查询所有的广告商id和广告商名称
@Select("select advertiser_id advertiserId,advertiser_name advertiserName from advert_list t group by advertiser_id,advertiser_name")
List<AdvertiserData> getAdvertiserData();
//从advertiser_user_map查询所有的用户
@Select("select user_id userId from advertiser_user_map t group by user_id")
List<AdvertiserData> getAdvertiserUserMap();
@Select("select *,advertiser_id advertiserId,advertiser_name,total_income totalIncome,income_seven incomeSeven,income_thirty incomeThirty,exposure_view exposureView,click_view clickView from advertiser_data_count t where advertiser_id=#{advertiserId}")
AdvertiserData getAdvertiserDataById(@Param("advertiserId") Integer advertiserId);
@Select("select minutes,sum(exposure) exposure,sum(click) click from advertiser_data_minutes t where advertiser_id=#{advertiserId} and report_date<=#{day} and report_date<=#{day} group by minutes")
List<AdvertiserData> getAdvertExCl(@Param("advertiserId") Integer advertiserId,@Param("day") String day);
@Select("select minutes,sum(exposure) exposure,sum(click) click from advertiser_data_minutes t where advertiser_id=#{advertiserId} and report_date<=#{day} and report_date<=#{day} and code_id=#{codeId} group by minutes")
List<AdvertiserData> getAdvertExCls(@Param("advertiserId") Integer advertiserId,@Param("codeId") String codeId,@Param("day") String day);
@Select("select report_date reportDate,sum(exposure) exposure,sum(click) click from advertiser_data_minutes t where advertiser_id=#{advertiserId} and report_date>=#{startTime} and report_date<=#{endTime} group by report_date")
List<AdvertiserData> getAdvertExClDay(@Param("advertiserId") Integer advertiserId,@Param("startTime") String startTime,@Param("endTime") String endTime);
@Select("select report_date reportDate,sum(exposure) exposure,sum(click) click from advertiser_data_minutes t where advertiser_id=#{advertiserId} and report_date>=#{startTime} and report_date<=#{endTime} and code_id=#{codeId} group by report_date")
List<AdvertiserData> getAdvertExClDays(@Param("advertiserId") Integer advertiserId,@Param("codeId") String codeId,@Param("startTime") String startTime,@Param("endTime") String endTime);
@Select("SELECT a.advertiser_id advertiserId,advertiser_name advertiserName,total_income totalIncome,exposure_view exposureView,click_view clickView,income,balance FROM(SELECT advertiser_id FROM advertiser_user_map WHERE user_id=#{userId} and status=1) a LEFT JOIN advertiser_data_count b ON a.advertiser_id=b.advertiser_id")
List<AdvertiserData> getAdvertiserDataByUserId(@Param("userId") Long userId);
@Select("SELECT count(*) FROM(SELECT advertiser_id FROM advertiser_user_map WHERE user_id=#{userId} and status=1) a LEFT JOIN advertiser_data_count b ON a.advertiser_id=b.advertiser_id")
int getAdvertiserDataByUserIdCount(@Param("userId") Long userId);
@Select("select report_date reportDate,advertiser_id advertiserId,advertiser_name advertiserName,code_id codeId,sum(exposure) exposure,sum(click) click from advertiser_data_minutes t where code_id=#{advertiserData.codeId} and report_date<=#{advertiserData.reportDate} and report_date<=#{advertiserData.reportDate} group by report_date,advertiser_id,advertiser_name,code_id")
AdvertiserData getCliExExcel(@Param("advertiserData") AdvertiserData advertiserData);
@Update("update advertiser_data_count set balance=#{balance},exposure_view=#{exposureView},click_view=#{clickView} where advertiser_id=#{advertiserId} ")
int updateAdvertiserData(@Param("advertiserId") Integer advertiserId,@Param("balance") Double balance,@Param("exposureView") Integer exposureView,@Param("clickView") Integer clickView);
int insertAdvertDataCount(List<AdvertiserData> list);
int insertAdvertiserDataCount(List<AdvertiserData> list);
int insertAdvertList(List<AdvertiserData> list);
int insertAdvertiserData(List<AdvertiserData> list);
int insertAdvertiserUserMap(List<AdvertiserData> list);
//获得总收入
@Select("SELECT advertiser_id advertiserId,advertiser_name advertiserName,SUM(income) totalIncome FROM advert_data_count GROUP BY advertiser_id,advertiser_name")
List<AdvertiserData> getAdvertiserDataTotalIncome();
int insertAdvertiserDataTotalIncome(List<AdvertiserData> list);
//获得昨日收入
@Select("SELECT advertiser_id,advertiser_name,SUM(income) income FROM advert_data_count WHERE report_date>=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 1 DAY) AND report_date<=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 1 DAY) GROUP BY advertiser_id,advertiser_name")
List<AdvertiserData> getAdvertiserDataIncome();
int insertAdvertiserDataIncome(List<AdvertiserData> list);
//获得七日收入
@Select("SELECT advertiser_id,advertiser_name,SUM(income) incomeSeven FROM advert_data_count WHERE report_date>=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 7 DAY) AND report_date<=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 1 DAY) GROUP BY advertiser_id,advertiser_name")
List<AdvertiserData> getAdvertiserDataSevenIncome();
int insertAdvertiserDataSevenIncome(List<AdvertiserData> list);
//获得三十日收入
@Select("SELECT advertiser_id,advertiser_name,SUM(income) incomeThirty FROM advert_data_count WHERE report_date>=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 30 DAY) AND report_date<=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 1 DAY) GROUP BY advertiser_id,advertiser_name")
List<AdvertiserData> getAdvertiserDataThirtyIncome();
int insertAdvertiserDataThirtyIncome(List<AdvertiserData> list);
//把分时曝光插入
int insertAdvertDataMinuteEx(List<AdvertiserData> list);
//把分时点击插入
int insertAdvertDataMinuteCl(List<AdvertiserData> list);
}
package com.boot.security.server.dao;
import com.boot.security.server.model.BaseSettlement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@Mapper
public interface CopyrightDao {
@Select("select roleId from sys_role_user where userId=#{userId}")
Integer selectRoleId(@Param("userId") Long userId);
@Select("SELECT a.report_date AS reportDate,a.copyright_id as copyrightId from bi_report.report_book_settlement_month_copyright a where a.release_status =1")
List<BaseSettlement> selectReleaseCopyright();
List<Long> selectUserAll();
List<BaseSettlement> selectTableListMonth(@Param("copyrightId") List<BaseSettlement> copyrightId,@Param("page") Integer page,@Param("limit")Integer limit,@Param("status") Integer status);
List<BaseSettlement> selectTableListMonthSchema(@Param("copyrightId") List<BaseSettlement> copyrightId,@Param("status") Integer status);
Integer selectTableListMonthCount(@Param("copyrightId") List<BaseSettlement> copyrightId,@Param("status") Integer status);
List<BaseSettlement> selectBookInfo(@Param("copyrightId") List<BaseSettlement> copyrightId,@Param("page") Integer page,@Param("limit")Integer limit);
Integer selectBookInfoCount(@Param("copyrightId") List<BaseSettlement> copyrightId);
List<BaseSettlement> selectCopyrightById(@Param("userId") Long userId);
@Select("SELECT a.copyright_id as copyrightId,a.copyright_name as copyrightName FROM bi_report.book_banquanweihu a group by a.copyright_id,a.copyright_name")
List<BaseSettlement> selectCopyrightAll();
List<BaseSettlement> selectBookDetail(@Param("copyrightIdList") List<BaseSettlement> copyrightIdList,@Param("bookId") Long bookId,@Param("bookName") String bookName,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("page") Integer page,@Param("limit")Integer limit);
Integer selectBookDetailCount(@Param("copyrightIdList") List<BaseSettlement> copyrightIdList,@Param("bookId") Long bookId,@Param("bookName") String bookName,@Param("startTime") String startTime,@Param("endTime") String endTime);
@Update("update bi_report.report_book_settlement_month_copyright set jiesuan_status=#{status},jiesuan_status_name=#{statusName} where report_date=#{reportDate} and copyright_id=#{copyrightId}")
int updateSettlementStatus(@Param("copyrightId") Integer copyrightId,@Param("reportDate") String reportDate,@Param("status") Integer status,@Param("statusName") String statusName);
@Update("update bi_report.report_book_settlement_month_copyright set release_status=#{releaseStatus},release_status_name=#{releaseStatusName} where report_date=#{reportDate} and copyright_id=#{copyrightId}")
int updateReleaseStatus(@Param("copyrightId") Integer copyrightId,@Param("reportDate") String reportDate,@Param("releaseStatus") Integer releaseStatus,@Param("releaseStatusName") String releaseStatusName);
int updateUserCopyrightMap(List<BaseSettlement> baseSettlements);
@Select("select create_month reportDate,copyright_id copyrightId,copyright_name copyrightName,type,type_name typeName,context from copyright_data.copyright_deduction order by create_month limit #{page},#{limit}")
List<BaseSettlement> getDeductionConfig(@Param("page") Integer page,@Param("limit")Integer limit);
@Select("select create_month reportDate,copyright_id copyrightId,copyright_name copyrightName,type,type_name typeName,context from copyright_data.copyright_deduction")
List<BaseSettlement> getDeductionConfigCount();
@Update("update copyright_data.copyright_deduction set type=#{type},type_name=#{typeName},context=#{context} where copyright_id=#{copyrightId} and create_month=#{reportDate}")
int updateDeductionConfig(@Param("copyrightId") Integer copyrightId,@Param("typeName") String typeName,@Param("type") Integer type,@Param("context") String context,@Param("reportDate") String reportDate,@Param("page") Integer page,@Param("limit") Integer limit);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.boot.security.server.model.Dict;
@Mapper
public interface DictDao {
@Select("select * from t_dict t where t.id = #{id}")
Dict getById(Long id);
@Delete("delete from t_dict where id = #{id}")
int delete(Long id);
int update(Dict dict);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into t_dict(type, k, val, createTime, updateTime) values(#{type}, #{k}, #{val}, now(), now())")
int save(Dict dict);
int count(@Param("params") Map<String, Object> params);
List<Dict> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Select("select * from t_dict t where t.type = #{type} and k = #{k}")
Dict getByTypeAndK(@Param("type") String type, @Param("k") String k);
@Select("select * from t_dict t where t.type = #{type}")
List<Dict> listByType(String type);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.boot.security.server.model.FileInfo;
@Mapper
public interface FileInfoDao {
@Select("select * from file_info t where t.id = #{id}")
FileInfo getById(String id);
@Insert("insert into file_info(id, contentType, size, path, url, type, createTime, updateTime) values(#{id}, #{contentType}, #{size}, #{path}, #{url}, #{type}, now(), now())")
int save(FileInfo fileInfo);
@Update("update file_info t set t.updateTime = now() where t.id = #{id}")
int update(FileInfo fileInfo);
@Delete("delete from file_info where id = #{id}")
int delete(String id);
int count(@Param("params") Map<String, Object> params);
List<FileInfo> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.boot.security.server.model.JobModel;
@Mapper
public interface JobDao {
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into t_job(jobName, description, cron, springBeanName, methodName, isSysJob, status, createTime, updateTime) values(#{jobName}, #{description}, #{cron}, #{springBeanName}, #{methodName}, #{isSysJob}, 1, now(), now())")
int save(JobModel jobModel);
@Select("select * from t_job t where t.id = #{id}")
JobModel getById(Long id);
@Select("select * from t_job t where t.jobName = #{jobName}")
JobModel getByName(String jobName);
int update(JobModel jobModel);
int count(@Param("params") Map<String, Object> params);
List<JobModel> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.boot.security.server.model.Mail;
import com.boot.security.server.model.MailTo;
@Mapper
public interface MailDao {
@Select("select * from t_mail t where t.id = #{id}")
Mail getById(Long id);
// @Delete("delete from t_mail where id = #{id}")
// int delete(Long id);
// @Update("update t_mail t set subject = #{subject}, content = #{content}, updateTime = now() where t.id = #{id}")
// int update(Mail mail);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into t_mail(userId, subject, content, createTime, updateTime) values(#{userId}, #{subject}, #{content}, now(), now())")
int save(Mail mail);
@Insert("insert into t_mail_to(mailId, toUser, status) values(#{mailId}, #{toUser}, #{status})")
int saveToUser(@Param("mailId") Long mailId, @Param("toUser") String toUser, @Param("status") int status);
@Select("select t.* from t_mail_to t where t.mailId = #{mailId}")
List<MailTo> getToUsers(Long mailId);
int count(@Param("params") Map<String, Object> params);
List<Mail> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.boot.security.server.dto.NoticeReadVO;
import com.boot.security.server.model.Notice;
import com.boot.security.server.model.SysUser;
@Mapper
public interface NoticeDao {
@Select("select * from t_notice t where t.id = #{id}")
Notice getById(Long id);
@Delete("delete from t_notice where id = #{id}")
int delete(Long id);
@Update("update t_notice t set title = #{title}, content = #{content}, status = #{status}, updateTime = #{updateTime} where t.id = #{id}")
int update(Notice notice);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into t_notice(title, content, status, createTime, updateTime) values(#{title}, #{content}, #{status}, #{createTime}, #{updateTime})")
int save(Notice notice);
int count(@Param("params") Map<String, Object> params);
List<Notice> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Insert("insert ignore into t_notice_read(noticeId, userId, createTime) values(#{noticeId}, #{userId}, now())")
int saveReadRecord(@Param("noticeId") Long noticeId, @Param("userId") Long userId);
List<SysUser> listReadUsers(Long noticeId);
@Select("select count(1) from t_notice t left join t_notice_read r on r.noticeId = t.id and r.userId = #{userId} where t.status = 1 and r.userId is null")
int countUnread(Long userId);
int countNotice(@Param("params") Map<String, Object> params);
List<NoticeReadVO> listNotice(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Set;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.boot.security.server.model.Permission;
@Mapper
public interface PermissionDao {
@Select("select * from sys_permission t order by t.sort")
List<Permission> listAll();
@Select("select * from sys_permission t where t.type = 1 order by t.sort")
List<Permission> listParents();
@Select("select distinct p.* from sys_permission p inner join sys_role_permission rp on p.id = rp.permissionId inner join sys_role_user ru on ru.roleId = rp.roleId where ru.userId = #{userId} order by p.sort")
List<Permission> listByUserId(Long userId);
@Select("select p.* from sys_permission p inner join sys_role_permission rp on p.id = rp.permissionId where rp.roleId = #{roleId} order by p.sort")
List<Permission> listByRoleId(Long roleId);
@Select("select * from sys_permission t where t.id = #{id}")
Permission getById(Long id);
@Insert("insert into sys_permission(parentId, name, css, href, type, permission, sort) values(#{parentId}, #{name}, #{css}, #{href}, #{type}, #{permission}, #{sort})")
int save(Permission permission);
@Update("update sys_permission t set parentId = #{parentId}, name = #{name}, css = #{css}, href = #{href}, type = #{type}, permission = #{permission}, sort = #{sort} where t.id = #{id}")
int update(Permission permission);
@Delete("delete from sys_permission where id = #{id}")
int delete(Long id);
@Delete("delete from sys_permission where parentId = #{id}")
int deleteByParentId(Long id);
@Delete("delete from sys_role_permission where permissionId = #{permissionId}")
int deleteRolePermission(Long permissionId);
@Select("select ru.userId from sys_role_permission rp inner join sys_role_user ru on ru.roleId = rp.roleId where rp.permissionId = #{permissionId}")
Set<Long> listUserIds(Long permissionId);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.boot.security.server.model.Role;
@Mapper
public interface RoleDao {
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into sys_role(name, description, createTime, updateTime) values(#{name}, #{description}, now(),now())")
int save(Role role);
int count(@Param("params") Map<String, Object> params);
List<Role> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Select("select * from sys_role t where t.id = #{id}")
Role getById(Long id);
@Select("select * from sys_role t where t.name = #{name}")
Role getRole(String name);
@Update("update sys_role t set t.name = #{name}, t.description = #{description}, updateTime = now() where t.id = #{id}")
int update(Role role);
@Select("select * from sys_role r inner join sys_role_user ru on r.id = ru.roleId where ru.userId = #{userId}")
List<Role> listByUserId(Long userId);
@Delete("delete from sys_role_permission where roleId = #{roleId}")
int deleteRolePermission(Long roleId);
int saveRolePermission(@Param("roleId") Long roleId, @Param("permissionIds") List<Long> permissionIds);
@Delete("delete from sys_role where id = #{id}")
int delete(Long id);
@Delete("delete from sys_role_user where roleId = #{roleId}")
int deleteRoleUser(Long roleId);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.boot.security.server.model.SysLogs;
@Mapper
public interface SysLogsDao {
@Insert("insert into sys_logs(userId, module, flag, remark, createTime) values(#{user.id}, #{module}, #{flag}, #{remark}, now())")
int save(SysLogs sysLogs);
int count(@Param("params") Map<String, Object> params);
List<SysLogs> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Delete("delete from sys_logs where createTime <= #{time}")
int deleteLogs(String time);
}
package com.boot.security.server.dao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.boot.security.server.model.TokenModel;
@Mapper
public interface TokenDao {
@Insert("insert into t_token(id, val, expireTime, createTime, updateTime) values (#{id}, #{val}, #{expireTime}, #{createTime}, #{updateTime})")
int save(TokenModel model);
@Select("select * from t_token t where t.id = #{id}")
TokenModel getById(String id);
@Update("update t_token t set t.val = #{val}, t.expireTime = #{expireTime}, t.updateTime = #{updateTime} where t.id = #{id}")
int update(TokenModel model);
@Delete("delete from t_token where id = #{id}")
int delete(String id);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import com.boot.security.server.model.AdvertiserUserMap;
import com.boot.security.server.model.BaseSettlement;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.boot.security.server.model.SysUser;
@Mapper
public interface UserDao {
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into sys_user(username, password, nickname, headImgUrl, phone, telephone, email, birthday, sex, status, createTime, updateTime) values(#{username}, #{password}, #{nickname}, #{headImgUrl}, #{phone}, #{telephone}, #{email}, #{birthday}, #{sex}, #{status}, now(), now())")
int save(SysUser user);
int insertCopyrightUserMap(@Param("userId") Long userId, @Param("copyrightUserMap") List<BaseSettlement> baseSettlement);
@Select("select * from sys_user t where t.id = #{id}")
SysUser getById(Long id);
//查询所有的广告商
@Select("SELECT a.copyright_id as copyrightId,a.copyright_name as copyrightName FROM bi_report.book_banquanweihu a group by a.copyright_id,a.copyright_name")
List<BaseSettlement> getCopyrightAll();
//查询广告商用户的映射关系
List<BaseSettlement> getCopyrightUserMap();
@Select("select * from sys_user t where t.username = #{username}")
SysUser getUser(String username);
@Update("update sys_user t set t.password = #{password} where t.id = #{id}")
int changePassword(@Param("id") Long id, @Param("password") String password);
Integer count(@Param("params") Map<String, Object> params);
Integer countCopyrightUserMap(@Param("params") Map<String, Object> params);
List<SysUser> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Delete("delete from sys_role_user where userId = #{userId}")
int deleteUserRole(Long userId);
int saveUserRoles(@Param("userId") Long userId, @Param("roleIds") List<Long> roleIds);
int updateBaseSettlementUserMap(@Param("userId") Long userId, @Param("baseSettlementMap") List<BaseSettlement> baseSettlements);
int update(SysUser user);
}
package com.boot.security.server.dto;
import java.io.Serializable;
public class BeanField implements Serializable {
private static final long serialVersionUID = 4279960350136806659L;
private String columnName;
private String columnType;
private String columnComment;
private String columnDefault;
private String name;
private String type;
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getColumnType() {
return columnType;
}
public void setColumnType(String columnType) {
this.columnType = columnType;
}
public String getColumnComment() {
return columnComment;
}
public void setColumnComment(String columnComment) {
this.columnComment = columnComment;
}
public String getColumnDefault() {
return columnDefault;
}
public void setColumnDefault(String columnDefault) {
this.columnDefault = columnDefault;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package com.boot.security.server.dto;
import java.io.Serializable;
import java.util.List;
public class GenerateDetail implements Serializable {
private static final long serialVersionUID = -164567294469931676L;
private String beanName;
private List<BeanField> fields;
public String getBeanName() {
return beanName;
}
public void setBeanName(String beanName) {
this.beanName = beanName;
}
public List<BeanField> getFields() {
return fields;
}
public void setFields(List<BeanField> fields) {
this.fields = fields;
}
}
package com.boot.security.server.dto;
import java.io.Serializable;
import java.util.List;
public class GenerateInput implements Serializable {
private static final long serialVersionUID = -2870071259702969061L;
/**
* 保存路径
*/
private String path;
private String tableName;
/**
* bean包名
*/
private String beanPackageName;
/**
* java类名
*/
private String beanName;
/**
* dao包名
*/
private String daoPackageName;
/**
* dao类名
*/
private String daoName;
/**
* controller包名
*/
private String controllerPkgName;
/**
* controller类名
*/
private String controllerName;
/**
* 字段名
*/
private List<String> columnNames;
/**
* 属性名
*/
private List<String> beanFieldName;
/**
* 成员变量类型
*/
private List<String> beanFieldType;
/**
* 默认值
*/
private List<String> beanFieldValue;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getBeanPackageName() {
return beanPackageName;
}
public void setBeanPackageName(String beanPackageName) {
this.beanPackageName = beanPackageName;
}
public String getBeanName() {
return beanName;
}
public void setBeanName(String beanName) {
this.beanName = beanName;
}
public String getDaoPackageName() {
return daoPackageName;
}
public void setDaoPackageName(String daoPackageName) {
this.daoPackageName = daoPackageName;
}
public String getDaoName() {
return daoName;
}
public void setDaoName(String daoName) {
this.daoName = daoName;
}
public String getControllerPkgName() {
return controllerPkgName;
}
public void setControllerPkgName(String controllerPkgName) {
this.controllerPkgName = controllerPkgName;
}
public String getControllerName() {
return controllerName;
}
public void setControllerName(String controllerName) {
this.controllerName = controllerName;
}
public List<String> getColumnNames() {
return columnNames;
}
public void setColumnNames(List<String> columnNames) {
this.columnNames = columnNames;
}
public List<String> getBeanFieldName() {
return beanFieldName;
}
public void setBeanFieldName(List<String> beanFieldName) {
this.beanFieldName = beanFieldName;
}
public List<String> getBeanFieldType() {
return beanFieldType;
}
public void setBeanFieldType(List<String> beanFieldType) {
this.beanFieldType = beanFieldType;
}
public List<String> getBeanFieldValue() {
return beanFieldValue;
}
public void setBeanFieldValue(List<String> beanFieldValue) {
this.beanFieldValue = beanFieldValue;
}
}
package com.boot.security.server.dto;
import java.io.Serializable;
public class LayuiFile implements Serializable {
private static final long serialVersionUID = 35435494737590569L;
private Integer code;
private String msg;
private LayuiFileData data;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public LayuiFileData getData() {
return data;
}
public void setData(LayuiFileData data) {
this.data = data;
}
public static class LayuiFileData implements Serializable {
private static final long serialVersionUID = 7907356434695924597L;
private String src;
private String title;
public String getSrc() {
return src;
}
public void setSrc(String src) {
this.src = src;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
}
package com.boot.security.server.dto;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.util.StringUtils;
import com.boot.security.server.model.Permission;
import com.boot.security.server.model.SysUser;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class LoginUser extends SysUser implements UserDetails {
private static final long serialVersionUID = -1379274258881257107L;
private List<Permission> permissions;
private String token;
/** 登陆时间戳(毫秒) */
private Long loginTime;
/** 过期时间戳 */
private Long expireTime;
public List<Permission> getPermissions() {
return permissions;
}
public void setPermissions(List<Permission> permissions) {
this.permissions = permissions;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
@Override
@JsonIgnore
public Collection<? extends GrantedAuthority> getAuthorities() {
return permissions.parallelStream().filter(p -> !StringUtils.isEmpty(p.getPermission()))
.map(p -> new SimpleGrantedAuthority(p.getPermission())).collect(Collectors.toSet());
}
public void setAuthorities(Collection<? extends GrantedAuthority> authorities) {
// do nothing
}
// 账户是否未过期
@JsonIgnore
@Override
public boolean isAccountNonExpired() {
return true;
}
// 账户是否未锁定
@JsonIgnore
@Override
public boolean isAccountNonLocked() {
return getStatus() != Status.LOCKED;
}
// 密码是否未过期
@JsonIgnore
@Override
public boolean isCredentialsNonExpired() {
return true;
}
// 账户是否激活
@JsonIgnore
@Override
public boolean isEnabled() {
return true;
}
public Long getLoginTime() {
return loginTime;
}
public void setLoginTime(Long loginTime) {
this.loginTime = loginTime;
}
public Long getExpireTime() {
return expireTime;
}
public void setExpireTime(Long expireTime) {
this.expireTime = expireTime;
}
}
package com.boot.security.server.dto;
import java.util.Date;
import com.boot.security.server.model.Notice;
public class NoticeReadVO extends Notice {
private static final long serialVersionUID = -3842182350180882396L;
private Long userId;
private Date readTime;
private Boolean isRead;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Date getReadTime() {
return readTime;
}
public void setReadTime(Date readTime) {
this.readTime = readTime;
}
public Boolean getIsRead() {
return isRead;
}
public void setIsRead(Boolean isRead) {
this.isRead = isRead;
}
}
package com.boot.security.server.dto;
import java.io.Serializable;
import java.util.List;
import com.boot.security.server.model.Notice;
import com.boot.security.server.model.SysUser;
public class NoticeVO implements Serializable {
private static final long serialVersionUID = 7363353918096951799L;
private Notice notice;
private List<SysUser> users;
public Notice getNotice() {
return notice;
}
public void setNotice(Notice notice) {
this.notice = notice;
}
public List<SysUser> getUsers() {
return users;
}
public void setUsers(List<SysUser> users) {
this.users = users;
}
}
package com.boot.security.server.dto;
import java.io.Serializable;
public class ResponseInfo implements Serializable {
private static final long serialVersionUID = -4417715614021482064L;
private String code;
private String message;
public ResponseInfo(String code, String message) {
super();
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.boot.security.server.dto;
import java.util.List;
import com.boot.security.server.model.Role;
public class RoleDto extends Role {
private static final long serialVersionUID = 4218495592167610193L;
private List<Long> permissionIds;
public List<Long> getPermissionIds() {
return permissionIds;
}
public void setPermissionIds(List<Long> permissionIds) {
this.permissionIds = permissionIds;
}
}
package com.boot.security.server.dto;
import java.io.Serializable;
/**
* Restful方式登陆token
*
* @author maliang
*
* 2017年8月4日
*/
public class Token implements Serializable {
private static final long serialVersionUID = 6314027741784310221L;
private String token;
/** 登陆时间戳(毫秒) */
private Long loginTime;
public Token(String token, Long loginTime) {
super();
this.token = token;
this.loginTime = loginTime;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public Long getLoginTime() {
return loginTime;
}
public void setLoginTime(Long loginTime) {
this.loginTime = loginTime;
}
}
package com.boot.security.server.dto;
import java.util.List;
import com.boot.security.server.model.SysUser;
public class UserDto extends SysUser {
private static final long serialVersionUID = -184009306207076712L;
private List<Long> roleIds;
public List<Long> getRoleIds() {
return roleIds;
}
public void setRoleIds(List<Long> roleIds) {
this.roleIds = roleIds;
}
}
package com.boot.security.server.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import com.boot.security.server.dto.LoginUser;
import com.boot.security.server.service.TokenService;
/**
* Token过滤器
*
* @author maliang
*
* 2017年10月14日
*/
@Component
public class TokenFilter extends OncePerRequestFilter {
public static final String TOKEN_KEY = "token";
@Autowired
private TokenService tokenService;
@Autowired
private UserDetailsService userDetailsService;
private static final Long MINUTES_10 = 10 * 60 * 1000L;
//给token延长时间并且保存登录用户的信息
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String token = getToken(request);
if (StringUtils.isNotBlank(token)) {
LoginUser loginUser = tokenService.getLoginUser(token);
if (loginUser != null) {
loginUser = checkLoginTime(loginUser);
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loginUser,
null, loginUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
}
}
filterChain.doFilter(request, response);
}
/**
* 校验时间<br>
* 过期时间与当前时间对比,临近过期10分钟内的话,自动刷新缓存
*
* @param loginUser
* @return
*/
private LoginUser checkLoginTime(LoginUser loginUser) {
long expireTime = loginUser.getExpireTime();
long currentTime = System.currentTimeMillis();
if (expireTime - currentTime <= MINUTES_10) {
String token = loginUser.getToken();
loginUser = (LoginUser) userDetailsService.loadUserByUsername(loginUser.getUsername());
loginUser.setToken(token);
tokenService.refresh(loginUser);
}
return loginUser;
}
/**
* 根据参数或者header获取token
*
* @param request
* @return
*/
public static String getToken(HttpServletRequest request) {
String token = request.getParameter(TOKEN_KEY);
if (StringUtils.isBlank(token)) {
token = request.getHeader(TOKEN_KEY);
}
return token;
}
}
package com.boot.security.server.job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.boot.security.server.config.JobConfig;
import com.boot.security.server.service.JobService;
public class SpringBeanJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
try {
ApplicationContext applicationContext = (ApplicationContext) context.getScheduler().getContext()
.get(JobConfig.KEY);
JobService jobService = applicationContext.getBean(JobService.class);
jobService.doJob(context.getJobDetail().getJobDataMap());
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
package com.boot.security.server.model;
public class AdvertiserData {
public String reportDate;
public Integer advertiserId;
public String advertiserName;
public String codeId;
public String codeName;
public Double ecpm;
public Double cpc;
public Integer exposure;
public Integer click;
public Double income;
public Double balance;
public Double totalIncome;
public Double incomeSeven;
public Double incomeThirty;
public Integer exposureView;
public Integer clickView;
public String minutes;
public Integer platformId;
public Long userId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getPlatformId() {
return platformId;
}
public void setPlatformId(Integer platformId) {
this.platformId = platformId;
}
public String getCodeName() {
return codeName;
}
public void setCodeName(String codeName) {
this.codeName = codeName;
}
public String getMinutes() {
return minutes;
}
public void setMinutes(String minutes) {
this.minutes = minutes;
}
public Double getBalance() {
return balance;
}
public void setBalance(Double balance) {
this.balance = balance;
}
public Double getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(Double totalIncome) {
this.totalIncome = totalIncome;
}
public Double getIncomeSeven() {
return incomeSeven;
}
public void setIncomeSeven(Double incomeSeven) {
this.incomeSeven = incomeSeven;
}
public Double getIncomeThirty() {
return incomeThirty;
}
public void setIncomeThirty(Double incomeThirty) {
this.incomeThirty = incomeThirty;
}
public Integer getExposureView() {
return exposureView;
}
public void setExposureView(Integer exposureView) {
this.exposureView = exposureView;
}
public Integer getClickView() {
return clickView;
}
public void setClickView(Integer clickView) {
this.clickView = clickView;
}
public String getReportDate() {
return reportDate;
}
public void setReportDate(String reportDate) {
this.reportDate = reportDate;
}
public Integer getAdvertiserId() {
return advertiserId;
}
public void setAdvertiserId(Integer advertiserId) {
this.advertiserId = advertiserId;
}
public String getAdvertiserName() {
return advertiserName;
}
public void setAdvertiserName(String advertiserName) {
this.advertiserName = advertiserName;
}
public String getCodeId() {
return codeId;
}
public void setCodeId(String codeId) {
this.codeId = codeId;
}
public Double getEcpm() {
return ecpm;
}
public void setEcpm(Double ecpm) {
this.ecpm = ecpm;
}
public Double getCpc() {
return cpc;
}
public void setCpc(Double cpc) {
this.cpc = cpc;
}
public Integer getExposure() {
return exposure;
}
public void setExposure(Integer exposure) {
this.exposure = exposure;
}
public Integer getClick() {
return click;
}
public void setClick(Integer click) {
this.click = click;
}
public Double getIncome() {
return income;
}
public void setIncome(Double income) {
this.income = income;
}
}
package com.boot.security.server.model;
public class AdvertiserUserMap {
public Long userId;
public String nickname;
public Integer advertiserId;
public String advertiserName;
public Integer status=0;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getAdvertiserId() {
return advertiserId;
}
public void setAdvertiserId(Integer advertiserId) {
this.advertiserId = advertiserId;
}
public String getAdvertiserName() {
return advertiserName;
}
public void setAdvertiserName(String advertiserName) {
this.advertiserName = advertiserName;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
package com.boot.security.server.model;
import java.io.Serializable;
import java.util.Date;
public abstract class BaseEntity<ID extends Serializable> implements Serializable {
private static final long serialVersionUID = 2054813493011812469L;
private ID id;
private Date createTime = new Date();
private Date updateTime = new Date();
public ID getId() {
return id;
}
public void setId(ID id) {
this.id = id;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
package com.boot.security.server.model;
public class BaseSettlement extends BaseEntity<Long>{
public Long userId;
public String nickname;
public String reportDate;
public Integer copyrightId;
public String copyrightName;
public String copyright_start_date;
public String copyright_end_date;
public String fencheng_ratio;
public String kouliang_ratio;
public String batch_id;
public String batch_name;
public Integer cpId;
public String bookId;
public String bookName;
public String authors;
public Double totalAmount;
public Double settlementAmount;
public String kouliang_amount;
public String all_consume;
public Double totalAdvertAmount;
public Double settlementAdAmount;
public String kouliang_ad_amount;
public Double countSettlement;
public Integer status;
public String statusName;
public String releaseStatusName;
public Integer releaseStatus;
public Integer type;
public String typeName;
public String context;
public Double bookRadio;
public Double bookAdRadio;
public Double getBookAdRadio() {
return bookAdRadio;
}
public void setBookAdRadio(Double bookAdRadio) {
this.bookAdRadio = bookAdRadio;
}
public Double getBookRadio() {
return bookRadio;
}
public void setBookRadio(Double bookRadio) {
this.bookRadio = bookRadio;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getContext() {
return context;
}
public void setContext(String context) {
this.context = context;
}
public String getReleaseStatusName() {
return releaseStatusName;
}
public void setReleaseStatusName(String releaseStatusName) {
this.releaseStatusName = releaseStatusName;
}
public Integer getReleaseStatus() {
return releaseStatus;
}
public void setReleaseStatus(Integer releaseStatus) {
this.releaseStatus = releaseStatus;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getCpId() {
return cpId;
}
public void setCpId(Integer cpId) {
this.cpId = cpId;
}
public Double getCountSettlement() {
return countSettlement;
}
public void setCountSettlement(Double countSettlement) {
this.countSettlement = countSettlement;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getStatusName() {
return statusName;
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
public String getReportDate() {
return reportDate;
}
public void setReportDate(String reportDate) {
this.reportDate = reportDate;
}
public String getCopyright_start_date() {
return copyright_start_date;
}
public void setCopyright_start_date(String copyright_start_date) {
this.copyright_start_date = copyright_start_date;
}
public String getCopyright_end_date() {
return copyright_end_date;
}
public void setCopyright_end_date(String copyright_end_date) {
this.copyright_end_date = copyright_end_date;
}
public String getFencheng_ratio() {
return fencheng_ratio;
}
public void setFencheng_ratio(String fencheng_ratio) {
this.fencheng_ratio = fencheng_ratio;
}
public String getKouliang_ratio() {
return kouliang_ratio;
}
public void setKouliang_ratio(String kouliang_ratio) {
this.kouliang_ratio = kouliang_ratio;
}
public String getBatch_id() {
return batch_id;
}
public void setBatch_id(String batch_id) {
this.batch_id = batch_id;
}
public String getBatch_name() {
return batch_name;
}
public void setBatch_name(String batch_name) {
this.batch_name = batch_name;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthors() {
return authors;
}
public void setAuthors(String authors) {
this.authors = authors;
}
public String getKouliang_amount() {
return kouliang_amount;
}
public void setKouliang_amount(String kouliang_amount) {
this.kouliang_amount = kouliang_amount;
}
public String getAll_consume() {
return all_consume;
}
public void setAll_consume(String all_consume) {
this.all_consume = all_consume;
}
public Double getSettlementAmount() {
return settlementAmount;
}
public void setSettlementAmount(Double settlementAmount) {
this.settlementAmount = settlementAmount;
}
public Double getSettlementAdAmount() {
return settlementAdAmount;
}
public void setSettlementAdAmount(Double settlementAdAmount) {
this.settlementAdAmount = settlementAdAmount;
}
public String getKouliang_ad_amount() {
return kouliang_ad_amount;
}
public void setKouliang_ad_amount(String kouliang_ad_amount) {
this.kouliang_ad_amount = kouliang_ad_amount;
}
public Integer getCopyrightId() {
return copyrightId;
}
public void setCopyrightId(Integer copyrightId) {
this.copyrightId = copyrightId;
}
public String getCopyrightName() {
return copyrightName;
}
public void setCopyrightName(String copyrightName) {
this.copyrightName = copyrightName;
}
public Double getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(Double totalAmount) {
this.totalAmount = totalAmount;
}
public Double getTotalAdvertAmount() {
return totalAdvertAmount;
}
public void setTotalAdvertAmount(Double totalAdvertAmount) {
this.totalAdvertAmount = totalAdvertAmount;
}
}
package com.boot.security.server.model;
public class Dict extends BaseEntity<Long> {
private static final long serialVersionUID = -2431140186410912787L;
private String type;
private String k;
private String val;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getK() {
return k;
}
public void setK(String k) {
this.k = k;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}
package com.boot.security.server.model;
public class FileInfo extends BaseEntity<String> {
private static final long serialVersionUID = -5761547882766615438L;
private String contentType;
private long size;
private String path;
private String url;
private Integer type;
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
}
package com.boot.security.server.model;
public class JobModel extends BaseEntity<Long> {
private static final long serialVersionUID = -2458935535811207209L;
private String jobName;
private String description;
private String cron;
private String springBeanName;
private String methodName;
private Boolean isSysJob;
private int status;
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCron() {
return cron;
}
public void setCron(String cron) {
this.cron = cron;
}
public String getSpringBeanName() {
return springBeanName;
}
public void setSpringBeanName(String springBeanName) {
this.springBeanName = springBeanName;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public Boolean getIsSysJob() {
return isSysJob;
}
public void setIsSysJob(Boolean isSysJob) {
this.isSysJob = isSysJob;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
package com.boot.security.server.model;
public class Mail extends BaseEntity<Long> {
private static final long serialVersionUID = 5613231124043303948L;
private Long userId;
private String toUsers;
private String subject;
private String content;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getToUsers() {
return toUsers;
}
public void setToUsers(String toUsers) {
this.toUsers = toUsers;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package com.boot.security.server.model;
public class MailTo extends BaseEntity<Long> {
private static final long serialVersionUID = -8238779033956731073L;
private Long mailId;
private String toUser;
private Boolean status;
public Long getMailId() {
return mailId;
}
public void setMailId(Long mailId) {
this.mailId = mailId;
}
public String getToUser() {
return toUser;
}
public void setToUser(String toUser) {
this.toUser = toUser;
}
public Boolean getStatus() {
return status;
}
public void setStatus(Boolean status) {
this.status = status;
}
}
package com.boot.security.server.model;
public class Notice extends BaseEntity<Long> {
private static final long serialVersionUID = -4401913568806243090L;
private String title;
private String content;
private Integer status;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public interface Status {
int DRAFT = 0;
int PUBLISH = 1;
}
}
package com.boot.security.server.model;
import java.util.List;
public class Permission extends BaseEntity<Long> {
private static final long serialVersionUID = 6180869216498363919L;
private Long parentId;
private String name;
private String css;
private String href;
private Integer type;
private String permission;
private Integer sort;
private List<Permission> child;
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCss() {
return css;
}
public void setCss(String css) {
this.css = css;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getPermission() {
return permission;
}
public void setPermission(String permission) {
this.permission = permission;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public List<Permission> getChild() {
return child;
}
public void setChild(List<Permission> child) {
this.child = child;
}
}
package com.boot.security.server.model;
public class Role extends BaseEntity<Long> {
private static final long serialVersionUID = -3802292814767103648L;
private String name;
private String description;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
package com.boot.security.server.model;
public class SysLogs extends BaseEntity<Long> {
private static final long serialVersionUID = -7809315432127036583L;
private SysUser user;
private String module;
private Boolean flag;
private String remark;
public SysUser getUser() {
return user;
}
public void setUser(SysUser user) {
this.user = user;
}
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
}
public Boolean getFlag() {
return flag;
}
public void setFlag(Boolean flag) {
this.flag = flag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
This diff is collapsed.
package com.boot.security.server.model;
import java.util.Date;
public class TokenModel extends BaseEntity<String> {
private static final long serialVersionUID = 4566334160572911795L;
/**
* 过期时间
*/
private Date expireTime;
/**
* LoginUser的json串
*/
private String val;
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment