|  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.logging.SimpleFormatter; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * <p> | 
 |  |  | 
 |  |  |     UserGroupMapper userGroupMapper; | 
 |  |  |     @Autowired | 
 |  |  |     GroupMenuMapper groupMenuMapper; | 
 |  |  |     @Autowired | 
 |  |  |     LogUtils logUtils; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public UserQueryDTO queryUsers(UserQueryForm form) { | 
 |  |  | 
 |  |  |         //更新 | 
 |  |  |         userMapper.updateById(user); | 
 |  |  |  | 
 |  |  |         //获取更新后的用户 | 
 |  |  |         user = userMapper.selectById(user.getId()); | 
 |  |  |  | 
 |  |  |         //插入日志 | 
 |  |  |         updatelog(oldUser,user); | 
 |  |  |  | 
 |  |  |         //封装返回结果 | 
 |  |  |         dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  | 
 |  |  |         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); | 
 |  |  | 
 |  |  |         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); | 
 |  |  |         //逻辑删除,groupMenu | 
 |  |  |         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); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |