kaiyu
2021-05-10 275f338495f3e694ccf6fa909fb78b949a67921c
screen-manage
修改前台用户模块
11 files modified
234 ■■■■ changed files
screen-common/src/main/java/com/moral/util/AESUtils.java 4 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationDTO.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationQueryNamesForm.java 3 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/user/UserInsertForm.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryVO.java 25 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationVO.java 5 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/user/UserVO.java 6 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/OrganizationService.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/UserService.java 2 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java 82 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java 98 ●●●●● patch | view | raw | blame | history
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;
    }
}