refactor: 重构util目录
This commit is contained in:
parent
f299cb811b
commit
b80208446e
|
@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
|
|
||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||||
|
@ -128,10 +127,6 @@ public class RedisConfiguration {
|
||||||
// 设置ObjectMapper访问权限
|
// 设置ObjectMapper访问权限
|
||||||
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||||
|
|
||||||
// 记录序列化之后的数据类型,方便反序列化
|
|
||||||
mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
|
|
||||||
// mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.EVERYTHING);
|
|
||||||
|
|
||||||
// 关闭默认的日期格式化方式,默认UTC日期格式 yyyy-MM-dd’T’HH:mm:ss.SSS
|
// 关闭默认的日期格式化方式,默认UTC日期格式 yyyy-MM-dd’T’HH:mm:ss.SSS
|
||||||
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||||
mapper.registerModule(timeModule);
|
mapper.registerModule(timeModule);
|
||||||
|
|
|
@ -9,7 +9,7 @@ import cn.bunny.services.context.BaseContext;
|
||||||
import cn.bunny.services.mapper.system.PowerMapper;
|
import cn.bunny.services.mapper.system.PowerMapper;
|
||||||
import cn.bunny.services.mapper.system.RoleMapper;
|
import cn.bunny.services.mapper.system.RoleMapper;
|
||||||
import cn.bunny.services.utils.JwtHelper;
|
import cn.bunny.services.utils.JwtHelper;
|
||||||
import cn.bunny.services.utils.RoleUtil;
|
import cn.bunny.services.utils.system.RoleUtil;
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
|
@ -13,7 +13,7 @@ import cn.bunny.services.context.BaseContext;
|
||||||
import cn.bunny.services.exception.AuthCustomerException;
|
import cn.bunny.services.exception.AuthCustomerException;
|
||||||
import cn.bunny.services.mapper.message.MessageReceivedMapper;
|
import cn.bunny.services.mapper.message.MessageReceivedMapper;
|
||||||
import cn.bunny.services.service.message.MessageReceivedService;
|
import cn.bunny.services.service.message.MessageReceivedService;
|
||||||
import cn.bunny.services.utils.UserUtil;
|
import cn.bunny.services.utils.system.UserUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
|
@ -19,7 +19,7 @@ import cn.bunny.services.mapper.message.MessageReceivedMapper;
|
||||||
import cn.bunny.services.mapper.system.UserMapper;
|
import cn.bunny.services.mapper.system.UserMapper;
|
||||||
import cn.bunny.services.service.message.MessageReceivedService;
|
import cn.bunny.services.service.message.MessageReceivedService;
|
||||||
import cn.bunny.services.service.message.MessageService;
|
import cn.bunny.services.service.message.MessageService;
|
||||||
import cn.bunny.services.utils.UserUtil;
|
import cn.bunny.services.utils.system.UserUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
|
|
@ -14,9 +14,9 @@ import cn.bunny.services.context.BaseContext;
|
||||||
import cn.bunny.services.exception.AuthCustomerException;
|
import cn.bunny.services.exception.AuthCustomerException;
|
||||||
import cn.bunny.services.mapper.system.FilesMapper;
|
import cn.bunny.services.mapper.system.FilesMapper;
|
||||||
import cn.bunny.services.service.system.FilesService;
|
import cn.bunny.services.service.system.FilesService;
|
||||||
import cn.bunny.services.utils.FileUtil;
|
|
||||||
import cn.bunny.services.utils.minio.MinioProperties;
|
import cn.bunny.services.utils.minio.MinioProperties;
|
||||||
import cn.bunny.services.utils.minio.MinioUtil;
|
import cn.bunny.services.utils.minio.MinioUtil;
|
||||||
|
import cn.bunny.services.utils.system.FileUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
|
@ -8,7 +8,7 @@ import cn.bunny.services.mapper.system.RolePowerMapper;
|
||||||
import cn.bunny.services.mapper.system.UserMapper;
|
import cn.bunny.services.mapper.system.UserMapper;
|
||||||
import cn.bunny.services.mapper.system.UserRoleMapper;
|
import cn.bunny.services.mapper.system.UserRoleMapper;
|
||||||
import cn.bunny.services.service.system.RolePowerService;
|
import cn.bunny.services.service.system.RolePowerService;
|
||||||
import cn.bunny.services.utils.RoleUtil;
|
import cn.bunny.services.utils.system.RoleUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
|
@ -14,7 +14,7 @@ import cn.bunny.services.mapper.system.RolePowerMapper;
|
||||||
import cn.bunny.services.mapper.system.RouterRoleMapper;
|
import cn.bunny.services.mapper.system.RouterRoleMapper;
|
||||||
import cn.bunny.services.mapper.system.UserRoleMapper;
|
import cn.bunny.services.mapper.system.UserRoleMapper;
|
||||||
import cn.bunny.services.service.system.RoleService;
|
import cn.bunny.services.service.system.RoleService;
|
||||||
import cn.bunny.services.utils.RoleUtil;
|
import cn.bunny.services.utils.system.RoleUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
|
@ -20,8 +20,8 @@ import cn.bunny.services.mapper.system.RolePowerMapper;
|
||||||
import cn.bunny.services.mapper.system.RouterMapper;
|
import cn.bunny.services.mapper.system.RouterMapper;
|
||||||
import cn.bunny.services.mapper.system.RouterRoleMapper;
|
import cn.bunny.services.mapper.system.RouterRoleMapper;
|
||||||
import cn.bunny.services.service.system.RouterService;
|
import cn.bunny.services.service.system.RouterService;
|
||||||
import cn.bunny.services.utils.RoleUtil;
|
import cn.bunny.services.utils.system.RoleUtil;
|
||||||
import cn.bunny.services.utils.RouterServiceUtil;
|
import cn.bunny.services.utils.system.RouterServiceUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
|
@ -11,7 +11,7 @@ import cn.bunny.services.exception.AuthCustomerException;
|
||||||
import cn.bunny.services.mapper.system.UserMapper;
|
import cn.bunny.services.mapper.system.UserMapper;
|
||||||
import cn.bunny.services.mapper.system.UserRoleMapper;
|
import cn.bunny.services.mapper.system.UserRoleMapper;
|
||||||
import cn.bunny.services.service.system.UserRoleService;
|
import cn.bunny.services.service.system.UserRoleService;
|
||||||
import cn.bunny.services.utils.UserUtil;
|
import cn.bunny.services.utils.system.UserUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
|
@ -26,13 +26,13 @@ import cn.bunny.services.mapper.system.UserRoleMapper;
|
||||||
import cn.bunny.services.service.system.FilesService;
|
import cn.bunny.services.service.system.FilesService;
|
||||||
import cn.bunny.services.service.system.UserService;
|
import cn.bunny.services.service.system.UserService;
|
||||||
import cn.bunny.services.utils.JwtHelper;
|
import cn.bunny.services.utils.JwtHelper;
|
||||||
import cn.bunny.services.utils.UserUtil;
|
|
||||||
import cn.bunny.services.utils.email.ConcreteSenderEmailTemplate;
|
import cn.bunny.services.utils.email.ConcreteSenderEmailTemplate;
|
||||||
import cn.bunny.services.utils.ip.IpUtil;
|
import cn.bunny.services.utils.ip.IpUtil;
|
||||||
import cn.bunny.services.utils.login.DefaultLoginStrategy;
|
import cn.bunny.services.utils.login.DefaultLoginStrategy;
|
||||||
import cn.bunny.services.utils.login.EmailLoginStrategy;
|
import cn.bunny.services.utils.login.EmailLoginStrategy;
|
||||||
import cn.bunny.services.utils.login.LoginContext;
|
import cn.bunny.services.utils.login.LoginContext;
|
||||||
import cn.bunny.services.utils.login.LoginStrategy;
|
import cn.bunny.services.utils.login.LoginStrategy;
|
||||||
|
import cn.bunny.services.utils.system.UserUtil;
|
||||||
import cn.hutool.captcha.CaptchaUtil;
|
import cn.hutool.captcha.CaptchaUtil;
|
||||||
import cn.hutool.captcha.CircleCaptcha;
|
import cn.hutool.captcha.CircleCaptcha;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
|
|
@ -83,6 +83,7 @@ public class JwtHelper {
|
||||||
* @return token
|
* @return token
|
||||||
*/
|
*/
|
||||||
public static String createTokenWithMap(Map<String, Object> map, String tokenSignKey) {
|
public static String createTokenWithMap(Map<String, Object> map, String tokenSignKey) {
|
||||||
|
|
||||||
return Jwts.builder()
|
return Jwts.builder()
|
||||||
.subject(subject)
|
.subject(subject)
|
||||||
.expiration(time)
|
.expiration(time)
|
||||||
|
@ -239,18 +240,8 @@ public class JwtHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据token获取主题
|
|
||||||
*
|
|
||||||
* @param token token
|
|
||||||
* @return 主题
|
|
||||||
*/
|
|
||||||
public static String getSubjectByToken(String token) {
|
|
||||||
return getSubjectByTokenHandler(token, tokenSignKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static String getSubjectByTokenHandler(String token, String tokenSignKey) {
|
private static String getSubjectByTokenHandler(String token) {
|
||||||
try {
|
try {
|
||||||
if (!StringUtils.hasText(token)) throw new AuthCustomerException(ResultCodeEnum.TOKEN_PARSING_FAILED);
|
if (!StringUtils.hasText(token)) throw new AuthCustomerException(ResultCodeEnum.TOKEN_PARSING_FAILED);
|
||||||
Jws<Claims> claimsJws = Jwts.parser().verifyWith(key).build().parseSignedClaims(token);
|
Jws<Claims> claimsJws = Jwts.parser().verifyWith(key).build().parseSignedClaims(token);
|
||||||
|
@ -269,8 +260,8 @@ public class JwtHelper {
|
||||||
* @param token token
|
* @param token token
|
||||||
* @return 主题
|
* @return 主题
|
||||||
*/
|
*/
|
||||||
public static String getSubjectByToken(String token, String tokenSignKey) {
|
public static String getSubjectByToken(String token) {
|
||||||
return getSubjectByTokenHandler(token, tokenSignKey);
|
return getSubjectByTokenHandler(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -317,27 +308,16 @@ public class JwtHelper {
|
||||||
* @return 是否过期
|
* @return 是否过期
|
||||||
*/
|
*/
|
||||||
public static boolean isExpired(String token) {
|
public static boolean isExpired(String token) {
|
||||||
return isExpiredUtil(token, tokenSignKey);
|
return isExpiredUtil(token);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断token是否过期
|
|
||||||
*
|
|
||||||
* @param token token
|
|
||||||
* @return 是否过期
|
|
||||||
*/
|
|
||||||
public static boolean isExpired(String token, String tokenSignKey) {
|
|
||||||
return isExpiredUtil(token, tokenSignKey);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否过期
|
* 判断是否过期
|
||||||
*
|
*
|
||||||
* @param token token
|
* @param token token
|
||||||
* @param tokenSignKey key值
|
|
||||||
* @return 是否过期
|
* @return 是否过期
|
||||||
*/
|
*/
|
||||||
private static boolean isExpiredUtil(String token, String tokenSignKey) {
|
private static boolean isExpiredUtil(String token) {
|
||||||
try {
|
try {
|
||||||
Jws<Claims> claimsJws = Jwts.parser().verifyWith(key).build().parseSignedClaims(token);
|
Jws<Claims> claimsJws = Jwts.parser().verifyWith(key).build().parseSignedClaims(token);
|
||||||
Date expiration = claimsJws.getPayload().getExpiration();
|
Date expiration = claimsJws.getPayload().getExpiration();
|
||||||
|
|
|
@ -12,14 +12,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import jakarta.mail.MessagingException;
|
import jakarta.mail.MessagingException;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
|
||||||
public abstract class AbstractSenderEmailTemplate {
|
public abstract class AbstractSenderEmailTemplate {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmailUsersMapper emailUsersMapper;
|
private EmailUsersMapper emailUsersMapper;
|
||||||
|
|
||||||
|
@ -38,7 +35,10 @@ public abstract class AbstractSenderEmailTemplate {
|
||||||
Long emailUser = emailTemplate.getEmailUser();
|
Long emailUser = emailTemplate.getEmailUser();
|
||||||
EmailUsers emailUsers;
|
EmailUsers emailUsers;
|
||||||
if (emailUser == null) {
|
if (emailUser == null) {
|
||||||
|
// 如果用户不存在就是用默认用户进行邮件发送
|
||||||
emailUsers = emailUsersMapper.selectOne(Wrappers.<EmailUsers>lambdaQuery().eq(EmailUsers::getIsDefault, true));
|
emailUsers = emailUsersMapper.selectOne(Wrappers.<EmailUsers>lambdaQuery().eq(EmailUsers::getIsDefault, true));
|
||||||
|
|
||||||
|
// 默认发送用户也不存在
|
||||||
if (emailUsers == null) throw new AuthCustomerException(ResultCodeEnum.EMAIL_USER_IS_EMPTY);
|
if (emailUsers == null) throw new AuthCustomerException(ResultCodeEnum.EMAIL_USER_IS_EMPTY);
|
||||||
} else {
|
} else {
|
||||||
emailUsers = emailUsersMapper.selectOne(Wrappers.<EmailUsers>lambdaQuery().eq(EmailUsers::getId, emailUser));
|
emailUsers = emailUsersMapper.selectOne(Wrappers.<EmailUsers>lambdaQuery().eq(EmailUsers::getId, emailUser));
|
||||||
|
|
|
@ -3,15 +3,17 @@ package cn.bunny.services.utils.email;
|
||||||
import cn.bunny.dao.entity.system.EmailTemplate;
|
import cn.bunny.dao.entity.system.EmailTemplate;
|
||||||
import cn.bunny.services.mapper.configuration.EmailTemplateMapper;
|
import cn.bunny.services.mapper.configuration.EmailTemplateMapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ConcreteSenderEmailTemplate extends AbstractSenderEmailTemplate {
|
public class ConcreteSenderEmailTemplate extends AbstractSenderEmailTemplate {
|
||||||
@Autowired
|
private final EmailTemplateMapper emailTemplateMapper;
|
||||||
private EmailTemplateMapper emailTemplateMapper;
|
|
||||||
|
public ConcreteSenderEmailTemplate(EmailTemplateMapper emailTemplateMapper) {
|
||||||
|
this.emailTemplateMapper = emailTemplateMapper;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送邮件模板
|
* 发送邮件模板
|
||||||
|
|
|
@ -14,6 +14,9 @@ import java.net.InetAddress;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户请求的IP地址转成归属地
|
||||||
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class IpUtil {
|
public class IpUtil {
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邮件发送工具
|
||||||
|
*/
|
||||||
public class MailSenderUtil {
|
public class MailSenderUtil {
|
||||||
private MailSenderUtil() {
|
private MailSenderUtil() {
|
||||||
// 私有化构造器
|
// 私有化构造器
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Configuration example
|
Configuration example
|
||||||
|
|
||||||
|
# 在配置文件中的参考
|
||||||
mail:
|
mail:
|
||||||
host: smtp.qq.com # 邮箱地址
|
host: smtp.qq.com # 邮箱地址
|
||||||
port: 465 # 邮箱端口号
|
port: 465 # 邮箱端口号
|
||||||
|
|
|
@ -2,7 +2,6 @@ package cn.bunny.services.utils.minio;
|
||||||
|
|
||||||
import io.minio.MinioClient;
|
import io.minio.MinioClient;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -12,16 +11,15 @@ import org.springframework.context.annotation.Configuration;
|
||||||
@ConfigurationProperties(prefix = "bunny.minio")
|
@ConfigurationProperties(prefix = "bunny.minio")
|
||||||
@ConditionalOnProperty(name = "bunny.minio.bucket-name")// 当属性有值时这个配置才生效
|
@ConditionalOnProperty(name = "bunny.minio.bucket-name")// 当属性有值时这个配置才生效
|
||||||
@Data
|
@Data
|
||||||
@Slf4j
|
|
||||||
public class MinioProperties {
|
public class MinioProperties {
|
||||||
|
|
||||||
// 地址
|
/* 地址 */
|
||||||
private String endpointUrl;
|
private String endpointUrl;
|
||||||
// 访问秘钥
|
/* 访问秘钥 */
|
||||||
private String accessKey;
|
private String accessKey;
|
||||||
// 私有秘钥
|
/* 私有秘钥 */
|
||||||
private String secretKey;
|
private String secretKey;
|
||||||
// 桶名称
|
/* 桶名称 */
|
||||||
private String bucketName;
|
private String bucketName;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
|
|
@ -8,7 +8,6 @@ import io.minio.*;
|
||||||
import io.minio.messages.DeleteError;
|
import io.minio.messages.DeleteError;
|
||||||
import io.minio.messages.DeleteObject;
|
import io.minio.messages.DeleteObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
@ -22,16 +21,19 @@ import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minio操作工具类 简化操作步骤
|
* Minio操作工具类 简化操作步骤
|
||||||
* By:Bunny0212
|
* 自定义封装
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class MinioUtil {
|
public class MinioUtil {
|
||||||
@Autowired
|
private final MinioProperties properties;
|
||||||
private MinioProperties properties;
|
|
||||||
|
|
||||||
@Autowired
|
private final MinioClient minioClient;
|
||||||
private MinioClient minioClient;
|
|
||||||
|
public MinioUtil(MinioProperties properties, MinioClient minioClient) {
|
||||||
|
this.properties = properties;
|
||||||
|
this.minioClient = minioClient;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取Minio文件路径
|
* 获取Minio文件路径
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
package cn.bunny.services.utils;
|
package cn.bunny.services.utils.system;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Component
|
/*
|
||||||
|
* 文件工具类
|
||||||
|
* 格式化字节大小
|
||||||
|
*/
|
||||||
public class FileUtil {
|
public class FileUtil {
|
||||||
/**
|
/**
|
||||||
* * 获取文件大小字符串
|
* 获取文件大小字符串
|
||||||
|
*
|
||||||
|
* @param fileSize 文件大小
|
||||||
|
* @return 格式化后文件大小
|
||||||
*/
|
*/
|
||||||
public static String getSize(Long fileSize) {
|
public static String getSize(Long fileSize) {
|
||||||
double fileSizeInKB = fileSize / 1024.00;
|
double fileSizeInKB = fileSize / 1024.00;
|
|
@ -1,4 +1,4 @@
|
||||||
package cn.bunny.services.utils;
|
package cn.bunny.services.utils.system;
|
||||||
|
|
||||||
import cn.bunny.dao.constant.RedisUserConstant;
|
import cn.bunny.dao.constant.RedisUserConstant;
|
||||||
import cn.bunny.dao.entity.system.AdminUser;
|
import cn.bunny.dao.entity.system.AdminUser;
|
|
@ -1,4 +1,4 @@
|
||||||
package cn.bunny.services.utils;
|
package cn.bunny.services.utils.system;
|
||||||
|
|
||||||
import cn.bunny.dao.vo.system.router.UserRouterVo;
|
import cn.bunny.dao.vo.system.router.UserRouterVo;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
|
@ -1,4 +1,4 @@
|
||||||
package cn.bunny.services.utils;
|
package cn.bunny.services.utils.system;
|
||||||
|
|
||||||
import cn.bunny.dao.constant.LocalDateTimeConstant;
|
import cn.bunny.dao.constant.LocalDateTimeConstant;
|
||||||
import cn.bunny.dao.constant.RedisUserConstant;
|
import cn.bunny.dao.constant.RedisUserConstant;
|
||||||
|
@ -13,11 +13,12 @@ import cn.bunny.services.mapper.log.UserLoginLogMapper;
|
||||||
import cn.bunny.services.mapper.system.PowerMapper;
|
import cn.bunny.services.mapper.system.PowerMapper;
|
||||||
import cn.bunny.services.mapper.system.RoleMapper;
|
import cn.bunny.services.mapper.system.RoleMapper;
|
||||||
import cn.bunny.services.mapper.system.UserMapper;
|
import cn.bunny.services.mapper.system.UserMapper;
|
||||||
|
import cn.bunny.services.utils.JwtHelper;
|
||||||
import cn.bunny.services.utils.ip.IpUtil;
|
import cn.bunny.services.utils.ip.IpUtil;
|
||||||
import cn.bunny.services.utils.minio.MinioUtil;
|
import cn.bunny.services.utils.minio.MinioUtil;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
@ -33,25 +34,24 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Component
|
@Component
|
||||||
public class UserUtil {
|
public class UserUtil {
|
||||||
@Autowired
|
private final MinioUtil minioUtil;
|
||||||
private PowerMapper powerMapper;
|
private final PowerMapper powerMapper;
|
||||||
|
private final RoleMapper roleMapper;
|
||||||
|
private final UserMapper userMapper;
|
||||||
|
private final UserLoginLogMapper userLoginLogMapper;
|
||||||
|
private final RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
@Autowired
|
// public UserUtil(MinioUtil minioUtil, PowerMapper powerMapper, RoleMapper roleMapper, UserMapper userMapper, UserLoginLogMapper userLoginLogMapper, RedisTemplate<String, Object> redisTemplate) {
|
||||||
private RoleMapper roleMapper;
|
// this.minioUtil = minioUtil;
|
||||||
|
// this.powerMapper = powerMapper;
|
||||||
@Autowired
|
// this.roleMapper = roleMapper;
|
||||||
private UserMapper userMapper;
|
// this.userMapper = userMapper;
|
||||||
|
// this.userLoginLogMapper = userLoginLogMapper;
|
||||||
@Autowired
|
// this.redisTemplate = redisTemplate;
|
||||||
private UserLoginLogMapper userLoginLogMapper;
|
// }
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RedisTemplate<String, Object> redisTemplate;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private MinioUtil minioUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建登录用户返回对象
|
* 构建登录用户返回对象
|
|
@ -6,7 +6,7 @@ import cn.bunny.dao.entity.system.AdminUser;
|
||||||
import cn.bunny.dao.vo.result.Result;
|
import cn.bunny.dao.vo.result.Result;
|
||||||
import cn.bunny.dao.vo.system.user.LoginVo;
|
import cn.bunny.dao.vo.system.user.LoginVo;
|
||||||
import cn.bunny.services.mapper.system.UserMapper;
|
import cn.bunny.services.mapper.system.UserMapper;
|
||||||
import cn.bunny.services.utils.UserUtil;
|
import cn.bunny.services.utils.system.UserUtil;
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.TypeReference;
|
import com.alibaba.fastjson2.TypeReference;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
package cn.bunny.services.service.impl;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
||||||
|
|
||||||
@SpringBootTest
|
|
||||||
class UserServiceImplTest {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private PasswordEncoder passwordEncoder;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void updateUserPasswordByAdmin() {
|
|
||||||
String encode = passwordEncoder.encode("123456");
|
|
||||||
System.out.println(encode);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
@ -14,9 +15,18 @@ class ConcreteSenderEmailTemplateTest extends AbstractSenderEmailTemplate {
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmailTemplateMapper emailTemplateMapper;
|
private EmailTemplateMapper emailTemplateMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PasswordEncoder passwordEncoder;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void sendEmailTemplate() {
|
void sendEmailTemplate() {
|
||||||
EmailTemplate emailTemplate = emailTemplateMapper.selectOne(Wrappers.<EmailTemplate>lambdaQuery().eq(EmailTemplate::getId, 1791870020197625858L));
|
EmailTemplate emailTemplate = emailTemplateMapper.selectOne(Wrappers.<EmailTemplate>lambdaQuery().eq(EmailTemplate::getId, 1791870020197625858L));
|
||||||
sendEmail("1319900154@qq.com", emailTemplate, new HashMap<>());
|
sendEmail("xaher94124@birige.com", emailTemplate, new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void updateUserPasswordByAdmin() {
|
||||||
|
String encode = passwordEncoder.encode("123456");
|
||||||
|
System.out.println(encode);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue