集成 Spring Boot Admin 监控服务端及客户端依赖,并新增 AdminServerConfig 配置类启用应用监控。
This commit is contained in:
17
pom.xml
17
pom.xml
@@ -63,6 +63,9 @@
|
|||||||
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
|
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
|
||||||
|
|
||||||
<weixin-java-miniapp.version>4.8.1.B</weixin-java-miniapp.version>
|
<weixin-java-miniapp.version>4.8.1.B</weixin-java-miniapp.version>
|
||||||
|
|
||||||
|
<!-- Spring Boot Admin 监控 -->
|
||||||
|
<spring-boot-admin.version>4.0.2</spring-boot-admin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@@ -279,6 +282,20 @@
|
|||||||
<version>${weixin-java-miniapp.version}</version>
|
<version>${weixin-java-miniapp.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Spring Boot Admin Server 监控服务端 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-starter-server</artifactId>
|
||||||
|
<version>${spring-boot-admin.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Spring Boot Admin Client 监控客户端(被监控应用注册到服务端) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||||
|
<version>${spring-boot-admin.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 动态多数据源 -->
|
<!-- 动态多数据源 -->
|
||||||
<!--<dependency>
|
<!--<dependency>
|
||||||
<groupId>com.baomidou</groupId>
|
<groupId>com.baomidou</groupId>
|
||||||
|
|||||||
20
src/main/java/com/youlai/boot/config/AdminServerConfig.java
Normal file
20
src/main/java/com/youlai/boot/config/AdminServerConfig.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
|
import de.codecentric.boot.admin.server.config.EnableAdminServer;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spring Boot Admin Server 配置
|
||||||
|
* <p>
|
||||||
|
* 启用应用监控服务端,提供可视化监控界面。
|
||||||
|
* 访问地址:http://localhost:8800/admin
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Ray
|
||||||
|
* @since 2024/1/1
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@EnableAdminServer
|
||||||
|
public class AdminServerConfig {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.plugin.knife4j;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
|
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.plugin.mybatis;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.plugin.mybatis;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||||
import com.youlai.boot.plugin.mybatis.MyDataPermissionHandler;
|
import com.youlai.boot.config.MyDataPermissionHandler;
|
||||||
import com.youlai.boot.plugin.mybatis.MyMetaObjectHandler;
|
import com.youlai.boot.config.MyMetaObjectHandler;
|
||||||
import org.apache.ibatis.mapping.DatabaseIdProvider;
|
import org.apache.ibatis.mapping.DatabaseIdProvider;
|
||||||
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
|
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
package com.youlai.boot.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
|
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,11 +35,21 @@ public class RedisConfig {
|
|||||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
||||||
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
||||||
|
|
||||||
|
// Key 使用 String 序列化
|
||||||
redisTemplate.setKeySerializer(RedisSerializer.string());
|
redisTemplate.setKeySerializer(RedisSerializer.string());
|
||||||
redisTemplate.setValueSerializer(RedisSerializer.json());
|
|
||||||
|
|
||||||
redisTemplate.setHashKeySerializer(RedisSerializer.string());
|
redisTemplate.setHashKeySerializer(RedisSerializer.string());
|
||||||
redisTemplate.setHashValueSerializer(RedisSerializer.json());
|
|
||||||
|
// Value 使用自定义 JSON 序列化(不写入类型信息,避免 HashSet 等集合被序列化成带 @class 的结构)
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
objectMapper.registerModule(new JavaTimeModule());
|
||||||
|
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||||
|
// 禁用类型信息写入,避免集合类型名被当成元素
|
||||||
|
objectMapper.disableDefaultTyping();
|
||||||
|
|
||||||
|
Jackson2JsonRedisSerializer<Object> jsonSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);
|
||||||
|
|
||||||
|
redisTemplate.setValueSerializer(jsonSerializer);
|
||||||
|
redisTemplate.setHashValueSerializer(jsonSerializer);
|
||||||
|
|
||||||
redisTemplate.afterPropertiesSet();
|
redisTemplate.afterPropertiesSet();
|
||||||
return redisTemplate;
|
return redisTemplate;
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import com.youlai.boot.security.provider.WechatMiniAuthenticationProvider;
|
|||||||
import com.youlai.boot.security.token.TokenManager;
|
import com.youlai.boot.security.token.TokenManager;
|
||||||
import com.youlai.boot.security.service.SysUserDetailsService;
|
import com.youlai.boot.security.service.SysUserDetailsService;
|
||||||
import com.youlai.boot.system.service.ConfigService;
|
import com.youlai.boot.system.service.ConfigService;
|
||||||
import com.youlai.boot.system.service.UserSocialService;
|
|
||||||
import com.youlai.boot.system.service.UserService;
|
import com.youlai.boot.system.service.UserService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@@ -33,6 +32,9 @@ import org.springframework.security.config.http.SessionCreationPolicy;
|
|||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.security.web.SecurityFilterChain;
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||||
|
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spring Security 配置类
|
* Spring Security 配置类
|
||||||
@@ -58,17 +60,17 @@ public class SecurityConfig {
|
|||||||
private final SecurityProperties securityProperties;
|
private final SecurityProperties securityProperties;
|
||||||
|
|
||||||
private final WxMaService wxMaService;
|
private final WxMaService wxMaService;
|
||||||
private final UserSocialService userSocialService;
|
|
||||||
|
private final RequestMappingHandlerMapping requestMappingHandlerMapping;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配置安全过滤链 SecurityFilterChain
|
* 配置安全过滤链 SecurityFilterChain
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
|
|
||||||
return http
|
return http
|
||||||
.authorizeHttpRequests(requestMatcherRegistry -> {
|
.authorizeHttpRequests(requestMatcherRegistry -> {
|
||||||
// 配置无需登录即可访问的公开接口
|
// 配置无需登录即可访问的公开接口(配置文件方式)
|
||||||
String[] ignoreUrls = securityProperties.getIgnoreUrls();
|
String[] ignoreUrls = securityProperties.getIgnoreUrls();
|
||||||
if (ArrayUtil.isNotEmpty(ignoreUrls)) {
|
if (ArrayUtil.isNotEmpty(ignoreUrls)) {
|
||||||
requestMatcherRegistry.requestMatchers(ignoreUrls).permitAll();
|
requestMatcherRegistry.requestMatchers(ignoreUrls).permitAll();
|
||||||
@@ -138,8 +140,11 @@ public class SecurityConfig {
|
|||||||
* 微信小程序认证 Provider
|
* 微信小程序认证 Provider
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
public WechatMiniAuthenticationProvider wechatMiniAuthenticationProvider() {
|
public WechatMiniAuthenticationProvider wechatMiniAuthenticationProvider(
|
||||||
return new WechatMiniAuthenticationProvider(wxMaService, userSocialService);
|
WxMaService wxMaService,
|
||||||
|
SysUserDetailsService sysUserDetailsService
|
||||||
|
) {
|
||||||
|
return new WechatMiniAuthenticationProvider(wxMaService, sysUserDetailsService);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -157,4 +162,5 @@ public class SecurityConfig {
|
|||||||
wechatMiniAuthenticationProvider
|
wechatMiniAuthenticationProvider
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
package com.youlai.boot.tool.codegen.controller;
|
package com.youlai.boot.module.codegen.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.boot.core.web.PageResult;
|
import com.youlai.boot.core.web.PageResult;
|
||||||
import com.youlai.boot.core.web.Result;
|
import com.youlai.boot.core.web.Result;
|
||||||
import com.youlai.boot.config.property.CodegenProperties;
|
import com.youlai.boot.config.property.CodegenProperties;
|
||||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||||
import com.youlai.boot.tool.codegen.service.CodegenService;
|
import com.youlai.boot.module.codegen.service.CodegenService;
|
||||||
import com.youlai.boot.tool.codegen.model.form.GenConfigForm;
|
import com.youlai.boot.module.codegen.model.form.GenConfigForm;
|
||||||
import com.youlai.boot.tool.codegen.model.query.TableQuery;
|
import com.youlai.boot.module.codegen.model.query.TableQuery;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.CodegenPreviewVO;
|
import com.youlai.boot.module.codegen.model.vo.CodegenPreviewVO;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.TablePageVO;
|
import com.youlai.boot.module.codegen.model.vo.TablePageVO;
|
||||||
import com.youlai.boot.common.annotation.Log;
|
import com.youlai.boot.common.annotation.Log;
|
||||||
import com.youlai.boot.tool.codegen.service.GenTableService;
|
import com.youlai.boot.module.codegen.service.GenTableService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@@ -106,8 +106,8 @@ public class CodegenController {
|
|||||||
outputStream.write(data);
|
outputStream.write(data);
|
||||||
outputStream.flush();
|
outputStream.flush();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Error while writing the zip file to response", e);
|
log.error("Error while writing the zip file1 to response", e);
|
||||||
throw new RuntimeException("Failed to write the zip file to response", e);
|
throw new RuntimeException("Failed to write the zip file1 to response", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.boot.tool.codegen.converter;
|
package com.youlai.boot.module.codegen.converter;
|
||||||
|
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTableColumn;
|
import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
|
||||||
import com.youlai.boot.tool.codegen.model.form.GenConfigForm;
|
import com.youlai.boot.module.codegen.model.form.GenConfigForm;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.enums;
|
package com.youlai.boot.module.codegen.enums;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.enums;
|
package com.youlai.boot.module.codegen.enums;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.enums;
|
package com.youlai.boot.module.codegen.enums;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.youlai.boot.tool.codegen.mapper;
|
package com.youlai.boot.module.codegen.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.boot.tool.codegen.model.bo.ColumnMetaData;
|
import com.youlai.boot.module.codegen.model.bo.ColumnMetaData;
|
||||||
import com.youlai.boot.tool.codegen.model.bo.TableMetaData;
|
import com.youlai.boot.module.codegen.model.bo.TableMetaData;
|
||||||
import com.youlai.boot.tool.codegen.model.query.TableQuery;
|
import com.youlai.boot.module.codegen.model.query.TableQuery;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.TablePageVO;
|
import com.youlai.boot.module.codegen.model.vo.TablePageVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.boot.tool.codegen.mapper;
|
package com.youlai.boot.module.codegen.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTableColumn;
|
import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.boot.tool.codegen.mapper;
|
package com.youlai.boot.module.codegen.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.bo;
|
package com.youlai.boot.module.codegen.model.bo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.bo;
|
package com.youlai.boot.module.codegen.model.bo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.entity;
|
package com.youlai.boot.module.codegen.model.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.entity;
|
package com.youlai.boot.module.codegen.model.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.youlai.boot.common.base.BaseEntity;
|
import com.youlai.boot.common.base.BaseEntity;
|
||||||
import com.youlai.boot.tool.codegen.enums.FormTypeEnum;
|
import com.youlai.boot.module.codegen.enums.FormTypeEnum;
|
||||||
import com.youlai.boot.tool.codegen.enums.QueryTypeEnum;
|
import com.youlai.boot.module.codegen.enums.QueryTypeEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.form;
|
package com.youlai.boot.module.codegen.model.form;
|
||||||
|
|
||||||
import com.youlai.boot.tool.codegen.enums.FormTypeEnum;
|
import com.youlai.boot.module.codegen.enums.FormTypeEnum;
|
||||||
import com.youlai.boot.tool.codegen.enums.QueryTypeEnum;
|
import com.youlai.boot.module.codegen.enums.QueryTypeEnum;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.query;
|
package com.youlai.boot.module.codegen.model.query;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.youlai.boot.common.base.BaseQuery;
|
import com.youlai.boot.common.base.BaseQuery;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.query;
|
package com.youlai.boot.module.codegen.model.query;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.youlai.boot.common.base.BaseQuery;
|
import com.youlai.boot.common.base.BaseQuery;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.vo;
|
package com.youlai.boot.module.codegen.model.vo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.model.vo;
|
package com.youlai.boot.module.codegen.model.vo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.boot.tool.codegen.service;
|
package com.youlai.boot.module.codegen.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.boot.tool.codegen.model.query.TableQuery;
|
import com.youlai.boot.module.codegen.model.query.TableQuery;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.CodegenPreviewVO;
|
import com.youlai.boot.module.codegen.model.vo.CodegenPreviewVO;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.TablePageVO;
|
import com.youlai.boot.module.codegen.model.vo.TablePageVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.boot.tool.codegen.service;
|
package com.youlai.boot.module.codegen.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTableColumn;
|
import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代码生成配置接口
|
* 代码生成配置接口
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.boot.tool.codegen.service;
|
package com.youlai.boot.module.codegen.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import com.youlai.boot.tool.codegen.model.form.GenConfigForm;
|
import com.youlai.boot.module.codegen.model.form.GenConfigForm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代码生成配置接口
|
* 代码生成配置接口
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.service.impl;
|
package com.youlai.boot.module.codegen.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
@@ -11,18 +11,18 @@ import cn.hutool.extra.template.TemplateEngine;
|
|||||||
import cn.hutool.extra.template.TemplateUtil;
|
import cn.hutool.extra.template.TemplateUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.boot.tool.codegen.enums.JavaTypeEnum;
|
import com.youlai.boot.module.codegen.enums.JavaTypeEnum;
|
||||||
import com.youlai.boot.config.property.CodegenProperties;
|
import com.youlai.boot.config.property.CodegenProperties;
|
||||||
import com.youlai.boot.tool.codegen.service.GenTableService;
|
import com.youlai.boot.module.codegen.service.GenTableService;
|
||||||
import com.youlai.boot.tool.codegen.service.GenTableColumnService;
|
import com.youlai.boot.module.codegen.service.GenTableColumnService;
|
||||||
import com.youlai.boot.tool.codegen.service.CodegenService;
|
import com.youlai.boot.module.codegen.service.CodegenService;
|
||||||
import com.youlai.boot.core.exception.BusinessException;
|
import com.youlai.boot.core.exception.BusinessException;
|
||||||
import com.youlai.boot.tool.codegen.mapper.DatabaseMapper;
|
import com.youlai.boot.module.codegen.mapper.DatabaseMapper;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTableColumn;
|
import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
|
||||||
import com.youlai.boot.tool.codegen.model.query.TableQuery;
|
import com.youlai.boot.module.codegen.model.query.TableQuery;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.CodegenPreviewVO;
|
import com.youlai.boot.module.codegen.model.vo.CodegenPreviewVO;
|
||||||
import com.youlai.boot.tool.codegen.model.vo.TablePageVO;
|
import com.youlai.boot.module.codegen.model.vo.TablePageVO;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -390,7 +390,7 @@ public class CodegenServiceImpl implements CodegenService {
|
|||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Error while generating zip for code download", e);
|
log.error("Error while generating zip for code download", e);
|
||||||
throw new RuntimeException("Failed to generate code zip file", e);
|
throw new RuntimeException("Failed to generate code zip file1", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -421,7 +421,7 @@ public class CodegenServiceImpl implements CodegenService {
|
|||||||
zip.closeEntry();
|
zip.closeEntry();
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Error while adding file {} to zip", fileName, e);
|
log.error("Error while adding file1 {} to zip", fileName, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.boot.tool.codegen.service.impl;
|
package com.youlai.boot.module.codegen.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.boot.tool.codegen.mapper.GenTableColumnMapper;
|
import com.youlai.boot.module.codegen.mapper.GenTableColumnMapper;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTableColumn;
|
import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
|
||||||
import com.youlai.boot.tool.codegen.service.GenTableColumnService;
|
import com.youlai.boot.module.codegen.service.GenTableColumnService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.tool.codegen.service.impl;
|
package com.youlai.boot.module.codegen.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
@@ -7,21 +7,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.boot.YouLaiBootApplication;
|
import com.youlai.boot.YouLaiBootApplication;
|
||||||
import com.youlai.boot.common.enums.EnvEnum;
|
import com.youlai.boot.common.enums.EnvEnum;
|
||||||
import com.youlai.boot.tool.codegen.enums.FormTypeEnum;
|
import com.youlai.boot.module.codegen.enums.FormTypeEnum;
|
||||||
import com.youlai.boot.tool.codegen.enums.JavaTypeEnum;
|
import com.youlai.boot.module.codegen.enums.JavaTypeEnum;
|
||||||
import com.youlai.boot.tool.codegen.enums.QueryTypeEnum;
|
import com.youlai.boot.module.codegen.enums.QueryTypeEnum;
|
||||||
import com.youlai.boot.core.exception.BusinessException;
|
import com.youlai.boot.core.exception.BusinessException;
|
||||||
import com.youlai.boot.config.property.CodegenProperties;
|
import com.youlai.boot.config.property.CodegenProperties;
|
||||||
import com.youlai.boot.tool.codegen.converter.CodegenConverter;
|
import com.youlai.boot.module.codegen.converter.CodegenConverter;
|
||||||
import com.youlai.boot.tool.codegen.mapper.DatabaseMapper;
|
import com.youlai.boot.module.codegen.mapper.DatabaseMapper;
|
||||||
import com.youlai.boot.tool.codegen.mapper.GenTableMapper;
|
import com.youlai.boot.module.codegen.mapper.GenTableMapper;
|
||||||
import com.youlai.boot.tool.codegen.model.bo.ColumnMetaData;
|
import com.youlai.boot.module.codegen.model.bo.ColumnMetaData;
|
||||||
import com.youlai.boot.tool.codegen.model.bo.TableMetaData;
|
import com.youlai.boot.module.codegen.model.bo.TableMetaData;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTableColumn;
|
import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
|
||||||
import com.youlai.boot.tool.codegen.model.form.GenConfigForm;
|
import com.youlai.boot.module.codegen.model.form.GenConfigForm;
|
||||||
import com.youlai.boot.tool.codegen.service.GenTableService;
|
import com.youlai.boot.module.codegen.service.GenTableService;
|
||||||
import com.youlai.boot.tool.codegen.service.GenTableColumnService;
|
import com.youlai.boot.module.codegen.service.GenTableColumnService;
|
||||||
import com.youlai.boot.system.service.MenuService;
|
import com.youlai.boot.system.service.MenuService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.boot.file.controller;
|
package com.youlai.boot.module.file.controller;
|
||||||
|
|
||||||
import com.youlai.boot.core.web.Result;
|
import com.youlai.boot.core.web.Result;
|
||||||
import com.youlai.boot.file.service.FileService;
|
import com.youlai.boot.module.file.service.FileService;
|
||||||
import com.youlai.boot.file.model.FileInfo;
|
import com.youlai.boot.module.file.model.FileInfo;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
@@ -31,13 +31,13 @@ public class FileController {
|
|||||||
@Operation(summary = "文件上传")
|
@Operation(summary = "文件上传")
|
||||||
public Result<FileInfo> uploadFile(
|
public Result<FileInfo> uploadFile(
|
||||||
@Parameter(
|
@Parameter(
|
||||||
name = "file",
|
name = "file1",
|
||||||
description = "表单文件对象",
|
description = "表单文件对象",
|
||||||
required = true,
|
required = true,
|
||||||
in = ParameterIn.DEFAULT,
|
in = ParameterIn.DEFAULT,
|
||||||
schema = @Schema(name = "file", format = "binary")
|
schema = @Schema(name = "file1", format = "binary")
|
||||||
)
|
)
|
||||||
@RequestPart(value = "file") MultipartFile file
|
@RequestPart(value = "file1") MultipartFile file
|
||||||
) {
|
) {
|
||||||
FileInfo fileInfo = fileService.uploadFile(file);
|
FileInfo fileInfo = fileService.uploadFile(file);
|
||||||
return Result.success(fileInfo);
|
return Result.success(fileInfo);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.file.model;
|
package com.youlai.boot.module.file.model;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.boot.file.service;
|
package com.youlai.boot.module.file.service;
|
||||||
|
|
||||||
import com.youlai.boot.file.model.FileInfo;
|
import com.youlai.boot.module.file.model.FileInfo;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.file.service.impl;
|
package com.youlai.boot.module.file.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
@@ -8,8 +8,8 @@ import com.aliyun.oss.OSS;
|
|||||||
import com.aliyun.oss.OSSClientBuilder;
|
import com.aliyun.oss.OSSClientBuilder;
|
||||||
import com.aliyun.oss.model.ObjectMetadata;
|
import com.aliyun.oss.model.ObjectMetadata;
|
||||||
import com.aliyun.oss.model.PutObjectRequest;
|
import com.aliyun.oss.model.PutObjectRequest;
|
||||||
import com.youlai.boot.file.service.FileService;
|
import com.youlai.boot.module.file.service.FileService;
|
||||||
import com.youlai.boot.file.model.FileInfo;
|
import com.youlai.boot.module.file.model.FileInfo;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.youlai.boot.file.service.impl;
|
package com.youlai.boot.module.file.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.youlai.boot.file.model.FileInfo;
|
import com.youlai.boot.module.file.model.FileInfo;
|
||||||
import com.youlai.boot.file.service.FileService;
|
import com.youlai.boot.module.file.service.FileService;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.file.service.impl;
|
package com.youlai.boot.module.file.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
@@ -7,8 +7,8 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.youlai.boot.core.exception.BusinessException;
|
import com.youlai.boot.core.exception.BusinessException;
|
||||||
import com.youlai.boot.core.web.ResultCode;
|
import com.youlai.boot.core.web.ResultCode;
|
||||||
import com.youlai.boot.file.model.FileInfo;
|
import com.youlai.boot.module.file.model.FileInfo;
|
||||||
import com.youlai.boot.file.service.FileService;
|
import com.youlai.boot.module.file.service.FileService;
|
||||||
import io.minio.*;
|
import io.minio.*;
|
||||||
import io.minio.http.Method;
|
import io.minio.http.Method;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
@@ -7,9 +7,8 @@ import com.youlai.boot.security.exception.NeedBindMobileException;
|
|||||||
import com.youlai.boot.security.model.SysUserDetails;
|
import com.youlai.boot.security.model.SysUserDetails;
|
||||||
import com.youlai.boot.security.model.UserAuthInfo;
|
import com.youlai.boot.security.model.UserAuthInfo;
|
||||||
import com.youlai.boot.security.model.WechatMiniAuthenticationToken;
|
import com.youlai.boot.security.model.WechatMiniAuthenticationToken;
|
||||||
import com.youlai.boot.system.enums.SocialPlatformEnum;
|
import com.youlai.boot.security.service.SysUserDetailsService;
|
||||||
import com.youlai.boot.system.model.entity.UserSocial;
|
import com.youlai.boot.system.model.entity.UserSocial;
|
||||||
import com.youlai.boot.system.service.UserSocialService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import me.chanjar.weixin.common.error.WxErrorException;
|
import me.chanjar.weixin.common.error.WxErrorException;
|
||||||
@@ -27,7 +26,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|||||||
public class WechatMiniAuthenticationProvider implements AuthenticationProvider {
|
public class WechatMiniAuthenticationProvider implements AuthenticationProvider {
|
||||||
|
|
||||||
private final WxMaService wxMaService;
|
private final WxMaService wxMaService;
|
||||||
private final UserSocialService userSocialService;
|
private final SysUserDetailsService sysUserDetailsService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
|
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
|
||||||
@@ -47,7 +46,7 @@ public class WechatMiniAuthenticationProvider implements AuthenticationProvider
|
|||||||
log.info("微信小程序登录:openid={}", openid);
|
log.info("微信小程序登录:openid={}", openid);
|
||||||
|
|
||||||
// 2. 根据 openid 查询绑定信息
|
// 2. 根据 openid 查询绑定信息
|
||||||
UserSocial userSocial = userSocialService.getByPlatformAndOpenid(SocialPlatformEnum.WECHAT_MINI, openid);
|
UserSocial userSocial = sysUserDetailsService.getWechatMiniBindInfo(openid);
|
||||||
|
|
||||||
if (userSocial == null) {
|
if (userSocial == null) {
|
||||||
// 未绑定,抛出异常提示需要绑定手机号
|
// 未绑定,抛出异常提示需要绑定手机号
|
||||||
@@ -56,7 +55,7 @@ public class WechatMiniAuthenticationProvider implements AuthenticationProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. 获取用户认证信息
|
// 3. 获取用户认证信息
|
||||||
UserAuthInfo userAuthInfo = userSocialService.getAuthInfoByOpenid(SocialPlatformEnum.WECHAT_MINI, openid);
|
UserAuthInfo userAuthInfo = sysUserDetailsService.getAuthInfoByWechatOpenid(openid);
|
||||||
|
|
||||||
if (userAuthInfo == null) {
|
if (userAuthInfo == null) {
|
||||||
log.warn("微信小程序登录失败:用户不存在,openid={}", openid);
|
log.warn("微信小程序登录失败:用户不存在,openid={}", openid);
|
||||||
@@ -70,7 +69,7 @@ public class WechatMiniAuthenticationProvider implements AuthenticationProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 5. 更新 session_key
|
// 5. 更新 session_key
|
||||||
userSocialService.updateSessionKey(userSocial.getId(), sessionKey);
|
sysUserDetailsService.updateWechatSessionKey(userSocial.getId(), sessionKey);
|
||||||
|
|
||||||
// 6. 构建已认证 Token
|
// 6. 构建已认证 Token
|
||||||
SysUserDetails userDetails = new SysUserDetails(userAuthInfo);
|
SysUserDetails userDetails = new SysUserDetails(userAuthInfo);
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ package com.youlai.boot.security.service;
|
|||||||
|
|
||||||
import com.youlai.boot.security.model.SysUserDetails;
|
import com.youlai.boot.security.model.SysUserDetails;
|
||||||
import com.youlai.boot.security.model.UserAuthInfo;
|
import com.youlai.boot.security.model.UserAuthInfo;
|
||||||
|
import com.youlai.boot.system.enums.SocialPlatformEnum;
|
||||||
|
import com.youlai.boot.system.model.entity.UserSocial;
|
||||||
|
import com.youlai.boot.system.service.UserSocialService;
|
||||||
import com.youlai.boot.system.service.UserService;
|
import com.youlai.boot.system.service.UserService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -22,6 +25,7 @@ import org.springframework.stereotype.Service;
|
|||||||
public class SysUserDetailsService implements UserDetailsService {
|
public class SysUserDetailsService implements UserDetailsService {
|
||||||
|
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
|
private final UserSocialService userSocialService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据用户名获取用户信息
|
* 根据用户名获取用户信息
|
||||||
@@ -45,4 +49,34 @@ public class SysUserDetailsService implements UserDetailsService {
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据微信小程序openid查询绑定信息
|
||||||
|
*
|
||||||
|
* @param openid 微信小程序openid
|
||||||
|
* @return 绑定信息,未绑定返回null
|
||||||
|
*/
|
||||||
|
public UserSocial getWechatMiniBindInfo(String openid) {
|
||||||
|
return userSocialService.getByPlatformAndOpenid(SocialPlatformEnum.WECHAT_MINI, openid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据微信小程序openid获取用户认证信息
|
||||||
|
*
|
||||||
|
* @param openid 微信小程序openid
|
||||||
|
* @return 用户认证信息,用户不存在返回null
|
||||||
|
*/
|
||||||
|
public UserAuthInfo getAuthInfoByWechatOpenid(String openid) {
|
||||||
|
return userSocialService.getAuthInfoByOpenid(SocialPlatformEnum.WECHAT_MINI, openid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新微信小程序session_key
|
||||||
|
*
|
||||||
|
* @param bindId 绑定记录ID
|
||||||
|
* @param sessionKey session_key
|
||||||
|
*/
|
||||||
|
public void updateWechatSessionKey(Long bindId, String sessionKey) {
|
||||||
|
userSocialService.updateSessionKey(bindId, sessionKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.boot.system.service;
|
package com.youlai.boot.system.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import com.youlai.boot.system.model.form.MenuForm;
|
import com.youlai.boot.system.model.form.MenuForm;
|
||||||
import com.youlai.boot.common.model.Option;
|
import com.youlai.boot.common.model.Option;
|
||||||
import com.youlai.boot.system.model.entity.Menu;
|
import com.youlai.boot.system.model.entity.Menu;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.boot.tool.codegen.model.entity.GenTable;
|
import com.youlai.boot.module.codegen.model.entity.GenTable;
|
||||||
import com.youlai.boot.security.util.SecurityUtils;
|
import com.youlai.boot.security.util.SecurityUtils;
|
||||||
import com.youlai.boot.system.converter.MenuConverter;
|
import com.youlai.boot.system.converter.MenuConverter;
|
||||||
import com.youlai.boot.system.mapper.MenuMapper;
|
import com.youlai.boot.system.mapper.MenuMapper;
|
||||||
|
|||||||
@@ -8,6 +8,19 @@ spring:
|
|||||||
url: jdbc:mysql://www.youlai.tech:3306/youlai_admin?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
|
url: jdbc:mysql://www.youlai.tech:3306/youlai_admin?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
|
||||||
username: youlai
|
username: youlai
|
||||||
password: 123456
|
password: 123456
|
||||||
|
# Spring Boot Admin 监控配置
|
||||||
|
boot:
|
||||||
|
admin:
|
||||||
|
# Admin Server 配置
|
||||||
|
server:
|
||||||
|
path: /admin
|
||||||
|
# Admin Client 配置(当前应用注册到 Admin Server)
|
||||||
|
client:
|
||||||
|
enabled: true
|
||||||
|
url: http://localhost:8000/admin
|
||||||
|
instance:
|
||||||
|
name: ${spring.application.name}
|
||||||
|
prefer-ip: true
|
||||||
data:
|
data:
|
||||||
redis:
|
redis:
|
||||||
database: 12
|
database: 12
|
||||||
@@ -94,6 +107,8 @@ security:
|
|||||||
- /v3/api-docs/**
|
- /v3/api-docs/**
|
||||||
- /webjars/**
|
- /webjars/**
|
||||||
- /favicon.ico
|
- /favicon.ico
|
||||||
|
- /admin/** # Spring Boot Admin 监控端点
|
||||||
|
- /actuator/** # Actuator 监控端点
|
||||||
|
|
||||||
# 文件存储配置
|
# 文件存储配置
|
||||||
oss:
|
oss:
|
||||||
@@ -216,5 +231,15 @@ captcha:
|
|||||||
# 微信小程序配置
|
# 微信小程序配置
|
||||||
wx:
|
wx:
|
||||||
miniapp:
|
miniapp:
|
||||||
appid: Your_AppId
|
appid: wx99a151dc43d2637b
|
||||||
secret: Your_AppSecret
|
secret: fa2d74fd9f340ff1017c96fcbd19f5ad
|
||||||
|
|
||||||
|
# Actuator 端点配置(监控端点暴露)
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,metrics,env,loggers,heapdump,threaddump
|
||||||
|
endpoint:
|
||||||
|
health:
|
||||||
|
show-details: always
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<!--suppress ALL -->
|
<!--suppress ALL -->
|
||||||
<mapper namespace="com.youlai.boot.tool.codegen.mapper.DatabaseMapper">
|
<mapper namespace="com.youlai.boot.module.codegen.mapper.DatabaseMapper">
|
||||||
|
|
||||||
<!-- 查询数据库表分页 mysql版本-->
|
<!-- 查询数据库表分页 mysql版本-->
|
||||||
<select id="getTablePage" resultType="com.youlai.boot.tool.codegen.model.vo.TablePageVO" databaseId="mysql">
|
<select id="getTablePage" resultType="com.youlai.boot.module.codegen.model.vo.TablePageVO" databaseId="mysql">
|
||||||
SELECT
|
SELECT
|
||||||
t1.TABLE_NAME ,
|
t1.TABLE_NAME ,
|
||||||
t1.TABLE_COMMENT ,
|
t1.TABLE_COMMENT ,
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 查询数据库表元数据 mysql版本-->
|
<!-- 查询数据库表元数据 mysql版本-->
|
||||||
<select id="getTableMetadata" resultType="com.youlai.boot.tool.codegen.model.bo.TableMetaData" databaseId="mysql">
|
<select id="getTableMetadata" resultType="com.youlai.boot.module.codegen.model.bo.TableMetaData" databaseId="mysql">
|
||||||
SELECT
|
SELECT
|
||||||
TABLE_NAME ,
|
TABLE_NAME ,
|
||||||
TABLE_COMMENT ,
|
TABLE_COMMENT ,
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 获取数据库表字段元数据 mysql版本-->
|
<!-- 获取数据库表字段元数据 mysql版本-->
|
||||||
<select id="getTableColumns" resultType="com.youlai.boot.tool.codegen.model.bo.ColumnMetaData" databaseId="mysql">
|
<select id="getTableColumns" resultType="com.youlai.boot.module.codegen.model.bo.ColumnMetaData" databaseId="mysql">
|
||||||
SELECT
|
SELECT
|
||||||
COLUMN_NAME,
|
COLUMN_NAME,
|
||||||
DATA_TYPE,
|
DATA_TYPE,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.plugin.mybatis;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import com.youlai.boot.security.model.RoleDataScope;
|
import com.youlai.boot.security.model.RoleDataScope;
|
||||||
import com.youlai.boot.security.model.SysUserDetails;
|
import com.youlai.boot.security.model.SysUserDetails;
|
||||||
@@ -115,7 +115,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 返回原始where
|
// then: 返回原始where
|
||||||
assertThat(result).isSameAs(where);
|
assertThat(result).isSameAs(where);
|
||||||
@@ -134,7 +134,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 添加部门过滤条件
|
// then: 添加部门过滤条件
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -154,7 +154,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 添加用户过滤条件
|
// then: 添加用户过滤条件
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -174,7 +174,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 添加自定义部门IN条件
|
// then: 添加自定义部门IN条件
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -197,7 +197,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 添加1=0条件(无权限)
|
// then: 添加1=0条件(无权限)
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -217,7 +217,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 添加子查询条件
|
// then: 添加子查询条件
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -250,7 +250,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 返回原始where,不添加过滤条件
|
// then: 返回原始where,不添加过滤条件
|
||||||
assertThat(result).isSameAs(where);
|
assertThat(result).isSameAs(where);
|
||||||
@@ -273,7 +273,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 生成OR连接的合并条件
|
// then: 生成OR连接的合并条件
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -298,7 +298,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 生成OR连接的IN条件
|
// then: 生成OR连接的IN条件
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
@@ -319,7 +319,7 @@ class MyDataPermissionHandlerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
Expression result = handler.getSqlSegment(where,
|
Expression result = handler.getSqlSegment(where,
|
||||||
"com.youlai.boot.plugin.mybatis.TestDataPermissionMapper.selectList");
|
"com.youlai.boot.config.TestDataPermissionMapper.selectList");
|
||||||
|
|
||||||
// then: 结果应该包含原始where和数据权限条件
|
// then: 结果应该包含原始where和数据权限条件
|
||||||
assertThat(result).isInstanceOf(AndExpression.class);
|
assertThat(result).isInstanceOf(AndExpression.class);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.plugin.mybatis;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import com.youlai.boot.common.annotation.DataPermission;
|
import com.youlai.boot.common.annotation.DataPermission;
|
||||||
|
|
||||||
Reference in New Issue
Block a user