diff --git a/hxhq-api/hxhq-api-system/src/main/java/com/hxhq/system/api/domain/SysUser.java b/hxhq-api/hxhq-api-system/src/main/java/com/hxhq/system/api/domain/SysUser.java index f0b9bd1..e9bf000 100644 --- a/hxhq-api/hxhq-api-system/src/main/java/com/hxhq/system/api/domain/SysUser.java +++ b/hxhq-api/hxhq-api-system/src/main/java/com/hxhq/system/api/domain/SysUser.java @@ -3,6 +3,8 @@ package com.hxhq.system.api.domain; import java.util.Date; import java.util.List; import javax.validation.constraints.*; + +import com.hxhq.common.core.annotation.Compare; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.hxhq.common.core.annotation.Excel; @@ -32,14 +34,17 @@ public class SysUser extends BaseEntity /** 用户账号 */ @Excel(name = "登录名称") + @Compare(name = "账号",nameEn = "User") private String userName; /** 用户昵称 */ @Excel(name = "用户名称") + @Compare(name = "姓名",nameEn = "Name") private String nickName; /** 用户邮箱 */ @Excel(name = "用户邮箱") + @Compare(name = "邮箱",nameEn = "Email") private String email; /** 手机号码 */ diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ISystemLogService.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ISystemLogService.java index 3ef9501..ca6c13a 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ISystemLogService.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ISystemLogService.java @@ -42,6 +42,7 @@ public interface ISystemLogService extends IService /** * 普通日志 + * @param name * @param jcmc * @param jcmcEn * @param jcnr @@ -51,6 +52,6 @@ public interface ISystemLogService extends IService * @param qmrMcEn * @param remark */ - void saveInfo(String jcmc, String jcmcEn, String jcnr, String jcnrEn,Long qmrid, String qmrMc, String qmrMcEn, String remark); + void saveInfo(String name, String jcmc, String jcmcEn, String jcnr, String jcnrEn,Long qmrid, String qmrMc, String qmrMcEn, String remark); } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/SystemLogServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/SystemLogServiceImpl.java index 902f84c..899d7f1 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/SystemLogServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/SystemLogServiceImpl.java @@ -95,8 +95,9 @@ public class SystemLogServiceImpl extends ServiceImpl fieldChanges = ObjectCompareUtil.compareObjects(old, info); for (ObjectCompareUtil.FieldChange fieldChange : fieldChanges) { - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr(fieldChange.toString()); log.setJcnrEn(fieldChange.toEnString()); list.add(log); @@ -581,25 +581,25 @@ public class SysMenuServiceImpl implements ISysMenuService String infoParentName = info.getParentId().equals(0L)?"":selectMenuById(info.getParentId()).getMenuName(); String oldParentName = old.getParentId().equals(0L)?"":selectMenuById(old.getParentId()).getMenuName(); - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr("[{\"name\":\"字段名\",\"value\":\"上级菜单\"},{\"name\":\"原值\",\"value\":\""+oldParentName+"\"},{\"name\":\"新值\",\"value\":\""+infoParentName+"\"}]"); log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Parent Menu\"},{\"name\":\"Old Value\",\"value\":\""+oldParentName+"\"},{\"name\":\"New Value\",\"value\":\""+infoParentName+"\"}]"); list.add(log); } if(!info.getMenuType().equals(old.getMenuType())){ - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr("[{\"name\":\"字段名\",\"value\":\"菜单类型\"},{\"name\":\"原值\",\"value\":\""+("M".equals(old.getMenuType())?"目录":"C".equals(old.getMenuType())?"菜单":"按钮")+"\"},{\"name\":\"新值\",\"value\":\""+("M".equals(info.getMenuType())?"目录":"C".equals(info.getMenuType())?"菜单":"按钮")+"\"}]"); log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Type\"},{\"name\":\"Old Value\",\"value\":\""+("M".equals(old.getMenuType())?"Dir":"C".equals(old.getMenuType())?"Menu":"Btn")+"\"},{\"name\":\"New Value\",\"value\":\""+("M".equals(info.getMenuType())?"Dir":"C".equals(info.getMenuType())?"Menu":"Btn")+"\"}]"); list.add(log); } if(!info.getStatus().equals(old.getStatus())){ - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr("[{\"name\":\"字段名\",\"value\":\"菜单状态\"},{\"name\":\"原值\",\"value\":\""+("0".equals(old.getMenuType())?"显示":"隐藏")+"\"},{\"name\":\"新值\",\"value\":\""+("0".equals(info.getMenuType())?"显示":"隐藏")+"\"}]"); log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Status\"},{\"name\":\"Old Value\",\"value\":\""+("0".equals(old.getMenuType())?"Visible":"Hide")+"\"},{\"name\":\"New Value\",\"value\":\""+("0".equals(info.getMenuType())?"Visible":"Hide")+"\"}]"); list.add(log); } if(!info.getIsCache().equals(old.getIsCache())){ - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr("[{\"name\":\"字段名\",\"value\":\"是否缓存\"},{\"name\":\"原值\",\"value\":\""+("0".equals(old.getIsCache())?"缓存":"不缓存")+"\"},{\"name\":\"新值\",\"value\":\""+("0".equals(info.getIsCache())?"缓存":"不缓存")+"\"}]"); log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Cache Or Not\"},{\"name\":\"Old Value\",\"value\":\""+("0".equals(old.getIsCache())?"Cache":"No Cache")+"\"},{\"name\":\"New Value\",\"value\":\""+("0".equals(info.getIsCache())?"Cache":"No Cache")+"\"}]"); list.add(log); @@ -611,8 +611,9 @@ public class SysMenuServiceImpl implements ISysMenuService * 获取日志基础信息 * @return */ - private SystemLog getLogInfo(){ + private SystemLog getLogInfo(SysMenu info){ SystemLog log = new SystemLog(); + log.setName(info.getMenuName()); log.setJcmc("修改菜单"); log.setJcmcEn("Modify Menu"); log.setQmrId(SecurityUtils.getUserId()); diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysRoleServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysRoleServiceImpl.java index 7296055..fabfa42 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysRoleServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysRoleServiceImpl.java @@ -246,7 +246,7 @@ public class SysRoleServiceImpl implements ISysRoleService // 新增角色信息 roleMapper.insertRole(role); int row = insertRoleMenu(role); - systemLogService.saveInfo("新增角色","Add Role",role.getRoleName(),role.getRoleName(),SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); + systemLogService.saveInfo(role.getRoleName(),"新增角色","Create Role",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); return row; } @@ -288,7 +288,7 @@ public class SysRoleServiceImpl implements ISysRoleService { SysRole info = selectRoleById(role.getRoleId()); int row = roleMapper.updateRole(role); - systemLogService.saveInfo("0".equals(role.getStatus())?"启用角色":"禁用角色","0".equals(role.getStatus())?"Enable Role":"Disable Role",info.getRoleName(),info.getRoleName(),SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); + systemLogService.saveInfo(info.getRoleName(),"0".equals(role.getStatus())?"启用角色":"禁用角色","0".equals(role.getStatus())?"Enable Role":"Disable Role",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); return row; } @@ -377,7 +377,7 @@ public class SysRoleServiceImpl implements ISysRoleService int row = roleMapper.deleteRoleById(roleId); - systemLogService.saveInfo("删除角色","Remove Role",sysRole.getRoleName(),sysRole.getRoleName(),SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); + systemLogService.saveInfo(sysRole.getRoleName(),"删除角色","Remove Role",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); return row; } @@ -467,13 +467,13 @@ public class SysRoleServiceImpl implements ISysRoleService List fieldChanges = ObjectCompareUtil.compareObjects(old, info); for (ObjectCompareUtil.FieldChange fieldChange : fieldChanges) { - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr(fieldChange.toString()); log.setJcnrEn(fieldChange.toEnString()); list.add(log); } if(!info.getStatus().equals(old.getStatus())){ - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr("[{\"name\":\"字段名\",\"value\":\"状态\"},{\"name\":\"原值\",\"value\":\""+("0".equals(old.getStatus())?"启用":"禁用")+"\"},{\"name\":\"新值\",\"value\":\""+("0".equals(info.getStatus())?"启用":"禁用")+"\"}]"); log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Status\"},{\"name\":\"Old Value\",\"value\":\""+("0".equals(old.getStatus())?"Enabled":"Disabled")+"\"},{\"name\":\"New Value\",\"value\":\""+("0".equals(info.getStatus())?"Enabled":"Disabled")+"\"}]"); list.add(log); @@ -518,7 +518,7 @@ public class SysRoleServiceImpl implements ISysRoleService } if(addNameList.size()>0 || deleteNameList.size()>0){ - SystemLog log = getLogInfo(); + SystemLog log = getLogInfo(old); log.setJcnr((addNameList.size()>0?("新增权限:"+String.join(",",addNameList)):"")+(deleteNameList.size()>0?(";删除权限:"+String.join(",",deleteNameList)):"")); log.setJcnrEn((addNameList.size()>0?("Add Permit:"+String.join(",",addNameList)):"")+(deleteNameList.size()>0?(";Remove Permit:"+String.join(",",deleteNameList)):"")); list.add(log); @@ -532,8 +532,9 @@ public class SysRoleServiceImpl implements ISysRoleService * 获取日志基础信息 * @return */ - private SystemLog getLogInfo(){ + private SystemLog getLogInfo(SysRole sysRole){ SystemLog log = new SystemLog(); + log.setName(sysRole.getRoleName()); log.setJcmc("修改角色"); log.setJcmcEn("Modify Role"); log.setQmrId(SecurityUtils.getUserId()); diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysUserServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysUserServiceImpl.java index d8785eb..5f6f7ca 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysUserServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysUserServiceImpl.java @@ -1,14 +1,16 @@ package com.hxhq.system.service.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import javax.validation.Validator; +import com.hxhq.business.domain.SystemLog; import com.hxhq.business.dto.select.BzListDto; import com.hxhq.business.dto.select.DeptUserTreeDto; +import com.hxhq.business.service.ISystemLogService; +import com.hxhq.business.utils.ObjectCompareUtil; +import com.hxhq.system.api.domain.SysDept; +import com.hxhq.system.domain.SysMenu; import com.hxhq.system.domain.SysPost; import com.hxhq.system.domain.SysUserPost; import com.hxhq.system.domain.SysUserRole; @@ -70,6 +72,9 @@ public class SysUserServiceImpl implements ISysUserService @Autowired protected Validator validator; + @Autowired + private ISystemLogService systemLogService; + /** * 根据条件分页查询用户列表 * @@ -271,6 +276,8 @@ public class SysUserServiceImpl implements ISysUserService insertUserPost(user); // 新增用户与角色管理 insertUserRole(user); + + systemLogService.saveInfo(user.getUserName(),"新增用户","Create User",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); return rows; } @@ -296,6 +303,9 @@ public class SysUserServiceImpl implements ISysUserService @Transactional(rollbackFor = Exception.class) public int updateUser(SysUser user) { + SysUser old = selectUserById(user.getUserId()); + List oldRoleIdList = roleMapper.selectRoleListByUserId(user.getUserId()); + Long userId = user.getUserId(); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); @@ -305,7 +315,15 @@ public class SysUserServiceImpl implements ISysUserService userPostMapper.deleteUserPostByUserId(userId); // 新增用户与岗位管理 insertUserPost(user); - return userMapper.updateUser(user); + + int row = userMapper.updateUser(user); + + List logList = getModifyLogList(user,old,oldRoleIdList); + if(logList.size()>0){ + systemLogService.saveBatch(logList); + } + + return row; } /** @@ -331,7 +349,11 @@ public class SysUserServiceImpl implements ISysUserService @Override public int updateUserStatus(SysUser user) { - return userMapper.updateUserStatus(user.getUserId(), user.getStatus()); + SysUser info = selectUserById(user.getUserId()); + + int row = userMapper.updateUserStatus(user.getUserId(), user.getStatus()); + systemLogService.saveInfo(info.getUserName(),"0".equals(user.getStatus())?"启用用户":"禁用用户","0".equals(user.getStatus())?"Enable User":"Disable User",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); + return row; } /** @@ -462,11 +484,14 @@ public class SysUserServiceImpl implements ISysUserService @Transactional(rollbackFor = Exception.class) public int deleteUserById(Long userId) { + SysUser sysUser =selectUserById(userId); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 删除用户与岗位表 userPostMapper.deleteUserPostByUserId(userId); - return userMapper.deleteUserById(userId); + int row = userMapper.deleteUserById(userId); + systemLogService.saveInfo(sysUser.getUserName(),"删除用户","Remove User",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null); + return row; } /** @@ -612,4 +637,99 @@ public class SysUserServiceImpl implements ISysUserService public List selectNamesByIdList(List idList) { return userMapper.selectNamesByIdList(idList); } + + private List getModifyLogList(SysUser info, SysUser old, List oldRoleIdList){ + List list = new ArrayList<>(); + + List fieldChanges = ObjectCompareUtil.compareObjects(old, info); + for (ObjectCompareUtil.FieldChange fieldChange : fieldChanges) { + SystemLog log = getLogInfo(old); + log.setJcnr(fieldChange.toString()); + log.setJcnrEn(fieldChange.toEnString()); + list.add(log); + } + if(!info.getStatus().equals(old.getStatus())){ + SystemLog log = getLogInfo(old); + log.setJcnr("[{\"name\":\"字段名\",\"value\":\"状态\"},{\"name\":\"原值\",\"value\":\""+("0".equals(old.getStatus())?"启用":"禁用")+"\"},{\"name\":\"新值\",\"value\":\""+("0".equals(info.getStatus())?"启用":"禁用")+"\"}]"); + log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Status\"},{\"name\":\"Old Value\",\"value\":\""+("0".equals(old.getStatus())?"Enabled":"Disabled")+"\"},{\"name\":\"New Value\",\"value\":\""+("0".equals(info.getStatus())?"Enabled":"Disabled")+"\"}]"); + list.add(log); + } + if(!info.getDeptId().equals(old.getDeptId())){ + SysDept oldDept = deptService.selectDeptById(old.getDeptId()); + SysDept newDept = deptService.selectDeptById(info.getDeptId()); + + SystemLog log = getLogInfo(old); + log.setJcnr("[{\"name\":\"字段名\",\"value\":\"所属部门/学科\"},{\"name\":\"原值\",\"value\":\""+oldDept.getDeptName()+"\"},{\"name\":\"新值\",\"value\":\""+newDept.getDeptName()+"\"}]"); + log.setJcnrEn("[{\"name\":\"Field\",\"value\":\"Department\"},{\"name\":\"Old Value\",\"value\":\""+oldDept.getDeptName()+"\"},{\"name\":\"New Value\",\"value\":\""+newDept.getDeptName()+"\"}]"); + list.add(log); + } + + //判断菜单修改 + Boolean updateRole = false; + if(info.getRoleIds().length!=oldRoleIdList.size()){ + updateRole = true; + }else{ + for(Long newMenuId : info.getRoleIds()){ + if(!oldRoleIdList.contains(newMenuId)){ + updateRole = true; + break; + } + } + } + if(updateRole){ + List allRoleList = roleMapper.selectRoleList(new SysRole()); + + List oldRoleList = new ArrayList<>(); + List newRoleList = new ArrayList<>(); + if(info.getRoleIds()!=null && info.getRoleIds().length>0){ + for(Long newRoleId : info.getRoleIds()){ + newRoleList.add(allRoleList.stream().filter(o->o.getRoleId().equals(newRoleId)).collect(Collectors.toList()).get(0)); + } + } + if(oldRoleIdList.size()>0){ + for(Long oldRoleId : oldRoleIdList){ + oldRoleList.add(allRoleList.stream().filter(o->o.getRoleId().equals(oldRoleId)).collect(Collectors.toList()).get(0)); + } + } + + List addNameList = new ArrayList<>(); + List deleteNameList = new ArrayList<>(); + for(SysRole newRole : newRoleList){ + if(!oldRoleIdList.contains(newRole.getRoleId())){ + addNameList.add(newRole.getRoleName()); + } + } + + List newMenuIdList = Arrays.asList(info.getRoleIds()); + for(SysRole oldRole : oldRoleList){ + if(!newMenuIdList.contains(oldRole.getRoleId())){ + deleteNameList.add(oldRole.getRoleName()); + } + } + + if(addNameList.size()>0 || deleteNameList.size()>0){ + SystemLog log = getLogInfo(old); + log.setJcnr((addNameList.size()>0?("新增角色:"+String.join(",",addNameList)):"")+(deleteNameList.size()>0?(";删除角色:"+String.join(",",deleteNameList)):"")); + log.setJcnrEn((addNameList.size()>0?("Add Role:"+String.join(",",addNameList)):"")+(deleteNameList.size()>0?(";Remove Role:"+String.join(",",deleteNameList)):"")); + list.add(log); + } + } + + return list; + } + + /** + * 获取日志基础信息 + * @return + */ + private SystemLog getLogInfo(SysUser sysUser){ + SystemLog log = new SystemLog(); + log.setName(sysUser.getNickName()); + log.setJcmc("修改用户"); + log.setJcmcEn("Modify User"); + log.setQmrId(SecurityUtils.getUserId()); + log.setQmrMc(SecurityUtils.getNickName()); + log.setQmrMcEn(SecurityUtils.getUsername()); + return log; + } }