diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java index f6ddc9e..0cca652 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java @@ -5,7 +5,6 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.platbean.*; import io.swagger.annotations.ApiOperation; -import java.util.Date; import java.util.List; import java.util.Map; @@ -61,5 +60,4 @@ public interface ISysLogService { @ApiOperation(value = "查询时间段内各等级日志数量",notes = "查询时间段内各等级日志数量") Map querySysLogSystemByLevel(String startTime, String endTime); - } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java index 24017d5..3c512df 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java @@ -186,8 +186,8 @@ public interface IPersonnelService { @ApiOperation(value = "组织关系检查") void checkSysOrganizeRef(Long organizeId); - @ApiOperation(value = "密码规则校验") - void checkSysUserPassword(String password); +// @ApiOperation(value = "密码规则校验") +// void checkSysUserPassword(String password); // @ApiOperation(value = "岗位关系检查") // void refreshUpdateMenuRdd(Long menuId); @@ -207,6 +207,7 @@ public interface IPersonnelService { @ApiOperation(value = "刷新用户岗位") void refreshRefSysUserInfoPosition(Long userInfoId, Long[] positionIds); + // /** // * 根据组织代码查询组织信息 // * @return diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java index f26c1ce..8f7fb35 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java @@ -79,9 +79,10 @@ public interface ISysLocaleResourceService { /** * 批量转换缺失资源 - * @param missResourceModelList + * @param missResourceModelList 缺失资源信息 + * @param userName 用户名称 */ @ApiOperation(value = "批量转换缺失资源") - void doConversionMissResourceByKeys(List missResourceModelList) ; + void doConversionMissResourceByKeys(List missResourceModelList,String userName) ; } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java index 2acc5f1..be8a8b7 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.impp.framework.base.service.ICrudService; +import io.swagger.annotations.ApiOperation; /** * @Description : @@ -11,4 +12,7 @@ import cn.estsh.impp.framework.base.service.ICrudService; * @Modify: **/ public interface ISysPojoVersionDetailService extends ICrudService { + + @ApiOperation("根据对象版本信息查询对象版本明细") + SysPojoVersionDetail getPojoVersionDetailByPojoVersionId(Long pojoVersionId); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java index aa124d4..c0aa302 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java @@ -16,4 +16,6 @@ public interface ISysPojoVersionPlanService extends ICacheCrudService { + + /** + * 修改用户密码 + * @param userId 用户ID + * @param password 旧密码 + * @param newPwd 新密码 + */ + @ApiOperation(value = "修改用户密码") + void updatePassword(Long userId,String password,String newPwd); + + @ApiOperation(value = "重置用户密码") + void updatePassword(Long userId,String password); + +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 4957aee..8df4140 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -41,6 +41,9 @@ public interface ISysUserService { @ApiOperation(value = "修改状态",notes = "修改指定账号状态") void updateSysUserStatus(Long id, int status, SessionUser user); + @ApiOperation(value = "锁定用户",notes = "锁定用户") + void doLockSysUserById(Long id); + /** * 批量修改账号状态 * @param ids @@ -55,7 +58,7 @@ public interface ISysUserService { * @param sysUser */ @ApiOperation(value = "修改账号信息",notes = "修改账号信息") - void updateSysUser(SysUser sysUser) throws Exception; + void updateSysUser(SysUser sysUser); /** * 修改账号密码 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java index bf77af3..c27603a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.configuration; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.impp.framework.boot.util.ImppSwitchUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -20,16 +21,19 @@ public class AppStartSystemInit implements CommandLineRunner { public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); - @Autowired + @Autowired(required = false) private ISystemInitService systemInitService; - @Override public void run(String... args) throws Exception { try { + if(ImppSwitchUtil.isUnitTestEnv()) { + LOGGER.info("【单元测试环境 跳过初始化...】"); + return; + } LOGGER.info("【IMPP-Core开始加载基础信息...】"); - systemInitService.putAndLoadAll(); + systemInitService.putAndLoadAll(); }catch (Exception e){ e.printStackTrace(); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java index c544b0d..3d3fa9c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java @@ -1,34 +1,34 @@ -package cn.estsh.i3plus.core.apiservice.configuration; - -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.base.jpa.factory.BaseMongoRepositoryFactoryBean; -import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; - -/** - * @Description : 需要扫描其他包的配置文件 - * 此类专门添加需要单独加载的其他模块的包 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-12-12 20:49 - * @Modify: - **/ -@Configuration -@ConditionalOnExpression("'${" + CommonConstWords.PROP_SWITCH_MONGO + ":false}' == 'true'") -//扫描需要单独处理的持久化包 -@EnableMongoRepositories(basePackages = { - "cn.estsh.i3plus.**.platrepositorymongo" -},repositoryFactoryBeanClass = BaseMongoRepositoryFactoryBean.class) -public class ScanMongoPackageConfiguration { - public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); - - public ScanMongoPackageConfiguration(){ - LOGGER.info("【扫描关联包...】"); - } -} +//package cn.estsh.i3plus.core.apiservice.configuration; +// +//import cn.estsh.i3plus.platform.common.util.CommonConstWords; +//import cn.estsh.i3plus.pojo.base.jpa.factory.BaseMongoRepositoryFactoryBean; +//import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +//import org.springframework.boot.autoconfigure.domain.EntityScan; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +//import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +// +///** +// * @Description : 需要扫描其他包的配置文件 +// * 此类专门添加需要单独加载的其他模块的包 +// * @Reference : +// * @Author : alwaysfrin +// * @CreateDate : 2018-12-12 20:49 +// * @Modify: +// **/ +//@Configuration +//@ConditionalOnExpression("'${" + CommonConstWords.PROP_SWITCH_MONGO + ":false}' == 'true'") +////扫描需要单独处理的持久化包 +//@EnableMongoRepositories(basePackages = { +// "cn.estsh.i3plus.**.platrepositorymongo" +//},repositoryFactoryBeanClass = BaseMongoRepositoryFactoryBean.class) +//public class ScanMongoPackageConfiguration { +// public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); +// +// public ScanMongoPackageConfiguration(){ +// LOGGER.info("【扫描关联包...】"); +// } +//} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java index 0c4371d..40f7947 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java @@ -1,35 +1,35 @@ -package cn.estsh.i3plus.core.apiservice.configuration; - -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; - -/** - * @Description : 需要扫描其他包的配置文件 - * 此类专门添加需要单独加载的其他模块的包 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-12-12 20:49 - * @Modify: - **/ -@Configuration -//扫描需要单独处理的包 -@EntityScan(basePackages = { - "cn.estsh.i3plus.**.platbean" -}) - -//需要单独处理的其他模块包 -@EnableJpaRepositories(basePackages = { - "cn.estsh.i3plus.**.platrepository" -}, repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) -public class ScanPackageConfiguration { - public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); - - public ScanPackageConfiguration(){ - LOGGER.info("【扫描关联包...】"); - } -} +//package cn.estsh.i3plus.core.apiservice.configuration; +// +//import cn.estsh.i3plus.platform.common.util.CommonConstWords; +//import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.boot.autoconfigure.domain.EntityScan; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +// +///** +// * @Description : 需要扫描其他包的配置文件 +// * 此类专门添加需要单独加载的其他模块的包 +// * @Reference : +// * @Author : alwaysfrin +// * @CreateDate : 2018-12-12 20:49 +// * @Modify: +// **/ +//@Configuration +////扫描需要单独处理的包 +//@EntityScan(basePackages = { +// "cn.estsh.i3plus.**.platbean" +//}) +// +////需要单独处理的其他模块包 +//@EnableJpaRepositories(basePackages = { +// "cn.estsh.i3plus.**.platrepository" +//}, repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) +//public class ScanPackageConfiguration { +// public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); +// +// public ScanPackageConfiguration(){ +// LOGGER.info("【扫描关联包...】"); +// } +//} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java index 8807063..802271e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java @@ -5,8 +5,8 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -15,7 +15,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * @Description : @@ -33,7 +32,7 @@ public class DemoUploadController extends CoreBaseController{ /********************** 文件上传 ***********************/ @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; @GetMapping("/") public String index() { @@ -64,7 +63,7 @@ public class DemoUploadController extends CoreBaseController{ @ApiOperation(value = "文件上传",notes = "文件上传") public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file) { try { - FastDFSFile dfsFile = dfsClient.saveFile(file); + ImppFile dfsFile = fileService.upload(file); return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(dfsFile); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index b000afa..a31b71f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -4,17 +4,18 @@ import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; -import cn.estsh.i3plus.platform.common.tool.CookieTool; -import cn.estsh.i3plus.platform.common.tool.ServletRequestTool; -import cn.estsh.i3plus.platform.common.tool.StringTool; -import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.tool.*; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog; import cn.estsh.i3plus.pojo.base.bean.BaseConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.license.ImppLicense; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel; import cn.estsh.i3plus.pojo.platform.bean.*; @@ -22,10 +23,9 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.util.ImppRedis; -import cn.estsh.impp.framework.boot.util.LocaleUtils; -import cn.estsh.impp.framework.boot.util.ResultBean; -import cn.estsh.impp.framework.boot.util.ValidatorBean; +import cn.estsh.impp.framework.boot.license.ImppLicenseTool; +import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder; +import cn.estsh.impp.framework.boot.util.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -90,7 +90,7 @@ public class WhiteController extends CoreBaseController { private ISysConfigService configService; @Autowired - private ISysMenuService sysMenuService; + private SysUserPasswordUtil userPasswordUtil; @Resource(name=CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; @@ -151,6 +151,8 @@ public class WhiteController extends CoreBaseController { LOGGER.info("用户登陆 loginName:{} loginPwd:{} languageCode:{}",loginName,loginPwd,languageCode); ResultBean result = null; + CommonEnumUtil.USER_LOGIN_STATUS userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS; + try { ValidatorBean.checkNotNull(loginName,"用户名不能为空"); ValidatorBean.checkNotNull(loginPwd,"密码不能为空"); @@ -171,54 +173,49 @@ public class WhiteController extends CoreBaseController { recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), ipAddr); AuthUtil.setOrganize(user.getUser().getOrganize()); } catch (IncorrectCredentialsException e) { - // 密码错误 - Integer num = systemLoginService.doLoginPasswordError(loginName, ipAddr); - num = CommonConstWords.USER_LOGIN_ERROR_MAX_NUM - num; result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD); - if(num == 0){ - result.setErrorMsg("密码输入错误。用户已被锁定请联系管理员!"); - }else { - result.setErrorMsg("密码输入错误。再输入错误"+ num +"次,用户将被锁定。"); - } + userPasswordUtil.checkLoginErrorNumber(loginName,result,e); - // 记录登录记录 - recordSysUserLog(null, loginName, CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD; } catch (CredentialsException e) { // 用户名或密码错误 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD; } catch (LockedAccountException e) { // 账号已锁定 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_LOCKING); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING; } catch (UnknownAccountException e) { // 用户信息不存在 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_INFO_NULL); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL; } catch (AuthenticationException e) { // 系统异常 result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); result.setErrorMsg(e.getMessage()); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; } catch (ImppBusiException e) { result = ResultBean.fail(e); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; } catch (Exception e) { result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()) .setErrorMsg(LocaleUtils.getEnumLocaleResDesc(ImppExceptionEnum.SYSTEM_EXCEPTION, ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription())); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + }finally { + // 记录登录记录 + recordSysUserLog(null, loginName,userLoginStatus.getValue(), ipAddr); } LOGGER.info("会员{}登陆登录完成 , 登录耗时:{}",loginName,(System.currentTimeMillis() - startTime)); @@ -357,6 +354,8 @@ public class WhiteController extends CoreBaseController { sysFile.setFileTypeId(dictionary.getId()); sysFile.setFileTypeName(dictionary.getName()); + ConvertBean.serviceModelInitialize(sysFile,"白名单"); + sysFile = sysFileService.insertSysFile(sysFile); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile); }catch(ImppBusiException busExcep){ @@ -523,21 +522,20 @@ public class WhiteController extends CoreBaseController { } } + /** + * 缺失资源 + * @param key + * @param menuCode + * @return + */ @AnnoIgnoreLog @PostMapping(value = "/miss-resource/get") @ApiOperation(value = "缺失资源", notes = "缺失资源") public ResultBean getMissResourceByKey(String key,String menuCode){ try { - SysMenu sysMenu = sysMenuService.getSysMenuByCode(menuCode); - CommonEnumUtil.SOFT_TYPE softType = CommonEnumUtil.SOFT_TYPE.valueOf(sysMenu.getSoftType()); - if(softType == null){ - softType = CommonEnumUtil.SOFT_TYPE.IMPP; - } - - LocaleUtils.saveMissResource(key, AuthUtil.getSessionLanguage().toString(), - softType.getValue(), - CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MISSING.getValue(), - CommonEnumUtil.MiSS_RESOURCE_SOURCE.WEB.getValue()); + Map missResource = new HashMap<>(); + missResource.put(key,menuCode); + rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_RESOURCE, JsonUtilTool.encode(missResource)); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -545,4 +543,43 @@ public class WhiteController extends CoreBaseController { return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); } } + + /** + * 缺失资源开关 + * @return + */ + @AnnoIgnoreLog + @GetMapping(value = "/miss-resource/web-listener-switch") + @ApiOperation(value = "缺失资源开关", notes = "缺失资源开关") + public ResultBean getWebMissResourceSwitch(){ + try { + int webListener = RedisCacheTool.getSysConfigIntVal(PlatformConstWords.WEB_MISS_RESOURCE_LISTENER_SWITCH, + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + return ResultBean.success("获取成功") + .setResultObject(webListener == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } + + + @PostMapping(value = "/license") + @ApiOperation(value = "缺失资源开关", notes = "缺失资源开关") + public ResultBean updateLicense(String content){ + try { + ImppLicense license = ImppLicenseDecoder.getLicenseDecoder(content); + if(Objects.nonNull(license)){ + ImppLicenseTool.updateImppLicense(license); + }else{ + return ResultBean.fail("错误的授权信息"); + } + return ResultBean.success("操作成功"); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java index 842b10b..6e44358 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java @@ -2,24 +2,30 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.base.ISysLogService; import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; -import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.platbean.*; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; +import java.util.List; /** * @Description : @@ -38,95 +44,160 @@ public class ImppLogController extends CoreBaseController { /** * 系统日志分页复杂查询 + * * @param logSystem 查询条件 - * @param pager 分页数据 + * @param pager 分页数据 * @return 处理结果 */ @GetMapping("/system/query") - @ApiOperation(value = "系统日志分页复杂查询",notes = "系统日志分页复杂查询") - public ResultBean querySysLogSystemByPager(SysLogSystem logSystem, Pager pager){ + @ApiOperation(value = "系统日志分页复杂查询", notes = "系统日志分页复杂查询") + public ResultBean querySysLogSystemByPager(SysLogSystem logSystem, Pager pager) { try { ListPager logSystemList = logService.queryLogSystemPager(logSystem, pager); return ResultBean.success("操作成功").setListPager(logSystemList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 定时任务日志分页复杂查询 + * * @param sysLogTaskTime 查询日志 - * @param pager 分页数据 + * @param pager 分页数据 * @return 处理结果 */ @GetMapping("/task-time/query") - @ApiOperation(value = "定时任务日志分页复杂查询",notes = "定时任务日志分页复杂查询") - public ResultBean querySysLogSystemByPager(SysLogTaskTime sysLogTaskTime, Pager pager){ + @ApiOperation(value = "定时任务日志分页复杂查询", notes = "定时任务日志分页复杂查询") + public ResultBean querySysLogSystemByPager(SysLogTaskTime sysLogTaskTime, Pager pager) { try { ListPager logSystemList = logService.queryLogTaskTimePager(sysLogTaskTime, pager); return ResultBean.success("操作成功").setListPager(logSystemList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 操作日志复杂查询,分页,排序 + * * @param logOperate 操作日志 - * @param pager 分页数据 + * @param pager 分页数据 * @return 处理结果 */ @GetMapping(value = "/operate/query") - @ApiOperation(value = "操作日志复杂查询,分页,排序",notes = "操作日志复杂查询,分页,排序") - public ResultBean querySysLogOperateByPager(SysLogOperate logOperate, Pager pager){ + @ApiOperation(value = "操作日志复杂查询,分页,排序", notes = "操作日志复杂查询,分页,排序") + public ResultBean querySysLogOperateByPager(SysLogOperate logOperate, Pager pager) { try { ListPager logSystemList = logService.queryLogOperatePager(logOperate, pager); return ResultBean.success("操作成功").setListPager(logSystemList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 异常日志复杂查询,分页,排序 + * * @param sysLogException 查询条件 - * @param pager 分页信息 + * @param pager 分页信息 * @return 处理结果 */ @GetMapping(value = "/exception/query") - @ApiOperation(value = "异常日志复杂查询,分页,排序",notes = "异常日志复杂查询,分页,排序") - public ResultBean querySysLogExceptionByPager(SysLogException sysLogException, Pager pager){ + @ApiOperation(value = "异常日志复杂查询,分页,排序", notes = "异常日志复杂查询,分页,排序") + public ResultBean querySysLogExceptionByPager(SysLogException sysLogException, Pager pager) { try { ListPager logExceptionList = logService.queryLogExceptionPager(sysLogException, pager); return ResultBean.success("查询成功").setListPager(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 异常日志复杂查询,分页,排序 - * @param bean 查询条件 + * + * @param bean 查询条件 * @param pager 分页信息 * @return 处理结果 */ @GetMapping(value = "/console/query") - @ApiOperation(value = "异常日志复杂查询,分页,排序",notes = "异常日志复杂查询,分页,排序") - public ResultBean querySysLogConsoleByPager(SysLogConsole bean, Pager pager){ + @ApiOperation(value = "异常日志复杂查询,分页,排序", notes = "异常日志复杂查询,分页,排序") + public ResultBean querySysLogConsoleByPager(SysLogConsole bean, Pager pager) { try { ListPager logExceptionList = logService.queryLogConsolePager(bean, pager); return ResultBean.success("查询成功").setListPager(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 定时任务控制台日志,分页,排序 + * + * @param bean 查询条件 + * @return 处理结果 + */ + @GetMapping(value = "/console/query-schedule") + @ApiOperation(value = "定时任务控制台日志,分页,排序", notes = "定时任务控制台日志") + public ResultBean querySchdeuleLogConsoleByPager(SysLogConsole bean) { + try { + ValidatorBean.beginValid(bean) + .notNull("logGroup", bean.getLogGroup()); + // 参数 + // 1. group = CommonConstWords.SCHEDULE_LOG:Gourp.Name + // 2. + + bean.setLogGroup(CommonConstWords.SCHEDULE_LOG + ":" + bean.getLogGroup()); + + // 开始时间默认为上一分钟 + if (StringUtils.isBlank(bean.getCreateDateTimeStart())) { + Date lastMinute = TimeTool.timeCalc(new Date(), Calendar.MINUTE, -1); + bean.setCreateDateTimeStart(TimeTool.pareDateToString(lastMinute)); + } + + // 结束时间默认为当前时间 + if (StringUtils.isBlank(bean.getCreateDateTimeEnd())) { + bean.setCreateDateTimeEnd(TimeTool.getNowTime(true)); + } + // 一次100条 + bean.setOrderByParam("createDatetime"); + bean.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.ASC.getValue()); + + List logScheduleList = new ArrayList(); + + Pager pager = new Pager(); + pager.setPageSize(100); + pager.setCurrentPage(1); + + ListPager listPager; + do { + if (pager.getTotalRows() != 0) { + pager.next(); + } + listPager = logService.queryLogConsolePager(bean, pager); + if(listPager!= null && listPager.getObjectList()!= null) { + logScheduleList.addAll(listPager.getObjectList()); + pager = listPager.getObjectPager(); + }else if(pager.hasNext()) { + pager.setCurrentPage(pager.getTotalPages()); + } + } while (pager.hasNext()); + + return ResultBean.success("查询成功").setResultList(logScheduleList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } @@ -134,12 +205,12 @@ public class ImppLogController extends CoreBaseController { @GetMapping(value = "/clean-log") @ApiOperation(value = "添加操作日志", notes = "添加操作日志,可用于国际化") public ResultBean logClean(String time) { - try{ + try { Date thisTime = TimeTool.parseDate(time); String startTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, 0)) + " 00:00:00"; String endTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, 0)) + " 23:59:59"; - logService.actionCleanLog(startTime,endTime); + logService.actionCleanLog(startTime, endTime); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep).build(); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 619b683..f31f3a4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; @@ -70,6 +71,9 @@ public class PersonnelController extends CoreBaseController { @Autowired private ISysDepartmentService departmentService; + @Autowired + private SysUserPasswordUtil userPasswordUtil; + /** * 添加用户信息 * @param model 用户信息 @@ -86,7 +90,7 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = model.getSysUserInfo(); checkUserDetailModel(model, false); - personnelService.checkSysUserPassword(model.getUserLoginPassword()); + userPasswordUtil.checkPasswordSave(user); personnelService.checkSysUserOnly(user); if (StringUtils.isBlank(info.getUserJoinDate())) { @@ -163,7 +167,6 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = model.getSysUserInfo(); checkUserDetailModel(model, true); - personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); SysUserInfo userInfo = personnelService.getSysUserInfoById(info.getId()); @@ -226,11 +229,6 @@ public class PersonnelController extends CoreBaseController { // 关系 刷新 refreshRef(sysUser, userInfo, model); - // 更新 密码 - if(StringUtils.isNotBlank(user.getUserLoginPassword())){ - sysUser.setUserLoginPassword(user.getUserLoginPassword()); - refreshSysUserPassword(sysUser); - } personnelService.saveSysUser(sysUser); personnelService.saveSysUserInfo(userInfo); @@ -252,12 +250,9 @@ public class PersonnelController extends CoreBaseController { @ApiOperation(value = "修改用户信息", notes = "返回内容添加用户信息") public ResultBean updateUserModel(UserDetailModel model) { try { - startMultiService(); - checkUserModel(model); SysUser user = personnelService.getSysUserById(Long.parseLong(model.getUserId())); initUser(model, user); - personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); SysDepartment userDepartment = departmentService.get(Long.parseLong(model.getUserDepartmentId())); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java index b866da4..f8fb82d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java @@ -17,7 +17,8 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -64,7 +65,7 @@ public class SysFileController extends CoreBaseController { private ISysDictionaryService dictionaryService; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; /** * 修改文件资源 @@ -106,7 +107,12 @@ public class SysFileController extends CoreBaseController { ValidatorBean.checkNotNull(sysFile, "文件信息不存在"); LOGGER.info("FastDFS删除文件 == groupName: {},name:{}", sysFile.getDfsGroupName(), sysFile.getDfsFileName()); - dfsClient.deleteFile(sysFile.getDfsGroupName(), sysFile.getDfsFileName()); + + ImppFile imppFile = new ImppFile(); + imppFile.setDfsGroupName(sysFile.getDfsGroupName()); + imppFile.setDfsFileName(sysFile.getDfsFileName()); + + fileService.deleteFile(imppFile); sysFileService.deleteSysFileById(Long.parseLong(idStr)); @@ -312,7 +318,11 @@ public class SysFileController extends CoreBaseController { .build(); } - InputStream fis = dfsClient.downFile(sysFile.getDfsGroupName(), sysFile.getDfsFileName()); + ImppFile imppFile = new ImppFile(); + imppFile.setDfsGroupName(sysFile.getDfsGroupName()); + imppFile.setDfsFileName(sysFile.getDfsFileName()); + + InputStream fis = fileService.downFile(imppFile); if (fis == null) { throw ImppExceptionBuilder.newInstance() diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java index e8d840d..a61645e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java @@ -25,8 +25,8 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -82,7 +82,7 @@ public class SysLocaleResourceController extends CoreBaseController { private EntityManager entityManager; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; /** * 新增语言资源 @@ -487,10 +487,10 @@ public class SysLocaleResourceController extends CoreBaseController { // 查询服务器中是否存在模板文件 SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); if(sysFile == null){ - FastDFSFile fastDFSFile = new FastDFSFile(SysLocaleResource.class.getSimpleName() + "ImportTemplate.xls", + ImppFile fastDFSFile = new ImppFile(SysLocaleResource.class.getSimpleName() + "ImportTemplate.xls", excelTool.importTemplate(SysLocaleResource.class), ".xls"); - sysFile = dfsClient.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysFile = fileService.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); sysFile.setFileCode(importTemplateCode); sysFileService.insertSysFile(sysFile); } @@ -563,7 +563,9 @@ public class SysLocaleResourceController extends CoreBaseController { @ApiOperation(value = "批量转换缺失资源") public ResultBean doBatchConversionMissResource(@RequestBody List missResourceModelList){ try { - sysLocaleResourceService.doConversionMissResourceByKeys(missResourceModelList); + ValidatorBean.checkNotNull(missResourceModelList,"请选择缺失数据信息"); + + sysLocaleResourceService.doConversionMissResourceByKeys(missResourceModelList, AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -607,7 +609,7 @@ public class SysLocaleResourceController extends CoreBaseController { String fileName = "locale_" + System.currentTimeMillis() + ".xls"; File file = new File(tempDir,fileName); - if (file.createNewFile()) { + if (!file.createNewFile()) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java index ea3b86f..4c145c5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java @@ -21,8 +21,8 @@ import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -67,7 +67,7 @@ public class SysOrderNoRuleController extends CoreBaseController { private ISysMessageService sysMessageService; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; @Autowired private EntityManager entityManager; @@ -333,10 +333,10 @@ public class SysOrderNoRuleController extends CoreBaseController { // 查询服务器中是否存在模板文件 SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); if(sysFile == null){ - FastDFSFile fastDFSFile = new FastDFSFile(SysOrderNoRule.class.getSimpleName() + "ImportTemplate.xls", + ImppFile fastDFSFile = new ImppFile(SysOrderNoRule.class.getSimpleName() + "ImportTemplate.xls", excelTool.importTemplate(SysOrderNoRule.class), ".xls"); - sysFile = dfsClient.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysFile = fileService.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); sysFile.setFileCode(importTemplateCode); sysFileService.insertSysFile(sysFile); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java index 1f82e03..63e70ad 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java @@ -2,11 +2,20 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.common.CloudPagerModel; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; import cn.estsh.impp.framework.base.controller.CrudBaseController; import cn.estsh.impp.framework.base.service.ICrudService; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +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; @@ -28,4 +37,20 @@ public class SysPojoVersionController extends CrudBaseController public ICrudService getCrudService() { return pojoVersionService; } + + @PostMapping("/cloud-query") + @ApiOperation(value = "查询数据", notes = "复杂查询,分页,排序") + BaseResultBean queryPojoVersionByPagerCloud(@RequestBody CloudPagerModel model){ + try { + SysPojoVersion bean = packQueryPager(model.getObj()); + + return ResultBean.success("操作成功") + .setListPager(getCrudService().findPager(bean, model.getPager())) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java index 2b06e9a..65e3115 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java @@ -1,14 +1,20 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.impp.framework.base.controller.CrudBaseController; import cn.estsh.impp.framework.base.service.ICrudService; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -30,4 +36,27 @@ public class SysPojoVersionDetailController extends CrudBaseController { @Autowired private ISysPojoVersionPlanService pojoVersionService; @@ -42,9 +42,9 @@ public class SysPojoVersionPlanController extends CrudBaseController= 0 ){ - if(redisValue.toString().indexOf(email) >= 0 ){ - SysUser user = sysUserService.getSysUserByEmail(email); - user.setUserLoginPassword(EncryptTool.hexMD5(password)); - sysUserService.updateSysUser(user); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }else { - return ResultBean.fail("操作失败") - .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) - .setErrorMsg("请勿修改邮箱信息"); - } - }else { - return ResultBean.fail("操作失败") - .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) - .setErrorMsg("验证码错误请重新输入"); - } - }else { - return ResultBean.fail("操作失败") - .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) - .setErrorMsg("验证码已过期"); - } - } catch (ImppBusiException busExcep) { - return ResultBean.fail(busExcep); - } catch (Exception e) { - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } +// TODO 密码待修复 +// /** +// * 通过邮箱的验证码修改密码 +// * @param password 新密码 +// * @param email 邮箱 +// * @param verification 验证码不能为空 +// * @return 处理结果 +// */ +// @PostMapping("/password/update-verification") +// @ApiOperation(value = "修改密码",notes = "通过邮箱的验证码修改密码") +// public ResultBean getEmailVerification(String password,String email,String verification){ +// try { +// ValidatorBean.checkNotNull(verification,"验证码不能为空"); +// ValidatorBean.checkNotNull(password,"新密码不能为空"); +// ValidatorBean.checkNotNull(email,"邮件不能为空"); +// +// personnelService.checkSysUserPassword(password); +// +// String redisKey = CommonConstWords.SESSION_VERIFICATION_USER_EMAIL + "_" + getSessionUser().getUserId(); +// Object redisValue = redisCore.getObject(redisKey); +// if(redisValue != null){ +// if(redisValue.toString().indexOf(verification) >= 0 ){ +// if(redisValue.toString().indexOf(email) >= 0 ){ +// SysUser user = sysUserService.getSysUserByEmail(email); +// user.setUserLoginPassword(EncryptTool.hexMD5(password)); +// sysUserService.updateSysUser(user); +// return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// }else { +// return ResultBean.fail("操作失败") +// .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) +// .setErrorMsg("请勿修改邮箱信息"); +// } +// }else { +// return ResultBean.fail("操作失败") +// .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) +// .setErrorMsg("验证码错误请重新输入"); +// } +// }else { +// return ResultBean.fail("操作失败") +// .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) +// .setErrorMsg("验证码已过期"); +// } +// } catch (ImppBusiException busExcep) { +// return ResultBean.fail(busExcep); +// } catch (Exception e) { +// return ImppExceptionBuilder.newInstance().buildExceptionResult(e); +// } +// } /** * 修改用户操作组织id diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java index d3cd269..a4ad5c8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java @@ -56,7 +56,7 @@ public class I3CoreQueueConfig { * @throws Exception */ @Bean - public Queue getQueueSwebNoticeQueue(){ + public Queue getQueueSwebNoticeQuery(){ return new Queue(PlatformConstWords.QUEUE_SWEB_NOTICE); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java new file mode 100644 index 0000000..8fd202b --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java @@ -0,0 +1,37 @@ +package cn.estsh.i3plus.core.apiservice.mq; + +import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService; +import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +import cn.estsh.impp.framework.boot.mdm.mq.BaseMdmDataSyncQueueReceiver; +import com.rabbitmq.client.Channel; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Configuration; + +import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-28 16:54 + * @Modify: + **/ +@ConditionalOnExpression("'${impp.mq.queue.mdm.sync:true}' == 'true'") +@Configuration +public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { + + /** + * 初始化类关系 + */ + public MdmDataSyncQueueReceiver() { + putMdmDataRef(SysToolSyncDataService.class, MdmGearCoreBusiExtd.mdmMasterClass, MdmGearCoreBusiExtd.class); + } + + @Override + @RabbitListener(queues = QUEUE_MDM_SYNC_DATA_CORE) + public void syncMasterData(String syncDataStr, Channel channel, Message message) { + processSyncMasterData(syncDataStr, channel, message); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java index 6b4f98a..a65b2cf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java @@ -25,7 +25,8 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -37,8 +38,8 @@ import java.util.List; * @CreateDate : 2018-11-15 22:35 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.letter}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.letter:true}' == 'true'") +@Configuration public class MessageLetterQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(MessageLetterQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index f7565b0..c8910d0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -21,7 +21,8 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; + import java.io.IOException; /** @@ -31,8 +32,8 @@ import java.io.IOException; * @CreateDate : 2018-11-15 22:15 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.mail}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.mail:true}' == 'true'") +@Configuration public class MessageMailQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(MessageMailQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java index 3dad586..f8889a4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java @@ -24,7 +24,7 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.util.ArrayList; @@ -37,8 +37,8 @@ import java.util.List; * @CreateDate : 2018-11-15 22:15 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.sweb.notice}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.sweb.notice:true}' == 'true'") +@Configuration public class MessageSWebNoticeQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(MessageSWebNoticeQueueReceiver.class); @@ -64,6 +64,10 @@ public class MessageSWebNoticeQueueReceiver { // 添加消息 SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); try { + if (msg!= null &&StringUtils.isBlank(msg.getCreateUser())) { + ConvertBean.serviceModelInitialize(msg, msg.getMessageSenderNameRdd()); + } + msg = sysMessageService.insertSysMessage(msg); // 添加附件信息 @@ -90,20 +94,23 @@ public class MessageSWebNoticeQueueReceiver { try { userJsonArray = JSON.parseArray(msg.getMessageReceiversId()); }catch (JSONException e){ - LOGGER.error(" JSON转换错误【{0}】:{1}", msg.getMessageReceiversId(), e.getMessage()); + LOGGER.error("JSON转换错误【{0}】", msg.getMessageReceiversId(), e.getMessage()); } JSONObject userJsonObject; List insertList = new ArrayList<>(userJsonArray.size()); - List receiversId = new ArrayList(); - List receiversName = new ArrayList(); + List receiversId = new ArrayList<>(); + List receiversName = new ArrayList<>(); SysRefUserMessage refUserMessage; - for (Object user : userJsonArray) { // 约定格式:[{'id':'111','name':'张三'},{'id':'121','name':'张三2'}] userJsonObject = ( JSONObject )user; - receiversId.add(userJsonObject.get("id").toString()); - receiversName.add(userJsonObject.get("name").toString()); + if (userJsonObject.containsKey("id")) { + receiversId.add(userJsonObject.getLongValue("id")); + } + if (userJsonObject.containsKey("name")) { + receiversName.add(userJsonObject.getString("name")); + } refUserMessage = new SysRefUserMessage(); refUserMessage.setMessageId(msg.getId()); @@ -111,8 +118,8 @@ public class MessageSWebNoticeQueueReceiver { refUserMessage.setMessageTitleRdd(msg.getMessageTitle()); refUserMessage.setMessageTypeRdd(msg.getMessageType()); refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd()); - refUserMessage.setReceiverId(Long.parseLong(userJsonObject.get("id").toString())); - refUserMessage.setReceiverNameRdd(userJsonObject.get("name").toString()); + refUserMessage.setReceiverId(userJsonObject.getLongValue("id")); + refUserMessage.setReceiverNameRdd(userJsonObject.getString("name")); refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); refUserMessage.setReceiverTime(TimeTool.getNowTime(true)); refUserMessage.setIsUrgent(msg.getIsUrgent()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java index ef83299..dbca05d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java @@ -42,8 +42,8 @@ import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP * @CreateDate : 20-4-26 下午2:32 * @Modify: **/ -@Component -@ConditionalOnExpression("'${impp.mq.queue.letter}' == 'true'") +@ConditionalOnExpression("'${impp.mq.queue.pojo.version:true}' == 'true'") +@Configuration public class PojoVersionQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(PojoVersionQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java index c104b08..b64f989 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java @@ -11,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; import cn.estsh.i3plus.pojo.platform.platbean.SysLogTaskTime; import cn.estsh.impp.framework.boot.log.ImppLog; import com.alibaba.fastjson.JSON; @@ -22,7 +23,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.util.stream.Collectors; @@ -34,8 +35,8 @@ import java.util.stream.Collectors; * @CreateDate : 2018-12-20 21:56 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.schedule}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.schedule:true}' == 'true'") +@Configuration public class ScheduleQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleQueueReceiver.class); @@ -110,7 +111,7 @@ public class ScheduleQueueReceiver { // 设置收件人名称 String[] messageReceiver = taskPlan.getNoticeChannel().split(","); String receiversName = sysUserService.findSysUserByIds(StringTool.getArrayLong(messageReceiver)) - .stream().map(e -> e.getUserName()).collect(Collectors.joining(",")); + .stream().map(SysUser::getUserName).collect(Collectors.joining(",")); sysMessage.setMessageReceiversNameRdd(receiversName); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java index af897f6..a83b589 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java @@ -12,7 +12,8 @@ import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.util.Map; @@ -27,7 +28,8 @@ import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP * @CreateDate : 19-8-23 下午3:12 * @Modify: **/ -@Component +@ConditionalOnExpression("'${impp.mq.queue.resource:true}' == 'true'") +@Configuration public class SysLocalResourceQueue { private static final Logger LOGGER = LoggerFactory.getLogger(SysLocalResourceQueue.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java index 1d70422..f4bf088 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java @@ -7,8 +7,6 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; /** @@ -21,7 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; @DisallowConcurrentExecution @ApiOperation("定时任务demo") public class DemoJob extends BaseImppScheduleJob { - public static final Logger LOGGER = LoggerFactory.getLogger(DemoJob.class); + private static final long serialVersionUID = 2582480740831583839L; public DemoJob() { @@ -48,7 +46,18 @@ public class DemoJob extends BaseImppScheduleJob { } catch (InterruptedException e) { e.printStackTrace(); } - System.out.println("定时任务被执行"); - LOGGER.info("projectName:{},port:{}", applicationProperties.getApplicationName(),applicationProperties.getServerPort()); + + LOGGER.debug("debug /////BaseImppScheduleJob/// ///////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); + LOGGER.info("info ///////////BaseImppScheduleJob// ////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); + LOGGER.warn("warn /////////BaseImppScheduleJob////////////////////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); + LOGGER.error("error ////////////BaseImppScheduleJob////////////////////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java index 0ae905f..01b1afe 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java @@ -9,7 +9,6 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool; -import cn.estsh.impp.framework.boot.license.ImppLicenseTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -78,6 +77,8 @@ public class SystemInitService implements ISystemInitService { @Override @ApiOperation(value = "初始化加载所有数据",notes = "初始化加载所有数据") public void putAndLoadAll() { + try { + type = ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue(); LOGGER.info("加载 SysConfig 信息"); @@ -99,8 +100,9 @@ public class SystemInitService implements ISystemInitService { LOGGER.info("加载 对象版本控制信息"); reloadPojoVersionPlan(); LOGGER.info("加载 对象版本控制信息 信息完成"); - - + }catch (Exception e){ + e.printStackTrace(); + } } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java index 9897e53..e52716b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java @@ -1,6 +1,9 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -9,20 +12,29 @@ import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository; import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.util.ImppLdapUtils; import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.ImppSwitchUtil; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.shiro.authc.CredentialsException; import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.LockedAccountException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; +import java.util.Objects; /** * @Description : 用户登陆方法 @@ -38,6 +50,14 @@ public class SystemLoginService implements ISystemLoginService { @Autowired private SysUserRepository sysUserRDao; + @Lazy + @Autowired + private SysUserPasswordUtil userPasswordUtil; + + @Lazy + @Autowired + private ISysUserPasswordService passwordService; + /** * 核心的缓存 */ @@ -119,28 +139,55 @@ public class SystemLoginService implements ISystemLoginService { public SysUser getUserLoginInfo(String loginName,String pwd) { SysUser user = sysUserRDao.getByProperty( new String[]{"userLoginName","isValid"}, - new Object[]{loginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()} - ); + new Object[]{loginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + if(user == null){ //用户不存在 throw new CredentialsException("用户不存在"); - }else { - if(user.getUserStatus() != CommonEnumUtil.USER_STATUS.ENABLE.getValue()){ - throw new LockedAccountException("账号已被锁定"); - } - try { - // 密码加密 - pwd = EncryptTool.hexMD5(pwd); - } catch (Exception e) { - LOGGER.error("登录密码加密出错。"); - throw new IncorrectCredentialsException("登陆密码错误"); + } + + if(user.getUserStatus() != CommonEnumUtil.USER_STATUS.ENABLE.getValue()){ + throw new LockedAccountException("账号已被锁定"); + } + + // 登录AD 域检查 + if(ImppSwitchUtil.isLoginActiveDirectory()){ + userPasswordUtil.checkActiveDirectory(user); + return user; + } + + SysUserPassword password = null; + String passwordStr = user.getUserLoginPassword(); + try { + if(Objects.nonNull(user.getUserLoginPasswordId()) && user.getUserLoginPasswordId() > 0){ + password = passwordService.get(user.getUserLoginPasswordId()); + }else{ + if(StringUtils.equals(user.getUserLoginPassword(),SysUserPasswordUtil.encoder(pwd))){ + SysUserPassword userPassword = new SysUserPassword(user.getId(), SysUserPasswordUtil.encoder(pwd)); + ConvertBean.serviceModelInitialize(userPassword,user.getUserName()); + password = passwordService.insert(userPassword); + + user.setUserLoginPassword(null); + user.setUserLoginPasswordId(password.getId()); + + sysUserRDao.save(user); + } } - if (!StringUtils.equals(user.getUserLoginPassword(), pwd)) { //密码不符 - LOGGER.error("密码验证错误。"); - throw new IncorrectCredentialsException("登陆密码错误"); + + if(Objects.nonNull(password)){ + passwordStr = password.getUserPassword(); } - return user; + if (StringUtils.equals(passwordStr,SysUserPasswordUtil.encoder(pwd))){ + return user; + } + LOGGER.error("密码验证错误。"); + } catch (Exception e) { + LOGGER.error("登录密码加密出错[Exception]"); } + + throw new IncorrectCredentialsException("登陆密码错误"); + + } /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 61e4131..2bf98c3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.apiservice.util.HqlModelPack; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -22,6 +23,7 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; @@ -674,12 +676,12 @@ public class PersonnelServiceService implements IPersonnelService { LOGGER.info("平台用户岗位 SysUser user:{}", user); Integer num = 0; if(user != null){ - String day = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date()); - String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + "-" + day + "-" + user.getId(); + String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + ":" + TimeTool.getToday() + ":" + user.getId(); Object redisValue = redisCore.getObject(redisKey); num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1; - if(num > CommonConstWords.LOCK_USER_RESET_PASSWORD){ + int numMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_RESET_PASSWORD, CommonConstWords.CONFIG_PWD_RESET_PASSWORD_DEFAULT); + if(num > numMax){ throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode()) @@ -826,77 +828,77 @@ public class PersonnelServiceService implements IPersonnelService { } } - @Override - public void checkSysUserPassword(String password) { - LOGGER.info("平台用户 SysUser password:{}", password); - - if(StringUtils.isNotBlank(password)){ - // 密码长度校验 - String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_LENGTH; - SysConfig config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordLength(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码长度不够"+config.getConfigValue()+"位") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码小写校验 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_LOWER_ENGLISH; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordLowerEnglish(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含小写英文") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码大写校验 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_UPPERCASE_ENGLISH; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordUpperEnglish(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含大写英文") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码特殊字符 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_SPECIAL_CHAR; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordSpecialChar(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含特殊字符") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码特殊字符 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_NUMBER; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordNumber(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含数字") - .setErrorSolution("请重新输入") - .build(); - } - } - } +// @Override +// public void checkSysUserPassword(String password) { +// LOGGER.info("平台用户 SysUser password:{}", password); +// +// if(StringUtils.isNotBlank(password)){ +// // 密码长度校验 +// String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_LENGTH; +// SysConfig config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordLength(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码长度不够"+config.getConfigValue()+"位") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码小写校验 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_LOWER_ENGLISH; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordLowerEnglish(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含小写英文") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码大写校验 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_UPPERCASE_ENGLISH; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordUpperEnglish(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含大写英文") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码特殊字符 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_SPECIAL_CHAR; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordSpecialChar(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含特殊字符") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码特殊字符 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_NUMBER; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordNumber(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含数字") +// .setErrorSolution("请重新输入") +// .build(); +// } +// } +// } // @Override // public void refreshUpdateMenuRdd(Long menuId) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java index 20385a5..2bec7ca 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java @@ -16,8 +16,8 @@ import cn.estsh.i3plus.pojo.platform.repository.SysDictionaryRepository; import cn.estsh.i3plus.pojo.platform.repository.SysFileRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -47,7 +47,7 @@ public class SysFileServiceImpl implements ISysFileService { private SysDictionaryRepository sysDictionaryRDao; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; @Override @ApiOperation(value = "新增资源信息") @@ -173,15 +173,15 @@ public class SysFileServiceImpl implements ISysFileService { sysFile.setFileSoftType(CommonEnumUtil.SOFT_TYPE.CORE.getValue()); } - FastDFSFile fastDFSFile; + ImppFile fastDFSFile; SysFile uploadFile; // 判断参数类型 if (file instanceof File) { - fastDFSFile = new FastDFSFile(((File) file).getName(), FileTool.file2Byte(((File) file).getPath()), + fastDFSFile = new ImppFile(((File) file).getName(), FileTool.file2Byte(((File) file).getPath()), StringTool.getStringFileSuffix(((File) file).getName(), true)); - uploadFile = dfsClient.upload(fastDFSFile, sysFile.getFileSoftTypeVal()); + uploadFile = fileService.upload(fastDFSFile, sysFile.getFileSoftTypeVal()); } else { - uploadFile = dfsClient.saveFile((MultipartFile) file, sysFile.getFileSoftTypeVal()); + uploadFile = fileService.upload((MultipartFile) file, sysFile.getFileSoftTypeVal()); } uploadFile.setId(sysFile.getId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java index 38f380f..e413d37 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.BeanCopyTool; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; @@ -257,7 +258,7 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { } @Override - public void doConversionMissResourceByKeys(List missResourceModelList) { + public void doConversionMissResourceByKeys(List missResourceModelList,String userName) { Map langCodeMap = sysLocaleLanguageRDao.list() .stream() .collect( @@ -278,6 +279,9 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { sysLocaleResource.setResourceValue(resourceModel.getResourceValue()); sysLocaleResource.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + // 数据初始化 + ConvertBean.serviceModelInitialize(sysLocaleResource,userName); + insertSysLocaleResource(sysLocaleResource); redisRes.deleteKey(resourceModel.getKey()); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java index 3e06eb0..709069a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionDetailRepository; import cn.estsh.impp.framework.base.service.CrudService; @@ -25,4 +27,11 @@ public class SysPojoVersionDetailService extends CrudService getRepository() { return pojoVersionRDao; } + + @Override + public SysPojoVersionDetail getPojoVersionDetailByPojoVersionId(Long pojoVersionId) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(pojoVersionId,"pojoVersionId",ddlPackBean); + return pojoVersionRDao.getByProperty(ddlPackBean); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java index 8543237..8a655ec 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java @@ -8,7 +8,6 @@ import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionPlan; import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionPlanRepository; -import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.base.service.CacheCrudService; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import org.springframework.beans.factory.annotation.Autowired; @@ -48,4 +47,12 @@ public class SysPojoVersionPlanService extends CacheCrudService findSysTaskTimeRecordingAll() { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING find All"); - return taskTimeRecordingRDao.findAll(); - } - - @Override - @ApiOperation(value = "查询任务周期信息",notes = "查询 ID 任务周期信息") - public SysLogTaskTime getSysTaskTimeRecordingById(Long id) { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING find id:{}", id); - return taskTimeRecordingRDao.getOne(id); - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java index 68bc7cf..2cc3088 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; -import cn.estsh.i3plus.core.apiservice.dao.ITestDao; +import cn.estsh.i3plus.platform.common.tool.BeanCopyTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; @@ -12,7 +12,6 @@ import cn.estsh.i3plus.pojo.platform.repository.SysToolRepository; import cn.estsh.i3plus.pojo.platform.repository.SysToolTypeRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.util.ValidatorBean; -import com.alibaba.fastjson.JSON; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -82,24 +81,12 @@ public class SysToolService implements ISysToolService { @Override @ApiOperation(value = "更新硬件信息") public void updateSysTool(SysTool tool) { - // 查询硬件类型名称 - LOGGER.info("硬件类型 TOOL_TYPE :{}", tool); - SysToolType toolType = toolTypeRDao.getById(tool.getToolTypeId()); - ValidatorBean.checkNotNull(toolType); - - SysTool newSysTool = toolRDao.getById(tool.getId()); - newSysTool.setName(tool.getName()); - newSysTool.setToolConnType(tool.getToolConnType()); - newSysTool.setToolDataType(tool.getToolDataType()); - newSysTool.setToolIp(tool.getToolIp()); - newSysTool.setToolPort(tool.getToolPort()); - newSysTool.setToolDescription(tool.getToolDescription()); - newSysTool.setToolTypeId(tool.getToolTypeId()); - newSysTool.setToolTypeNameRdd(toolType.getName()); - newSysTool.setToolOperating(tool.getToolOperating()); - - LOGGER.info("硬件 TOOL :{}",newSysTool); - toolRDao.update(newSysTool); + SysTool orginTool = toolRDao.getById(tool.getId()); + if(orginTool == null){ + orginTool = tool; + } + BeanCopyTool.beanCopy(tool,orginTool); + toolRDao.update(orginTool); } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java new file mode 100644 index 0000000..3388760 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -0,0 +1,89 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; +import cn.estsh.i3plus.pojo.platform.repository.SysUserPasswordRepository; +import cn.estsh.impp.framework.base.service.CrudService; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : wei.peng + * @CreateDate : 20-6-4 下午3:49 + * @Modify: + **/ +@Primary +@Service +public class SysUserSavePasswordService extends CrudService implements ISysUserPasswordService { + + @Autowired + private SysUserPasswordRepository userPasswordRDao; + + @Autowired + private ISysUserService userService; + + @Override + public BaseRepository getRepository() { + return userPasswordRDao; + } + + @Override + public void updatePassword(Long userId, String password, String newPwd) { + SysUser user = userService.getSysUserById(userId); + ValidatorBean.checkNotNull(user,"不存在的用户信息"); + + SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); + ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); + if(StringUtils.equals(userPassword.getUserPassword(),password)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("原始密码错误") + .setErrorSolution("请重新操作") + .build(); + } + + updatePassword(userId, newPwd); + } + + @Override + public void updatePassword(Long userId, String password) { + SysUser user = userService.getSysUserById(userId); + ValidatorBean.checkNotNull(user,"不存在的用户信息"); + + userPasswordRDao.updateByProperties( + new String[]{"userId","isDeleted"}, + new Object[]{user.getId(),CommonEnumUtil.IS_DEAL.NO.getValue()}, + new String[]{"isDeleted","modifyDatetime","modifyUser"}, + new Object[]{ + CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), AuthUtil.getSessionUser().getUserName()}); + + SysUserPassword pwd = new SysUserPassword(); + pwd.setUserId(userId); + pwd.setUserPassword(SysUserPasswordUtil.encoder(password)); + ConvertBean.serviceModelInitialize(pwd,AuthUtil.getSessionUser()); + SysUserPassword save = userPasswordRDao.save(pwd); + + user.setUserLoginPasswordId(save.getId()); + ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); + userService.updateSysUser(user); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 55258d8..980ae07 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; @@ -26,6 +27,7 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -57,7 +59,7 @@ public class SysUserService implements ISysUserService { public static final Logger LOGGER = LoggerFactory.getLogger(SysUserService.class); @Autowired - private SysUserRepository sysUserRDao; + private SysUserRepository userRDao; @Autowired private SysUserInfoRepository sysUserInfoRDao; @@ -122,6 +124,11 @@ public class SysUserService implements ISysUserService { @Autowired private ISysFileService fileService; + @Autowired + private SysUserPasswordUtil passwordUtil; + + @Autowired ISysUserPasswordService userPasswordService; + @Resource(name = CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; @@ -173,10 +180,19 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "修改账号", notes = "修改账号状态") public void updateSysUserStatus(Long id, int status, SessionUser user) { LOGGER.debug("平台用户 SYS_USER id:{} status:{} modifyUser:{}", id, status, user.getUserName()); - SysUser sysUser = sysUserRDao.getById(id); + SysUser sysUser = userRDao.getById(id); sysUser.setUserStatus(status); sysUser.setModifyUser(user.getUserName()); - sysUserRDao.update(sysUser); + userRDao.update(sysUser); + } + + @Override + public void doLockSysUserById(Long id) { + SysUser user = userRDao.getById(id); + if(Objects.nonNull(user)){ + user.setUserStatus(CommonEnumUtil.USER_STATUS.LOCKING.getValue()); + userRDao.save(user); + } } @Override @@ -185,59 +201,67 @@ public class SysUserService implements ISysUserService { LOGGER.debug("平台用户 SYS_USER DELETE By ids :{} status:{}, SessionUser :{}", ids,status,user); String where = CoreHqlPack.packHqlIds("id", ids); - List list = sysUserRDao.findByHqlWhere(where); + List list = userRDao.findByHqlWhere(where); if(null != list && list.size() > 0){ for (SysUser sysUser : list) { sysUser.setUserStatus(status); sysUser.setIsValid(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); ConvertBean.modelUpdate(sysUser,user); } - sysUserRDao.saveAll(list); + userRDao.saveAll(list); } } @Override @ApiOperation(value = "修改账号", notes = "修改账号信息") - public void updateSysUser(SysUser sysUser) throws Exception{ + public void updateSysUser(SysUser sysUser) { LOGGER.debug("平台用户 SYS_USER SysUser :{}", sysUser); - sysUserRDao.save(sysUser); + userRDao.save(sysUser); } @Override @ApiOperation(value = "修改账号", notes = "修改账号登录密码") public void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception { LOGGER.debug("平台用户 SYS_USER Override:{} password:{} newPwd:{}", userId,password,newPwd); - SysUser user = sysUserRDao.getById(userId); - if(user != null){ - String pwdMd5 = EncryptTool.hexMD5(password); - if(pwdMd5.equals(user.getUserLoginPassword())){ - user.setUserLoginPassword(EncryptTool.hexMD5(newPwd)); - sysUserRDao.save(user); - }else { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("旧密码错误") - .setErrorSolution("请重新输入") - .build(); - } - }else { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) - .setErrorDetail("用户不存在") - .setErrorSolution("请重新操作") - .build(); - } + SysUser user = userRDao.getById(userId); + ValidatorBean.checkNotNull(user,"用户不存在"); + + user.setUserLoginPassword(newPwd); + passwordUtil.checkPasswordSave(user); + + userPasswordService.update(null); + + +// if(user != null){ +// String pwdMd5 = EncryptTool.hexMD5(password); +// if(pwdMd5.equals(user.getUserLoginPassword())){ +// user.setUserLoginPassword(EncryptTool.hexMD5(newPwd)); +// userRDao.save(user); +// }else { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("旧密码错误") +// .setErrorSolution("请重新输入") +// .build(); +// } +// }else { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) +// .setErrorDetail("用户不存在") +// .setErrorSolution("请重新操作") +// .build(); +// } } @Override @ApiOperation(value = "刷新账号", notes = "刷新账号登录信息") public void refreshUserLoginInformation(Long userId) { - SysUser user = sysUserRDao.getById(userId); + SysUser user = userRDao.getById(userId); user.setUserLoginLastDateTime(TimeTool.getNowTime(true)); user.setUserLoginNum(user.getUserLoginNum() + 1); - sysUserRDao.save(user); + userRDao.save(user); SysUserInfo userInfo = sysUserInfoRDao.getById(user.getUserInfoId()); userInfo.setUserLoginLastDateTime(TimeTool.getNowTime(true)); @@ -255,7 +279,7 @@ public class SysUserService implements ISysUserService { // 密码加密 输入的密码不等于密码一致时修改密码 String md5 = EncryptTool.hexMD5(sysUser.getUserLoginPassword()); sysUser.setUserLoginPassword(md5); - return sysUserRDao.insert(sysUser); + return userRDao.insert(sysUser); } else { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) @@ -312,7 +336,7 @@ public class SysUserService implements ISysUserService { // 角色名称冗余 // sysUser.setRoleNameRdd(String.join(",", roleNameList)); - sysUserRDao.save(sysUser); + userRDao.save(sysUser); } } @@ -320,9 +344,9 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "删除账号", notes = "删除账号信息,逻辑删除,账号关系业务物理删除") public void deleteSysUserById(Long id) { LOGGER.debug("平台用户 SYS_USER DELETE By id :{}", id); - SysUser user = sysUserRDao.getById(id); + SysUser user = userRDao.getById(id); user.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue()); - sysUserRDao.save(user); + userRDao.save(user); // 删除用户关系(物理删除) refUserRoleRDao.deleteByProperty("userId", id); // 删除用户角色关系 @@ -338,13 +362,13 @@ public class SysUserService implements ISysUserService { // 标记用户已删除 String where = CoreHqlPack.packHqlIds("id", ids); - List list = sysUserRDao.findByHqlWhere(where); + List list = userRDao.findByHqlWhere(where); if(null != list && list.size() > 0){ for (SysUser sysUser : list) { sysUser.setIsValid(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); } - sysUserRDao.saveAll(list); + userRDao.saveAll(list); refUserRoleRDao.deleteByPropertyIn("userId",ids); } } @@ -353,7 +377,7 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "账号查询", notes = "查询所有账号信息") public List list() { LOGGER.debug("平台用户 SYS_USER find All"); - return sysUserRDao.findByProperty( + return userRDao.findByProperty( new String[]{"isDeleted","isValid","organizeCode"}, new Object[]{ CommonEnumUtil.IS_DEAL.NO.getValue(), @@ -434,22 +458,22 @@ public class SysUserService implements ISysUserService { //生成hql查询语句 String hqlPack = CoreHqlPack.packHqlSysUser(user); - pager = PagerHelper.getPager(pager, sysUserRDao.findByHqlWhereCount(hqlPack)); - return new ListPager(sysUserRDao.findByHqlWherePage(hqlPack + user.orderBy(), pager), pager); + pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(hqlPack)); + return new ListPager(userRDao.findByHqlWherePage(hqlPack + user.orderBy(), pager), pager); } @Override public ListPager querySysUserByPager(SysUser user, List idList, Pager pager) { DdlPackBean packBean = CoreHqlPack.packDdlBeanSysUser(user, idList); - pager = PagerHelper.getPager(pager, sysUserRDao.findByHqlWhereCount(packBean)); - return new ListPager(sysUserRDao.findByHqlWherePage(packBean, pager), pager); + pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(packBean)); + return new ListPager(userRDao.findByHqlWherePage(packBean, pager), pager); } @Override @ApiOperation(value = "账号查询", notes = "根据ID 查询账号信息") public SysUser getSysUserById(Long id) { LOGGER.debug("平台用户 SYS_USER get By id :{}", id); - return sysUserRDao.getById(id); + return userRDao.getById(id); } @Override @@ -463,21 +487,21 @@ public class SysUserService implements ISysUserService { public SysUser getSysUserByLoginName(String loginName) { LOGGER.debug("平台用户 SYS_USER find By Login Name :{}", loginName); - return sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"}, + return userRDao.getByProperty(new String[]{"userLoginName", "isValid"}, new Object[]{loginName, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); } @Override @ApiOperation(value = "账号查询", notes = "根据邮箱查询用户信息") public SysUser getSysUserByEmail(String email) { - return sysUserRDao.getByProperty(new String[]{"userEmail", "isValid"}, + return userRDao.getByProperty(new String[]{"userEmail", "isValid"}, new Object[]{email, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); } @Override @ApiOperation(value = "账号查询", notes = "根据手机号查询用户信息") public SysUser getSysUserByPhone(String phone) { - return sysUserRDao.getByProperty(new String[]{"userPhone", "isValid"}, + return userRDao.getByProperty(new String[]{"userPhone", "isValid"}, new Object[]{phone, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); } @@ -495,10 +519,10 @@ public class SysUserService implements ISysUserService { StringBuffer sw = new StringBuffer(); HqlPack.getStringEqualPack(userLoginName,"userLoginName",sw); HqlPack.getNumNOEqualPack(id,"id",sw); - count = sysUserRDao.findByHqlWhereCount(sw.toString()); + count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = sysUserRDao.findByPropertyCount("userLoginName",userLoginName); + count = userRDao.findByPropertyCount("userLoginName",userLoginName); } return count <= 0 ; } @@ -511,10 +535,10 @@ public class SysUserService implements ISysUserService { StringBuffer sw = new StringBuffer(); HqlPack.getStringEqualPack(email,"userEmail",sw); HqlPack.getNumNOEqualPack(id,"id",sw); - count = sysUserRDao.findByHqlWhereCount(sw.toString()); + count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = sysUserRDao.findByPropertyCount("userEmail",email); + count = userRDao.findByPropertyCount("userEmail",email); } return count <= 0 ; } @@ -527,10 +551,10 @@ public class SysUserService implements ISysUserService { StringBuffer sw = new StringBuffer(); HqlPack.getStringEqualPack(phone,"userPhone",sw); HqlPack.getNumNOEqualPack(id,"id",sw); - count = sysUserRDao.findByHqlWhereCount(sw.toString()); + count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = sysUserRDao.findByPropertyCount("userPhone",phone); + count = userRDao.findByPropertyCount("userPhone",phone); } return count <= 0 ; } @@ -574,7 +598,7 @@ public class SysUserService implements ISysUserService { @Override @ApiOperation(value = "查询账户数量") public long getSysUserCount() { - return sysUserRDao.listCount(); + return userRDao.listCount(); } /** @@ -669,7 +693,7 @@ public class SysUserService implements ISysUserService { public List findSysUserByIds(Long[] ids) { DdlPackBean ddlPackBean = new DdlPackBean(); DdlPreparedPack.getInPackArray(ids, "id", ddlPackBean); - return sysUserRDao.findByHqlWhere(ddlPackBean); + return userRDao.findByHqlWhere(ddlPackBean); } /** @@ -762,6 +786,7 @@ public class SysUserService implements ISysUserService { if(CollectionUtils.isNotEmpty(menuList)){ for (SysMenu menu : menuList) { if(CommonConstWords.SYSTEM_MENU_ROOT_ID.equals(menu.getParentId())){ + menu.getChildList().clear(); list.add(menu); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java new file mode 100644 index 0000000..5ae08a0 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java @@ -0,0 +1,67 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.mdm; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.mdm.model.core.MdmGearCoreBusiModel; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import cn.estsh.impp.framework.boot.mdm.cloud.IBaseMdmBusiExtdCloud; +import cn.estsh.impp.framework.boot.mdm.cloud.IBaseMdmBusiModelCloud; +import cn.estsh.impp.framework.boot.mdm.service.BaseBusiSyncMdmDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-06-03 15:08 + * @Modify: + **/ +@Component +public class SysToolSyncDataService extends BaseBusiSyncMdmDataService { + + @Autowired + private ISysToolService sysToolService; + + @Autowired + public SysToolSyncDataService(IBaseMdmBusiExtdCloud baseMdmBusiExtdCloud, IBaseMdmBusiModelCloud baseMdmBusiModelCloud) { + super(baseMdmBusiExtdCloud, baseMdmBusiModelCloud); + } + + @Override + public List transform(List syncDataList,String userName) { + return syncDataList.stream().map(gearCoreBusiModel -> { + SysTool sysTool = new SysTool(); + if (gearCoreBusiModel != null && gearCoreBusiModel.getBusi() != null && gearCoreBusiModel.getMaster() != null) { + sysTool.setId(gearCoreBusiModel.getBusi().getId()); + sysTool.setName(gearCoreBusiModel.getMaster().getName()); + sysTool.setToolIp(gearCoreBusiModel.getMaster().getGearModel()); + sysTool.setToolDescription(gearCoreBusiModel.getBusi().getCoreNum()); + ConvertBean.serviceModelInitialize(sysTool,userName); + } + return sysTool; + }).collect(Collectors.toList()); + } + + @Override + public void insertBusiList(List beanList) { + for (SysTool sysTool : beanList) { + sysToolService.insertSysTool(sysTool); + } + } + + @Override + public void updateBusiList(List beanList) { + for (SysTool sysTool : beanList) { + sysToolService.updateSysTool(sysTool); + } + } + + @Override + public void deleteBusiList(List id,String userName) { + sysToolService.deleteSysToolByIds(id.toArray(new Long[id.size()])); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java index 5789835..5264265 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java @@ -177,9 +177,12 @@ public class NoSqlPack { public static ElasticSearchPack packEsSysLogConsole(SysLogConsole bean) { ElasticSearchPack result = packElasticSearchPack(bean); + result.andNumberBigger("id",bean.getId()); result.andNumberEquals("softType",bean.getSoftType()); + result.andNumberEquals("requestId",bean.getRequestId()); result.andStringLeftLike("logHost",bean.getLogHost()); result.andStringLike("userLoginName",bean.getUserLoginName()); + result.andStringEquals("logGroup",bean.getLogGroup()); result.andStringEquals("logLevel",bean.getLogLevel()); result.andStringLeftLike("executeClassName",bean.getExecuteClassName()); result.andStringLike("executeMethod",bean.getExecuteMethod()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java new file mode 100644 index 0000000..0b7f1d8 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java @@ -0,0 +1,505 @@ +package cn.estsh.i3plus.core.apiservice.util; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.EncryptTool; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.*; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.naming.NamingException; +import javax.naming.ldap.LdapContext; +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; +import java.util.List; +import java.util.Objects; +import java.util.regex.Pattern; + +/** + * @Description : + * @Reference : + * @Author : wei.peng + * @CreateDate : 20-6-8 上午10:10 + * @Modify: + **/ +@Component +public class SysUserPasswordUtil { + public static final Logger LOGGER = LoggerFactory.getLogger(SysUserPasswordUtil.class); + + @Autowired + private ISysUserPasswordService userPasswordService; + + @Lazy + @Autowired + private ISysUserService userService; + + @Resource(name = CommonConstWords.IMPP_REDIS_CORE) + protected ImppRedis redisCore; + + /** + * 密码加密 返回加密信息 + * @param password + * @return + */ + public static final String encoder(String password){ + try { + return EncryptTool.hexMD5(password); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("密码加密失败") + .setErrorSolution("请重新操作") + .build(); + } + + /******************************************** 用户保存密码检查 ********************************************/ + + public void checkPasswordSave(SysUser user) { + /* 密码 长度校验 */ + checkPasswordLength(user.getUserLoginPassword()); + /* 密码 大写字母校验 */ + checkPasswordUppercaseEnglish(user.getUserLoginPassword()); + /* 密码 小写字母校验 */ + checkPasswordlowerEnglish(user.getUserLoginPassword()); + /* 密码 数字校验 */ + checkPasswordNumber(user.getUserLoginPassword()); + /* 密码 特殊字符校验 */ + checkPasswordSpecial(user.getUserLoginPassword()); + /* 密码 重复使用校验 */ + checkPasswordRepeatDay(user); + /* 密码 密码正则校验 */ + checkPasswordRepeat(user.getUserLoginPassword()); + } + + /** + * 密码长度检查 + * + * @param content + */ + private void checkPasswordLength(String content) { + int length = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_LENGTH, CommonConstWords.CONFIG_PWD_LENGTH_DEFAULT); + + if (StringUtils.isBlank(content) || StringUtils.length(content) < length) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("长度不够" + length + "位") + .setErrorSolution("请重新输入") + .build(); + } + } + + /** + * 密码 大写字母检查 + * + * @param content + */ + private void checkPasswordUppercaseEnglish(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_UPPERCASE_ENGLISH, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 A-Z + if (ch >= 65 && ch <= 90) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含大写英文") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 小写字母检查 + * + * @param content + */ + private void checkPasswordlowerEnglish(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_LOWER_ENGLISH, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 a-z + if (ch >= 97 && ch <= 122) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含小写英文") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 数字检查 + * + * @param content + */ + private void checkPasswordNumber(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_NUMBER, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 0-9 + if (ch >= 48 && ch <= 57) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含数字") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 特殊字符检查 + * + * @param content + */ + private void checkPasswordSpecial(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_NUMBER, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 特殊字符 + if ((ch >= 32 && ch <= 47)|| (ch >= 58 && ch <= 64)|| + (ch >= 91 && ch <= 96)|| (ch >= 123 && ch <= 126)) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含数字") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 中文字符检查 + * + * @param content + */ + private void checkPasswordSpecialCn(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_SPECIAL_CHAR, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + if (!Pattern.compile("[\u4e00-\u9fa5]").matcher(content).find()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含中文字符") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 近期密码重复检查 + * + * @param user + */ + private void checkPasswordRepeatDay(SysUser user) { + int num = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_REPEAT_DAY, CommonConstWords.CONFIG_PWD_REPEAT_DAY_DEFAULT); + if (num > 0) { + try { + SysUserPassword userPassword = new SysUserPassword(); + userPassword.setUserId(user.getId()); + userPassword.setUserPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + + List passwords = userPasswordService.findAllByBean(userPassword); + + int lastDay = Integer.MAX_VALUE; + if (CollectionUtils.isNotEmpty(passwords)) { + for (SysUserPassword password : passwords) { + int day = TimeTool.getSecoundsBetweenTime(4, password.getCreateDatetime(), TimeTool.getNowTime(true)); + if (day < lastDay) { + lastDay = day; + } + } + } + + if (lastDay <= num) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("请勿使用重复密码") + .setErrorSolution("请重新输入") + .build(); + } + } catch (Exception e) { + e.printStackTrace(); + LOGGER.error("密码加密错误,异常信息:{}", e.getMessage()); + } + } + } + + /** + * 密码 正则表达式教研 + * + * @param content + */ + private void checkPasswordRepeat(String content) { + String regulars = RedisCacheTool.getSysConfigStrVal(CommonConstWords.CONFIG_PWD_REPEAT_REGULARS); + + if (StringUtils.isNotBlank(regulars) && regulars.indexOf(",") != -1) { + String[] split = regulars.split(","); + + try { + for (String compile : split) { + if(StringUtils.isNotBlank(compile)){ + if (!Pattern.compile(compile).matcher(content).find()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("正则【"+compile+"】密码校验不通过") + .setErrorSolution("请重新输入") + .build(); + } + } + } + }catch (ImppBusiException e){ + // 业务异常 抛出 + throw e; + }catch (Exception e){ + e.printStackTrace(); + } + } + } + + + + /******************************************** 用户登录密码检查 ********************************************/ + public void checkSysUserLogin(SysUser user) { + if(ImppSwitchUtil.isLoginActiveDirectory()){ + // 使用AD域账号登录 + checkActiveDirectory(user); + }else{ + /* 检查密码有效期 */ + checkLoginPasswordTimeOut(user); + /* 登录 长时间未登录锁定 */ + checkLoginTimeOut(user); + } + } + + /** + * 账号 ActiveDirectory 登录集成 + * @param user + */ + public void checkActiveDirectory(SysUser user) { + if(ImppSwitchUtil.isLoginActiveDirectory()){ + String activeDirectoryUrl = RedisCacheTool.getSysConfigStrVal(CommonConstWords.CONFIG_PWD_ACTIVE_DIRECTORY_URL); + + if (StringUtils.isNotBlank(activeDirectoryUrl)) { + LdapContext context = ImppLdapUtils.getLdapContext(activeDirectoryUrl, user.getUserLoginName(), user.getUserLoginPassword()); + if(Objects.isNull(context)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("ActiveDirectory 登录失败请重新登录") + .setErrorSolution("请重新操作") + .build(); + } + + try { + // 释放链接资源 + context.close(); + } catch (NamingException e) { + e.printStackTrace(); + } + }else{ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("ActiveDirectory 未配置链接地址") + .setErrorSolution("请联系管理员") + .build(); + } + } + } + + /** + * 登录 错误次数检查 + */ + public void checkLoginErrorNumber(String loginName, ResultBean resultBean, Exception e) { + SysUser user = userService.getSysUserByLoginName(loginName); + if(Objects.nonNull(user)){ + checkLoginErrorNumber(user.getId(), resultBean, e); + } + } + + /** + * 登录 失败次数检查 + * @param userId + * @param resultBean + * @param e + */ + public void checkLoginErrorNumber(Long userId, ResultBean resultBean, Exception e) { + int loginErrorNumberMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_USER_LOGIN_ERROR_NUMBER, CommonConstWords.CONFIG_USER_LOGIN_ERROR_NUMBER_DEFAULT); + String today = TimeTool.getToday(); + + int loginErrorNumber = 0; + String redisKey = CommonConstWords.USER_LOGIN_ERROR + ":" + today + ":" + userId; + try { + Object redisValue = redisCore.getObject(redisKey); + if(Objects.nonNull(redisValue)){ + loginErrorNumber = (Integer)redisValue; + } + }catch (Exception exception){ + LOGGER.error("获取登录异常次数错误,错误信息:{}", exception.getMessage()); + } + + if(Objects.equals(loginErrorNumberMax,loginErrorNumber)){ + // 锁定账号信息 + userService.doLockSysUserById(userId); + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("账号已被锁定") + .setErrorSolution("请联系系统管理员") + .build(); + }else if(loginErrorNumber > loginErrorNumberMax){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("账号已锁定") + .setErrorSolution("请联系系统管理员") + .build(); + } + + // 登录异常 更新登录失败次数 + if(Objects.nonNull(e)){ + ++loginErrorNumber; + + if(Objects.nonNull(resultBean)){ + int num = loginErrorNumberMax - loginErrorNumber; + if(num == 0){ + resultBean.setErrorMsg(resultBean.getErrorMsg() + "密码输入错误。用户已被锁定请联系管理员!"); + }else{ + resultBean.setErrorMsg(resultBean.getErrorMsg() + "密码输入错误。再输入错误"+ num +"次,用户将被锁定"); + } + } + + redisCore.putObject(redisKey,loginErrorNumber,CommonConstWords.REDIS_TIME_DAY_ONE); + } + } + + /** + * 登录 检查密码有效期 + */ + private void checkLoginPasswordTimeOut(SysUser user) { + try { + int passwordDayMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_VALID_DAY, CommonConstWords.CONFIG_PWD_VALID_DAY_DEFAULT); + if(passwordDayMax > 0){ + + SysUserPassword password = userPasswordService.get(user.getUserLoginPasswordId()); + if(Objects.nonNull(password)){ + int day = TimeTool.getSecoundsBetweenTime(4, password.getCreateDatetime(), TimeTool.getNowTime(true)); + if(day > passwordDayMax){ + // 锁定账号信息 + userService.doLockSysUserById(user.getId()); + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("账号密码已过期") + .setErrorSolution("请联系系统管理员") + .build(); + } + } + } + }catch (ImppBusiException e){ + throw e; + }catch (Exception e){ + LOGGER.error("密码有效期处理异常,异常信息:{}", e.getMessage()); + e.printStackTrace(); + } + } + + /** + * 登录 长时间未登录锁定 + */ + private void checkLoginTimeOut(SysUser user) { + try { + int loginDayMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_USER_LOGIN_DAY_OUT, CommonConstWords.CONFIG_USER_LOGIN_DAY_OUT_DEFAULT); + if(loginDayMax > 0){ + + int day = TimeTool.getSecoundsBetweenTime(4, user.getUserLoginLastDateTime(), TimeTool.getNowTime(true)); + if(day > loginDayMax){ + // 锁定账号信息 + userService.doLockSysUserById(user.getId()); + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("长时间未登录账号已被锁定") + .setErrorSolution("请联系系统管理员") + .build(); + } + } + }catch (ImppBusiException e){ + throw e; + }catch (Exception e){ + LOGGER.error("密码有效期处理异常,异常信息:{}", e.getMessage()); + e.printStackTrace(); + } + } + +} diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java index b2a3860..1b106d9 100644 --- a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java @@ -6,15 +6,25 @@ import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.estsh.impp.framework.run.ImppGo; +import com.alibaba.fastjson.JSON; import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.session.mgt.DefaultSessionContext; import org.apache.shiro.session.mgt.SessionContext; +import org.apache.shiro.subject.PrincipalCollection; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.stereotype.Component; import org.springframework.test.context.junit4.SpringRunner; /** @@ -37,7 +47,7 @@ public class TestBase { SessionContext sessionContext = new DefaultSessionContext(); sessionContext.setHost("localhost"); - UserAuthRealm userAuthRealm = (UserAuthRealm) SpringContextsUtil.getBean(UserAuthRealm.class); + ImppUserAuthRealm userAuthRealm = (ImppUserAuthRealm) SpringContextsUtil.getBean(ImppUserAuthRealm.class); org.apache.shiro.mgt.SecurityManager securityManager = new DefaultSecurityManager(userAuthRealm); SecurityUtils.setSecurityManager(securityManager); securityManager.start(sessionContext); @@ -55,26 +65,26 @@ public class TestBase { } } -// -//@Component -//class UserAuthRealm extends AuthorizingRealm { -// -// public UserAuthRealm() { -// //添加支持的token -// this.setAuthenticationTokenClass(UserToken.class); -// } -// -// @Override -// protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { -// return new SimpleAuthorizationInfo(); -// } -// -// @Override -// protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { -// SessionUser user = JSON.parseObject(TestBase.JSON_SESSION_USER, SessionUser.class); -// return new SimpleAuthenticationInfo(user, ((UserToken) authenticationToken).getLoginPwd(), this.getName()); -// } -// -//} -// + +@Component +class ImppUserAuthRealm extends AuthorizingRealm { + + public ImppUserAuthRealm() { + //添加支持的token + this.setAuthenticationTokenClass(UserToken.class); + } + + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { + return new SimpleAuthorizationInfo(); + } + + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + SessionUser user = JSON.parseObject(TestBase.JSON_SESSION_USER, SessionUser.class); + return new SimpleAuthenticationInfo(user, ((UserToken) authenticationToken).getLoginPwd(), this.getName()); + } + +} + diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java index df0a8b3..51cd705 100644 --- a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java @@ -1,718 +1,55 @@ -//package test.cn.estsh.i3plus.core.apiservice.serviceimpl.busi; -// -//import cn.estsh.i3plus.core.api.iservice.busi.*; -//import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; -//import cn.estsh.i3plus.core.apiservice.util.FileTool; -//import cn.estsh.i3plus.platform.common.convert.ConvertBean; -//import cn.estsh.i3plus.pojo.base.bean.BaseBean; -//import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; -//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -//import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; -//import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; -//import cn.estsh.i3plus.pojo.platform.bean.*; -//import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; -//import cn.estsh.impp.framework.boot.auth.AuthUtil; -//import cn.estsh.impp.framework.boot.util.ValidatorBean; -//import com.alibaba.fastjson.JSON; -//import org.apache.commons.lang3.RandomStringUtils; -//import org.apache.commons.lang3.RandomUtils; -//import org.apache.commons.lang3.StringUtils; -//import org.apache.commons.lang3.time.DateFormatUtils; -//import org.junit.Test; -//import org.springframework.beans.factory.annotation.Autowired; -// -//import java.io.FileWriter; -//import java.io.IOException; -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Random; -//import java.util.UUID; -// -///** -// * @Description : -// * @Reference : -// * @Author : Adair Peng -// * @CreateDate : 2019-02-25 14:39 -// * @Modify: -// **/ -//public class TestUser extends TestBase{ -// -// SnowflakeIdMaker snowflakeIdMaker = new SnowflakeIdMaker(); -// -// @Autowired -// private ISysPositionService positionService; -// -// @Autowired -// private ISysOrganizeService organizeService; -// -// @Autowired -// private ISysDepartmentService departmentService; -// -// @Autowired -// private ISysMenuService menuService; -// -// @Autowired -// private ISysRoleService roleService; -// -// String TEXT = "飓风黑兹尔是1954年大西洋飓风季期间造成死亡人数最多、经济损失最惨重的飓风。这场风暴夺走了海地多达1000人的生命,然后又以四级飓风强度从南、北卡罗莱纳州边境附近袭击美国,造成95人丧生。之后黑兹尔转变成温带风暴,但仍然致使81人遇难,其中大部分来自多伦多。由于风暴造成了重大人员伤亡和财产损失,其名称“黑兹尔”因此从大西洋风暴命名名单上退役。黑兹尔摧毁了海地40%的咖啡树和50%的可可作物,对当地经济的影响持续了数年之久。飓风在南、北卡罗莱纳州登陆,冲击点附近的大部分海滨住宅被毁。气旋从北卡罗莱纳州沿大西洋海岸北上,先后影响了弗吉尼亚州、西弗吉尼亚州、马里兰州、特拉华州、新泽西州、宾夕法尼亚州和纽约州,产生的阵风时速有近160公里,造成的经济损失高达3.08亿美元。多伦多市内及周边有许多溪流溢出,导致严重的洪涝灾害。加拿大遭受的损失达到1.35亿加拿大元。由于缺少应对热带气旋的经验,加上风暴强度的保持时间异常之长,多伦多所受影响的严重程度是前所未有的"; -// -// @Autowired -// private ITestTransService testTransService; -// @Test -// public void testTrans(){ -// try { -// testTransService.testListTran(1, "aaa"); -// }catch(Exception e){ -// System.out.println("111============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(2, "aaa"); -// }catch(Exception e){ -// System.out.println("222============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(3, "aaa"); -// }catch(Exception e){ -// System.out.println("333============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(4, "aaa"); -// }catch(Exception e){ -// System.out.println("444============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(5, "aaa"); -// }catch(Exception e){ -// System.out.println("555============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(6, "aaa"); -// }catch(Exception e){ -// System.out.println("666============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(7, "aaa"); -// }catch(Exception e){ -// System.out.println("777============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(8, "aaa"); -// }catch(Exception e){ -// System.out.println("888============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(9, "aaa"); -// }catch(Exception e){ -// System.out.println("999============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// } -// -// @Test -// public void testSysPosition() throws Exception{ -// List dataBase = new ArrayList<>(); -// -// for (int i = 0; i < 15; i++) { -// SysPosition position = new SysPosition(); -// position.setName(RandomStringUtils.random(10, TEXT)); -// position.setPositionCode(RandomStringUtils.random(10, true, false)); -// position.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// init(position); -// dataBase.add(position); -// -// for (int j = 0; j < 10; j++) { -// -// SysPosition position2 = new SysPosition(); -// position2.setName(RandomStringUtils.random(10, TEXT)); -// position2.setPositionCode(RandomStringUtils.random(10, true, false)); -// position2.setParentId(position.getId()); -// position2.setParentNameRdd(position.getName()); -// init(position2); -// dataBase.add(position2); -// -// for (int k = 0; k < 5; k++) { -// SysPosition position3 = new SysPosition(); -// position3.setName(RandomStringUtils.random(10, TEXT)); -// position3.setPositionCode(RandomStringUtils.random(10, true, false)); -// position3.setParentId(position2.getId()); -// position3.setParentNameRdd(position2.getName()); -// init(position3); -// dataBase.add(position3); -// } -// } -// } -// -// System.out.println("打印SQL Start "); -// String txt = null; -// -// for (SysPosition position : dataBase) { -// txt = new String("INSERT INTO sys_position (id, create_date, create_user, is_deleted, is_valid, modify_date, modify_user, organize_code, name, parent_id, parent_name_rdd, position_code, position_description) VALUES" + -// " ("+position.getId()+", '"+position.getCreateDatetime()+"', '"+position.getCreateUser()+"', "+position.getIsDeleted()+", "+position.getIsValid()+"," + -// " '"+position.getModifyDatetime()+"', '"+position.getModifyUser()+"', null, '"+position.getName()+"', "+position.getParentId()+", '"+position.getParentNameRdd()+"', '"+position.getPositionCode()+"', null);"); -// fileWriter("E:\\test\\SysPosition.sql",txt); -// } -// -// System.out.println("打印SQL Start End "); -// -// } -// -// @Test -// public void testOrganize()throws Exception{ -// System.out.println(positionService); -// List organizeList = new ArrayList<>(); -// List departmentList = new ArrayList<>(); -// -// for (int i = 0; i < 10; i++) { -// SysOrganize organize = new SysOrganize(); -// organize.setName(RandomStringUtils.random(10, TEXT)); -// organize.setOrganizeCode(RandomStringUtils.random(10, true, false)); -// organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// organize.setParentNameRdd("顶级组织"); -// organize.setOrganizeType(ImppEnumUtil.ORGANIZE_YTPE.TYPE_GROUP.getValue()); -// -// init(organize); -// organizeList.add(organize); -// -// for (int j = 0; j < 5 ; j++) { -// SysDepartment department = new SysDepartment(); -// department.setName(RandomStringUtils.random(10, TEXT)); -// department.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// department.setParentNameRdd("顶级部门"); -// department.setOrganizeId(organize.getId()); -// department.setOrganizeNameRdd(organize.getName()); -// department.setOrganizeCode(organize.getOrganizeCode()); -// -// init(department); -// departmentList.add(department); -// -// for (int k = 0; k < 5; k++) { -// SysDepartment department1 = new SysDepartment(); -// department1.setName(RandomStringUtils.random(10, TEXT)); -// department1.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department1.setParentId(department.getId()); -// department1.setParentNameRdd(department.getParentNameRdd()); -// department1.setOrganizeId(organize.getId()); -// department1.setOrganizeNameRdd(organize.getName()); -// department1.setOrganizeCode(organize.getOrganizeCode()); -// -// init(department1); -// departmentList.add(department1); -// -// for (int l = 0; l < 5; l++) { -// SysDepartment department2 = new SysDepartment(); -// department2.setName(RandomStringUtils.random(10, TEXT)); -// department2.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department2.setParentId(department1.getId()); -// department2.setParentNameRdd(department1.getParentNameRdd()); -// department2.setOrganizeId(organize.getId()); -// department2.setOrganizeNameRdd(organize.getName()); -// department2.setOrganizeCode(organize.getOrganizeCode()); -// -// init(department2); -// departmentList.add(department2); -// } -// } -// } -// -// for (int j = 0; j < 5; j++) { -// -// SysOrganize organize1 = new SysOrganize(); -// organize1.setName(RandomStringUtils.random(10, TEXT)); -// organize1.setOrganizeCode(RandomStringUtils.random(10, true, false)); -// organize1.setParentId(organize.getParentId()); -// organize1.setParentNameRdd(organize.getName()); -// organize1.setOrganizeType(ImppEnumUtil.ORGANIZE_YTPE.TYPE_FACTORY.getValue()); -// -// init(organize1); -// organizeList.add(organize1); -// -// for (int k = 0; k < 5; k++) { -// SysDepartment department = new SysDepartment(); -// department.setName(RandomStringUtils.random(10, TEXT)); -// department.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// department.setParentNameRdd("顶级部门"); -// department.setOrganizeId(organize1.getId()); -// department.setOrganizeNameRdd(organize1.getName()); -// department.setOrganizeCode(organize1.getOrganizeCode()); -// -// init(department); -// departmentList.add(department); -// for (int l = 0; l < 5; l++) { -// SysDepartment department1 = new SysDepartment(); -// department1.setName(RandomStringUtils.random(10, TEXT)); -// department1.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department1.setParentId(department.getId()); -// department1.setParentNameRdd(department.getParentNameRdd()); -// department1.setOrganizeId(organize1.getId()); -// department1.setOrganizeNameRdd(organize1.getName()); -// department1.setOrganizeCode(organize1.getOrganizeCode()); -// -// init(department1); -// departmentList.add(department1); -// for (int m = 0; m < 5; m++) { -// SysDepartment department2 = new SysDepartment(); -// department2.setName(RandomStringUtils.random(10, TEXT)); -// department2.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department2.setParentId(department1.getId()); -// department2.setParentNameRdd(department1.getParentNameRdd()); -// department2.setOrganizeId(organize1.getId()); -// department2.setOrganizeNameRdd(organize1.getName()); -// department2.setOrganizeCode(organize1.getOrganizeCode()); -// -// init(department2); -// departmentList.add(department2); -// } -// } -// } -// -// for (int k = 0; k < 5; k++) { -// -// SysOrganize organize2 = new SysOrganize(); -// organize2.setName(RandomStringUtils.random(10, TEXT)); -// organize2.setOrganizeCode(RandomStringUtils.random(10, true, false)); -// organize2.setParentId(organize1.getParentId()); -// organize2.setParentNameRdd(organize1.getName()); -// organize2.setOrganizeType(ImppEnumUtil.ORGANIZE_YTPE.TYPE_FACTORY.getValue()); -// -// init(organize2); -// organizeList.add(organize2); -// -// for (int l = 0; l < 5; l++) { -// SysDepartment department = new SysDepartment(); -// department.setName(RandomStringUtils.random(10, TEXT)); -// department.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// department.setParentNameRdd("顶级部门"); -// department.setOrganizeId(organize2.getId()); -// department.setOrganizeNameRdd(organize2.getName()); -// department.setOrganizeCode(organize2.getOrganizeCode()); -// -// init(department); -// departmentList.add(department); -// for (int m = 0; m < 5; m++) { -// SysDepartment department1 = new SysDepartment(); -// department1.setName(RandomStringUtils.random(10, TEXT)); -// department1.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department1.setParentId(department.getId()); -// department1.setParentNameRdd(department.getParentNameRdd()); -// department1.setOrganizeId(organize2.getId()); -// department1.setOrganizeNameRdd(organize2.getName()); -// department1.setOrganizeCode(organize2.getOrganizeCode()); -// -// init(department1); -// departmentList.add(department1); -// for (int n = 0; n < 5; n++) { -// SysDepartment department2 = new SysDepartment(); -// department2.setName(RandomStringUtils.random(10, TEXT)); -// department2.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department2.setParentId(department1.getId()); -// department2.setParentNameRdd(department1.getParentNameRdd()); -// department2.setOrganizeId(organize2.getId()); -// department2.setOrganizeNameRdd(organize2.getName()); -// department2.setOrganizeCode(organize2.getOrganizeCode()); -// -// init(department2); -// departmentList.add(department2); -// } -// } -// } -// } -// } -// } -// -// for (SysOrganize organize : organizeList) { -// String txt = new String(" INSERT INTO sys_organize (" + -// "id, create_date, create_user, is_deleted, is_valid, modify_date, " + -// "modify_user, organize_code, name, organize_type, parent_id, parent_name_rdd) VALUES " + -// "("+organize.getId()+", '"+organize.getCreateDatetime()+"', '"+organize.getCreateUser()+"', " + -// " "+organize.getIsDeleted()+", "+organize.getIsValid()+", '"+organize.getModifyDatetime()+"'," + -// " '"+organize.getModifyUser()+"', '"+organize.getOrganizeCode()+"', '"+organize.getParentNameRdd()+"'," + -// " "+organize.getOrganizeType()+", "+organize.getParentId()+", '"+organize.getParentNameRdd()+"');"); -// fileWriter("E:\\test\\SysOrganize.sql",txt); -// } -// -// for (SysDepartment department : departmentList) { -// String txt = new String("INSERT INTO sys_department (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, department_code, name, organize_id, organize_name_rdd," + -// " parent_id, parent_name_rdd) VALUES (" + -// " "+department.getId()+", '"+department.getCreateDatetime()+"'," + -// " '"+department.getCreateUser()+"', "+department.getIsDeleted()+", "+department.getIsValid()+"," + -// " '"+department.getModifyDatetime()+"', '"+department.getModifyUser()+"', '"+department.getDepartmentCode()+"'," + -// " '"+department.getName()+"', "+department.getOrganizeId()+", '"+department.getOrganizeNameRdd()+"', " + -// " "+department.getParentId()+", ':"+department.getParentNameRdd()+"');"); -// fileWriter("E:\\test\\SysDepartment.sql",txt); -// } -// -// } -// -// @Test -// public void testSysMenu() throws Exception { -// List list = menuService.findSysMenuAll(); -// -// for (SysMenu menu : list) { -// String txt = new String("INSERT INTO sys_menu (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, menu_class_path, menu_code, menu_css, menu_description, menu_grade, menu_icon, " + -// "menu_sort, menu_status, menu_type, menu_url, name, parent_id, parent_name_rdd, name_zh_shortening) VALUES (" + -// " "+menu.getId()+", null, 'System Init', null, null, '2018-12-20 12:39:56', '系统管理员', '', '101010000', '', null, null, '', '0', 1, 2, '/impp-base', '基础信息管理', 100002, '设置', 'jcxxgl');"); -// fileWriter("E:\\test\\SysRefRoleMenu.sql",txt); -// } -// } -// -// @Test -// public void testSysRole() throws Exception{ -// List list = menuService.findSysMenuAll(); -// -// List roleList = new ArrayList<>(); -// List refRoleMenuList = new ArrayList<>(); -// -// for (int i = 0; i < 100 ; i++) { -// List moduleListRdd = new ArrayList<>(); -// List featuresListRdd = new ArrayList<>(); // 冗余 -// -// SysRole role = new SysRole(); -// role.setRoleStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue()); -// role.setMenuNumber(0); -// role.setModuleNumber(0); -// role.setName(RandomStringUtils.random(10, TEXT)); -// role.setRoleDescription(RandomStringUtils.random(50, TEXT)); -// -// for (SysMenu menu : list) { -// SysRefRoleMenu ref = new SysRefRoleMenu(); -// ref.setRoleId(role.getId()); -// ref.setRoleNameRdd(role.getName()); -// ref.setMenuNameRdd(menu.getName()); -// ref.setMenuId(menu.getId()); -// ref.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// ref.setMenuTypeRdd(menu.getMenuType()); -// -// // 冗余信息封装 -// if(CommonEnumUtil.METHOD_LEVEL.MODULE.getValue() == menu.getMenuType().intValue()){ -// moduleListRdd.add(menu.getName()); -// } -// if(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue() == menu.getMenuType().intValue()){ -// featuresListRdd.add(menu.getName()); -// } -// -// init(ref); -// refRoleMenuList.add(ref); -// } -// -// role.setModuleNumber(moduleListRdd.size()); -// role.setMenuNumber(featuresListRdd.size()); -// -// init(role); -// roleList.add(role); -// } -// -// for (SysRole role : roleList) { -// String txt = new String(" INSERT INTO sys_role (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, menu_number_rdd, module_number, name," + -// " role_description, role_status) VALUES " + -// "( "+role.getId()+", '"+role.getCreateDatetime()+"', '"+role.getCreateUser()+"', "+role.getIsDeleted()+"," + -// " "+role.getIsValid()+", '"+role.getModifyDatetime()+"', '"+role.getModifyUser()+"', "+role.getMenuNumber()+"," + -// " "+role.getModuleNumber()+", '"+role.getName()+"', null, 1);"); -// fileWriter("E:\\test\\SysRole.sql",txt); -// } -// -// for (SysRefRoleMenu ref : refRoleMenuList) { -// String txt = new String("INSERT INTO sys_ref_role_menu (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, menu_id, menu_name_rdd, menu_type_rdd, role_id, role_name_rdd) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+", "+ref.getIsValid()+"," + -// " '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getMenuId()+", '"+ref.getMenuNameRdd()+"'," + -// " '"+ref.getMenuTypeRdd()+"', "+ref.getRoleId()+", '"+ref.getRoleNameRdd()+"');"); -// fileWriter("E:\\test\\SysRefRoleMenu.sql",txt); -// } -// -// -// -// } -// -// @Test -// public void testUserInfo() throws Exception { -// List roleList = roleService.findSysRoleAll(); -// List positionList = positionService.findSysPositionAll(); -// List departmentList = departmentService.listSysDepartment(); -// -// for (int y = 0; y < 10; y++) { -// String PATH = new String("E:\\test\\user\\" + y); -// List userList = new ArrayList<>(); -// List userInfoList = new ArrayList<>(); -// List refUserRoleList = new ArrayList<>(); -// List refUserDepartmentList = new ArrayList<>(); -// List refUserInfoDepartmentList = new ArrayList<>(); -// List refUserPositionList = new ArrayList<>(); -// -// List refUserRoleNameList ; -// List refUserPositionNameList ; -// List refUserDepartmentNameList ; -// -// SysUser user; -// SysUserInfo userInfo; -// SysRefUserRole refUserRole; -// SysRefUserDepartment refUserDepartment; -// SysRefUserInfoDepartment refUserInfoDepartment; -// SysRefUserPosition refUserPosition; -// SysDepartment department = null; -// SysPosition position = null; -// -// for (int i = 0; i < 10000; i++) { -// user = new SysUser(); -// userInfo = new SysUserInfo(); -// refUserRoleNameList = new ArrayList<>(); -// refUserPositionNameList = new ArrayList<>(); -// refUserDepartmentNameList = new ArrayList<>(); -// -// init(user); -// init(userInfo); -// -// for (int j = 0; j < 2; j++) { -// SysRole role = roleList.get(new Random().nextInt(roleList.size() - 1)); -// if(role != null){ -// refUserRole = new SysRefUserRole(); -// init(refUserRole); -// -// refUserRole.setRoleId(role.getId()); -// refUserRole.setRoleNameRdd(role.getName()); -// refUserRole.setUserId(user.getId()); -// refUserRole.setUserNameRdd(user.getUserName()); -// -// refUserRoleNameList.add(role.getName()); -// refUserRoleList.add(refUserRole); -// } -// } -// -// for (int j = 0; j < 3; j++) { -// position = positionList.get(new Random().nextInt(positionList.size() - 1)); -// if(position != null){ -// refUserPosition = new SysRefUserPosition(); -// init(refUserPosition); -// -// refUserPosition.setUserId(userInfo.getId()); -// refUserPosition.setUserNameRdd(userInfo.getName()); -// refUserPosition.setPositionId(position.getId()); -// refUserPosition.setPositionNameRdd(position.getName()); -// -// refUserPositionNameList.add(position.getName()); -// -// refUserPositionList.add(refUserPosition); -// } -// } -// -// for (int j = 0; j < 3; j++) { -// department = departmentList.get(new Random().nextInt(departmentList.size() - 1)); -// -// if(department != null){ -// refUserDepartment= new SysRefUserDepartment(); -// refUserInfoDepartment = new SysRefUserInfoDepartment(); -// -// init(refUserDepartment); -// init(refUserInfoDepartment); -// -// refUserDepartment.setDepartmentId(department.getId()); -// refUserDepartment.setDepartmentNameRdd(department.getName()); -// refUserDepartment.setOrganizeNameRdd(department.getOrganizeNameRdd()); -// refUserDepartment.setOrganizeId(department.getOrganizeId()); -// refUserDepartment.setOrganizeCode(department.getOrganizeCode()); -// refUserDepartment.setUserId(user.getId()); -// refUserDepartment.setUserNameRdd(user.getUserName()); -// -// refUserInfoDepartment.setDepartmentId(department.getId()); -// refUserInfoDepartment.setDepartmentNameRdd(department.getName()); -// refUserInfoDepartment.setOrganizeNameRdd(department.getOrganizeNameRdd()); -// refUserInfoDepartment.setOrganizeId(department.getOrganizeId()); -// refUserInfoDepartment.setOrganizeCode(department.getOrganizeCode()); -// refUserInfoDepartment.setUserId(user.getId()); -// refUserInfoDepartment.setUserNameRdd(user.getUserName()); -// -// refUserDepartmentNameList.add(department.getName()); -// -// refUserDepartmentList.add(refUserDepartment); -// refUserInfoDepartmentList.add(refUserInfoDepartment); -// } -// } -// -// userInfo.setDepartmentNamesRdd(StringUtils.join(refUserDepartmentNameList)); -// userInfo.setDepartmentId(department.getId()); -// userInfo.setDepartmentNameRdd(department.getName()); -// userInfo.setOrganizeId(department.getOrganizeId()); -// userInfo.setOrganizeNameRdd(department.getOrganizeNameRdd()); -// userInfo.setOrganizeCode(department.getOrganizeCode()); -// userInfo.setPositionId(position.getId()); -// userInfo.setPositionNameRdd(position.getName()); -// userInfo.setPositionNamesRdd(StringUtils.join(refUserPositionNameList,",")); -// userInfo.setName(RandomStringUtils.random(5, TEXT)); -// userInfo.setUserEmpNo(RandomStringUtils.random(10, true, true)); -// userInfo.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); -// userInfo.setUserLoginNum(0); -// userInfo.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// userInfo.setUserId(user.getId()); -// -// user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); -// user.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); -// user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// user.setUserLoginNum(0); -// user.setDepartmentNamesRdd(StringUtils.join(refUserDepartmentNameList,",")); -// user.setDepartmentId(department.getId()); -// user.setDepartmentNameRdd(department.getName()); -// user.setUserPhone(RandomStringUtils.random(11, false, true)); -// user.setUserEmail(RandomStringUtils.random(15, true, true)); -// user.setUserLoginName(RandomStringUtils.random(20, true, true)); -// user.setUserLoginPassword("123456"); -// user.setUserEmpNo(userInfo.getUserEmpNo()); -// -// userList.add(user); -// userInfoList.add(userInfo); -// } -// -// for (SysRefUserPosition ref : refUserPositionList) { -// String txt = new String("INSERT INTO sys_ref_user_position (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, position_id, position_name_rdd, user_id, user_name_rdd) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyUser()+"', '"+ref.getModifyDatetime()+"', "+ref.getPositionId()+"," + -// " '"+ref.getPositionNameRdd()+"', "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserPosition.sql",txt); -// } -// -// for (SysRefUserRole ref : refUserRoleList) { -// String txt = new String("INSERT INTO sys_ref_user_role (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, role_id, role_name_rdd, user_id, user_name_rdd) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getRoleId()+"," + -// " '"+ref.getRoleNameRdd()+"', "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserRole.sql",txt); -// } -// -// for (SysRefUserDepartment ref : refUserDepartmentList) { -// String txt = new String("INSERT INTO sys_ref_user_department (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, department_id, department_name_rdd, organize_id, organize_name_rdd, user_id, user_name) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getDepartmentId()+"," + -// " '"+ref.getDepartmentNameRdd()+"', "+ref.getOrganizeId()+", '"+ref.getOrganizeNameRdd()+"'," + -// " "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserDepartment.sql",txt); -// } -// -// for (SysRefUserInfoDepartment ref : refUserInfoDepartmentList) { -// String txt = new String("INSERT INTO sys_ref_user_info_department (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, department_id, department_name_rdd, organize_id, organize_name_rdd, user_id, user_name) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getDepartmentId()+"," + -// " '"+ref.getDepartmentNameRdd()+"', "+ref.getOrganizeId()+", '"+ref.getOrganizeNameRdd()+"'," + -// " "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserInfoDepartment.sql",txt); -// } -// -// for (SysUser su : userList) { -// String txt = new String("INSERT INTO sys_user (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, organize_code, department_id, department_name_rdd, department_names_rdd, language_code," + -// " organize_id, organize_name_rdd, organize_names_rdd, role_names_rdd, user_email, user_emp_no, user_info_id," + -// " user_login_last_date_time, user_login_name, user_login_num, user_login_password, user_name_rdd," + -// " user_phone, user_status, user_type) VALUES (" + -// " "+su.getId()+", '"+su.getCreateDatetime()+"', '"+su.getCreateUser()+"', "+su.getIsDeleted()+", "+su.getIsValid()+"," + -// " '"+su.getModifyDatetime()+"', '"+su.getModifyUser()+"', '"+su.getOrganizeCode()+"', " + -// " "+su.getDepartmentId()+", '"+su.getDepartmentNameRdd()+"', '"+su.getDepartmentNamesRdd()+"', ''," + -// " "+su.getOrganizeId()+", '"+su.getOrganizeNameRdd()+"', null, '"+su.getRoleNamesRdd()+"', '"+su.getUserEmail()+"'," + -// " '"+su.getUserEmpNo()+"', "+su.getUserInfoId()+", null, '"+su.getUserLoginName()+"', 0, '2637a5c30af69a7bad877fdb65fbd78b'," + -// " '"+su.getUserName()+"', '"+su.getUserPhone()+"', 1, 1);"); -// fileWriter(PATH+"\\SysUser.sql",txt); -// } -// -// for (SysUserInfo ui : userInfoList) { -// String txt = new String("INSERT INTO sys_user_info (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, organize_code, department_id, department_name_rdd, department_names_rdd, name," + -// " organize_id, organize_name_rdd, position_id, position_name_rdd, position_names_rdd, user_emp_no, user_id," + -// " user_info_status, user_join_date, user_login_last_date_time, user_login_num) VALUES (" + -// " "+ui.getId()+", '"+ui.getCreateDatetime()+"', '"+ui.getCreateUser()+"', "+ui.getIsDeleted()+", "+ui.getIsValid()+"," + -// " '"+ui.getModifyDatetime()+"', '"+ui.getModifyUser()+"', '"+ui.getOrganizeCode()+"'," + -// " "+ui.getDepartmentId()+", '"+ui.getDepartmentNameRdd()+"', '"+ui.getDepartmentNamesRdd()+"'," + -// " '"+ui.getName()+"', "+ui.getOrganizeId()+", '"+ui.getOrganizeNameRdd()+"'," + -// " "+ui.getPositionId()+", '"+ui.getPositionNameRdd()+"', '"+ui.getPositionNamesRdd()+"'," + -// " '"+ui.getUserEmpNo()+"', "+ui.getUserId()+", 1, '2019-02-26', null , 0);"); -// fileWriter(PATH+"\\SysUserInfo.sql",txt); -// } -// -// System.gc(); -// } -// } -// -// public void testUserDetailModel(){ -// List roleList = roleService.findSysRoleAll(); -// List positionList = positionService.findSysPositionAll(); -// List departmentList = departmentService.listSysDepartment(); -// -// UserDetailModel model = new UserDetailModel(); -// List roleIds = new ArrayList<>(); -// List positionIds = new ArrayList<>(); -// List departmentIds = new ArrayList<>(); -// -// for (int i = 0; i < new Random().nextInt(10) ; i++) { -// SysRole role = roleList.get(new Random().nextInt(roleList.size() - 1)); -// roleIds.add(role.getId().toString()); -// } -// -// for (int i = 0; i < new Random().nextInt(10) ; i++) { -// SysPosition position = positionList.get(new Random().nextInt(positionList.size() - 1)); -// positionIds.add(position.getId().toString()); -// } -// -// for (int i = 0; i < new Random().nextInt(10) ; i++) { -// SysDepartment department = departmentList.get(new Random().nextInt(departmentList.size() - 1)); -// departmentIds.add(department.getId().toString()); -// } -// -// -// -// model.setUserInfoId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + ""); -// model.setUserId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + ""); -// model.setUserPhone(RandomStringUtils.random(11, false, true)); -// model.setUserEmail(RandomStringUtils.random(15, true, true)); -// model.setUserLoginPassword(RandomStringUtils.random(20, true, true)); -// model.setUserRoleIdList(roleIds); -// model.setUserDepartmentIdList(departmentIds); -// model.setInfoEmpNo(RandomStringUtils.random(10, true, true)); -// model.setInfoPositionIdList(positionIds); -// model.setInfoDepartmentIdList(departmentIds); -// -// } -// -// -// public void init(BaseBean bean)throws Exception{ -// bean.setId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + UUID.randomUUID().hashCode() + new Random().nextInt(10000000)); -// bean.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// bean.setIsDeleted(CommonEnumUtil.IS_DEAL.NO.getValue()); -// bean.setCreateUser("系统管理员-测试"); -// bean.setModifyUser("系统管理员-测试"); -// bean.setCreateDatetime(DateFormatUtils.format(System.currentTimeMillis(),"yyyy-MM-dd HH:mm:ss")); -// bean.setModifyDatetime(DateFormatUtils.format(System.currentTimeMillis(),"yyyy-MM-dd HH:mm:ss")); -// } -// -// public static void fileWriter(String fileName, String content) { -// try { -// // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件    -// FileWriter writer = new FileWriter(fileName, true); -// writer.write(content+"\r\n"); -// writer.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } -// -//} +package test.cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description : + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-02-25 14:39 + * @Modify: + **/ +public class TestUser extends TestBase { + + @Autowired + private ISysToolService toolService; + + @Test + public void testTrans() { + for (int i = 0; i < 20; i++) { + new Thread("Save Thread -> " + i) { + @Override + public void run() { + for (int j = 0; j < 10; j++) { + SysTool tool = new SysTool(); + tool.setName(Thread.currentThread().getName() + "_" + System.currentTimeMillis()); + tool.setToolIp("192.168.3.40"); + tool.setToolPort(9090); + tool.setToolDescription(Thread.currentThread().getName()); + + System.out.println(toolService.saveSysTool(tool)); + } + } + }.start(); + } + + for (int i = 0; i < 20; i++) { + new Thread("Read Thread -> " + i) { + @Override + public void run() { + for (int j = 0; j < 10; j++) { + System.out.println(toolService.findSysToolByTop(j * 3)); + } + } + }.start(); + } + + } + + +}