Merge branch 'cc_20230520_partner' of http://gitlab.coolcollege.cn/hangzhou/java/coolstore-partner-manage into cc_20230520_partner
# Conflicts: # coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package com.cool.store.config;
|
||||
|
||||
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @Description 跨域配置
|
||||
* @author Aaron
|
||||
* @date 2020/1/9
|
||||
*/
|
||||
@Component
|
||||
@Order(1)
|
||||
public class CorsFilter implements Filter {
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletResponse response = (HttpServletResponse) res;
|
||||
HttpServletRequest reqs = (HttpServletRequest) req;
|
||||
response.setHeader("Access-Control-Allow-Origin",reqs.getHeader("Origin"));
|
||||
response.setHeader("Access-Control-Allow-Credentials", "true");
|
||||
response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS, GET, DELETE, PUT");
|
||||
response.setHeader("Access-Control-Max-Age", "36000");
|
||||
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Origin, Authorization, content-type, XMLHttpRequest, Authorization, User-Agent, Cookie, accessToken");
|
||||
if (reqs.getMethod().equals("OPTIONS") || reqs.getMethod().equals("HEAD")) {
|
||||
response.setStatus(HttpStatus.HTTP_OK);
|
||||
return;
|
||||
}
|
||||
chain.doFilter(req, res);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) {}
|
||||
|
||||
|
||||
@Override
|
||||
public void destroy() {}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.cool.store.config;
|
||||
|
||||
import javafx.application.Application;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.web.servlet.HandlerExceptionResolver;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: ServletContextConfig
|
||||
* @Description:
|
||||
* @date 2023-06-08 16:28
|
||||
*/
|
||||
@Configuration
|
||||
@ComponentScan(basePackageClasses = Application.class, useDefaultFilters = true)
|
||||
public class ServletContextConfig extends WebMvcConfigurationSupport {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ServletContextConfig.class);
|
||||
|
||||
/**
|
||||
* 配置servlet处理
|
||||
*/
|
||||
@Override
|
||||
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
|
||||
configurer.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
registry.addMapping("/**")
|
||||
.allowedOrigins("*")
|
||||
.allowCredentials(true)
|
||||
.allowedMethods("GET", "POST", "OPTIONS", "PUT", "DELETE")
|
||||
.maxAge(3600);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
|
||||
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
|
||||
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
|
||||
registry.addResourceHandler("/webjars/**")
|
||||
.addResourceLocations("classpath:/META-INF/resources/webjars/");
|
||||
super.addResourceHandlers(registry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一异常处理
|
||||
*
|
||||
* @param exceptionResolvers
|
||||
*/
|
||||
@Override
|
||||
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,8 +3,7 @@ package com.cool.store.config;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.context.UserContext;
|
||||
import com.cool.store.utils.DataSourceHelper;
|
||||
import com.cool.store.context.CurrentUserContext;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.context.CurrentUser;
|
||||
import com.google.common.collect.Lists;
|
||||
@@ -68,51 +67,49 @@ public class TokenValidateFilter implements Filter {
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
// HttpServletResponse response = (HttpServletResponse) servletResponse;
|
||||
// HttpServletRequest reqs = (HttpServletRequest) servletRequest;
|
||||
// String uri = reqs.getRequestURI();
|
||||
// String method = reqs.getMethod();
|
||||
// String userStr = "";
|
||||
// CurrentUser currentUser = null;
|
||||
// boolean isInWhiteList = excludePath(uri);
|
||||
// String accessToken = reqs.getParameter("access_token");
|
||||
// String key = "access_token:" + accessToken;
|
||||
// if(StringUtils.isNotBlank(accessToken)){
|
||||
// userStr = redisUtilPool.getString(key);
|
||||
// if(StringUtils.isNotBlank(userStr)){
|
||||
// currentUser = JSON.parseObject(userStr, CurrentUser.class);
|
||||
// }
|
||||
// }
|
||||
// log.info("url:{}", uri);
|
||||
// if ( !isInWhiteList && !method.equals("OPTIONS")) {
|
||||
// if (StringUtils.isEmpty(accessToken)) {
|
||||
// response.setStatus(HttpStatus.OK.value());
|
||||
// response.getWriter().write(JSON.toJSONString(
|
||||
// ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID)));
|
||||
// return;
|
||||
// }
|
||||
// if (Objects.isNull(currentUser)) {
|
||||
// response.setStatus(HttpStatus.OK.value());
|
||||
// response.getWriter().write(JSON.toJSONString(
|
||||
// ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID)));
|
||||
// return;
|
||||
// }
|
||||
// log.info("url:{}, access_token:{}, userId:{}, username:{}, enterpriseId:{}", uri, accessToken, currentUser.getUserId(), currentUser.getName(), currentUser.getEnterpriseId());
|
||||
// }
|
||||
// if(StringUtils.isBlank(userStr) && !isInWhiteList){
|
||||
// response.setStatus(HttpStatus.OK.value());
|
||||
// response.getWriter().write(JSON.toJSONString(
|
||||
// ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID)));
|
||||
// return;
|
||||
// }
|
||||
// try {
|
||||
// UserContext.setUser(userStr);
|
||||
// DataSourceHelper.changeToMy();
|
||||
// filterChain.doFilter(servletRequest, servletResponse);
|
||||
// } finally {
|
||||
// UserContext.removeUser();
|
||||
// }
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
||||
HttpServletRequest reqs = (HttpServletRequest) servletRequest;
|
||||
String uri = reqs.getRequestURI();
|
||||
String method = reqs.getMethod();
|
||||
String userStr = "";
|
||||
CurrentUser currentUser = null;
|
||||
boolean isInWhiteList = excludePath(uri);
|
||||
String accessToken = reqs.getHeader("accessToken");
|
||||
String key = "access_token:" + accessToken;
|
||||
if(StringUtils.isNotBlank(accessToken)){
|
||||
userStr = redisUtilPool.getString(key);
|
||||
if(StringUtils.isNotBlank(userStr)){
|
||||
currentUser = JSON.parseObject(userStr, CurrentUser.class);
|
||||
}
|
||||
}
|
||||
log.info("url:{}", uri);
|
||||
if ( !isInWhiteList && !method.equals("OPTIONS")) {
|
||||
if (StringUtils.isEmpty(accessToken)) {
|
||||
response.setStatus(HttpStatus.OK.value());
|
||||
response.getWriter().write(JSON.toJSONString(
|
||||
ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID)));
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(currentUser)) {
|
||||
response.setStatus(HttpStatus.OK.value());
|
||||
response.getWriter().write(JSON.toJSONString(
|
||||
ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID)));
|
||||
return;
|
||||
}
|
||||
log.info("url:{}, access_token:{}, userId:{}, username:{}", uri, accessToken, currentUser.getUserId(), currentUser.getName());
|
||||
}
|
||||
if(StringUtils.isBlank(userStr) && !isInWhiteList){
|
||||
response.setStatus(HttpStatus.OK.value());
|
||||
response.getWriter().write(JSON.toJSONString(
|
||||
ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID)));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
CurrentUserContext.setUser(userStr);
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
} finally {
|
||||
CurrentUserContext.removeUser();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -58,28 +58,12 @@ public class Swagger2Config {
|
||||
.globalOperationParameters(pars);
|
||||
}
|
||||
|
||||
private Docket createDocketByPath (String groupName, String... paths){
|
||||
List<Parameter> pars = getParameters();
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.enable(Boolean.TRUE)
|
||||
.apiInfo(this.getApiInfo())
|
||||
.groupName(groupName)
|
||||
.select()
|
||||
.paths(this.scanPath(paths))
|
||||
.build()
|
||||
.globalOperationParameters(pars);
|
||||
}
|
||||
|
||||
private List<Parameter> getParameters() {
|
||||
List<Parameter> pars = new ArrayList<>();
|
||||
pars.add(new ParameterBuilder().name("accessToken").description("令牌").required(true)
|
||||
.modelRef(new ModelRef("string"))
|
||||
.defaultValue("{{accessToken}}")
|
||||
.parameterType("query").build());
|
||||
pars.add(new ParameterBuilder().name("enterpriseId").required(true)
|
||||
.modelRef(new ModelRef("string"))
|
||||
.defaultValue("45f92210375346858b6b6694967f44de")
|
||||
.parameterType("path").build());
|
||||
return pars;
|
||||
}
|
||||
|
||||
@@ -94,17 +78,6 @@ public class Swagger2Config {
|
||||
return predicate;
|
||||
}
|
||||
|
||||
private Predicate<String> scanPath(final String... paths) {
|
||||
Predicate<String> predicate = null;
|
||||
for (String path : paths) {
|
||||
if(StringUtils.isNotBlank(path)){
|
||||
Predicate<String> tempPredicate = PathSelectors.ant(path);
|
||||
predicate = predicate == null ? tempPredicate : Predicates.or(tempPredicate,predicate);
|
||||
}
|
||||
}
|
||||
return predicate;
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public Docket allApi() {
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
package com.cool.store.controller;
|
||||
|
||||
import com.cool.store.dto.enterprise.EnterpriseUserDTO;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.EnterpriseUserService;
|
||||
import com.cool.store.utils.DataSourceHelper;
|
||||
import com.cool.store.vo.buser.EnterpriseUserPageVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
package com.cool.store.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.context.CurrentUserContext;
|
||||
import com.cool.store.dto.login.FeiShuLoginDTO;
|
||||
import com.cool.store.dto.login.UserIdInfoDTO;
|
||||
import com.cool.store.enums.AppTypeEnum;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.http.ISVHttpRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.LoginService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -34,7 +36,7 @@ public class LoginController {
|
||||
|
||||
|
||||
@PostMapping(value = "/feiShuLogin")
|
||||
public Object feiShuLogin(@RequestBody FeiShuLoginDTO param) {
|
||||
public ResponseResult feiShuLogin(@RequestBody FeiShuLoginDTO param) {
|
||||
log.info("feiShuLogin data={}", JSONObject.toJSONString(param));
|
||||
String code = param.getCode();
|
||||
try {
|
||||
@@ -45,7 +47,7 @@ public class LoginController {
|
||||
}
|
||||
log.info("userInfo:{}", JSONObject.toJSONString(userInfo));
|
||||
String userId = userInfo.getOpenId();
|
||||
return loginService.feiShuLogin(userId, Boolean.TRUE, StringUtils.EMPTY);
|
||||
return ResponseResult.success(loginService.feiShuLogin(userId, Boolean.TRUE, StringUtils.EMPTY));
|
||||
} catch (ServiceException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ServiceException(ErrorCodeEnum.LOGIN_ERROR);
|
||||
@@ -55,4 +57,9 @@ public class LoginController {
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/getUserInfoByToken")
|
||||
public ResponseResult getUserInfoByToken(){
|
||||
return ResponseResult.success(CurrentUserContext.getUser());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.cool.store.controller;
|
||||
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.MenuService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: MenuController
|
||||
* @Description:
|
||||
* @date 2023-06-08 16:58
|
||||
*/
|
||||
@RestController
|
||||
public class MenuController {
|
||||
|
||||
@Resource
|
||||
private MenuService menuService;
|
||||
|
||||
@GetMapping("/menu/getUserMenus")
|
||||
public ResponseResult getUserMenus(){
|
||||
return ResponseResult.success(menuService.getUserMenus(null));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,13 +34,15 @@ public class OssClientController {
|
||||
private String endpoint;
|
||||
@Value("${oss.bucket:null}")
|
||||
private String bucket;
|
||||
@Value("${corp.id:null}")
|
||||
private String corpId;
|
||||
|
||||
@GetMapping("/getUploadFileConfig")
|
||||
public ResponseResult getUploadFileConfig(@RequestParam("enterpriseId")String enterpriseId){
|
||||
public ResponseResult getUploadFileConfig(){
|
||||
// host的格式为 bucketname.endpoint
|
||||
String host = "http://" + bucket + "." + endpoint;
|
||||
// 用户上传文件时指定的前缀。
|
||||
String dir = "partner/" + enterpriseId + "/";
|
||||
String dir = "partner/" + corpId + "/";
|
||||
|
||||
OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
|
||||
try {
|
||||
|
||||
@@ -42,4 +42,9 @@ rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX3sLZnA.cn-hangzhou.mq-in
|
||||
rocketmq.topic=simple_message
|
||||
rocketmq.orderTopic=order_message
|
||||
|
||||
default.database.name=coolcollege_intelligent_hy
|
||||
#oss配置
|
||||
oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
corp.id = 171cddee76471740
|
||||
|
||||
@@ -42,4 +42,9 @@ rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX3sLZnA.cn-hangzhou.mq-in
|
||||
rocketmq.topic=simple_message
|
||||
rocketmq.orderTopic=order_message
|
||||
|
||||
default.database.name=coolcollege_intelligent_hy
|
||||
#oss配置
|
||||
oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
corp.id = 171cddee76471740
|
||||
@@ -40,4 +40,11 @@ rocketmq.accessKey=LTAI5t5ouXZuFgxJMbQea3b2
|
||||
rocketmq.secretKey=yuomDstRjSdihtN5zo8viDbWu8Z0ig
|
||||
rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX5N7rwl.cn-hangzhou.mq-internal.aliyuncs.com:8080
|
||||
rocketmq.topic=simple_message
|
||||
rocketmq.orderTopic=order_message
|
||||
rocketmq.orderTopic=order_message
|
||||
|
||||
#oss配置
|
||||
oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
corp.id = 171cddee76471740
|
||||
@@ -50,5 +50,4 @@ oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
|
||||
default.database.name=coolcollege_intelligent_hy
|
||||
corp.id = 171cddee76471740
|
||||
@@ -40,4 +40,11 @@ rocketmq.accessKey=LTAI5t5ouXZuFgxJMbQea3b2
|
||||
rocketmq.secretKey=yuomDstRjSdihtN5zo8viDbWu8Z0ig
|
||||
rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX5N7rwl.cn-hangzhou.mq-internal.aliyuncs.com:8080
|
||||
rocketmq.topic=simple_message
|
||||
rocketmq.orderTopic=order_message
|
||||
rocketmq.orderTopic=order_message
|
||||
|
||||
#oss配置
|
||||
oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
corp.id = 171cddee76471740
|
||||
@@ -40,4 +40,11 @@ rocketmq.accessKey=LTAI5t5ouXZuFgxJMbQea3b2
|
||||
rocketmq.secretKey=yuomDstRjSdihtN5zo8viDbWu8Z0ig
|
||||
rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX5N7rwl.cn-hangzhou.mq-internal.aliyuncs.com:8080
|
||||
rocketmq.topic=simple_message
|
||||
rocketmq.orderTopic=order_message
|
||||
rocketmq.orderTopic=order_message
|
||||
|
||||
#oss配置
|
||||
oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
corp.id = 171cddee76471740
|
||||
@@ -42,4 +42,9 @@ rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX3sLZnA.cn-hangzhou.mq-in
|
||||
rocketmq.topic=simple_message
|
||||
rocketmq.orderTopic=order_message
|
||||
|
||||
default.database.name=coolcollege_intelligent_hy
|
||||
#oss配置
|
||||
oss.accessKeyId=LTAI5tKSnAbkEbmT6CeBwNN3
|
||||
oss.accessKeySecret=PbXOzUFwAvZ2K5zIawwa7NAJE2pFXS
|
||||
oss.endpoint=oss-cn-shanghai.aliyuncs.com
|
||||
oss.bucket=vec-coolstore
|
||||
corp.id = 171cddee76471740
|
||||
Reference in New Issue
Block a user