Commit 5bc75ca2 by chongli

init project

parents
Showing with 4797 additions and 0 deletions
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<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>fun-member</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<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-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<finalName>fun-member</finalName>
</build>
</project>
\ No newline at end of file
package com.boot.security.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* 启动类
*
*
*
*/
@SpringBootApplication
public class SecurityApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SecurityApplication.class);
}
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异常处理
*
*
*
*/
@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;
/**
* 统一日志处理
*
*
*
* 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);
}
}
}
}
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;
/**
* 日志注解
*
*
*
* 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;
/**
* 线程池配置、启用异步
*
*
*
* 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
*
*
*
*/
@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;
}
/**
* 数据源配置
*
*
*
*/
@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>
* 单机下不需要
*
*
*
* 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;
/**
* spring security配置
*
*
*
* 2017年10月16日
*
*/
@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();
http.addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
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 com.boot.security.server.dto.*;
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.filter.TokenFilter;
import com.boot.security.server.service.TokenService;
import com.boot.security.server.utils.ResponseUtil;
/**
* spring security处理器
*
*
*
* 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);
Response<Token> response_info = new Response<Token>(ResponseStatusEnum.SUCCESS,null);
response_info.setData(token);
ResponseUtil.responseJson(response, HttpStatus.OK.value(), response_info);
}
};
}
/**
* 登陆失败
*
* @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文档
*
*
*
* 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("小威老师", "", "xiaoweijiagou@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.boot.security.server.dao.AbstractDao;
import com.boot.security.server.dto.*;
import com.boot.security.server.page.table.PageTableRequest;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class AbstractController<T> {
@PostMapping
@ApiOperation(value = "保存")
public Response<String> save(@RequestBody T entity) {
Response<String> response = new Response<String>(ResponseStatusEnum.SUCCESS,null);
this.getAbstractDao().save(entity);
response.setData("success");
return response;
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取")
public Response<T> get(@PathVariable Long id) {
Response<T> response = new Response<T>(ResponseStatusEnum.SUCCESS,null);
response.setStatusEnum(ResponseStatusEnum.SUCCESS);
response.setData(this.getAbstractDao().getById(id));
return response;
}
@GetMapping("uid/{uid}")
@ApiOperation(value = "根据UID获取")
public Response<T> getUserCommuneRelation(@PathVariable String uid) {
Response<T> response = new Response<T>(ResponseStatusEnum.SUCCESS,null);
Map<String, Object> map = new HashMap<String, Object>();
map.put("uid",uid);
List<T> list = this.getAbstractDao().list((Map<String, Object>) map, 0,100);
if (list.size()>0){
response.setData(list.get(0));
}else {
response.setData(null);
}
return response;
}
@PutMapping
@ApiOperation(value = "修改")
public Response<String> update(@RequestBody T entity) {
Response<String> response = new Response<String>(ResponseStatusEnum.SUCCESS,null);
this.getAbstractDao().update(entity);
response.setData("success");
return response;
}
@GetMapping
@ApiOperation(value = "列表")
public Response<PageData> list(PageTableRequest request) {
Response<PageData> response = new Response<PageData>(ResponseStatusEnum.SUCCESS,null);
int count = this.getAbstractDao().count(request.getParams());
List<T> list = this.getAbstractDao().list(request.getParams(), (request.getCurrent()-1)*request.getPageSize(),request.getPageSize());
Pagination pagination = new Pagination(count,request.getCurrent(), request.getPageSize());
PageData<T> pageData = new PageData<T>(list,pagination);
response.setData(pageData);
return response;
}
@DeleteMapping("/{id}")
@ApiOperation(value = "删除")
public Response<String> delete(@PathVariable Long id) {
Response<String> response = new Response<String>(ResponseStatusEnum.SUCCESS,null);
this.getAbstractDao().delete(id);
response.setData("success");
return response;
}
protected abstract AbstractDao<T> getAbstractDao();
}
package com.boot.security.server.controller;
import com.boot.security.server.dao.AbstractDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.model.BscUserext;
@RestController
@RequestMapping("/bscUserexts")
public class BscUserextController extends AbstractController<BscUserext> {
@Autowired
private AbstractDao<BscUserext> bscUserextDao;
public AbstractDao<BscUserext> getAbstractDao() {
return bscUserextDao;
}
}
\ No newline at end of file
package com.boot.security.server.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.boot.security.server.dao.AbstractDao;
import com.boot.security.server.dto.Response;
import com.boot.security.server.dto.ResponseStatusEnum;
import com.boot.security.server.model.TravelHabit;
import org.springframework.beans.factory.annotation.Autowired;
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.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.dto.PageTableResponse;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.dao.CommuneRelationDao;
import com.boot.security.server.model.CommuneRelation;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/communeRelations")
public class CommuneRelationController extends AbstractController<CommuneRelation> {
@Autowired
private CommuneRelationDao communeRelationDao;
@Override
protected AbstractDao<CommuneRelation> getAbstractDao() {
return communeRelationDao;
}
}
package com.boot.security.server.controller;
import com.boot.security.server.dao.AbstractDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.model.CommunicationRecord;
@RestController
@RequestMapping("/communicationRecords")
public class CommunicationRecordController extends AbstractController<CommunicationRecord> {
@Autowired
private AbstractDao<CommunicationRecord> communicationRecordDao;
public AbstractDao<CommunicationRecord> getAbstractDao() {
return communicationRecordDao;
}
}
\ No newline at end of file
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.dto.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.getCurrent()-1)*request.getPageSize(),request.getPageSize());
}
}).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.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.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.dto.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);
}
/**
* 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.getCurrent()-1)*request.getPageSize(),request.getPageSize());;
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;
/**
* 代码生成接口
*
*
*
*/
@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.dao.AbstractDao;
import com.boot.security.server.model.GolfHabit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/golfHabits")
public class GolfHabitController extends AbstractController<GolfHabit>{
@Autowired
private AbstractDao<GolfHabit> golfHabitDao;
@Override
protected AbstractDao<GolfHabit> getAbstractDao() {
return golfHabitDao;
}
}
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.dto.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.getCurrent()-1)*request.getPageSize(),request.getPageSize());;
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.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.dto.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.getCurrent()-1)*request.getPageSize(),request.getPageSize());
}
}).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.getCurrent()-1)*request.getPageSize(),request.getPageSize());
}
}).handle(request);
}
}
package com.boot.security.server.controller;
import java.util.List;
import com.boot.security.server.dao.AbstractDao;
import org.springframework.beans.factory.annotation.Autowired;
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.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.dto.PageTableResponse;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.dao.OrderDao;
import com.boot.security.server.model.Order;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/orders")
public class OrderController extends AbstractController{
@Autowired
private OrderDao orderDao;
@Override
protected AbstractDao getAbstractDao() {
return orderDao;
}
}
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;
/**
* 权限相关接口
*
*
*
*/
@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() {
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.List;
import org.springframework.beans.factory.annotation.Autowired;
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.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.dto.PageTableResponse;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.dao.ProductDao;
import com.boot.security.server.model.Product;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductDao productDao;
@PostMapping
@ApiOperation(value = "保存")
public Product save(@RequestBody Product product) {
productDao.save(product);
return product;
}
@PostMapping("/hello")
public String hello() {
return "hello world!";
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取")
public Product get(@PathVariable Long id) {
return productDao.getById(id);
}
@PutMapping
@ApiOperation(value = "修改")
public Product update(@RequestBody Product product) {
productDao.update(product);
return product;
}
@GetMapping
@ApiOperation(value = "列表")
public PageTableResponse list(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return productDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<Product> list(PageTableRequest request) {
return productDao.list(request.getParams(), (request.getCurrent()-1)*request.getPageSize(),request.getPageSize());
}
}).handle(request);
}
@DeleteMapping("/{id}")
@ApiOperation(value = "删除")
public void delete(@PathVariable Long id) {
productDao.delete(id);
}
}
package com.boot.security.server.controller;
import com.boot.security.server.dao.AbstractDao;
import com.boot.security.server.model.PurchaseHabit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/purchaseHabits")
public class PurchaseHabitController extends AbstractController<PurchaseHabit> {
@Autowired
private AbstractDao<PurchaseHabit> purchaseHabitDao;
public AbstractDao<PurchaseHabit> getAbstractDao() {
return purchaseHabitDao;
}
}
\ No newline at end of file
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.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.dto.PageTableResponse;
import com.boot.security.server.service.RoleService;
import com.google.common.collect.Maps;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 角色相关接口
*
*
*
*/
@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) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return roleDao.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<Role> list(PageTableRequest request) {
List<Role> list = roleDao.list(request.getParams(), (request.getCurrent()-1)*request.getPageSize(),request.getPageSize());
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.dto.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.getCurrent()-1)*request.getPageSize(),request.getPageSize());
}
}).handle(request);
}
}
package com.boot.security.server.controller;
import com.boot.security.server.dao.AbstractDao;
import com.boot.security.server.model.TravelHabit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/travelHabits")
public class TravelHabitController extends AbstractController<TravelHabit> {
@Autowired
private AbstractDao<TravelHabit> travelHabitDao;
public AbstractDao<TravelHabit> getAbstractDao() {
return travelHabitDao;
}
}
\ No newline at end of file
package com.boot.security.server.controller;
import java.util.List;
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.dto.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;
/**
* 用户相关接口
*
*
*
*/
@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) {
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.getCurrent()-1)*request.getPageSize(),request.getPageSize());
return list;
}
}).handle(request);
}
@ApiOperation(value = "当前登录用户")
@GetMapping("/current")
public SysUser currentUser() {
return UserUtil.getLoginUser();
}
@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.controller;
import com.boot.security.server.dao.AbstractDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.boot.security.server.model.UserInfo;
@RestController
@RequestMapping("/userInfos")
public class UserInfoController extends AbstractController<UserInfo> {
@Autowired
private AbstractDao<UserInfo> userInfoDao;
public AbstractDao<UserInfo> getAbstractDao() {
return userInfoDao;
}
}
\ No newline at end of file
package com.boot.security.server.controller;
import java.util.List;
import com.boot.security.server.dao.AbstractDao;
import org.springframework.beans.factory.annotation.Autowired;
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.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.dto.PageTableResponse;
import com.boot.security.server.page.table.PageTableHandler.CountHandler;
import com.boot.security.server.page.table.PageTableHandler.ListHandler;
import com.boot.security.server.dao.UsrCommuneExtDao;
import com.boot.security.server.model.UsrCommuneExt;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/usrCommuneExts")
public class UsrCommuneExtController extends AbstractController<UsrCommuneExt>{
@Autowired
private UsrCommuneExtDao usrCommuneExtDao;
@Override
protected AbstractDao<UsrCommuneExt> getAbstractDao() {
return usrCommuneExtDao;
}
}
package com.boot.security.server.dao;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
public interface AbstractDao<T> {
T getById(Long extId);
int delete(Long id);
int update(T entity);
int save(T entity);
int count(@Param("params") Map<String, Object> params);
List<T> 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 com.boot.security.server.model.BscUserext;
@Mapper
public interface BscUserextDao extends AbstractDao<BscUserext>{
@Select("select * from bsc_userext t where t.extId = #{extId}")
BscUserext getById(Long extId);
@Delete("delete from bsc_userext where id = #{id}")
int delete(Long id);
int update(BscUserext bscUserext);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into bsc_userext(ExtID, UID, PrePayCardAmount, lockedPrePayCardAmount, DataChange_LastTime, RecommendCode, RecommendByCode, UseVersion, TerminalType, DeviceID, OSVersion, Lng, Lat, CanUseRecommendCode, FirstLoginTime, LastLoginTime, RegisterTime, FillRecommendCodeTime, IsSendAmt, SendAmt, UserName, MobilePhone, BindedMobilePhone, BindedEmail, EMail, Gender, Birth, LoginFailTimes, UserGrade, ExpStartDate, ExpEndDate, UseTerminalType, ChannelNo, HistoryIntegral, CurrentIntegral, doubleIntegralTime, BlockFlag, address, zip, loginTimes, unionId, openId, miniAppOpenId, miniAppSessionKey, nickName, province, city, country, headImgUrl, privilege, vipGrade, vipStartTime, vipExpireTime, umNickName, sourceId, communeTime, currentWorkPoint, handicap, deviceToken, rongYunToken, communeAgainTime, communeYears, tee, familyName, school, industry, golfLevel, nativePlace, zodiac, constellation, occupation, hobby, vipmemberExpireTime, vipmemberSaveAmount, vipmemberDiscounted, inviterUid, hasMPRegisterVoucher) values(#{ExtID}, #{UID}, #{PrePayCardAmount}, #{lockedPrePayCardAmount}, #{DataChangeLastTime}, #{RecommendCode}, #{RecommendByCode}, #{UseVersion}, #{TerminalType}, #{DeviceID}, #{OSVersion}, #{Lng}, #{Lat}, #{CanUseRecommendCode}, #{FirstLoginTime}, #{LastLoginTime}, #{RegisterTime}, #{FillRecommendCodeTime}, #{IsSendAmt}, #{SendAmt}, #{UserName}, #{MobilePhone}, #{BindedMobilePhone}, #{BindedEmail}, #{EMail}, #{Gender}, #{Birth}, #{LoginFailTimes}, #{UserGrade}, #{ExpStartDate}, #{ExpEndDate}, #{UseTerminalType}, #{ChannelNo}, #{HistoryIntegral}, #{CurrentIntegral}, #{doubleIntegralTime}, #{BlockFlag}, #{address}, #{zip}, #{loginTimes}, #{unionId}, #{openId}, #{miniAppOpenId}, #{miniAppSessionKey}, #{nickName}, #{province}, #{city}, #{country}, #{headImgUrl}, #{privilege}, #{vipGrade}, #{vipStartTime}, #{vipExpireTime}, #{umNickName}, #{sourceId}, #{communeTime}, #{currentWorkPoint}, #{handicap}, #{deviceToken}, #{rongYunToken}, #{communeAgainTime}, #{communeYears}, #{tee}, #{familyName}, #{school}, #{industry}, #{golfLevel}, #{nativePlace}, #{zodiac}, #{constellation}, #{occupation}, #{hobby}, #{vipmemberExpireTime}, #{vipmemberSaveAmount}, #{vipmemberDiscounted}, #{inviterUid}, #{hasMPRegisterVoucher})")
int save(BscUserext bscUserext);
int count(@Param("params") Map<String, Object> params);
List<BscUserext> 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 com.boot.security.server.model.CommuneRelation;
@Mapper
public interface CommuneRelationDao extends AbstractDao<CommuneRelation>{
@Select("select * from arc_communerelation t where t.id = #{id}")
CommuneRelation getById(Long id);
@Delete("delete from arc_communerelation where id = #{id}")
int delete(Long id);
int update(CommuneRelation communeRelation);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_communerelation(uid, relation, name, age, job, remark) values(#{uid}, #{relation}, #{name}, #{age}, #{job}, #{remark})")
int save(CommuneRelation communeRelation);
int count(@Param("params") Map<String, Object> params);
List<CommuneRelation> 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 com.boot.security.server.model.CommunicationRecord;
@Mapper
public interface CommunicationRecordDao extends AbstractDao<CommunicationRecord>{
@Select("select * from arc_communicationrecord t where t.id = #{id}")
CommunicationRecord getById(Long id);
@Delete("delete from arc_communicationrecord where id = #{id}")
int delete(Long id);
int update(CommunicationRecord communicationRecord);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_communicationrecord(uid, description, attached) values(#{uid}, #{description}, #{attached})")
int save(CommunicationRecord communicationRecord);
int count(@Param("params") Map<String, Object> params);
List<CommunicationRecord> 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 com.boot.security.server.model.Dict;
@Mapper
public interface DictDao {
@Select("select * from arc_dict t where t.id = #{id}")
Dict getById(Long id);
@Delete("delete from arc_dict where id = #{id}")
int delete(Long id);
int update(Dict dict);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_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 arc_dict t where t.type = #{type} and k = #{k}")
Dict getByTypeAndK(@Param("type") String type, @Param("k") String k);
@Select("select * from arc_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 arc_file_info t where t.id = #{id}")
FileInfo getById(String id);
@Insert("insert into arc_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 arc_file_info t set t.updateTime = now() where t.id = #{id}")
int update(FileInfo fileInfo);
@Delete("delete from arc_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.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.GolfHabit;
@Mapper
public interface GolfHabitDao extends AbstractDao<GolfHabit>{
@Select("select * from arc_golfhabit t where t.id = #{id}")
GolfHabit getById(Long id);
@Delete("delete from arc_golfhabit where id = #{id}")
int delete(Long id);
int update(GolfHabit golfHabit);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_golfhabit(uid, golfAge, parNumber, golfTime, hasPartner, usualStadium, favoriteCourseType, orderFunction, hasMemberShip, frequency, usualExStadium, rodType, gamblingRule, gamblingMoney, rodBrand, ballBrand, golfTeam, teamPosition) values(#{uid}, #{golfAge}, #{parNumber}, #{golfTime}, #{hasPartner}, #{usualStadium}, #{favoriteCourseType}, #{orderFunction}, #{hasMemberShip}, #{frequency}, #{usualExStadium}, #{rodType}, #{gamblingRule}, #{gamblingMoney}, #{rodBrand}, #{ballBrand}, #{golfTeam}, #{teamPosition})")
int save(GolfHabit golfHabit);
int count(@Param("params") Map<String, Object> params);
List<GolfHabit> 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 arc_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 arc_job t where t.id = #{id}")
JobModel getById(Long id);
@Select("select * from arc_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 arc_mail t where t.id = #{id}")
Mail getById(Long id);
// @Delete("delete from arc_mail where id = #{id}")
// int delete(Long id);
// @Update("update arc_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 arc_mail(userId, subject, content, createTime, updateTime) values(#{userId}, #{subject}, #{content}, now(), now())")
int save(Mail mail);
@Insert("insert into arc_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 arc_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 arc_notice t where t.id = #{id}")
Notice getById(Long id);
@Delete("delete from arc_notice where id = #{id}")
int delete(Long id);
@Update("update arc_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 arc_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 arc_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 arc_notice t left join arc_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.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.Order;
@Mapper
public interface OrderDao extends AbstractDao<Order>{
@Select("select * from ord_order t where t.id = #{id}")
Order getById(Long id);
@Delete("delete from ord_order where id = #{id}")
int delete(Long id);
int update(Order order);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into ord_order(OrderID, ActualAmount, AdjustAmount, Amount, ConfirmType, ContactAddress, ContactEMail, ContactMobile, ContactName, ContactTel, CtripCardNo, Currency, DiscountAmount, ExchangeRate, ExternalNo, FinishDate, FirstRiskStatus, LimitedEMoneyAmount, OnPayAmount, OrderDate, OrderName, OrderNo, OrderStatus, OrderType, OrderUserStatus, PayMode, PrePayAmount, PrePayCardAmount, ProcessStatus, ProvConfirmTime, Remark, RiskCheckStatus, SecondRiskStatus, TempOrderNo, Tmoney, TotalAmount, Uid, UnlimitedEMoneyAmount, DataChange_LastTime, OrderSource, PreAuthAmount, DeductByPreAuthAmount, PayDate, OrderCategory, GuaranteeAmount, DeductByGuaranteeAmount, PrePayCardRefundAmount, RefundAmount, ApplyTime, LaunchRefundTime, RefundTime, LaunchDeductByGuaranteeTime, DeductByGuaranteeTime, LaunchDeductByPreAuthTime, DeductByPreAuthTime, ApplyFailReason, RefundFailReason, DeductByGuaranteeFailReason, DeductByPreAuthFailReason, ReleasePreAuthFailReason, LaunchReleasePreAuthTime, ReleasePreAuthTime, LaunchRefundAmount, IsThird, VoucherAmount, VoucherRefundAmount, VoucherIDList, PrePayCardDeductFlag, VoucherCount, PaymentRequestID, CancelStatus, notifyFlag, CashRebate, CashRebateStatus, CampaignID, SponsorUnitAmount, actualSettleAmout, settleObj, settleDate, finComment, channel1, channel2, orderIntegralStatus, shareIntegralStatus, hasInvoice, GiftCardAmount, paymentVersion, platform, outTradeId, relationOrderNo, enable, useMemberPrice, memberUnitAmount, invoiceAmount, postageAmount, insuranceAmount, insuranceStatus, offlinePayType, deleteFlag, sendNotifyMsg, onlineOrderFlag, userType, tourCategory, orderWorkPointStatus, vipmemberDiscount, vipmemberDiscountRate) values(#{OrderID}, #{ActualAmount}, #{AdjustAmount}, #{Amount}, #{ConfirmType}, #{ContactAddress}, #{ContactEMail}, #{ContactMobile}, #{ContactName}, #{ContactTel}, #{CtripCardNo}, #{Currency}, #{DiscountAmount}, #{ExchangeRate}, #{ExternalNo}, #{FinishDate}, #{FirstRiskStatus}, #{LimitedEMoneyAmount}, #{OnPayAmount}, #{OrderDate}, #{OrderName}, #{OrderNo}, #{OrderStatus}, #{OrderType}, #{OrderUserStatus}, #{PayMode}, #{PrePayAmount}, #{PrePayCardAmount}, #{ProcessStatus}, #{ProvConfirmTime}, #{Remark}, #{RiskCheckStatus}, #{SecondRiskStatus}, #{TempOrderNo}, #{Tmoney}, #{TotalAmount}, #{Uid}, #{UnlimitedEMoneyAmount}, #{DataChangeLastTime}, #{OrderSource}, #{PreAuthAmount}, #{DeductByPreAuthAmount}, #{PayDate}, #{OrderCategory}, #{GuaranteeAmount}, #{DeductByGuaranteeAmount}, #{PrePayCardRefundAmount}, #{RefundAmount}, #{ApplyTime}, #{LaunchRefundTime}, #{RefundTime}, #{LaunchDeductByGuaranteeTime}, #{DeductByGuaranteeTime}, #{LaunchDeductByPreAuthTime}, #{DeductByPreAuthTime}, #{ApplyFailReason}, #{RefundFailReason}, #{DeductByGuaranteeFailReason}, #{DeductByPreAuthFailReason}, #{ReleasePreAuthFailReason}, #{LaunchReleasePreAuthTime}, #{ReleasePreAuthTime}, #{LaunchRefundAmount}, #{IsThird}, #{VoucherAmount}, #{VoucherRefundAmount}, #{VoucherIDList}, #{PrePayCardDeductFlag}, #{VoucherCount}, #{PaymentRequestID}, #{CancelStatus}, #{notifyFlag}, #{CashRebate}, #{CashRebateStatus}, #{CampaignID}, #{SponsorUnitAmount}, #{actualSettleAmout}, #{settleObj}, #{settleDate}, #{finComment}, #{channel1}, #{channel2}, #{orderIntegralStatus}, #{shareIntegralStatus}, #{hasInvoice}, #{GiftCardAmount}, #{paymentVersion}, #{platform}, #{outTradeId}, #{relationOrderNo}, #{enable}, #{useMemberPrice}, #{memberUnitAmount}, #{invoiceAmount}, #{postageAmount}, #{insuranceAmount}, #{insuranceStatus}, #{offlinePayType}, #{deleteFlag}, #{sendNotifyMsg}, #{onlineOrderFlag}, #{userType}, #{tourCategory}, #{orderWorkPointStatus}, #{vipmemberDiscount}, #{vipmemberDiscountRate})")
int save(Order order);
int count(@Param("params") Map<String, Object> params);
List<Order> 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.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 arc_permission t order by t.sort")
List<Permission> listAll();
@Select("select * from arc_permission t where t.type = 1 order by t.sort")
List<Permission> listParents();
@Select("select distinct p.* from arc_permission p inner join arc_role_permission rp on p.id = rp.permissionId inner join arc_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 arc_permission p inner join arc_role_permission rp on p.id = rp.permissionId where rp.roleId = #{roleId} order by p.sort")
List<Permission> listByRoleId(Long roleId);
@Select("select * from arc_permission t where t.id = #{id}")
Permission getById(Long id);
@Insert("insert into arc_permission(parentId, name, css, href, type, permission, sort) values(#{parentId}, #{name}, #{css}, #{href}, #{type}, #{permission}, #{sort})")
int save(Permission permission);
@Update("update arc_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 arc_permission where id = #{id}")
int delete(Long id);
@Delete("delete from arc_permission where parentId = #{id}")
int deleteByParentId(Long id);
@Delete("delete from arc_role_permission where permissionId = #{permissionId}")
int deleteRolePermission(Long permissionId);
@Select("select ru.userId from arc_role_permission rp inner join arc_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 com.boot.security.server.model.Product;
@Mapper
public interface ProductDao {
@Select("select * from t_product t where t.id = #{id}")
Product getById(Long id);
@Delete("delete from t_product where id = #{id}")
int delete(Long id);
int update(Product product);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into t_product(productId, productName, image) values(#{productId}, #{productName}, #{image})")
int save(Product product);
int count(@Param("params") Map<String, Object> params);
List<Product> 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 com.boot.security.server.model.BscUserext;
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.PurchaseHabit;
@Mapper
public interface PurchaseHabitDao extends AbstractDao<PurchaseHabit>{
@Select("select * from arc_purchasehabit t where t.id = #{id}")
PurchaseHabit getById(Long id);
@Delete("delete from arc_purchasehabit where id = #{id}")
int delete(Long id);
int update(PurchaseHabit purchaseHabit);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_purchasehabit(uid, businessTour, businessDestination, airCompany, airSpace, airOrderPlatform, carBrand, drinkingHabits, smokeHabits) values(#{uid}, #{businessTour}, #{businessDestination}, #{airCompany}, #{airSpace}, #{airOrderPlatform}, #{carBrand}, #{drinkingHabits}, #{smokeHabits})")
int save(PurchaseHabit purchaseHabit);
int count(@Param("params") Map<String, Object> params);
List<PurchaseHabit> 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.model.Role;
@Mapper
public interface RoleDao {
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_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 arc_role t where t.id = #{id}")
Role getById(Long id);
@Select("select * from arc_role t where t.name = #{name}")
Role getRole(String name);
@Update("update arc_role t set t.name = #{name}, t.description = #{description}, updateTime = now() where t.id = #{id}")
int update(Role role);
@Select("select * from arc_role r inner join arc_role_user ru on r.id = ru.roleId where ru.userId = #{userId}")
List<Role> listByUserId(Long userId);
@Delete("delete from arc_role_permission where roleId = #{roleId}")
int deleteRolePermission(Long roleId);
int saveRolePermission(@Param("roleId") Long roleId, @Param("permissionIds") List<Long> permissionIds);
@Delete("delete from arc_role where id = #{id}")
int delete(Long id);
@Delete("delete from arc_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 arc_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 arc_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 arc_token(id, val, expireTime, createdTime, dataChangeLastTime) values (#{id}, #{val}, #{expireTime}, #{createdTime}, #{dataChangeLastTime})")
int save(TokenModel model);
@Select("select * from arc_token t where t.id = #{id}")
TokenModel getById(String id);
@Update("update arc_token t set t.val = #{val}, t.expireTime = #{expireTime}, t.updateTime = #{dataChangeLastTime} where t.id = #{id}")
int update(TokenModel model);
@Delete("delete from arc_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.PurchaseHabit;
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.TravelHabit;
@Mapper
public interface TravelHabitDao extends AbstractDao<TravelHabit>{
@Select("select * from arc_travelhabit t where t.id = #{id}")
TravelHabit getById(Long id);
@Delete("delete from arc_travelhabit where id = #{id}")
int delete(Long id);
int update(TravelHabit travelHabit);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_travelhabit(uid, tourFrequency, tourDestination, tourSeason, travelTime, hotelLevel, hotelBrand, carUse) values(#{uid}, #{tourFrequency}, #{tourDestination}, #{tourSeason}, #{travelTime}, #{hotelLevel}, #{hotelBrand}, #{carUse})")
int save(TravelHabit travelHabit);
int count(@Param("params") Map<String, Object> params);
List<TravelHabit> 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.model.SysUser;
@Mapper
public interface UserDao {
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_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);
@Select("select * from arc_user t where t.id = #{id}")
SysUser getById(Long id);
@Select("select * from arc_user t where t.username = #{username}")
SysUser getUser(String username);
@Update("update arc_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);
List<SysUser> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Delete("delete from arc_role_user where userId = #{userId}")
int deleteUserRole(Long userId);
int saveUserRoles(@Param("userId") Long userId, @Param("roleIds") List<Long> roleIds);
int update(SysUser user);
}
package com.boot.security.server.dao;
import java.util.List;
import java.util.Map;
import com.boot.security.server.model.TravelHabit;
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.UserInfo;
@Mapper
public interface UserInfoDao extends AbstractDao<UserInfo>{
@Select("select * from arc_userinfo t where t.id = #{id}")
UserInfo getById(Long id);
@Delete("delete from arc_userinfo where id = #{id}")
int delete(Long id);
int update(UserInfo userInfo);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into arc_userinfo(uid, birthDate, idCard, maritalStatus, birthplace, job, hobbies, concatAddress, concatPhone) values(#{uid}, #{birthDate}, #{idCard}, #{maritalStatus}, #{birthplace}, #{job}, #{hobbies}, #{concatAddress}, #{concatPhone})")
int save(UserInfo userInfo);
int count(@Param("params") Map<String, Object> params);
List<UserInfo> 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 com.boot.security.server.model.UsrCommuneExt;
@Mapper
public interface UsrCommuneExtDao extends AbstractDao<UsrCommuneExt> {
@Select("select * from usr_commune_ext t where t.id = #{id}")
UsrCommuneExt getById(Long id);
@Delete("delete from usr_commune_ext where id = #{id}")
int delete(Long id);
int update(UsrCommuneExt usrCommuneExt);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into usr_commune_ext(ID, UID, CommuneNo, MobilePhone, UserName, Gender, Birthday, CommuneTime, Score, Drawer, Recommender, PayType, CheckedRegion, CustomerRegion, Photo, PhotoState, Gift, Amount, CreatedTime, DataChange_LastTime, Remark, Operater, Renewer) values(#{ID}, #{UID}, #{CommuneNo}, #{MobilePhone}, #{UserName}, #{Gender}, #{Birthday}, #{CommuneTime}, #{Score}, #{Drawer}, #{Recommender}, #{PayType}, #{CheckedRegion}, #{CustomerRegion}, #{Photo}, #{PhotoState}, #{Gift}, #{Amount}, #{CreatedTime}, #{DataChangeLastTime}, #{Remark}, #{Operater}, #{Renewer})")
int save(UsrCommuneExt usrCommuneExt);
int count(@Param("params") Map<String, Object> params);
List<UsrCommuneExt> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset, @Param("limit") Integer limit);
}
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.util.List;
public class PageData<T> {
private Pagination pagination;
private List<T> list;
public PageData() {
}
public PageData(List<T> list,Pagination pagination) {
this.pagination = pagination;
this.list = list;
}
public Pagination getPagination() {
return pagination;
}
public void setPagination(Pagination pagination) {
this.pagination = pagination;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
package com.boot.security.server.dto;
import java.util.Collection;
import java.util.List;
public class PageResponseBean<T> {
/**
* 总记录条数
*/
private int count;
private int currentPage;
private int pageSize;
private Collection<T> result;
public int getCount() {
return count;
}
public Collection<T> getResult() {
return result;
}
public void setCount(int count) {
this.count = count;
}
public void setResult(Collection<T> result) {
this.result = result;
}
public PageResponseBean() {
}
public PageResponseBean(int count, Collection<T> result) {
this.count = count;
this.result = result;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PagedResponseBean:[");
builder.append("count: ").append(count)
.append(", ").append("result: ").append(result);
builder.append("]");
return builder.toString();
}
}
\ No newline at end of file
package com.boot.security.server.dto;
public class PageTableResponse<T> extends Response {
private int current;
private int pageSize;
private int total;
public PageTableResponse(ResponseStatusEnum responseStatusEnum, Object data, int current, int pageSize, int total) {
super(responseStatusEnum, data);
this.current = current;
this.pageSize = pageSize;
this.total = total;
}
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
this.current = current;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
package com.boot.security.server.dto;
public class Pagination {
public int total;
public int current;
public int pageSize;
public Pagination() {
}
public Pagination(int total, int current, int pageSize) {
this.total = total;
this.current = current;
this.pageSize = pageSize;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
this.current = current;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
package com.boot.security.server.dto;
public class Response <T> {
private int status;
private String message;
private T data;
public Response(ResponseStatusEnum responseStatusEnum, T data) {
super();
this.status = responseStatusEnum.getValue();
this.message = responseStatusEnum.getMsg();
this.data = data;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public void setStatusEnum(ResponseStatusEnum statusEnum) {
status = statusEnum.getValue();
message = statusEnum.getMsg();
}
}
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.HashMap;
import java.util.Map;
public enum ResponseStatusEnum {
SUCCESS(0, "request success"),
FAIL(-1, "request fail");
private int value;
private String msg;
private static Map<Integer, ResponseStatusEnum> map = new HashMap<Integer, ResponseStatusEnum>();
static {
for (ResponseStatusEnum it : ResponseStatusEnum.values()) {
map.put(it.value, it);
}
}
ResponseStatusEnum(int value, String msg) {
this.value = value;
this.msg = msg;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public static ResponseStatusEnum valueOf(int value) {
return map.get(value);
}
}
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
*
*
*
* 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过滤器
*
*
*
* 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;
@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;
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 createdTime = new Date();
private Date dataChangeLastTime = new Date();
public ID getId() {
return id;
}
public void setId(ID id) {
this.id = id;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public Date getDataChangeLastTime() {
return dataChangeLastTime;
}
public void setDataChangeLastTime(Date dataChangeLastTime) {
this.dataChangeLastTime = dataChangeLastTime;
}
}
package com.boot.security.server.model;
public class CommuneRelation extends BaseEntity<Long> {
private String uid;
private String relation;
private String name;
private Integer age;
private String job;
private String remark;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getRelation() {
return relation;
}
public void setRelation(String relation) {
this.relation = relation;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.boot.security.server.model;
public class CommunicationRecord extends BaseEntity<Long> {
private String uid;
private String description;
private String attached;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAttached() {
return attached;
}
public void setAttached(String attached) {
this.attached = attached;
}
}
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 GolfHabit extends BaseEntity<Long> {
private String uid;
private String golfAge;
private String parNumber;
private String golfTime;
private String hasPartner;
private String usualStadium;
private String favoriteCourseType;
private String orderFunction;
private String hasMemberShip;
private String frequency;
private String usualExStadium;
private String rodType;
private String gamblingRule;
private String gamblingMoney;
private String rodBrand;
private String ballBrand;
private String golfTeam;
private String teamPosition;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getGolfAge() {
return golfAge;
}
public void setGolfAge(String golfAge) {
this.golfAge = golfAge;
}
public String getParNumber() {
return parNumber;
}
public void setParNumber(String parNumber) {
this.parNumber = parNumber;
}
public String getGolfTime() {
return golfTime;
}
public void setGolfTime(String golfTime) {
this.golfTime = golfTime;
}
public String getHasPartner() {
return hasPartner;
}
public void setHasPartner(String hasPartner) {
this.hasPartner = hasPartner;
}
public String getUsualStadium() {
return usualStadium;
}
public void setUsualStadium(String usualStadium) {
this.usualStadium = usualStadium;
}
public String getFavoriteCourseType() {
return favoriteCourseType;
}
public void setFavoriteCourseType(String favoriteCourseType) {
this.favoriteCourseType = favoriteCourseType;
}
public String getOrderFunction() {
return orderFunction;
}
public void setOrderFunction(String orderFunction) {
this.orderFunction = orderFunction;
}
public String getHasMemberShip() {
return hasMemberShip;
}
public void setHasMemberShip(String hasMemberShip) {
this.hasMemberShip = hasMemberShip;
}
public String getFrequency() {
return frequency;
}
public void setFrequency(String frequency) {
this.frequency = frequency;
}
public String getUsualExStadium() {
return usualExStadium;
}
public void setUsualExStadium(String usualExStadium) {
this.usualExStadium = usualExStadium;
}
public String getRodType() {
return rodType;
}
public void setRodType(String rodType) {
this.rodType = rodType;
}
public String getGamblingRule() {
return gamblingRule;
}
public void setGamblingRule(String gamblingRule) {
this.gamblingRule = gamblingRule;
}
public String getGamblingMoney() {
return gamblingMoney;
}
public void setGamblingMoney(String gamblingMoney) {
this.gamblingMoney = gamblingMoney;
}
public String getRodBrand() {
return rodBrand;
}
public void setRodBrand(String rodBrand) {
this.rodBrand = rodBrand;
}
public String getBallBrand() {
return ballBrand;
}
public void setBallBrand(String ballBrand) {
this.ballBrand = ballBrand;
}
public String getGolfTeam() {
return golfTeam;
}
public void setGolfTeam(String golfTeam) {
this.golfTeam = golfTeam;
}
public String getTeamPosition() {
return teamPosition;
}
public void setTeamPosition(String teamPosition) {
this.teamPosition = teamPosition;
}
}
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;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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 sign in to comment