接口
This commit is contained in:
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class MybatisBaseService<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> {
|
||||
|
||||
|
||||
@@ -12,4 +15,10 @@ public class MybatisBaseService<M extends BaseMapper<T>, T> extends ServiceImpl<
|
||||
qw.eq("sid", sid);
|
||||
return baseMapper.selectOne(qw);
|
||||
}
|
||||
|
||||
public int deleteBySid(String sid) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("sid", sid);
|
||||
return baseMapper.deleteByMap(map);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.yxt.demo.common.jdbc.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import com.yxt.demo.common.core.vo.Vo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Project: jbsc-commons <br/>
|
||||
* File: PagerUtil.java <br/>
|
||||
* Class: org.jbase.jbsc.commons.base.utils.PagerUtil <br/>
|
||||
* Description: <描述类的功能>. <br/>
|
||||
* Copyright: Copyright (c) 2011 <br/>
|
||||
* Company: https://gitee.com/liuzp315 <br/>
|
||||
* Makedate: 2020/9/22 上午9:35 <br/>
|
||||
*
|
||||
* @author popo
|
||||
* @version 1.0
|
||||
* @since 1.0
|
||||
*/
|
||||
public abstract class PagerUtil {
|
||||
|
||||
public static <T> IPage<T> queryToPage(PagerQuery pq) {
|
||||
IPage<T> page = new Page<>();
|
||||
page.setSize(pq.getSize()).setCurrent(pq.getCurrent());
|
||||
return page;
|
||||
}
|
||||
|
||||
public static <V, T> PagerVo<V> pageToVo(IPage pr, PagerVo<V> pv) {
|
||||
if (pv == null) {
|
||||
pv = new PagerVo<V>();
|
||||
}
|
||||
pv.setCurrent(pr.getCurrent()).setSize(pr.getSize())
|
||||
.setTotal(pr.getTotal()).setPages(pr.getPages())
|
||||
.setRecords(pr.getRecords());
|
||||
return pv;
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换pagerVo
|
||||
*
|
||||
* @param soure
|
||||
* @return
|
||||
*/
|
||||
public static <S extends Vo, T extends Vo> PagerVo<T> switchPagerVo(
|
||||
PagerVo<S> soure) {
|
||||
if (soure == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
PagerVo<T> target = new PagerVo<>();
|
||||
target.setCurrent(soure.getCurrent()).setPages(soure.getPages())
|
||||
.setSize(soure.getSize()).setTotal(soure.getTotal());
|
||||
target.setRecords(new ArrayList<T>());
|
||||
|
||||
return target;
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,18 @@
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.auth0</groupId>
|
||||
<artifactId>java-jwt</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
package com.yxt.demo.common.utils.allutils;
|
||||
|
||||
import org.apache.commons.codec.DecoderException;
|
||||
import org.apache.commons.codec.binary.Hex;
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
import org.apache.tomcat.util.codec.binary.Base64;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.URLEncoder;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
/**
|
||||
* 封装各种格式的编码解码工具类. 1.Commons-Codec的 hex/base64 编码 2.自制的base62 编码
|
||||
* 3.Commons-Lang的xml/html escape 4.JDK提供的URLEncoder
|
||||
*
|
||||
* @author dimengzhe
|
||||
* @date 2020/9/11 13:38
|
||||
* @description 编码解码工具类
|
||||
*/
|
||||
|
||||
public class Encodes {
|
||||
|
||||
private static final String DEFAULT_URL_ENCODING = "UTF-8";
|
||||
private static final char[] BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
|
||||
private static final String SALT = "jlzx@yxt?";
|
||||
|
||||
/**
|
||||
* Hex编码.
|
||||
*/
|
||||
public static String encodeHex(byte[] input) {
|
||||
return new String(Hex.encodeHex(input));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hex解码.
|
||||
*/
|
||||
public static byte[] decodeHex(String input) {
|
||||
try {
|
||||
return Hex.decodeHex(input.toCharArray());
|
||||
} catch (DecoderException e) {
|
||||
throw Exceptions.unchecked(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64编码.
|
||||
*/
|
||||
public static String encodeBase64(byte[] input) {
|
||||
return new String(Base64.encodeBase64(input));
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64编码.
|
||||
*/
|
||||
public static String encodeBase64(String input) {
|
||||
try {
|
||||
return new String(Base64.encodeBase64(input.getBytes(DEFAULT_URL_ENCODING)));
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64解码.
|
||||
*/
|
||||
public static byte[] decodeBase64(String input) {
|
||||
return Base64.decodeBase64(input.getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64解码.
|
||||
*/
|
||||
public static String decodeBase64String(String input) {
|
||||
try {
|
||||
return new String(Base64.decodeBase64(input.getBytes()), DEFAULT_URL_ENCODING);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Base62编码。
|
||||
*/
|
||||
public static String encodeBase62(byte[] input) {
|
||||
char[] chars = new char[input.length];
|
||||
for (int i = 0; i < input.length; i++) {
|
||||
chars[i] = BASE62[((input[i] & 0xFF) % BASE62.length)];
|
||||
}
|
||||
return new String(chars);
|
||||
}
|
||||
|
||||
/**
|
||||
* Html 转码.
|
||||
*/
|
||||
public static String escapeHtml(String html) {
|
||||
return StringEscapeUtils.escapeHtml4(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Html 解码.
|
||||
*/
|
||||
public static String unescapeHtml(String htmlEscaped) {
|
||||
return StringEscapeUtils.unescapeHtml4(htmlEscaped);
|
||||
}
|
||||
|
||||
/**
|
||||
* Xml 转码.
|
||||
*/
|
||||
public static String escapeXml(String xml) {
|
||||
return StringEscapeUtils.escapeXml10(xml);
|
||||
}
|
||||
|
||||
/**
|
||||
* Xml 解码.
|
||||
*/
|
||||
public static String unescapeXml(String xmlEscaped) {
|
||||
return StringEscapeUtils.unescapeXml(xmlEscaped);
|
||||
}
|
||||
|
||||
/**
|
||||
* URL 编码, Encode默认为UTF-8.
|
||||
*/
|
||||
public static String urlEncode(String part) {
|
||||
try {
|
||||
return URLEncoder.encode(part, DEFAULT_URL_ENCODING);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw Exceptions.unchecked(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* URL 解码, Encode默认为UTF-8.
|
||||
*/
|
||||
public static String urlDecode(String part) {
|
||||
|
||||
try {
|
||||
return URLDecoder.decode(part, DEFAULT_URL_ENCODING);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw Exceptions.unchecked(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static String md5(String str) {
|
||||
return digest("MD5", str + SALT);
|
||||
}
|
||||
|
||||
public static String sha1(CharSequence cs) {
|
||||
return digest("SHA1", cs);
|
||||
}
|
||||
|
||||
public static String digest(String algorithm, CharSequence cs) {
|
||||
return digest(algorithm, StringUtils.getBytesUTF8(null == cs ? "" : cs), null, 1);
|
||||
}
|
||||
|
||||
public static String digest(String algorithm, byte[] bytes, byte[] salt, int iterations) {
|
||||
try {
|
||||
MessageDigest md = MessageDigest.getInstance(algorithm);
|
||||
if (salt != null) {
|
||||
md.update(salt);
|
||||
}
|
||||
byte[] hashBytes = md.digest(bytes);
|
||||
for (int i = 1; i < iterations; i++) {
|
||||
md.reset();
|
||||
hashBytes = md.digest(hashBytes);
|
||||
}
|
||||
return fixedHexString(hashBytes);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw Exceptions.unchecked(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static String fixedHexString(byte[] hashBytes) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
for (int i = 0; i < hashBytes.length; i++) {
|
||||
sb.append(Integer.toString((hashBytes[i] & 0xFF) + 256, 16).substring(1));
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String md5(String str, boolean isShort) {
|
||||
if (isShort) {
|
||||
return md5(str).substring(8, 24);
|
||||
}
|
||||
return md5(str);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.yxt.demo.common.utils.allutils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
/**
|
||||
* 关于异常的工具类.
|
||||
*
|
||||
* @author dimengzhe
|
||||
* @date 2020/9/11 13:44
|
||||
* @description
|
||||
*/
|
||||
|
||||
public class Exceptions {
|
||||
|
||||
/**
|
||||
* 将CheckedException转换为UncheckedException.
|
||||
*/
|
||||
public static RuntimeException unchecked(Throwable e) {
|
||||
if ((e instanceof RuntimeException)) {
|
||||
return (RuntimeException) e;
|
||||
}
|
||||
if ((e instanceof InvocationTargetException)) {
|
||||
return unchecked(((InvocationTargetException) e).getTargetException());
|
||||
}
|
||||
return new RuntimeException(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将ErrorStack转化为String.
|
||||
*/
|
||||
public static String getStackTraceAsString(Throwable e) {
|
||||
if (e == null) {
|
||||
return "";
|
||||
}
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
e.printStackTrace(new PrintWriter(stringWriter));
|
||||
return stringWriter.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断异常是否由某些底层的异常引起.
|
||||
*/
|
||||
public static boolean isCausedBy(Exception ex, Class<? extends Exception>... causeExceptionClasses) {
|
||||
Throwable cause = ex.getCause();
|
||||
while (cause != null) {
|
||||
for (Class<? extends Exception> causeClass : causeExceptionClasses) {
|
||||
if (causeClass.isInstance(cause)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
cause = cause.getCause();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在request中获取异常类
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
public static Throwable getThrowable(HttpServletRequest request) {
|
||||
Throwable ex = null;
|
||||
if (request.getAttribute("exception") != null) {
|
||||
ex = (Throwable) request.getAttribute("exception");
|
||||
} else if (request.getAttribute("javax.servlet.error.exception") != null) {
|
||||
ex = (Throwable) request.getAttribute("javax.servlet.error.exception");
|
||||
}
|
||||
return ex;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,395 @@
|
||||
package com.yxt.demo.common.utils.allutils;
|
||||
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author dimengzhe
|
||||
* @date 2020/9/18 9:35
|
||||
* @description
|
||||
*/
|
||||
|
||||
public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
|
||||
private static final char SEPARATOR = '_';
|
||||
private static final String CHARSET_NAME = "UTF-8";
|
||||
|
||||
public static boolean isNull(Object obj) {
|
||||
return obj == null;
|
||||
}
|
||||
|
||||
public static boolean isNotNull(Object obj) {
|
||||
return !isNull(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为字节数组
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return
|
||||
*/
|
||||
public static byte[] getBytes(String str) {
|
||||
if (str != null) {
|
||||
try {
|
||||
return str.getBytes(CHARSET_NAME);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为字节数组
|
||||
*
|
||||
* @param bytes
|
||||
* @return
|
||||
*/
|
||||
public static String toString(byte[] bytes) {
|
||||
try {
|
||||
return new String(bytes, CHARSET_NAME);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
return EMPTY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否包含字符串
|
||||
*
|
||||
* @param str 验证字符串
|
||||
* @param strs 字符串组
|
||||
* @return 包含返回true
|
||||
*/
|
||||
public static boolean inString(String str, String... strs) {
|
||||
if (str != null) {
|
||||
for (String s : strs) {
|
||||
if (str.equals(trim(s))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换掉HTML标签方法
|
||||
*/
|
||||
public static String replaceHtml(String html) {
|
||||
if (isBlank(html)) {
|
||||
return "";
|
||||
}
|
||||
String regEx = "<.+?>";
|
||||
Pattern p = Pattern.compile(regEx);
|
||||
Matcher m = p.matcher(html);
|
||||
String s = m.replaceAll("");
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换为手机识别的HTML,去掉样式及属性,保留回车。
|
||||
*
|
||||
* @param html
|
||||
* @return
|
||||
*/
|
||||
public static String replaceMobileHtml(String html) {
|
||||
if (html == null) {
|
||||
return "";
|
||||
}
|
||||
return html.replaceAll("<([a-z]+?)\\s+?.*?>", "<$1>");
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换为手机识别的HTML,去掉样式及属性,保留回车。
|
||||
*
|
||||
* @param txt
|
||||
* @return
|
||||
*/
|
||||
public static String toHtml(String txt) {
|
||||
if (txt == null) {
|
||||
return "";
|
||||
}
|
||||
return replace(replace(Encodes.escapeHtml(txt), "\n", "<br/>"), "\t", " ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 缩略字符串(不区分中英文字符)
|
||||
*
|
||||
* @param str 目标字符串
|
||||
* @param length 截取长度
|
||||
* @return
|
||||
*/
|
||||
public static String abbr(String str, int length) {
|
||||
if (str == null) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int currentLength = 0;
|
||||
for (char c : replaceHtml(StringEscapeUtils.unescapeHtml4(str)).toCharArray()) {
|
||||
currentLength += String.valueOf(c).getBytes("GBK").length;
|
||||
if (currentLength <= length - 3) {
|
||||
sb.append(c);
|
||||
} else {
|
||||
sb.append("...");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String abbr2(String param, int length) {
|
||||
if (param == null) {
|
||||
return "";
|
||||
}
|
||||
StringBuffer result = new StringBuffer();
|
||||
int n = 0;
|
||||
char temp;
|
||||
boolean isCode = false; // 是不是HTML代码
|
||||
boolean isHTML = false; // 是不是HTML特殊字符,如
|
||||
for (int i = 0; i < param.length(); i++) {
|
||||
temp = param.charAt(i);
|
||||
if (temp == '<') {
|
||||
isCode = true;
|
||||
} else if (temp == '&') {
|
||||
isHTML = true;
|
||||
} else if (temp == '>' && isCode) {
|
||||
n = n - 1;
|
||||
isCode = false;
|
||||
} else if (temp == ';' && isHTML) {
|
||||
isHTML = false;
|
||||
}
|
||||
try {
|
||||
if (!isCode && !isHTML) {
|
||||
n += String.valueOf(temp).getBytes("GBK").length;
|
||||
}
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (n <= length - 3) {
|
||||
result.append(temp);
|
||||
} else {
|
||||
result.append("...");
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 取出截取字符串中的HTML标记
|
||||
String temp_result = result.toString().replaceAll("(>)[^<>]*(<?)", "$1$2");
|
||||
// 去掉不需要结素标记的HTML标记
|
||||
temp_result = temp_result.replaceAll(
|
||||
"</?(AREA|BASE|BASEFONT|BODY|BR|COL|COLGROUP|DD|DT|FRAME|HEAD|HR|HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPTION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|basefont|body|br|col|colgroup|dd|dt|frame|head|hr|html|img|input|isindex|li|link|meta|option|p|param|tbody|td|tfoot|th|thead|tr)[^<>]*/?>",
|
||||
"");
|
||||
// 去掉成对的HTML标记
|
||||
temp_result = temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)</\\1>", "$2");
|
||||
// 用正则表达式取出标记
|
||||
Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>");
|
||||
Matcher m = p.matcher(temp_result);
|
||||
List<String> endHTML = new ArrayList<String>();
|
||||
while (m.find()) {
|
||||
endHTML.add(m.group(1));
|
||||
}
|
||||
// 补全不成对的HTML标记
|
||||
for (int i = endHTML.size() - 1; i >= 0; i--) {
|
||||
result.append("</");
|
||||
result.append(endHTML.get(i));
|
||||
result.append(">");
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为Double类型
|
||||
*/
|
||||
public static Double toDouble(Object val) {
|
||||
if (val == null) {
|
||||
return 0D;
|
||||
}
|
||||
try {
|
||||
return Double.valueOf(trim(val.toString()));
|
||||
} catch (Exception e) {
|
||||
return 0D;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为Float类型
|
||||
*/
|
||||
public static Float toFloat(Object val) {
|
||||
return toDouble(val).floatValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为Long类型
|
||||
*/
|
||||
public static Long toLong(Object val) {
|
||||
return toDouble(val).longValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为Integer类型
|
||||
*/
|
||||
public static Integer toInteger(Object val) {
|
||||
return toLong(val).intValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为BigDecimal类型
|
||||
*/
|
||||
public static BigDecimal toBigDecimal(String val) {
|
||||
if (StringUtils.isBlank(val)) {
|
||||
return null;
|
||||
}
|
||||
BigDecimal bd = new BigDecimal(val);
|
||||
return bd;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户远程地址
|
||||
*/
|
||||
public static String getRemoteAddr(HttpServletRequest request) {
|
||||
String remoteAddr = request.getHeader("X-Real-IP");
|
||||
if (isNotBlank(remoteAddr)) {
|
||||
remoteAddr = request.getHeader("X-Forwarded-For");
|
||||
} else if (isNotBlank(remoteAddr)) {
|
||||
remoteAddr = request.getHeader("Proxy-Client-IP");
|
||||
} else if (isNotBlank(remoteAddr)) {
|
||||
remoteAddr = request.getHeader("WL-Proxy-Client-IP");
|
||||
}
|
||||
return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名法工具
|
||||
*
|
||||
* @return toCamelCase(" hello_world ") == "helloWorld"
|
||||
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
|
||||
* toUnderScoreCase("helloWorld") = "hello_world"
|
||||
*/
|
||||
public static String toCamelCase(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
s = s.toLowerCase();
|
||||
|
||||
StringBuilder sb = new StringBuilder(s.length());
|
||||
boolean upperCase = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
|
||||
if (c == SEPARATOR) {
|
||||
upperCase = true;
|
||||
} else if (upperCase) {
|
||||
sb.append(Character.toUpperCase(c));
|
||||
upperCase = false;
|
||||
} else {
|
||||
sb.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名法工具
|
||||
*
|
||||
* @return toCamelCase(" hello_world ") == "helloWorld"
|
||||
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
|
||||
* toUnderScoreCase("helloWorld") = "hello_world"
|
||||
*/
|
||||
public static String toCapitalizeCamelCase(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
s = toCamelCase(s);
|
||||
return s.substring(0, 1).toUpperCase() + s.substring(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名法工具
|
||||
*
|
||||
* @return toCamelCase(" hello_world ") == "helloWorld"
|
||||
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
|
||||
* toUnderScoreCase("helloWorld") = "hello_world"
|
||||
*/
|
||||
public static String toUnderScoreCase(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean upperCase = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
|
||||
boolean nextUpperCase = true;
|
||||
|
||||
if (i < (s.length() - 1)) {
|
||||
nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
|
||||
}
|
||||
|
||||
if ((i > 0) && Character.isUpperCase(c)) {
|
||||
if (!upperCase || !nextUpperCase) {
|
||||
sb.append(SEPARATOR);
|
||||
}
|
||||
upperCase = true;
|
||||
} else {
|
||||
upperCase = false;
|
||||
}
|
||||
|
||||
sb.append(Character.toLowerCase(c));
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果不为空,则设置值
|
||||
*
|
||||
* @param target
|
||||
* @param source
|
||||
*/
|
||||
public static void setValueIfNotBlank(String target, String source) {
|
||||
if (isNotBlank(source)) {
|
||||
target = source;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为JS获取对象值,生成三目运算返回结果
|
||||
*
|
||||
* @param objectString 对象串 例如:row.user.id
|
||||
* 返回:!row?'':!row.user?'':!row.user.id?'':row.user.id
|
||||
*/
|
||||
public static String jsGetVal(String objectString) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
StringBuilder val = new StringBuilder();
|
||||
String[] vals = split(objectString, ".");
|
||||
for (int i = 0; i < vals.length; i++) {
|
||||
val.append("." + vals[i]);
|
||||
result.append("!" + (val.substring(1)) + "?'':");
|
||||
}
|
||||
result.append(val.substring(1));
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public static byte[] getBytesUTF8(CharSequence cs) {
|
||||
try {
|
||||
return cs.toString().getBytes("UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw Exceptions.unchecked(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.yxt.demo.common.utils.jwt;
|
||||
|
||||
import com.auth0.jwt.JWT;
|
||||
import com.auth0.jwt.algorithms.Algorithm;
|
||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@Slf4j
|
||||
public class JWTUtil {
|
||||
|
||||
private static final String TOKEN_SECRET = "yXtJLzxh2bGciO5iJIUzI1NiJ9";
|
||||
private static final String ISS = "WBK";
|
||||
private static final String USERNO = "userNo";
|
||||
private static final Long TIME = 24 * 3600 * 1000L; // 1天
|
||||
|
||||
//创建Token
|
||||
public static String create(String userNo) {
|
||||
try {
|
||||
return JWT
|
||||
.create()
|
||||
.withIssuer(ISS)
|
||||
.withClaim(USERNO, userNo)
|
||||
.withExpiresAt(new Date(System.currentTimeMillis() + TIME))
|
||||
.sign(Algorithm.HMAC256(TOKEN_SECRET));
|
||||
} catch (Exception e) {
|
||||
log.error("JWT生成失败", e);
|
||||
return e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
//解析Token
|
||||
public static DecodedJWT verify(String token) throws Exception {
|
||||
return JWT
|
||||
.require(Algorithm.HMAC256(TOKEN_SECRET))
|
||||
.withIssuer(ISS)
|
||||
.build()
|
||||
.verify(token);
|
||||
}
|
||||
|
||||
//根据解析生成的Token返回userNo
|
||||
public static Long getUserNo(DecodedJWT decodedJWT) {
|
||||
return Long.parseLong(decodedJWT.getClaim(USERNO).asString());
|
||||
}
|
||||
|
||||
public static String getUserSid(DecodedJWT decodedJWT) {
|
||||
return decodedJWT.getClaim(USERNO).asString();
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ hystrix:
|
||||
thread:
|
||||
timeoutInMilliseconds: 300000
|
||||
server:
|
||||
port: 8111
|
||||
port: 9111
|
||||
spring:
|
||||
application:
|
||||
name: gateway-server
|
||||
|
||||
@@ -20,4 +20,6 @@ public class DictCommon extends BaseEntity {
|
||||
private String dictKey;
|
||||
@ApiModelProperty("value")
|
||||
private String dictValue;
|
||||
@ApiModelProperty("父级sid")
|
||||
private String parentSid;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.yxt.demo.system.api.dict_common;
|
||||
|
||||
import com.yxt.demo.common.core.dto.Dto;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 15:34
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class DictCommonDto implements Dto {
|
||||
|
||||
private String sid;
|
||||
|
||||
@ApiModelProperty(value = "数据项值", required = true)
|
||||
@NotBlank(message = "数据项值不能为空")
|
||||
private String dictKey;
|
||||
|
||||
@ApiModelProperty(value = "数据类型", required = true)
|
||||
@NotBlank(message = "数据类型不能为空")
|
||||
private String dictType;
|
||||
|
||||
@ApiModelProperty(value = "数据项相对应的value值", required = true)
|
||||
@NotBlank(message = "数据项相对应的value值不能为空")
|
||||
private String dictValue;
|
||||
|
||||
@ApiModelProperty(value = "数据项的父级sid", required = true)
|
||||
@NotBlank(message = "数据项的父级sid不能为空")
|
||||
private String parentSid;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.yxt.demo.system.api.dict_common;
|
||||
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:16
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "数据字典数据项")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-DictCommon",
|
||||
name = "demo-system",
|
||||
path = "v1/DictCommon",
|
||||
fallback = DictCommonFeignFallback.class)
|
||||
public interface DictCommonFeign {
|
||||
|
||||
@PostMapping(value = "/save")
|
||||
@ApiOperation(value = "数据字典数据项保存")
|
||||
ResultBean save(@Valid @RequestBody DictCommonDto dictCommonDto);
|
||||
|
||||
@DeleteMapping("/delete/{sid}")
|
||||
@ApiOperation(value = "删除")
|
||||
ResultBean delete(@ApiParam(value = "数据项sid", required = true) @PathVariable("sid") String sid);
|
||||
|
||||
@PostMapping("/pageList")
|
||||
@ApiOperation(value = "数据字典数据项分页列表")
|
||||
ResultBean<PagerVo<DictCommonVo>> pageList(@RequestBody PagerQuery<DictCommonQuery> pagerQuery);
|
||||
|
||||
@GetMapping("/typeValues")
|
||||
@ApiOperation("下拉框的获取")
|
||||
ResultBean<List<DictCommonVo>> getTypeValues(@RequestParam("type") String type, @RequestParam(value = "psid", defaultValue = "0") String psid);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.dict_common;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:46
|
||||
* @Description
|
||||
*/
|
||||
public class DictCommonFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.yxt.demo.system.api.dict_common;
|
||||
|
||||
import com.yxt.demo.common.core.query.Query;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 16:20
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class DictCommonQuery implements Query {
|
||||
private static final long serialVersionUID = 6235063340152975098L;
|
||||
|
||||
@ApiModelProperty(value = "数据字典条目key", required = false)
|
||||
private String dictKey;
|
||||
|
||||
@ApiModelProperty(value = "数据字典文本", required = false)
|
||||
private String dictValue;
|
||||
|
||||
@ApiModelProperty(value = "dictType")
|
||||
private String dictType;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.yxt.demo.system.api.dict_common;
|
||||
|
||||
import com.yxt.demo.common.core.query.Query;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author dimengzhe
|
||||
* @date 2021/9/30 15:33
|
||||
* @description 下拉框条件
|
||||
*/
|
||||
@Data
|
||||
public class DictCommonTypeQuery implements Query {
|
||||
private static final long serialVersionUID = 139959085226402464L;
|
||||
|
||||
@ApiModelProperty(value = "数据字典类型", required = true)
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty(value = "psid", required = false, example = "0")
|
||||
private String psid;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.yxt.demo.system.api.dict_common;
|
||||
|
||||
import com.yxt.demo.common.core.vo.Vo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 16:19
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class DictCommonVo implements Vo {
|
||||
|
||||
private static final long serialVersionUID = 5516430679944504663L;
|
||||
@ApiModelProperty(value = "数据字典项key")
|
||||
private String dictKey;
|
||||
|
||||
@ApiModelProperty(value = "数据字典类型")
|
||||
private String dictType;
|
||||
|
||||
@ApiModelProperty(value = "数据字典项名称")
|
||||
private String dictValue;
|
||||
@ApiModelProperty(value = "父级sid:0为第一级")
|
||||
private String parentSid;
|
||||
|
||||
private String sid;
|
||||
|
||||
}
|
||||
@@ -17,8 +17,4 @@ public class DictType extends BaseEntity {
|
||||
private String dictTypeCode;
|
||||
@ApiModelProperty("类型名称")
|
||||
private String dictTypeName;
|
||||
@ApiModelProperty("级别")
|
||||
private String dictTypeLevel;
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.yxt.demo.system.api.dict_type;
|
||||
|
||||
import com.yxt.demo.common.core.dto.Dto;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 16:48
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class DictTypeDto implements Dto {
|
||||
private static final long serialVersionUID = -7638091202643596231L;
|
||||
|
||||
@ApiModelProperty(value = "类型代码", required = true)
|
||||
@NotBlank(message = "类型代码不能为空")
|
||||
private String dictTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "类型名称", required = true)
|
||||
@NotBlank(message = "类型名称不能为空")
|
||||
private String dictTypeName;
|
||||
|
||||
@ApiModelProperty(value = "类型说明", required = false)
|
||||
private String remarks;
|
||||
|
||||
private String sid;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.yxt.demo.system.api.dict_type;
|
||||
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommonFeignFallback;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:21
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "数据字典数据项")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-DictType",
|
||||
name = "demo-system",
|
||||
path = "v1/DictType",
|
||||
fallback = DictTypeFeignFallback.class)
|
||||
public interface DictTypeFeign {
|
||||
|
||||
@PostMapping(value = "/save")
|
||||
@ResponseBody
|
||||
@ApiOperation(value = "数据字典类型保存")
|
||||
ResultBean save(@Valid @RequestBody DictTypeDto dictTypeDto);
|
||||
|
||||
@PostMapping("/pageList")
|
||||
@ApiOperation(value = "数据字典类型分页列表")
|
||||
ResultBean<PagerVo<DictTypeVo>> pageList(@RequestBody PagerQuery<DictTypeQuery> pagerQuery);
|
||||
|
||||
@DeleteMapping("/delete/{sid}")
|
||||
@ApiOperation(value = "数据字典类型删除")
|
||||
ResultBean delete(@ApiParam(value = "sid", required = true) @PathVariable("sid") String sid);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.dict_type;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:47
|
||||
* @Description
|
||||
*/
|
||||
public class DictTypeFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.yxt.demo.system.api.dict_type;
|
||||
|
||||
import com.yxt.demo.common.core.query.Query;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 17:15
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class DictTypeQuery implements Query {
|
||||
|
||||
@ApiModelProperty(value = "数据字典code", required = false)
|
||||
private String dictTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "数据分类名称", required = false)
|
||||
private String dictTypeName;
|
||||
|
||||
@ApiModelProperty(value = "说明", required = false)
|
||||
private String remarks;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.yxt.demo.system.api.dict_type;
|
||||
|
||||
import com.yxt.demo.common.core.vo.Vo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 17:16
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class DictTypeVo implements Vo {
|
||||
private static final long serialVersionUID = -3404457483419237424L;
|
||||
|
||||
@ApiModelProperty(value = "数据类型sid")
|
||||
private String sid;
|
||||
|
||||
@ApiModelProperty(value = "类型代码")
|
||||
private String dictTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "类型名称")
|
||||
private String dictTypeName;
|
||||
|
||||
@ApiModelProperty(value = "说明")
|
||||
private String remarks;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.yxt.demo.system.api.sys_forum;
|
||||
|
||||
import com.yxt.demo.system.api.dict_type.DictTypeFeignFallback;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:21
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "论坛")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-SysForum",
|
||||
name = "demo-system",
|
||||
path = "v1/sysforum",
|
||||
fallback = SysForumFeignFallback.class)
|
||||
public interface SysForumFeign {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_forum;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:47
|
||||
* @Description
|
||||
*/
|
||||
public class SysForumFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.yxt.demo.system.api.sys_forum_comment;
|
||||
|
||||
import com.yxt.demo.system.api.sys_forum.SysForumFeignFallback;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:22
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "论坛评论")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-SysForumComment",
|
||||
name = "demo-system",
|
||||
path = "v1/SysForumComment",
|
||||
fallback = SysForumCommentFeignFallback.class)
|
||||
public interface SysForumCommentFeign {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_forum_comment;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 15:25
|
||||
* @Description
|
||||
*/
|
||||
public class SysForumCommentFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.yxt.demo.system.api.sys_info;
|
||||
|
||||
import com.yxt.demo.system.api.sys_user.SysUserFeignFallback;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:50
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "基础信息")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-SysInfo",
|
||||
name = "demo-system",
|
||||
path = "v1/sysinfo",
|
||||
fallback = SysInfoFeignFallback.class)
|
||||
public interface SysInfoFeign {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.api.sys_info;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:53
|
||||
* @Description
|
||||
*/
|
||||
@Component
|
||||
public class SysInfoFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.yxt.demo.system.api.sys_menu;
|
||||
|
||||
import com.yxt.demo.system.api.sys_info.SysInfoFeignFallback;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:08
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "菜单表")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-SysMenu",
|
||||
name = "demo-system",
|
||||
path = "v1/sysmenu",
|
||||
fallback = SysMenuFeignFallback.class)
|
||||
public interface SysMenuFeign {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.api.sys_menu;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:09
|
||||
* @Description
|
||||
*/
|
||||
@Component
|
||||
public class SysMenuFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_notice;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:23
|
||||
* @Description
|
||||
*/
|
||||
public interface SysNoticeFeign {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_plan;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:24
|
||||
* @Description
|
||||
*/
|
||||
public interface SysPlanFeign {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_plan_schedule;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:25
|
||||
* @Description
|
||||
*/
|
||||
public interface SysPlanScheduleFeign {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_resources;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:26
|
||||
* @Description
|
||||
*/
|
||||
public interface SysResourcesFeign {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_role;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:27
|
||||
* @Description
|
||||
*/
|
||||
public interface SysRoleFeign {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_score;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:28
|
||||
* @Description
|
||||
*/
|
||||
public interface SysScoreFeign {
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.yxt.demo.system.api.sys_student_score;
|
||||
|
||||
import com.yxt.demo.common.core.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -12,21 +13,22 @@ import lombok.Data;
|
||||
public class SysStudentScore extends BaseEntity {
|
||||
private static final long serialVersionUID = -3123378722999542918L;
|
||||
|
||||
@ApiModelProperty("类别")
|
||||
private String type;
|
||||
|
||||
private String typeKey;
|
||||
|
||||
@ApiModelProperty("学号")
|
||||
private String studentNo;
|
||||
|
||||
@ApiModelProperty("四级")
|
||||
private String fourScore;
|
||||
|
||||
@ApiModelProperty("六级")
|
||||
private String sixScore;
|
||||
|
||||
@ApiModelProperty("计算机成绩")
|
||||
private String computerScore;
|
||||
|
||||
@ApiModelProperty("是否就业:1是,0否")
|
||||
private int employment;
|
||||
|
||||
@ApiModelProperty("是否升学")
|
||||
private int enterSchool;
|
||||
|
||||
@ApiModelProperty("是否考公通过")
|
||||
private int kaoGong;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.api.sys_student_score;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:29
|
||||
* @Description
|
||||
*/
|
||||
public interface SysStudentScoreFeign {
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.yxt.demo.system.api.sys_user;
|
||||
|
||||
import com.yxt.demo.common.core.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -11,15 +12,18 @@ import lombok.Data;
|
||||
@Data
|
||||
public class SysUser extends BaseEntity {
|
||||
private static final long serialVersionUID = -4151693504419808527L;
|
||||
|
||||
@ApiModelProperty("用户名工号")
|
||||
private String userName;
|
||||
|
||||
@ApiModelProperty("姓名")
|
||||
private String name;
|
||||
@ApiModelProperty("昵称")
|
||||
private String nickName;
|
||||
|
||||
@ApiModelProperty("密码")
|
||||
private String password;
|
||||
|
||||
@ApiModelProperty("基础信息sid")
|
||||
private String infoSid;
|
||||
|
||||
@ApiModelProperty("类型:0学生、1教师、2管理员")
|
||||
private int type;
|
||||
@ApiModelProperty("是否已激活:0未激活,1已激活")
|
||||
private int hasActivated;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.yxt.demo.system.api.sys_user;
|
||||
|
||||
import com.yxt.demo.common.core.dto.Dto;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:28
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class SysUserDto implements Dto {
|
||||
private static final long serialVersionUID = 2068661415449582838L;
|
||||
|
||||
@ApiModelProperty("学号")
|
||||
@NotBlank(message = "学号不能为空")
|
||||
private String userName;
|
||||
@ApiModelProperty("姓名")
|
||||
@NotBlank(message = "姓名不能为空")
|
||||
private String name;
|
||||
@ApiModelProperty("密码")
|
||||
@NotBlank(message = "密码不能为空")
|
||||
private String password;
|
||||
@ApiModelProperty("确认密码")
|
||||
@NotBlank(message = "确认密码不能为空")
|
||||
private String confirmPassword;
|
||||
@ApiModelProperty("手机号")
|
||||
@NotBlank(message = "手机号不能为空")
|
||||
private String mobile;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.yxt.demo.system.api.sys_user;
|
||||
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:26
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "用户表")
|
||||
@FeignClient(
|
||||
contextId = "demo-system-SysUser",
|
||||
name = "demo-system",
|
||||
path = "v1/sysuser",
|
||||
fallback = SysUserFeignFallback.class)
|
||||
public interface SysUserFeign {
|
||||
|
||||
@ApiOperation(value = "学生注册")
|
||||
@PostMapping("/register")
|
||||
ResultBean register(@RequestBody SysUserDto dto);
|
||||
|
||||
|
||||
@ApiOperation(value = "登录")
|
||||
@PostMapping("/login")
|
||||
ResultBean login(@RequestBody SysUserLoginQuery query);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.api.sys_user;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:28
|
||||
* @Description
|
||||
*/
|
||||
@Component
|
||||
public class SysUserFeignFallback {
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.yxt.demo.system.api.sys_user;
|
||||
|
||||
import com.yxt.demo.common.core.query.Query;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 13:36
|
||||
* @Description
|
||||
*/
|
||||
@Data
|
||||
public class SysUserLoginQuery implements Query {
|
||||
private static final long serialVersionUID = 4963834204184842445L;
|
||||
|
||||
@ApiModelProperty("工号")
|
||||
private String userName;
|
||||
@ApiModelProperty("密码")
|
||||
private String password;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.yxt.demo.system.api.sys_user_role;
|
||||
|
||||
import com.yxt.demo.common.core.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -11,8 +12,8 @@ import lombok.Data;
|
||||
@Data
|
||||
public class SysUserRole extends BaseEntity {
|
||||
private static final long serialVersionUID = 1275775509946006356L;
|
||||
|
||||
@ApiModelProperty("用户sid")
|
||||
private String userSid;
|
||||
|
||||
@ApiModelProperty("角色sid")
|
||||
private String roleSid;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
<artifactId>demo-common-jdbc</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.yxt.demo</groupId>
|
||||
<artifactId>demo-common-utils</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.yxt.demo.system.biz.dict_common;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommon;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommonVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:17
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface DictCommonMapper extends BaseMapper<DictCommon> {
|
||||
DictCommon selectSize(@Param("dictKey") String dictKey, @Param("dictType") String dictType, @Param("parentSid") String parentSid);
|
||||
|
||||
IPage<DictCommonVo> listPageVo(IPage<DictCommon> page, @Param(Constants.WRAPPER) QueryWrapper<DictCommon> qw);
|
||||
|
||||
List<DictCommonVo> getValue(@Param(Constants.WRAPPER) QueryWrapper<DictCommonVo> qw);
|
||||
|
||||
List<DictCommon> selectByType(String dictTypeCode);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.dict_common.DictCommonMapper">
|
||||
<select id="selectSize" resultType="com.yxt.demo.system.api.dict_common.DictCommon">
|
||||
SELECT *
|
||||
FROM dict_common
|
||||
WHERE dictKey = #{dictKey}
|
||||
AND dictType = #{dictType}
|
||||
AND parentSid = #{parentSid}
|
||||
</select>
|
||||
|
||||
<select id="listPageVo" resultType="com.yxt.demo.system.api.dict_common.DictCommonVo">
|
||||
select *
|
||||
from dict_common
|
||||
<where>
|
||||
${ew.sqlSegment}
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getValue" resultType="com.yxt.demo.system.api.dict_common.DictCommonVo">
|
||||
SELECT dc.sid, dc.dictType, dc.dictKey, dc.dictValue, dc.parentSid
|
||||
FROM dict_common dc
|
||||
<where>
|
||||
${ew.sqlSegment}
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectByType" resultType="com.yxt.demo.system.api.dict_common.DictCommon">
|
||||
select *
|
||||
from dict_common
|
||||
where dictType = #{dictTypeCode}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.yxt.demo.system.biz.dict_common;
|
||||
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import com.yxt.demo.system.api.dict_common.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:16
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "数据字典数据项")
|
||||
@RestController
|
||||
@RequestMapping("v1/DictCommon")
|
||||
public class DictCommonRest implements DictCommonFeign {
|
||||
|
||||
@Autowired
|
||||
private DictCommonService dictCommonService;
|
||||
|
||||
@Override
|
||||
public ResultBean save(DictCommonDto dictCommonDto) {
|
||||
return dictCommonService.saveOrUpdates(dictCommonDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultBean delete(String sid) {
|
||||
return dictCommonService.delete(sid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultBean<PagerVo<DictCommonVo>> pageList(PagerQuery<DictCommonQuery> pagerQuery) {
|
||||
ResultBean rb = ResultBean.fireFail();
|
||||
PagerVo<DictCommonVo> pv = dictCommonService.listPageVo(pagerQuery);
|
||||
return rb.success().setData(pv);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultBean<List<DictCommonVo>> getTypeValues(String type, String psid) {
|
||||
ResultBean<List<DictCommonVo>> rb = ResultBean.fireFail();
|
||||
DictCommonTypeQuery query = new DictCommonTypeQuery();
|
||||
query.setType(type);
|
||||
query.setPsid(psid);
|
||||
List<DictCommonVo> dictCommonVoList = dictCommonService.getValue(query);
|
||||
dictCommonVoList.removeAll(Collections.singleton(null));
|
||||
if (dictCommonVoList.isEmpty()) {
|
||||
return rb.setMsg("该类型无数据项");
|
||||
}
|
||||
return rb.success().setData(dictCommonVoList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
package com.yxt.demo.system.biz.dict_common;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import com.yxt.demo.common.jdbc.service.MybatisBaseService;
|
||||
import com.yxt.demo.common.jdbc.service.PagerUtil;
|
||||
import com.yxt.demo.common.utils.convert.StringUtil;
|
||||
import com.yxt.demo.system.api.dict_common.*;
|
||||
import com.yxt.demo.system.api.sys_user.SysUser;
|
||||
import com.yxt.demo.system.biz.dict_type.DictTypeService;
|
||||
import com.yxt.demo.system.biz.sys_user.SysUserMapper;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:17
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class DictCommonService extends MybatisBaseService<DictCommonMapper, DictCommon> {
|
||||
|
||||
@Autowired
|
||||
private DictTypeService dictTypeService;
|
||||
|
||||
public ResultBean saveOrUpdates(DictCommonDto dictCommonDto) {
|
||||
ResultBean rb = ResultBean.fireFail();
|
||||
//数据类型
|
||||
String dictType = dictCommonDto.getDictType();
|
||||
//数据项值
|
||||
String dictKey = dictCommonDto.getDictKey();
|
||||
//父级sid
|
||||
String parentSid = dictCommonDto.getParentSid();
|
||||
if (StringUtils.isBlank(dictCommonDto.getSid())) {
|
||||
int size = dictTypeService.selectSize(dictType);
|
||||
if (size > 0) {
|
||||
//根据数据类型和数据项值查询是否已存在
|
||||
DictCommon dc = baseMapper.selectSize(dictKey, dictType, parentSid);
|
||||
if (dc != null) {
|
||||
return rb.setMsg(dictType + "此类型的数据项已存在");
|
||||
}
|
||||
//新增
|
||||
DictCommon dictCommon = new DictCommon();
|
||||
BeanUtil.copyProperties(dictCommonDto, dictCommon, "sid");
|
||||
baseMapper.insert(dictCommon);
|
||||
} else {
|
||||
return rb.setMsg("数据字典类型不存在");
|
||||
}
|
||||
} else {
|
||||
int size = dictTypeService.selectSize(dictType);
|
||||
if (size > 0) {
|
||||
//根据数据类型和数据项值查询是否已存在
|
||||
DictCommon dictCommon = fetchBySid(dictCommonDto.getSid());
|
||||
if (dictCommon == null) {
|
||||
return rb.setMsg(dictType + "此类型的数据项不存在");
|
||||
} else {
|
||||
if (!dictCommonDto.getSid().equals(dictCommon.getSid())) {
|
||||
return rb.setMsg(dictType + "此类型的数据项已存在");
|
||||
}
|
||||
}
|
||||
BeanUtil.copyProperties(dictCommonDto, dictCommon, "sid");
|
||||
baseMapper.updateById(dictCommon);
|
||||
} else {
|
||||
return rb.setMsg("数据字典类型不存在");
|
||||
}
|
||||
}
|
||||
return rb.success();
|
||||
}
|
||||
|
||||
public ResultBean delete(String sid) {
|
||||
ResultBean rb = ResultBean.fireFail();
|
||||
DictCommon dictCommon = fetchBySid(sid);
|
||||
if (dictCommon == null) {
|
||||
return rb.setMsg("该数据项不存在");
|
||||
}
|
||||
deleteBySid(sid);
|
||||
return rb.success();
|
||||
}
|
||||
|
||||
public PagerVo<DictCommonVo> listPageVo(PagerQuery<DictCommonQuery> pagerQuery) {
|
||||
IPage<DictCommon> page = PagerUtil.queryToPage(pagerQuery);
|
||||
DictCommonQuery params = pagerQuery.getParams();
|
||||
QueryWrapper<DictCommon> qw = new QueryWrapper<>();
|
||||
if (params != null) {
|
||||
|
||||
}
|
||||
IPage<DictCommonVo> pagging = baseMapper.listPageVo(page, qw);
|
||||
PagerVo<DictCommonVo> p = PagerUtil.pageToVo(pagging, null);
|
||||
return p;
|
||||
}
|
||||
|
||||
public List<DictCommonVo> getValue(DictCommonTypeQuery query) {
|
||||
QueryWrapper<DictCommonVo> qw = new QueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(query.getType())) {//类型
|
||||
qw.eq("dc.dictType", query.getType());
|
||||
}
|
||||
if (StringUtils.isNotBlank(query.getPsid())) {//父级sid
|
||||
qw.eq("dc.parentSid", query.getPsid());
|
||||
}
|
||||
return baseMapper.getValue(qw);
|
||||
}
|
||||
|
||||
public List<DictCommon> selectByType(String dictTypeCode) {
|
||||
return baseMapper.selectByType(dictTypeCode);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.yxt.demo.system.biz.dict_type;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommon;
|
||||
import com.yxt.demo.system.api.dict_type.DictType;
|
||||
import com.yxt.demo.system.api.dict_type.DictTypeVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:20
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface DictTypeMapper extends BaseMapper<DictType> {
|
||||
/**
|
||||
* 查询该类型代码存在的数量
|
||||
*
|
||||
* @param dictType 类型代码
|
||||
* @return
|
||||
*/
|
||||
int selectSize(String dictType);
|
||||
|
||||
IPage<DictTypeVo> listPageVo(IPage<DictType> page, @Param(Constants.WRAPPER)QueryWrapper<DictType> qw);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.dict_type.DictTypeMapper">
|
||||
<select id="selectSize" resultType="int">
|
||||
SELECT COUNT(*)
|
||||
FROM dict_type
|
||||
WHERE dictTypeCode = #{dictTypeCode}
|
||||
</select>
|
||||
|
||||
<select id="listPageVo" resultType="com.yxt.demo.system.api.dict_type.DictTypeVo">
|
||||
select *
|
||||
from dict_type
|
||||
<where>
|
||||
${ew.sqlSegment}
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.yxt.demo.system.biz.dict_type;
|
||||
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommon;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommonVo;
|
||||
import com.yxt.demo.system.api.dict_type.*;
|
||||
import com.yxt.demo.system.biz.dict_common.DictCommonService;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:20
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "数据字典数据类型")
|
||||
@RestController
|
||||
@RequestMapping("v1/DictType")
|
||||
public class DictTypeRest implements DictTypeFeign {
|
||||
|
||||
@Autowired
|
||||
private DictTypeService dictTypeService;
|
||||
@Autowired
|
||||
private DictCommonService dictCommonService;
|
||||
|
||||
@Override
|
||||
public ResultBean save(DictTypeDto dictTypeDto) {
|
||||
return dictTypeService.saveOrUpdates(dictTypeDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultBean<PagerVo<DictTypeVo>> pageList(PagerQuery<DictTypeQuery> pagerQuery) {
|
||||
ResultBean rb = ResultBean.fireFail();
|
||||
PagerVo<DictTypeVo> pv = dictTypeService.listPageVo(pagerQuery);
|
||||
return rb.success().setData(pv);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultBean delete(String sid) {
|
||||
ResultBean rb = ResultBean.fireFail();
|
||||
DictType dictType = dictTypeService.fetchBySid(sid);
|
||||
if (null == dictType) {
|
||||
return rb.setMsg("该数据字典类型不存在");
|
||||
}
|
||||
//查询该类型下是否存在数据项
|
||||
List<DictCommon> dictCommon = dictCommonService.selectByType(dictType.getDictTypeCode());
|
||||
if (dictCommon.size() > 0) {
|
||||
return rb.setMsg("该数据字典类型下存在数据项,请先删除该类下的数据项");
|
||||
}
|
||||
if (0 == dictTypeService.deleteBySid(sid)) {
|
||||
return rb.setMsg("删除失败");
|
||||
}
|
||||
return rb.setMsg("删除成功");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.yxt.demo.system.biz.dict_type;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.yxt.demo.common.core.query.PagerQuery;
|
||||
import com.yxt.demo.common.core.result.ResultBean;
|
||||
import com.yxt.demo.common.core.vo.PagerVo;
|
||||
import com.yxt.demo.common.jdbc.service.MybatisBaseService;
|
||||
import com.yxt.demo.common.jdbc.service.PagerUtil;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommon;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommonQuery;
|
||||
import com.yxt.demo.system.api.dict_common.DictCommonVo;
|
||||
import com.yxt.demo.system.api.dict_type.DictType;
|
||||
import com.yxt.demo.system.api.dict_type.DictTypeDto;
|
||||
import com.yxt.demo.system.api.dict_type.DictTypeQuery;
|
||||
import com.yxt.demo.system.api.dict_type.DictTypeVo;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:20
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class DictTypeService extends MybatisBaseService<DictTypeMapper, DictType> {
|
||||
/**
|
||||
* 查询该类型代码存在的数量
|
||||
*
|
||||
* @param dictType 类型代码
|
||||
* @return
|
||||
*/
|
||||
public int selectSize(String dictType) {
|
||||
return baseMapper.selectSize(dictType);
|
||||
}
|
||||
|
||||
public ResultBean saveOrUpdates(DictTypeDto dictTypeDto) {
|
||||
ResultBean rb = ResultBean.fireFail();
|
||||
if (StringUtils.isBlank(dictTypeDto.getSid())) {
|
||||
//判断数据字典类型是否已存在
|
||||
String dictTypeCode = dictTypeDto.getDictTypeCode();
|
||||
int size = baseMapper.selectSize(dictTypeCode);
|
||||
if (size > 0) {
|
||||
return rb.setMsg("数据类型代码已存在");
|
||||
}
|
||||
DictType dictType = new DictType();
|
||||
BeanUtil.copyProperties(dictTypeDto, dictType, "sid");
|
||||
baseMapper.insert(dictType);
|
||||
} else {
|
||||
DictType dictType = fetchBySid(dictTypeDto.getSid());
|
||||
if (dictType == null) {
|
||||
return rb.setMsg("数据类型不存在");
|
||||
}
|
||||
if (!dictTypeDto.getDictTypeCode().equals(dictType.getDictTypeCode())) {
|
||||
return rb.setMsg("数据字典类型的code值不允许修改");
|
||||
}
|
||||
BeanUtil.copyProperties(dictTypeDto, dictType, "sid");
|
||||
baseMapper.updateById(dictType);
|
||||
|
||||
}
|
||||
return rb.success();
|
||||
}
|
||||
|
||||
public PagerVo<DictTypeVo> listPageVo(PagerQuery<DictTypeQuery> pagerQuery) {
|
||||
IPage<DictType> page = PagerUtil.queryToPage(pagerQuery);
|
||||
DictTypeQuery params = pagerQuery.getParams();
|
||||
QueryWrapper<DictType> qw = new QueryWrapper<>();
|
||||
if (params != null) {
|
||||
|
||||
}
|
||||
IPage<DictTypeVo> pagging = baseMapper.listPageVo(page, qw);
|
||||
PagerVo<DictTypeVo> p = PagerUtil.pageToVo(pagging, null);
|
||||
return p;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_forum;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:21
|
||||
* @Description
|
||||
*/
|
||||
public interface SysForumMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_forum;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:21
|
||||
* @Description
|
||||
*/
|
||||
public class SysForumRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_forum;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:21
|
||||
* @Description
|
||||
*/
|
||||
public class SysForumService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_forum_comment;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:22
|
||||
* @Description
|
||||
*/
|
||||
public interface SysForumCommentMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_forum_comment.SysForumCommentMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_forum_comment;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:22
|
||||
* @Description
|
||||
*/
|
||||
public class SysForumCommentRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_forum_comment;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:22
|
||||
* @Description
|
||||
*/
|
||||
public class SysForumCommentService {
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.yxt.demo.system.biz.sys_info;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.yxt.demo.system.api.sys_info.SysInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:51
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysInfoMapper extends BaseMapper<SysInfo> {
|
||||
|
||||
SysInfo selectByNoAndName(@Param("userName") String userName, @Param("name") String name);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_info.SysInfoMapper">
|
||||
<select id="selectByNoAndName" resultType="com.yxt.demo.system.api.sys_info.SysInfo">
|
||||
select *
|
||||
from sys_info
|
||||
where infoId = #{userName}
|
||||
and name = #{name}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.yxt.demo.system.biz.sys_info;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:51
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "基础信息表")
|
||||
@RestController
|
||||
@RequestMapping("v1/sysinfo")
|
||||
public class SysInfoRest {
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.yxt.demo.system.biz.sys_info;
|
||||
|
||||
import com.yxt.demo.common.jdbc.service.MybatisBaseService;
|
||||
import com.yxt.demo.system.api.sys_info.SysInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 11:51
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class SysInfoService extends MybatisBaseService<SysInfoMapper, SysInfo> {
|
||||
|
||||
public SysInfo selectByNoAndName(String userName, String name) {
|
||||
return baseMapper.selectByNoAndName(userName, name);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.biz.sys_info_ship;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:15
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysInfoShipMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_info_ship.SysInfoShipMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.biz.sys_info_ship;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:15
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class SysInfoShipService {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.yxt.demo.system.biz.sys_menu;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.yxt.demo.system.api.sys_info.SysInfo;
|
||||
import com.yxt.demo.system.api.sys_menu.SysMenu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:09
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_menu.SysMenuMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.yxt.demo.system.biz.sys_menu;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:09
|
||||
* @Description
|
||||
*/
|
||||
@Api(tags = "菜单")
|
||||
@RestController
|
||||
@RequestMapping("v1/sysmenu")
|
||||
public class SysMenuRest {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.yxt.demo.system.biz.sys_menu;
|
||||
|
||||
import com.yxt.demo.common.jdbc.service.MybatisBaseService;
|
||||
import com.yxt.demo.system.api.sys_info.SysInfo;
|
||||
import com.yxt.demo.system.api.sys_menu.SysMenu;
|
||||
import com.yxt.demo.system.biz.sys_info.SysInfoMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:09
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class SysMenuService extends MybatisBaseService<SysMenuMapper, SysMenu> {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.biz.sys_menu_role;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:12
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysMenuRoleMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_menu_role.SysMenuRoleMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.biz.sys_menu_role;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:12
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class SysMenuRoleService {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.biz.sys_notice;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:14
|
||||
* @Description
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysNoticeMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_notice.SysNoticeMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_notice;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:23
|
||||
* @Description
|
||||
*/
|
||||
public class SysNoticeRest {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yxt.demo.system.biz.sys_notice;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:13
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class SysNoticeService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_plan;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:24
|
||||
* @Description
|
||||
*/
|
||||
public interface SysPlanMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_plan;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:24
|
||||
* @Description
|
||||
*/
|
||||
public class SysPlanRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_plan;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:24
|
||||
* @Description
|
||||
*/
|
||||
public class SysPlanService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_plan_schedule;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:25
|
||||
* @Description
|
||||
*/
|
||||
public interface SysPlanScheduleMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_plan_schedule.SysPlanScheduleMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_plan_schedule;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:25
|
||||
* @Description
|
||||
*/
|
||||
public class SysPlanScheduleRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_plan_schedule;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:25
|
||||
* @Description
|
||||
*/
|
||||
public class SysPlanScheduleService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_resources;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:26
|
||||
* @Description
|
||||
*/
|
||||
public interface SysResourcesMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_resources.SysResourcesMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_resources;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:26
|
||||
* @Description
|
||||
*/
|
||||
public class SysResourcesRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_resources;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:26
|
||||
* @Description
|
||||
*/
|
||||
public class SysResourcesService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_role;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:27
|
||||
* @Description
|
||||
*/
|
||||
public interface SysRoleMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_role.SysRoleMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_role;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:27
|
||||
* @Description
|
||||
*/
|
||||
public class SysRoleRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_role;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:27
|
||||
* @Description
|
||||
*/
|
||||
public class SysRoleService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_score;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:28
|
||||
* @Description
|
||||
*/
|
||||
public interface SysScoreMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_score.SysScoreMapper">
|
||||
</mapper>
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_score;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:28
|
||||
* @Description
|
||||
*/
|
||||
public class SysScoreRest {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_score;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:28
|
||||
* @Description
|
||||
*/
|
||||
public class SysScoreService {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yxt.demo.system.biz.sys_student_score;
|
||||
|
||||
/**
|
||||
* @Author dimengzhe
|
||||
* @Date 2023/4/24 14:31
|
||||
* @Description
|
||||
*/
|
||||
public interface SysStudentScoreMapper {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.yxt.demo.system.biz.sys_student_score.SysStudentScoreMapper">
|
||||
</mapper>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user