Merge remote-tracking branch 'remotes/origin/dev' into test

yun-zuoyi
yunhao.wang 6 years ago
commit ea314f9364

@ -95,6 +95,12 @@ public interface IPersonnelService {
@ApiOperation(value = "账号唯一检查")
void checkSysUserOnly(SysUser user);
@ApiOperation(value = "重置密码检查")
Integer checkSysUserResetPassword(SysUser user);
@ApiOperation(value = "岗位关系检查")
void checkSysPositionRef(Long positionId);
@ApiOperation(value = "刷新组织冗余")
void refreshRefSysUserOrganizeRdd(Long organizeIds);
@ -114,6 +120,7 @@ public interface IPersonnelService {
@ApiOperation(value = "刷新用户岗位")
void refreshRefSysUserInfoPosition(Long userInfoId, Long[] positionIds);
@ApiOperation(value = "刷新用户岗位")
void refreshRefSysUserInfoPositionRdd(Long positionId);

@ -140,7 +140,9 @@ public class AuthController extends CoreBaseController {
for (SysMenu sysMenu : menus) {
if(sysMenu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue())
&& menu.getId().longValue() == sysMenu.getParentId().longValue()){
menu.getChildList().add(sysMenu);
if(!menu.getChildList().contains(sysMenu)){
menu.getChildList().add(sysMenu);
}
}
}

@ -154,4 +154,11 @@ public class SysEnumController extends CoreBaseController{
return new ResultBean(true, "操作成功",
Arrays.asList(CommonEnumUtil.USER_INFO_STATUS.values()));
}
@GetMapping("/sys-config-value-type")
@ApiOperation(value = "系统参数值类型", notes = "用户状态")
public ResultBean getSysConfigValueType(){
return new ResultBean(true, "操作成功",
Arrays.asList(ImppEnumUtil.SYS_CONFIG_VALUE_TYPE.values()));
}
}

@ -355,6 +355,10 @@ public class SysUserController extends CoreBaseController{
try {
SysUser user = sysUserService.getSysUserById(Long.parseLong(id));
if(user != null){
Integer num = personnelService.checkSysUserResetPassword(user);
num = CommonConstWords.LOCK_USER_RESET_PASSWORD - num;
String password = RandomStringUtils.random(6, true, false);
user.setUserLoginPassword(EncryptTool.hexMD5(password));
sysUserService.updateSysUser(user);
@ -377,7 +381,9 @@ public class SysUserController extends CoreBaseController{
LOGGER.info("系统提示:{} 使用密码重置功能帮{}重置了{}账号的密码,新密码是:{}",
getSessionUser().getUserName(),user.getUserName(),user.getUserLoginName(),password);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
String result = "操作成功,【"+user.getUserName()+"】账号今日重置密码次数剩余" +num+ "次";
return ResultBean.success(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}else{
return ResultBean.success("操作失败")
.setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode())
@ -396,7 +402,6 @@ public class SysUserController extends CoreBaseController{
@ApiOperation(value = "发送验证码",notes = "发送邮件验证码")
public ResultBean getEmailVerification(String email){
try {
SysUser user = sysUserService.getSysUserByEmail(email);
if(user != null){
String verification = RandomStringUtils.random(6, true, false);

@ -109,7 +109,7 @@ public class SystemLoginService implements ISystemLoginService {
redisCore.deleteKey(redisKey);
sysUserRDao.update(user);
}else{
redisCore.putObject(redisKey,num,24 * 60 * 60);
redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE);
}
return num;
}

@ -103,8 +103,18 @@ public class CoreTreeService implements ICoreTreeService {
@Override
@ApiOperation(value = "父节点检查",notes = "检查岗位的父节点是否是当前节点的子节点")
public void doValidatorSysPositionParentId(SysPosition position) {
findSysPositionChildrenTreePack(position,0);
validatorSysPositionParentId(position.getChildList(),position.getParentId());
if(position != null){
if(position.getParentId().longValue() == position.getId().longValue()){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级岗位不能为当前岗位")
.setErrorSolution("请重新操作")
.build();
}
findSysPositionChildrenTreePack(position,0);
validatorSysPositionParentId(position.getChildList(),position.getParentId());
}
}
@Override

@ -2,7 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.apiservice.util.HqlModelPack;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
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.enumutil.CommonEnumUtil;
@ -15,14 +15,18 @@ 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.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
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.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -67,6 +71,8 @@ public class PersonnelServiceService implements IPersonnelService {
@Autowired
private SysPositionRepository positionRDao;
@Resource(name="redisCore")
protected ImppRedis redisCore;
@Override
public SysUser saveSysUser(SysUser user) {
@ -334,6 +340,67 @@ public class PersonnelServiceService implements IPersonnelService {
}
}
@Override
@ApiOperation(value = "重置密码检查")
public Integer checkSysUserResetPassword(SysUser user) {
LOGGER.debug("平台用户岗位 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();
Object redisValue = redisCore.getObject(redisKey);
num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1;
if(num > CommonConstWords.LOCK_USER_RESET_PASSWORD){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode())
.setErrorDetail("重置密码次数已使用完毕")
.setErrorSolution("请明日再次使用")
.build();
}
redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE);
}
return num;
}
@Override
public void checkSysPositionRef(Long positionId) {
LOGGER.debug("平台岗位 SysPosition positionId:{}", positionId);
if(positionId != null){
long positionCount = positionRDao.findByPropertyCount("parentId",positionId);
if (positionCount >= 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 refUserInfoCount = userInfoRDao.findByPropertyCount("positionId",positionId);
if (refUserInfoCount >= 1) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在用户信息无法删除!")
.setErrorSolution("请先删除用户引用信息再操作")
.build();
}
}
}
/************************************ 用户唯一检查 ****************************************/
/**
@ -630,6 +697,52 @@ public class PersonnelServiceService implements IPersonnelService {
@Override
public void refreshRefSysUserInfoPositionRdd(Long positionId) {
List<Long> result = new ArrayList<>(); // 需要更新的用户ID 集合
// 更新关系表中数据
if(positionId != null){
SysPosition position = positionRDao.getById(positionId);
if(position != null){
List<SysRefUserPosition> list = refUserPositionRDao.findByProperty("positionId", position.getId());
if(list != null && list.size() > 0){
// 更新关系表中的冗余信息
refUserPositionRDao.updateByProperties(
"positionId",position.getId(),
"positionNameRdd", position.getName());
// 更新父节点冗余信息
positionRDao.updateByProperties("parentId",position.getId(),
"parentNameRdd",position.getName());
for (SysRefUserPosition ref : list) {
result.add(ref.getUserId());
}
}
}
}
// 删除关系表中数据
refUserPositionRDao.deleteByProperty("positionId", positionId);
// 获取需要更新的用户
StringBuffer strWhere = new StringBuffer();
List<String> nameList = null;
HqlPack.getInPack(StringUtils.join(result, ","), "userId", strWhere);
List<SysUserInfo> infoList = userInfoRDao.findByHqlWhere(strWhere.toString());
// 更新用户的冗余信息
if(infoList != null && infoList.size() > 0){
for (SysUserInfo info : infoList) {
List<SysRefUserPosition> list = refUserPositionRDao.findByProperty("userId", info.getId());
if (list != null) {
for (SysRefUserPosition ref : list) {
nameList.add(ref.getPositionNameRdd());
}
}
info.setPositionNamesRdd(StringUtils.join(nameList, ","));
userInfoRDao.save(info);
}
}
}
}

@ -1,5 +1,6 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -40,6 +41,9 @@ public class SysPositionService implements ISysPositionService {
@Autowired
private SysUserRepository sysUserRDao;
@Autowired
private IPersonnelService personnelService;
@Override
@ApiOperation(value = "新增岗位信息")
public SysPosition insertSysPosition(SysPosition position) {
@ -105,45 +109,31 @@ public class SysPositionService implements ISysPositionService {
LOGGER.info("岗位信息 POSITION position:{}", position);
positionRDao.update(position);
// 修改冗余信息
positionRDao.updateByProperties("parentId",position.getId(),
"parentNameRdd",position.getName());
personnelService.refreshRefSysUserInfoPositionRdd(position.getId());
}
@Override
@ApiOperation(value = "删除岗位信息",notes = "根据ID 删除岗位信息")
public void deleteSysPositionById(Long id) {
// 查询是否存在子级
LOGGER.info("岗位信息 POSITION id:{}", id);
long positionCount = positionRDao.findByPropertyCount("parentId",id);
if (positionCount >= 1) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在相关岗位信息无法删除!")
.setErrorSolution("请先删除子集信息在操作")
.build();
}
personnelService.checkSysPositionRef(id);
// 删除岗位信息
LOGGER.info("岗位信息 POSITION id:{}", id);
positionRDao.deleteById(id);
personnelService.refreshRefSysUserInfoPositionRdd(id);
}
@Override
@ApiOperation(value = "删除岗位信息",notes = "根据ID 批量删除岗位信息")
public void deleteSysPositionByIds(Long[] ids) {
LOGGER.info("岗位信息 POSITION ids:{}", ids);
long positionCount = positionRDao.findByHqlWhereCount(CoreHqlPack.packHqlIds("parentId",ids));
// 判断是否有子节点
if (positionCount <= 0) {
positionRDao.deleteByIds(ids);
}else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在相关岗位信息无法删除!")
.setErrorSolution("请重新操作")
.build();
// 检查是否存在引用关系
for (Long id : ids) {
personnelService.checkSysPositionRef(id);
}
positionRDao.deleteByIds(ids);
for (Long id : ids) {
personnelService.refreshRefSysUserInfoPositionRdd(id);
}
}

Loading…
Cancel
Save