[fix]调试启动不成功的问题
This commit is contained in:
parent
57f2ec0a0f
commit
169ab1ca0f
6
pom.xml
6
pom.xml
@ -405,6 +405,12 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-amqp</artifactId>
|
||||||
|
<version>2.5.4</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -22,28 +22,21 @@
|
|||||||
<groupId>com.mysql</groupId>
|
<groupId>com.mysql</groupId>
|
||||||
<artifactId>mysql-connector-j</artifactId>
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- Oracle -->
|
||||||
<!-- <!– mp支持的数据库均支持 只需要增加对应的jdbc依赖即可 –>-->
|
<dependency>
|
||||||
<!-- <!– Oracle –>-->
|
<groupId>com.oracle.database.jdbc</groupId>
|
||||||
<!-- <dependency>-->
|
<artifactId>ojdbc8</artifactId>
|
||||||
<!-- <groupId>com.oracle.database.jdbc</groupId>-->
|
</dependency>
|
||||||
<!-- <artifactId>ojdbc8</artifactId>-->
|
<!-- PostgreSql -->
|
||||||
<!-- </dependency>-->
|
<dependency>
|
||||||
<!-- <!– 兼容oracle低版本 –>-->
|
<groupId>org.postgresql</groupId>
|
||||||
<!-- <dependency>-->
|
<artifactId>postgresql</artifactId>
|
||||||
<!-- <groupId>com.oracle.database.nls</groupId>-->
|
</dependency>
|
||||||
<!-- <artifactId>orai18n</artifactId>-->
|
<!-- SqlServer -->
|
||||||
<!-- </dependency>-->
|
<dependency>
|
||||||
<!-- <!– PostgreSql –>-->
|
<groupId>com.microsoft.sqlserver</groupId>
|
||||||
<!-- <dependency>-->
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
<!-- <groupId>org.postgresql</groupId>-->
|
</dependency>
|
||||||
<!-- <artifactId>postgresql</artifactId>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
<!-- <!– SqlServer –>-->
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>com.microsoft.sqlserver</groupId>-->
|
|
||||||
<!-- <artifactId>mssql-jdbc</artifactId>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.dromara</groupId>
|
<groupId>org.dromara</groupId>
|
||||||
@ -105,16 +98,16 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- skywalking 整合 logback -->
|
<!-- skywalking 整合 logback -->
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>org.apache.skywalking</groupId>-->
|
<!-- <groupId>org.apache.skywalking</groupId>-->
|
||||||
<!-- <artifactId>apm-toolkit-logback-1.x</artifactId>-->
|
<!-- <artifactId>apm-toolkit-logback-1.x</artifactId>-->
|
||||||
<!-- <version>${与你的agent探针版本保持一致}</version>-->
|
<!-- <version>${与你的agent探针版本保持一致}</version>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>org.apache.skywalking</groupId>-->
|
<!-- <groupId>org.apache.skywalking</groupId>-->
|
||||||
<!-- <artifactId>apm-toolkit-trace</artifactId>-->
|
<!-- <artifactId>apm-toolkit-trace</artifactId>-->
|
||||||
<!-- <version>${与你的agent探针版本保持一致}</version>-->
|
<!-- <version>${与你的agent探针版本保持一致}</version>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ spring.data:
|
|||||||
port: 26379
|
port: 26379
|
||||||
# 数据库索引
|
# 数据库索引
|
||||||
database: 0
|
database: 0
|
||||||
# redis 密码必须配置
|
# 密码(如没有密码请注释掉)
|
||||||
password: e4ea0caebfd2
|
password: e4ea0caebfd2
|
||||||
# 连接超时时间
|
# 连接超时时间
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
<!-- 过滤的级别 -->
|
<!-- 过滤的级别 -->
|
||||||
<level>INFO</level>
|
<level>debug</level>
|
||||||
</filter>
|
</filter>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
@ -118,7 +118,7 @@
|
|||||||
<!-- </appender>-->
|
<!-- </appender>-->
|
||||||
|
|
||||||
<!--系统操作日志-->
|
<!--系统操作日志-->
|
||||||
<root level="info">
|
<root level="debug">
|
||||||
<appender-ref ref="console" />
|
<appender-ref ref="console" />
|
||||||
<appender-ref ref="async_info" />
|
<appender-ref ref="async_info" />
|
||||||
<appender-ref ref="async_error" />
|
<appender-ref ref="async_error" />
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
ruoyi-common-core 核心模块
|
ruoyi-common-core 核心模块
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Spring框架基本的核心工具 -->
|
<!-- Spring框架基本的核心工具 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -94,59 +93,7 @@
|
|||||||
<groupId>org.lionsoul</groupId>
|
<groupId>org.lionsoul</groupId>
|
||||||
<artifactId>ip2region</artifactId>
|
<artifactId>ip2region</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-security</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-annotations</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-annotations</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.jsonwebtoken</groupId>
|
|
||||||
<artifactId>jjwt-api</artifactId>
|
|
||||||
<version>0.11.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.jsonwebtoken</groupId>
|
|
||||||
<artifactId>jjwt-impl</artifactId>
|
|
||||||
<version>0.11.2</version>
|
|
||||||
<scope>runtime</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.jsonwebtoken</groupId>
|
|
||||||
<artifactId>jjwt-jackson</artifactId>
|
|
||||||
<version>0.11.2</version>
|
|
||||||
<scope>runtime</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.wechatpay-apiv3</groupId>
|
|
||||||
<artifactId>wechatpay-java</artifactId>
|
|
||||||
<version>0.2.9</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.hutool</groupId>
|
|
||||||
<artifactId>hutool-crypto</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.poi</groupId>
|
|
||||||
<artifactId>poi</artifactId>
|
|
||||||
<version>5.4.0</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.baomidou</groupId>
|
|
||||||
<artifactId>mybatis-plus-core</artifactId>
|
|
||||||
<version>3.5.11</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
package org.dromara.common.core.domain;
|
package org.dromara.common.core.domain;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
|
||||||
|
|
||||||
import java.sql.Wrapper;
|
import java.sql.Wrapper;
|
||||||
|
|
||||||
public class BaseBO {
|
public class BaseBO <T> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bo转换成queryWrapper
|
* bo转换成queryWrapper
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public QueryWrapper toWrapper() {
|
public T toWrapper() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
package org.dromara.common.core.domain;
|
|
||||||
|
|
||||||
import org.dromara.common.core.domain.model.BaseAudit;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Entity基类
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
public abstract class BaseEntity extends BaseAudit implements Serializable, IQuery {
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 搜索值
|
|
||||||
*/
|
|
||||||
private String searchValue;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 请求参数
|
|
||||||
*/
|
|
||||||
private Map<String, Object> params;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSearchValue() {
|
|
||||||
return searchValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSearchValue(String searchValue) {
|
|
||||||
this.searchValue = searchValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark() {
|
|
||||||
return remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark(String remark) {
|
|
||||||
this.remark = remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> getParams() {
|
|
||||||
if (params == null) {
|
|
||||||
params = new HashMap<>();
|
|
||||||
}
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setParams(Map<String, Object> params) {
|
|
||||||
this.params = params;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,5 @@
|
|||||||
package org.dromara.common.core.domain.event;
|
package org.dromara.common.core.domain.event;
|
||||||
|
|
||||||
import io.jsonwebtoken.Claims;
|
|
||||||
/**
|
/**
|
||||||
* 通用常量信息
|
* 通用常量信息
|
||||||
*
|
*
|
||||||
@ -109,7 +108,7 @@ public class Constants
|
|||||||
/**
|
/**
|
||||||
* 用户名称
|
* 用户名称
|
||||||
*/
|
*/
|
||||||
public static final String JWT_USERNAME = Claims.SUBJECT;
|
// public static final String JWT_USERNAME = Claims.SUBJECT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户头像
|
* 用户头像
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package org.dromara.common.core.domain.model;
|
package org.dromara.common.core.domain.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -15,7 +14,7 @@ public class BaseAudit {
|
|||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,6 +25,6 @@ public class BaseAudit {
|
|||||||
/**
|
/**
|
||||||
* 更新时间
|
* 更新时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
}
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
package org.dromara.common.core.utils;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.CharsetUtil;
|
|
||||||
import cn.hutool.crypto.SecureUtil;
|
|
||||||
import cn.hutool.crypto.symmetric.AES;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* aes加密工具
|
|
||||||
*/
|
|
||||||
public class AesCryptoUtils {
|
|
||||||
|
|
||||||
public static String encrypt(String key, String content){
|
|
||||||
SecureUtil.disableBouncyCastle();
|
|
||||||
if (StringUtils.isBlank(key) || StringUtils.isBlank(content)){
|
|
||||||
throw new RuntimeException("错误");
|
|
||||||
}
|
|
||||||
AES aes = SecureUtil.aes(key.getBytes());
|
|
||||||
byte[] encrypt = aes.encrypt(content);
|
|
||||||
return aes.encryptHex(content);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String decrypt(String key, String content){
|
|
||||||
SecureUtil.disableBouncyCastle();
|
|
||||||
if (StringUtils.isBlank(key) || StringUtils.isBlank(content)){
|
|
||||||
throw new RuntimeException("错误");
|
|
||||||
}
|
|
||||||
AES aes = SecureUtil.aes(key.getBytes());
|
|
||||||
return aes.decryptStr(content, CharsetUtil.CHARSET_UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,100 +0,0 @@
|
|||||||
package org.dromara.common.core.utils;
|
|
||||||
|
|
||||||
import org.apache.poi.util.IOUtils;
|
|
||||||
import org.dromara.common.core.config.RuoYiConfig;
|
|
||||||
import org.dromara.common.core.domain.event.Constants;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 图片处理工具类
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
public class ImageUtils
|
|
||||||
{
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
|
|
||||||
|
|
||||||
public static byte[] getImage(String imagePath)
|
|
||||||
{
|
|
||||||
InputStream is = getFile(imagePath);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return IOUtils.toByteArray(is);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
log.error("图片加载异常 {}", e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
IOUtils.closeQuietly(is);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static InputStream getFile(String imagePath)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
byte[] result = readFile(imagePath);
|
|
||||||
result = Arrays.copyOf(result, result.length);
|
|
||||||
return new ByteArrayInputStream(result);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
log.error("获取图片异常 {}", e);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 读取文件为字节数据
|
|
||||||
*
|
|
||||||
* @return 字节数据
|
|
||||||
*/
|
|
||||||
public static byte[] readFile(String url)
|
|
||||||
{
|
|
||||||
InputStream in = null;
|
|
||||||
ByteArrayOutputStream baos = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (url.startsWith("http"))
|
|
||||||
{
|
|
||||||
// 网络地址
|
|
||||||
URL urlObj = new URL(url);
|
|
||||||
URLConnection urlConnection = urlObj.openConnection();
|
|
||||||
urlConnection.setConnectTimeout(30 * 1000);
|
|
||||||
urlConnection.setReadTimeout(60 * 1000);
|
|
||||||
urlConnection.setDoInput(true);
|
|
||||||
in = urlConnection.getInputStream();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 本机地址
|
|
||||||
String localPath = RuoYiConfig.getProfile();
|
|
||||||
String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX);
|
|
||||||
in = new FileInputStream(downloadPath);
|
|
||||||
}
|
|
||||||
return IOUtils.toByteArray(in);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
log.error("获取文件路径异常 {}", e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
IOUtils.closeQuietly(in);
|
|
||||||
IOUtils.closeQuietly(baos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,119 +0,0 @@
|
|||||||
package org.dromara.common.core.utils;
|
|
||||||
|
|
||||||
import org.dromara.common.core.constant.HttpStatus;
|
|
||||||
import org.dromara.common.core.domain.model.LoginUser;
|
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
|
||||||
import org.springframework.security.core.Authentication;
|
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 安全服务工具类
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
public class SecurityUtils
|
|
||||||
{
|
|
||||||
private static BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
|
||||||
/**
|
|
||||||
* 用户ID
|
|
||||||
**/
|
|
||||||
public static Long getUserId()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return getLoginUser().getUserId();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取部门ID
|
|
||||||
**/
|
|
||||||
public static Long getDeptId()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return getLoginUser().getDeptId();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取用户账户
|
|
||||||
**/
|
|
||||||
public static String getUsername()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return getLoginUser().getUsername();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取用户
|
|
||||||
**/
|
|
||||||
public static LoginUser getLoginUser()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return (LoginUser) getAuthentication().getPrincipal();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取Authentication
|
|
||||||
*/
|
|
||||||
public static Authentication getAuthentication()
|
|
||||||
{
|
|
||||||
return SecurityContextHolder.getContext().getAuthentication();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成BCryptPasswordEncoder密码
|
|
||||||
*
|
|
||||||
* @param password 密码
|
|
||||||
* @return 加密字符串
|
|
||||||
*/
|
|
||||||
public static String encryptPassword(String password) {
|
|
||||||
return passwordEncoder.encode(password);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断密码是否相同
|
|
||||||
*
|
|
||||||
* @param rawPassword 真实密码
|
|
||||||
* @param encodedPassword 加密后字符
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public static boolean matchesPassword(String rawPassword, String encodedPassword)
|
|
||||||
{
|
|
||||||
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
|
||||||
return passwordEncoder.matches(rawPassword, encodedPassword);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否为管理员
|
|
||||||
*
|
|
||||||
* @param userId 用户ID
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public static boolean isAdmin(Long userId)
|
|
||||||
{
|
|
||||||
return userId != null && 1L == userId;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
package org.dromara.common.core.wechat;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@ConfigurationProperties(prefix = "wechat")
|
|
||||||
@Component("WechatPayData")
|
|
||||||
public class WechatPayData {
|
|
||||||
|
|
||||||
/** 商户号 */
|
|
||||||
public static String appId;
|
|
||||||
public static String secret;
|
|
||||||
public static String merchantId;
|
|
||||||
/** 商户API私钥路径 */
|
|
||||||
public static String privateKeyPath;
|
|
||||||
/** 商户证书序列号 */
|
|
||||||
public static String merchantSerialNumber;
|
|
||||||
/** 商户APIV3密钥 */
|
|
||||||
public static String apiV3key;
|
|
||||||
public static String notifyUrl;
|
|
||||||
|
|
||||||
public static String miniProgramAppId;
|
|
||||||
public static String miniProgramSecret;
|
|
||||||
|
|
||||||
public void setAppId(String appId) {
|
|
||||||
WechatPayData.appId = appId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSecret(String secret) {
|
|
||||||
WechatPayData.secret = secret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMerchantId(String merchantId) {
|
|
||||||
WechatPayData.merchantId = merchantId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrivateKeyPath(String privateKeyPath) {
|
|
||||||
WechatPayData.privateKeyPath = privateKeyPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMerchantSerialNumber(String merchantSerialNumber) {
|
|
||||||
WechatPayData.merchantSerialNumber = merchantSerialNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApiV3key(String apiV3key) {
|
|
||||||
WechatPayData.apiV3key = apiV3key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifyUrl(String notifyUrl) {
|
|
||||||
WechatPayData.notifyUrl = notifyUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMiniProgramAppId(String miniProgramAppId) {
|
|
||||||
WechatPayData.miniProgramAppId = miniProgramAppId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMiniProgramSecret(String miniProgramSecret) {
|
|
||||||
WechatPayData.miniProgramSecret = miniProgramSecret;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
package org.dromara.common.core.wechat;
|
|
||||||
|
|
||||||
import com.wechat.pay.java.service.payments.jsapi.JsapiService;
|
|
||||||
import com.wechat.pay.java.service.payments.jsapi.model.Amount;
|
|
||||||
import com.wechat.pay.java.service.payments.jsapi.model.Payer;
|
|
||||||
import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;
|
|
||||||
import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;
|
|
||||||
import com.wechat.pay.java.service.refund.RefundService;
|
|
||||||
import com.wechat.pay.java.service.refund.model.AmountReq;
|
|
||||||
import com.wechat.pay.java.service.refund.model.CreateRequest;
|
|
||||||
import com.wechat.pay.java.service.refund.model.Refund;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@Slf4j
|
|
||||||
@ConditionalOnProperty(prefix = "wechat", name = "enabled", havingValue = "true")
|
|
||||||
public class WechatPayService {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JsapiService service;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RefundService refundService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* jsapi下单
|
|
||||||
* @param orderNo 订单号
|
|
||||||
* @param desc 订单描述
|
|
||||||
* @param totalAmount 总金额,单位:分
|
|
||||||
* @param openId 用户openid
|
|
||||||
* @return prepay_id
|
|
||||||
*/
|
|
||||||
public String jsapiPay(String orderNo,String desc,Integer totalAmount,String openId, Long memberId,String appId){
|
|
||||||
PrepayRequest prepayRequest = new PrepayRequest();
|
|
||||||
prepayRequest.setAppid(appId);
|
|
||||||
prepayRequest.setMchid(WechatPayData.merchantId);
|
|
||||||
prepayRequest.setDescription(desc);
|
|
||||||
prepayRequest.setOutTradeNo(orderNo);
|
|
||||||
prepayRequest.setAttach(String.valueOf(memberId));
|
|
||||||
prepayRequest.setNotifyUrl(WechatPayData.notifyUrl);
|
|
||||||
Amount amount = new Amount();
|
|
||||||
amount.setTotal(totalAmount);
|
|
||||||
prepayRequest.setAmount(amount);
|
|
||||||
Payer payer = new Payer();
|
|
||||||
payer.setOpenid(openId);
|
|
||||||
prepayRequest.setPayer(payer);
|
|
||||||
PrepayResponse response = service.prepay(prepayRequest);
|
|
||||||
return response.getPrepayId();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Refund refundPay(String refundId,String payId,String notifyUrl,Long refundAmount, Long totalAmount,String reason) {
|
|
||||||
//请求参数
|
|
||||||
CreateRequest request = new CreateRequest();
|
|
||||||
request.setReason(reason);
|
|
||||||
//设置退款金额 根据自己的实际业务自行填写
|
|
||||||
AmountReq amountReq = new AmountReq();
|
|
||||||
amountReq.setRefund(refundAmount);
|
|
||||||
amountReq.setTotal(totalAmount);
|
|
||||||
amountReq.setCurrency("CNY");
|
|
||||||
request.setAmount(amountReq);
|
|
||||||
//支付成功后回调回来的transactionId 按照实际情况填写
|
|
||||||
request.setOutTradeNo(payId);
|
|
||||||
//支付成功后回调回来的transactionId 按照实际情况填写
|
|
||||||
request.setOutRefundNo(refundId);
|
|
||||||
//退款成功的回调地址
|
|
||||||
request.setNotifyUrl(notifyUrl);
|
|
||||||
//发起请求,申请退款
|
|
||||||
return refundService.create(request);
|
|
||||||
}
|
|
||||||
}
|
|
@ -14,10 +14,7 @@ import com.alibaba.excel.write.metadata.fill.FillWrapper;
|
|||||||
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||||
import jakarta.servlet.ServletOutputStream;
|
import jakarta.servlet.ServletOutputStream;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.AccessLevel;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||||
@ -28,7 +25,6 @@ import org.apache.poi.xssf.usermodel.XSSFDataValidation;
|
|||||||
import org.dromara.common.core.config.RuoYiConfig;
|
import org.dromara.common.core.config.RuoYiConfig;
|
||||||
import org.dromara.common.core.enums.FormatsType;
|
import org.dromara.common.core.enums.FormatsType;
|
||||||
import org.dromara.common.core.utils.DateUtils;
|
import org.dromara.common.core.utils.DateUtils;
|
||||||
import org.dromara.common.core.utils.ImageUtils;
|
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.core.utils.file.FileTypeUtils;
|
import org.dromara.common.core.utils.file.FileTypeUtils;
|
||||||
import org.dromara.common.core.utils.file.FileUtils;
|
import org.dromara.common.core.utils.file.FileUtils;
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>ruoyi-common-mongo</artifactId>
|
<artifactId>ruoyi-common-rabbitmq</artifactId>
|
||||||
|
|
||||||
<description>
|
<description>
|
||||||
ruoyi-common-mongo
|
ruoyi-common-rabbitmq
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -23,10 +23,9 @@
|
|||||||
<groupId>org.dromara</groupId>
|
<groupId>org.dromara</groupId>
|
||||||
<artifactId>ruoyi-common-log</artifactId>
|
<artifactId>ruoyi-common-log</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>rabbitmq-spring-boot-starter</artifactId>
|
<artifactId>spring-boot-starter-amqp</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,3 +50,4 @@ public class SaTokenExceptionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,10 +29,7 @@
|
|||||||
<artifactId>minio</artifactId>
|
<artifactId>minio</artifactId>
|
||||||
<version>8.2.1</version>
|
<version>8.2.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-amqp</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!--腾讯云短信-->
|
<!--腾讯云短信-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.tencentcloudapi</groupId>
|
<groupId>com.tencentcloudapi</groupId>
|
||||||
@ -144,11 +141,7 @@
|
|||||||
<artifactId>okhttp</artifactId>
|
<artifactId>okhttp</artifactId>
|
||||||
<version>4.12.0</version>
|
<version>4.12.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.dromara</groupId>
|
|
||||||
<artifactId>ruoyi-common-rabbitmq</artifactId>
|
|
||||||
<version>5.3.1</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -16,7 +16,6 @@ import com.wzj.soopin.goods.mapper.ProductMapper;
|
|||||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.dromara.common.core.utils.SecurityUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -8,7 +8,6 @@ import com.wzj.soopin.member.domain.po.MemberAddress;
|
|||||||
import com.wzj.soopin.member.domain.bo.MemberAddressBO;
|
import com.wzj.soopin.member.domain.bo.MemberAddressBO;
|
||||||
import com.wzj.soopin.member.mapper.MemberAddressMapper;
|
import com.wzj.soopin.member.mapper.MemberAddressMapper;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.dromara.common.core.utils.SecurityUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -19,7 +19,6 @@ import org.springframework.data.domain.Pageable;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.dromara.common.core.domain.model.LoginUser;
|
import org.dromara.common.core.domain.model.LoginUser;
|
||||||
import org.dromara.common.core.utils.SecurityUtils;
|
|
||||||
import org.dromara.common.log.annotation.Log;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
import org.dromara.common.redis.redis.RedisService;
|
import org.dromara.common.redis.redis.RedisService;
|
||||||
|
@ -12,7 +12,6 @@ import com.wzj.soopin.order.service.OrderService;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.utils.SecurityUtils;
|
|
||||||
import org.dromara.common.log.annotation.Log;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
import org.dromara.common.redis.redis.RedisService;
|
import org.dromara.common.redis.redis.RedisService;
|
||||||
|
@ -26,7 +26,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.dromara.common.core.domain.event.Constants;
|
import org.dromara.common.core.domain.event.Constants;
|
||||||
import org.dromara.common.core.enums.AftersaleStatus;
|
import org.dromara.common.core.enums.AftersaleStatus;
|
||||||
import org.dromara.common.core.enums.OrderRefundStatus;
|
import org.dromara.common.core.enums.OrderRefundStatus;
|
||||||
import org.dromara.common.core.wechat.WechatPayService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -27,9 +27,7 @@ import com.wzj.soopin.order.mapper.OrderMapper;
|
|||||||
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
|
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.dromara.common.core.domain.event.Constants;
|
import org.dromara.common.core.domain.event.Constants;
|
||||||
import org.dromara.common.core.utils.AesCryptoUtils;
|
|
||||||
import org.dromara.common.core.utils.PhoneUtils;
|
import org.dromara.common.core.utils.PhoneUtils;
|
||||||
import org.dromara.common.core.utils.SecurityUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
import cn.dev33.satoken.annotation.SaCheckRole;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.secure.BCrypt;
|
import cn.dev33.satoken.secure.BCrypt;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
import cn.dev33.satoken.annotation.SaCheckRole;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
import cn.dev33.satoken.annotation.SaCheckRole;
|
@ -1,4 +1,4 @@
|
|||||||
package com.wzj.soopin.manager.system.controller;
|
package org.dromara.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.secure.BCrypt;
|
import cn.dev33.satoken.secure.BCrypt;
|
Loading…
x
Reference in New Issue
Block a user