增加电商带吗
This commit is contained in:
@@ -31,13 +31,21 @@
|
||||
</dependency>
|
||||
|
||||
<!-- 三方云服务相关 -->
|
||||
<!-- https://mvnrepository.com/artifact/com.github.binarywang/weixin-java-mp -->
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<!-- <artifactId>weixin-java-mp</artifactId>-->
|
||||
<artifactId>wx-java-mp-spring-boot-starter</artifactId>
|
||||
<version>4.1.9.B</version>
|
||||
<artifactId>weixin-java-mp</artifactId>
|
||||
<version>4.3.0</version>
|
||||
</dependency>
|
||||
<!-- TODO 芋艿:清理 -->
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.github.binarywang/weixin-java-miniapp -->
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-miniapp</artifactId>
|
||||
<version>4.3.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
+42
-2
@@ -1,22 +1,39 @@
|
||||
package cn.iocoder.yudao.framework.mybatis.config;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
||||
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.mybatis.spring.annotation.MapperScans;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MyBaits 配置类
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
|
||||
@MapperScans({
|
||||
@MapperScan(basePackages ={"co.yixiang.**.service.mapper", "co.yixiang.config"},sqlSessionFactoryRef = "shangcheng"),
|
||||
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class,
|
||||
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
||||
})
|
||||
@Configuration
|
||||
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class,
|
||||
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
||||
public class YudaoMybatisAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@@ -31,4 +48,27 @@ public class YudaoMybatisAutoConfiguration {
|
||||
return new DefaultDBFieldHandler(); // 自动填充参数类
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
public SqlSessionFactory sqlSessionFactoryMaster(DynamicDataSourceProvider dynamicDataSourceProvider) throws Exception {
|
||||
//手动处理下原来的sqlsessionfactory
|
||||
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
|
||||
Map<String, DataSource> map = dynamicDataSourceProvider.loadDataSources();
|
||||
factory.setDataSource(map.get("master"));
|
||||
GlobalConfig globalConfig = new GlobalConfig();
|
||||
globalConfig.setMetaObjectHandler(defaultMetaObjectHandler());
|
||||
factory.setPlugins(mybatisPlusInterceptor());
|
||||
factory.setGlobalConfig(globalConfig);
|
||||
return factory.getObject();
|
||||
}
|
||||
|
||||
@Bean("shangcheng")
|
||||
public SqlSessionFactory sqlSessionFactory(DynamicDataSourceProvider dynamicDataSourceProvider) throws Exception {
|
||||
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
|
||||
Map<String, DataSource> map = dynamicDataSourceProvider.loadDataSources();
|
||||
factory.setDataSource(map.get("xiaohui"));
|
||||
return factory.getObject();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+40
@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -41,6 +42,30 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
|
||||
if (Objects.nonNull(userId) && Objects.isNull(baseDO.getUpdater())) {
|
||||
baseDO.setUpdater(userId.toString());
|
||||
}
|
||||
|
||||
Timestamp time=new Timestamp(System.currentTimeMillis());
|
||||
if (metaObject.hasSetter("createTime")) {
|
||||
this.setFieldValByName("createTime", time, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("updateTime")) {
|
||||
this.setFieldValByName("updateTime", time, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("createDate")) {
|
||||
this.setFieldValByName("createDate", time, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("updateDate")) {
|
||||
this.setFieldValByName("updateDate", time, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("delFlag")) {
|
||||
this.setFieldValByName("delFlag", false, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("isDel")) {
|
||||
this.setFieldValByName("isDel", 0, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("addTime")) {
|
||||
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
|
||||
this.setFieldValByName("addTime", Integer.valueOf(timestamp), metaObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,5 +83,20 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
|
||||
if (Objects.nonNull(userId) && Objects.isNull(modifier)) {
|
||||
setFieldValByName("updater", userId.toString(), metaObject);
|
||||
}
|
||||
|
||||
|
||||
Timestamp time=new Timestamp(System.currentTimeMillis());
|
||||
if (metaObject.hasSetter("updateTime")) {
|
||||
this.setFieldValByName("updateTime", time, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("updateDate")) {
|
||||
this.setFieldValByName("updateDate", time, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("delFlag")) {
|
||||
this.setFieldValByName("delFlag", null, metaObject);
|
||||
}
|
||||
if (metaObject.hasSetter("createTime")) {
|
||||
this.setFieldValByName("createTime", null, metaObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -130,6 +130,10 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap
|
||||
// 设置 App API 无需认证
|
||||
.antMatchers(buildAppApi("/**")).permitAll()
|
||||
.antMatchers("/common/**").permitAll()
|
||||
|
||||
// 忽略宝享购全部
|
||||
.antMatchers("/bxgApp/**","/bxg/**").permitAll()
|
||||
|
||||
// ②:每个项目的自定义规则
|
||||
.and().authorizeRequests(registry -> // 下面,循环设置自定义规则
|
||||
authorizeRequestsCustomizers.forEach(customizer -> customizer.customize(registry)))
|
||||
|
||||
+4
-1
@@ -140,7 +140,10 @@ public class MultiUserDetailsAuthenticationProvider extends AbstractUserDetailsA
|
||||
|
||||
private UserTypeEnum getUserType(HttpServletRequest request) {
|
||||
// log.error("URI:{}",request.getRequestURI());
|
||||
if (request.getRequestURI().startsWith(properties.getAdminApi().getPrefix()) || request.getRequestURI().startsWith("/common/")) {
|
||||
if (request.getRequestURI().startsWith(properties.getAdminApi().getPrefix())
|
||||
|| request.getRequestURI().startsWith("/common/")
|
||||
|| request.getRequestURI().startsWith("/bxg")
|
||||
) {
|
||||
return UserTypeEnum.ADMIN;
|
||||
}
|
||||
if (request.getRequestURI().startsWith(properties.getAppApi().getPrefix())) {
|
||||
|
||||
+89
-4
@@ -8,16 +8,15 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import springfox.documentation.builders.ApiInfoBuilder;
|
||||
import springfox.documentation.builders.ExampleBuilder;
|
||||
import springfox.documentation.builders.PathSelectors;
|
||||
import springfox.documentation.builders.RequestParameterBuilder;
|
||||
import springfox.documentation.builders.*;
|
||||
import springfox.documentation.schema.ModelRef;
|
||||
import springfox.documentation.service.*;
|
||||
import springfox.documentation.spi.DocumentationType;
|
||||
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||||
import springfox.documentation.spring.web.plugins.Docket;
|
||||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -61,6 +60,92 @@ public class YudaoSwaggerAutoConfiguration {
|
||||
.securityContexts(securityContexts());
|
||||
}
|
||||
|
||||
|
||||
@Bean("SWAGGER_ADMIN")
|
||||
@SuppressWarnings("all")
|
||||
public Docket createRestApi1() {
|
||||
SwaggerProperties properties = swaggerProperties();
|
||||
ParameterBuilder ticketPar = new ParameterBuilder();
|
||||
List<Parameter> pars = new ArrayList<>();
|
||||
ticketPar.name("token").description("token")
|
||||
.modelRef(new ModelRef("string"))
|
||||
.parameterType("header")
|
||||
.defaultValue("token " + " ")
|
||||
.required(true)
|
||||
.build();
|
||||
pars.add(ticketPar.build());
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.groupName("ADMIN")
|
||||
.enable(true)
|
||||
.apiInfo(apiInfo(properties))
|
||||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("co.yixiang.modules"))
|
||||
.paths(PathSelectors.regex("/error.*").negate())
|
||||
.build()
|
||||
.globalOperationParameters(pars)
|
||||
//添加登陆认证
|
||||
.securitySchemes(securitySchemes())
|
||||
.globalRequestParameters(globalRequestParameters())
|
||||
.securityContexts(securityContexts());
|
||||
}
|
||||
|
||||
@Bean("SWAGGER_APP")
|
||||
@SuppressWarnings("all")
|
||||
public Docket createAppApi() {
|
||||
SwaggerProperties properties = swaggerProperties();
|
||||
ParameterBuilder ticketPar = new ParameterBuilder();
|
||||
List<Parameter> pars = new ArrayList<>();
|
||||
ticketPar.name("token").description("token")
|
||||
.modelRef(new ModelRef("string"))
|
||||
.parameterType("header")
|
||||
.defaultValue("token" + " ")
|
||||
.required(true)
|
||||
.build();
|
||||
pars.add(ticketPar.build());
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.groupName("APP")
|
||||
.enable(true)
|
||||
.apiInfo(apiInfo(properties))
|
||||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("co.yixiang.app.modules"))
|
||||
.paths(PathSelectors.regex("/error.*").negate())
|
||||
.build()
|
||||
.globalOperationParameters(pars)
|
||||
//添加登陆认证
|
||||
.securitySchemes(securitySchemes())
|
||||
.globalRequestParameters(globalRequestParameters())
|
||||
.securityContexts(securityContexts());
|
||||
}
|
||||
|
||||
|
||||
@Bean("SWAGGER_TOOL")
|
||||
@SuppressWarnings("all")
|
||||
public Docket createToolApi() {
|
||||
SwaggerProperties properties = swaggerProperties();
|
||||
ParameterBuilder ticketPar = new ParameterBuilder();
|
||||
List<Parameter> pars = new ArrayList<>();
|
||||
ticketPar.name("token").description("token")
|
||||
.modelRef(new ModelRef("string"))
|
||||
.parameterType("header")
|
||||
.defaultValue("token" + " ")
|
||||
.required(true)
|
||||
.build();
|
||||
pars.add(ticketPar.build());
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.groupName("TOOL")
|
||||
.enable(true)
|
||||
.apiInfo(apiInfo(properties))
|
||||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("co.yixiang.tools"))
|
||||
.paths(PathSelectors.regex("/error.*").negate())
|
||||
.build()
|
||||
.globalOperationParameters(pars)
|
||||
//添加登陆认证
|
||||
.securitySchemes(securitySchemes())
|
||||
.globalRequestParameters(globalRequestParameters())
|
||||
.securityContexts(securityContexts());
|
||||
}
|
||||
|
||||
// ========== apiInfo ==========
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user