update 优化api,gateway,auth代码结构

2.X
AprilWind 1 year ago
parent bf95012138
commit ef83f06f2b

@ -9,11 +9,17 @@ public interface RemoteDataScopeService {
/**
*
*
* @param roleId ID
* @return null
*/
String getRoleCustom(Long roleId);
/**
*
*
* @param deptId ID
* @return null
*/
String getDeptAndChild(Long deptId);

@ -18,4 +18,5 @@ public interface RemoteDictService {
* @return
*/
List<RemoteDictDataVo> selectDictDataByType(String dictType);
}

@ -23,4 +23,5 @@ public interface RemoteLogService {
* @param sysLogininfor 访
*/
void saveLogininfor(RemoteLogininforBo sysLogininfor);
}

@ -13,22 +13,32 @@ import java.util.List;
public interface RemoteSocialService {
/**
* authId
* authId
*
* @param authId id
* @return
*/
List<RemoteSocialVo> selectByAuthId(String authId);
/**
*
*
* @param bo
*/
void insertByBo(RemoteSocialBo bo);
/**
*
*
* @param bo
*/
void updateByBo(RemoteSocialBo bo);
/**
*
*
* @param socialId ID
* @return
*/
Boolean deleteWithValidById(Long socialId);

@ -6,6 +6,8 @@ import org.dromara.system.api.domain.vo.RemoteTenantVo;
import java.util.List;
/**
*
*
* @author zhujie
*/
public interface RemoteTenantService {

@ -81,6 +81,22 @@ public interface RemoteUserService {
*/
String selectNicknameById(Long userId);
/**
* ID
*
* @param userId id
* @return
*/
String selectPhonenumberById(Long userId);
/**
* ID
*
* @param userId id
* @return
*/
String selectEmailById(Long userId);
/**
*
*

@ -11,7 +11,6 @@ import java.io.Serializable;
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
public class SysUserOnline implements Serializable {

@ -14,7 +14,6 @@ import java.util.Map;
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
public class RemoteLogininforBo implements Serializable {

@ -14,7 +14,6 @@ import java.util.Map;
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
public class RemoteOperLogBo implements Serializable {

@ -19,7 +19,6 @@ import java.util.Date;
*
* @author Michelle.Chung
*/
@Data
@NoArgsConstructor
public class RemoteUserBo implements Serializable {

@ -67,5 +67,4 @@ public class RemoteClientVo implements Serializable {
*/
private String status;
}

@ -59,11 +59,13 @@ public class CaptchaController {
// 生成验证码
CaptchaType captchaType = captchaProperties.getType();
boolean isMath = CaptchaType.MATH == captchaType;
//如果是则拿取数字验证码位数,如果不是则拿取字符验证码长度
Integer length = isMath ? captchaProperties.getNumberLength() : captchaProperties.getCharLength();
CodeGenerator codeGenerator = ReflectUtils.newInstance(captchaType.getClazz(), length);
AbstractCaptcha captcha = SpringUtils.getBean(captchaProperties.getCategory().getClazz());
captcha.setGenerator(codeGenerator);
captcha.createCode();
// 如果是数学验证码使用SpEL表达式处理验证码结果
String code = captcha.getCode();
if (isMath) {
ExpressionParser parser = new SpelExpressionParser();

@ -10,10 +10,19 @@ import lombok.Data;
@Data
public class TenantListVo {
/**
*
*/
private String tenantId;
/**
*
*/
private String companyName;
/**
*
*/
private String domain;
}

@ -11,7 +11,6 @@ import org.dromara.common.core.domain.model.LoginBody;
*
* @author Lion Li
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EmailLoginBody extends LoginBody {

@ -31,6 +31,9 @@ public class RegisterBody extends LoginBody {
@Length(min = PASSWORD_MIN_LENGTH, max = PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}")
private String password;
/**
*
*/
private String userType;
}

@ -10,7 +10,6 @@ import org.dromara.common.core.domain.model.LoginBody;
*
* @author Lion Li
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SmsLoginBody extends LoginBody {

@ -10,7 +10,6 @@ import org.dromara.common.core.domain.model.LoginBody;
*
* @author Lion Li
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SocialLoginBody extends LoginBody {

@ -10,7 +10,6 @@ import org.dromara.common.core.domain.model.LoginBody;
*
* @author Lion Li
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class XcxLoginBody extends LoginBody {

@ -17,6 +17,7 @@ import org.springframework.context.annotation.Configuration;
@RefreshScope
@ConfigurationProperties(prefix = "security.captcha")
public class CaptchaProperties {
/**
*
*/

@ -16,6 +16,11 @@ public interface IAuthStrategy {
/**
*
*
* @param body
* @param client
* @param grantType
* @return
*/
static LoginVo login(String body, RemoteClientVo client, String grantType) {
// 授权类型和客户端id
@ -29,6 +34,10 @@ public interface IAuthStrategy {
/**
*
*
* @param body
* @param client
* @return
*/
LoginVo login(String body, RemoteClientVo client);

@ -45,6 +45,9 @@ public class LogEventListener {
remoteLogService.saveLog(sysOperLog);
}
/**
* 访
*/
@Async
@EventListener
public void saveLogininfor(LogininforEvent logininforEvent) {
@ -52,10 +55,10 @@ public class LogEventListener {
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
final String ip = ServletUtils.getClientIP(request);
// 客户端信息
String clientid = request.getHeader(LoginHelper.CLIENT_KEY);
String clientId = request.getHeader(LoginHelper.CLIENT_KEY);
RemoteClientVo clientVo = null;
if (StringUtils.isNotBlank(clientid)) {
clientVo = remoteClientService.queryByClientId(clientid);
if (StringUtils.isNotBlank(clientId)) {
clientVo = remoteClientService.queryByClientId(clientId);
}
String address = AddressUtils.getRealAddressByIP(ip);
@ -93,7 +96,15 @@ public class LogEventListener {
remoteLogService.saveLogininfor(logininfor);
}
/**
*
* null
*
* @param msg
* @return
*/
private String getBlock(Object msg) {
// 如果传入对象为 null则将其替换为空字符串
if (msg == null) {
msg = "";
}

@ -21,6 +21,7 @@ import java.util.List;
@RefreshScope
@ConfigurationProperties(prefix = "security.ignore")
public class IgnoreWhiteProperties {
/**
*
*/

@ -18,6 +18,7 @@ import java.util.List;
@RefreshScope
@ConfigurationProperties(prefix = "security.xss")
public class XssProperties {
/**
* Xss
*/

@ -25,15 +25,39 @@ public class GlobalCorsFilter implements WebFilter, Ordered {
/**
* header
*/
private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Language, Content-Type, Authorization, clientid, credential, X-XSRF-TOKEN, isToken, token, Admin-Token, App-Token";
private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Language, Content-Type, Authorization, clientId, credential, X-XSRF-TOKEN, isToken, token, Admin-Token, App-Token";
/**
*
*/
private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD";
/**
* 使 *
*/
private static final String ALLOWED_ORIGIN = "*";
/**
* 访使 *
*/
private static final String ALLOWED_EXPOSE = "*";
/**
* 5
*/
private static final String MAX_AGE = "18000L";
/**
* Web
*
* @param exchange ServerWebExchange Web
* @param chain WebFilterChain Web
* @return Mono<Void>
*/
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
// 判断请求是否为跨域请求
if (CorsUtils.isCorsRequest(request)) {
ServerHttpResponse response = exchange.getResponse();
HttpHeaders headers = response.getHeaders();
@ -43,6 +67,7 @@ public class GlobalCorsFilter implements WebFilter, Ordered {
headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE);
headers.add("Access-Control-Max-Age", MAX_AGE);
headers.add("Access-Control-Allow-Credentials", "true");
// 处理预检请求的 OPTIONS 方法,直接返回成功状态码
if (request.getMethod() == HttpMethod.OPTIONS) {
response.setStatusCode(HttpStatus.OK);
return Mono.empty();

@ -48,6 +48,7 @@ public class GlobalLogFilter implements GlobalFilter, Ordered {
if (WebFluxUtils.isJsonRequest(exchange)) {
if (apiDecryptProperties.getEnabled()
&& ObjectUtil.isNotNull(request.getHeaders().getFirst(apiDecryptProperties.getHeaderFlag()))) {
//加密开启并且请求标识不能为空
log.info("[PLUS]开始请求 => URL[{}],参数类型[encrypt]", url);
} else {
String jsonParam = WebFluxUtils.resolveBodyFromCacheRequest(exchange);

@ -87,4 +87,5 @@ public class SysOssConfig extends BaseEntity {
* (0private 1public 2custom)
*/
private String accessPolicy;
}

@ -19,7 +19,6 @@ import jakarta.validation.constraints.Size;
* @author
* @date 2021-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SysOssConfig.class, reverseConvertGenerate = false)
@ -107,5 +106,4 @@ public class SysOssConfigBo extends BaseEntity {
@NotBlank(message = "桶权限类型不能为空", groups = {AddGroup.class, EditGroup.class})
private String accessPolicy;
}

@ -10,4 +10,5 @@ import org.dromara.resource.domain.vo.SysOssVo;
* @author Lion Li
*/
public interface SysOssMapper extends BaseMapperPlus<SysOss, SysOssVo> {
}

@ -37,7 +37,7 @@ public interface ISysOssConfigService {
*
*
* @param bo
* @return
* @return
*/
Boolean insertByBo(SysOssConfigBo bo);
@ -45,7 +45,7 @@ public interface ISysOssConfigService {
*
*
* @param bo
* @return
* @return
*/
Boolean updateByBo(SysOssConfigBo bo);
@ -54,7 +54,7 @@ public interface ISysOssConfigService {
*
* @param ids
* @param isValid ,true-,false-
* @return
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

@ -1,13 +1,12 @@
package org.dromara.resource.service;
import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.resource.domain.bo.SysOssBo;
import org.dromara.resource.domain.vo.SysOssVo;
import org.springframework.web.multipart.MultipartFile;
import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
@ -20,21 +19,77 @@ import java.util.List;
*/
public interface ISysOssService {
/**
* OSS
*
* @param sysOss OSS
* @param pageQuery
* @return
*/
TableDataInfo<SysOssVo> queryPageList(SysOssBo sysOss, PageQuery pageQuery);
/**
* ossIds SysOssVo
*
* @param ossIds
* @return SysOssVo
*/
List<SysOssVo> listByIds(Collection<Long> ossIds);
/**
* ossIds URL
*
* @param ossIds ossId
* @return URL
*/
String selectUrlByIds(String ossIds);
/**
* ossId SysOssVo
*
* @param ossId
* @return SysOssVo
*/
SysOssVo getById(Long ossId);
/**
* MultipartFile
*
* @param file MultipartFile
* @return SysOssVo
*/
SysOssVo upload(MultipartFile file);
/**
*
*
* @param file
* @return SysOssVo
*/
SysOssVo upload(File file);
/**
* OSS
*
* @param bo SysOssBo
* @return
*/
Boolean insertByBo(SysOssBo bo);
/**
*
*
* @param ossId OSSID
* @param response HttpServletResponse
*/
void download(Long ossId, HttpServletResponse response) throws IOException;
/**
* OSS
*
* @param ids OSSID
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -51,6 +51,13 @@ public class SysOssServiceImpl implements ISysOssService {
private final SysOssMapper baseMapper;
/**
* OSS
*
* @param bo OSS
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<SysOssVo> queryPageList(SysOssBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysOss> lqw = buildQueryWrapper(bo);
@ -60,6 +67,12 @@ public class SysOssServiceImpl implements ISysOssService {
return TableDataInfo.build(result);
}
/**
* ossIds SysOssVo
*
* @param ossIds
* @return SysOssVo
*/
@Override
public List<SysOssVo> listByIds(Collection<Long> ossIds) {
List<SysOssVo> list = new ArrayList<>();
@ -71,11 +84,18 @@ public class SysOssServiceImpl implements ISysOssService {
} catch (Exception ignored) {
// 如果oss异常无法连接则将数据直接返回
list.add(vo);
} }
}
}
}
return list;
}
/**
* ossIds URL
*
* @param ossIds ossId
* @return URL
*/
@Override
public String selectUrlByIds(String ossIds) {
List<String> list = new ArrayList<>();
@ -108,12 +128,24 @@ public class SysOssServiceImpl implements ISysOssService {
return lqw;
}
/**
* ossId SysOssVo
*
* @param ossId
* @return SysOssVo
*/
@Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId")
@Override
public SysOssVo getById(Long ossId) {
return baseMapper.selectVoById(ossId);
}
/**
*
*
* @param ossId OSSID
* @param response HttpServletResponse
*/
@Override
public void download(Long ossId, HttpServletResponse response) throws IOException {
SysOssVo sysOss = SpringUtils.getAopProxy(this).getById(ossId);
@ -123,7 +155,7 @@ public class SysOssServiceImpl implements ISysOssService {
FileUtils.setAttachmentResponseHeader(response, sysOss.getOriginalName());
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8");
OssClient storage = OssFactory.instance(sysOss.getService());
try(InputStream inputStream = storage.getObjectContent(sysOss.getUrl())) {
try (InputStream inputStream = storage.getObjectContent(sysOss.getUrl())) {
int available = inputStream.available();
IoUtil.copy(inputStream, response.getOutputStream(), available);
response.setContentLength(available);
@ -132,6 +164,13 @@ public class SysOssServiceImpl implements ISysOssService {
}
}
/**
* MultipartFile
*
* @param file MultipartFile
* @return SysOssVo
* @throws ServiceException ServiceException
*/
@Override
public SysOssVo upload(MultipartFile file) {
String originalfileName = file.getOriginalFilename();
@ -147,6 +186,12 @@ public class SysOssServiceImpl implements ISysOssService {
return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
}
/**
*
*
* @param file
* @return SysOssVo
*/
@Override
public SysOssVo upload(File file) {
String originalfileName = file.getName();
@ -169,6 +214,12 @@ public class SysOssServiceImpl implements ISysOssService {
return this.matchingUrl(sysOssVo);
}
/**
* OSS
*
* @param bo SysOssBo
* @return
*/
@Override
public Boolean insertByBo(SysOssBo bo) {
SysOss oss = BeanUtil.toBean(bo, SysOss.class);
@ -179,6 +230,13 @@ public class SysOssServiceImpl implements ISysOssService {
return flag;
}
/**
* OSS
*
* @param ids OSSID
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
@ -193,7 +251,7 @@ public class SysOssServiceImpl implements ISysOssService {
}
/**
* Url
* private URL URL120s
*
* @param oss OSS
* @return oss UrlOSS

@ -148,16 +148,50 @@ public class RemoteUserServiceImpl implements RemoteUserService {
return userService.registerUser(sysUserBo, remoteUserBo.getTenantId());
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public String selectUserNameById(Long userId) {
return userService.selectUserNameById(userId);
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public String selectNicknameById(Long userId) {
return userService.selectNicknameById(userId);
}
/**
* ID
*
* @param userId id
* @return
*/
@Override
public String selectPhonenumberById(Long userId) {
return userService.selectPhonenumberById(userId);
}
/**
* ID
*
* @param userId id
* @return
*/
@Override
public String selectEmailById(Long userId) {
return userService.selectEmailById(userId);
}
/**
*
*/

@ -219,11 +219,27 @@ public interface ISysUserService {
*/
String selectNicknameById(Long userId);
/**
* ID
*
* @param userId id
* @return
*/
String selectPhonenumberById(Long userId);
/**
* ID
*
* @param userId id
* @return
*/
String selectEmailById(Long userId);
/**
* id
*
* @param deptId
* @return
* @param deptId id
* @return
*/
List<SysUserVo> selectUserListByDept(Long deptId);

@ -94,7 +94,7 @@ public class SysClientServiceImpl implements ISysClientService {
SysClient add = MapstructUtils.convert(bo, SysClient.class);
validEntityBeforeSave(add);
add.setGrantType(String.join(",", bo.getGrantTypeList()));
// 生成clientid
// 生成clientId
String clientKey = bo.getClientKey();
String clientSecret = bo.getClientSecret();
add.setClientId(SecureUtil.md5(clientKey + clientSecret));

@ -523,8 +523,8 @@ public class SysUserServiceImpl implements ISysUserService {
/**
* id
*
* @param deptId
* @return
* @param deptId ID
* @return
*/
@Override
public List<SysUserVo> selectUserListByDept(Long deptId) {
@ -534,6 +534,12 @@ public class SysUserServiceImpl implements ISysUserService {
return baseMapper.selectVoList(lqw);
}
/**
* ID
*
* @param userId ID
* @return
*/
@Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
@Override
public String selectUserNameById(Long userId) {
@ -542,6 +548,12 @@ public class SysUserServiceImpl implements ISysUserService {
return ObjectUtil.isNull(sysUser) ? null : sysUser.getUserName();
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
@Cacheable(cacheNames = CacheNames.SYS_NICKNAME, key = "#userId")
public String selectNicknameById(Long userId) {
@ -550,4 +562,30 @@ public class SysUserServiceImpl implements ISysUserService {
return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName();
}
/**
* ID
*
* @param userId id
* @return
*/
@Override
public String selectPhonenumberById(Long userId) {
SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getPhonenumber).eq(SysUser::getUserId, userId));
return ObjectUtil.isNull(sysUser) ? null : sysUser.getPhonenumber();
}
/**
* ID
*
* @param userId id
* @return
*/
@Override
public String selectEmailById(Long userId) {
SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getEmail).eq(SysUser::getUserId, userId));
return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail();
}
}

Loading…
Cancel
Save