common模块:
增加了convert工具类,驼峰和下划线相互转换
更新了Date工具类,添加根据Date,day获取目标date的方法
更新WebUtils工具类,添加获取请求Ip方法
manage模块:
组织和后台用户增删改查模块全部完成
增加aop用作日志插入
5 files added
32 files modified
1204 ■■■■ changed files
pom.xml 5 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/Constants.java 49 ●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/ConvertUtils.java 88 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/DateUtils.java 96 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/WebUtils.java 33 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/aop/log/OperationLogAnno.java 20 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/aop/log/OperationLogAspect.java 117 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/config/mybatis/wrapper/NullFilterWrapper.java 36 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/AccountController.java 104 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/OrganizationController.java 59 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/ManageLog.java 19 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/ManageLogMapper.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationDTO.java 9 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountInsertForm.java 15 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountQueryForm.java 22 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java 13 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/login/LoginForm.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/login/LogoutForm.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationInsertForm.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationQueryForm.java 58 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountDeleteVO.java 4 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountInsertVO.java 3 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountQueryVO.java 33 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountUpdateVO.java 3 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountVO.java 27 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationDeleteVO.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationInsertVO.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryVO.java 87 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationUpdateVO.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationVO.java 2 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java 6 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/ManageLogService.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java 190 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java 85 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/application-dev.yml 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/ManageLogMapper.xml 5 ●●●●● patch | view | raw | blame | history
pom.xml
@@ -112,6 +112,11 @@
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
    </dependencies>
screen-common/src/main/java/com/moral/constant/Constants.java
@@ -7,56 +7,81 @@
    /*
     * 被删除标识
     * */
    public static String DELETE = "1";
    public static final String DELETE = "1";
    /*
     * 未删除标识
     * */
    public static String NOT_DELETE = "0";
    public static final String NOT_DELETE = "0";
    /*
     * 后台系统验证码配置列名
     * */
    public static String MANAGE_VERIFICATIONCODE_COLUMN = "type";
    public static final String MANAGE_VERIFICATIONCODE_COLUMN = "type";
    /*
     * 后台系统验证码列对应的值
     * */
    public static String MANAGE_VERIFICATIONCODE_VALUE = "manage_verificationCode";
    public static final String MANAGE_VERIFICATIONCODE_VALUE = "manage_verificationCode";
    /*
     * 验证码开启标识
     * */
    public static String VERFICATIONCODE_OPEN = "1";
    public static final String VERFICATIONCODE_OPEN = "1";
    /*
     * 验证码关闭标识
     * */
    public static String VERFICATIONCODE_CLOSE = "0";
    public static final String VERFICATIONCODE_CLOSE = "0";
    /*
     * 查询正序标识
     * */
    public static String ORDER_ASC = "0";
    public static final String ORDER_ASC = "0";
    /*
     * 查询倒序标识
     * */
    public static String ORDER_DESC = "1";
    public static final String ORDER_DESC = "1";
    /*
    * 删除子组织标识
    * */
    public static Integer DELETE_CHILDREN_ORG = 1;
    public static final Integer DELETE_CHILDREN_ORG = 1;
    /*
     * web端通道
     * 网页端渠道
     * */
    public static Integer WEB_CHANNEL = 1;
    public static final Integer WEB_CHANNEL = 1;
    /*
     * web端验证码配置列名
     * */
    public static String VERIFICATION_TYPE = "front_verificationCode";
    public static final String VERIFICATION_TYPE = "front_verificationCode";
    /*
     * 添加操作类型
     * */
    public static final String INSERT_OPERATE_TYPE = "添加";
    /*
     * 删除操作类型
     * */
    public static final String DELETE_OPERATE_TYPE = "删除";
    /*
     * 更新操作类型
     * */
    public static final String UPDATE_OPERATE_TYPE = "更新";
    /*
     * 查询操作类型
     * */
    public static final String QUERY_OPERATE_TYPE = "查询";
    /*
     * Organization模块名称
     * */
    public static final  String ORGANIZATION_MODULE_NAME = "组织";
}
screen-common/src/main/java/com/moral/util/ConvertUtils.java
New file
@@ -0,0 +1,88 @@
package com.moral.util;
import org.mockito.internal.util.StringUtil;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @ClassName ConvertUtils
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/3/26 14:52
 * @Version TODO
 **/
public class ConvertUtils {
    /**
    * @Description: 下划线转驼峰
            * @Param: [underscore]
            * @return: java.lang.String
            * @Author: 陈凯裕
            * @Date: 2021/3/26
            */
    public static String underscoreToCamelCase(String underscore) {
        String[] ss = underscore.split("_");
        if (ss.length == 1) {
            return underscore;
        }
        StringBuffer sb = new StringBuffer();
        sb.append(ss[0]);
        for (int i = 1; i < ss.length; i++) {
            sb.append(upperFirstCase(ss[i]));
        }
        return sb.toString();
    }
    /**
    * @Description: 驼峰转下划线
            * @Param: [camelCase]
            * @return: java.lang.String
            * @Author: 陈凯裕
            * @Date: 2021/3/26
            */
    public static String toLine(String camelCase) {
        Pattern humpPattern = Pattern.compile("[A-Z]");
        Matcher matcher = humpPattern.matcher(camelCase);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }
    /**
    * @Description: 首字母转为小写
            * @Param: [str]
            * @return: java.lang.String
            * @Author: 陈凯裕
            * @Date: 2021/3/26
            */
    private static String lowerFirstCase(String str) {
        char[] chars = str.toCharArray();
        chars[0] += 32;
        return String.valueOf(chars);
    }
    /**
    * @Description: 首字母转为大写
            * @Param: [str]
            * @return: java.lang.String
            * @Author: 陈凯裕
            * @Date: 2021/3/26
            */
    private static String upperFirstCase(String str) {
        char[] chars = str.toCharArray();
        chars[0] -= 32;
        return String.valueOf(chars);
    }
}
screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -1,7 +1,6 @@
package com.moral.util;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
@@ -16,36 +15,62 @@
public class DateUtils {
    /** 日期格式(yyyy-MM-dd) */
    /**
     * 日期格式(yyyy-MM-dd)
     */
    public static final String yyyy_MM_dd_EN = "yyyy-MM-dd";
    /** 日期格式(yyyy/MM/dd) */
    /**
     * 日期格式(yyyy/MM/dd)
     */
    public static final String yyyy_MM_dd_decline = "yyyy/MM/dd";
    /** 日期格式(yyyyMMdd) */
    /**
     * 日期格式(yyyyMMdd)
     */
    public static final String yyyyMMdd_EN = "yyyyMMdd";
    /** 日期格式(yyyy-MM) */
    /**
     * 日期格式(yyyy-MM)
     */
    public static final String yyyy_MM_EN = "yyyy-MM";
    /** 日期格式(yyyyMM) */
    /**
     * 日期格式(yyyyMM)
     */
    public static final String yyyyMM_EN = "yyyyMM";
    /** 日期格式(yyyy-MM-dd HH:mm:ss) */
    /**
     * 日期格式(yyyy-MM-dd HH:mm:ss)
     */
    public static final String yyyy_MM_dd_HH_mm_ss_EN = "yyyy-MM-dd HH:mm:ss";
    /** 日期格式(yyyy-MM-dd HH:mm:ss.S) */
    /**
     * 日期格式(yyyy-MM-dd HH:mm:ss.S)
     */
    public static final String yyyy_MM_dd_HH_mm_ss_S_EN = "yyyy-MM-dd HH:mm:ss.S";
    /** 日期格式(yyyyMMddHHmmss) */
    /**
     * 日期格式(yyyyMMddHHmmss)
     */
    public static final String yyyyMMddHHmmss_EN = "yyyyMMddHHmmss";
    /** 日期格式(yyyy年MM月dd日) */
    /**
     * 日期格式(yyyy年MM月dd日)
     */
    public static final String yyyy_MM_dd_CN = "yyyy年MM月dd日";
    /** 日期格式(yyyy年MM月dd日HH时mm分ss秒) */
    /**
     * 日期格式(yyyy年MM月dd日HH时mm分ss秒)
     */
    public static final String yyyy_MM_dd_HH_mm_ss_CN = "yyyy年MM月dd日HH时mm分ss秒";
    /** 日期格式(yyyy年MM月dd日HH时mm分) */
    /**
     * 日期格式(yyyy年MM月dd日HH时mm分)
     */
    public static final String yyyy_MM_dd_HH_mm_CN = "yyyy年MM月dd日HH时mm分";
    /** 北京boss订购接口报文头日期格式 */
    /**
     * 北京boss订购接口报文头日期格式
     */
    public static final String BJBOSS_DATE = "yyyy-MM-dd'T'HH:mm:ss'Z'";
    /** 日期格式(HH:mm:ss) */
    /**
     * 日期格式(HH:mm:ss)
     */
    public static final String HH_mm_ss_EN = "HH:mm:ss";
    /** DateFormat缓存 */
    /**
     * DateFormat缓存
     */
    private static Map<String, DateFormat> dateFormatMap = new HashMap<String, DateFormat>();
    /**
@@ -416,6 +441,23 @@
        now.add(Calendar.DATE, day);
        return dateToDateString(now.getTime(), formatStr);
    }
    /**
    * @Description: 获取指定日期day天后的日期
            * @Param: [date, day]
            * @return: java.util.Date
            * @Author: 陈凯裕
            * @Date: 2021/3/30
            */
    public static Date getDateOfDay(Date date, int day) {
        if(date==null)
            return null;
        Calendar now = Calendar.getInstance(TimeZone.getDefault());
        now.setTime(date);
        now.add(Calendar.DAY_OF_MONTH, day);
        return now.getTime();
    }
    public static Date getDate(Date beginDate, int ds) {
        if (ds == 0)
@@ -998,7 +1040,6 @@
    }
    public static boolean isDate(String dateTimeStr, String formatStr) {
        DateFormat df = getDateFormat(formatStr);
        try {
@@ -1012,12 +1053,9 @@
    /**
     * 判断时间是否在时间段内
     * 
     * @param strDate
     *            当前时间 yyyy-MM-dd HH:mm:ss
     * @param strDateBegin
     *            开始时间 00:00:00
     * @param strDateEnd
     *            结束时间 00:05:00
     * @param strDate      当前时间 yyyy-MM-dd HH:mm:ss
     * @param strDateBegin 开始时间 00:00:00
     * @param strDateEnd   结束时间 00:05:00
     * @return
     */
    public static boolean isInDate(String strDate, String strDateBegin, String strDateEnd) {
@@ -1063,12 +1101,9 @@
    /**
     * 判断时间是否在时间段内
     * 
     * @param date
     *            当前时间 yyyy-MM-dd HH:mm:ss
     * @param strDateBegin
     *            开始时间 00:00:00
     * @param strDateEnd
     *            结束时间 00:05:00
     * @param date         当前时间 yyyy-MM-dd HH:mm:ss
     * @param strDateBegin 开始时间 00:00:00
     * @param strDateEnd   结束时间 00:05:00
     * @return
     */
    public static boolean isInDate(Date date, String strDateBegin, String strDateEnd) {
@@ -1257,7 +1292,6 @@
        String  date = dft.format(newdate);    
        return date;
    }
    
    
    public static void main(String[] args) throws InterruptedException {
screen-common/src/main/java/com/moral/util/WebUtils.java
@@ -1,14 +1,24 @@
package com.moral.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.Map;
import java.util.TreeMap;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
@Slf4j
public class WebUtils extends org.springframework.web.util.WebUtils {
    public static Map<String, Object> getParametersStartingWith(ServletRequest request, String prefix) {
        Assert.notNull(request, "Request must not be null");
@@ -41,4 +51,27 @@
        }
        return params;
    }
    /**
    * @Description: 获取请求IP地址
            * @Param: [request]
            * @return: java.lang.String
            * @Author: 陈凯裕
            * @Date: 2021/3/31
            */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            ip = request.getHeader("Proxy-Client-IP");
        }
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            ip = request.getRemoteAddr();
        }
        return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
    }
}
screen-manage/src/main/java/com/moral/api/aop/log/OperationLogAnno.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.aop.log;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLogAnno {
    /*
     * 操作的模块
     * */
    String module() default "";
    /*
     * 操作的类型
     * */
    String type() default "";
}
screen-manage/src/main/java/com/moral/api/aop/log/OperationLogAspect.java
New file
@@ -0,0 +1,117 @@
package com.moral.api.aop.log;
import com.alibaba.fastjson.JSON;
import com.moral.api.entity.ManageLog;
import com.moral.api.entity.Organization;
import com.moral.api.mapper.ManageLogMapper;
import com.moral.api.pojo.form.organization.OrganizationInsertForm;
import com.moral.constant.Constants;
import com.moral.util.WebUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
/**
 * @ClassName OperationLogAspect
 * @Description 操作日志切面类
 * @Author 陈凯裕
 * @Date 2021/3/31 13:54
 * @Version TODO
 **/
@Aspect
@Component
public class OperationLogAspect {
    @Autowired
    ManageLogMapper manageLogMapper;
    /**
     * @Description: 设置切入点为OperationLogAnno注解使用的地方
     * @Param: []
     * @return: void
     * @Author: 陈凯裕
     * @Date: 2021/3/31
     */
    @Pointcut("@annotation(com.moral.api.aop.log.OperationLogAnno)")
    public void pointCut() {
    }
    /**
     * @Description: 后置通知,存日志到数据库
     * @Param: [joinPoint, result]方法切入点,方法返回值
     * @return: void
     * @Author: 陈凯裕
     * @Date: 2021/3/31
     */
    @AfterReturning(returning = "result", value = "pointCut()")
    public void saveOperLog(JoinPoint joinPoint, Object result) throws Throwable {
        //获取请求参数
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
        Object parameters = request.getAttribute("parameters");
        //获取module和type
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();//获取切入点方法信号
        Method method = signature.getMethod();//获取切入点的方法
        OperationLogAnno anno = method.getAnnotation(OperationLogAnno.class);//获取方法的注解
        String module = anno.module();//获取操作的模块
        String type = anno.type();//获取操作的类型
        saveLog(request,parameters, module, type);
    }
    /**
     * @Description: 判断模块
     * @Param: [paramters, module, type]
     * @return: void
     * @Author: 陈凯裕
     * @Date: 2021/3/31
     */
    public void saveLog(HttpServletRequest request,Object paramters, String module, String type) {
        if (module.equals(Constants.ORGANIZATION_MODULE_NAME)) {
            saveOrganizationLog(request,paramters, module, type);
        }
    }
    /**
     * @Description: 处理组织日志
     * @Param: [paramters, module, type]
     * @return: void
     * @Author: 陈凯裕
     * @Date: 2021/3/31
     */
    @Transactional
    public void saveOrganizationLog(HttpServletRequest request,Object paramters, String module, String type) {
        if (type.equals(Constants.INSERT_OPERATE_TYPE)) {//处理组织添加日志插入
            OrganizationInsertForm form = JSON.parseObject(JSON.toJSONString(paramters), OrganizationInsertForm.class);
            Integer accountId = 1;//固定 尚未更改
            String accountName = "测试人员";
            String organizationName = form.getName();
            String ip = WebUtils.getIpAddr(request);
            String content = accountName+"添加了新组织:"+organizationName;
            ManageLog manageLog = new ManageLog();
            manageLog.setContent(content);
            manageLog.setIp(ip);
            manageLog.setAccountId(accountId);
            manageLog.setModule(module);
            manageLog.setType(type);
            manageLogMapper.insert(manageLog);
        } else if (type.equals(Constants.DELETE_OPERATE_TYPE)) { //处理组织删除日志
        } else if (type.equals(Constants.UPDATE_OPERATE_TYPE)) {  //处理组织更新日志
        }
    }
}
screen-manage/src/main/java/com/moral/api/config/mybatis/wrapper/NullFilterWrapper.java
New file
@@ -0,0 +1,36 @@
package com.moral.api.config.mybatis.wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.enums.SqlKeyword;
import com.baomidou.mybatisplus.core.enums.SqlLike;
/**
 * @ClassName FiltNullWrapper
 * @Description 查询构造器,传入null并不会作为条件
 * @Author 陈凯裕
 * @Date 2021/3/30 10:45
 * @Version TODO
 **/
public class NullFilterWrapper<T> extends QueryWrapper<T> {
    @Override
    protected QueryWrapper<T> likeValue(boolean condition, String column, Object val, SqlLike sqlLike) {
        if(val==null)
            condition = false;
        return super.likeValue(condition, column, val, sqlLike);
    }
    @Override
    public QueryWrapper<T> between(boolean condition, String column, Object val1, Object val2) {
        if(val1==null||val2==null)
            condition = false;
        return super.between(condition, column, val1, val2);
    }
    @Override
    public QueryWrapper<T> eq(boolean condition, String column, Object val) {
        if(val==null)
            condition = false;
        return super.eq(condition, column, val);
    }
}
screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -1,9 +1,7 @@
package com.moral.api.controller;
import com.moral.api.pojo.dto.account.AccountDeleteDTO;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountQueryDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.api.pojo.dto.account.*;
import com.moral.api.pojo.dto.organization.OrganizationDTO;
import com.moral.api.pojo.form.account.AccountDeleteForm;
import com.moral.api.pojo.form.account.AccountInsertForm;
import com.moral.api.pojo.form.account.AccountQueryForm;
@@ -29,68 +27,84 @@
    ManageAccountService accountService;
    @PostMapping("insert")
    public ResultMessage insert(@RequestBody AccountInsertForm accountInsertForm) {
        if (!accountInsertForm.valid())
    public ResultMessage insert(@RequestBody AccountInsertForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //判断参数是否符合条件
        AccountInsertDTO conditionDTO = accountInsertForm.paramValid();
        //判断参数是否有效
        AccountInsertDTO conditionDTO = form.paramValid();
        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
        }
        AccountInsertDTO accountInsertDTO = accountService.insertAccount(accountInsertForm);
        //处理插入业务
        AccountDTO dto = accountService.insertAccount(form);
        AccountInsertVO accountInsertVO = AccountInsertVO.convert(accountInsertDTO);
        //转换前端需要参数
        AccountInsertVO accountInsertVO = AccountInsertVO.convert(dto);
        return new ResultMessage(accountInsertDTO.getCode(), accountInsertDTO.getMsg(), accountInsertVO);
        return new ResultMessage(dto.getCode(), dto.getMsg(), accountInsertVO);
    }
    @GetMapping("query")
    public ResultMessage query(AccountQueryForm accountQueryForm) {
        if (!accountQueryForm.valid())
    @PostMapping("update")
    public ResultMessage update(@RequestBody AccountUpdateForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        AccountQueryDTO accountQueryDTO = accountService.queryAccount(accountQueryForm);
        //判断参数是否有效
        AccountUpdateDTO conditionDTO = form.paramValid();
        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
        }
        //处理更新业务
        AccountDTO dto = accountService.updateAccount(form);
        //转换前端需要的参数
        AccountUpdateVO vo = AccountUpdateVO.convert(dto);
        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
    }
    @PostMapping("delete")
    public ResultMessage delete(@RequestBody AccountDeleteForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理删除业务
        AccountDTO dto = accountService.deleteAccount(form);
        //转换前端需要的参数
        AccountDeleteVO vo = AccountDeleteVO.convert(dto);
        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
    }
    @GetMapping("query")
    public ResultMessage query(AccountQueryForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理查询业务
        AccountQueryDTO accountQueryDTO = accountService.queryAccount(form);
        //转换前端需要的参数
        AccountQueryVO accountQueryVO = AccountQueryVO.convert(accountQueryDTO);
        return new ResultMessage(accountQueryDTO.getCode(), accountQueryDTO.getMsg(), accountQueryVO);
    }
    @PostMapping("update")
    public ResultMessage update(@RequestBody AccountUpdateForm accountUpdateRequest) {
        if (!accountUpdateRequest.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //判断参数是否符合条件
        AccountUpdateDTO conditionDTO = accountUpdateRequest.paramValid();
        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
        }
        AccountUpdateDTO accountUpdateDTO = accountService.updateAccount(accountUpdateRequest);
        AccountUpdateVO accountUpdateVO = AccountUpdateVO.convert(accountUpdateDTO);
        return new ResultMessage(accountUpdateDTO.getCode(), accountUpdateDTO.getMsg(), accountUpdateVO);
    }
    @PostMapping("delete")
    public ResultMessage delete(@RequestBody AccountDeleteForm accountDeleteForm) {
        if (!accountDeleteForm.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        AccountDeleteDTO accountDeleteDTO = accountService.deleteAccount(accountDeleteForm);
        AccountDeleteVO accountDeleteVO = AccountDeleteVO.convert(accountDeleteDTO);
        return new ResultMessage(accountDeleteDTO.getCode(), accountDeleteDTO.getMsg(), accountDeleteVO);
    }
}
screen-manage/src/main/java/com/moral/api/controller/OrganizationController.java
@@ -1,5 +1,6 @@
package com.moral.api.controller;
import com.moral.api.aop.log.OperationLogAnno;
import com.moral.api.pojo.dto.organization.OrganizationDTO;
import com.moral.api.pojo.dto.organization.OrganizationQueryDTO;
import com.moral.api.pojo.form.organization.OrganizationDeleteForm;
@@ -8,14 +9,18 @@
import com.moral.api.pojo.form.organization.OrganizationUpdateForm;
import com.moral.api.pojo.vo.organization.OrganizationDeleteVO;
import com.moral.api.pojo.vo.organization.OrganizationInsertVO;
import com.moral.api.pojo.vo.organization.OrganizationQueryVO;
import com.moral.api.pojo.vo.organization.OrganizationUpdateVO;
import com.moral.api.service.OrganizationService;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
 * @ClassName OrganizationController
@@ -33,58 +38,61 @@
    OrganizationService organizationService;
    @PostMapping("insert")
    public ResultMessage insert(@RequestBody OrganizationInsertForm organizationInsertForm) {
        //判断参数是否缺少参数
        if (!organizationInsertForm.valid())
    @OperationLogAnno(module = Constants.ORGANIZATION_MODULE_NAME,type = Constants.INSERT_OPERATE_TYPE)
    public ResultMessage insert(@RequestBody OrganizationInsertForm form, HttpServletRequest request) {
        //请求参数存入request中
        request.setAttribute("parameters",form);
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //判断参数是否有效
        OrganizationDTO conditionDTO = organizationInsertForm.paramValid();
        OrganizationDTO conditionDTO = form.paramValid();
        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
        }
        //处理插入业务
        OrganizationDTO organizationDTO = organizationService.insertOrganization(organizationInsertForm);
        OrganizationDTO dto = organizationService.insertOrganization(form);
        //转换前端需要的参数
        OrganizationInsertVO organizationInsertVO = OrganizationInsertVO.convert(organizationDTO);
        OrganizationInsertVO vo = OrganizationInsertVO.convert(dto);
        return new ResultMessage(organizationDTO.getCode(),organizationDTO.getMsg(),organizationInsertVO);
        return new ResultMessage(dto.getCode(),dto.getMsg(),vo);
    }
    @PostMapping("update")
    public ResultMessage update(@RequestBody OrganizationUpdateForm organizationUpdateForm){
        //判断参数是否缺少参数
        if (!organizationUpdateForm.valid())
    public ResultMessage update(@RequestBody OrganizationUpdateForm form){
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //判断参数是否有效
        OrganizationDTO conditionDTO = organizationUpdateForm.paramValid();
        OrganizationDTO conditionDTO = form.paramValid();
        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
        }
        //处理更新业务
        OrganizationDTO organizationDTO = organizationService.updateOrganization(organizationUpdateForm);
        OrganizationDTO dto = organizationService.updateOrganization(form);
        //转换前端需要的参数
        OrganizationUpdateVO organizationUpdateVO = OrganizationUpdateVO.convert(organizationDTO);
        OrganizationUpdateVO vo = OrganizationUpdateVO.convert(dto);
        return new ResultMessage(organizationDTO.getCode(),organizationDTO.getMsg(),organizationUpdateVO);
        return new ResultMessage(dto.getCode(),dto.getMsg(),vo);
    }
    @PostMapping("delete")
    public ResultMessage delete(@RequestBody OrganizationDeleteForm organizationDeleteForm){
        //判断参数是否缺少参数
        if (!organizationDeleteForm.valid())
    public ResultMessage delete(@RequestBody OrganizationDeleteForm form){
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理删除业务
        OrganizationDTO dto = organizationService.deleteOrganization(organizationDeleteForm);
        OrganizationDTO dto = organizationService.deleteOrganization(form);
        //转换前端需要的参数
        OrganizationDeleteVO vo = OrganizationDeleteVO.convert(dto);
@@ -93,24 +101,19 @@
    }
    @GetMapping("query")
    public ResultMessage query(OrganizationQueryForm organizationQueryForm){
    public ResultMessage query(OrganizationQueryForm form){
        //判断是否缺少参数
        if (!organizationQueryForm.valid())
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //判断参数是否有效
        OrganizationDTO conditionDTO = organizationQueryForm.paramValid();
        if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
            return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null);
        }
        //处理查询业务
        OrganizationQueryDTO organizationQueryDTO = organizationService.queryOrganization(organizationQueryForm);
        OrganizationQueryDTO dto = organizationService.queryOrganization(form);
        //转换前端需要参数
        OrganizationQueryVO vo = OrganizationQueryVO.convert(dto);
        return null;
        return new ResultMessage(dto.getCode(),dto.getMsg(),vo);
    }
}
screen-manage/src/main/java/com/moral/api/entity/ManageLog.java
@@ -14,7 +14,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-03-31
 */
@Data
@EqualsAndHashCode(callSuper = false)
@@ -29,19 +29,24 @@
    private Integer id;
    /**
     * 操作类型
     */
    private String type;
    /**
     * 操作模块
     */
    private String module;
    /**
     * 操作描述
     */
    private String content;
    /**
     * 组织Id
     */
    private Integer organizationId;
    /**
     * 操作人员id
     */
    private Integer operateId;
    private Integer accountId;
    /**
     * Ip地址
screen-manage/src/main/java/com/moral/api/mapper/ManageLogMapper.java
@@ -9,7 +9,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-03-31
 */
public interface ManageLogMapper extends BaseMapper<ManageLog> {
screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationDTO.java
@@ -35,13 +35,6 @@
    * 父组织
    * */
    private Organization parentOrganization;
    /*
    * 子组织
    * */
    private List<Organization> childOrganizations;
    /*
    * 管理员
    * */
    private User admin;
}
screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountInsertForm.java
@@ -1,8 +1,10 @@
package com.moral.api.pojo.form.account;
import com.moral.api.entity.ManageAccount;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.RegexUtils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
@@ -19,7 +21,7 @@
 * @Version TODO
 **/
@Data
public class AccountInsertForm implements Serializable{
public class AccountInsertForm {
    private String account;
@@ -90,4 +92,15 @@
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    public ManageAccount formConvertEntity(){
        ManageAccount manageAccount = new ManageAccount();
        manageAccount.setAccount(account);
        manageAccount.setPassword(MD5Utils.saltMD5(AESUtils.decrypt(password)));
        manageAccount.setUserName(userName);
        manageAccount.setEmail(email);
        manageAccount.setMobile(mobile);
        manageAccount.setWechat(wechat);
        return manageAccount;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountQueryForm.java
@@ -1,9 +1,16 @@
package com.moral.api.pojo.form.account;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.moral.api.entity.ManageAccount;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.RegexUtils;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.ObjectUtils;
import java.io.Serializable;
import java.util.Date;
/**
 * @ClassName AccountQueryRequest
@@ -13,15 +20,11 @@
 * @Version TODO
 **/
@Data
public class AccountQueryForm implements Serializable {
public class AccountQueryForm  {
    private Integer page;
    private Integer size;
    private Integer accountId;
    private String account;
    private String userName;
@@ -32,6 +35,14 @@
    private String wechat;
    private String isDelete;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date createStartTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date createEndTime;
    private String order;
@@ -46,4 +57,5 @@
            return false;
        return true;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java
@@ -1,9 +1,11 @@
package com.moral.api.pojo.form.account;
import com.moral.api.entity.ManageAccount;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.RegexUtils;
import lombok.Data;
import org.springframework.util.ObjectUtils;
@@ -80,4 +82,15 @@
        return dto;
    }
    public ManageAccount formConvertEntity() {
        ManageAccount manageAccount = new ManageAccount();
        manageAccount.setId(accountId);
        if (!ObjectUtils.isEmpty(password))
            manageAccount.setPassword(MD5Utils.saltMD5(AESUtils.decrypt(password)));
        manageAccount.setUserName(userName);
        manageAccount.setEmail(email);
        manageAccount.setMobile(mobile);
        manageAccount.setWechat(wechat);
        return manageAccount;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/form/login/LoginForm.java
@@ -13,7 +13,7 @@
 * @Version TODO
 **/
@Data
public class LoginForm implements Serializable {
public class LoginForm  {
    private String account;
screen-manage/src/main/java/com/moral/api/pojo/form/login/LogoutForm.java
@@ -13,7 +13,7 @@
 * @Version TODO
 **/
@Data
public class LogoutForm implements Serializable {
public class LogoutForm  {
    private String accountId;
screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationInsertForm.java
@@ -20,7 +20,7 @@
 * @Version TODO
 **/
@Data
public class OrganizationInsertForm implements Serializable {
public class OrganizationInsertForm   {
    private Integer parentId;
screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationQueryForm.java
@@ -1,14 +1,16 @@
package com.moral.api.pojo.form.organization;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.moral.api.entity.Organization;
import com.moral.api.pojo.dto.organization.OrganizationDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.DateUtils;
import com.moral.util.RegexUtils;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.ObjectUtils;
import java.util.Date;
/**
 * @ClassName OrganizationQueryForm
@@ -46,6 +48,22 @@
    private String isDelete;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date createStartTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date createEndTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date expireStartTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date expireEndTime;
    private String order;
    private String orderType;
@@ -59,43 +77,5 @@
        return true;
    }
    public OrganizationDTO paramValid() {
        OrganizationDTO dto = new OrganizationDTO();
        //判断电话号是否符合条件
        if (!ObjectUtils.isEmpty(phone)) {
            if (!RegexUtils.checkMobile(phone) && !RegexUtils.checkPhone(phone)) {
                dto.setCode(ResponseCodeEnum.PHONE_INVALID.getCode());
                dto.setMsg(ResponseCodeEnum.PHONE_INVALID.getMsg());
                return dto;
            }
        }
        //判断邮箱是否符合条件
        if (!ObjectUtils.isEmpty(email)) {
            if (!RegexUtils.checkEmail(email)) {
                dto.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode());
                dto.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg());
                return dto;
            }
        }
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    public Organization formConvertEntity() {
        Organization organization = new Organization();
        organization.setParentId(parentId);
        organization.setName(name);
        organization.setProvinceCode(provinceCode);
        organization.setCityCode(cityCode);
        organization.setAreaCode(areaCode);
        organization.setTownCode(townCode);
        organization.setVillageCode(villageCode);
        organization.setPhone(phone);
        organization.setEmail(email);
        organization.setWechat(wechat);
        organization.setIsDelete(isDelete);
        return organization;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountDeleteVO.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.ManageAccount;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.api.pojo.dto.account.AccountDeleteDTO;
import com.moral.constant.ResponseCodeEnum;
import lombok.Data;
@@ -19,8 +20,7 @@
public class AccountDeleteVO extends AccountVO {
    public static AccountDeleteVO convert(AccountDeleteDTO dto) {
    public static AccountDeleteVO convert(AccountDTO dto) {
        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
            return null;
        AccountDeleteVO vo = new AccountDeleteVO();
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountInsertVO.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.ManageRole;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.constant.ResponseCodeEnum;
import lombok.Data;
@@ -29,7 +30,7 @@
     * @Date: 2021/3/15
     */
    public static AccountInsertVO convert(AccountInsertDTO dto) {
    public static AccountInsertVO convert(AccountDTO dto) {
        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
            return null;
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountQueryVO.java
@@ -1,13 +1,17 @@
package com.moral.api.pojo.vo.account;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.ManageAccount;
import com.moral.api.entity.ManageRole;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.api.pojo.dto.account.AccountQueryDTO;
import com.moral.constant.ResponseCodeEnum;
import lombok.Data;
import org.springframework.util.ObjectUtils;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -43,7 +47,7 @@
        List<AccountDTO> accountDTOs = dto.getAccountDTOS();
        if (!ObjectUtils.isEmpty(accountDTOs)) {
            for (AccountDTO accountDTO : accountDTOs) {
                AccountVO vo = AccountVO.convert(accountDTO);
                AccountVO vo = convertToQueryPage(accountDTO);
                accountVOs.add(vo);
            }
        }
@@ -55,4 +59,31 @@
        vo.setSize(size);
        return vo;
    }
    public static AccountVO convertToQueryPage(AccountDTO dto) {
        if (dto.getAccount() == null)
            return null;
        AccountInsertVO vo = new AccountInsertVO();
        ManageAccount account = dto.getAccount();
        List<ManageRole> roles = dto.getRoles();
        List<String> roleNames = new ArrayList<>();
        if (!ObjectUtils.isEmpty(roles)) {
            roles.forEach(role -> roleNames.add(role.getName()));
        }
        vo.setId(account.getId());
        vo.setUserName(account.getUserName());
        vo.setEmail(account.getEmail());
        vo.setMobile(account.getMobile());
        vo.setWechat(account.getWechat());
        vo.setRoleNames(roleNames);
        //Date转换String
        Date createTime = account.getCreateTime();
        Date updateTime = account.getUpdateTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String createTimeStr = sdf.format(createTime);
        String updateTimeStr = sdf.format(updateTime);
        vo.setCreateTime(createTimeStr);
        vo.setUpdateTime(updateTimeStr);
        return vo;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountUpdateVO.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.ManageRole;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.constant.ResponseCodeEnum;
@@ -23,7 +24,7 @@
public class AccountUpdateVO extends AccountVO {
    public static AccountUpdateVO convert(AccountUpdateDTO dto) {
    public static AccountUpdateVO convert(AccountDTO dto) {
        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
            return null;
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountVO.java
@@ -39,30 +39,5 @@
    private String updateTime;
    public static AccountVO convert(AccountDTO dto) {
        if (dto.getAccount() == null)
            return null;
        AccountVO vo = new AccountVO();
        ManageAccount account = dto.getAccount();
        List<ManageRole> roles = dto.getRoles();
        List<String> roleNames = new ArrayList<>();
        if (!ObjectUtils.isEmpty(roles)) {
            roles.forEach(role -> roleNames.add(role.getName()));
        }
        vo.setId(account.getId());
        vo.setUserName(account.getUserName());
        vo.setEmail(account.getEmail());
        vo.setMobile(account.getMobile());
        vo.setWechat(account.getWechat());
        vo.setRoleNames(roleNames);
        //Date转换String
        Date createTime = account.getCreateTime();
        Date updateTime = account.getUpdateTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String createTimeStr = sdf.format(createTime);
        String updateTimeStr = sdf.format(updateTime);
        vo.setCreateTime(createTimeStr);
        vo.setUpdateTime(updateTimeStr);
        return vo;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationDeleteVO.java
@@ -19,6 +19,7 @@
            return null;
        OrganizationDeleteVO vo = new OrganizationDeleteVO();
        Organization organization = dto.getOrganization();
        vo.setName(organization.getName());
        vo.setId(organization.getId());
        return vo;
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationInsertVO.java
@@ -18,6 +18,7 @@
            return null;
        OrganizationInsertVO vo = new OrganizationInsertVO();
        Organization organization = dto.getOrganization();
        vo.setId(organization.getId());
        vo.setName(organization.getName());
        return vo;
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryVO.java
New file
@@ -0,0 +1,87 @@
package com.moral.api.pojo.vo.organization;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.Organization;
import com.moral.api.pojo.dto.organization.OrganizationDTO;
import com.moral.api.pojo.dto.organization.OrganizationQueryDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.DateUtils;
import lombok.Data;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @ClassName OrganizationQueryVO
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/3/26 13:52
 * @Version TODO
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class OrganizationQueryVO {
    private long pages;
    private long total;
    private long current;
    private long size;
    private List<OrganizationVO> organizations;
    public static OrganizationQueryVO convert(OrganizationQueryDTO dto) {
        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
            return null;
        OrganizationQueryVO vo = new OrganizationQueryVO();
        long page = dto.getPage();
        long total = dto.getTotal();
        long current = dto.getCurrent();
        long size = dto.getSize();
        List<OrganizationDTO> organizationDTOS = dto.getOrganizationDTOS();
        List<OrganizationVO> organizationVOS = new ArrayList<>();
        for (OrganizationDTO organizationDTO : organizationDTOS) {
            OrganizationVO organizationVO = convertToQueryPage(organizationDTO);
            organizationVOS.add(organizationVO);
        }
        vo.setCurrent(current);
        vo.setOrganizations(organizationVOS);
        vo.setPages(page);
        vo.setSize(size);
        vo.setTotal(total);
        return vo;
    }
    /**
     * @Description: 转换查询界面需要展现的参数
     * @Param: [dto]
     * @return: com.moral.api.pojo.vo.organization.OrganizationVO
     * @Author: 陈凯裕
     * @Date: 2021/3/26
     */
    private static OrganizationVO convertToQueryPage(OrganizationDTO dto) {
        OrganizationVO vo = new OrganizationVO();
        Organization organization = dto.getOrganization();
        Organization parentOrganization = dto.getParentOrganization();
        Date createTime = organization.getCreateTime();
        Date expireTime = organization.getExpireTime();
        String createTimeStr = DateUtils.dateToDateString(createTime, "yyyy-MM-dd");
        String exipreTimeStr = DateUtils.dateToDateString(expireTime, "yyyy-MM-dd");
        vo.setName(organization.getName());
        if (!ObjectUtils.isEmpty(parentOrganization))
            vo.setParentName(parentOrganization.getName());
        vo.setPhone(organization.getPhone());
        vo.setEmail(organization.getEmail());
        vo.setWechat(organization.getWechat());
        vo.setAddress(organization.getAddress());
        vo.setCreateTime(createTimeStr);
        vo.setExpireTime(exipreTimeStr);
        return vo;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationUpdateVO.java
@@ -19,6 +19,7 @@
            return null;
        OrganizationUpdateVO vo = new OrganizationUpdateVO();
        Organization organization = dto.getOrganization();
        vo.setId(organization.getId());
        vo.setName(organization.getName());
        return vo;
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationVO.java
@@ -24,6 +24,8 @@
    private String name;
    private String parentName;
    private Integer provinceCode;
    private Integer cityCode;
screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
@@ -45,7 +45,7 @@
           * @Author: 陈凯裕
           * @Date: 2021/3/13
           */
    AccountInsertDTO insertAccount(AccountInsertForm accountInsertForm);
    AccountDTO insertAccount(AccountInsertForm accountInsertForm);
    /**
    * @Description: 查询账号
@@ -63,7 +63,7 @@
            * @Author: 陈凯裕
            * @Date: 2021/3/15
            */
    AccountUpdateDTO updateAccount(AccountUpdateForm accountUpdateForm);
    AccountDTO updateAccount(AccountUpdateForm accountUpdateForm);
    /**
    * @Description: 删除账号
@@ -72,5 +72,5 @@
            * @Author: 陈凯裕
            * @Date: 2021/3/16
            */
    AccountDeleteDTO deleteAccount(AccountDeleteForm accountDeleteForm);
    AccountDTO deleteAccount(AccountDeleteForm accountDeleteForm);
}
screen-manage/src/main/java/com/moral/api/service/ManageLogService.java
@@ -9,7 +9,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-03-31
 */
public interface ManageLogService extends IService<ManageLog> {
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -22,11 +22,10 @@
import com.moral.api.pojo.form.login.LogoutForm;
import com.moral.api.service.ManageAccountService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.config.mybatis.wrapper.NullFilterWrapper;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.TokenUtils;
import com.moral.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -57,11 +56,11 @@
    /**
     * @Description: 登陆
     * @Param: [parameters]
     * @return: java.util.Map<java.lang.String                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               java.lang.Object>
    * @Description: 登陆接口
            * @Param: [loginForm]
            * @return: com.moral.api.pojo.dto.login.LoginDTO
     * @Author: 陈凯裕
     * @Date: 2021/3/11
            * @Date: 2021/3/30
     */
    @Override
    public LoginDTO login(LoginForm loginForm) {
@@ -129,7 +128,7 @@
    /**
     * @Description: 注销
     * @Param: [parameters]
     * @return: java.util.Map<java.lang.String                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               java.lang.Object>
     * @return:
     * @Author: 陈凯裕
     * @Date: 2021/3/11
     */
@@ -150,40 +149,28 @@
     */
    @Override
    @Transactional
    public AccountInsertDTO insertAccount(AccountInsertForm accountInsertForm) {
        AccountInsertDTO accountInsertDTO = new AccountInsertDTO();
    public AccountDTO insertAccount(AccountInsertForm accountInsertForm) {
        AccountDTO accountDTO = new AccountDTO();
        //取参
        String account = accountInsertForm.getAccount();
        String AESPassword = accountInsertForm.getPassword();
        String password = MD5Utils.saltMD5(AESUtils.decrypt(AESPassword));
        String userName = accountInsertForm.getUserName();
        String email = accountInsertForm.getEmail();
        String mobile = accountInsertForm.getMobile();
        String wechat = accountInsertForm.getWechat();
        ManageAccount manageAccount = accountInsertForm.formConvertEntity();
        List<String> roleIdsStr = accountInsertForm.getRoleIds();
        /*判断账号是否存在*/
        ManageAccount existAccount = new ManageAccount();
        existAccount.setAccount(account);
        existAccount.setAccount(manageAccount.getAccount());
        existAccount.setIsDelete(Constants.NOT_DELETE);
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
        wrapper.setEntity(existAccount);
        List<ManageAccount> exitAccounts = manageAccountMapper.selectList(wrapper);
        if (!ObjectUtils.isEmpty(exitAccounts)) {
            accountInsertDTO.setCode(ResponseCodeEnum.ACCOUNT_EXIST.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
            return accountInsertDTO;
        ManageAccount exitAccountResult = manageAccountMapper.selectOne(wrapper);
        if (!ObjectUtils.isEmpty(exitAccountResult)) {
            accountDTO.setCode(ResponseCodeEnum.ACCOUNT_EXIST.getCode());
            accountDTO.setMsg(ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
            return accountDTO;
        }
        //封装account
        ManageAccount manageAccount = new ManageAccount();
        manageAccount.setAccount(account);
        manageAccount.setPassword(password);
        manageAccount.setUserName(userName);
        manageAccount.setEmail(email);
        manageAccount.setMobile(mobile);
        manageAccount.setWechat(wechat);
        //插入
        manageAccountMapper.insert(manageAccount);
        //封装account_role
        /*String to Integer*/
        List<ManageRole> roles = null;
@@ -204,11 +191,11 @@
            roles = manageRoleMapper.selectBatchIds(roleIds);
        }
        //封装返回结果
        accountInsertDTO.setAccount(manageAccount);
        accountInsertDTO.setRoles(roles);
        accountInsertDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
        accountInsertDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return accountInsertDTO;
        accountDTO.setAccount(manageAccount);
        accountDTO.setRoles(roles);
        accountDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
        accountDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return accountDTO;
    }
    /**
@@ -221,11 +208,10 @@
    @Override
    public AccountQueryDTO queryAccount(AccountQueryForm accountQueryForm) {
        AccountQueryDTO accountQueryDTO = new AccountQueryDTO();
        //取参
        Integer pageCount = accountQueryForm.getPage();
        Integer size = accountQueryForm.getSize();
        Integer accountId = accountQueryForm.getAccountId();
        String account = accountQueryForm.getAccount();
        String userName = accountQueryForm.getUserName();
        String email = accountQueryForm.getEmail();
        String mobile = accountQueryForm.getMobile();
@@ -233,49 +219,34 @@
        String isDelete = accountQueryForm.getIsDelete();
        String order = accountQueryForm.getOrder();
        String orderType = accountQueryForm.getOrderType();
        Date createStartTime = accountQueryForm.getCreateStartTime();
        Date createEndTime = DateUtils.getDateOfDay(accountQueryForm.getCreateEndTime(), 1);
        //查询用户
        //组装查询条件
        Page<ManageAccount> page = new Page<>(pageCount, size);
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper();
        if (!ObjectUtils.isEmpty(accountId)) {
            wrapper.eq("id", accountId);
        }
        NullFilterWrapper<ManageAccount> wrapper = new NullFilterWrapper<>();
        if (!ObjectUtils.isEmpty(userName)) {
            wrapper.like("user_name", userName);
        }
        if (!ObjectUtils.isEmpty(account)) {
            wrapper.like("account", account);
        }
        if (!ObjectUtils.isEmpty(email)) {
            wrapper.like("email", email);
        }
        if (!ObjectUtils.isEmpty(mobile)) {
            wrapper.like("mobile", mobile);
        }
        if (!ObjectUtils.isEmpty(wechat)) {
            wrapper.like("wechat", wechat);
        }
        wrapper.between("create_time", createStartTime, createEndTime);
        if (!ObjectUtils.isEmpty(order)) {
            if (!ObjectUtils.isEmpty(orderType)) {
        if (!ObjectUtils.isEmpty(order) && !ObjectUtils.isEmpty(orderType)) { //排序顺序条件构造
                if (orderType.equals(Constants.ORDER_ASC))
                    wrapper.orderByAsc(order);
                wrapper.orderByAsc(ConvertUtils.toLine(order));
                else
                    wrapper.orderByDesc(order);
            }
                wrapper.orderByDesc(ConvertUtils.toLine(order));
        }
        if (!ObjectUtils.isEmpty(isDelete))
        if (!ObjectUtils.isEmpty(isDelete))//逻辑删除条件构造
            wrapper.eq("is_delete", isDelete);
        else
            wrapper.eq("is_delete", Constants.NOT_DELETE);
        //查询结果
        Page resultPage = manageAccountMapper.selectPage(page, wrapper);
        //查询用户对应的角色
        List<ManageAccount> accounts = resultPage.getRecords();
        List<AccountDTO> accountDTOS = new ArrayList<>();
@@ -288,6 +259,7 @@
                accountDTOS.add(accountDTO);
            }
        }
        //封装返回结果
        accountQueryDTO.setAccountDTOS(accountDTOS);
        accountQueryDTO.setCurrent(resultPage.getCurrent());
@@ -309,64 +281,58 @@
     */
    @Override
    @Transactional
    public AccountUpdateDTO updateAccount(AccountUpdateForm accountUpdateForm) {
        AccountUpdateDTO accountUpdateDTO = new AccountUpdateDTO();
    public AccountDTO updateAccount(AccountUpdateForm accountUpdateForm) {
        AccountDTO accountDTO = new AccountDTO();
        //取参
        Integer accountId = accountUpdateForm.getAccountId();
        String password = accountUpdateForm.getPassword();
        String email = accountUpdateForm.getEmail();
        String mobile = accountUpdateForm.getMobile();
        String wechat = accountUpdateForm.getWechat();
        String userName = accountUpdateForm.getUserName();
        ManageAccount manageAccount = accountUpdateForm.formConvertEntity();
        List<Integer> roleIds = accountUpdateForm.getRoleIds();
        //判断要更新的用户是否存在
        QueryWrapper<ManageAccount> exitWrapper = new QueryWrapper<>();
        ManageAccount exitManageAccount = new ManageAccount();
        exitManageAccount.setId(accountId);
        exitManageAccount.setId(manageAccount.getId());
        exitManageAccount.setIsDelete(Constants.NOT_DELETE);
        exitWrapper.setEntity(exitManageAccount);
        List<ManageAccount> manageAccounts = manageAccountMapper.selectList(exitWrapper);
        if (ObjectUtils.isEmpty(manageAccounts)) {
            accountUpdateDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
            accountUpdateDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
            return accountUpdateDTO;
            accountDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
            accountDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
            return accountDTO;
        }
        //转换password
        if(!ObjectUtils.isEmpty(password)){
            password = MD5Utils.saltMD5(AESUtils.decrypt(password));
        }
        //更新ManageAccount表
        ManageAccount manageAccount = new ManageAccount();
        manageAccount.setPassword(password);
        manageAccount.setEmail(email);
        manageAccount.setMobile(mobile);
        manageAccount.setWechat(wechat);
        manageAccount.setUserName(userName);
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
        wrapper.eq("id", accountId);
        manageAccountMapper.update(manageAccount, wrapper);
        manageAccountMapper.updateById(manageAccount);
        //如果角色有变动,则更新ManageAccountRole表
        /*删除该用户的所有角色*/
        if (!ObjectUtils.isEmpty(roleIds)) {
            QueryWrapper<ManageAccountRole> deleteWrapper = new QueryWrapper<>();
            deleteWrapper.eq("account_id", accountId);
            manageAccountRoleMapper.delete(deleteWrapper);
        /*
         * 如果roleIds为null,则是该账号角色没有发生改变
         * 如果roleIds为空,则是该账号所有的角色都被移除
         * 如果roleIds有元素,则是该账号的角色有更新
         * */
        List<ManageRole> roles = null;
        if (roleIds != null) {
            UpdateWrapper<ManageAccountRole> deleteWrapper = new UpdateWrapper<>();
            deleteWrapper.eq("account_id", manageAccount.getId()).set("is_delete", Constants.DELETE);
            manageAccountRoleMapper.update(null, deleteWrapper);
            /*重新添加角色*/
            for (Integer roleId : roleIds) {
                ManageAccountRole manageAccountRole = new ManageAccountRole();
                manageAccountRole.setAccountId(accountId);
                manageAccountRole.setAccountId(manageAccount.getId());
                manageAccountRole.setRoleId(roleId);
                manageAccountRoleMapper.insert(manageAccountRole);
            }
            //获取用户所有角色
            List<ManageRole> manageRoles = manageRoleMapper.selectBatchIds(roleIds);
            accountUpdateDTO.setRoles(manageRoles);
            if (roleIds.size() != 0)
                roles = manageRoleMapper.selectBatchIds(roleIds);
        } else {
            roles = manageRoleMapper.getManageRoleByAccountId(manageAccount.getId());
        }
        accountDTO.setRoles(roles);
        //封装返回结果
        accountUpdateDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
        accountUpdateDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        accountUpdateDTO.setAccount(manageAccountMapper.selectById(accountId));
        return accountUpdateDTO;
        accountDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
        accountDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        accountDTO.setAccount(manageAccountMapper.selectById(manageAccount.getId()));
        return accountDTO;
    }
@@ -379,8 +345,8 @@
     */
    @Override
    @Transactional
    public AccountDeleteDTO deleteAccount(AccountDeleteForm accountDeleteForm) {
        AccountDeleteDTO accountDeleteDTO = new AccountDeleteDTO();
    public AccountDTO deleteAccount(AccountDeleteForm accountDeleteForm) {
        AccountDTO accountDTO = new AccountDTO();
        //取参
        Integer accountId = accountDeleteForm.getAccountId();
        //查询是否存在
@@ -391,24 +357,24 @@
        queryWrapper.setEntity(manageAccount);
        ManageAccount existManageAccount = manageAccountMapper.selectOne(queryWrapper);
        if (ObjectUtils.isEmpty(existManageAccount)) {
            accountDeleteDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
            accountDeleteDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
            return accountDeleteDTO;
            accountDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
            accountDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
            return accountDTO;
        }
        //逻辑删除账号
        existManageAccount.setIsDelete(Constants.DELETE);
        UpdateWrapper<ManageAccount> deleteAccountWrapper = new UpdateWrapper<>();
        deleteAccountWrapper.set("is_delete", Constants.DELETE).eq("id", manageAccount.getId());
        deleteAccountWrapper.eq("id", accountId);
        deleteAccountWrapper.set("is_delete", Constants.DELETE);
        manageAccountMapper.update(null, deleteAccountWrapper);
        //逻辑删除账号相关角色
        UpdateWrapper<ManageAccountRole> deleteManageAccountRoleWrapper = new UpdateWrapper<>();
        deleteManageAccountRoleWrapper.set("is_delete", Constants.DELETE).eq("account_id", manageAccount.getId());
        manageAccountRoleMapper.update(null, deleteManageAccountRoleWrapper);
        //封装返回结果
        accountDeleteDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
        accountDeleteDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        accountDeleteDTO.setAccount(existManageAccount);
        return accountDeleteDTO;
        accountDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
        accountDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        accountDTO.setAccount(existManageAccount);
        return accountDTO;
    }
screen-manage/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java
@@ -12,7 +12,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-03-31
 */
@Service
public class ManageLogServiceImpl extends ServiceImpl<ManageLogMapper, ManageLog> implements ManageLogService {
screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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.mapper.OrganizationMapper;
import com.moral.api.pojo.dto.organization.OrganizationDTO;
@@ -15,11 +16,15 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
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 org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -55,8 +60,8 @@
        existOrganization.setName(organization.getName());
        existOrganization.setIsDelete(Constants.NOT_DELETE);
        queryWrapper.setEntity(existOrganization);
        List<Organization> existOrganizations = organizationMapper.selectList(queryWrapper);
        if (!ObjectUtils.isEmpty(existOrganizations)) {
        Organization existOrganizationResult = organizationMapper.selectOne(queryWrapper);
        if (!ObjectUtils.isEmpty(existOrganizationResult)) {
            organizationDTO.setCode(ResponseCodeEnum.ORGANIZATION_EXIST.getCode());
            organizationDTO.setMsg(ResponseCodeEnum.ORGANIZATION_EXIST.getMsg());
            return organizationDTO;
@@ -98,6 +103,7 @@
        OrganizationDTO organizationDTO = new OrganizationDTO();
        //form转entity
        Organization organization = organizationUpdateForm.formConvertEntity();
        //查询组织是否存在
        QueryWrapper<Organization> existWrapper = new QueryWrapper<>();
        Organization existOrganization = new Organization();
@@ -110,6 +116,7 @@
            organizationDTO.setMsg(ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getMsg());
            return organizationDTO;
        }
        //如果更改了父组织,查询父组织是否存在
        Integer parentId = organization.getParentId();
        Organization parentOrganization = new Organization();
@@ -125,8 +132,10 @@
                return organizationDTO;
            }
        }
        //更新组织
        organizationMapper.updateById(organization);
        //获取更新后的组合
        organization = organizationMapper.selectById(organization.getId());
@@ -198,16 +207,80 @@
    public OrganizationQueryDTO queryOrganization(OrganizationQueryForm organizationQueryForm) {
        OrganizationQueryDTO dto = new OrganizationQueryDTO();
        //取参
        Organization organization = organizationQueryForm.formConvertEntity();
        Integer pageCount = organizationQueryForm.getPage();
        Integer size = organizationQueryForm.getSize();
        Integer parentId = organizationQueryForm.getParentId();
        String name = organizationQueryForm.getName();
        Integer provinceCode = organizationQueryForm.getProvinceCode();
        Integer cityCode = organizationQueryForm.getCityCode();
        Integer areaCode = organizationQueryForm.getAreaCode();
        Long townCode = organizationQueryForm.getTownCode();
        Long villageCode = organizationQueryForm.getVillageCode();
        String phone = organizationQueryForm.getPhone();
        String email = organizationQueryForm.getEmail();
        String wechat = organizationQueryForm.getWechat();
        String isDelete = organizationQueryForm.getIsDelete();
        String order = organizationQueryForm.getOrder();
        String orderType = organizationQueryForm.getOrderType();
        Date createStartTime = organizationQueryForm.getCreateStartTime();
        Date createEndTime = DateUtils.getDateOfDay(organizationQueryForm.getCreateEndTime(), 1);
        Date expireStartTime = organizationQueryForm.getExpireStartTime();
        Date expireEndTime = DateUtils.getDateOfDay(organizationQueryForm.getExpireEndTime(), 1);
        //查询用户
        //查询条件
        Page<Organization> page = new Page<>(pageCount,size);
        QueryWrapper<Organization> queryWrapper = new QueryWrapper<>();
        return null;
        NullFilterWrapper<Organization> queryWrapper = new NullFilterWrapper<>();
        queryWrapper.eq("parent_id", parentId);
        queryWrapper.like("name", name);
        queryWrapper.eq("province_code", provinceCode);
        queryWrapper.eq("city_code", cityCode);
        queryWrapper.eq("area_code", areaCode);
        queryWrapper.eq("town_code", townCode);
        queryWrapper.eq("village_code", villageCode);
        queryWrapper.like("phone", phone);
        queryWrapper.like("email", email);
        queryWrapper.like("wechat", wechat);
        queryWrapper.between("create_time", createStartTime, createEndTime);
        queryWrapper.between("expire_time", expireStartTime, expireEndTime);
        if (!ObjectUtils.isEmpty(isDelete)) {
            queryWrapper.eq("is_delete", isDelete);
        } else {
            queryWrapper.eq("is_delete", Constants.NOT_DELETE);
        }
        //排序顺序
        if (!ObjectUtils.isEmpty(order)) {
            if (!ObjectUtils.isEmpty(orderType)) {
                if (orderType.equals(Constants.ORDER_ASC))
                    queryWrapper.orderByAsc(ConvertUtils.toLine(order));
                else
                    queryWrapper.orderByDesc(ConvertUtils.toLine(order));
            }
        }
        //查询结果
        Page<Organization> resultPage = organizationMapper.selectPage(page, queryWrapper);
        List<Organization> organizations = resultPage.getRecords();
        List<OrganizationDTO> organizationDTOS = new ArrayList<>();
        //查找所有组织的父组织
        for (Organization child : organizations) {
            OrganizationDTO resultDto = new OrganizationDTO();
            Organization parent = organizationMapper.selectById(child.getParentId());
            resultDto.setOrganization(child);
            resultDto.setParentOrganization(parent);
            organizationDTOS.add(resultDto);
        }
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        dto.setOrganizationDTOS(organizationDTOS);
        dto.setCurrent(page.getCurrent());
        dto.setPage(page.getPages());
        dto.setSize(page.getSize());
        dto.setTotal(page.getTotal());
        return dto;
    }
screen-manage/src/main/resources/application-dev.yml
@@ -129,6 +129,7 @@
      - /organization/insert
      - /organization/update
      - /organization/delete
      - /organization/query
      - /role/getAllManageRole
      - /role/getManageRoleByNameFuzzy
screen-manage/src/main/resources/mapper/ManageLogMapper.xml
@@ -5,9 +5,10 @@
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="com.moral.api.entity.ManageLog">
                    <id column="id" property="id" />
                    <result column="type" property="type" />
                    <result column="module" property="module" />
                    <result column="content" property="content" />
                    <result column="organization_id" property="organizationId" />
                    <result column="operate_id" property="operateId" />
                    <result column="account_id" property="accountId" />
                    <result column="ip" property="ip" />
                    <result column="create_time" property="createTime" />
        </resultMap>