jinpengyong
2023-08-25 f9f8f90ac63d6ce3274410d3721b173f40db6e41
screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -18,9 +18,13 @@
import com.moral.api.pojo.form.user.UserUpdateForm;
import com.moral.api.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.CompareFieldUtils;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.pojo.CompareFieldResult;
import com.moral.util.ConvertUtils;
import com.moral.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -29,6 +33,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.SimpleFormatter;
/**
 * <p>
@@ -51,6 +56,7 @@
    UserGroupMapper userGroupMapper;
    @Autowired
    GroupMenuMapper groupMenuMapper;
    @Override
    public UserQueryDTO queryUsers(UserQueryForm form) {
@@ -150,6 +156,12 @@
        //更新
        userMapper.updateById(user);
        //获取更新后的用户
        user = userMapper.selectById(user.getId());
        //插入日志
        updatelog(oldUser,user);
        //封装返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -208,64 +220,20 @@
        organization.setAdminUserId(user.getId());
        organization.setId(organizationId);
        organizationMapper.updateById(organization);
        //操作插入日志
        insertLog(user,organizationId);
        //封装返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    @Override
    @Transactional
    public UserDTO deleteUser(UserDeleteForm form) {
        //取参
        Integer id = form.getId();
        //创建删除条件
        User user = new User();
        user.setIsDelete(Constants.NOT_DELETE);
        user.setId(id);
        //执行删除逻辑
        UserDTO dto = deleteUserModel(user);
        //删除组织中admin账号字段
        UpdateWrapper updateOrgWrapper = new UpdateWrapper();
        updateOrgWrapper.eq("admin_user_id",user.getId());
        updateOrgWrapper.set("admin_user_id",0);
        organizationMapper.update(null,updateOrgWrapper);
        return dto;
    }
    @Override
    @Transactional
    public UserDTO deleteUserByOrganizationId(Integer organizationId) {
        //创建删除条件
        User user = new User();
        user.setOrganizationId(organizationId);
        //执行逻辑删除
        UserDTO dto = deleteUserModel(user);
        return dto;
    }
    private UserDTO deleteUserModel(User user) {
    public UserDTO deleteUsersByOrganizationId(Integer organizationId) {
        //创建返回对象
        UserDTO dto = new UserDTO();
        //删除条件
        Integer organizationId = null;
        //创建要删除的账号对象用于插入日志
        User oldUser = null;
        //判断对象是否含有组织id
        if (ObjectUtils.isEmpty(user.getOrganizationId())) {
            QueryWrapper<User> deleteUserWrapper = new QueryWrapper<>();
            deleteUserWrapper.setEntity(user);
            oldUser = userMapper.selectOne(deleteUserWrapper);
            if (ObjectUtils.isEmpty(user)) {
                dto.setCode(ResponseCodeEnum.USER_NOT_EXIST.getCode());
                dto.setMsg(ResponseCodeEnum.USER_NOT_EXIST.getMsg());
                return dto;
            }
            organizationId = oldUser.getOrganizationId();
        }else{
            organizationId = user.getOrganizationId();
        }
        //逻辑删除,删除账号以及该组织下的所有账号
        UpdateWrapper<User> deleteUserChildrenWrapper = new UpdateWrapper<>();
        deleteUserChildrenWrapper.eq("organization_id", organizationId);
@@ -273,24 +241,68 @@
        userMapper.update(null, deleteUserChildrenWrapper);
        //逻辑删除,groupMenu
        UpdateWrapper deleteGroupMenuWrapper = new UpdateWrapper();
        deleteGroupMenuWrapper.eq("organization_id",organizationId);
        deleteGroupMenuWrapper.eq("organization_id", organizationId);
        deleteGroupMenuWrapper.set("is_delete", Constants.DELETE);
        groupMenuMapper.update(null,deleteGroupMenuWrapper);
        groupMenuMapper.update(null, deleteGroupMenuWrapper);
        //逻辑删除,userGroup
        UpdateWrapper deleteUserGroupWrapper = new UpdateWrapper();
        deleteUserGroupWrapper.eq("organization_id",organizationId);
        deleteUserGroupWrapper.eq("organization_id", organizationId);
        deleteUserGroupWrapper.set("is_delete", Constants.DELETE);
        userGroupMapper.update(null,deleteUserGroupWrapper);
        userGroupMapper.update(null, deleteUserGroupWrapper);
        //逻辑删除,group
        UpdateWrapper deleteGroupWrapper = new UpdateWrapper();
        deleteGroupWrapper.eq("organization_id",organizationId);
        deleteGroupWrapper.eq("organization_id", organizationId);
        deleteGroupWrapper.set("is_delete", Constants.DELETE);
        groupMapper.update(null,deleteGroupWrapper);
        groupMapper.update(null, deleteGroupWrapper);
        //返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    /**
    * @Description: 插入操作插入日志
            * @Param: [user, organizationId]
            * @return: void
            * @Author: 陈凯裕
            * @Date: 2021/8/24
            */
    private void insertLog(User user,Integer organizationId) {
        StringBuilder content = new StringBuilder("添加了前台用户;");
        content.append("角色:admin;");
        //查询添加admin用户的组织
        Organization organization = organizationMapper.selectById(organizationId);
        content.append("组织:"+organization.getName()+";");
        content.append("账号:"+user.getAccount()+";");
        content.append("用户名称:"+user.getUserName()+";");
        content.append("过期时间:"+ DateUtils.dateToDateString(user.getExpireTime(),"yyyy-MM-dd")+";");
        if(user.getEmail()!=null)
            content.append("邮箱:"+user.getEmail()+";");
        if(user.getMobile()!=null)
            content.append("手机:"+user.getMobile()+";");
        if(user.getWechat()!=null)
            content.append("微信:"+user.getWechat()+";");
        LogUtils.saveOperationForManage(content.toString(), Constants.INSERT_OPERATE_TYPE);
    }
    /**
    * @Description: 更新操作插入日志
            * @Param: [oldUser, newUser]
            * @return: void
            * @Author: 陈凯裕
            * @Date: 2021/8/24
            */
    private void updatelog(User oldUser,User newUser){
        List<CompareFieldResult> results = CompareFieldUtils.compare(User.class, oldUser, newUser);
        StringBuilder content = new StringBuilder("修改了前台用户;");
        content.append("所属组织:"+organizationMapper.selectById(oldUser.getOrganizationId()).getName()+";");
        //密码特殊处理
        if(newUser.getPassword()!=null)
            content.append("修改了密码;");
        String resultContent = CompareFieldUtils.resultsConvertContent(results,content.toString());
        LogUtils.saveOperationForManage(resultContent, Constants.UPDATE_OPERATE_TYPE);
    }
}