Merge branch 'master' into Bulbasaur
This commit is contained in:
		
						commit
						86360cf5f8
					
				@ -29,9 +29,12 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
 | 
				
			|||||||
            this.setFieldValByName("deleteFlag", false, metaObject);
 | 
					            this.setFieldValByName("deleteFlag", false, metaObject);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (metaObject.hasGetter("id")) {
 | 
					        if (metaObject.hasGetter("id")) {
 | 
				
			||||||
 | 
					            //如果已经配置id,则不再写入
 | 
				
			||||||
 | 
					            if (metaObject.getValue("id") == null) {
 | 
				
			||||||
                this.setFieldValByName("id", String.valueOf(SnowFlake.getId()), metaObject);
 | 
					                this.setFieldValByName("id", String.valueOf(SnowFlake.getId()), metaObject);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateFill(MetaObject metaObject) {
 | 
					    public void updateFill(MetaObject metaObject) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,32 +1,31 @@
 | 
				
			|||||||
package cn.lili.base.mybatisplus;
 | 
					package cn.lili.base.mybatisplus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.baomidou.mybatisplus.core.parser.ISqlParser;
 | 
					 | 
				
			||||||
import com.baomidou.mybatisplus.extension.parsers.BlockAttackSqlParser;
 | 
					 | 
				
			||||||
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 | 
					import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 | 
				
			||||||
import org.mybatis.spring.annotation.MapperScan;
 | 
					import org.mybatis.spring.annotation.MapperScan;
 | 
				
			||||||
import org.springframework.context.annotation.Bean;
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
import org.springframework.context.annotation.Configuration;
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author Chopper
 | 
					 * @author Chopper
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@Configuration
 | 
					@Configuration
 | 
				
			||||||
@MapperScan({"cn.lili.modules.*.*.mapper","cn.lili.modules.*.mapper"})
 | 
					@MapperScan({"cn.lili.modules.*.*.mapper", "cn.lili.modules.*.mapper"})
 | 
				
			||||||
public class MybatisPlusConfig {
 | 
					public class MybatisPlusConfig {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 分页插件,自动识别数据库类型
 | 
					     * 分页插件,自动识别数据库类型
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Bean
 | 
					    @Bean
 | 
				
			||||||
    public PaginationInterceptor paginationInterceptor() {
 | 
					    public PaginationInterceptor paginationInterceptor() {
 | 
				
			||||||
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<ISqlParser> sqlParserList = new ArrayList<>();
 | 
					        return new PaginationInterceptor();
 | 
				
			||||||
        // 攻击 SQL 阻断解析器、加入解析链
 | 
					
 | 
				
			||||||
        sqlParserList.add(new BlockAttackSqlParser());
 | 
					        //阻断解析器,测试环境使用
 | 
				
			||||||
        paginationInterceptor.setSqlParserList(sqlParserList);
 | 
					//        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
 | 
				
			||||||
        return paginationInterceptor;
 | 
					//
 | 
				
			||||||
 | 
					//        List<ISqlParser> sqlParserList = new ArrayList<>();
 | 
				
			||||||
 | 
					//        // 攻击 SQL 阻断解析器、加入解析链
 | 
				
			||||||
 | 
					//        sqlParserList.add(new BlockAttackSqlParser());
 | 
				
			||||||
 | 
					//        paginationInterceptor.setSqlParserList(sqlParserList);
 | 
				
			||||||
 | 
					//        return paginationInterceptor;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,46 +0,0 @@
 | 
				
			|||||||
package cn.lili.common.security.filter;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.apache.commons.lang3.StringUtils;
 | 
					 | 
				
			||||||
import org.apache.commons.text.StringEscapeUtils;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import javax.servlet.http.HttpServletRequest;
 | 
					 | 
				
			||||||
import javax.servlet.http.HttpServletRequestWrapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 防止Xss sql注入
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @author Chopper
 | 
					 | 
				
			||||||
 * @version v1.0
 | 
					 | 
				
			||||||
 * 2021-06-04 10:39
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrapper {
 | 
					 | 
				
			||||||
    private HttpServletRequest request;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public XssAndSqlHttpServletRequestWrapper(HttpServletRequest request) {
 | 
					 | 
				
			||||||
        super(request);
 | 
					 | 
				
			||||||
        this.request = request;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public String getParameter(String name) {
 | 
					 | 
				
			||||||
        String value = request.getParameter(name);
 | 
					 | 
				
			||||||
        if (!StringUtils.isEmpty(value)) {
 | 
					 | 
				
			||||||
            value = StringEscapeUtils.escapeHtml4(value);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return value;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public String[] getParameterValues(String name) {
 | 
					 | 
				
			||||||
        String[] parameterValues = super.getParameterValues(name);
 | 
					 | 
				
			||||||
        if (parameterValues == null) {
 | 
					 | 
				
			||||||
            return null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        for (int i = 0; i < parameterValues.length; i++) {
 | 
					 | 
				
			||||||
            String value = parameterValues[i];
 | 
					 | 
				
			||||||
            parameterValues[i] = StringEscapeUtils.escapeHtml4(value);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return parameterValues;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,11 +1,6 @@
 | 
				
			|||||||
package cn.lili.common.security.filter;
 | 
					package cn.lili.common.security.filter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.databind.module.SimpleModule;
 | 
					 | 
				
			||||||
import org.springframework.context.annotation.Bean;
 | 
					 | 
				
			||||||
import org.springframework.context.annotation.Primary;
 | 
					 | 
				
			||||||
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.servlet.*;
 | 
					import javax.servlet.*;
 | 
				
			||||||
@ -23,38 +18,22 @@ import java.io.IOException;
 | 
				
			|||||||
@WebFilter
 | 
					@WebFilter
 | 
				
			||||||
@Component
 | 
					@Component
 | 
				
			||||||
public class XssFilter implements Filter {
 | 
					public class XssFilter implements Filter {
 | 
				
			||||||
 | 
					    FilterConfig filterConfig = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void init(FilterConfig filterConfig) throws ServletException {
 | 
					    public void init(FilterConfig filterConfig) throws ServletException {
 | 
				
			||||||
 | 
					        this.filterConfig = filterConfig;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
 | 
					    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
 | 
				
			||||||
            throws IOException, ServletException {
 | 
					            throws IOException, ServletException {
 | 
				
			||||||
        HttpServletRequest req = (HttpServletRequest) request;
 | 
					        //对请求进行拦截,防xss处理
 | 
				
			||||||
        XssAndSqlHttpServletRequestWrapper xssRequestWrapper = new XssAndSqlHttpServletRequestWrapper(req);
 | 
					        chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response);
 | 
				
			||||||
        chain.doFilter(xssRequestWrapper, response);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void destroy() {
 | 
					    public void destroy() {
 | 
				
			||||||
    }
 | 
					        this.filterConfig = null;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 过滤json类型的
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param builder
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Bean
 | 
					 | 
				
			||||||
    @Primary
 | 
					 | 
				
			||||||
    public ObjectMapper xssObjectMapper(Jackson2ObjectMapperBuilder builder) {
 | 
					 | 
				
			||||||
        //解析器
 | 
					 | 
				
			||||||
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
 | 
					 | 
				
			||||||
        //注册xss解析器
 | 
					 | 
				
			||||||
        SimpleModule xssModule = new SimpleModule("XssStringJsonSerializer");
 | 
					 | 
				
			||||||
        xssModule.addSerializer(new XssStringJsonSerializer());
 | 
					 | 
				
			||||||
        objectMapper.registerModule(xssModule);
 | 
					 | 
				
			||||||
        //返回
 | 
					 | 
				
			||||||
        return objectMapper;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,136 @@
 | 
				
			|||||||
 | 
					package cn.lili.common.security.filter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletRequest;
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletRequestWrapper;
 | 
				
			||||||
 | 
					import java.util.regex.Pattern;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 防止Xss sql注入
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Chopper
 | 
				
			||||||
 | 
					 * @version v1.0
 | 
				
			||||||
 | 
					 * 2021-06-04 10:39
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
 | 
				
			||||||
 | 
					    private HttpServletRequest request;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public XssHttpServletRequestWrapper(HttpServletRequest request) {
 | 
				
			||||||
 | 
					        super(request);
 | 
				
			||||||
 | 
					        this.request = request;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 对数组参数进行特殊字符过滤
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String[] getParameterValues(String name) {
 | 
				
			||||||
 | 
					        String[] values = super.getParameterValues(name);
 | 
				
			||||||
 | 
					        if (values == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        int count = values.length;
 | 
				
			||||||
 | 
					        String[] encodedValues = new String[count];
 | 
				
			||||||
 | 
					        for (int i = 0; i < count; i++) {
 | 
				
			||||||
 | 
					            encodedValues[i] = cleanXSS(values[i]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return encodedValues;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 对参数中特殊字符进行过滤
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String getParameter(String name) {
 | 
				
			||||||
 | 
					        String value = super.getParameter(name);
 | 
				
			||||||
 | 
					        if (value == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return cleanXSS(value);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取attribute,特殊字符过滤
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Object getAttribute(String name) {
 | 
				
			||||||
 | 
					        Object value = super.getAttribute(name);
 | 
				
			||||||
 | 
					        if (value != null && value instanceof String) {
 | 
				
			||||||
 | 
					            cleanXSS((String) value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 对请求头部进行特殊字符过滤
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String getHeader(String name) {
 | 
				
			||||||
 | 
					        String value = super.getHeader(name);
 | 
				
			||||||
 | 
					        if (value == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return cleanXSS(value);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 转义字符,使用该方法存在一定的弊端
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param value
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String cleanXSS2(String value) {
 | 
				
			||||||
 | 
					        // 移除特殊标签
 | 
				
			||||||
 | 
					        value = value.replaceAll("<", "<").replaceAll(">", ">");
 | 
				
			||||||
 | 
					        value = value.replaceAll("\\(", "(").replaceAll("\\)", ")");
 | 
				
			||||||
 | 
					        value = value.replaceAll("'", "'");
 | 
				
			||||||
 | 
					        value = value.replaceAll("eval\\((.*)\\)", "");
 | 
				
			||||||
 | 
					        value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
 | 
				
			||||||
 | 
					        value = value.replaceAll("script", "");
 | 
				
			||||||
 | 
					        return value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String cleanXSS(String value) {
 | 
				
			||||||
 | 
					        if (value != null) {
 | 
				
			||||||
 | 
					            //推荐使用ESAPI库来避免脚本攻击,value = ESAPI.encoder().canonicalize(value);
 | 
				
			||||||
 | 
					            // 避免空字符串
 | 
				
			||||||
 | 
					            value = value.replaceAll(" ", "");
 | 
				
			||||||
 | 
					            // 避免script 标签
 | 
				
			||||||
 | 
					            Pattern scriptPattern = Pattern.compile("<script>(.*?)</script>", Pattern.CASE_INSENSITIVE);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 避免src形式的表达式
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'",
 | 
				
			||||||
 | 
					                    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"",
 | 
				
			||||||
 | 
					                    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 删除单个的 </script> 标签
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("</script>", Pattern.CASE_INSENSITIVE);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 删除单个的<script ...> 标签
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("<script(.*?)>",
 | 
				
			||||||
 | 
					                    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 避免 eval(...) 形式表达式
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("eval\\((.*?)\\)",
 | 
				
			||||||
 | 
					                    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 避免 expression(...) 表达式
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("expression\\((.*?)\\)",
 | 
				
			||||||
 | 
					                    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 避免 javascript: 表达式
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 避免 vbscript:表达式
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					            // 避免 onload= 表达式
 | 
				
			||||||
 | 
					            scriptPattern = Pattern.compile("onload(.*?)=",
 | 
				
			||||||
 | 
					                    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
 | 
				
			||||||
 | 
					            value = scriptPattern.matcher(value).replaceAll("");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,32 +0,0 @@
 | 
				
			|||||||
package cn.lili.common.security.filter;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.core.JsonGenerator;
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.databind.JsonSerializer;
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.databind.SerializerProvider;
 | 
					 | 
				
			||||||
import org.apache.commons.text.StringEscapeUtils;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.io.IOException;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 防止xss攻击 过滤字符串解析
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @author Chopper
 | 
					 | 
				
			||||||
 * @version v1.0
 | 
					 | 
				
			||||||
 * 2021-06-04 10:40
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
public class XssStringJsonSerializer extends JsonSerializer<String> {
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public Class<String> handledType() {
 | 
					 | 
				
			||||||
        return String.class;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void serialize(String value, JsonGenerator jsonGenerator,
 | 
					 | 
				
			||||||
                          SerializerProvider serializerProvider) throws IOException {
 | 
					 | 
				
			||||||
        if (value != null) {
 | 
					 | 
				
			||||||
            String encodedValue = StringEscapeUtils.escapeHtml4(value);
 | 
					 | 
				
			||||||
            jsonGenerator.writeString(encodedValue);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
package cn.lili.modules.base.serviceimpl;
 | 
					package cn.lili.modules.base.serviceimpl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.lili.common.utils.HttpClientUtils;
 | 
					import cn.lili.common.utils.HttpClientUtils;
 | 
				
			||||||
 | 
					import cn.lili.common.utils.SnowFlake;
 | 
				
			||||||
import cn.lili.common.utils.StringUtils;
 | 
					import cn.lili.common.utils.StringUtils;
 | 
				
			||||||
import cn.lili.modules.base.mapper.RegionMapper;
 | 
					import cn.lili.modules.base.mapper.RegionMapper;
 | 
				
			||||||
import cn.lili.modules.base.service.RegionService;
 | 
					import cn.lili.modules.base.service.RegionService;
 | 
				
			||||||
@ -11,9 +12,7 @@ import com.alibaba.fastjson.JSONObject;
 | 
				
			|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
					import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
					import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
					import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
				
			||||||
import lombok.RequiredArgsConstructor;
 | 
					 | 
				
			||||||
import org.apache.commons.lang3.ArrayUtils;
 | 
					import org.apache.commons.lang3.ArrayUtils;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
import org.springframework.transaction.annotation.Transactional;
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -244,6 +243,7 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
 | 
				
			|||||||
        record.setName(name);
 | 
					        record.setName(name);
 | 
				
			||||||
        record.setParentId(parentId);
 | 
					        record.setParentId(parentId);
 | 
				
			||||||
        record.setOrderNum(order);
 | 
					        record.setOrderNum(order);
 | 
				
			||||||
 | 
					        record.setId(String.valueOf(SnowFlake.getId()));
 | 
				
			||||||
        String megName = ",";
 | 
					        String megName = ",";
 | 
				
			||||||
        for (int i = 0; i < ids.length; i++) {
 | 
					        for (int i = 0; i < ids.length; i++) {
 | 
				
			||||||
            megName = megName + ids[i];
 | 
					            megName = megName + ids[i];
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user