Browse Source

feat: [操作日志] 用户日志

master
memorylkf 2 months ago
parent
commit
1d35754b7a
6 changed files with 153 additions and 24 deletions
  1. +5
    -0
      hxhq-api/hxhq-api-system/src/main/java/com/hxhq/system/api/domain/SysUser.java
  2. +2
    -1
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ISystemLogService.java
  3. +2
    -1
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/SystemLogServiceImpl.java
  4. +9
    -8
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysMenuServiceImpl.java
  5. +8
    -7
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysRoleServiceImpl.java
  6. +127
    -7
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysUserServiceImpl.java

+ 5
- 0
hxhq-api/hxhq-api-system/src/main/java/com/hxhq/system/api/domain/SysUser.java View File

@ -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;
/** 手机号码 */

+ 2
- 1
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ISystemLogService.java View File

@ -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);
}

+ 2
- 1
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/SystemLogServiceImpl.java View File

@ -95,8 +95,9 @@ public class SystemLogServiceImpl extends ServiceImpl
}
@Override
public void saveInfo(String jcmc, String jcmcEn, String jcnr, String jcnrEn, Long qmrid, String qmrMc, String qmrMcEn, String remark) {
public void saveInfo(String name, String jcmc, String jcmcEn, String jcnr, String jcnrEn, Long qmrid, String qmrMc, String qmrMcEn, String remark) {
SystemLog info = new SystemLog();
info.setName(name);
info.setJcnr(jcnr);
info.setJcnrEn(jcnrEn);
info.setJcmc(jcmc);

+ 9
- 8
hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysMenuServiceImpl.java View File

@ -309,7 +309,7 @@ public class SysMenuServiceImpl implements ISysMenuService
public int insertMenu(SysMenu menu)
{
int row = menuMapper.insertMenu(menu);
systemLogService.saveInfo("新增菜单","Add Menu",menu.getMenuName(),menu.getMenuName(),SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null);
systemLogService.saveInfo(menu.getMenuName(),"新增菜单","Create Menu",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null);
return row;
}
@ -343,7 +343,7 @@ public class SysMenuServiceImpl implements ISysMenuService
{
SysMenu menu = selectMenuById(menuId);
int row = menuMapper.deleteMenuById(menuId);
systemLogService.saveInfo("删除菜单","Remove Menu",menu.getMenuName(),menu.getMenuName(),SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null);
systemLogService.saveInfo(menu.getMenuName(),"删除菜单","Remove Menu",null,null,SecurityUtils.getUserId(),SecurityUtils.getNickName(),SecurityUtils.getUsername(),null);
return row;
}
@ -571,7 +571,7 @@ public class SysMenuServiceImpl implements ISysMenuService
List<ObjectCompareUtil.FieldChange> 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());

+ 8
- 7
hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysRoleServiceImpl.java View File

@ -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<ObjectCompareUtil.FieldChange> 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());

+ 127
- 7
hxhq-modules/hxhq-system/src/main/java/com/hxhq/system/service/impl/SysUserServiceImpl.java View File

@ -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<Long> 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<SystemLog> 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<String> selectNamesByIdList(List<Long> idList) {
return userMapper.selectNamesByIdList(idList);
}
private List<SystemLog> getModifyLogList(SysUser info, SysUser old, List<Long> oldRoleIdList){
List<SystemLog> list = new ArrayList<>();
List<ObjectCompareUtil.FieldChange> 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<SysRole> allRoleList = roleMapper.selectRoleList(new SysRole());
List<SysRole> oldRoleList = new ArrayList<>();
List<SysRole> 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<String> addNameList = new ArrayList<>();
List<String> deleteNameList = new ArrayList<>();
for(SysRole newRole : newRoleList){
if(!oldRoleIdList.contains(newRole.getRoleId())){
addNameList.add(newRole.getRoleName());
}
}
List<Long> 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;
}
}

Loading…
Cancel
Save