feat: 升级Date
This commit is contained in:
parent
c662fa1c65
commit
4dfe06ffb2
@ -5,6 +5,7 @@ import com.flyfish.framework.approval.enums.ApproveAction;
|
|||||||
import com.flyfish.framework.domain.base.Vo;
|
import com.flyfish.framework.domain.base.Vo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ public class ApproveRecordListVo implements Vo<ApproveRecord> {
|
|||||||
private String approver;
|
private String approver;
|
||||||
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
private Date approveTime;
|
private LocalDateTime approveTime;
|
||||||
|
|
||||||
private String action;
|
private String action;
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import com.flyfish.framework.approval.domain.record.ApproveRecord;
|
|||||||
import com.flyfish.framework.domain.base.Vo;
|
import com.flyfish.framework.domain.base.Vo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,7 +25,7 @@ public class ApprovalListVo implements Vo<ApproveRecord> {
|
|||||||
private String dataId;
|
private String dataId;
|
||||||
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
private Date createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
private String creator;
|
private String creator;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package com.flyfish.framework.backup.domain;
|
|||||||
import com.flyfish.framework.annotations.Property;
|
import com.flyfish.framework.annotations.Property;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 版本号实体
|
* 版本号实体
|
||||||
@ -23,5 +23,5 @@ public class Version {
|
|||||||
private String script;
|
private String script;
|
||||||
|
|
||||||
@Property("创建时间")
|
@Property("创建时间")
|
||||||
private Date time;
|
private LocalDateTime time;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.flyfish.framework.backup.scheduler;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.flyfish.framework.backup.domain.Backup;
|
import com.flyfish.framework.backup.domain.Backup;
|
||||||
|
import com.flyfish.framework.context.DateContext;
|
||||||
import com.flyfish.framework.domain.base.DomainService;
|
import com.flyfish.framework.domain.base.DomainService;
|
||||||
import com.flyfish.framework.query.Query;
|
import com.flyfish.framework.query.Query;
|
||||||
import com.flyfish.framework.repository.ReactiveEntityOperations;
|
import com.flyfish.framework.repository.ReactiveEntityOperations;
|
||||||
@ -28,7 +29,7 @@ import java.nio.file.Files;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
@ -82,7 +83,7 @@ public class BackupScheduler {
|
|||||||
String parent = createIfNotExists(backupPath + "/" + code);
|
String parent = createIfNotExists(backupPath + "/" + code);
|
||||||
// 开始备份,先构造一个指示器
|
// 开始备份,先构造一个指示器
|
||||||
Backup backup = new Backup();
|
Backup backup = new Backup();
|
||||||
backup.setCreateTime(new Date());
|
backup.setCreateTime(LocalDateTime.now());
|
||||||
backup.setCreator("系统");
|
backup.setCreator("系统");
|
||||||
backup.setCode(code);
|
backup.setCode(code);
|
||||||
backup.setStatus(Backup.Status.RUNNING);
|
backup.setStatus(Backup.Status.RUNNING);
|
||||||
@ -116,7 +117,7 @@ public class BackupScheduler {
|
|||||||
})
|
})
|
||||||
.then(Mono.defer(() -> {
|
.then(Mono.defer(() -> {
|
||||||
backup.setLog("成功备份");
|
backup.setLog("成功备份");
|
||||||
backup.setPeriod(new Date().getTime() - backup.getCreateTime().getTime());
|
backup.setPeriod(DateContext.distance(backup.getCreateTime(), LocalDateTime.now()));
|
||||||
backup.setStatus(Backup.Status.SUCCESS);
|
backup.setStatus(Backup.Status.SUCCESS);
|
||||||
backup.setSize(DataSize.ofBytes(sizeCounter.get()).toKilobytes() + "KB");
|
backup.setSize(DataSize.ofBytes(sizeCounter.get()).toKilobytes() + "KB");
|
||||||
return operations.save(backup);
|
return operations.save(backup);
|
||||||
@ -126,7 +127,7 @@ public class BackupScheduler {
|
|||||||
}, e -> {
|
}, e -> {
|
||||||
backup.setStatus(Backup.Status.FAILED);
|
backup.setStatus(Backup.Status.FAILED);
|
||||||
backup.setLog(e.getMessage());
|
backup.setLog(e.getMessage());
|
||||||
backup.setPeriod(new Date().getTime() - backup.getCreateTime().getTime());
|
backup.setPeriod(DateContext.distance(backup.getCreateTime(), LocalDateTime.now()));
|
||||||
operations.save(backup).subscribe();
|
operations.save(backup).subscribe();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -5,6 +5,9 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -20,6 +23,7 @@ public class DateContext {
|
|||||||
private static DateContext instance;
|
private static DateContext instance;
|
||||||
private ThreadLocal<DateFormat> formatThreadLocal = new ThreadLocal<>();
|
private ThreadLocal<DateFormat> formatThreadLocal = new ThreadLocal<>();
|
||||||
private ThreadLocal<Map<String, DateFormat>> mapThreadLocal = new ThreadLocal<>();
|
private ThreadLocal<Map<String, DateFormat>> mapThreadLocal = new ThreadLocal<>();
|
||||||
|
private static final ZoneId zoneId = ZoneId.of("Asia/Shanghai");
|
||||||
|
|
||||||
public DateContext() {
|
public DateContext() {
|
||||||
instance = this;
|
instance = this;
|
||||||
@ -29,6 +33,19 @@ public class DateContext {
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LocalDateTime ofMillis(long millis) {
|
||||||
|
Instant instant = Instant.ofEpochMilli(millis);
|
||||||
|
return LocalDateTime.ofInstant(instant, zoneId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long toMillis(LocalDateTime localDateTime) {
|
||||||
|
return localDateTime.atZone(zoneId).toInstant().toEpochMilli();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long distance(LocalDateTime start, LocalDateTime end) {
|
||||||
|
return toMillis(end) - toMillis(start);
|
||||||
|
}
|
||||||
|
|
||||||
public static DateFormat simpleFormat() {
|
public static DateFormat simpleFormat() {
|
||||||
DateFormat format = instance.formatThreadLocal.get();
|
DateFormat format = instance.formatThreadLocal.get();
|
||||||
if (format == null) {
|
if (format == null) {
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
package com.flyfish.framework.query.spi;
|
|
||||||
|
|
||||||
import com.flyfish.framework.query.QueryChain;
|
|
||||||
import com.flyfish.framework.utils.Supportable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询链创建抽象泛型工厂
|
|
||||||
* 基于spi提供实现类,最终返回真正实例化的内容
|
|
||||||
* 根据引入的jar包自动加载,无需手动处理
|
|
||||||
*
|
|
||||||
* @author wangyu
|
|
||||||
*/
|
|
||||||
public interface QueryChainFactory<C extends QueryChain<C, ?>> extends Supportable<Class<?>> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生产适配器
|
|
||||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
|
||||||
*
|
|
||||||
* @return 生产结果
|
|
||||||
*/
|
|
||||||
C produce();
|
|
||||||
}
|
|
@ -8,7 +8,7 @@ import org.springframework.data.annotation.CreatedDate;
|
|||||||
import org.springframework.data.annotation.LastModifiedBy;
|
import org.springframework.data.annotation.LastModifiedBy;
|
||||||
import org.springframework.data.annotation.LastModifiedDate;
|
import org.springframework.data.annotation.LastModifiedDate;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 需要审查的domain(修改和更新指定人)
|
* 需要审查的domain(修改和更新指定人)
|
||||||
@ -24,14 +24,14 @@ public abstract class AuditDomain extends Domain {
|
|||||||
*/
|
*/
|
||||||
@CreatedDate
|
@CreatedDate
|
||||||
@Property(value = "创建日期", readonly = true)
|
@Property(value = "创建日期", readonly = true)
|
||||||
protected Date createTime;
|
protected LocalDateTime createTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改日期
|
* 修改日期
|
||||||
*/
|
*/
|
||||||
@LastModifiedDate
|
@LastModifiedDate
|
||||||
@Property(value = "更新日期", readonly = true)
|
@Property(value = "更新日期", readonly = true)
|
||||||
protected Date modifyTime;
|
protected LocalDateTime modifyTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建者
|
* 创建者
|
||||||
|
@ -6,7 +6,7 @@ import com.flyfish.framework.domain.po.User;
|
|||||||
import com.flyfish.framework.enums.UserStatus;
|
import com.flyfish.framework.enums.UserStatus;
|
||||||
import com.flyfish.framework.enums.UserType;
|
import com.flyfish.framework.enums.UserType;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface IUser {
|
public interface IUser {
|
||||||
@ -51,9 +51,9 @@ public interface IUser {
|
|||||||
|
|
||||||
void setApp(Boolean app);
|
void setApp(Boolean app);
|
||||||
|
|
||||||
Date getValidDate();
|
LocalDateTime getValidDate();
|
||||||
|
|
||||||
void setValidDate(Date validDate);
|
void setValidDate(LocalDateTime validDate);
|
||||||
|
|
||||||
List<Department> getDepartments();
|
List<Department> getDepartments();
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ import org.springframework.data.annotation.Transient;
|
|||||||
import org.springframework.data.mongodb.core.index.Indexed;
|
import org.springframework.data.mongodb.core.index.Indexed;
|
||||||
import org.springframework.data.mongodb.core.mapping.Document;
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -68,7 +69,7 @@ public class User extends AuditDomain implements IUser {
|
|||||||
* 有效期
|
* 有效期
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date validDate;
|
private LocalDateTime validDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 可操作校区
|
* 可操作校区
|
||||||
@ -106,7 +107,7 @@ public class User extends AuditDomain implements IUser {
|
|||||||
/**
|
/**
|
||||||
* 上次登录日期
|
* 上次登录日期
|
||||||
*/
|
*/
|
||||||
private Date lastTime;
|
private LocalDateTime lastTime;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User toUser() {
|
public User toUser() {
|
||||||
|
@ -29,5 +29,10 @@
|
|||||||
<groupId>com.flyfish.framework</groupId>
|
<groupId>com.flyfish.framework</groupId>
|
||||||
<artifactId>flyfish-data-common</artifactId>
|
<artifactId>flyfish-data-common</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
@ -5,9 +5,10 @@ import com.flyfish.framework.r2dbc.operations.R2dbcReactiveEntityOperations;
|
|||||||
import com.flyfish.framework.r2dbc.repository.factory.DefaultReactiveRepositoryFactoryBean;
|
import com.flyfish.framework.r2dbc.repository.factory.DefaultReactiveRepositoryFactoryBean;
|
||||||
import com.flyfish.framework.r2dbc.repository.impl.DefaultReactiveRepositoryImpl;
|
import com.flyfish.framework.r2dbc.repository.impl.DefaultReactiveRepositoryImpl;
|
||||||
import com.flyfish.framework.repository.ReactiveEntityOperations;
|
import com.flyfish.framework.repository.ReactiveEntityOperations;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
|
import org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.data.mapping.callback.EntityCallback;
|
import org.springframework.data.mapping.callback.EntityCallback;
|
||||||
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
|
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
|
||||||
import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
|
import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
|
||||||
@ -23,7 +24,7 @@ import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
|
|||||||
repositoryBaseClass = DefaultReactiveRepositoryImpl.class
|
repositoryBaseClass = DefaultReactiveRepositoryImpl.class
|
||||||
)
|
)
|
||||||
@EnableR2dbcAuditing
|
@EnableR2dbcAuditing
|
||||||
@Configuration
|
@AutoConfiguration(after = R2dbcDataAutoConfiguration.class)
|
||||||
public class R2dbcDataConfig {
|
public class R2dbcDataConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ -3,7 +3,6 @@ package com.flyfish.framework.r2dbc.config.annotations;
|
|||||||
import com.flyfish.framework.r2dbc.repository.factory.DefaultReactiveRepositoryFactoryBean;
|
import com.flyfish.framework.r2dbc.repository.factory.DefaultReactiveRepositoryFactoryBean;
|
||||||
import com.flyfish.framework.r2dbc.repository.impl.DefaultReactiveRepositoryImpl;
|
import com.flyfish.framework.r2dbc.repository.impl.DefaultReactiveRepositoryImpl;
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
|
|
||||||
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
|
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
@ -17,7 +16,6 @@ import java.lang.annotation.*;
|
|||||||
repositoryFactoryBeanClass = DefaultReactiveRepositoryFactoryBean.class,
|
repositoryFactoryBeanClass = DefaultReactiveRepositoryFactoryBean.class,
|
||||||
repositoryBaseClass = DefaultReactiveRepositoryImpl.class
|
repositoryBaseClass = DefaultReactiveRepositoryImpl.class
|
||||||
)
|
)
|
||||||
@EnableR2dbcAuditing
|
|
||||||
@Target({ElementType.TYPE})
|
@Target({ElementType.TYPE})
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Documented
|
@Documented
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.flyfish.framework.r2dbc;
|
||||||
|
|
||||||
|
import com.flyfish.framework.query.Queries;
|
||||||
|
import com.flyfish.framework.r2dbc.config.R2dbcDataConfig;
|
||||||
|
import com.flyfish.framework.r2dbc.config.annotations.EnableR2dbcRepo;
|
||||||
|
import com.flyfish.framework.r2dbc.repository.TestDO;
|
||||||
|
import com.flyfish.framework.r2dbc.repository.TestQO;
|
||||||
|
import com.flyfish.framework.r2dbc.repository.TestRepository;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
@ExtendWith(SpringExtension.class)
|
||||||
|
@SpringBootTest(classes = R2DbcRepositoryTest.class)
|
||||||
|
@EnableR2dbcRepo(basePackages = "com.flyfish.framework.r2dbc.repository")
|
||||||
|
@Import(R2dbcDataConfig.class)
|
||||||
|
public class R2DbcRepositoryTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TestRepository testRepository;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
TestQO qo = new TestQO();
|
||||||
|
qo.setIds(Arrays.asList("1", "2"));
|
||||||
|
testRepository.findAll(qo).subscribe(System.out::println);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.flyfish.framework.r2dbc.repository;
|
||||||
|
|
||||||
|
import com.flyfish.framework.domain.base.AuditDomain;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
|
@Table("test")
|
||||||
|
@Data
|
||||||
|
public class TestDO extends AuditDomain {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.flyfish.framework.r2dbc.repository;
|
||||||
|
|
||||||
|
import com.flyfish.framework.domain.base.NameLikeQo;
|
||||||
|
|
||||||
|
public class TestQO extends NameLikeQo<TestDO> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.flyfish.framework.r2dbc.repository;
|
||||||
|
|
||||||
|
import com.flyfish.framework.repository.DefaultReactiveRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试仓库
|
||||||
|
*/
|
||||||
|
public interface TestRepository extends DefaultReactiveRepository<TestDO> {
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
spring:
|
||||||
|
r2dbc:
|
||||||
|
url: r2dbc:mysql://192.168.33.205:3306/test?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true
|
||||||
|
username: root
|
||||||
|
password: baiewf9XMq5K9Z2LiCXZ
|
@ -6,7 +6,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import org.springframework.data.mongodb.core.mapping.Document;
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
import org.springframework.data.relational.core.mapping.Table;
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志集合
|
* 日志集合
|
||||||
@ -45,10 +45,10 @@ public class Log extends Domain {
|
|||||||
private Long period;
|
private Long period;
|
||||||
|
|
||||||
// 操作时间
|
// 操作时间
|
||||||
private Date startTime;
|
private LocalDateTime startTime;
|
||||||
|
|
||||||
// 完成时间
|
// 完成时间
|
||||||
private Date endTime;
|
private LocalDateTime endTime;
|
||||||
|
|
||||||
// 操作人
|
// 操作人
|
||||||
private String operator;
|
private String operator;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.flyfish.framework.logging.service;
|
package com.flyfish.framework.logging.service;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.flyfish.framework.context.DateContext;
|
||||||
import com.flyfish.framework.logging.config.LoggingTextRegistry;
|
import com.flyfish.framework.logging.config.LoggingTextRegistry;
|
||||||
import com.flyfish.framework.logging.domain.Log;
|
import com.flyfish.framework.logging.domain.Log;
|
||||||
import com.flyfish.framework.logging.domain.LogType;
|
import com.flyfish.framework.logging.domain.LogType;
|
||||||
@ -10,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.beans.factory.DisposableBean;
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
@ -52,8 +52,8 @@ public class LogManager implements DisposableBean {
|
|||||||
log.setOperator(context.getUser());
|
log.setOperator(context.getUser());
|
||||||
log.setSignature(context.getSignature());
|
log.setSignature(context.getSignature());
|
||||||
log.setPeriod(context.getEndTime() - context.getStartTime());
|
log.setPeriod(context.getEndTime() - context.getStartTime());
|
||||||
log.setStartTime(new Date(context.getStartTime()));
|
log.setStartTime(DateContext.ofMillis(context.getStartTime()));
|
||||||
log.setEndTime(new Date(context.getEndTime()));
|
log.setEndTime(DateContext.ofMillis(context.getEndTime()));
|
||||||
// 先不拼接
|
// 先不拼接
|
||||||
log.setUri(null);
|
log.setUri(null);
|
||||||
// 写入日志
|
// 写入日志
|
||||||
|
@ -14,7 +14,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -80,7 +80,7 @@ public class SimpleAuthenticationLogger implements AuthenticationLogger {
|
|||||||
log.setResponse(message);
|
log.setResponse(message);
|
||||||
log.setOperator(Optional.ofNullable(raw).map(Domain::getName).orElse("未知"));
|
log.setOperator(Optional.ofNullable(raw).map(Domain::getName).orElse("未知"));
|
||||||
log.setPeriod(0L);
|
log.setPeriod(0L);
|
||||||
log.setStartTime(new Date());
|
log.setStartTime(LocalDateTime.now());
|
||||||
// 写入日志
|
// 写入日志
|
||||||
return logService.create(log).then();
|
return logService.create(log).then();
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ public class SimpleAuthenticationLogger implements AuthenticationLogger {
|
|||||||
log.setResponse(message);
|
log.setResponse(message);
|
||||||
log.setOperator(user.getName());
|
log.setOperator(user.getName());
|
||||||
log.setPeriod(0L);
|
log.setPeriod(0L);
|
||||||
log.setStartTime(new Date());
|
log.setStartTime(LocalDateTime.now());
|
||||||
// 写入日志
|
// 写入日志
|
||||||
return logService.create(log).then();
|
return logService.create(log).then();
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ import org.springframework.security.web.server.WebFilterExchange;
|
|||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提供对象写入,登录登出审计
|
* 提供对象写入,登录登出审计
|
||||||
@ -39,7 +39,7 @@ public class AuthenticationAuditorImpl extends ResultDataTransformer implements
|
|||||||
User updating = new User();
|
User updating = new User();
|
||||||
updating.setId(details.getId());
|
updating.setId(details.getId());
|
||||||
updating.setErrorCount(0);
|
updating.setErrorCount(0);
|
||||||
updating.setLastTime(new Date());
|
updating.setLastTime(LocalDateTime.now());
|
||||||
return userService.updateSelectiveById(updating).then(authenticationLogger.success(user));
|
return userService.updateSelectiveById(updating).then(authenticationLogger.success(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -77,7 +78,7 @@ public class AdminUserDetails implements UserDetails, IUser, AuthorizedUserDetai
|
|||||||
* 有效期
|
* 有效期
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date validDate;
|
private LocalDateTime validDate;
|
||||||
/**
|
/**
|
||||||
* 可操作校区
|
* 可操作校区
|
||||||
*/
|
*/
|
||||||
@ -139,7 +140,7 @@ public class AdminUserDetails implements UserDetails, IUser, AuthorizedUserDetai
|
|||||||
@Override
|
@Override
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public boolean isCredentialsNonExpired() {
|
public boolean isCredentialsNonExpired() {
|
||||||
return null == validDate || validDate.after(new Date());
|
return null == validDate || validDate.isBefore(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
|
@ -21,7 +21,7 @@ import org.springframework.web.server.ServerWebExchange;
|
|||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.security.Key;
|
import javax.crypto.SecretKey;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -49,7 +49,7 @@ public class TokenProvider implements InitializingBean {
|
|||||||
@Resource
|
@Resource
|
||||||
private JwtProperties jwtProperties;
|
private JwtProperties jwtProperties;
|
||||||
|
|
||||||
private Key key;
|
private SecretKey key;
|
||||||
|
|
||||||
public TokenProvider(JwtProperties jwtProperties) {
|
public TokenProvider(JwtProperties jwtProperties) {
|
||||||
this.remember = jwtProperties.isRemember();
|
this.remember = jwtProperties.isRemember();
|
||||||
@ -134,11 +134,11 @@ public class TokenProvider implements InitializingBean {
|
|||||||
Date validity = new Date(now + duration);
|
Date validity = new Date(now + duration);
|
||||||
|
|
||||||
return Jwts.builder()
|
return Jwts.builder()
|
||||||
.setSubject(authentication.getName())
|
.subject(authentication.getName())
|
||||||
.setId(UUIDUtils.generateShortUuid())
|
.id(UUIDUtils.generateShortUuid())
|
||||||
.claim(AUTHORITIES_KEY, authorities)
|
.claim(AUTHORITIES_KEY, authorities)
|
||||||
.signWith(key, SignatureAlgorithm.HS512)
|
.signWith(key)
|
||||||
.setExpiration(validity)
|
.expiration(validity)
|
||||||
.compact();
|
.compact();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,11 +167,11 @@ public class TokenProvider implements InitializingBean {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public Claims parseToken(String token) {
|
public Claims parseToken(String token) {
|
||||||
return Jwts.parserBuilder()
|
return Jwts.parser()
|
||||||
.setSigningKey(key)
|
.decryptWith(key)
|
||||||
.build()
|
.build()
|
||||||
.parseClaimsJws(token)
|
.parseEncryptedClaims(token)
|
||||||
.getBody();
|
.getPayload();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCacheKey(String jti) {
|
private String getCacheKey(String jti) {
|
||||||
|
4
lombok.config
Normal file
4
lombok.config
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
config.stopBubbling = true
|
||||||
|
lombok.tostring.callsuper=CALL
|
||||||
|
lombok.equalsandhashcode.callsuper=CALL
|
||||||
|
lombok.accessors.chain=false
|
2
pom.xml
2
pom.xml
@ -25,7 +25,7 @@
|
|||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<jasypt.version>3.0.3</jasypt.version>
|
<jasypt.version>3.0.3</jasypt.version>
|
||||||
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
|
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
|
||||||
<jjwt.version>0.11.0</jjwt.version>
|
<jjwt.version>0.12.6</jjwt.version>
|
||||||
<reflection.version>0.10.2</reflection.version>
|
<reflection.version>0.10.2</reflection.version>
|
||||||
<r2dbc-mysql.version>1.1.3</r2dbc-mysql.version>
|
<r2dbc-mysql.version>1.1.3</r2dbc-mysql.version>
|
||||||
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user