提交 8d28e410 作者: 方治民

合并分支 '3.x' 到 'beta'

3.x

查看合并请求 !20
流水线 #2030 已失败 于阶段
in 18 秒
...@@ -22,6 +22,13 @@ ...@@ -22,6 +22,13 @@
--- ---
## 说明
```shell
# 1. Spotless 依赖下载失败, 可尝试清理本地缓存
npm cache clean --force
```
## TODO ## TODO
<!-- prettier-ignore --> <!-- prettier-ignore -->
......
...@@ -3,17 +3,17 @@ env: ...@@ -3,17 +3,17 @@ env:
# host: 192.168.0.156 # host: 192.168.0.156
host: 127.0.0.1 host: 127.0.0.1
prod: false prod: false
extra: props:
# username: admin # username: admin
password: 123456
username: postgres username: postgres
password: 123456
# ---------------------------------------------- # ----------------------------------------------
spring: spring:
datasource: datasource:
url: jdbc:postgresql://${env.host}:5432/basic_app url: jdbc:postgresql://${env.host}:5432/basic_app
username: ${env.extra.username} username: ${env.props.username}
password: ${env.extra.password} password: ${env.props.password}
jpa: jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect database-platform: org.hibernate.dialect.PostgreSQLDialect
open-in-view: true open-in-view: true
...@@ -37,7 +37,7 @@ spring: ...@@ -37,7 +37,7 @@ spring:
database: 5 database: 5
port: 6379 port: 6379
host: ${env.host} host: ${env.host}
password: ${env.extra.password} password: ${env.props.password}
# ---------------------------------------------- # ----------------------------------------------
# ---------------------------------------------- # ----------------------------------------------
...@@ -54,8 +54,8 @@ knife4j: ...@@ -54,8 +54,8 @@ knife4j:
enable: true enable: true
basic: basic:
enable: false enable: false
username: ${env.extra.username} username: ${env.props.username}
password: ${env.extra.password} password: ${env.props.password}
setting: setting:
language: zh_cn language: zh_cn
enableOpenApi: true enableOpenApi: true
......
...@@ -26,8 +26,8 @@ public class InjectAuditorAware implements AuditorAware<String> { ...@@ -26,8 +26,8 @@ public class InjectAuditorAware implements AuditorAware<String> {
@Override @Override
public @NonNull Optional<String> getCurrentAuditor() { public @NonNull Optional<String> getCurrentAuditor() {
String loginId = StpUtil.getLoginIdAsString(); if (StpUtil.isLogin()) {
if (loginId != null) { String loginId = StpUtil.getLoginIdAsString();
Optional<User> optional = userRepository.findById(loginId); Optional<User> optional = userRepository.findById(loginId);
if (optional.isPresent()) { if (optional.isPresent()) {
return Optional.of(optional.get().getId()); return Optional.of(optional.get().getId());
......
...@@ -5,6 +5,7 @@ import static com.yiring.auth.domain.permission.Permission.DELETE_SQL; ...@@ -5,6 +5,7 @@ import static com.yiring.auth.domain.permission.Permission.DELETE_SQL;
import static com.yiring.auth.domain.permission.Permission.TABLE_NAME; import static com.yiring.auth.domain.permission.Permission.TABLE_NAME;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import io.hypersistence.utils.hibernate.type.json.JsonType; import io.hypersistence.utils.hibernate.type.json.JsonType;
import jakarta.persistence.*; import jakarta.persistence.*;
...@@ -109,17 +110,33 @@ public class Permission extends BasicEntity implements Serializable { ...@@ -109,17 +110,33 @@ public class Permission extends BasicEntity implements Serializable {
/** /**
* 目录/平台 * 目录/平台
*/ */
DIR, DIR("目录"),
/** /**
* 菜单 * 菜单
*/ */
MENU, MENU("菜单"),
/** /**
* 按钮 * 按钮
*/ */
BUTTON, BUTTON("按钮");
final String name;
Type(String name) {
this.name = name;
}
@JsonCreator
public static Type of(String type) {
for (Type value : values()) {
if (value.name().equalsIgnoreCase(type)) {
return value;
}
}
return null;
}
} }
/** /**
......
...@@ -3,6 +3,8 @@ package com.yiring.common.config; ...@@ -3,6 +3,8 @@ package com.yiring.common.config;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Data; import lombok.Data;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -37,30 +39,7 @@ public class EnvConfig implements Serializable { ...@@ -37,30 +39,7 @@ public class EnvConfig implements Serializable {
boolean prod; boolean prod;
/** /**
* 扩展配置 * 其他配置
*/ */
Extra extra; Map<String, String> props = new HashMap<>();
/**
* 扩展环境配置变量
*/
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@Configuration("env.config.extra")
@ConfigurationProperties(prefix = "env.extra")
public static class Extra implements Serializable {
@Serial
private static final long serialVersionUID = -521508901960998020L;
/**
* 公共用户名
*/
String username;
/**
* 公共密码
*/
String password;
}
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.yiring.common.config; package com.yiring.common.config;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -26,13 +27,17 @@ public class JacksonConfig { ...@@ -26,13 +27,17 @@ public class JacksonConfig {
@Bean @Bean
public ObjectMapper objectMapper() { public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
// 忽略空值 // 忽略空值(序列化)
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 忽略未知字段(反序列化)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// Java 8 Date/Time support // Java 8 Date/Time support
mapper.registerModule(javaTimeModule); mapper.registerModule(javaTimeModule);
// JTS Geometry support // JTS Geometry support
mapper.registerModule(new JtsModule()); mapper.registerModule(new JtsModule());
// feat: add AdminServerModule
// TODO: add AdminServerModule
return mapper; return mapper;
} }
} }
...@@ -96,6 +96,10 @@ public class Commons { ...@@ -96,6 +96,10 @@ public class Commons {
*/ */
public <T> T transform(Object source, Class<T> type, String... ignoreProperties) { public <T> T transform(Object source, Class<T> type, String... ignoreProperties) {
try { try {
if (source == null) {
return null;
}
Constructor<T> declaredConstructor = type.getDeclaredConstructor(); Constructor<T> declaredConstructor = type.getDeclaredConstructor();
// 实例化 // 实例化
T target = declaredConstructor.newInstance(); T target = declaredConstructor.newInstance();
...@@ -138,6 +142,10 @@ public class Commons { ...@@ -138,6 +142,10 @@ public class Commons {
CallbackFunction<S, T> fn, CallbackFunction<S, T> fn,
String... ignoreProperties String... ignoreProperties
) { ) {
if (!notEmpty(list)) {
return Collections.emptyList();
}
try { try {
Constructor<T> declaredConstructor = type.getDeclaredConstructor(); Constructor<T> declaredConstructor = type.getDeclaredConstructor();
......
plugins { plugins {
id 'java' id 'java'
// https://start.spring.io // https://start.spring.io
id 'org.springframework.boot' version '3.0.4' id 'org.springframework.boot' version '3.0.5'
id 'org.graalvm.buildtools.native' version '0.9.18' id 'org.graalvm.buildtools.native' version '0.9.20'
// https://plugins.gradle.org/plugin/io.spring.dependency-management // https://plugins.gradle.org/plugin/io.spring.dependency-management
id 'io.spring.dependency-management' version '1.1.0' id 'io.spring.dependency-management' version '1.1.0'
// https://plugins.gradle.org/plugin/com.diffplug.spotless // https://plugins.gradle.org/plugin/com.diffplug.spotless
id "com.diffplug.spotless" version "6.16.0" id "com.diffplug.spotless" version "6.17.0"
} }
ext { ext {
// Spotless // Spotless
// https://www.npmjs.com/package/prettier // https://www.npmjs.com/package/prettier
prettierVersion = '2.8.4' prettierVersion = '2.8.6'
// https://www.npmjs.com/package/prettier-plugin-java // https://www.npmjs.com/package/prettier-plugin-java
prettierJavaVersion = '2.1.0' prettierJavaVersion = '2.1.0'
...@@ -21,19 +21,19 @@ ext { ...@@ -21,19 +21,19 @@ ext {
springCloudVersion = '2022.0.1' springCloudVersion = '2022.0.1'
// springBootAdminVersion // springBootAdminVersion
// https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-server // https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-server
springBootAdminVersion = '3.0.1' springBootAdminVersion = '3.0.2'
// Dependencies // Dependencies
// https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-openapi3-jakarta-spring-boot-starter // https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-openapi3-jakarta-spring-boot-starter
knife4jOpen3Version = '4.0.0' knife4jOpen3Version = '4.0.0'
// https://mvnrepository.com/artifact/io.swagger/swagger-annotations // https://mvnrepository.com/artifact/io.swagger.core.v3/swagger-annotations
swaggerAnnotationsVersion = '1.6.9' swaggerAnnotationsVersion = '2.2.8'
// https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot3-starter // https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot3-starter
saTokenVersion = '1.34.0' saTokenVersion = '1.34.0'
// https://mvnrepository.com/artifact/cn.hutool/hutool-all // https://mvnrepository.com/artifact/cn.hutool/hutool-all
hutoolVersion = '5.8.15' hutoolVersion = '5.8.15'
// https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 // https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2
fastJsonVersion = '2.0.25' fastJsonVersion = '2.0.26'
// https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core // https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core
xxlJobVersion = '2.3.1' xxlJobVersion = '2.3.1'
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论