screen-common/src/main/java/com/moral/util/AESUtils.java
@@ -81,8 +81,10 @@ } public static void main(String[] args) { System.out.println(encrypt("123456","AD42F7787B035B7580000EF93BE20BAD")); // System.out.println(encrypt("123456","AD42F7787B035B7580000EF93BE20BAD")); //123456 KoWjfDMZQhJMLlG1crBPqQ== String str = decrypt("KoWjfDMZQhJMLlG1crBPqQ==", "AD42F7787B035B7580000EF93BE20BAD"); System.out.println(str); } } screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationDTO.java
@@ -36,5 +36,10 @@ * */ private Organization parentOrganization; /* * admin账号 * */ private User adminUser; } screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationQueryNamesForm.java
@@ -14,7 +14,4 @@ private Integer id; private Integer adminUserId; } screen-manage/src/main/java/com/moral/api/pojo/form/user/UserInsertForm.java
@@ -63,7 +63,7 @@ return dto; } //判断用户名是否符合条件 if(!RegexUtils.checkChinese(userName)||userName.contains(" ")){ if(userName.contains(" ")){ dto.setCode(ResponseCodeEnum.USERNAME_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.USERNAME_INVALID.getMsg()); return dto; screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryVO.java
@@ -2,8 +2,10 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.moral.api.entity.Organization; import com.moral.api.entity.User; import com.moral.api.pojo.dto.organization.OrganizationDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryDTO; import com.moral.api.pojo.vo.user.UserVO; import com.moral.constant.ResponseCodeEnum; import com.moral.util.DateUtils; import lombok.Data; @@ -72,8 +74,7 @@ Date expireTime = organization.getExpireTime(); String createTimeStr = DateUtils.dateToDateString(createTime, "yyyy-MM-dd"); String exipreTimeStr = DateUtils.dateToDateString(expireTime, "yyyy-MM-dd"); //封装组织信息 vo.setId(organization.getId()); vo.setName(organization.getName()); if (!ObjectUtils.isEmpty(parentOrganization)) @@ -84,12 +85,32 @@ vo.setAddress(organization.getAddress()); vo.setCreateTime(createTimeStr); vo.setExpireTime(exipreTimeStr); vo.setAdminUserId(organization.getAdminUserId()); vo.setProvinceCode(organization.getProvinceCode()); vo.setCityCode(organization.getCityCode()); vo.setAreaCode(organization.getAreaCode()); vo.setProvinceCityAreaName(organization.getProvinceName()+"/"+organization.getCityName()+"/"+organization.getAreaName()); vo.setLocationLevelCode(organization.getLocationLevelCode()); vo.setLocationLevelName(organization.getLocationLevelName()); //封装组织admin账号信息 User adminUser = dto.getAdminUser(); if (!ObjectUtils.isEmpty(adminUser)) { UserVO adminUserVO = new UserVO(); String adminUserCreateTimeStr = DateUtils.dateToDateString(adminUser.getCreateTime(), "yyyy-MM-dd"); String adminUserExpireTimeStr = DateUtils.dateToDateString(adminUser.getExpireTime(), "yyyy-MM-dd"); adminUserVO.setId(adminUser.getId()); adminUserVO.setMobile(adminUser.getMobile()); adminUserVO.setEmail(adminUser.getEmail()); adminUserVO.setWechat(adminUser.getWechat()); adminUserVO.setAccount(adminUser.getAccount()); adminUserVO.setExpireTime(adminUserExpireTimeStr); adminUserVO.setCreateTime(adminUserCreateTimeStr); adminUserVO.setUserName(adminUser.getUserName()); adminUserVO.setOrganizationName(organization.getName()); vo.setAdminUser(adminUserVO); }else{ vo.setAdminUser(new UserVO()); } return vo; } } screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationVO.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.moral.api.pojo.dto.organization.OrganizationDTO; import com.moral.api.pojo.vo.user.UserVO; import com.moral.constant.ResponseCodeEnum; import lombok.Data; @@ -13,7 +14,7 @@ * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) //@JsonInclude(JsonInclude.Include.NON_EMPTY) public class OrganizationVO { private Integer id; @@ -54,4 +55,6 @@ private String isDelete; private UserVO adminUser; } screen-manage/src/main/java/com/moral/api/pojo/vo/user/UserVO.java
@@ -11,19 +11,23 @@ * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) //@JsonInclude(JsonInclude.Include.NON_EMPTY) public class UserVO { private Integer id; private String account; private String userName; private String organizationName; private String email; private String mobile; private String wechat; private String createTime; private String expireTime; screen-manage/src/main/java/com/moral/api/service/OrganizationService.java
@@ -55,7 +55,7 @@ /** * @Description: 根据条件查询组织名称和id * @Description: 根据条件查询组织 * @Param: [form] * @return: com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO * @Author: 陈凯裕 screen-manage/src/main/java/com/moral/api/service/UserService.java
@@ -27,4 +27,6 @@ UserDTO insertUser(UserInsertForm form); UserDTO deleteUserByOrganizationId(Integer organizationId); } screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -7,13 +7,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.config.mybatis.wrapper.NullFilterWrapper; import com.moral.api.entity.Organization; import com.moral.api.entity.User; import com.moral.api.mapper.OrganizationMapper; import com.moral.api.mapper.UserMapper; import com.moral.api.pojo.dto.organization.OrganizationDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO; import com.moral.api.pojo.form.organization.*; import com.moral.api.service.OrganizationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.service.UserService; import com.moral.api.util.LogUtils; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; @@ -29,6 +32,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.function.Predicate; /** * <p> @@ -47,6 +51,12 @@ @Autowired LogUtils logUtils; @Autowired UserService userService; @Autowired UserMapper userMapper; Map<String, String> organizationFormMap; @@ -206,10 +216,13 @@ deleteWrapper.set("is_delete", Constants.DELETE); organizationMapper.update(null, deleteWrapper); //删除组织账号 userService.deleteUserByOrganizationId(id); //判断是否含有子组织 List<Organization> children = getAllChildrenOrganization(existOrganization); List<Organization> children = getAllChildrenOrganization(existOrganization.getId()); if (!ObjectUtils.isEmpty(children)) {//如果含有子组织 //判断是否删除所有子组织,如果不删除则所有子组织全部变为无父组织,孙子组织不变 //判断是否删除所有子组织,如果不删除子组织则所有子组织全部变为无父组织,孙子组织不变 UpdateWrapper updateWrapper = new UpdateWrapper(); if (form.getDeleteChildren().equals(Constants.DELETE_CHILDREN_ORG)) {//删除所有子组织 //获取所有子组织的id封装为集合 @@ -221,6 +234,9 @@ updateWrapper.in("id", childrenId); updateWrapper.set("is_delete", Constants.DELETE); organizationMapper.update(null, updateWrapper); //删除所有子组织账号 childrenId.forEach(value->userService.deleteUserByOrganizationId(value)); } else {//不删除 //提取所有直属子组织id List<Integer> childrenId = new ArrayList<>(); @@ -234,8 +250,6 @@ organizationMapper.update(null, updateWrapper); } } //删除组织对应账号 //封装返回结果 dto.setOrganization(existOrganization); @@ -318,12 +332,22 @@ Page<Organization> resultPage = organizationMapper.selectPage(page, queryWrapper); List<Organization> organizations = resultPage.getRecords(); List<OrganizationDTO> organizationDTOS = new ArrayList<>(); //查找所有组织的父组织并且封装organization到DTO中 for (Organization child : organizations) { //查找所有组织的父组织和admin账号并且封装organization到DTO中 for (Organization organization : organizations) { OrganizationDTO resultDto = new OrganizationDTO(); Organization parent = organizationMapper.selectById(child.getParentId());//查找父组织 resultDto.setOrganization(child); //查找父组织 Organization parent = organizationMapper.selectById(organization.getParentId()); resultDto.setOrganization(organization); resultDto.setParentOrganization(parent); //查找admin账号 QueryWrapper userWrapper = new QueryWrapper(); User adminUser = new User(); adminUser.setIsAdmin(true); adminUser.setOrganizationId(organization.getId()); adminUser.setIsDelete(Constants.NOT_DELETE); userWrapper.setEntity(adminUser); adminUser = userMapper.selectOne(userWrapper); resultDto.setAdminUser(adminUser); organizationDTOS.add(resultDto); } @@ -338,21 +362,40 @@ } /** * @Description: 查询所有组织的名称和Id * @Param: [] * @return: com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO * @Description: 如果form中id为空,则查询所有的组织 * 如果id不为空,则查询该id和该id所有子组织之外的所有组织 * @Param: [from] * @return: com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO * @Author: 陈凯裕 * @Date: 2021/4/13 * @Date: 2021/5/7 */ @Override public OrganizationQueryNamesDTO queryNames(OrganizationQueryNamesForm from) { public OrganizationQueryNamesDTO queryNames(OrganizationQueryNamesForm form) { OrganizationQueryNamesDTO dto = new OrganizationQueryNamesDTO(); //取参 Integer id = form.getId(); //构造查询条件 QueryWrapper<Organization> queryWrapper = new QueryWrapper(); queryWrapper.eq("is_delete", Constants.NOT_DELETE); //查询 //查询所有组织 List<Organization> organizations = organizationMapper.selectList(queryWrapper); //判断form是否含有id,如果有则对所有组织进行过滤 if(!ObjectUtils.isEmpty(id)){ List<Organization> children = getAllChildrenOrganization(id); List<Integer> thisAndchildrenIds = new ArrayList<>();//该id以及其所有子组织的id集合 thisAndchildrenIds.add(id); for (Organization child : children) { thisAndchildrenIds.add(child.getId()); } organizations.removeIf(new Predicate<Organization>() {//过滤 @Override public boolean test(Organization organization) { if(thisAndchildrenIds.contains(organization.getId())) return true; return false; } }); } //封装返回对象 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); @@ -424,9 +467,9 @@ * @Author: 陈凯裕 * @Date: 2021/4/14 */ private List<Organization> getAllChildrenOrganization(Organization parent) { private List<Organization> getAllChildrenOrganization(Integer parentId) { List<Organization> children = new ArrayList<>(); recursionQueryChildren(parent, children); recursionQueryChildren(parentId, children); return children; } @@ -437,8 +480,7 @@ * @Author: 陈凯裕 * @Date: 2021/4/14 */ private void recursionQueryChildren(Organization parent, List<Organization> children) { Integer parentId = parent.getId(); private void recursionQueryChildren(Integer parentId, List<Organization> children) { QueryWrapper<Organization> queryWrapper = new QueryWrapper(); queryWrapper.eq("is_delete", Constants.NOT_DELETE); queryWrapper.eq("parent_id", parentId); @@ -446,7 +488,7 @@ if (!ObjectUtils.isEmpty(organizations)) { children.addAll(organizations); for (Organization organization : organizations) { recursionQueryChildren(organization, children); recursionQueryChildren(organization.getId(), children); } } else { return; screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -152,36 +152,6 @@ @Override @Transactional public UserDTO deleteUser(UserDeleteForm form) { //创建返回对象 UserDTO dto = new UserDTO(); //取参 Integer id = form.getId(); //查询要删除的用户 用于插入日志 User oldUser = new User(); oldUser.setIsDelete(Constants.NOT_DELETE); oldUser.setId(id); QueryWrapper<User> oldWrapper = new QueryWrapper<>(); oldWrapper.setEntity(oldUser); oldUser = userMapper.selectOne(oldWrapper); if(ObjectUtils.isEmpty(oldUser)){ dto.setCode(ResponseCodeEnum.USER_NOT_EXIST.getCode()); dto.setMsg(ResponseCodeEnum.USER_NOT_EXIST.getMsg()); return dto; } //逻辑删除,删除账号以及该组织下的所有账号 UpdateWrapper<User> deleteWrapper = new UpdateWrapper<>(); deleteWrapper.eq("organization_id",oldUser.getOrganizationId()); deleteWrapper.set("is_delete",Constants.DELETE); userMapper.update(null,deleteWrapper); //返回结果 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } @Override @Transactional public UserDTO insertUser(UserInsertForm form) { //创建返回对象 UserDTO dto = new UserDTO(); @@ -215,11 +185,79 @@ } //插入 userMapper.insert(user); //更新组织 Organization organization = new Organization(); organization.setAdminUserId(user.getId()); organization.setId(organizationId); organizationMapper.updateById(organization); //封装返回结果 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) { //创建返回对象 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); deleteUserChildrenWrapper.set("is_delete", Constants.DELETE); userMapper.update(null, deleteUserChildrenWrapper); //返回结果 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } }