mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-11-21 18:06:52 +08:00
v1.2.0
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package net.lab1024.smartadmin.common.anno;
|
||||
|
||||
import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeTypeEnum;
|
||||
import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -23,6 +24,8 @@ public @interface DataScope {
|
||||
|
||||
DataScopeTypeEnum dataScopeType() default DataScopeTypeEnum.DEFAULT;
|
||||
|
||||
DataScopeWhereInTypeEnum whereInType() default DataScopeWhereInTypeEnum.EMPLOYEE;
|
||||
|
||||
/**
|
||||
* 第几个where 条件 从0开始
|
||||
* @return
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.lab1024.smartadmin.module.system.department.DepartmentResponseCodeCon
|
||||
import net.lab1024.smartadmin.module.system.employee.constant.EmployeeResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.support.file.constant.FileResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.business.log.orderoperatelog.constant.OrderOperateLogOperateTypeConst;
|
||||
import net.lab1024.smartadmin.module.business.login.LoginResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.system.login.LoginResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.system.position.PositionResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.system.privilege.constant.PrivilegeResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.system.role.basic.RoleResponseCodeConst;
|
||||
|
||||
@@ -22,7 +22,7 @@ public class PageParamDTO {
|
||||
|
||||
@NotNull(message = "每页数量不能为空")
|
||||
@ApiModelProperty(value = "每页数量(不能为空)", example = "10")
|
||||
@Max(value = 200, message = "每页最大为200")
|
||||
@Max(value = 500, message = "每页最大为500")
|
||||
protected Integer pageSize;
|
||||
|
||||
@ApiModelProperty("是否查询总条数")
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
package net.lab1024.smartadmin.common.mybatis;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.mapping.BoundSql;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.plugin.*;
|
||||
import org.apache.ibatis.session.ResultHandler;
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* [ mybaits sql 拦截 ]
|
||||
*
|
||||
* @author zhuoda
|
||||
* @version 1.0
|
||||
* @company 1024lab.net
|
||||
* @copyright (c) 2019 1024lab.netInc. All rights reserved.
|
||||
* @date
|
||||
* @since JDK1.8
|
||||
*/
|
||||
@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})
|
||||
@Slf4j
|
||||
public class MyBatisSqlQuerySqlDebugPlugin implements Interceptor {
|
||||
|
||||
@Override
|
||||
public Object intercept(Invocation invocation) throws Throwable {
|
||||
MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
|
||||
Object parameter = invocation.getArgs()[1];
|
||||
BoundSql boundSql = mappedStatement.getBoundSql(parameter);
|
||||
log.info(boundSql.getSql()+"\r\n"+boundSql.getParameterMappings().toString());
|
||||
Object obj = invocation.proceed();
|
||||
return obj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object plugin(Object arg0) {
|
||||
return Plugin.wrap(arg0,this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProperties(Properties arg0) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package net.lab1024.smartadmin.common.mybatis;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.mapping.BoundSql;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.plugin.*;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* [ mybaits sql 拦截 ]
|
||||
*
|
||||
* @author zhuoda
|
||||
* @version 1.0
|
||||
* @company 1024lab.net
|
||||
* @copyright (c) 2019 1024lab.netInc. All rights reserved.
|
||||
* @date
|
||||
* @since JDK1.8
|
||||
*/
|
||||
@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
|
||||
@Slf4j
|
||||
public class MyBatisSqlUpdateSqlDebugPlugin implements Interceptor {
|
||||
|
||||
@Override
|
||||
public Object intercept(Invocation invocation) throws Throwable {
|
||||
MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
|
||||
Object parameter = invocation.getArgs()[1];
|
||||
BoundSql boundSql = mappedStatement.getBoundSql(parameter);
|
||||
log.info(boundSql.getSql()+"\r\n"+boundSql.getParameterMappings().toString());
|
||||
Object obj = invocation.proceed();
|
||||
return obj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object plugin(Object arg0) {
|
||||
return Plugin.wrap(arg0,this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProperties(Properties arg0) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,8 +30,8 @@ public class SmartKaptchaConfig {
|
||||
properties.setProperty("kaptcha.border.color", "34,114,200");
|
||||
properties.setProperty("kaptcha.image.width", "125");
|
||||
properties.setProperty("kaptcha.image.height", "45");
|
||||
properties.setProperty("kaptcha.textproducer.char.string", "ABCDEFG23456789");
|
||||
properties.setProperty("kaptcha.textproducer.char.length", "5");
|
||||
properties.setProperty("kaptcha.textproducer.char.string", "0123456789");
|
||||
properties.setProperty("kaptcha.textproducer.char.length", "4");
|
||||
properties.setProperty("kaptcha.textproducer.font.names", "Arial,Arial Narrow,Serif,Helvetica,Tahoma,Times New Roman,Verdana");
|
||||
properties.setProperty("kaptcha.textproducer.font.size", "38");
|
||||
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
package net.lab1024.smartadmin.config;
|
||||
|
||||
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
|
||||
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
|
||||
import net.lab1024.smartadmin.common.mybatis.MyBatisSqlQuerySqlDebugPlugin;
|
||||
import net.lab1024.smartadmin.common.mybatis.MyBatisSqlUpdateSqlDebugPlugin;
|
||||
import net.lab1024.smartadmin.constant.SystemEnvironmentEnum;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
/**
|
||||
@@ -29,16 +24,4 @@ public class SmartMybatisPlusConfig {
|
||||
return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize(true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印sql log
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
@Profile(SystemEnvironmentEnum.DEV_ENV)
|
||||
ConfigurationCustomizer mybatisConfigurationCustomizer() {
|
||||
return configuration -> {
|
||||
configuration.addInterceptor(new MyBatisSqlUpdateSqlDebugPlugin());
|
||||
configuration.addInterceptor(new MyBatisSqlQuerySqlDebugPlugin());
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.lab1024.smartadmin.config;
|
||||
|
||||
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
|
||||
import net.lab1024.smartadmin.constant.SwaggerTagConst;
|
||||
import com.google.common.base.Optional;
|
||||
import com.google.common.base.Predicate;
|
||||
@@ -48,6 +49,7 @@ import java.util.Map;
|
||||
*/
|
||||
@Slf4j
|
||||
@EnableSwagger2
|
||||
@EnableKnife4j
|
||||
@Configuration
|
||||
@Profile({"dev", "sit", "pre", "prod"})
|
||||
public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDefinitionRegistryPostProcessor {
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.lab1024.smartadmin.common.anno.OperateLog;
|
||||
import net.lab1024.smartadmin.common.constant.JudgeEnum;
|
||||
import net.lab1024.smartadmin.module.business.log.LogService;
|
||||
import net.lab1024.smartadmin.module.business.log.useroperatelog.domain.UserOperateLogEntity;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.util.SmartRequestTokenUtil;
|
||||
import net.lab1024.smartadmin.util.SmartStringUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
|
||||
@@ -5,9 +5,9 @@ import net.lab1024.smartadmin.common.anno.NoNeedLogin;
|
||||
import net.lab1024.smartadmin.common.anno.NoValidPrivilege;
|
||||
import net.lab1024.smartadmin.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.constant.CommonConst;
|
||||
import net.lab1024.smartadmin.module.business.login.LoginResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.business.login.LoginTokenService;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.LoginResponseCodeConst;
|
||||
import net.lab1024.smartadmin.module.system.login.LoginTokenService;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.privilege.service.PrivilegeEmployeeService;
|
||||
import net.lab1024.smartadmin.util.SmartRequestTokenUtil;
|
||||
import net.lab1024.smartadmin.util.SmartStringUtil;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.lab1024.smartadmin.module.business.notice;
|
||||
|
||||
import net.lab1024.smartadmin.common.constant.JudgeEnum;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.business.notice.dao.NoticeDao;
|
||||
import net.lab1024.smartadmin.module.business.notice.dao.NoticeReceiveRecordDao;
|
||||
import net.lab1024.smartadmin.module.business.notice.domain.dto.NoticeUpdateDTO;
|
||||
|
||||
@@ -6,7 +6,7 @@ import net.lab1024.smartadmin.common.constant.ResponseCodeConst;
|
||||
import net.lab1024.smartadmin.common.domain.PageParamDTO;
|
||||
import net.lab1024.smartadmin.common.domain.PageResultDTO;
|
||||
import net.lab1024.smartadmin.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.business.notice.dao.NoticeDao;
|
||||
import net.lab1024.smartadmin.module.business.notice.dao.NoticeReceiveRecordDao;
|
||||
import net.lab1024.smartadmin.module.business.notice.domain.dto.*;
|
||||
|
||||
@@ -2,8 +2,10 @@ package net.lab1024.smartadmin.module.business.notice.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import net.lab1024.smartadmin.common.anno.DataScope;
|
||||
import net.lab1024.smartadmin.module.business.notice.domain.dto.*;
|
||||
import net.lab1024.smartadmin.module.business.notice.domain.entity.NoticeEntity;
|
||||
import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -29,6 +31,7 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
||||
* @param queryDTO
|
||||
* @return NoticeEntity
|
||||
*/
|
||||
@DataScope(joinSql = "n.create_user in (#employeeIds)", whereInType = DataScopeWhereInTypeEnum.EMPLOYEE)
|
||||
List<NoticeVO> queryByPage(Page page, @Param("queryDTO") NoticeQueryDTO queryDTO);
|
||||
|
||||
|
||||
@@ -38,6 +41,7 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
||||
* @param employeeId
|
||||
* @return
|
||||
*/
|
||||
@DataScope(joinSql = "n.create_user_department_id in (#departmentIds)", whereInType = DataScopeWhereInTypeEnum.DEPARTMENT)
|
||||
List<NoticeVO> queryUnreadByPage(Page page, @Param("employeeId") Long employeeId, @Param("sendStatus") Integer sendStatus);
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import net.lab1024.smartadmin.module.support.file.domain.dto.FileQueryDTO;
|
||||
import net.lab1024.smartadmin.module.support.file.domain.vo.FileVO;
|
||||
import net.lab1024.smartadmin.module.support.file.domain.vo.UploadVO;
|
||||
import net.lab1024.smartadmin.module.support.file.service.FileService;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.util.SmartRequestTokenUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
@@ -13,7 +13,7 @@ import net.lab1024.smartadmin.module.support.file.domain.dto.FileQueryDTO;
|
||||
import net.lab1024.smartadmin.module.support.file.domain.entity.FileEntity;
|
||||
import net.lab1024.smartadmin.module.support.file.domain.vo.FileVO;
|
||||
import net.lab1024.smartadmin.module.support.file.domain.vo.UploadVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.util.SmartPageUtil;
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import net.lab1024.smartadmin.common.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* [ ]
|
||||
*
|
||||
|
||||
@@ -35,7 +35,7 @@ public class QuartzTask extends QuartzJobBean {
|
||||
@Override
|
||||
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
|
||||
JobDetail jobDetail = context.getJobDetail();
|
||||
Object params = jobDetail.getJobDataMap().get(QuartzConst.QUARTZ_PARAMS_KEY);
|
||||
Object params = context.getMergedJobDataMap().get(QuartzConst.QUARTZ_PARAMS_KEY);
|
||||
JobKey jobKey = jobDetail.getKey();
|
||||
|
||||
Long taskId = SmartQuartzUtil.getTaskIdByJobKey(jobKey);
|
||||
|
||||
@@ -3,7 +3,7 @@ package net.lab1024.smartadmin.module.system.datascope.service;
|
||||
import net.lab1024.smartadmin.common.anno.DataScope;
|
||||
import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum;
|
||||
import net.lab1024.smartadmin.module.system.datascope.domain.dto.DataScopeSqlConfigDTO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.util.SmartRequestTokenUtil;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -70,6 +70,7 @@ public class DataScopeSqlConfigService {
|
||||
configDTO.setDataScopeType(dataScopeAnnotation.dataScopeType().getType());
|
||||
configDTO.setJoinSql(dataScopeAnnotation.joinSql());
|
||||
configDTO.setWhereIndex(dataScopeAnnotation.whereIndex());
|
||||
configDTO.setDataScopeWhereInType(dataScopeAnnotation.whereInType().getType());
|
||||
dataScopeMethodMap.put(method.getDeclaringClass().getSimpleName() + "." + method.getName(), configDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import net.lab1024.smartadmin.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.constant.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.*;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.vo.EmployeeVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.util.SmartRequestTokenUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
@@ -13,7 +13,7 @@ import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.*;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.entity.EmployeeEntity;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.vo.EmployeeVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.position.PositionDao;
|
||||
import net.lab1024.smartadmin.module.system.position.PositionService;
|
||||
import net.lab1024.smartadmin.module.system.position.domain.dto.PositionRelationAddDTO;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login;
|
||||
package net.lab1024.smartadmin.module.system.login;
|
||||
|
||||
import net.lab1024.smartadmin.common.anno.NoNeedLogin;
|
||||
import net.lab1024.smartadmin.common.anno.NoValidPrivilege;
|
||||
@@ -6,9 +6,9 @@ import net.lab1024.smartadmin.common.anno.OperateLog;
|
||||
import net.lab1024.smartadmin.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.constant.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeLoginFormDTO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.KaptchaVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.LoginDetailVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.KaptchaVO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.LoginDetailVO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.util.SmartRequestTokenUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login;
|
||||
package net.lab1024.smartadmin.module.system.login;
|
||||
|
||||
import net.lab1024.smartadmin.common.constant.ResponseCodeConst;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login;
|
||||
package net.lab1024.smartadmin.module.system.login;
|
||||
|
||||
import net.lab1024.smartadmin.common.constant.JudgeEnum;
|
||||
import net.lab1024.smartadmin.common.domain.ResponseDTO;
|
||||
@@ -12,10 +12,10 @@ import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeLoginFormDTO;
|
||||
import net.lab1024.smartadmin.module.business.log.LogService;
|
||||
import net.lab1024.smartadmin.module.business.log.userloginlog.domain.UserLoginLogEntity;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.KaptchaVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.LoginDetailVO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.LoginPrivilegeDTO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.KaptchaVO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.LoginDetailVO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.LoginPrivilegeDTO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.privilege.domain.entity.PrivilegeEntity;
|
||||
import net.lab1024.smartadmin.module.system.privilege.service.PrivilegeEmployeeService;
|
||||
import net.lab1024.smartadmin.util.SmartBeanUtil;
|
||||
@@ -1,11 +1,11 @@
|
||||
package net.lab1024.smartadmin.module.business.login;
|
||||
package net.lab1024.smartadmin.module.system.login;
|
||||
|
||||
import net.lab1024.smartadmin.common.constant.JudgeEnum;
|
||||
import net.lab1024.smartadmin.module.system.employee.EmployeeService;
|
||||
import net.lab1024.smartadmin.module.system.employee.constant.EmployeeStatusEnum;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
import io.jsonwebtoken.SignatureAlgorithm;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login.domain;
|
||||
package net.lab1024.smartadmin.module.system.login.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login.domain;
|
||||
package net.lab1024.smartadmin.module.system.login.domain;
|
||||
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login.domain;
|
||||
package net.lab1024.smartadmin.module.system.login.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login.domain;
|
||||
package net.lab1024.smartadmin.module.system.login.domain;
|
||||
|
||||
import net.lab1024.smartadmin.common.anno.ApiModelPropertyEnum;
|
||||
import net.lab1024.smartadmin.module.system.privilege.constant.PrivilegeTypeEnum;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.module.business.login.domain;
|
||||
package net.lab1024.smartadmin.module.system.login.domain;
|
||||
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO;
|
||||
import lombok.Getter;
|
||||
@@ -54,6 +54,13 @@ public interface PrivilegeDao extends BaseMapper<PrivilegeEntity> {
|
||||
*/
|
||||
List<PrivilegeEntity> selectByParentKey(@Param("parentKey") String parentKey);
|
||||
|
||||
/**
|
||||
* 根据父节点key查询
|
||||
* @param keyList
|
||||
* @return
|
||||
*/
|
||||
List<PrivilegeEntity> selectByKeyList(@Param("keyList") List<String> keyList);
|
||||
|
||||
/**
|
||||
* 根据权限key查询
|
||||
* @param key
|
||||
|
||||
@@ -3,7 +3,7 @@ package net.lab1024.smartadmin.module.system.privilege.service;
|
||||
import net.lab1024.smartadmin.common.constant.JudgeEnum;
|
||||
import net.lab1024.smartadmin.common.exception.SmartBusinessException;
|
||||
import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO;
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.privilege.constant.PrivilegeTypeEnum;
|
||||
import net.lab1024.smartadmin.module.system.privilege.dao.PrivilegeDao;
|
||||
import net.lab1024.smartadmin.module.system.privilege.domain.entity.PrivilegeEntity;
|
||||
|
||||
@@ -216,10 +216,18 @@ public class PrivilegeService {
|
||||
return ResponseDTO.wrap(PrivilegeResponseCodeConst.MENU_NOT_EXIST);
|
||||
}
|
||||
|
||||
//数据库中存在的数据
|
||||
List<PrivilegeEntity> existFunctionList = privilegeDao.selectByParentKey(menuKey);
|
||||
Map<String, PrivilegeEntity> privilegeEntityMap = existFunctionList.stream().collect(Collectors.toMap(PrivilegeEntity::getKey, e -> e));
|
||||
List<String> functionKeyList = functionList.stream().map(PrivilegeFunctionDTO::getFunctionKey).collect(Collectors.toList());
|
||||
|
||||
//数据库中存在的数据
|
||||
List<PrivilegeEntity> existFunctionList = privilegeDao.selectByKeyList(functionKeyList);
|
||||
//校验是否parent key重复
|
||||
boolean parentKeyExist = existFunctionList.stream().anyMatch(e -> !menuKey.equals(e.getParentKey()));
|
||||
if(parentKeyExist){
|
||||
return ResponseDTO.wrap(PrivilegeResponseCodeConst.ROUTER_KEY_NO_REPEAT);
|
||||
}
|
||||
|
||||
existFunctionList = privilegeDao.selectByParentKey(menuKey);
|
||||
Map<String, PrivilegeEntity> privilegeEntityMap = existFunctionList.stream().collect(Collectors.toMap(PrivilegeEntity::getKey, e -> e));
|
||||
//如果没有,则保存全部
|
||||
if (existFunctionList.isEmpty()) {
|
||||
List<PrivilegeEntity> privilegeEntityList = functionList.stream().map(e -> function2Privilege(e)).collect(Collectors.toList());
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
package net.lab1024.smartadmin.util;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
/**
|
||||
* @author zhuoda
|
||||
*/
|
||||
public class SmartFileUtil extends FileUtils {
|
||||
|
||||
public static boolean isXmlFile(File file) {
|
||||
return "xml".equalsIgnoreCase(getFileExtension(file.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件后缀名
|
||||
*
|
||||
* @param fullName
|
||||
* @return
|
||||
*/
|
||||
public static String getFileExtension(String fullName) {
|
||||
String fileName = new File(fullName).getName();
|
||||
int dotIndex = fileName.lastIndexOf('.');
|
||||
return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 不带后缀名的文件名
|
||||
*
|
||||
* @param file
|
||||
* @return
|
||||
*/
|
||||
public static String getNameWithoutExtension(String file) {
|
||||
String fileName = new File(file).getName();
|
||||
int dotIndex = fileName.lastIndexOf('.');
|
||||
return (dotIndex == -1) ? fileName : fileName.substring(0, dotIndex);
|
||||
}
|
||||
|
||||
public static boolean isFileExist(String filePath) {
|
||||
File file = new File(filePath);
|
||||
return file.exists();
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证文件是否存在,如果不存在则抛出异常
|
||||
*
|
||||
* @param filePath
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void isFileExistThrowException(String filePath) throws IOException {
|
||||
File file = new File(filePath);
|
||||
if (!file.exists()) {
|
||||
throw new FileNotFoundException(filePath);
|
||||
}
|
||||
}
|
||||
|
||||
public static BufferedReader newBufferedReader(File file, Charset charset) throws FileNotFoundException {
|
||||
return new BufferedReader(new InputStreamReader(new FileInputStream(file), charset));
|
||||
}
|
||||
|
||||
public static BufferedWriter newBufferedWriter(File file, Charset charset) throws FileNotFoundException {
|
||||
return new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), charset));
|
||||
}
|
||||
|
||||
public static boolean createParentDirs(File file) throws IOException {
|
||||
File parent = file.getCanonicalFile().getParentFile();
|
||||
if (parent == null) {
|
||||
return false;
|
||||
}
|
||||
return parent.mkdirs();
|
||||
}
|
||||
|
||||
public static boolean createNotExistParentDirFile(File file) throws IOException {
|
||||
boolean createParentDirsRes = createParentDirs(file);
|
||||
if (!createParentDirsRes) {
|
||||
throw new IOException("cannot create parent Directory of " + file.getName());
|
||||
}
|
||||
return file.createNewFile();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.lab1024.smartadmin.util;
|
||||
|
||||
import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO;
|
||||
import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
|
||||
import org.springframework.web.context.request.RequestAttributes;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
package net.lab1024.smartadmin.util.excel;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
/**
|
||||
* zhuoda
|
||||
*/
|
||||
public class SmartExcel {
|
||||
|
||||
List<SmartSheet> sheetList = new ArrayList<SmartSheet>();;
|
||||
|
||||
public SmartExcel(String fileName) {
|
||||
org.apache.poi.ss.usermodel.Workbook workbook = null;
|
||||
try {
|
||||
workbook = fileName.endsWith(".xls") ? new HSSFWorkbook(new FileInputStream(fileName)) : new XSSFWorkbook(new FileInputStream(fileName));
|
||||
int numberOfSheets = workbook.getNumberOfSheets();
|
||||
for (int index = 0; index < numberOfSheets; index++) {
|
||||
addSheet(new SmartSheet(workbook.getSheetAt(index)));
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
throw new RuntimeException(t);
|
||||
} finally {
|
||||
if (workbook != null) {
|
||||
try {
|
||||
workbook.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
workbook = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public SmartExcel(InputStream ins, SmartExcelFileType fileType) {
|
||||
org.apache.poi.ss.usermodel.Workbook workbook = null;
|
||||
try {
|
||||
workbook = fileType == SmartExcelFileType.XLS ? new HSSFWorkbook(ins) : new XSSFWorkbook(ins);
|
||||
int numberOfSheets = workbook.getNumberOfSheets();
|
||||
for (int index = 0; index < numberOfSheets; index++) {
|
||||
addSheet(new SmartSheet(workbook.getSheetAt(index)));
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
throw new RuntimeException(t);
|
||||
} finally {
|
||||
if (workbook != null) {
|
||||
try {
|
||||
workbook.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
workbook = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final protected void addSheet(SmartSheet sheet) {
|
||||
this.sheetList.add(sheet);
|
||||
}
|
||||
|
||||
final protected void addSheetList(Collection<SmartSheet> sheets) {
|
||||
this.sheetList.addAll(sheets);
|
||||
}
|
||||
|
||||
final public List<SmartSheet> getSheetList() {
|
||||
return sheetList;
|
||||
}
|
||||
|
||||
final public SmartSheet getSheet(String sheetName) {
|
||||
for (SmartSheet sheet : sheetList) {
|
||||
if (sheet.getName().equals(sheetName)) {
|
||||
return sheet;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package net.lab1024.smartadmin.util.excel;
|
||||
|
||||
/**
|
||||
* @author zhuoda
|
||||
*/
|
||||
public enum SmartExcelFileType {
|
||||
XLS,
|
||||
XLSX
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package net.lab1024.smartadmin.util.excel;
|
||||
|
||||
/**
|
||||
* @author zhuoda
|
||||
* @Date 2020/8/10
|
||||
*/
|
||||
|
||||
import net.lab1024.smartadmin.util.SmartFileUtil;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
public class SmartExcelReader {
|
||||
|
||||
public static SmartExcel openExcel(String filePath) throws IOException {
|
||||
SmartFileUtil.isFileExistThrowException(filePath);
|
||||
return new SmartExcel(new File(filePath).getCanonicalPath());
|
||||
}
|
||||
|
||||
public static SmartExcel openExcel(File file) throws IOException {
|
||||
return new SmartExcel(file.getCanonicalPath());
|
||||
}
|
||||
|
||||
public static SmartExcel openExcel(InputStream ins, SmartExcelFileType fileType) throws IOException {
|
||||
return new SmartExcel(ins, fileType);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
SmartExcel smartExcel = openExcel(new FileInputStream(new File("F:/privilege.xlsx")), SmartExcelFileType.XLSX);
|
||||
System.out.println(smartExcel.getSheetList());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package net.lab1024.smartadmin.util.excel;
|
||||
|
||||
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellType;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
|
||||
/**
|
||||
* @author zhuoda
|
||||
*/
|
||||
public class SmartSheet {
|
||||
final String name;
|
||||
|
||||
private final int rowCount;
|
||||
private final int columnCount;
|
||||
private final String[][] datas;
|
||||
|
||||
public SmartSheet(org.apache.poi.ss.usermodel.Sheet sheet) {
|
||||
this.name = sheet.getSheetName();
|
||||
this.rowCount = sheet.getLastRowNum() + 1;
|
||||
// 初始化基本数据
|
||||
int maxColumnCount = 0;
|
||||
this.datas = new String[rowCount][];
|
||||
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
|
||||
Row row = sheet.getRow(rowIndex);
|
||||
if (row == null) {
|
||||
continue;
|
||||
}
|
||||
int _columnCount = row.getLastCellNum() + 1;
|
||||
this.datas[rowIndex] = new String[_columnCount];
|
||||
for (int colIndex = 0; colIndex < _columnCount; colIndex++) {
|
||||
this.datas[rowIndex][colIndex] = getCellContents(row.getCell(colIndex));
|
||||
}
|
||||
if (maxColumnCount < _columnCount) {
|
||||
maxColumnCount = _columnCount;
|
||||
}
|
||||
}
|
||||
this.columnCount = maxColumnCount;
|
||||
// 根据单元格合并情况,填充内容
|
||||
for (int index = 0; index < sheet.getNumMergedRegions(); index++) {
|
||||
CellRangeAddress mergedRegion = sheet.getMergedRegion(index);
|
||||
String upperLeftData = this.datas[mergedRegion.getFirstRow()][mergedRegion.getFirstColumn()];
|
||||
for (int rowIndex = mergedRegion.getFirstRow(); rowIndex <= mergedRegion.getLastRow(); rowIndex++) {
|
||||
String[] _rowDatas = this.datas[rowIndex];
|
||||
if (_rowDatas == null) {
|
||||
this.datas[rowIndex] = new String[mergedRegion.getLastColumn() + 1];
|
||||
} else if (_rowDatas.length < mergedRegion.getLastColumn() + 1) {
|
||||
String[] newStrArray = new String[mergedRegion.getLastColumn() + 1];
|
||||
System.arraycopy(_rowDatas, 0, newStrArray, 0, _rowDatas.length);
|
||||
this.datas[rowIndex] = newStrArray;
|
||||
}
|
||||
for (int colIndex = mergedRegion.getFirstColumn(); colIndex <= mergedRegion.getLastColumn(); colIndex++) {
|
||||
this.datas[rowIndex][colIndex] = upperLeftData;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getCellContents(Cell cell) {
|
||||
if (cell == null) {
|
||||
return null;
|
||||
}
|
||||
return getCellContents(cell.getCellType(), cell);
|
||||
}
|
||||
|
||||
private String getCellContents(CellType type, Cell cell) {
|
||||
switch (type) {
|
||||
case BLANK:
|
||||
return "";
|
||||
case NUMERIC:
|
||||
return cell.getStringCellValue();
|
||||
case STRING:
|
||||
return cell.getStringCellValue();
|
||||
case FORMULA:
|
||||
return getCellContents(cell.getCachedFormulaResultType(), cell);
|
||||
case BOOLEAN:
|
||||
return String.valueOf(cell.getBooleanCellValue());
|
||||
case ERROR:
|
||||
default:
|
||||
throw new IllegalArgumentException(String.format("unsupported cell type:%d, col:%d, row:%d, sheet:%s", cell.getCellType(), cell.getColumnIndex(),
|
||||
cell.getRowIndex(), getName()));
|
||||
}
|
||||
}
|
||||
|
||||
public int getRowCount() {
|
||||
return rowCount;
|
||||
}
|
||||
|
||||
public int getColumnCount() {
|
||||
return columnCount;
|
||||
}
|
||||
|
||||
public String getValue(int rowIndex, int columnIndex) {
|
||||
if (rowIndex < 0 || rowIndex >= datas.length) {
|
||||
return "";
|
||||
}
|
||||
if (columnIndex < 0 || datas[rowIndex] == null || columnIndex >= datas[rowIndex].length) {
|
||||
return "";
|
||||
}
|
||||
String value = datas[rowIndex][columnIndex];
|
||||
return value == null ? "": value;
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user