) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
+ return ReflectionUtil.getSuperClassGenricType(getClass());
+ }
+
+ /**
+ * 获取MongoDB模板操作
+ *
+ * @return
+ */
+ @Override
+ public MongoTemplate getMongoTemplate() {
+ return mongoTemplate;
+ }
+
+}
diff --git a/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/util/ReflectionUtil.java b/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/util/ReflectionUtil.java
new file mode 100644
index 00000000..98f8194d
--- /dev/null
+++ b/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/util/ReflectionUtil.java
@@ -0,0 +1,246 @@
+package vip.mate.core.mongodb.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
+
+import java.lang.reflect.*;
+
+/**
+ * 反射工具类
+ *
+ * 提供访问私有变量,获取泛型类型Class, 提取集合中元素的属性, 转换字符串到对象等Util函数.
+ *
+ *
+ * @author pangu
+ * @date 2020-10-20
+ */
+@Slf4j
+public class ReflectionUtil {
+
+ /**
+ * 调用Getter方法.
+ */
+ public static Object invokeGetterMethod(Object obj, String propertyName) {
+ String getterMethodName = "get" + StringUtils.capitalize(propertyName);
+ return invokeMethod(obj, getterMethodName, new Class[]{}, new Object[]{});
+ }
+
+ /**
+ * 调用Setter方法.使用value的Class来查找Setter方法.
+ */
+ public static void invokeSetterMethod(Object obj, String propertyName, Object value) {
+ invokeSetterMethod(obj, propertyName, value, null);
+ }
+
+ /**
+ * 调用Setter方法.
+ *
+ * @param propertyType 用于查找Setter方法,为空时使用value的Class替代.
+ */
+ public static void invokeSetterMethod(Object obj, String propertyName, Object value, Class> propertyType) {
+ Class> type = propertyType != null ? propertyType : value.getClass();
+ String setterMethodName = "set" + StringUtils.capitalize(propertyName);
+ invokeMethod(obj, setterMethodName, new Class[]{type}, new Object[]{value});
+ }
+
+ /**
+ * 直接读取对象属性值, 无视private/protected修饰符, 不经过getter函数.
+ */
+ public static Object getFieldValue(final Object obj, final String fieldName) {
+ Field field = getAccessibleField(obj, fieldName);
+
+ if (field == null) {
+ throw new IllegalArgumentException("Could not find field [" + fieldName + "] on target [" + obj + "]");
+ }
+
+ Object result = null;
+ try {
+ result = field.get(obj);
+ } catch (IllegalAccessException e) {
+ log.error("不可能抛出的异常{}", e.getMessage());
+ }
+ return result;
+ }
+
+ /**
+ * 直接设置对象属性值, 无视private/protected修饰符, 不经过setter函数.
+ */
+ public static void setFieldValue(final Object obj, final String fieldName, final Object value) {
+ Field field = getAccessibleField(obj, fieldName);
+
+ if (field == null) {
+ throw new IllegalArgumentException("Could not find field [" + fieldName + "] on target [" + obj + "]");
+ }
+
+ try {
+ field.set(obj, value);
+ } catch (IllegalAccessException e) {
+ log.error("不可能抛出的异常:{}", e.getMessage());
+ }
+ }
+
+ /**
+ * 循环向上转型, 获取对象的DeclaredField, 并强制设置为可访问.
+ *
+ * 如向上转型到Object仍无法找到, 返回null.
+ */
+ public static Field getAccessibleField(final Object obj, final String fieldName) {
+ Assert.notNull(obj, "object不能为空");
+ Assert.hasText(fieldName, "fieldName");
+ for (Class> superClass = obj.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) {
+ try {
+ Field field = superClass.getDeclaredField(fieldName);
+ field.setAccessible(true);
+ return field;
+ } catch (NoSuchFieldException e) {//NOSONAR
+ // Field不在当前类定义,继续向上转型
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 直接调用对象方法, 无视private/protected修饰符.
+ * 用于一次性调用的情况.
+ */
+ public static Object invokeMethod(final Object obj, final String methodName, final Class>[] parameterTypes,
+ final Object[] args) {
+ Method method = getAccessibleMethod(obj, methodName, parameterTypes);
+ if (method == null) {
+ throw new IllegalArgumentException("Could not find method [" + methodName + "] on target [" + obj + "]");
+ }
+
+ try {
+ return method.invoke(obj, args);
+ } catch (Exception e) {
+ throw convertReflectionExceptionToUnchecked(e);
+ }
+ }
+
+ /**
+ * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问.
+ * 如向上转型到Object仍无法找到, 返回null.
+ *
+ * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args)
+ */
+ public static Method getAccessibleMethod(final Object obj, final String methodName,
+ final Class>... parameterTypes) {
+ Assert.notNull(obj, "object不能为空");
+
+ for (Class> superClass = obj.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) {
+ try {
+ Method method = superClass.getDeclaredMethod(methodName, parameterTypes);
+
+ method.setAccessible(true);
+
+ return method;
+
+ } catch (NoSuchMethodException e) {//NOSONAR
+ // Method不在当前类定义,继续向上转型
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 通过反射, 获得Class定义中声明的父类的泛型参数的类型.
+ * 如无法找到, 返回Object.class.
+ * eg.
+ * public UserDao extends HibernateDao
+ *
+ * @param clazz The class to introspect
+ * @return the first generic declaration, or Object.class if cannot be determined
+ */
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ public static Class getSuperClassGenricType(final Class clazz) {
+ return getSuperClassGenricType(clazz, 0);
+ }
+
+ /**
+ * 通过反射, 获得Class定义中声明的父类的泛型参数的类型.
+ * 如无法找到, 返回Object.class.
+ *
+ * 如public UserDao extends HibernateDao
+ *
+ * @param clazz clazz The class to introspect
+ * @param index the Index of the generic ddeclaration,start from 0.
+ * @return the index generic declaration, or Object.class if cannot be determined
+ */
+ @SuppressWarnings("rawtypes")
+ public static Class getSuperClassGenricType(final Class clazz, final int index) {
+
+ Type genType = clazz.getGenericSuperclass();
+
+ if (!(genType instanceof ParameterizedType)) {
+ log.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");
+ return Object.class;
+ }
+
+ Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
+
+ if (index >= params.length || index < 0) {
+ log.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
+ + params.length);
+ return Object.class;
+ }
+ if (!(params[index] instanceof Class)) {
+ log.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
+ return Object.class;
+ }
+
+ return (Class) params[index];
+ }
+
+ /**
+ * 将反射时的checked exception转换为unchecked exception.
+ */
+ public static RuntimeException convertReflectionExceptionToUnchecked(Exception e) {
+ if (e instanceof IllegalAccessException || e instanceof IllegalArgumentException
+ || e instanceof NoSuchMethodException) {
+ return new IllegalArgumentException("Reflection Exception.", e);
+ } else if (e instanceof InvocationTargetException) {
+ return new RuntimeException("Reflection Exception.", ((InvocationTargetException) e).getTargetException());
+ } else if (e instanceof RuntimeException) {
+ return (RuntimeException) e;
+ }
+ return new RuntimeException("Unexpected Checked Exception.", e);
+ }
+
+ /**
+ * 根据对象获得mongodb Update语句
+ * 除id字段以外,所有被赋值的字段都会成为修改项
+ */
+ public static Update getUpdateObj(final Object obj) {
+ if (obj == null) {
+ return null;
+ }
+ Field[] fields = obj.getClass().getDeclaredFields();
+ Update update = null;
+ boolean isFirst = true;
+ for (Field field : fields) {
+ field.setAccessible(true);
+ try {
+ Object value = field.get(obj);
+ if (value != null) {
+ if ("id".equals(field.getName().toLowerCase()) || "serialversionuid".equals(field.getName().toLowerCase())) {
+ continue;
+ }
+ if (isFirst) {
+ update = Update.update(field.getName(), value);
+ isFirst = false;
+ } else {
+ update = update.set(field.getName(), value);
+ }
+ }
+
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ return update;
+ }
+}
diff --git a/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/util/StringUtil.java b/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/util/StringUtil.java
new file mode 100644
index 00000000..05212a8d
--- /dev/null
+++ b/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/util/StringUtil.java
@@ -0,0 +1,391 @@
+package vip.mate.core.mongodb.util;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * String工具类
+ *
+ * @author pangu
+ * @date 2020-10-20
+ */
+public class StringUtil {
+
+ private StringUtil() {
+ super();
+ }
+
+ /**
+ * 出去null和""
+ *
+ * @param src
+ * @return
+ */
+ public static String formatNull(String src) {
+ return (src == null || "null".equals(src)) ? "" : src;
+ }
+
+ /**
+ * 判断字符串是否为空的正则表达式,空白字符对应的unicode编码
+ */
+ private static final String EMPTY_REGEX = "[\\s\\u00a0\\u2007\\u202f\\u0009-\\u000d\\u001c-\\u001f]+";
+
+ /**
+ * 验证字符串是否为空
+ *
+ * @param input
+ * @return
+ */
+ public static boolean isEmpty(String input) {
+ return input == null || input.equals("") || input.matches(EMPTY_REGEX);
+ }
+
+ public static boolean isNotEmpty(String input) {
+ return !isEmpty(input);
+ }
+
+ private static final String NUM_REG = "(\\+|\\-)?\\s*\\d+(\\.\\d+)?";
+
+
+ //首字母转小写
+ public static String toLowerCaseFirstOne(String s) {
+ if (Character.isLowerCase(s.charAt(0))) {
+ return s;
+ } else {
+ return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
+ }
+ }
+
+ //首字母转大写
+ public static String toUpperCaseFirstOne(String s) {
+ if (Character.isUpperCase(s.charAt(0))) {
+ return s;
+ } else {
+ return (new StringBuilder()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString();
+ }
+ }
+
+
+ /**
+ * 判断是否数字
+ *
+ * @param str
+ * @return
+ */
+ public static boolean isNumber(String str) {
+ if (isEmpty(str)) {
+ return false;
+ }
+
+ if (str.trim().matches(NUM_REG)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * 判断是否包含有乱码的数据,如果字符串中包含有替换字符就认为是乱码
+ *
+ * @param str
+ * @return
+ */
+ public static boolean containUnreadableCode(String str) {
+ return contain(str, "\\ufffd");
+ }
+
+ /**
+ * 判读是否包含数字
+ *
+ * @param str
+ * @return
+ */
+ public static boolean containNumber(String str) {
+ return contain(str, "\\d");
+ }
+
+ /**
+ * 判断是否包含a-zA-Z_0-9
+ *
+ * @param str
+ * @return
+ */
+ public static boolean containWord(String str) {
+ return contain(str, "\\w");
+ }
+
+ /**
+ * 是否包含有标点符号
+ *
+ * @param str
+ * @return
+ */
+ public static boolean containPunct(String str) {
+ return contain(str, PUNCT_REG);
+ }
+
+ public static boolean contain(String str, String regex) {
+ if (isEmpty(str) || isEmpty(regex)) {
+ return false;
+ }
+
+ if (str.trim().matches(regex)) {
+ return true;
+ }
+
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(str);
+ if (matcher.find()) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * 替换所有的(不区分大小写)
+ *
+ * @param input
+ * @param regex
+ * @param replacement
+ * @return
+ */
+ public static String replaceAll(String input, String regex,
+ String replacement) {
+ return Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(input)
+ .replaceAll(replacement);
+ }
+
+ /**
+ * 移除所有的空格
+ *
+ * @param text
+ * @return
+ */
+ public static String removeAllSpace(String text) {
+ if (isEmpty(text)) {
+ return text;
+ }
+
+ return text.replaceAll("[ ]+", "");
+ }
+
+ private static final String PUNCT_REG = "[^a-zA-Z0-9\\u4e00-\\u9fa5]";
+
+ /**
+ * 移除字符串中的所有的中英文标点符号
+ *
+ * @param str
+ * @return
+ */
+ public static String removeAllPunct(String str) {
+ if (isEmpty(str)) {
+ return str;
+ }
+
+ return str.replaceAll(PUNCT_REG, "");
+ }
+
+ /**
+ * 计算str中包含多少个子字符串sub
+ *
+ * @param str
+ * @param sub
+ * @return
+ */
+ public static int countMatches(String str, String sub) {
+ if (isEmpty(str) || isEmpty(sub)) {
+ return 0;
+ }
+
+ int count = 0;
+ int idx = 0;
+ while ((idx = str.indexOf(sub, idx)) != -1) {
+ count++;
+ idx += sub.length();
+ }
+
+ return count;
+ }
+
+ /**
+ * 获得源字符串的一个子字符串
+ *
+ * @param str :源字符串
+ * @param beginIndex :开始索引(包括)
+ * @param endIndex :结束索引(不包括)
+ * @return
+ */
+ public static String substring(String str, int beginIndex, int endIndex) {
+ if (isEmpty(str)) {
+ return str;
+ }
+
+ int length = str.length();
+
+ if (beginIndex >= length || endIndex <= 0 || beginIndex >= endIndex) {
+ return null;
+ }
+
+ if (beginIndex < 0) {
+ beginIndex = 0;
+ }
+ if (endIndex > length) {
+ endIndex = length;
+ }
+
+ return str.substring(beginIndex, endIndex);
+ }
+
+ /**
+ * 计算str中包含子字符串sub所在位置的前一个字符或者后一个字符和sub所组成的新字符串
+ *
+ * @param str
+ * @param sub
+ * @return
+ */
+ public static Set substring(String str, String sub) {
+ if (isEmpty(str) || isEmpty(sub)) {
+ return null;
+ }
+
+ Set result = new HashSet();
+ int idx = 0;
+ while ((idx = str.indexOf(sub, idx)) != -1) {
+ String temp = substring(str, idx - 1, idx + sub.length());
+ if (!isEmpty(temp)) {
+ temp = removeAllPunct(temp);
+ if (!sub.equalsIgnoreCase(temp) && !containWord(temp)) {
+ result.add(temp);
+ }
+
+ }
+
+ temp = substring(str, idx, idx + sub.length() + 1);
+ if (!isEmpty(temp)) {
+ temp = removeAllPunct(temp);
+ if (!sub.equalsIgnoreCase(temp) && !containWord(temp)) {
+ result.add(temp);
+ }
+ }
+
+ idx += sub.length();
+ }
+
+ return result;
+ }
+
+ /**
+ * 过滤掉XML中无法解析的非法字符
+ *
+ * @param content
+ * @return
+ */
+ public static String wrapXmlContent(String content) {
+ if (isEmpty(content)) {
+ return "";
+ }
+
+ StringBuilder result = new StringBuilder();
+
+ for (int i = 0; i < content.length(); i++) {
+ char ch = content.charAt(i);
+ if ((ch == '\t') || (ch == '\n') || (ch == '\r')
+ || ((ch >= ' ') && (ch <= 55295))
+ || ((ch >= 57344) && (ch <= 65533))
+ || ((ch >= 65536) && (ch <= 1114111))) {
+ result.append(ch);
+ }
+ }
+
+ return result.toString();
+ }
+
+ /**
+ * 判断字符串的长度
+ *
+ * @param str
+ * @return
+ */
+ public static boolean overLength(String str) {
+ if (isEmpty(str)) {
+ return false;
+ }
+
+ return str.length() > 1 ? true : false;
+ }
+
+ /**
+ * 字符串中含有特殊字符的处理
+ *
+ * @param str
+ * @return
+ */
+ public static String specialStr(String str) {
+ str = str.replaceAll("[^\\u4e00-\\u9fa5 | 0-9| a-zA-Z | \\.]+", " ")
+ .replaceAll("[\\.]{2,}", " ").trim();
+ return str;
+ }
+
+ /**
+ * 将特殊符号去掉,但是保留空格
+ *
+ * @param str
+ * @return
+ */
+ public static String replaceInValidateChar(String str) {
+ return str.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5\\s+]", " ");
+ }
+
+ /**
+ * 返回字符串对应的unicode编码
+ *
+ * @param str
+ * @return
+ */
+ public static String[] toHexString(String str) {
+ char[] chars = str.toCharArray();
+
+ String[] result = new String[chars.length];
+
+ for (int i = 0; i < chars.length; i++) {
+ result[i] = Integer.toHexString((int) chars[i]);
+ }
+
+ return result;
+ }
+
+ public static String getUuid() {
+ return UUID.randomUUID().toString();
+ }
+
+ public static boolean isUrl(String src) {
+ String regex = "http[s]?:\\/\\/([\\w-]+\\.[\\w-]+)(\\.[\\w-])+(:\\d{2,10})?.*";
+ Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(src);
+ return matcher.matches();
+ }
+
+ /**
+ * sql 查询转义
+ *
+ * @param str
+ * @return
+ */
+ public static String escapeSql(String str) {
+ if (StringUtil.isNotEmpty(str)) {
+ StringBuffer strbuff = new StringBuffer();
+ for (String s : str.split("")) {
+ if (s.equals("%") || s.equals("_") || s.equals("\\")) {
+ strbuff.append("\\");
+ }
+ strbuff.append(s);
+ }
+ return strbuff.toString();
+ }
+ return str;
+ }
+}
diff --git a/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/vo/Page.java b/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/vo/Page.java
new file mode 100644
index 00000000..7c837a45
--- /dev/null
+++ b/mate-core/mate-starter-mongodb/src/main/java/vip/mate/core/mongodb/vo/Page.java
@@ -0,0 +1,100 @@
+package vip.mate.core.mongodb.vo;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 分页参数实体
+ *
+ * @param
+ * @author pangu
+ * @date 2020-10-20
+ */
+public class Page implements Serializable {
+
+ private static final long serialVersionUID = 5760097915453738435L;
+ public static final int DEFAULT_PAGE_SIZE = 10;
+ /**
+ * 每页显示个数
+ */
+ private int pageSize;
+ /**
+ * 当前页数
+ */
+ private int currentPage;
+ /**
+ * 总页数
+ */
+ private int totalPage;
+ /**
+ * 总记录数
+ */
+ private int totalCount;
+ /**
+ * 结果列表
+ */
+ private List rows;
+
+ public Page() {
+ this.currentPage = 1;
+ this.pageSize = DEFAULT_PAGE_SIZE;
+ }
+
+ public Page(int currentPage, int pageSize) {
+ this.currentPage = currentPage <= 0 ? 1 : currentPage;
+ this.pageSize = pageSize <= 0 ? 1 : pageSize;
+ }
+
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public int getCurrentPage() {
+ return currentPage;
+ }
+
+ public void setCurrentPage(int currentPage) {
+ this.currentPage = currentPage;
+ }
+
+ public int getTotalPage() {
+ return totalPage;
+ }
+
+ public void setTotalPage(int totalPage) {
+ this.totalPage = totalPage;
+ }
+
+ public int getTotalCount() {
+ return totalCount;
+ }
+
+ public void setTotalCount(int totalCount) {
+ this.totalCount = totalCount;
+ }
+
+ /**
+ * 设置结果 及总页数
+ *
+ * @param rows
+ */
+ public void build(List rows) {
+ this.setRows(rows);
+ int count = this.getTotalCount();
+ int divisor = count / this.getPageSize();
+ int remainder = count % this.getPageSize();
+ this.setTotalPage(remainder == 0 ? divisor == 0 ? 1 : divisor : divisor + 1);
+ }
+
+ public List getRows() {
+ return rows;
+ }
+
+ public void setRows(List rows) {
+ this.rows = rows;
+ }
+}
diff --git a/mate-core/pom.xml b/mate-core/pom.xml
index e1082f99..f611757b 100644
--- a/mate-core/pom.xml
+++ b/mate-core/pom.xml
@@ -40,6 +40,7 @@
mate-starter-strategy
mate-starter-retrofit
mate-starter-j2cache
+ mate-starter-mongodb
diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml
index 0d6ccdcd..9ad817db 100644
--- a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml
+++ b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml
index 594bbd1f..0d4a3a36 100644
--- a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml
+++ b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml
@@ -18,7 +18,7 @@
-
+
diff --git a/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml b/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml
index c1a0c77f..d7ffaed3 100644
--- a/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml
+++ b/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml
@@ -2,7 +2,7 @@
-
+
From c1a3617127d56527de8a96c2c2a1bcfb8b59220b Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Thu, 22 Oct 2020 07:03:19 +0800
Subject: [PATCH 04/19] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=9B=A0=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E5=8C=85=E5=90=8D=E8=80=8C=E8=A2=ABidea=E8=AF=AF?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=BF=AE=E6=94=B9=E7=9A=84bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/xxl/job/core/util/ShardingUtil.java | 46 -------------------
.../vip/mate/system/mapper/SysRoleMapper.xml | 2 +-
.../vip/mate/system/mapper/SysRouteMapper.xml | 2 +-
.../mate/code/mapper/SysDataSourceMapper.xml | 2 +-
4 files changed, 3 insertions(+), 49 deletions(-)
delete mode 100644 mate-core/mate-starter-job/src/main/java/com/xxl/job/core/util/ShardingUtil.java
diff --git a/mate-core/mate-starter-job/src/main/java/com/xxl/job/core/util/ShardingUtil.java b/mate-core/mate-starter-job/src/main/java/com/xxl/job/core/util/ShardingUtil.java
deleted file mode 100644
index 7fa35e5b..00000000
--- a/mate-core/mate-starter-job/src/main/java/com/xxl/job/core/util/ShardingUtil.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.xxl.job.core.util;//package com.xxl.job.core.util;
-//
-///**
-// * sharding vip.mate.core.mongodb.vo
-// * @author xuxueli 2017-07-25 21:26:38
-// */
-//public class ShardingUtil {
-//
-// private static InheritableThreadLocal contextHolder = new InheritableThreadLocal();
-//
-// public static class ShardingVO {
-//
-// private int index; // sharding index
-// private int total; // sharding total
-//
-// public ShardingVO(int index, int total) {
-// this.index = index;
-// this.total = total;
-// }
-//
-// public int getIndex() {
-// return index;
-// }
-//
-// public void setIndex(int index) {
-// this.index = index;
-// }
-//
-// public int getTotal() {
-// return total;
-// }
-//
-// public void setTotal(int total) {
-// this.total = total;
-// }
-// }
-//
-// public static void setShardingVo(ShardingVO shardingVo){
-// contextHolder.set(shardingVo);
-// }
-//
-// public static ShardingVO getShardingVo(){
-// return contextHolder.get();
-// }
-//
-//}
diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml
index 9ad817db..0d6ccdcd 100644
--- a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml
+++ b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRoleMapper.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml
index 0d4a3a36..594bbd1f 100644
--- a/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml
+++ b/mate-platform/mate-system/src/main/java/vip/mate/system/mapper/SysRouteMapper.xml
@@ -18,7 +18,7 @@
-
+
diff --git a/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml b/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml
index d7ffaed3..c1a0c77f 100644
--- a/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml
+++ b/mate-support/mate-code/src/main/java/vip/mate/code/mapper/SysDataSourceMapper.xml
@@ -2,7 +2,7 @@
-
+
From 002a2bbdf2db0fe229d241c81973bbd994c32b04 Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Thu, 22 Oct 2020 20:08:22 +0800
Subject: [PATCH 05/19] =?UTF-8?q?mate-admin=E5=A2=9E=E5=8A=A0=E9=92=89?=
=?UTF-8?q?=E9=92=89=E5=91=8A=E8=AD=A6=E7=9A=84readme=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mate-support/mate-admin/README.md | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 mate-support/mate-admin/README.md
diff --git a/mate-support/mate-admin/README.md b/mate-support/mate-admin/README.md
new file mode 100644
index 00000000..3554fef5
--- /dev/null
+++ b/mate-support/mate-admin/README.md
@@ -0,0 +1,22 @@
+# MATE-ADMIN钉钉告警配置方案
+
+## SDK下载
+
+#### Java SDK 下载
+[Java SDK下载]https://open-doc.dingtalk.com/microapp/faquestions/vzbp02
+
+#### 本地jar包
+项目目录:doc/lib/taobao-sdk-20200415.jar
+
+## 配置项
+
+#### application-@spring.active@.yml
+
+```yaml
+spring:
+ boot:
+ admin:
+ notify:
+ dingding:
+ token: ${Your DingDing Robot Token}
+```
\ No newline at end of file
From 0d0fefdcec5d734203ececf8c13ccae4aa784dcc Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Fri, 23 Oct 2020 14:29:58 +0800
Subject: [PATCH 06/19] =?UTF-8?q?redisson=E5=8D=87=E7=BA=A7=E8=87=B33.13.6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mate-core/mate-starter-dependencies/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mate-core/mate-starter-dependencies/pom.xml b/mate-core/mate-starter-dependencies/pom.xml
index 6357ab44..c32877e9 100644
--- a/mate-core/mate-starter-dependencies/pom.xml
+++ b/mate-core/mate-starter-dependencies/pom.xml
@@ -67,7 +67,7 @@
3.2.2
6.5.0
- 3.13.3
+ 3.13.6
5.3.3.RELEASE
1.8.0
2.11.5
From b546c897231fa865eb2b179c6145e887c4992a28 Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Fri, 23 Oct 2020 22:14:00 +0800
Subject: [PATCH 07/19] =?UTF-8?q?=E5=B0=81=E8=A3=85redisson=20lock?=
=?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A8=A1=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mate-core/mate-starter-lock/pom.xml | 34 +++++++
.../java/vip/mate/core/lock/RedissonLock.java | 60 ++++++++++++
.../vip/mate/core/lock/RedissonManager.java | 92 +++++++++++++++++++
.../core/lock/annotation/DistributedLock.java | 29 ++++++
.../lock/annotation/EnableRedissonLock.java | 20 ++++
.../lock/aspect/DistributedLockHandler.java | 57 ++++++++++++
.../mate/core/lock/config/RedissonConfig.java | 47 ++++++++++
.../ClusterRedissonConfigStrategyImpl.java | 40 ++++++++
...MasterslaveRedissonConfigStrategyImpl.java | 50 ++++++++++
.../strategy/RedissonConfigContext.java | 27 ++++++
.../strategy/RedissonConfigStrategy.java | 21 +++++
.../SentinelRedissonConfigStrategyImpl.java | 45 +++++++++
.../StandaloneRedissonConfigStrategyImpl.java | 38 ++++++++
.../core/lock/constant/GlobalConstant.java | 22 +++++
.../lock/constant/RedisConnectionType.java | 39 ++++++++
.../core/lock/props/RedissonProperties.java | 33 +++++++
.../main/resources/META-INF/spring.factories | 4 +
mate-core/pom.xml | 1 +
18 files changed, 659 insertions(+)
create mode 100644 mate-core/mate-starter-lock/pom.xml
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonLock.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/DistributedLock.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/EnableRedissonLock.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/RedissonConfig.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigContext.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigStrategy.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/StandaloneRedissonConfigStrategyImpl.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/GlobalConstant.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/RedisConnectionType.java
create mode 100644 mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/props/RedissonProperties.java
create mode 100644 mate-core/mate-starter-lock/src/main/resources/META-INF/spring.factories
diff --git a/mate-core/mate-starter-lock/pom.xml b/mate-core/mate-starter-lock/pom.xml
new file mode 100644
index 00000000..eeb743de
--- /dev/null
+++ b/mate-core/mate-starter-lock/pom.xml
@@ -0,0 +1,34 @@
+
+
+
+ mate-core
+ vip.mate
+ 1.5.8-SNAPSHOT
+
+ 4.0.0
+
+ mate-starter-lock
+
+
+
+ org.redisson
+ redisson
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ com.google.guava
+ guava
+
+
+
+
\ No newline at end of file
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonLock.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonLock.java
new file mode 100644
index 00000000..f2d6244a
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonLock.java
@@ -0,0 +1,60 @@
+package vip.mate.core.lock;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RLock;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 分布式锁实现基于Redisson
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Slf4j
+@AllArgsConstructor
+@NoArgsConstructor
+@Getter
+@Setter
+public class RedissonLock {
+
+ RedissonManager redissonManager;
+
+ /**
+ * 加锁操作
+ *
+ * @return boolean
+ */
+ public boolean lock(String lockName, long expireSeconds) {
+ RLock rLock = redissonManager.getRedisson().getLock(lockName);
+ boolean getLock = false;
+ try {
+ getLock = rLock.tryLock(0, expireSeconds, TimeUnit.SECONDS);
+ if (getLock) {
+ log.info("获取Redisson分布式锁[成功],lockName={}", lockName);
+ } else {
+ log.info("获取Redisson分布式锁[失败],lockName={}", lockName);
+ }
+ } catch (InterruptedException e) {
+ log.error("获取Redisson分布式锁[异常],lockName=" + lockName, e);
+ e.printStackTrace();
+ return false;
+ }
+ return getLock;
+ }
+
+ /**
+ * 解锁
+ *
+ * @param lockName 锁名称
+ */
+ public void release(String lockName) {
+ redissonManager.getRedisson().getLock(lockName).unlock();
+ }
+
+
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java
new file mode 100644
index 00000000..eb5258ab
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java
@@ -0,0 +1,92 @@
+package vip.mate.core.lock;
+
+import com.google.common.base.Preconditions;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.Redisson;
+import org.redisson.config.Config;
+import vip.mate.core.lock.config.strategy.*;
+import vip.mate.core.lock.constant.RedisConnectionType;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * Redisson核心配置,用于提供初始化的redisson实例
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Slf4j
+public class RedissonManager {
+
+ private Config config = new Config();
+
+ private Redisson redisson = null;
+
+ public RedissonManager() {}
+
+ public RedissonManager(RedissonProperties redissonProperties) {
+ try {
+ config = RedissonConfigFactory.getInstance().createConfig(redissonProperties);
+ redisson = (Redisson) Redisson.create(config);
+ } catch (Exception e) {
+ log.error("Redisson init error", e);
+ throw new IllegalArgumentException("please input correct configurations," +
+ "connectionType must in standalone/sentinel/cluster/masterslave"); }
+ }
+
+ public Redisson getRedisson() {
+ return redisson;
+ }
+
+ /**
+ * Redisson连接方式配置工厂
+ * 双重检查锁
+ */
+ static class RedissonConfigFactory {
+
+ private RedissonConfigFactory() {}
+
+ private static volatile RedissonConfigFactory factory = null;
+
+ public static RedissonConfigFactory getInstance() {
+ if (factory == null) {
+ synchronized (Object.class) {
+ if (factory == null) {
+ factory = new RedissonConfigFactory();
+ }
+ }
+ }
+ return factory;
+ }
+
+ private Config config = new Config();
+
+ /**
+ * 根据连接类型获取对应连接方式的配置,基于策略模式
+ * @param redissonProperties
+ * @return Config
+ */
+ Config createConfig(RedissonProperties redissonProperties) {
+ Preconditions.checkNotNull(redissonProperties);
+ Preconditions.checkNotNull(redissonProperties.getAddress(), "redisson.lock.server.address cannot be NULL!");
+ Preconditions.checkNotNull(redissonProperties.getType(), "redisson.lock.server.password cannot be NULL");
+ Preconditions.checkNotNull(redissonProperties.getDatabase(), "redisson.lock.server.database cannot be NULL");
+ String connectionType = redissonProperties.getType();
+ /**声明配置上下文*/
+ RedissonConfigContext redissonConfigContext = null;
+ if (connectionType.equals(RedisConnectionType.STANDALONE.getConnection_type())) {
+ redissonConfigContext = new RedissonConfigContext(new StandaloneRedissonConfigStrategyImpl());
+ } else if (connectionType.equals(RedisConnectionType.SENTINEL.getConnection_type())) {
+ redissonConfigContext = new RedissonConfigContext(new SentinelRedissonConfigStrategyImpl());
+ } else if (connectionType.equals(RedisConnectionType.CLUSTER.getConnection_type())) {
+ redissonConfigContext = new RedissonConfigContext(new ClusterRedissonConfigStrategyImpl());
+ } else if (connectionType.equals(RedisConnectionType.MASTERSLAVE.getConnection_type())) {
+ redissonConfigContext = new RedissonConfigContext(new MasterslaveRedissonConfigStrategyImpl());
+ } else {
+ throw new IllegalArgumentException("创建Redisson连接Config失败!当前连接方式:" + connectionType);
+ }
+ return redissonConfigContext.createRedissonConfig(redissonProperties);
+ }
+ }
+
+
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/DistributedLock.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/DistributedLock.java
new file mode 100644
index 00000000..587bca2e
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/DistributedLock.java
@@ -0,0 +1,29 @@
+package vip.mate.core.lock.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * Redisson分布式锁注解
+ *
+ * @author pangu
+ */
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+public @interface DistributedLock {
+
+ /**
+ * 分布式锁名称
+ *
+ * @return String
+ */
+ String value() default "distributed-lock-redisson";
+
+ /**
+ * 锁超时时间,默认十秒
+ *
+ * @return int
+ */
+ int expireSeconds() default 10;
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/EnableRedissonLock.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/EnableRedissonLock.java
new file mode 100644
index 00000000..2e6fb21a
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/annotation/EnableRedissonLock.java
@@ -0,0 +1,20 @@
+package vip.mate.core.lock.annotation;
+
+import org.springframework.context.annotation.Import;
+import vip.mate.core.lock.config.RedissonConfig;
+
+import java.lang.annotation.*;
+
+/**
+ * 开启Redisson注解支持
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+@Documented
+@Inherited
+@Import(RedissonConfig.class)
+public @interface EnableRedissonLock {
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java
new file mode 100644
index 00000000..505874d1
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java
@@ -0,0 +1,57 @@
+package vip.mate.core.lock.aspect;
+
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import vip.mate.core.lock.RedissonLock;
+import vip.mate.core.lock.annotation.DistributedLock;
+
+/**
+ * 分布式锁解析器
+ *
+ * @author pangu
+ * @date 2020-10-22
+ * @link https://github.com/TaXueWWL/redis-distributed-lock
+ */
+@Slf4j
+@Aspect
+@Component
+public class DistributedLockHandler {
+
+ @Autowired
+ RedissonLock redissonLock;
+
+ @Pointcut("@annotation(vip.mate.core.lock.annotation.DistributedLock)")
+ public void distributedLock() {
+ }
+
+ @Around("@annotation(distributedLock)")
+ public void around(ProceedingJoinPoint joinPoint, DistributedLock distributedLock) {
+ log.info("[开始]执行RedisLock环绕通知,获取Redis分布式锁开始");
+ //获取锁名称
+ String lockName = distributedLock.value();
+ //获取超时时间
+ int expireSeconds = distributedLock.expireSeconds();
+
+ if (redissonLock.lock(lockName, expireSeconds)) {
+ try {
+ log.info("获取Redis分布式锁[成功],加锁完成,开始执行业务逻辑...");
+ joinPoint.proceed();
+ } catch (Throwable throwable) {
+ log.error("获取Redis分布式锁[异常],加锁失败", throwable);
+ throwable.printStackTrace();
+ } finally {
+ redissonLock.release(lockName);
+ }
+ log.info("释放Redis分布式锁[成功],解锁完成,结束业务逻辑...");
+ } else {
+ log.error("获取Redis分布式锁[失败]");
+ }
+ log.info("[结束]执行RedisLock环绕通知");
+
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/RedissonConfig.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/RedissonConfig.java
new file mode 100644
index 00000000..65a9efa7
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/RedissonConfig.java
@@ -0,0 +1,47 @@
+package vip.mate.core.lock.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.Redisson;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import vip.mate.core.lock.RedissonLock;
+import vip.mate.core.lock.RedissonManager;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * Redisson自动化配置
+ *
+ * @author pangu
+ * @date 2020-10-20
+ */
+@Slf4j
+@Configuration
+@ConditionalOnClass(Redisson.class)
+@EnableConfigurationProperties(RedissonProperties.class)
+public class RedissonConfig {
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Order(value = 2)
+ public RedissonLock redissonLock(RedissonManager redissonManager) {
+ RedissonLock redissonLock = new RedissonLock();
+ redissonLock.setRedissonManager(redissonManager);
+ log.info("[RedissonLock]组装完毕");
+ return redissonLock;
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @Order(value = 1)
+ public RedissonManager redissonManager(RedissonProperties redissonProperties) {
+ RedissonManager redissonManager =
+ new RedissonManager(redissonProperties);
+ log.info("[RedissonManager]组装完毕,当前连接方式:" + redissonProperties.getType() +
+ ",连接地址:" + redissonProperties.getAddress());
+ return redissonManager;
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java
new file mode 100644
index 00000000..ba54bcb2
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java
@@ -0,0 +1,40 @@
+package vip.mate.core.lock.config.strategy;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.config.Config;
+import vip.mate.core.lock.constant.GlobalConstant;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * 集群方式Redisson配置
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Slf4j
+public class ClusterRedissonConfigStrategyImpl implements RedissonConfigStrategy {
+
+ @Override
+ public Config createRedissonConfig(RedissonProperties redissonProperties) {
+ Config config = new Config();
+ try {
+ String address = redissonProperties.getAddress();
+ String password = redissonProperties.getPassword();
+ String[] addrTokens = address.split(",");
+ /**设置cluster节点的服务IP和端口*/
+ for (int i = 0; i < addrTokens.length; i++) {
+ config.useClusterServers()
+ .addNodeAddress(GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + addrTokens[i]);
+ if (StringUtils.isNotBlank(password)) {
+ config.useClusterServers().setPassword(password);
+ }
+ }
+ log.info("初始化[cluster]方式Config,redisAddress:" + address);
+ } catch (Exception e) {
+ log.error("cluster Redisson init error", e);
+ e.printStackTrace();
+ }
+ return config;
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java
new file mode 100644
index 00000000..b26ca09f
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java
@@ -0,0 +1,50 @@
+package vip.mate.core.lock.config.strategy;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.config.Config;
+import vip.mate.core.lock.constant.GlobalConstant;
+import vip.mate.core.lock.props.RedissonProperties;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 主从方式Redisson配置
+ * 连接方式:主节点,子节点,子节点
+ * 格式为: 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381
+ */
+@Slf4j
+public class MasterslaveRedissonConfigStrategyImpl implements RedissonConfigStrategy {
+
+ @Override
+ public Config createRedissonConfig(RedissonProperties redissonProperties) {
+ Config config = new Config();
+ try {
+ String address = redissonProperties.getAddress();
+ String password = redissonProperties.getPassword();
+ int database = redissonProperties.getDatabase();
+ String[] addrTokens = address.split(",");
+ String masterNodeAddr = addrTokens[0];
+ /**设置主节点ip*/
+ config.useMasterSlaveServers().setMasterAddress(masterNodeAddr);
+ if (StringUtils.isNotBlank(password)) {
+ config.useMasterSlaveServers().setPassword(password);
+ }
+ config.useMasterSlaveServers().setDatabase(database);
+ /**设置从节点,移除第一个节点,默认第一个为主节点*/
+ List slaveList = new ArrayList<>();
+ for (String addrToken : addrTokens) {
+ slaveList.add(GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + addrToken);
+ }
+ slaveList.remove(0);
+
+ config.useMasterSlaveServers().addSlaveAddress((String[]) slaveList.toArray());
+ log.info("初始化[MASTERSLAVE]方式Config,redisAddress:" + address);
+ } catch (Exception e) {
+ log.error("MASTERSLAVE Redisson init error", e);
+ e.printStackTrace();
+ }
+ return config;
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigContext.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigContext.java
new file mode 100644
index 00000000..11bd4217
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigContext.java
@@ -0,0 +1,27 @@
+package vip.mate.core.lock.config.strategy;
+
+import lombok.AllArgsConstructor;
+import org.redisson.config.Config;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * Redisson配置上下文,产出真正的Redisson的Config
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@AllArgsConstructor
+public class RedissonConfigContext {
+
+ private final RedissonConfigStrategy redissonConfigStrategy;
+
+ /**
+ * 上下文根据构造中传入的具体策略产出真实的Redisson的Config
+ *
+ * @param redissonProperties redisson配置
+ * @return Config
+ */
+ public Config createRedissonConfig(RedissonProperties redissonProperties) {
+ return this.redissonConfigStrategy.createRedissonConfig(redissonProperties);
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigStrategy.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigStrategy.java
new file mode 100644
index 00000000..7453942c
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/RedissonConfigStrategy.java
@@ -0,0 +1,21 @@
+package vip.mate.core.lock.config.strategy;
+
+import org.redisson.config.Config;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * Redisson配置构建接口
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+public interface RedissonConfigStrategy {
+
+ /**
+ * 根据不同的Redis配置策略创建对应的Config
+ *
+ * @param redissonProperties redisson配置
+ * @return Config
+ */
+ Config createRedissonConfig(RedissonProperties redissonProperties);
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java
new file mode 100644
index 00000000..8138e173
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java
@@ -0,0 +1,45 @@
+package vip.mate.core.lock.config.strategy;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.config.Config;
+import vip.mate.core.lock.constant.GlobalConstant;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * 哨兵方式Redis连接配置
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Slf4j
+public class SentinelRedissonConfigStrategyImpl implements RedissonConfigStrategy {
+
+ @Override
+ public Config createRedissonConfig(RedissonProperties redissonProperties) {
+ Config config = new Config();
+ try {
+ String address = redissonProperties.getAddress();
+ String password = redissonProperties.getPassword();
+ int database = redissonProperties.getDatabase();
+ String[] addrTokens = address.split(",");
+ String sentinelAliasName = addrTokens[0];
+ /**设置redis配置文件sentinel.conf配置的sentinel别名*/
+ config.useSentinelServers()
+ .setMasterName(sentinelAliasName);
+ config.useSentinelServers().setDatabase(database);
+ if (StringUtils.isNotBlank(password)) {
+ config.useSentinelServers().setPassword(password);
+ }
+ /**设置sentinel节点的服务IP和端口*/
+ for (int i = 1; i < addrTokens.length; i++) {
+ config.useSentinelServers().addSentinelAddress(GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + addrTokens[i]);
+ }
+ log.info("初始化[sentinel]方式Config,redisAddress:" + address);
+ } catch (Exception e) {
+ log.error("sentinel Redisson init error", e);
+ e.printStackTrace();
+ }
+ return config;
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/StandaloneRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/StandaloneRedissonConfigStrategyImpl.java
new file mode 100644
index 00000000..40ae287c
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/StandaloneRedissonConfigStrategyImpl.java
@@ -0,0 +1,38 @@
+package vip.mate.core.lock.config.strategy;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.config.Config;
+import vip.mate.core.lock.constant.GlobalConstant;
+import vip.mate.core.lock.props.RedissonProperties;
+
+/**
+ * 单机方式Redisson配置
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Slf4j
+public class StandaloneRedissonConfigStrategyImpl implements RedissonConfigStrategy {
+
+ @Override
+ public Config createRedissonConfig(RedissonProperties redissonProperties) {
+ Config config = new Config();
+ try {
+ String address = redissonProperties.getAddress();
+ String password = redissonProperties.getPassword();
+ int database = redissonProperties.getDatabase();
+ String redisAddr = GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + address;
+ config.useSingleServer().setAddress(redisAddr);
+ config.useSingleServer().setDatabase(database);
+ if (StringUtils.isNotBlank(password)) {
+ config.useSingleServer().setPassword(password);
+ }
+ log.info("初始化[standalone]方式Config,redisAddress:" + address);
+ } catch (Exception e) {
+ log.error("standalone Redisson init error", e);
+ e.printStackTrace();
+ }
+ return config;
+ }
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/GlobalConstant.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/GlobalConstant.java
new file mode 100644
index 00000000..d2f0da28
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/GlobalConstant.java
@@ -0,0 +1,22 @@
+package vip.mate.core.lock.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 全局常量枚举
+ *
+ * @author pangu
+ */
+@Getter
+@AllArgsConstructor
+public enum GlobalConstant {
+
+ /**
+ * Redis地址连接前缀
+ */
+ REDIS_CONNECTION_PREFIX("redis://", "Redis地址配置前缀");
+
+ private final String constant_value;
+ private final String constant_desc;
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/RedisConnectionType.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/RedisConnectionType.java
new file mode 100644
index 00000000..ad4c7eb8
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/constant/RedisConnectionType.java
@@ -0,0 +1,39 @@
+package vip.mate.core.lock.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * Redis连接方式
+ *
+ * 包含:standalone-单节点部署方式
+ * sentinel-哨兵部署方式
+ * cluster-集群方式
+ * masterslave-主从部署方式
+ *
+ *
+ * @author xuzhanfu
+ */
+@Getter
+@AllArgsConstructor
+public enum RedisConnectionType {
+ /**
+ * 单节点部署方式
+ */
+ STANDALONE("standalone", "单节点部署方式"),
+ /**
+ * 哨兵部署方式
+ */
+ SENTINEL("sentinel", "哨兵部署方式"),
+ /**
+ * 集群部署方式
+ */
+ CLUSTER("cluster", "集群方式"),
+ /**
+ * 主从部署方式
+ */
+ MASTERSLAVE("masterslave", "主从部署方式");
+
+ private final String connection_type;
+ private final String connection_desc;
+}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/props/RedissonProperties.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/props/RedissonProperties.java
new file mode 100644
index 00000000..0d5914be
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/props/RedissonProperties.java
@@ -0,0 +1,33 @@
+package vip.mate.core.lock.props;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Redisson配置映射类
+ *
+ * @author pangu
+ * @date 2020-10-22
+ */
+@Data
+@ConfigurationProperties(prefix = "redisson.lock.server")
+public class RedissonProperties {
+
+ /**
+ * redis主机地址,ip:port,有多个用半角逗号分隔
+ */
+ private String address;
+ /**
+ * 连接类型,支持standalone-单机节点,sentinel-哨兵,cluster-集群,masterslave-主从
+ */
+ private String type;
+ /**
+ * redis连接密码
+ */
+ private String password;
+ /**
+ * 选取数据库
+ */
+ private int database;
+
+}
diff --git a/mate-core/mate-starter-lock/src/main/resources/META-INF/spring.factories b/mate-core/mate-starter-lock/src/main/resources/META-INF/spring.factories
new file mode 100644
index 00000000..44a4e1e7
--- /dev/null
+++ b/mate-core/mate-starter-lock/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,4 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ vip.mate.core.lock.config.RedissonConfig
+
+
diff --git a/mate-core/pom.xml b/mate-core/pom.xml
index f611757b..707904a0 100644
--- a/mate-core/pom.xml
+++ b/mate-core/pom.xml
@@ -41,6 +41,7 @@
mate-starter-retrofit
mate-starter-j2cache
mate-starter-mongodb
+ mate-starter-lock
From 2d430a9b2e99ae1b710a62e318fba6a1b9ce7fc7 Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Sat, 24 Oct 2020 07:51:47 +0800
Subject: [PATCH 08/19] =?UTF-8?q?redisson=E5=88=86=E5=B8=83=E5=BC=8F?=
=?UTF-8?q?=E9=94=81=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/vip/mate/core/lock/RedissonManager.java | 14 +++++++++-----
.../core/lock/aspect/DistributedLockHandler.java | 16 +++++++++-------
.../ClusterRedissonConfigStrategyImpl.java | 2 +-
.../MasterslaveRedissonConfigStrategyImpl.java | 4 ++--
.../SentinelRedissonConfigStrategyImpl.java | 4 ++--
5 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java
index eb5258ab..755018d2 100644
--- a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/RedissonManager.java
@@ -21,7 +21,8 @@ public class RedissonManager {
private Redisson redisson = null;
- public RedissonManager() {}
+ public RedissonManager() {
+ }
public RedissonManager(RedissonProperties redissonProperties) {
try {
@@ -30,7 +31,8 @@ public RedissonManager(RedissonProperties redissonProperties) {
} catch (Exception e) {
log.error("Redisson init error", e);
throw new IllegalArgumentException("please input correct configurations," +
- "connectionType must in standalone/sentinel/cluster/masterslave"); }
+ "connectionType must in standalone/sentinel/cluster/masterslave");
+ }
}
public Redisson getRedisson() {
@@ -43,7 +45,8 @@ public Redisson getRedisson() {
*/
static class RedissonConfigFactory {
- private RedissonConfigFactory() {}
+ private RedissonConfigFactory() {
+ }
private static volatile RedissonConfigFactory factory = null;
@@ -62,7 +65,8 @@ public static RedissonConfigFactory getInstance() {
/**
* 根据连接类型获取对应连接方式的配置,基于策略模式
- * @param redissonProperties
+ *
+ * @param redissonProperties redisson配置
* @return Config
*/
Config createConfig(RedissonProperties redissonProperties) {
@@ -71,7 +75,7 @@ Config createConfig(RedissonProperties redissonProperties) {
Preconditions.checkNotNull(redissonProperties.getType(), "redisson.lock.server.password cannot be NULL");
Preconditions.checkNotNull(redissonProperties.getDatabase(), "redisson.lock.server.database cannot be NULL");
String connectionType = redissonProperties.getType();
- /**声明配置上下文*/
+ // 声明配置上下文
RedissonConfigContext redissonConfigContext = null;
if (connectionType.equals(RedisConnectionType.STANDALONE.getConnection_type())) {
redissonConfigContext = new RedissonConfigContext(new StandaloneRedissonConfigStrategyImpl());
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java
index 505874d1..5974c622 100644
--- a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/aspect/DistributedLockHandler.java
@@ -25,12 +25,14 @@ public class DistributedLockHandler {
@Autowired
RedissonLock redissonLock;
- @Pointcut("@annotation(vip.mate.core.lock.annotation.DistributedLock)")
- public void distributedLock() {
- }
-
+ /**
+ * 切面环绕通知
+ * @param joinPoint ProceedingJoinPoint
+ * @param distributedLock DistributedLock
+ * @return Object
+ */
@Around("@annotation(distributedLock)")
- public void around(ProceedingJoinPoint joinPoint, DistributedLock distributedLock) {
+ public Object around(ProceedingJoinPoint joinPoint, DistributedLock distributedLock) {
log.info("[开始]执行RedisLock环绕通知,获取Redis分布式锁开始");
//获取锁名称
String lockName = distributedLock.value();
@@ -40,7 +42,7 @@ public void around(ProceedingJoinPoint joinPoint, DistributedLock distributedLoc
if (redissonLock.lock(lockName, expireSeconds)) {
try {
log.info("获取Redis分布式锁[成功],加锁完成,开始执行业务逻辑...");
- joinPoint.proceed();
+ return joinPoint.proceed();
} catch (Throwable throwable) {
log.error("获取Redis分布式锁[异常],加锁失败", throwable);
throwable.printStackTrace();
@@ -52,6 +54,6 @@ public void around(ProceedingJoinPoint joinPoint, DistributedLock distributedLoc
log.error("获取Redis分布式锁[失败]");
}
log.info("[结束]执行RedisLock环绕通知");
-
+ return null;
}
}
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java
index ba54bcb2..2d2f002c 100644
--- a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/ClusterRedissonConfigStrategyImpl.java
@@ -22,7 +22,7 @@ public Config createRedissonConfig(RedissonProperties redissonProperties) {
String address = redissonProperties.getAddress();
String password = redissonProperties.getPassword();
String[] addrTokens = address.split(",");
- /**设置cluster节点的服务IP和端口*/
+ // 设置cluster节点的服务IP和端口
for (int i = 0; i < addrTokens.length; i++) {
config.useClusterServers()
.addNodeAddress(GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + addrTokens[i]);
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java
index b26ca09f..86406bf5 100644
--- a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/MasterslaveRedissonConfigStrategyImpl.java
@@ -26,13 +26,13 @@ public Config createRedissonConfig(RedissonProperties redissonProperties) {
int database = redissonProperties.getDatabase();
String[] addrTokens = address.split(",");
String masterNodeAddr = addrTokens[0];
- /**设置主节点ip*/
+ // 设置主节点ip
config.useMasterSlaveServers().setMasterAddress(masterNodeAddr);
if (StringUtils.isNotBlank(password)) {
config.useMasterSlaveServers().setPassword(password);
}
config.useMasterSlaveServers().setDatabase(database);
- /**设置从节点,移除第一个节点,默认第一个为主节点*/
+ // 设置从节点,移除第一个节点,默认第一个为主节点
List slaveList = new ArrayList<>();
for (String addrToken : addrTokens) {
slaveList.add(GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + addrToken);
diff --git a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java
index 8138e173..5b6ad6e7 100644
--- a/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java
+++ b/mate-core/mate-starter-lock/src/main/java/vip/mate/core/lock/config/strategy/SentinelRedissonConfigStrategyImpl.java
@@ -24,14 +24,14 @@ public Config createRedissonConfig(RedissonProperties redissonProperties) {
int database = redissonProperties.getDatabase();
String[] addrTokens = address.split(",");
String sentinelAliasName = addrTokens[0];
- /**设置redis配置文件sentinel.conf配置的sentinel别名*/
+ // 设置redis配置文件sentinel.conf配置的sentinel别名
config.useSentinelServers()
.setMasterName(sentinelAliasName);
config.useSentinelServers().setDatabase(database);
if (StringUtils.isNotBlank(password)) {
config.useSentinelServers().setPassword(password);
}
- /**设置sentinel节点的服务IP和端口*/
+ // 设置sentinel节点的服务IP和端口
for (int i = 1; i < addrTokens.length; i++) {
config.useSentinelServers().addSentinelAddress(GlobalConstant.REDIS_CONNECTION_PREFIX.getConstant_value() + addrTokens[i]);
}
From 11bb65b1b5a820c6958ae1e9b18f2d1617bd0ff3 Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Sat, 24 Oct 2020 09:46:42 +0800
Subject: [PATCH 09/19] =?UTF-8?q?redis=E5=B7=A5=E5=85=B7=E7=B1=BB=E7=BB=9F?=
=?UTF-8?q?=E4=B8=80=E5=BC=82=E5=B8=B8=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mate/core/redis/core/RedisService.java | 50 ++++++++++---------
1 file changed, 26 insertions(+), 24 deletions(-)
diff --git a/mate-core/mate-starter-redis/src/main/java/vip/mate/core/redis/core/RedisService.java b/mate-core/mate-starter-redis/src/main/java/vip/mate/core/redis/core/RedisService.java
index f8feb183..dff1bb14 100644
--- a/mate-core/mate-starter-redis/src/main/java/vip/mate/core/redis/core/RedisService.java
+++ b/mate-core/mate-starter-redis/src/main/java/vip/mate/core/redis/core/RedisService.java
@@ -16,6 +16,7 @@
*/
package vip.mate.core.redis.core;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
@@ -39,6 +40,7 @@
* @author xuzhanfu
* @date 2019-10-11 19:02
**/
+@Slf4j
public class RedisService {
@Autowired
@@ -59,7 +61,7 @@ public Boolean expire(String key, Long time) {
}
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -123,7 +125,7 @@ public Boolean hasKey(String key) {
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -177,7 +179,7 @@ public Boolean set(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -199,7 +201,7 @@ public Boolean set(String key, Object value, Long time) {
}
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -222,7 +224,7 @@ public Boolean set(String key, Object value, Duration timeout) {
}
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -288,7 +290,7 @@ public Boolean hmset(String key, Map map) {
redisTemplate.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -309,7 +311,7 @@ public Boolean hmset(String key, Map map, Long time) {
}
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -327,7 +329,7 @@ public Boolean hset(String key, String item, Object value) {
redisTemplate.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -349,7 +351,7 @@ public Boolean hset(String key, String item, Object value, Long time) {
}
return true;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Exception: {}", e.getMessage());
return false;
}
}
@@ -409,7 +411,7 @@ public Set
### 功能特点
-- 主体框架:采用最新的Spring Cloud Hoxton SR8, Spring Boot 2.3.4.RELEASE, Spring Cloud Alibaba 2.2.3.RELEASE版本进行系统设计;
+- 主体框架:采用最新的Spring Cloud Hoxton SR8, Spring Boot 2.3.5.RELEASE, Spring Cloud Alibaba 2.2.3.RELEASE版本进行系统设计;
- 统一注册:支持nacos作为注册中心,实现多配置、分群组、分命名空间、多业务模块的注册和发现功能;
diff --git a/mate-core/mate-starter-dependencies/pom.xml b/mate-core/mate-starter-dependencies/pom.xml
index c32877e9..5f2e6f29 100644
--- a/mate-core/mate-starter-dependencies/pom.xml
+++ b/mate-core/mate-starter-dependencies/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.3.4.RELEASE
+ 2.3.5.RELEASE
4.0.0
@@ -20,7 +20,7 @@
1.5.8-SNAPSHOT
UTF-8
- 2.3.4.RELEASE
+ 2.3.5.RELEASE
Hoxton.SR8
2.2.3.RELEASE
From 12d19808ee1145b9dfb785c1babdb9f28ea9c618 Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Sat, 31 Oct 2020 09:36:15 +0800
Subject: [PATCH 18/19] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BD=91=E5=85=B3?=
=?UTF-8?q?=E9=89=B4=E6=9D=83get=E6=96=B9=E6=B3=95bug,=E5=85=A8=E5=B1=80?=
=?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8B=A6=E6=88=AATokenException?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../core/cloud/props/MateUaaProperties.java | 10 +-
.../core/common/exception/TokenException.java | 13 +-
.../vip/mate/gateway/filter/UaaFilter.java | 9 +-
.../handler/ExceptionHandlerAdvice.java | 113 ++++++++++--------
.../handler/JsonErrorExceptionHandler.java | 7 +-
5 files changed, 86 insertions(+), 66 deletions(-)
diff --git a/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/props/MateUaaProperties.java b/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/props/MateUaaProperties.java
index 9cfccfb0..3b72b50b 100644
--- a/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/props/MateUaaProperties.java
+++ b/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/props/MateUaaProperties.java
@@ -1,6 +1,5 @@
package vip.mate.core.cloud.props;
-import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -36,13 +35,16 @@ public class MateUaaProperties {
private static final String[] ENDPOINTS = {
"/oauth/**",
"/actuator/**",
- "/*/v2/api-docs",
+ "/v2/api-docs/**",
+ "/v2/api-docs-ext/**",
"/swagger/api-docs",
"/swagger-ui.html",
"/doc.html",
"/swagger-resources/**",
"/webjars/**",
"/druid/**",
+ "/error/**",
+ "/assets/**",
"/auth/logout",
"/auth/code"
};
@@ -52,7 +54,9 @@ public class MateUaaProperties {
* @return List
*/
public List getIgnoreUrl() {
- Collections.addAll(ignoreUrl, ENDPOINTS);
+ if (!ignoreUrl.contains("/doc.html")) {
+ Collections.addAll(ignoreUrl, ENDPOINTS);
+ }
return ignoreUrl;
}
diff --git a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/exception/TokenException.java b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/exception/TokenException.java
index 1842e9f5..732f3a66 100644
--- a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/exception/TokenException.java
+++ b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/exception/TokenException.java
@@ -1,10 +1,15 @@
package vip.mate.core.common.exception;
+/**
+ * Token处理异常
+ *
+ * @author xuzhanfu
+ */
public class TokenException extends RuntimeException {
- private static final long serialVersionUID = -109638013567525177L;
+ private static final long serialVersionUID = -109638013567525177L;
- public TokenException(String message) {
- super(message);
- }
+ public TokenException(String message) {
+ super(message);
+ }
}
diff --git a/mate-gateway/src/main/java/vip/mate/gateway/filter/UaaFilter.java b/mate-gateway/src/main/java/vip/mate/gateway/filter/UaaFilter.java
index 86d8b10b..caf69efb 100644
--- a/mate-gateway/src/main/java/vip/mate/gateway/filter/UaaFilter.java
+++ b/mate-gateway/src/main/java/vip/mate/gateway/filter/UaaFilter.java
@@ -9,7 +9,6 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
-import org.springframework.util.AntPathMatcher;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import vip.mate.core.cloud.props.MateUaaProperties;
@@ -18,10 +17,6 @@
import vip.mate.core.common.util.ResponseUtil;
import vip.mate.core.common.util.SecurityUtil;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
/**
* 网关统一的token验证
*
@@ -93,4 +88,8 @@ private Mono unauthorized(ServerHttpResponse resp, String msg) {
public int getOrder() {
return MateConstant.MATE_UAA_FILTER_ORDER;
}
+
+ public static void main(String[] args) {
+
+ }
}
diff --git a/mate-gateway/src/main/java/vip/mate/gateway/handler/ExceptionHandlerAdvice.java b/mate-gateway/src/main/java/vip/mate/gateway/handler/ExceptionHandlerAdvice.java
index f8b34c3f..d6f27064 100644
--- a/mate-gateway/src/main/java/vip/mate/gateway/handler/ExceptionHandlerAdvice.java
+++ b/mate-gateway/src/main/java/vip/mate/gateway/handler/ExceptionHandlerAdvice.java
@@ -11,63 +11,78 @@
import org.springframework.web.server.ResponseStatusException;
import vip.mate.core.common.api.Result;
import vip.mate.core.common.api.ResultCode;
+import vip.mate.core.common.exception.TokenException;
+/**
+ * 异常处理通知
+ *
+ * @author pangu
+ */
@Slf4j
@Component
public class ExceptionHandlerAdvice {
- @ExceptionHandler(value = {ResponseStatusException.class})
- public Result handle(ResponseStatusException ex) {
- log.error("response status exception:{}", ex.getMessage());
- if (StringUtils.contains(ex.getMessage(), HttpStatus.NOT_FOUND.toString())){
- return Result.fail(ResultCode.NOT_FOUND, ex.getMessage());
- } else {
- return Result.fail(ResultCode.ERROR);
- }
- }
+ @ExceptionHandler(value = {ResponseStatusException.class})
+ public Result> handle(ResponseStatusException ex) {
+ log.error("response status exception:{}", ex.getMessage());
+ if (StringUtils.contains(ex.getMessage(), HttpStatus.NOT_FOUND.toString())) {
+ return Result.fail(ResultCode.NOT_FOUND, ex.getMessage());
+ } else {
+ return Result.fail(ResultCode.ERROR);
+ }
+ }
- @ExceptionHandler(value = {ConnectTimeoutException.class})
- public Result handle(ConnectTimeoutException ex) {
- log.error("connect timeout exception:{}", ex.getMessage());
- return Result.fail(ResultCode.ERROR);
- }
+ @ExceptionHandler(value = {ConnectTimeoutException.class})
+ public Result> handle(ConnectTimeoutException ex) {
+ log.error("connect timeout exception:{}", ex.getMessage());
+ return Result.fail(ResultCode.ERROR);
+ }
- @ExceptionHandler(value = {NotFoundException.class})
- @ResponseStatus(HttpStatus.NOT_FOUND)
- public Result handle(NotFoundException ex) {
- log.error("not found exception:{}", ex.getMessage());
- return Result.fail(ResultCode.NOT_FOUND);
- }
+ @ExceptionHandler(value = {NotFoundException.class})
+ @ResponseStatus(HttpStatus.NOT_FOUND)
+ public Result> handle(NotFoundException ex) {
+ log.error("not found exception:{}", ex.getMessage());
+ return Result.fail(ResultCode.NOT_FOUND);
+ }
- @ExceptionHandler(value = {RuntimeException.class})
- @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
- public Result handle(RuntimeException ex) {
- log.error("runtime exception:{}", ex.getMessage());
- return Result.fail();
- }
+ @ExceptionHandler(value = {RuntimeException.class})
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public Result> handle(RuntimeException ex) {
+ log.error("runtime exception:{}", ex.getMessage());
+ return Result.fail(ex.getMessage());
+ }
- @ExceptionHandler(value = {Exception.class})
- @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
- public Result handle(Exception ex) {
- log.error("exception:{}", ex.getMessage());
- return Result.fail();
- }
+ @ExceptionHandler(value = {TokenException.class})
+ @ResponseStatus(HttpStatus.UNAUTHORIZED)
+ public Result> handle(TokenException ex) {
+ log.error("runtime exception:{}", ex.getMessage());
+ return Result.fail(HttpStatus.UNAUTHORIZED.value(), ex.getMessage());
+ }
- @ExceptionHandler(value = {Throwable.class})
- @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
- public Result handle(Throwable throwable) {
- Result result = Result.fail();
- if (throwable instanceof ResponseStatusException) {
- result = handle((ResponseStatusException) throwable);
- } else if (throwable instanceof ConnectTimeoutException) {
- result = handle((ConnectTimeoutException) throwable);
- } else if (throwable instanceof NotFoundException) {
- result = handle((NotFoundException) throwable);
- } else if (throwable instanceof RuntimeException) {
- result = handle((RuntimeException) throwable);
- } else if (throwable instanceof Exception) {
- result = handle((Exception) throwable);
- }
- return result;
- }
+ @ExceptionHandler(value = {Exception.class})
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public Result> handle(Exception ex) {
+ log.error("exception:{}", ex.getMessage());
+ return Result.fail();
+ }
+
+ @ExceptionHandler(value = {Throwable.class})
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public Result> handle(Throwable throwable) {
+ Result result = Result.fail();
+ if (throwable instanceof ResponseStatusException) {
+ result = handle((ResponseStatusException) throwable);
+ } else if (throwable instanceof ConnectTimeoutException) {
+ result = handle((ConnectTimeoutException) throwable);
+ } else if (throwable instanceof NotFoundException) {
+ result = handle((NotFoundException) throwable);
+ } else if (throwable instanceof TokenException) {
+ result = handle((TokenException) throwable);
+ } else if (throwable instanceof RuntimeException) {
+ result = handle((RuntimeException) throwable);
+ } else if (throwable instanceof Exception) {
+ result = handle((Exception) throwable);
+ }
+ return result;
+ }
}
diff --git a/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java b/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java
index 28a1c696..44d1f958 100644
--- a/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java
+++ b/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java
@@ -1,22 +1,17 @@
package vip.mate.gateway.handler;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.ErrorProperties;
import org.springframework.boot.autoconfigure.web.ResourceProperties;
import org.springframework.boot.autoconfigure.web.reactive.error.DefaultErrorWebExceptionHandler;
import org.springframework.boot.web.reactive.error.ErrorAttributes;
import org.springframework.context.ApplicationContext;
-import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.*;
-import org.springframework.web.server.ResponseStatusException;
import reactor.core.publisher.Mono;
-import java.io.FileNotFoundException;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -48,6 +43,8 @@ public JsonErrorExceptionHandler(ErrorAttributes errorAttributes,
// } else if (error instanceof ResponseStatusException
// && StringUtils.contains(error.getMessage(), HttpStatus.NOT_FOUND.toString())) {
// code = HttpStatus.NOT_FOUND.value();
+// } else if (error instanceof TokenException) {
+// code = HttpStatus.UNAUTHORIZED.value();
// }
// Map errorAttributes = new HashMap<>(8);
// errorAttributes.put("message", error.getMessage());
From 5caf4e20b837f78d67236cd0d1201e836036fe40 Mon Sep 17 00:00:00 2001
From: matevip <7333791@qq.com>
Date: Sat, 31 Oct 2020 09:42:32 +0800
Subject: [PATCH 19/19] =?UTF-8?q?=E5=8F=91=E5=B8=831.5.8=E6=AD=A3=E5=BC=8F?=
=?UTF-8?q?=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mate-core/mate-starter-auth/pom.xml | 2 +-
mate-core/mate-starter-cloud/pom.xml | 2 +-
mate-core/mate-starter-common/pom.xml | 2 +-
.../main/java/vip/mate/core/common/constant/MateConstant.java | 2 +-
mate-core/mate-starter-database/pom.xml | 2 +-
mate-core/mate-starter-dependencies/pom.xml | 4 ++--
mate-core/mate-starter-dozer/pom.xml | 2 +-
mate-core/mate-starter-dubbo/pom.xml | 2 +-
mate-core/mate-starter-elasticsearch/pom.xml | 2 +-
mate-core/mate-starter-encrypt/pom.xml | 2 +-
mate-core/mate-starter-feign/pom.xml | 2 +-
mate-core/mate-starter-file/pom.xml | 2 +-
mate-core/mate-starter-gray/pom.xml | 2 +-
mate-core/mate-starter-j2cache/pom.xml | 2 +-
mate-core/mate-starter-jetcache/pom.xml | 2 +-
mate-core/mate-starter-job/pom.xml | 2 +-
mate-core/mate-starter-kafka/pom.xml | 2 +-
mate-core/mate-starter-lock/pom.xml | 2 +-
mate-core/mate-starter-log/pom.xml | 2 +-
mate-core/mate-starter-mail/pom.xml | 2 +-
mate-core/mate-starter-mongodb/pom.xml | 2 +-
mate-core/mate-starter-oss/pom.xml | 2 +-
mate-core/mate-starter-prometheus/pom.xml | 2 +-
mate-core/mate-starter-redis/pom.xml | 2 +-
mate-core/mate-starter-retrofit/pom.xml | 2 +-
mate-core/mate-starter-rocketmq/pom.xml | 2 +-
mate-core/mate-starter-rule/pom.xml | 2 +-
mate-core/mate-starter-seata/pom.xml | 2 +-
mate-core/mate-starter-security/pom.xml | 2 +-
mate-core/mate-starter-sentinel/pom.xml | 2 +-
mate-core/mate-starter-sharding/pom.xml | 2 +-
mate-core/mate-starter-sms/pom.xml | 2 +-
mate-core/mate-starter-strategy/pom.xml | 2 +-
mate-core/mate-starter-web/pom.xml | 2 +-
mate-core/pom.xml | 4 ++--
mate-gateway/pom.xml | 2 +-
mate-mq/mate-log-producer/pom.xml | 2 +-
mate-mq/mate-message-consumer/pom.xml | 2 +-
mate-mq/mate-message-producer/pom.xml | 2 +-
mate-mq/pom.xml | 2 +-
mate-platform/mate-component-api/pom.xml | 2 +-
mate-platform/mate-component/pom.xml | 2 +-
mate-platform/mate-system-api/pom.xml | 2 +-
mate-platform/mate-system/pom.xml | 2 +-
mate-platform/pom.xml | 2 +-
mate-support/mate-admin/pom.xml | 2 +-
mate-support/mate-code/pom.xml | 2 +-
mate-support/mate-job-admin/pom.xml | 2 +-
.../jquery-slimscroll/jquery.slimscroll.min.js | 2 +-
mate-support/mate-job/pom.xml | 2 +-
mate-support/pom.xml | 2 +-
mate-uaa/pom.xml | 2 +-
pom.xml | 4 ++--
53 files changed, 56 insertions(+), 56 deletions(-)
diff --git a/mate-core/mate-starter-auth/pom.xml b/mate-core/mate-starter-auth/pom.xml
index 97c3ae68..51305343 100644
--- a/mate-core/mate-starter-auth/pom.xml
+++ b/mate-core/mate-starter-auth/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-cloud/pom.xml b/mate-core/mate-starter-cloud/pom.xml
index fa57b7e7..56a135d6 100644
--- a/mate-core/mate-starter-cloud/pom.xml
+++ b/mate-core/mate-starter-cloud/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-common/pom.xml b/mate-core/mate-starter-common/pom.xml
index 95bef716..0616702d 100644
--- a/mate-core/mate-starter-common/pom.xml
+++ b/mate-core/mate-starter-common/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java
index 1995ca8e..4bf8639e 100644
--- a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java
+++ b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java
@@ -8,7 +8,7 @@ public class MateConstant {
/**
* 应用版本号
*/
- public static final String MATE_APP_VERSION = "1.5.8-SNAPSHOT";
+ public static final String MATE_APP_VERSION = "1.5.8";
/**
* Spring 应用名 prop key
diff --git a/mate-core/mate-starter-database/pom.xml b/mate-core/mate-starter-database/pom.xml
index dba7a906..8c7381d3 100644
--- a/mate-core/mate-starter-database/pom.xml
+++ b/mate-core/mate-starter-database/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-dependencies/pom.xml b/mate-core/mate-starter-dependencies/pom.xml
index 5f2e6f29..f4e74883 100644
--- a/mate-core/mate-starter-dependencies/pom.xml
+++ b/mate-core/mate-starter-dependencies/pom.xml
@@ -12,12 +12,12 @@
vip.mate
mate-starter-dependencies
- 1.5.8-SNAPSHOT
+ 1.5.8
pom
MateCloud统一版本依赖
- 1.5.8-SNAPSHOT
+ 1.5.8
UTF-8
2.3.5.RELEASE
diff --git a/mate-core/mate-starter-dozer/pom.xml b/mate-core/mate-starter-dozer/pom.xml
index 932311ed..3cb05a92 100644
--- a/mate-core/mate-starter-dozer/pom.xml
+++ b/mate-core/mate-starter-dozer/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-dubbo/pom.xml b/mate-core/mate-starter-dubbo/pom.xml
index 40cf0d1c..d223bbce 100644
--- a/mate-core/mate-starter-dubbo/pom.xml
+++ b/mate-core/mate-starter-dubbo/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-elasticsearch/pom.xml b/mate-core/mate-starter-elasticsearch/pom.xml
index 6c3fa9f3..c3d468bc 100644
--- a/mate-core/mate-starter-elasticsearch/pom.xml
+++ b/mate-core/mate-starter-elasticsearch/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-encrypt/pom.xml b/mate-core/mate-starter-encrypt/pom.xml
index 8c6a384a..bdc58ad3 100644
--- a/mate-core/mate-starter-encrypt/pom.xml
+++ b/mate-core/mate-starter-encrypt/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-feign/pom.xml b/mate-core/mate-starter-feign/pom.xml
index 00a71bca..70d1f134 100644
--- a/mate-core/mate-starter-feign/pom.xml
+++ b/mate-core/mate-starter-feign/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-file/pom.xml b/mate-core/mate-starter-file/pom.xml
index 10bd3e59..98058261 100644
--- a/mate-core/mate-starter-file/pom.xml
+++ b/mate-core/mate-starter-file/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-gray/pom.xml b/mate-core/mate-starter-gray/pom.xml
index a471437b..3a798174 100644
--- a/mate-core/mate-starter-gray/pom.xml
+++ b/mate-core/mate-starter-gray/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-j2cache/pom.xml b/mate-core/mate-starter-j2cache/pom.xml
index 50a9c446..967d9a43 100644
--- a/mate-core/mate-starter-j2cache/pom.xml
+++ b/mate-core/mate-starter-j2cache/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-jetcache/pom.xml b/mate-core/mate-starter-jetcache/pom.xml
index b627179c..fde819fb 100644
--- a/mate-core/mate-starter-jetcache/pom.xml
+++ b/mate-core/mate-starter-jetcache/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-job/pom.xml b/mate-core/mate-starter-job/pom.xml
index e654c255..bc6d8d14 100644
--- a/mate-core/mate-starter-job/pom.xml
+++ b/mate-core/mate-starter-job/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
jar
diff --git a/mate-core/mate-starter-kafka/pom.xml b/mate-core/mate-starter-kafka/pom.xml
index b2dcab99..e28b032a 100644
--- a/mate-core/mate-starter-kafka/pom.xml
+++ b/mate-core/mate-starter-kafka/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-lock/pom.xml b/mate-core/mate-starter-lock/pom.xml
index eeb743de..ff92edc7 100644
--- a/mate-core/mate-starter-lock/pom.xml
+++ b/mate-core/mate-starter-lock/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-log/pom.xml b/mate-core/mate-starter-log/pom.xml
index 593203ab..7a1442d6 100644
--- a/mate-core/mate-starter-log/pom.xml
+++ b/mate-core/mate-starter-log/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-mail/pom.xml b/mate-core/mate-starter-mail/pom.xml
index 398f586e..38ab620f 100644
--- a/mate-core/mate-starter-mail/pom.xml
+++ b/mate-core/mate-starter-mail/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-mongodb/pom.xml b/mate-core/mate-starter-mongodb/pom.xml
index aebb8b2c..5557ce45 100644
--- a/mate-core/mate-starter-mongodb/pom.xml
+++ b/mate-core/mate-starter-mongodb/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-oss/pom.xml b/mate-core/mate-starter-oss/pom.xml
index 7572cc7b..d59dd9b1 100644
--- a/mate-core/mate-starter-oss/pom.xml
+++ b/mate-core/mate-starter-oss/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-prometheus/pom.xml b/mate-core/mate-starter-prometheus/pom.xml
index fcbb5bab..ca69c9e5 100644
--- a/mate-core/mate-starter-prometheus/pom.xml
+++ b/mate-core/mate-starter-prometheus/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-redis/pom.xml b/mate-core/mate-starter-redis/pom.xml
index 66ae37e7..319ee6a4 100644
--- a/mate-core/mate-starter-redis/pom.xml
+++ b/mate-core/mate-starter-redis/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-retrofit/pom.xml b/mate-core/mate-starter-retrofit/pom.xml
index 1e0ee2eb..6fd51bed 100644
--- a/mate-core/mate-starter-retrofit/pom.xml
+++ b/mate-core/mate-starter-retrofit/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-rocketmq/pom.xml b/mate-core/mate-starter-rocketmq/pom.xml
index e12c14bf..5146c7e1 100644
--- a/mate-core/mate-starter-rocketmq/pom.xml
+++ b/mate-core/mate-starter-rocketmq/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-rule/pom.xml b/mate-core/mate-starter-rule/pom.xml
index b1bf860f..aa32bebf 100644
--- a/mate-core/mate-starter-rule/pom.xml
+++ b/mate-core/mate-starter-rule/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-seata/pom.xml b/mate-core/mate-starter-seata/pom.xml
index 5d19a245..e574fbf1 100644
--- a/mate-core/mate-starter-seata/pom.xml
+++ b/mate-core/mate-starter-seata/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-security/pom.xml b/mate-core/mate-starter-security/pom.xml
index 6e2d66e6..8a19dc8f 100644
--- a/mate-core/mate-starter-security/pom.xml
+++ b/mate-core/mate-starter-security/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-sentinel/pom.xml b/mate-core/mate-starter-sentinel/pom.xml
index ac0062d6..beb8ace4 100644
--- a/mate-core/mate-starter-sentinel/pom.xml
+++ b/mate-core/mate-starter-sentinel/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-sharding/pom.xml b/mate-core/mate-starter-sharding/pom.xml
index 2580c7f4..8c9a3d3f 100644
--- a/mate-core/mate-starter-sharding/pom.xml
+++ b/mate-core/mate-starter-sharding/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-sms/pom.xml b/mate-core/mate-starter-sms/pom.xml
index 2a7032fd..47045837 100644
--- a/mate-core/mate-starter-sms/pom.xml
+++ b/mate-core/mate-starter-sms/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-strategy/pom.xml b/mate-core/mate-starter-strategy/pom.xml
index 090deba9..eefcd9f3 100644
--- a/mate-core/mate-starter-strategy/pom.xml
+++ b/mate-core/mate-starter-strategy/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/mate-starter-web/pom.xml b/mate-core/mate-starter-web/pom.xml
index 53c6ac39..2d6e8e29 100644
--- a/mate-core/mate-starter-web/pom.xml
+++ b/mate-core/mate-starter-web/pom.xml
@@ -5,7 +5,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-core/pom.xml b/mate-core/pom.xml
index 3c10b4a5..0d20bceb 100644
--- a/mate-core/pom.xml
+++ b/mate-core/pom.xml
@@ -6,7 +6,7 @@
mate-core
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
pom
@@ -46,7 +46,7 @@
- 1.5.8-SNAPSHOT
+ 1.5.8
2.9.2
1.5.21
1.9.4
diff --git a/mate-gateway/pom.xml b/mate-gateway/pom.xml
index a91973ee..6e18eada 100644
--- a/mate-gateway/pom.xml
+++ b/mate-gateway/pom.xml
@@ -5,7 +5,7 @@
matecloud
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-mq/mate-log-producer/pom.xml b/mate-mq/mate-log-producer/pom.xml
index 93303c67..18a77a56 100644
--- a/mate-mq/mate-log-producer/pom.xml
+++ b/mate-mq/mate-log-producer/pom.xml
@@ -5,7 +5,7 @@
mate-mq
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-mq/mate-message-consumer/pom.xml b/mate-mq/mate-message-consumer/pom.xml
index 26855d1f..6295c3fa 100644
--- a/mate-mq/mate-message-consumer/pom.xml
+++ b/mate-mq/mate-message-consumer/pom.xml
@@ -5,7 +5,7 @@
mate-mq
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-mq/mate-message-producer/pom.xml b/mate-mq/mate-message-producer/pom.xml
index adc3d350..b642404e 100644
--- a/mate-mq/mate-message-producer/pom.xml
+++ b/mate-mq/mate-message-producer/pom.xml
@@ -5,7 +5,7 @@
mate-mq
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-mq/pom.xml b/mate-mq/pom.xml
index fae19371..b242614a 100644
--- a/mate-mq/pom.xml
+++ b/mate-mq/pom.xml
@@ -5,7 +5,7 @@
matecloud
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-platform/mate-component-api/pom.xml b/mate-platform/mate-component-api/pom.xml
index ab1cf047..f2d32bf7 100644
--- a/mate-platform/mate-component-api/pom.xml
+++ b/mate-platform/mate-component-api/pom.xml
@@ -5,7 +5,7 @@
mate-platform
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-platform/mate-component/pom.xml b/mate-platform/mate-component/pom.xml
index 4e1273f6..00391f0f 100644
--- a/mate-platform/mate-component/pom.xml
+++ b/mate-platform/mate-component/pom.xml
@@ -5,7 +5,7 @@
mate-platform
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-platform/mate-system-api/pom.xml b/mate-platform/mate-system-api/pom.xml
index 79271e76..28f80a3f 100644
--- a/mate-platform/mate-system-api/pom.xml
+++ b/mate-platform/mate-system-api/pom.xml
@@ -5,7 +5,7 @@
mate-platform
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-platform/mate-system/pom.xml b/mate-platform/mate-system/pom.xml
index 0c624ee7..d5b7434f 100644
--- a/mate-platform/mate-system/pom.xml
+++ b/mate-platform/mate-system/pom.xml
@@ -5,7 +5,7 @@
mate-platform
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-platform/pom.xml b/mate-platform/pom.xml
index e247527b..9a9e16ae 100644
--- a/mate-platform/pom.xml
+++ b/mate-platform/pom.xml
@@ -5,7 +5,7 @@
matecloud
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-support/mate-admin/pom.xml b/mate-support/mate-admin/pom.xml
index c0562fa8..0baf3f0c 100644
--- a/mate-support/mate-admin/pom.xml
+++ b/mate-support/mate-admin/pom.xml
@@ -5,7 +5,7 @@
mate-support
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-support/mate-code/pom.xml b/mate-support/mate-code/pom.xml
index 380aac6e..38daf3b0 100644
--- a/mate-support/mate-code/pom.xml
+++ b/mate-support/mate-code/pom.xml
@@ -5,7 +5,7 @@
mate-support
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-support/mate-job-admin/pom.xml b/mate-support/mate-job-admin/pom.xml
index 456b6937..de190793 100644
--- a/mate-support/mate-job-admin/pom.xml
+++ b/mate-support/mate-job-admin/pom.xml
@@ -5,7 +5,7 @@
mate-support
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-support/mate-job-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js b/mate-support/mate-job-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
index 29f59290..2f1b8d3d 100644
--- a/mate-support/mate-job-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
+++ b/mate-support/mate-job-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
@@ -2,7 +2,7 @@
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
- * Version: 1.5.8-SNAPSHOT
+ * Version: 1.5.8
*
*/
(function(e){e.fn.extend({slimScroll:function(f){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},f);this.each(function(){function v(d){if(r){d=d||window.event;
diff --git a/mate-support/mate-job/pom.xml b/mate-support/mate-job/pom.xml
index 9fb1c8cc..19b704bb 100644
--- a/mate-support/mate-job/pom.xml
+++ b/mate-support/mate-job/pom.xml
@@ -5,7 +5,7 @@
mate-support
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-support/pom.xml b/mate-support/pom.xml
index 362d52bf..4c9c2593 100644
--- a/mate-support/pom.xml
+++ b/mate-support/pom.xml
@@ -5,7 +5,7 @@
matecloud
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/mate-uaa/pom.xml b/mate-uaa/pom.xml
index 20aaaae9..f4704992 100644
--- a/mate-uaa/pom.xml
+++ b/mate-uaa/pom.xml
@@ -5,7 +5,7 @@
matecloud
vip.mate
- 1.5.8-SNAPSHOT
+ 1.5.8
4.0.0
diff --git a/pom.xml b/pom.xml
index fc453415..38479b38 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
vip.mate
matecloud
pom
- 1.5.8-SNAPSHOT
+ 1.5.8
matecloud
Mate Cloud - 基于Spring Cloud Alibaba实现的微服务架构
@@ -23,7 +23,7 @@
- 1.5.8-SNAPSHOT
+ 1.5.8
1.8
3.8.1
UTF-8