diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java new file mode 100644 index 0000000..9b5a4fa --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java @@ -0,0 +1,41 @@ +package cn.estsh.i3plus.core.api.iservice.base; + +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import io.swagger.annotations.ApiOperation; + +/** + * @Description : 系统启动加载服务 + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-01-11 10:02 + * @Modify: + **/ +public interface ISystemInitService { + + /** + * 系统初始化加载 + */ + @ApiOperation(value = "初始化加载所有数据",notes = "初始化加载所有数据") + void loadAll(); + + /** + * 加载系统配置 + */ + @ApiOperation(value = "加载系统配置",notes = "加载系统配置") + void loadSysConfig(); + + /** + * 加载系统字典 + */ + @ApiOperation(value = "加载字典数据",notes = "加载字典数据") + void loadSysDictionary(); + + /** + * 加载系统语言信息 + */ + @ApiOperation(value = "加载语言数据",notes = "加载语言数据") + void loadSysLocaleLanguage(); + + @ApiOperation(value = "获取缓存中的数据",notes = "获取缓存中的数据") + Object getDataFromCache(String key,Class dataType); +} 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 41ce6cc..2821e8a 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 @@ -41,6 +41,9 @@ public interface IPersonnelService { @ApiOperation(value = "查询账号信息") List querySysUserByUserDetailModelOrIds(UserDetailModel model, List ids); + @ApiOperation(value = "查询账号信息") + ListPager querySysUserPagerByUserDetailModelOrIds(UserDetailModel model,Pager pager, List ids); + @ApiOperation(value = "获取用户信息") SysUserInfo getSysUserInfoById(Long id); @@ -101,7 +104,16 @@ public interface IPersonnelService { @ApiOperation(value = "岗位关系检查") void checkSysPositionRef(Long positionId); - @ApiOperation(value = "岗位关系检查") + @ApiOperation(value = "部门关系检查") + void checkSysDepartmentRef(Long departmentId); + + @ApiOperation(value = "组织关系检查") + void checkSysOrganizeRef(Long organizeId); + + @ApiOperation(value = "密码规则校验") + void checkSysUserPassword(String password); + + @ApiOperation(value = "菜单关系检查") void refreshMenuRdd(Long menuId); @ApiOperation(value = "岗位关系检查") diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysConfigService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysConfigService.java index 2cd9827..581b816 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysConfigService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysConfigService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SysConfig; import io.swagger.annotations.ApiOperation; +import java.util.Date; import java.util.List; /** @@ -81,4 +82,5 @@ public interface ISysConfigService { */ @ApiOperation(value = "根据系统配置代码修改配置项") void updateSysConfigByCode(String code,String value); + } 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 new file mode 100644 index 0000000..30eb423 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java @@ -0,0 +1,32 @@ +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.i3plus.pojo.base.enumutil.ImppEnumUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +/** + * @Description : + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-01-11 9:55 + * @Modify: + **/ +@Component +public class AppStartSystemInit implements CommandLineRunner { + + public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); + + @Autowired + private ISystemInitService systemInitService; + + @Override + public void run(String... args) throws Exception { + LOGGER.info(" Start Core Init Thread "); + systemInitService.loadAll(); + } +} 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 891c616..f99dfbc 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 @@ -7,9 +7,12 @@ import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +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.model.platform.UserDetailModel; +import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; @@ -57,9 +60,23 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = model.getSysUserInfo(); checkUserDetailModel(model, false); + personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); - initUserDetail(info,user); + if(StringUtils.isBlank(info.getUserJoinDate())){ + info.setUserJoinDate(TimeTool.getToday()); + } + + info.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); + info.setUserLoginNum(0); + info.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + ConvertBean.modelInitialize(info, AuthUtil.getSessionUser()); + + user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); + user.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); + user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + user.setUserLoginNum(0); + ConvertBean.modelInitialize(user, AuthUtil.getSessionUser()); SysDepartment infoDepartment = personnelService.getSysDepartmentById(Long.parseLong(model.getInfoDepartmentId())); if(infoDepartment == null){ @@ -117,10 +134,9 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = model.getSysUserInfo(); checkUserDetailModel(model, true); + personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); - initUserDetail(info,user); - SysDepartment infoDepartment = personnelService.getSysDepartmentById(Long.parseLong(model.getInfoDepartmentId())); if(infoDepartment == null){ ValidatorBean.checkNotNull(infoDepartment,"用户主部门不存在"); @@ -166,7 +182,6 @@ public class PersonnelController extends CoreBaseController { } } - @PutMapping(value="/user/update") @ApiOperation(value="添加用户信息",notes="返回内容添加用户信息") public ResultBean updateUserModel(UserDetailModel model) { @@ -174,6 +189,7 @@ public class PersonnelController extends CoreBaseController { checkUserModel(model); SysUser user = personnelService.getSysUserById(Long.parseLong(model.getUserId())); initUser(model,user); + personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); SysDepartment userDepartment = personnelService.getSysDepartmentById(Long.parseLong(model.getUserDepartmentId())); @@ -380,14 +396,12 @@ public class PersonnelController extends CoreBaseController { } } - @PostMapping(value = "/query-ref-department") @ApiOperation(value = "查询角色的所有角色权限关系", notes = "查询角色的所有角色权限关系") - public ResultBean queryRefDepartment(UserDetailModel model) { + public ResultBean queryRefDepartment(@RequestBody UserDetailModel model) { try { - model.setUserDepartmentIdList(new ArrayList(Arrays.asList(new String[]{"1072037153732694016"}))); - List idList = new ArrayList<>(); + model.setUserDepartmentIdList(new ArrayList(Arrays.asList(new String[]{"1072037153732694016"}))); List refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model); if(refs != null && refs.size() > 0){ @@ -405,6 +419,27 @@ public class PersonnelController extends CoreBaseController { } } + @PostMapping(value = "/pager/query-ref-department") + @ApiOperation(value = "查询角色的所有角色权限关系", notes = "查询角色的所有角色权限关系") + public ResultBean queryPagerRefDepartment(@RequestBody UserDetailPagerModel model) { + try { + List idList = new ArrayList<>(); + List refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model.getUserDetailModel()); + if(refs != null && refs.size() > 0){ + for (SysRefUserDepartment ref : refs) { + idList.add(ref.getUserId()); + } + } + + ListPager result = personnelService.querySysUserPagerByUserDetailModelOrIds(model.getUserDetailModel(), model.getPager(), idList); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(result); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + /** * 数据必填校验 * @param model @@ -450,33 +485,6 @@ public class PersonnelController extends CoreBaseController { /** * 用户信息初始化 - * @param info - * @param user - * @throws Exception - */ - private void initUserDetail(SysUserInfo info ,SysUser user)throws Exception{ - if(StringUtils.isBlank(info.getUserJoinDate())){ - info.setUserJoinDate(TimeTool.getToday()); - } - - if(info != null){ - info.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); - info.setUserLoginNum(0); - info.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); - ConvertBean.modelInitialize(info, AuthUtil.getSessionUser()); - } - - if(user != null){ - user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); - user.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); - user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); - user.setUserLoginNum(0); - ConvertBean.modelInitialize(user, AuthUtil.getSessionUser()); - } - } - - /** - * 用户信息初始化 * @param model * @param user * @throws Exception diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysConfigController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysConfigController.java index 99017b1..030cac2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysConfigController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysConfigController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; +import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.busi.ISysConfigService; import cn.estsh.i3plus.core.apiservice.util.MailUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -45,6 +46,9 @@ public class SysConfigController extends CoreBaseController { @Autowired private MailUtil mailUtil; + @Autowired + private ISystemInitService systemInitService; + @PostMapping("/insert") @ApiOperation(value = "添加系统参数",notes = "添加系统参数") public ResultBean insertSysConfig(SysConfig sysConfig) { @@ -63,6 +67,7 @@ public class SysConfigController extends CoreBaseController { ConvertBean.modelInitialize(sysConfig,user); sysConfigService.insertSysConfig(sysConfig); + systemInitService.loadSysConfig(); return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); @@ -87,6 +92,7 @@ public class SysConfigController extends CoreBaseController { } sysConfigService.deleteSysConfigById(Long.parseLong(idStr)); + systemInitService.loadSysConfig(); return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); @@ -113,6 +119,7 @@ public class SysConfigController extends CoreBaseController { ConvertBean.modelUpdate(sysConfig,user); sysConfigService.updateSysConfig(sysConfig); + systemInitService.loadSysConfig(); return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); @@ -213,6 +220,7 @@ public class SysConfigController extends CoreBaseController { ValidatorBean.checkNotNull(value,"值不能为空"); sysConfigService.updateSysConfigByCode(code,value); + systemInitService.loadSysConfig(); return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java index 6941388..9fe63fd 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java @@ -109,22 +109,6 @@ public class SysDepartmentController extends CoreBaseController { } } - @DeleteMapping(value = "/delete/{id}") - @ApiOperation(value = "删除部门", notes = "根据部门id删除信息") - public ResultBean deleteSysDepartment(@PathVariable("id") String id) { - try { - //条件验证 - ValidatorBean.checkNotNull(id, "id为空。"); - - departmentService.deleteSysDepartmentById(Long.parseLong(id)); - return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch (ImppBusiException busExcep) { - return ResultBean.fail(busExcep); - } catch (Exception e) { - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - @GetMapping(value = "/list") @ApiOperation(value = "查询所有部门", notes = "查询所有部门") public ResultBean findSysDepartmentAll() { @@ -183,6 +167,22 @@ public class SysDepartmentController extends CoreBaseController { } } + @DeleteMapping(value = "/delete/{id}") + @ApiOperation(value = "删除部门", notes = "根据部门id删除信息") + public ResultBean deleteSysDepartment(@PathVariable("id") String id) { + try { + //条件验证 + ValidatorBean.checkNotNull(id, "id为空。"); + + departmentService.deleteSysDepartmentById(Long.parseLong(id)); + return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @DeleteMapping(value = "/batch-delete") @ApiOperation(value = "根据id批量删除", notes = "根据id批量删除") public ResultBean deleteSysDepartmentByIds(String[] ids){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java index dc0ec77..0a8ed72 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java @@ -99,22 +99,6 @@ public class SysPositionController extends CoreBaseController { } } - @DeleteMapping(value="/delete/{id}") - @ApiOperation(value="删除岗位",notes="根据岗位id删除信息") - public ResultBean deleteSysPosition(@PathVariable("id") String id){ - try { - //条件验证 - ValidatorBean.checkNotNull(id,"id为空"); - - positionService.deleteSysPositionById(Long.parseLong(id)); - return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch (ImppBusiException busExcep) { - return ResultBean.fail(busExcep); - } catch (Exception e) { - return ResultBean.fail(e).setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()); - } - } - @GetMapping(value="/list") @ApiOperation(value="查询所有岗位",notes="查询所有岗位") public ResultBean findSysPositionAll(){ @@ -161,6 +145,22 @@ public class SysPositionController extends CoreBaseController { } } + @DeleteMapping(value="/delete/{id}") + @ApiOperation(value="删除岗位",notes="根据岗位id删除信息") + public ResultBean deleteSysPosition(@PathVariable("id") String id){ + try { + //条件验证 + ValidatorBean.checkNotNull(id,"id为空"); + + positionService.deleteSysPositionById(Long.parseLong(id)); + return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ResultBean.fail(e).setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()); + } + } + @DeleteMapping(value = "/batch-delete") @ApiOperation(value = "根据id批量删除", notes = "根据id批量删除") public ResultBean deleteSysPositionByIds(String[] ids){ @@ -182,5 +182,4 @@ public class SysPositionController extends CoreBaseController { 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/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 4cddce5..06f5199 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -412,6 +412,8 @@ public class SysUserController extends CoreBaseController{ 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){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java new file mode 100644 index 0000000..7e25cc9 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java @@ -0,0 +1,117 @@ +package cn.estsh.i3plus.core.apiservice.controller.report; + +import cn.estsh.i3plus.platform.common.tool.ClassTool; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.common.ClassFieldModel; +import cn.estsh.i3plus.pojo.model.common.ClassModel; +import cn.estsh.impp.framework.boot.util.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.persistence.Transient; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/impp/cloud/report") +@Api(description="报表服务") +public class CoreReportController { + + private static final Logger LOGGER = LoggerFactory.getLogger(CoreReportController.class); + + @Value("${impp.app.pojo-packages}.bean") + public String pojoPackagePath; + + @GetMapping(value="/list-clz") + @ApiOperation(value="查询管理后台所有类",notes = "根据核心包路径列出所有类") + public BaseResultBean listClz() { + LOGGER.info("【类路径:{}】",pojoPackagePath); + List clzNameList = ClassTool.getClassName(pojoPackagePath, true); + List clzList = new ArrayList<>(clzNameList.size()); + Class tmpClz = null; + Api api = null; + ClassModel classModel = null; + for(String clzName : clzNameList){ + try { + //注册类 + tmpClz = Class.forName(clzName); + + classModel = new ClassModel(); + classModel.setPackageName(pojoPackagePath); + classModel.setClzFullName(clzName); + classModel.setClzSimpleName(tmpClz.getSimpleName()); + + api = (Api) tmpClz.getAnnotation(Api.class); + if(api != null) { + classModel.setClzDesc(api.value()); + + clzList.add(classModel); + }else{ + //classModel.setClzDesc(clzName); + LOGGER.warn("不添加类:{},因为没有添加api描述", tmpClz); + } + } catch (ClassNotFoundException e) { + LOGGER.error("【类:{}注册出错】",clzName,clzName,e); + } + } + + return ResultBean.success("获取类:" + clzList.size()) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(clzList); + } + + @GetMapping(value="/pojo-property") + @ApiOperation(value="查询类所有属性") + public ResultBean testWms(@RequestParam("clzFullName") String clzFullName) { + LOGGER.info("【查询类属性:{}】",clzFullName); + + ApiParam apiParam = null; + Transient tran = null; + List fieldModelList = new ArrayList<>(); + try { + Class tmpClz = Class.forName(clzFullName); + List fields = ClassTool.getAllFieldsList(tmpClz); + ClassFieldModel fieldModel = null; + for(Field f : fields){ + tran = f.getAnnotation(Transient.class); + if(tran == null) { + // 临时对象不需要处理 + fieldModel = new ClassFieldModel(); + fieldModel.setPackageName(pojoPackagePath); + fieldModel.setClzFullName(clzFullName); + fieldModel.setClzSimpleName(tmpClz.getSimpleName()); + fieldModel.setFieldName(f.getName()); + + apiParam = f.getAnnotation(ApiParam.class); + if(apiParam != null){ + fieldModel.setFieldDesc(apiParam.value()); + + fieldModelList.add(fieldModel); + }else{ + //fieldModel.setFieldDesc(fieldModel.getFieldName()); + LOGGER.warn("不添加属性:{},因为没有添加api描述", f.getName()); + } + }else{ + LOGGER.info("【临时属性:{}】",f.getName()); + } + } + } catch (ClassNotFoundException e) { + LOGGER.error("【类:{}实例化出错】",clzFullName,e); + } + + return ResultBean.success("获取属性:" + fieldModelList.size()) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(fieldModelList); + } + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/DataSimpleServiceImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/DataSimpleService.java similarity index 95% rename from modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/DataSimpleServiceImpl.java rename to modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/DataSimpleService.java index 4eda967..69663d6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/DataSimpleServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/DataSimpleService.java @@ -13,7 +13,7 @@ import org.springframework.stereotype.Service; * @Modify: **/ @Service -public class DataSimpleServiceImpl implements IDataSimpleService { +public class DataSimpleService implements IDataSimpleService { private Logger LOGGER = LoggerFactory.getLogger(this.getClass()); /*@Autowired 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 new file mode 100644 index 0000000..bccc166 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java @@ -0,0 +1,144 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysConfig; +import cn.estsh.i3plus.pojo.platform.bean.SysDictionary; +import cn.estsh.i3plus.pojo.platform.repository.SysConfigRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysDictionaryRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysLocaleLanguageRepository; +import cn.estsh.impp.framework.boot.util.ImppRedis; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Description : + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-01-11 12:34 + * @Modify: + **/ +@Service +public class SystemInitService implements ISystemInitService { + + private static final Logger LOGGER = LoggerFactory.getLogger(SystemLoginService.class); + + @Autowired + private SysConfigRepository configRDao; + + @Autowired + private SysDictionaryRepository dictionaryRDao; + + @Autowired + private SysLocaleLanguageRepository localeLanguageRDao; + + @Resource(name="redisRes") + private ImppRedis redisRes; + + private int type = ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue(); + + @Override + @ApiOperation(value = "初始化加载所有数据",notes = "初始化加载所有数据") + public void loadAll() { + type = ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue(); + loadSysConfig(); + loadSysDictionary(); + loadSysLocaleLanguage(); + } + + @Override + @ApiOperation(value = "加载系统配置",notes = "加载系统配置") + public void loadSysConfig() { + String redisKey = null; + List list = configRDao.findAll(); + for (SysConfig config : list) { + redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + config.getConfigCode(); + + //存放于缓存 + putDataToCache(redisKey, config,SysConfig.class); + } + LOGGER.info("加载系统配置数量:【{}】",list.size()); + } + + @Override + @ApiOperation(value = "加载字典数据",notes = "加载字典数据") + public void loadSysDictionary() { + List list = dictionaryRDao.findAll(); + if(list != null && list.size() > 0){ + Map> parentCodeMap = list.stream().collect(Collectors.groupingBy(SysDictionary::getParentCodeRdd)); + Map> parentIdMap = list.stream().collect(Collectors.groupingBy(SysDictionary::getParentId)); + + for (String key : parentCodeMap.keySet()) { + //存放于缓存 + putDataToCache(CommonConstWords.REDIS_PREFIX_CACHE_DICTIONARY + "_" + key, + parentCodeMap.get(key),List.class); + } + + for (long key : parentIdMap.keySet()) { + putDataToCache(CommonConstWords.REDIS_PREFIX_CACHE_DICTIONARY + "_" + key, + parentIdMap.get(key),List.class); + } + } + } + + @Override + @ApiOperation(value = "加载语言数据",notes = "加载语言数据") + public void loadSysLocaleLanguage() { + // Redis 缓存 + if(type == ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue()){ + // TODO 汪云昊 实现 + } + } + + + /** + * 缓存存放数据统一管理 + * @param key + * @param data + * @param dataType + */ + private void putDataToCache(String key,Object data,Class dataType){ + if(type == ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue()){ + LOGGER.info(" Put Cache Redis Key:{},value:{},dataType:{}",key,data,dataType); + // Redis 缓存 + if(dataType == List.class){ + redisRes.putList(key,data,-1); + }else if(dataType == SysConfig.class){ + redisRes.putObject(key,data,-1); + }else{ + LOGGER.error("不支持树形{}存放缓存!",dataType); + } + } + } + + /** + * 从缓存获取对象数据 + * @param key + * @param dataType + * @return + */ + @Override + @ApiOperation(value = "获取缓存中的数据",notes = "获取缓存中的数据") + public Object getDataFromCache(String key,Class dataType){ + if(type == ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue()){ + // Redis 缓存 + if(dataType == List.class){ + return redisRes.getList(key,0,-1); + }else if(dataType == SysConfig.class){ + return redisRes.getObject(key); + }else{ + LOGGER.error("不支持树形{}存放缓存!",dataType); + } + } + return null; + } +} 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 96df3fb..7237f47 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 @@ -1,12 +1,16 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; +import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; import cn.estsh.i3plus.core.apiservice.util.HqlModelPack; +import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; @@ -84,6 +88,12 @@ public class PersonnelServiceService implements IPersonnelService { @Resource(name="redisCore") protected ImppRedis redisCore; + @Resource(name="redisRes") + private ImppRedis redisRes; + + @Autowired + private ISystemInitService systemInitService; + @Override public SysUser saveSysUser(SysUser user) { LOGGER.debug("平台账号 SysUser user:{}", user); @@ -147,6 +157,16 @@ public class PersonnelServiceService implements IPersonnelService { } @Override + @ApiOperation(value = "查询账号信息") + public ListPager querySysUserPagerByUserDetailModelOrIds(UserDetailModel model,Pager pager, List ids) { + LOGGER.debug("平台用户 SysUser model:{} ids:{}", model, ids); + String modeWhere = HqlModelPack.packHqlSysUserByModelOrIds(model, ids); + + pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(modeWhere)); + return new ListPager(userRDao.findByHqlWherePage(modeWhere + model.orderBy(), pager), pager); + } + + @Override public SysUserInfo getSysUserInfoById(Long id) { return userInfoRDao.getById(id); } @@ -388,19 +408,52 @@ public class PersonnelServiceService implements IPersonnelService { .setErrorSolution("请先删除子集信息在操作") .build(); } - - long refPositionCount = refUserPositionRDao.findByPropertyCount("positionId",positionId); - if (refPositionCount >= 1) { +// long refPositionCount = refUserPositionRDao.findByPropertyCount("positionId",positionId); +// if (refPositionCount >= 1) { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("存在用户关系引用信息无法删除!") +// .setErrorSolution("请先删除用户关系信息再操作") +// .build(); +// } + long refUserInfoCount = userInfoRDao.findByPropertyCount("positionId",positionId); + if (refUserInfoCount >= 1) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("存在用户关系引用信息无法删除!") - .setErrorSolution("请先删除用户关系信息再操作") + .setErrorDetail("存在用户信息无法删除!") + .setErrorSolution("请先删除用户引用信息再操作") .build(); } + } + } - long refUserInfoCount = userInfoRDao.findByPropertyCount("positionId",positionId); - if (refUserInfoCount >= 1) { + @Override + public void checkSysDepartmentRef(Long departmentId) { + LOGGER.debug("平台部门 SysDepartment departmentId:{}", departmentId); + + if(departmentId != null){ + long departmentCount = departmentRDao.findByPropertyCount("parentId",departmentId); + if (departmentCount >= 1) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("存在相关部门信息无法删除!") + .setErrorSolution("请先删除子集信息在操作") + .build(); + } +// long refPositionCount = refUserPositionRDao.findByPropertyCount("positionId",positionId); +// if (refPositionCount >= 1) { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("存在用户关系引用信息无法删除!") +// .setErrorSolution("请先删除用户关系信息再操作") +// .build(); +// } + long userInfoCount = userInfoRDao.findByPropertyCount("departmentId",departmentId); + if (userInfoCount >= 1) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) @@ -408,101 +461,146 @@ public class PersonnelServiceService implements IPersonnelService { .setErrorSolution("请先删除用户引用信息再操作") .build(); } + + long userCount = userRDao.findByPropertyCount("departmentId",departmentId); + if (userCount >= 1) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("存在账号信息无法删除!") + .setErrorSolution("请先删除账号引用信息再操作") + .build(); + } } } - /************************************ 用户唯一检查 ****************************************/ + @Override + public void checkSysOrganizeRef(Long organizeId) { + LOGGER.debug("平台部门 SysOrganize organizeId:{}", organizeId); - /** - * 登录名 唯一检查 - * @param userLoginName - * @param userId - * @return - */ - private boolean checkSysUserLoginName(String userLoginName, long userId) { - int count = 0; - if(userId > 0){ - StringBuffer sw = new StringBuffer(); - HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); - HqlPack.getStringEqualPack(userLoginName,"userLoginName",sw); - HqlPack.getNumNOEqualPack(userId,"id",sw); - count = userRDao.findByHqlWhereCount(sw.toString()); + if(organizeId != null){ + long organizeCount = organizeRDao.findByPropertyCount("parentId",organizeId); + if (organizeCount >= 1) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("存在相关组织信息无法删除!") + .setErrorSolution("请先删除子集信息在操作") + .build(); + } - }else{ - count = userRDao.findByPropertyCount( - new String[]{"userLoginName","isValid"}, - new Object[]{userLoginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); - } - return count <= 0 ; - } +// long refPositionCount = refUserPositionRDao.findByPropertyCount("positionId",positionId); +// if (refPositionCount >= 1) { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("存在用户关系引用信息无法删除!") +// .setErrorSolution("请先删除用户关系信息再操作") +// .build(); +// } + + long departmentCount = departmentRDao.findByPropertyCount("organizeId",organizeId); + if (departmentCount >= 1) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("存在部门信息无法删除!") + .setErrorSolution("请先删除部门引用信息再操作") + .build(); + } - /** - * 用户邮箱唯一检查 - * @param email - * @param infoId - * @return - */ - private boolean checkSysUserEmail(String email, long infoId) { - int count; - if(infoId > 0){ - StringBuffer sw = new StringBuffer(); - HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); - HqlPack.getStringEqualPack(email,"userEmail",sw); - HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); - count = userRDao.findByHqlWhereCount(sw.toString()); + long userInfoCount = userInfoRDao.findByPropertyCount("organizeId",organizeId); + if (userInfoCount >= 1) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("存在用户信息无法删除!") + .setErrorSolution("请先删除用户引用信息再操作") + .build(); + } - }else{ - count = userRDao.findByPropertyCount( - new String[]{"userEmail","isValid"}, - new Object[]{email,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + long userCount = userRDao.findByPropertyCount("organizeId",organizeId); + if (userCount >= 1) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("存在账号信息无法删除!") + .setErrorSolution("请先删除账号引用信息再操作") + .build(); + } } - return count <= 0 ; } - /** - * 手机号码 唯一校验 - * @param phone - * @param infoId - * @return - */ - private boolean checkSysUserPhone(String phone, long infoId) { - int count; - if(infoId > 0){ - StringBuffer sw = new StringBuffer(); - HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); - HqlPack.getStringEqualPack(phone,"userPhone",sw); - HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); - count = userRDao.findByHqlWhereCount(sw.toString()); + @Override + public void checkSysUserPassword(String password) { + LOGGER.debug("平台用户 SysUser password:{}", password); - }else{ - count = userRDao.findByPropertyCount( - new String[]{"userPhone","isValid"}, - new Object[]{phone,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); - } - return count <= 0 ; - } + if(StringUtils.isNotBlank(password)){ + // 密码长度校验 + String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_LENGTH; + SysConfig config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - /** - * 工号唯一检查 - * @param empNo - * @param infoId - * @return - */ - private boolean checkSysUserEmpNo(String empNo, long infoId) { - int count; - if(infoId > 0){ - StringBuffer sw = new StringBuffer(); - HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); - HqlPack.getStringEqualPack(empNo,"userEmpNo",sw); - HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); - count = userRDao.findByHqlWhereCount(sw.toString()); + if(!checkPasswordLength(config,password)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("密码长度不足") + .setErrorSolution("请重新输入") + .build(); + } - }else{ - count = userRDao.findByPropertyCount( - new String[]{"userEmpNo","isValid"}, - new Object[]{empNo,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + // 密码小写校验 + 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(); + } } - return count <= 0 ; } @Override @@ -958,4 +1056,211 @@ public class PersonnelServiceService implements IPersonnelService { } } } + +/*********************************** 检查方法封装 ***********************************/ + + /** + * 校验密码长度 + * @return + */ + private boolean checkPasswordLength(SysConfig config,String password){ + if(config != null){ + if(config.getConfigValue() == null || config.getConfigType().equals(ImppEnumUtil.SYS_VALUE_TYPE.NUMBER.getValue())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("系统配置格式错误(密码长度)") + .setErrorSolution("请先配置系统参数") + .build(); + }else { + int length = Integer.parseInt(config.getConfigValue()); + return password.trim().length() >= length; + } + } + return true; + } + + /** + * 校验密码小写 + * @param password + * @return + */ + private boolean checkPasswordLowerEnglish(SysConfig config,String password){ + if(config != null){ + if(config.getConfigValue() == null || config.getConfigType().equals(ImppEnumUtil.SYS_VALUE_TYPE.SWITCH.getValue())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("系统配置格式错误(密码英文小写配置)") + .setErrorSolution("请先配置系统参数") + .build(); + }else { + if(config.getConfigValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())){ + return StringTool.isContainLowerCase(password); + } + } + } + return true; + } + + /** + * 校验密码大写 + * @param password + * @return + */ + private boolean checkPasswordUpperEnglish(SysConfig config,String password){ + if(config != null){ + if(config.getConfigValue() == null || config.getConfigType().equals(ImppEnumUtil.SYS_VALUE_TYPE.SWITCH.getValue())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("系统配置格式错误(密码英文大写配置)") + .setErrorSolution("请先配置系统参数") + .build(); + }else { + if(config.getConfigValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())){ + return StringTool.isContainUpperCase(password); + } + } + } + return true; + } + + /** + * 校验密码大写 + * @param password + * @return + */ + private boolean checkPasswordNumber(SysConfig config,String password){ + if(config != null){ + if(config.getConfigValue() == null || config.getConfigType().equals(ImppEnumUtil.SYS_VALUE_TYPE.SWITCH.getValue())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("系统配置格式错误(密码数字配置)") + .setErrorSolution("请先配置系统参数") + .build(); + }else { + if(config.getConfigValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())){ + return StringTool.isContainNumber(password); + } + } + } + return true; + } + + /** + * 校验密码特殊字符 + * @param password + * @return + */ + private boolean checkPasswordSpecialChar(SysConfig config,String password){ + if(config != null){ + if(config.getConfigValue() == null || config.getConfigType().equals(ImppEnumUtil.SYS_VALUE_TYPE.SWITCH.getValue())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("系统配置格式错误(密码特殊字符配置)") + .setErrorSolution("请先配置系统参数") + .build(); + }else { + if(config.getConfigValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())){ + return StringTool.isConSpeCharacters(password); + } + } + } + return true; + } + + /** + * 登录名 唯一检查 + * @param userLoginName + * @param userId + * @return + */ + private boolean checkSysUserLoginName(String userLoginName, long userId) { + int count = 0; + if(userId > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); + HqlPack.getStringEqualPack(userLoginName,"userLoginName",sw); + HqlPack.getNumNOEqualPack(userId,"id",sw); + count = userRDao.findByHqlWhereCount(sw.toString()); + + }else{ + count = userRDao.findByPropertyCount( + new String[]{"userLoginName","isValid"}, + new Object[]{userLoginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + return count <= 0 ; + } + + /** + * 用户邮箱唯一检查 + * @param email + * @param infoId + * @return + */ + private boolean checkSysUserEmail(String email, long infoId) { + int count; + if(infoId > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); + HqlPack.getStringEqualPack(email,"userEmail",sw); + HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); + count = userRDao.findByHqlWhereCount(sw.toString()); + + }else{ + count = userRDao.findByPropertyCount( + new String[]{"userEmail","isValid"}, + new Object[]{email,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + return count <= 0 ; + } + + /** + * 手机号码 唯一校验 + * @param phone + * @param infoId + * @return + */ + private boolean checkSysUserPhone(String phone, long infoId) { + int count; + if(infoId > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); + HqlPack.getStringEqualPack(phone,"userPhone",sw); + HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); + count = userRDao.findByHqlWhereCount(sw.toString()); + + }else{ + count = userRDao.findByPropertyCount( + new String[]{"userPhone","isValid"}, + new Object[]{phone,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + return count <= 0 ; + } + + /** + * 工号唯一检查 + * @param empNo + * @param infoId + * @return + */ + private boolean checkSysUserEmpNo(String empNo, long infoId) { + int count; + if(infoId > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); + HqlPack.getStringEqualPack(empNo,"userEmpNo",sw); + HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); + count = userRDao.findByHqlWhereCount(sw.toString()); + + }else{ + count = userRDao.findByPropertyCount( + new String[]{"userEmpNo","isValid"}, + new Object[]{empNo,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + return count <= 0 ; + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDepartmentService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDepartmentService.java index 5a86ac2..061a1b6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDepartmentService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDepartmentService.java @@ -95,9 +95,9 @@ public class SysDepartmentService implements ISysDepartmentService { .setErrorSolution("请先删除子集信息在操作") .build(); } - - // 删除部门 - LOGGER.info("部门信息 DEPARTMENT :{}", id); + // 检查部门引用管理 + personnelService.checkSysDepartmentRef(id); + // 删除数据 departmentRDao.deleteById(id); } @@ -114,6 +114,10 @@ public class SysDepartmentService implements ISysDepartmentService { .setErrorSolution("请先删除子集信息在操作") .build(); }else { + for (Long id : ids) { + personnelService.checkSysDepartmentRef(id); + } + departmentRDao.deleteByIds(ids); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java index 958fdd7..354b4a3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java @@ -102,6 +102,9 @@ public class SysOrganizeService implements ISysOrganizeService { .setErrorSolution("请先删除子集信息在操作") .build(); } + // 检查引用关系 + personnelService.checkSysOrganizeRef(id); + // 删除数据 organizeRDao.deleteById(id); } @@ -117,6 +120,10 @@ public class SysOrganizeService implements ISysOrganizeService { .setErrorSolution("请先删除子集信息在操作") .build(); }else { + // 检查引用关系 + for (Long id : ids) { + personnelService.checkSysOrganizeRef(id); + } organizeRDao.deleteByIds(ids); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/HqlModelPack.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/HqlModelPack.java index 6995928..5c93ccb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/HqlModelPack.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/HqlModelPack.java @@ -27,6 +27,8 @@ public class HqlModelPack { // And HqlPack.getNumEqualPack(model.getUserStatus(),"userStatus",result); + HqlPack.getNumEqualPack(model.getUserPhone(),"userPhone",result); + if(idList != null && idList.size() > 0){ HqlPack.getInPack(StringUtils.join(idList, ","), "id", result); } diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties index ce37a0f..734b8da 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties @@ -1,7 +1,7 @@ #项目端口 server.port=8100 #本机ip -impp.server.ip=192.168.1.56 +impp.server.ip=192.168.1.40 #console控制台服务(zipkin追踪全路径) impp.console.ip=http://csd.estsh.com @@ -63,14 +63,14 @@ eureka.instance.lease-renewal-interval-in-seconds=20 #打开feign的熔断 feign.hystrix.enabled=true -#读取数据时长 -ribbon.ReadTimeout=3000 -#连接时长 -ribbon.ConnectTimeout=3000 #重试 ribbon.maxAutoRetries=2 +#读取数据时长 +ribbon.ReadTimeout=30000 +#连接时长 +ribbon.ConnectTimeout=30000 #响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) -hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000 +hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=35000 #集群名 eureka.instance.metadata-map.cluster=impp_cluster diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties index 07fc220..4b3bc09 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties @@ -58,14 +58,14 @@ eureka.instance.lease-renewal-interval-in-seconds=20 #打开feign的熔断 feign.hystrix.enabled=true -#读取数据时长 -ribbon.ReadTimeout=3000 -#连接时长 -ribbon.ConnectTimeout=3000 #重试 ribbon.maxAutoRetries=2 +#读取数据时长 +ribbon.ReadTimeout=30000 +#连接时长 +ribbon.ConnectTimeout=30000 #响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) -hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000 +hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=35000 #集群名 eureka.instance.metadata-map.cluster=impp_cluster diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties index 3da4b58..97ede48 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties @@ -63,14 +63,14 @@ eureka.instance.lease-renewal-interval-in-seconds=20 #打开feign的熔断 feign.hystrix.enabled=true -#读取数据时长 -ribbon.ReadTimeout=3000 -#连接时长 -ribbon.ConnectTimeout=3000 #重试 ribbon.maxAutoRetries=2 +#读取数据时长 +ribbon.ReadTimeout=30000 +#连接时长 +ribbon.ConnectTimeout=30000 #响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) -hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000 +hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=35000 #集群名 eureka.instance.metadata-map.cluster=impp_cluster