微服务版后端初始化
This commit is contained in:
49
xjrsoft-common/xjrsoft-common-magicapi/pom.xml
Normal file
49
xjrsoft-common/xjrsoft-common-magicapi/pom.xml
Normal file
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>xjrsoft-common</artifactId>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>xjrsoft-common-magicapi</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.ssssssss</groupId>
|
||||
<artifactId>magic-api-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.dev33</groupId>
|
||||
<artifactId>sa-token-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-common-core</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-common-mybatis</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,57 @@
|
||||
package com.xjrsoft.common.magicapi;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
import org.ssssssss.magicapi.datasource.model.MagicDynamicDataSource;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: tzx
|
||||
* @Date: 2023/10/8 16:10
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
public class MagicApiAutoConfiguration implements WebMvcConfigurer {
|
||||
|
||||
private final DynamicDataSourceProvider dynamicDataSourceProvider;
|
||||
|
||||
private final Map<String, String> datasourceMap = new HashMap<>();
|
||||
/**
|
||||
* 配置MagicApi多数据源
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public MagicDynamicDataSource magicDynamicDataSource() {
|
||||
|
||||
MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource();
|
||||
|
||||
Map<String, DataSource> dataSources = dynamicDataSourceProvider.loadDataSources();
|
||||
for (String ds : dataSources.keySet()) {
|
||||
if (StrUtil.equals(GlobalConstant.DEFAULT_DATASOURCE_KEY, ds)) {
|
||||
dynamicDataSource.setDefault(dataSources.get(ds));
|
||||
} else {
|
||||
|
||||
//缓存起来的name
|
||||
if (datasourceMap.containsKey(ds)) {
|
||||
String name = MapUtil.getStr(datasourceMap, ds);
|
||||
dynamicDataSource.add(name, dataSources.get(ds));
|
||||
}
|
||||
//配置在yml上的 可能获取不到name
|
||||
else {
|
||||
dynamicDataSource.add("datasource_" + ds, dataSources.get(ds));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return dynamicDataSource;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package com.xjrsoft.common.magicapi.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* magic-api 配置
|
||||
* @author tzx
|
||||
*/
|
||||
@Data
|
||||
@Configuration
|
||||
@ConfigurationProperties("magic-api")
|
||||
public class MagicApiConfig {
|
||||
|
||||
/**
|
||||
* 页面地址 magic-api
|
||||
*/
|
||||
private String web;
|
||||
|
||||
/**
|
||||
* 接口前缀
|
||||
*/
|
||||
private String prefix;
|
||||
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package com.xjrsoft.common.magicapi.interceptor;
|
||||
|
||||
import cn.dev33.satoken.session.SaSession;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.dev33.satoken.strategy.SaStrategy;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import com.xjrsoft.common.core.domain.result.R;
|
||||
import com.xjrsoft.common.core.enums.ResponseCode;
|
||||
import com.xjrsoft.tenant.util.SecureUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.ssssssss.magicapi.core.context.RequestEntity;
|
||||
import org.ssssssss.magicapi.core.interceptor.RequestInterceptor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* magic-api 接口鉴权
|
||||
*
|
||||
* @author tzx
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class MagicApiRequestInterceptor implements RequestInterceptor {
|
||||
|
||||
/***
|
||||
* 接口请求之前
|
||||
* @param requestEntity
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Object preHandle(RequestEntity requestEntity) {
|
||||
|
||||
if(!StpUtil.isLogin()){
|
||||
return R.error(ResponseCode.UN_AUTHORIZED.getCode(),ResponseCode.UN_AUTHORIZED.getMessage());
|
||||
}
|
||||
SaSession tokenSession = StpUtil.getTokenSession();
|
||||
List<Long> roleIds = tokenSession.get(GlobalConstant.LOGIN_USER_ROLE_ID_KEY, new ArrayList<>());
|
||||
//非管理员需要进行权限验证
|
||||
if(!SecureUtil.isAdmin(roleIds)) {
|
||||
if (!SaStrategy.me.hasElement.apply(tokenSession.get(GlobalConstant.LOGIN_USER_INTERFACE_AUTH_CODE_KEY, new ArrayList<>()), requestEntity.getApiInfo().getId())) {
|
||||
return R.error(ResponseCode.MAGIC_API_UN_AUTHORIZED.getCode(), ResponseCode.MAGIC_API_UN_AUTHORIZED.getMessage());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 接口执行之后
|
||||
* @param requestEntity
|
||||
* @param returnValue
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Object postHandle(RequestEntity requestEntity, Object returnValue) {
|
||||
log.info("{} 执行完毕,返回结果:{}", requestEntity.getApiInfo().getName(), returnValue);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user