perf:代码调整

This commit is contained in:
曾文豪
2023-01-10 14:19:23 +08:00
parent 84a5b756c9
commit 6281cd3682
19 changed files with 77 additions and 98 deletions

View File

@@ -8,5 +8,5 @@ import org.springframework.context.annotation.ComponentScan;
@ComponentScan({ @ComponentScan({
"com.tiesheng.migration.**.*" "com.tiesheng.migration.**.*"
}) })
public class MigrationAutoImportSelector { public class MigrationAutoConfigurer {
} }

View File

@@ -1,6 +1,6 @@
package com.tiesheng.login; package com.tiesheng.login;
import com.tiesheng.platform.PlatformAutoImportSelector; import com.tiesheng.platform.PlatformAutoConfigurer;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
@@ -11,6 +11,6 @@ import org.springframework.context.annotation.Import;
@ComponentScan({ @ComponentScan({
"com.tiesheng.login.**.*", "com.tiesheng.login.**.*",
}) })
@Import(PlatformAutoImportSelector.class) @Import(PlatformAutoConfigurer.class)
public class LoginAutoImportSelector { public class LoginAutoConfigurer {
} }

View File

@@ -8,7 +8,7 @@ import com.tiesheng.annotation.token.TokenIgnore;
import com.tiesheng.login.config.token.TsTokenConfig; import com.tiesheng.login.config.token.TsTokenConfig;
import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.config.token.bean.TokenBean;
import com.tiesheng.login.pojos.dto.UniqueIndexDTO; import com.tiesheng.login.pojos.dto.UniqueIndexDTO;
import com.tiesheng.login.service.LoginService; import com.tiesheng.login.service.TieshengLoginConfigurer;
import com.tiesheng.platform.config.ding.PlatformDingConfig; import com.tiesheng.platform.config.ding.PlatformDingConfig;
import com.tiesheng.platform.config.ding.bean.DingJsapiSignature; import com.tiesheng.platform.config.ding.bean.DingJsapiSignature;
import com.tiesheng.platform.config.ding.bean.DingUserInfo; import com.tiesheng.platform.config.ding.bean.DingUserInfo;
@@ -25,7 +25,6 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
/** /**
* @author hao * @author hao
@@ -40,7 +39,7 @@ public class LoginController {
@Autowired @Autowired
PlatformDingConfig platformDingConfig; PlatformDingConfig platformDingConfig;
@Autowired @Autowired
LoginService loginService; TieshengLoginConfigurer tieshengLoginConfigurer;
@Autowired @Autowired
TsTokenConfig tsTokenConfig; TsTokenConfig tsTokenConfig;
@Autowired @Autowired
@@ -55,11 +54,9 @@ public class LoginController {
@GetMapping("/unique/redirect") @GetMapping("/unique/redirect")
@TokenIgnore @TokenIgnore
public void uniqueIndex(UniqueIndexDTO dto, HttpServletResponse response) { public void uniqueIndex(UniqueIndexDTO dto, HttpServletResponse response) {
loginService.checkLoginConfigurer(s -> { TokenBean tokenBean = tieshengLoginConfigurer.doLogin("unique_index_" + dto.getPlatform(),
TokenBean tokenBean = s.doLogin("unique_index_" + dto.getPlatform(), dto.getNo(), dto.getPlatform(), dto.getInfo());
dto.getNo(), dto.getPlatform(), dto.getInfo()); tieshengLoginConfigurer.onLoginRedirect(tokenBean, dto.getExtra(), response);
s.onLoginRedirect(tokenBean, dto.getExtra(), response);
});
} }
@@ -72,12 +69,8 @@ public class LoginController {
@PostMapping("/unique/index") @PostMapping("/unique/index")
@TokenIgnore @TokenIgnore
public ApiResp<String> uniqueIndex(@RequestBody UniqueIndexDTO dto) { public ApiResp<String> uniqueIndex(@RequestBody UniqueIndexDTO dto) {
AtomicReference<TokenBean> tokenBeanAtomicReference = new AtomicReference<>(); TokenBean tokenBean = tieshengLoginConfigurer.doLogin("unique_index_" + dto.getPlatform(),
loginService.checkLoginConfigurer(s -> { dto.getNo(), dto.getPlatform(), dto.getInfo());
tokenBeanAtomicReference.set(s.doLogin("unique_index_" + dto.getPlatform(),
dto.getNo(), dto.getPlatform(), dto.getInfo()));
});
TokenBean tokenBean = tokenBeanAtomicReference.get();
if (tokenBean == null) { if (tokenBean == null) {
throw new ApiException("登录失败"); throw new ApiException("登录失败");
} }
@@ -106,14 +99,12 @@ public class LoginController {
map.put("corpId", platformDingConfig.getConfigBean(service).getCorpId()); map.put("corpId", platformDingConfig.getConfigBean(service).getCorpId());
map.put("service", service); map.put("service", service);
map.put("extra", extra); map.put("extra", extra);
loginService.checkLoginConfigurer(s -> { String query = URLUtil.buildQuery(map, Charset.defaultCharset());
String query = URLUtil.buildQuery(map, Charset.defaultCharset()); String configUrl = globalConfig.buildPath("/ding/index.html?" + query);
String configUrl = globalConfig.buildPath("/ding/index.html?" + query); try {
try { response.sendRedirect(configUrl);
response.sendRedirect(configUrl); } catch (IOException ignored) {
} catch (IOException ignored) { }
}
});
} }
@@ -125,13 +116,11 @@ public class LoginController {
@RequestMapping("/ding/oauth2/{service}") @RequestMapping("/ding/oauth2/{service}")
@TokenIgnore @TokenIgnore
public void dingOauth2(@PathVariable String service, String code, String extra, HttpServletResponse response) { public void dingOauth2(@PathVariable String service, String code, String extra, HttpServletResponse response) {
loginService.checkLoginConfigurer(configurer -> { String ddUserId = platformDingConfig.getUserIdByCode(service, code);
String ddUserId = platformDingConfig.getUserIdByCode(service, code); DingUserInfo dingUserInfo = platformDingConfig.topapiV2UserGet(service, ddUserId);
DingUserInfo dingUserInfo = platformDingConfig.topapiV2UserGet(service, ddUserId); TokenBean tokenBean = tieshengLoginConfigurer.doLogin(dingUserInfo.getAppId(), dingUserInfo.getUserid(), "ding",
TokenBean tokenBean = configurer.doLogin(dingUserInfo.getAppId(), dingUserInfo.getUserid(), "ding", JSON.toJSONString(dingUserInfo));
JSON.toJSONString(dingUserInfo)); tieshengLoginConfigurer.onLoginRedirect(tokenBean, extra, response);
configurer.onLoginRedirect(tokenBean, extra, response);
});
} }
@@ -179,11 +168,9 @@ public class LoginController {
@RequestMapping("/wxmp/oauth2/{service}") @RequestMapping("/wxmp/oauth2/{service}")
@TokenIgnore @TokenIgnore
public void wxmpOauth2(@PathVariable String service, String code, String extra, HttpServletResponse response) { public void wxmpOauth2(@PathVariable String service, String code, String extra, HttpServletResponse response) {
loginService.checkLoginConfigurer(configurer -> { WxUserInfo wxUserInfo = platformWxmpConfig.getOAuth2AccessToken(service, code);
WxUserInfo wxUserInfo = platformWxmpConfig.getOAuth2AccessToken(service, code); TokenBean tokenBean = tieshengLoginConfigurer.doLogin(wxUserInfo.getAppId(), wxUserInfo.getOpenid(), "wxmp", JSON.toJSONString(wxUserInfo));
TokenBean tokenBean = configurer.doLogin(wxUserInfo.getAppId(), wxUserInfo.getOpenid(), "wxmp", JSON.toJSONString(wxUserInfo)); tieshengLoginConfigurer.onLoginRedirect(tokenBean, extra, response);
configurer.onLoginRedirect(tokenBean, extra, response);
});
} }

View File

@@ -1,30 +0,0 @@
package com.tiesheng.login.service;
import com.tiesheng.login.config.TieshengLoginConfigurer;
import com.tiesheng.util.exception.ApiException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.function.Consumer;
/**
* @author hao
*/
@Service
public class LoginService {
@Autowired(required = false)
TieshengLoginConfigurer tieshengLoginConfigurer;
/**
* 检查配置
*/
public void checkLoginConfigurer(Consumer<TieshengLoginConfigurer> consumer) {
if (tieshengLoginConfigurer == null) {
throw new ApiException("未配置登录逻辑");
}
consumer.accept(tieshengLoginConfigurer);
}
}

View File

@@ -1,4 +1,4 @@
package com.tiesheng.login.config; package com.tiesheng.login.service;
import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.config.token.bean.TokenBean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@@ -0,0 +1,26 @@
package com.tiesheng.login.service.impl;
import com.tiesheng.login.config.token.bean.TokenBean;
import com.tiesheng.login.service.TieshengLoginConfigurer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.http.HttpServletResponse;
/**
* @author hao
*/
@Configuration
@ConditionalOnMissingBean(value = TieshengLoginConfigurer.class, ignored = DefaultLoginConfigurer.class)
public class DefaultLoginConfigurer implements TieshengLoginConfigurer {
@Override
public TokenBean doLogin(String appId, String uniqueId, String platfrom, String info) {
return null;
}
@Override
public void onLoginRedirect(TokenBean bean, String extra, HttpServletResponse response) {
}
}

View File

@@ -6,5 +6,5 @@ import org.springframework.context.annotation.ComponentScan;
@ComponentScan({ @ComponentScan({
"com.tiesheng.platform.**.*", "com.tiesheng.platform.**.*",
}) })
public class PlatformAutoImportSelector { public class PlatformAutoConfigurer {
} }

View File

@@ -11,5 +11,5 @@ import org.springframework.context.annotation.ComponentScan;
"com.tiesheng.core.**.*", "com.tiesheng.core.**.*",
}) })
@MapperScan("com.tiesheng.core.mapper") @MapperScan("com.tiesheng.core.mapper")
public class CoreAutoImportSelector { public class CoreAutoConfigurer {
} }

View File

@@ -1,8 +1,8 @@
package com.tiesheng.core; package com.tiesheng.core;
import com.tiesheng.login.LoginAutoImportSelector; import com.tiesheng.login.LoginAutoConfigurer;
import com.tiesheng.message.MessageAutoConfigurer; import com.tiesheng.message.MessageAutoConfigurer;
import com.tiesheng.migration.MigrationAutoImportSelector; import com.tiesheng.migration.MigrationAutoConfigurer;
import com.tiesheng.util.UtilAutoConfigurer; import com.tiesheng.util.UtilAutoConfigurer;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
@@ -17,9 +17,9 @@ import java.lang.annotation.*;
@Import({ @Import({
UtilAutoConfigurer.class, UtilAutoConfigurer.class,
MessageAutoConfigurer.class, MessageAutoConfigurer.class,
CoreAutoImportSelector.class, CoreAutoConfigurer.class,
LoginAutoImportSelector.class, LoginAutoConfigurer.class,
MigrationAutoImportSelector.class MigrationAutoConfigurer.class
}) })
public @interface EnableTieshengWeb { public @interface EnableTieshengWeb {
} }

View File

@@ -2,7 +2,7 @@ package com.tiesheng.core.config.exception;
import cn.hutool.core.exceptions.ValidateException; import cn.hutool.core.exceptions.ValidateException;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.tiesheng.core.config.web.TieshengWebConfigurer; import com.tiesheng.core.service.TieshengWebConfigurer;
import com.tiesheng.util.exception.ApiException; import com.tiesheng.util.exception.ApiException;
import com.tiesheng.util.exception.ApiRespEnum; import com.tiesheng.util.exception.ApiRespEnum;
import com.tiesheng.util.pojos.ApiResp; import com.tiesheng.util.pojos.ApiResp;

View File

@@ -1,4 +1,4 @@
package com.tiesheng.core.controller.config; package com.tiesheng.core.controller;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;

View File

@@ -1,4 +1,4 @@
package com.tiesheng.core.controller.log; package com.tiesheng.core.controller;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

View File

@@ -1,4 +1,4 @@
package com.tiesheng.core.controller.tool; package com.tiesheng.core.controller;
import cn.hutool.captcha.LineCaptcha; import cn.hutool.captcha.LineCaptcha;

View File

@@ -1,4 +1,4 @@
package com.tiesheng.core.config.web.bean; package com.tiesheng.core.pojos;
public class CurrentWebUser { public class CurrentWebUser {

View File

@@ -3,15 +3,15 @@ package com.tiesheng.core.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.servlet.ServletUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.tiesheng.core.config.web.TieshengWebConfigurer;
import com.tiesheng.core.config.web.bean.CurrentWebUser;
import com.tiesheng.core.mapper.CoreLogLoginMapper; import com.tiesheng.core.mapper.CoreLogLoginMapper;
import com.tiesheng.core.mapper.CoreLogMessageMapper; import com.tiesheng.core.mapper.CoreLogMessageMapper;
import com.tiesheng.core.mapper.CoreLogOperationMapper; import com.tiesheng.core.mapper.CoreLogOperationMapper;
import com.tiesheng.core.pojos.CurrentWebUser;
import com.tiesheng.core.pojos.dao.CoreLogLogin; import com.tiesheng.core.pojos.dao.CoreLogLogin;
import com.tiesheng.core.pojos.dao.CoreLogMessage; import com.tiesheng.core.pojos.dao.CoreLogMessage;
import com.tiesheng.core.pojos.dao.CoreLogOperation; import com.tiesheng.core.pojos.dao.CoreLogOperation;
import com.tiesheng.core.pojos.dao.CorePlatformUnique; import com.tiesheng.core.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.token.TsTokenConfig;
import com.tiesheng.message.pojos.MessageReqResp; import com.tiesheng.message.pojos.MessageReqResp;
import com.tiesheng.message.service.TieshengMessageConfigurer; import com.tiesheng.message.service.TieshengMessageConfigurer;
import com.tiesheng.util.ServletKit; import com.tiesheng.util.ServletKit;
@@ -53,7 +53,7 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
*/ */
public void addOperationLog(String title, String subject, Object params) { public void addOperationLog(String title, String subject, Object params) {
CoreLogOperation operation = new CoreLogOperation(); CoreLogOperation operation = new CoreLogOperation();
CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName(); CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName(TsTokenConfig.get().getId());
operation.setUserId(currentWebUser.getId()); operation.setUserId(currentWebUser.getId());
operation.setUserName(currentWebUser.getName()); operation.setUserName(currentWebUser.getName());
operation.setTitle(title); operation.setTitle(title);
@@ -78,12 +78,11 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
HttpServletRequest request = ServletKit.getRequest(); HttpServletRequest request = ServletKit.getRequest();
String ip = ServletUtil.getClientIP(request); String ip = ServletUtil.getClientIP(request);
CoreLogLogin login = new CoreLogLogin(); CoreLogLogin login = new CoreLogLogin();
login.setUserId(platformUnique.getUserId()); login.setUserId(platformUnique.getUserId());
login.setPlatform(platformUnique.getPlatform()); login.setPlatform(platformUnique.getPlatform());
CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName(); CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName(platformUnique.getUserId());
login.setUserName(currentWebUser.getName()); login.setUserName(currentWebUser.getName());
login.setIp(ip); login.setIp(ip);

View File

@@ -2,10 +2,9 @@ package com.tiesheng.core.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tiesheng.core.config.web.TieshengWebConfigurer;
import com.tiesheng.core.mapper.CorePlatformUniqueMapper; import com.tiesheng.core.mapper.CorePlatformUniqueMapper;
import com.tiesheng.core.pojos.dao.CorePlatformUnique; import com.tiesheng.core.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.TieshengLoginConfigurer; import com.tiesheng.login.service.TieshengLoginConfigurer;
import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.config.token.bean.TokenBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -3,7 +3,6 @@ package com.tiesheng.core.service;
import cn.hutool.core.io.FileTypeUtil; import cn.hutool.core.io.FileTypeUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import com.tiesheng.core.config.web.TieshengWebConfigurer;
import com.tiesheng.util.exception.ApiException; import com.tiesheng.util.exception.ApiException;
import com.tiesheng.util.pojos.FileUploadPath; import com.tiesheng.util.pojos.FileUploadPath;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,7 +1,7 @@
package com.tiesheng.core.config.web; package com.tiesheng.core.service;
import cn.hutool.log.LogFactory; import cn.hutool.log.LogFactory;
import com.tiesheng.core.config.web.bean.CurrentWebUser; import com.tiesheng.core.pojos.CurrentWebUser;
import com.tiesheng.core.pojos.dao.CorePlatformUnique; import com.tiesheng.core.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.config.token.bean.TokenBean;
import com.tiesheng.util.exception.ApiException; import com.tiesheng.util.exception.ApiException;
@@ -23,7 +23,7 @@ public interface TieshengWebConfigurer {
* *
* @return * @return
*/ */
CurrentWebUser getCurrentUserName(); CurrentWebUser getCurrentUserName(String userId);
/** /**

View File

@@ -1,7 +1,7 @@
package com.tiesheng.core.config.web; package com.tiesheng.core.service.impl;
import com.tiesheng.core.config.web.bean.CurrentWebUser; import com.tiesheng.core.pojos.CurrentWebUser;
import com.tiesheng.login.config.token.TsTokenConfig; import com.tiesheng.core.service.TieshengWebConfigurer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@@ -14,11 +14,10 @@ import org.springframework.context.annotation.Configuration;
public class DefaultWebConfigurer implements TieshengWebConfigurer { public class DefaultWebConfigurer implements TieshengWebConfigurer {
@Override @Override
public CurrentWebUser getCurrentUserName() { public CurrentWebUser getCurrentUserName(String userId) {
CurrentWebUser webUser = new CurrentWebUser(); CurrentWebUser webUser = new CurrentWebUser();
webUser.setId(TsTokenConfig.getWithoutThr().getId()); webUser.setId(userId);
webUser.setName(webUser.getId()); webUser.setName(webUser.getId());
return webUser; return webUser;
} }
} }