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({
"com.tiesheng.migration.**.*"
})
public class MigrationAutoImportSelector {
public class MigrationAutoConfigurer {
}

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@ package com.tiesheng.core.config.exception;
import cn.hutool.core.exceptions.ValidateException;
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.ApiRespEnum;
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;

View File

@@ -1,4 +1,4 @@
package com.tiesheng.core.controller.log;
package com.tiesheng.core.controller;
import cn.hutool.core.util.StrUtil;
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;

View File

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

View File

@@ -3,15 +3,15 @@ package com.tiesheng.core.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.extra.servlet.ServletUtil;
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.CoreLogMessageMapper;
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.CoreLogMessage;
import com.tiesheng.core.pojos.dao.CoreLogOperation;
import com.tiesheng.core.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.token.TsTokenConfig;
import com.tiesheng.message.pojos.MessageReqResp;
import com.tiesheng.message.service.TieshengMessageConfigurer;
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) {
CoreLogOperation operation = new CoreLogOperation();
CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName();
CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName(TsTokenConfig.get().getId());
operation.setUserId(currentWebUser.getId());
operation.setUserName(currentWebUser.getName());
operation.setTitle(title);
@@ -78,12 +78,11 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
HttpServletRequest request = ServletKit.getRequest();
String ip = ServletUtil.getClientIP(request);
CoreLogLogin login = new CoreLogLogin();
login.setUserId(platformUnique.getUserId());
login.setPlatform(platformUnique.getPlatform());
CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName();
CurrentWebUser currentWebUser = tieshengWebConfigurer.getCurrentUserName(platformUnique.getUserId());
login.setUserName(currentWebUser.getName());
login.setIp(ip);

View File

@@ -2,10 +2,9 @@ package com.tiesheng.core.service;
import cn.hutool.core.collection.CollUtil;
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.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.TieshengLoginConfigurer;
import com.tiesheng.login.service.TieshengLoginConfigurer;
import com.tiesheng.login.config.token.bean.TokenBean;
import org.springframework.beans.factory.annotation.Autowired;
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.FileUtil;
import cn.hutool.core.io.IoUtil;
import com.tiesheng.core.config.web.TieshengWebConfigurer;
import com.tiesheng.util.exception.ApiException;
import com.tiesheng.util.pojos.FileUploadPath;
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 com.tiesheng.core.config.web.bean.CurrentWebUser;
import com.tiesheng.core.pojos.CurrentWebUser;
import com.tiesheng.core.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.token.bean.TokenBean;
import com.tiesheng.util.exception.ApiException;
@@ -23,7 +23,7 @@ public interface TieshengWebConfigurer {
*
* @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.login.config.token.TsTokenConfig;
import com.tiesheng.core.pojos.CurrentWebUser;
import com.tiesheng.core.service.TieshengWebConfigurer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Configuration;
@@ -14,11 +14,10 @@ import org.springframework.context.annotation.Configuration;
public class DefaultWebConfigurer implements TieshengWebConfigurer {
@Override
public CurrentWebUser getCurrentUserName() {
public CurrentWebUser getCurrentUserName(String userId) {
CurrentWebUser webUser = new CurrentWebUser();
webUser.setId(TsTokenConfig.getWithoutThr().getId());
webUser.setId(userId);
webUser.setName(webUser.getId());
return webUser;
}
}