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>