Commit 632a132a6a9365c3a852cc6a3a6759fe3fc4f05d

Authored by xingyu4j
1 parent 2c1419fb

refactor: Date ==> LocalDateTime

Showing 324 changed files with 1137 additions and 997 deletions
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java
1 1 package cn.iocoder.yudao.framework.common.util.date;
2 2  
3 3 import cn.hutool.core.date.DateUtil;
  4 +import cn.hutool.core.date.LocalDateTimeUtil;
4 5  
5 6 import java.time.Duration;
  7 +import java.time.Instant;
  8 +import java.time.LocalDateTime;
  9 +import java.time.ZoneId;
  10 +import java.time.ZonedDateTime;
  11 +import java.time.temporal.ChronoUnit;
6 12 import java.util.Calendar;
7 13 import java.util.Date;
8 14  
... ... @@ -25,6 +31,22 @@ public class DateUtils {
25 31  
26 32 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
27 33  
  34 + public static Date localDateTimeToDate(LocalDateTime date){
  35 + // 将此日期时间与时区相结合以创建 ZonedDateTime
  36 + ZonedDateTime zonedDateTime = date.atZone(ZoneId.systemDefault());
  37 + // 本地时间线LocalDateTime到即时时间线Instant时间戳
  38 + Instant instant = zonedDateTime.toInstant();
  39 + // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
  40 + return Date.from(instant);
  41 + }
  42 +
  43 + public static LocalDateTime dateToLocalDateTime(Date date){
  44 + // 转为时间戳
  45 + Instant instant = date.toInstant();
  46 + // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
  47 + return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  48 + }
  49 +
28 50 public static Date addTime(Duration duration) {
29 51 return new Date(System.currentTimeMillis() + duration.toMillis());
30 52 }
... ... @@ -33,6 +55,11 @@ public class DateUtils {
33 55 return System.currentTimeMillis() > time.getTime();
34 56 }
35 57  
  58 + public static boolean isExpired(LocalDateTime time) {
  59 + LocalDateTime now = LocalDateTime.now();
  60 + return now.isAfter(time);
  61 + }
  62 +
36 63 public static long diff(Date endTime, Date startTime) {
37 64 return endTime.getTime() - startTime.getTime();
38 65 }
... ... @@ -40,24 +67,28 @@ public class DateUtils {
40 67 /**
41 68 * 创建指定时间
42 69 *
43   - * @param year 年
44   - * @param mouth 月
45   - * @param day 日
  70 + * @param year 年
  71 + * @param mouth 月
  72 + * @param day 日
46 73 * @return 指定时间
47 74 */
48 75 public static Date buildTime(int year, int mouth, int day) {
49 76 return buildTime(year, mouth, day, 0, 0, 0);
50 77 }
51 78  
  79 + public static LocalDateTime buildLocalDateTime(int year, int mouth, int day) {
  80 + return buildLocalDateTime(year, mouth, day, 0, 0, 0);
  81 + }
  82 +
52 83 /**
53 84 * 创建指定时间
54 85 *
55   - * @param year 年
56   - * @param mouth 月
57   - * @param day 日
58   - * @param hour 小时
59   - * @param minute 分钟
60   - * @param second 秒
  86 + * @param year 年
  87 + * @param mouth 月
  88 + * @param day 日
  89 + * @param hour 小时
  90 + * @param minute 分钟
  91 + * @param second 秒
61 92 * @return 指定时间
62 93 */
63 94 public static Date buildTime(int year, int mouth, int day,
... ... @@ -73,6 +104,19 @@ public class DateUtils {
73 104 return calendar.getTime();
74 105 }
75 106  
  107 + public static LocalDateTime buildLocalDateTime(int year, int mouth, int day,
  108 + int hour, int minute, int second) {
  109 + Calendar calendar = Calendar.getInstance();
  110 + calendar.set(Calendar.YEAR, year);
  111 + calendar.set(Calendar.MONTH, mouth - 1);
  112 + calendar.set(Calendar.DAY_OF_MONTH, day);
  113 + calendar.set(Calendar.HOUR_OF_DAY, hour);
  114 + calendar.set(Calendar.MINUTE, minute);
  115 + calendar.set(Calendar.SECOND, second);
  116 + calendar.set(Calendar.MILLISECOND, 0); // 一般情况下,都是 0 毫秒
  117 + return dateToLocalDateTime(calendar.getTime());
  118 + }
  119 +
76 120 public static Date max(Date a, Date b) {
77 121 if (a == null) {
78 122 return b;
... ... @@ -83,6 +127,16 @@ public class DateUtils {
83 127 return a.compareTo(b) > 0 ? a : b;
84 128 }
85 129  
  130 + public static LocalDateTime maxLocalDateTime(LocalDateTime a, LocalDateTime b) {
  131 + if (a == null) {
  132 + return b;
  133 + }
  134 + if (b == null) {
  135 + return a;
  136 + }
  137 + return a.compareTo(b) > 0 ? a : b;
  138 + }
  139 +
86 140 public static boolean beforeNow(Date date) {
87 141 return date.getTime() < System.currentTimeMillis();
88 142 }
... ... @@ -91,6 +145,10 @@ public class DateUtils {
91 145 return date.getTime() >= System.currentTimeMillis();
92 146 }
93 147  
  148 + public static boolean afterNow(LocalDateTime localDateTime) {
  149 + return localDateTime.isAfter(LocalDateTime.now());
  150 + }
  151 +
94 152 /**
95 153 * 计算当期时间相差的日期
96 154 *
... ... @@ -135,4 +193,14 @@ public class DateUtils {
135 193 return DateUtil.isSameDay(date, new Date());
136 194 }
137 195  
  196 + /**
  197 + * 是否今天
  198 + *
  199 + * @param date 日期
  200 + * @return 是否
  201 + */
  202 + public static boolean isToday(LocalDateTime date) {
  203 + return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now());
  204 + }
  205 +
138 206 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
... ... @@ -10,7 +10,7 @@ import org.springframework.boot.context.event.ApplicationReadyEvent;
10 10 import org.springframework.context.event.EventListener;
11 11 import org.springframework.scheduling.annotation.Scheduled;
12 12  
13   -import java.util.Date;
  13 +import java.time.LocalDateTime;
14 14 import java.util.List;
15 15  
16 16 /**
... ... @@ -41,7 +41,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
41 41 /**
42 42 * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新
43 43 */
44   - private Date maxUpdateTime;
  44 + private LocalDateTime maxUpdateTime;
45 45  
46 46 @EventListener(ApplicationReadyEvent.class)
47 47 public void loadErrorCodes() {
... ... @@ -66,7 +66,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
66 66 // 写入到错误码的缓存
67 67 putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage());
68 68 // 记录下更新时间,方便增量更新
69   - maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime());
  69 + maxUpdateTime = DateUtils.maxLocalDateTime(maxUpdateTime, errorCodeRespDTO.getUpdateTime());
70 70 });
71 71 }
72 72  
... ...
yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java
1 1 package cn.iocoder.yudao.framework.operatelog.core.aop;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.exceptions.ExceptionUtil;
4 5 import cn.hutool.core.util.ArrayUtil;
5 6 import cn.hutool.core.util.StrUtil;
... ... @@ -32,6 +33,7 @@ import javax.servlet.http.HttpServletRequest;
32 33 import javax.servlet.http.HttpServletResponse;
33 34 import java.lang.annotation.Annotation;
34 35 import java.lang.reflect.Array;
  36 +import java.time.LocalDateTime;
35 37 import java.util.*;
36 38 import java.util.function.Predicate;
37 39 import java.util.stream.IntStream;
... ... @@ -94,7 +96,7 @@ public class OperateLogAspect {
94 96 }
95 97  
96 98 // 记录开始时间
97   - Date startTime = new Date();
  99 + LocalDateTime startTime = LocalDateTime.now();
98 100 try {
99 101 // 执行原有方法
100 102 Object result = joinPoint.proceed();
... ... @@ -128,7 +130,7 @@ public class OperateLogAspect {
128 130 private void log(ProceedingJoinPoint joinPoint,
129 131 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog,
130 132 ApiOperation apiOperation,
131   - Date startTime, Object result, Throwable exception) {
  133 + LocalDateTime startTime, Object result, Throwable exception) {
132 134 try {
133 135 // 判断不记录的情况
134 136 if (!isLogEnable(joinPoint, operateLog)) {
... ... @@ -145,7 +147,7 @@ public class OperateLogAspect {
145 147 private void log0(ProceedingJoinPoint joinPoint,
146 148 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog,
147 149 ApiOperation apiOperation,
148   - Date startTime, Object result, Throwable exception) {
  150 + LocalDateTime startTime, Object result, Throwable exception) {
149 151 OperateLog operateLogObj = new OperateLog();
150 152 // 补全通用字段
151 153 operateLogObj.setTraceId(TracerUtils.getTraceId());
... ... @@ -226,7 +228,7 @@ public class OperateLogAspect {
226 228 private static void fillMethodFields(OperateLog operateLogObj,
227 229 ProceedingJoinPoint joinPoint,
228 230 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog,
229   - Date startTime, Object result, Throwable exception) {
  231 + LocalDateTime startTime, Object result, Throwable exception) {
230 232 MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
231 233 operateLogObj.setJavaMethod(methodSignature.toString());
232 234 if (operateLog == null || operateLog.logArgs()) {
... ... @@ -235,7 +237,7 @@ public class OperateLogAspect {
235 237 if (operateLog == null || operateLog.logResultData()) {
236 238 operateLogObj.setResultData(obtainResultData(result));
237 239 }
238   - operateLogObj.setDuration((int) (System.currentTimeMillis() - startTime.getTime()));
  240 + operateLogObj.setDuration((int) (LocalDateTimeUtil.between(startTime, LocalDateTime.now()).toMillis()));
239 241 // (正常)处理 resultCode 和 resultMsg 字段
240 242 if (result instanceof CommonResult) {
241 243 CommonResult<?> commonResult = (CommonResult<?>) result;
... ...
yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/service/OperateLog.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.operatelog.core.service;
2 2  
3 3 import lombok.Data;
4 4  
5   -import java.util.Date;
  5 +import java.time.LocalDateTime;
6 6 import java.util.Map;
7 7  
8 8 /**
... ... @@ -85,7 +85,7 @@ public class OperateLog {
85 85 /**
86 86 * 开始时间
87 87 */
88   - private Date startTime;
  88 + private LocalDateTime startTime;
89 89  
90 90 /**
91 91 * 执行时长,单位:毫秒
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderNotifyRespDTO.java
... ... @@ -5,7 +5,7 @@ import lombok.Builder;
5 5 import lombok.Data;
6 6 import lombok.NoArgsConstructor;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 /**
11 11 * 支付通知 Response DTO
... ... @@ -33,7 +33,7 @@ public class PayOrderNotifyRespDTO {
33 33 /**
34 34 * 支付成功时间
35 35 */
36   - private Date successTime;
  36 + private LocalDateTime successTime;
37 37  
38 38 /**
39 39 * 通知的原始数据
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderUnifiedReqDTO.java
... ... @@ -7,7 +7,7 @@ import org.hibernate.validator.constraints.URL;
7 7 import javax.validation.constraints.DecimalMin;
8 8 import javax.validation.constraints.NotEmpty;
9 9 import javax.validation.constraints.NotNull;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.Map;
12 12  
13 13 /**
... ... @@ -68,7 +68,7 @@ public class PayOrderUnifiedReqDTO {
68 68 * 支付过期时间
69 69 */
70 70 @NotNull(message = "支付过期时间不能为空")
71   - private Date expireTime;
  71 + private LocalDateTime expireTime;
72 72  
73 73 // ========== 拓展参数 ==========
74 74 /**
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayRefundNotifyDTO.java
... ... @@ -5,7 +5,7 @@ import lombok.Builder;
5 5 import lombok.Data;
6 6 import lombok.ToString;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 /**
11 11 * 从渠道返回数据中解析得到的支付退款通知的Notify DTO
... ... @@ -57,7 +57,7 @@ public class PayRefundNotifyDTO {
57 57 /**
58 58 * 退款成功时间
59 59 */
60   - private Date refundSuccessTime;
  60 + private LocalDateTime refundSuccessTime;
61 61  
62 62  
63 63 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AbstractAlipayClient.java
1 1 package cn.iocoder.yudao.framework.pay.core.client.impl.alipay;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4   -import cn.hutool.core.date.DateUtil;
5   -import cn.hutool.http.HttpUtil;
  4 +import cn.hutool.core.date.LocalDateTimeUtil;
6 5 import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping;
7 6 import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult;
8 7 import cn.iocoder.yudao.framework.pay.core.client.dto.*;
... ... @@ -61,7 +60,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient&lt;AlipayPayCl
61 60 return PayOrderNotifyRespDTO.builder().orderExtensionNo(params.get("out_trade_no"))
62 61 .channelOrderNo(params.get("trade_no")).channelUserId(params.get("seller_id"))
63 62 .tradeStatus(params.get("trade_status"))
64   - .successTime(DateUtil.parse(params.get("notify_time"), "yyyy-MM-dd HH:mm:ss"))
  63 + .successTime(LocalDateTimeUtil.parse(params.get("notify_time"), "yyyy-MM-dd HH:mm:ss"))
65 64 .data(data.getBody()).build();
66 65 }
67 66  
... ... @@ -72,7 +71,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient&lt;AlipayPayCl
72 71 .tradeNo(params.get("out_trade_no"))
73 72 .reqNo(params.get("out_biz_no"))
74 73 .status(PayNotifyRefundStatusEnum.SUCCESS)
75   - .refundSuccessTime(DateUtil.parse(params.get("gmt_refund"), "yyyy-MM-dd HH:mm:ss"))
  74 + .refundSuccessTime(LocalDateTimeUtil.parse(params.get("gmt_refund"), "yyyy-MM-dd HH:mm:ss"))
76 75 .build();
77 76 return notifyDTO;
78 77 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXLitePayClient.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.date.DateUtil;
  5 +import cn.hutool.core.date.LocalDateTimeUtil;
5 6 import cn.hutool.core.lang.Assert;
6 7 import cn.hutool.core.map.MapUtil;
7 8 import cn.hutool.core.util.StrUtil;
... ... @@ -167,7 +168,7 @@ public class WXLitePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
167 168 .builder()
168 169 .orderExtensionNo(result.getOutTradeNo())
169 170 .channelOrderNo(result.getTradeState())
170   - .successTime(DateUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
  171 + .successTime(LocalDateTimeUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
171 172 .data(data.getBody())
172 173 .build();
173 174 }
... ... @@ -181,7 +182,7 @@ public class WXLitePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
181 182 .orderExtensionNo(notifyResult.getOutTradeNo())
182 183 .channelOrderNo(notifyResult.getTransactionId())
183 184 .channelUserId(notifyResult.getOpenid())
184   - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
  185 + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
185 186 .data(data.getBody())
186 187 .build();
187 188  
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXNativePayClient.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.date.DateUtil;
  5 +import cn.hutool.core.date.LocalDateTimeUtil;
5 6 import cn.hutool.core.lang.Assert;
6 7 import cn.hutool.core.util.StrUtil;
7 8 import cn.iocoder.yudao.framework.common.util.io.FileUtils;
... ... @@ -150,7 +151,7 @@ public class WXNativePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
150 151 .builder()
151 152 .orderExtensionNo(result.getOutTradeNo())
152 153 .channelOrderNo(result.getTradeState())
153   - .successTime(DateUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
  154 + .successTime(LocalDateTimeUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
154 155 .data(data.getBody())
155 156 .build();
156 157 }
... ... @@ -164,7 +165,7 @@ public class WXNativePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
164 165 .orderExtensionNo(notifyResult.getOutTradeNo())
165 166 .channelOrderNo(notifyResult.getTransactionId())
166 167 .channelUserId(notifyResult.getOpenid())
167   - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
  168 + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
168 169 .data(data.getBody())
169 170 .build();
170 171  
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPubPayClient.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.date.DateUtil;
  5 +import cn.hutool.core.date.LocalDateTimeUtil;
5 6 import cn.hutool.core.lang.Assert;
6 7 import cn.hutool.core.map.MapUtil;
7 8 import cn.hutool.core.util.StrUtil;
... ... @@ -161,7 +162,7 @@ public class WXPubPayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
161 162 .builder()
162 163 .orderExtensionNo(result.getOutTradeNo())
163 164 .channelOrderNo(result.getTradeState())
164   - .successTime(DateUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
  165 + .successTime(LocalDateTimeUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
165 166 .data(data.getBody())
166 167 .build();
167 168 }
... ... @@ -175,7 +176,7 @@ public class WXPubPayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
175 176 .orderExtensionNo(notifyResult.getOutTradeNo())
176 177 .channelOrderNo(notifyResult.getTransactionId())
177 178 .channelUserId(notifyResult.getOpenid())
178   - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
  179 + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
179 180 .data(data.getBody())
180 181 .build();
181 182  
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/dto/SmsReceiveRespDTO.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.sms.core.client.dto;
2 2  
3 3 import lombok.Data;
4 4  
5   -import java.util.Date;
  5 +import java.time.LocalDateTime;
6 6  
7 7 /**
8 8 * 消息接收 Response DTO
... ... @@ -32,7 +32,7 @@ public class SmsReceiveRespDTO {
32 32 /**
33 33 * 用户接收时间
34 34 */
35   - private Date receiveTime;
  35 + private LocalDateTime receiveTime;
36 36  
37 37 /**
38 38 * 短信 API 发送返回的序号
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/aliyun/AliyunSmsClient.java
... ... @@ -28,7 +28,7 @@ import com.google.common.annotations.VisibleForTesting;
28 28 import lombok.Data;
29 29 import lombok.extern.slf4j.Slf4j;
30 30  
31   -import java.util.Date;
  31 +import java.time.LocalDateTime;
32 32 import java.util.List;
33 33 import java.util.Objects;
34 34 import java.util.function.Function;
... ... @@ -166,13 +166,13 @@ public class AliyunSmsClient extends AbstractSmsClient {
166 166 */
167 167 @JsonProperty("send_time")
168 168 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
169   - private Date sendTime;
  169 + private LocalDateTime sendTime;
170 170 /**
171 171 * 状态报告时间
172 172 */
173 173 @JsonProperty("report_time")
174 174 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
175   - private Date reportTime;
  175 + private LocalDateTime reportTime;
176 176 /**
177 177 * 是否接收成功
178 178 */
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/tencent/TencentSmsClient.java
... ... @@ -22,7 +22,7 @@ import com.tencentcloudapi.sms.v20210111.SmsClient;
22 22 import com.tencentcloudapi.sms.v20210111.models.*;
23 23 import lombok.Data;
24 24  
25   -import java.util.Date;
  25 +import java.time.LocalDateTime;
26 26 import java.util.List;
27 27 import java.util.function.Function;
28 28 import java.util.function.Supplier;
... ... @@ -240,7 +240,7 @@ public class TencentSmsClient extends AbstractSmsClient {
240 240 */
241 241 @JsonProperty("user_receive_time")
242 242 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
243   - private Date receiveTime;
  243 + private LocalDateTime receiveTime;
244 244  
245 245 /**
246 246 * 国家(或地区)码
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClient.java
... ... @@ -23,6 +23,7 @@ import com.yunpian.sdk.model.Template;
23 23 import lombok.Data;
24 24 import lombok.extern.slf4j.Slf4j;
25 25  
  26 +import java.time.LocalDateTime;
26 27 import java.util.*;
27 28 import java.util.function.Function;
28 29 import java.util.function.Supplier;
... ... @@ -198,7 +199,7 @@ public class YunpianSmsClient extends AbstractSmsClient {
198 199 */
199 200 @JsonProperty("user_receive_time")
200 201 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
201   - private Date userReceiveTime;
  202 + private LocalDateTime userReceiveTime;
202 203  
203 204 }
204 205  
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/test/java/cn/iocoder/yudao/framework/sms/core/client/impl/aliyun/AliyunSmsClientTest.java
... ... @@ -125,7 +125,7 @@ public class AliyunSmsClientTest extends BaseMockitoUnitTest {
125 125 assertEquals("DELIVERED", statuses.get(0).getErrorCode());
126 126 assertEquals("用户接收成功", statuses.get(0).getErrorMsg());
127 127 assertEquals("13900000001", statuses.get(0).getMobile());
128   - assertEquals(DateUtils.buildTime(2017, 2, 2, 22, 23, 24), statuses.get(0).getReceiveTime());
  128 + assertEquals(DateUtils.buildLocalDateTime(2017, 2, 2, 22, 23, 24), statuses.get(0).getReceiveTime());
129 129 assertEquals("12345", statuses.get(0).getSerialNo());
130 130 assertEquals(67890L, statuses.get(0).getLogId());
131 131 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/test/java/cn/iocoder/yudao/framework/sms/core/client/impl/tencent/TencentSmsClientTest.java
... ... @@ -146,7 +146,7 @@ public class TencentSmsClientTest extends BaseMockitoUnitTest {
146 146 assertEquals("DELIVRD", statuses.get(0).getErrorCode());
147 147 assertEquals("用户短信送达成功", statuses.get(0).getErrorMsg());
148 148 assertEquals("13900000001", statuses.get(0).getMobile());
149   - assertEquals(DateUtils.buildTime(2015, 10, 17, 8, 3, 4), statuses.get(0).getReceiveTime());
  149 + assertEquals(DateUtils.buildLocalDateTime(2015, 10, 17, 8, 3, 4), statuses.get(0).getReceiveTime());
150 150 assertEquals("12345", statuses.get(0).getSerialNo());
151 151 assertEquals(67890L, statuses.get(0).getLogId());
152 152 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-sms/src/test/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClientTest.java
... ... @@ -115,7 +115,7 @@ public class YunpianSmsClientTest extends BaseMockitoUnitTest {
115 115 assertEquals("", statuses.get(0).getErrorCode());
116 116 assertNull(statuses.get(0).getErrorMsg());
117 117 assertEquals("15205201314", statuses.get(0).getMobile());
118   - assertEquals(DateUtils.buildTime(2014, 3, 17, 22, 55, 21), statuses.get(0).getReceiveTime());
  118 + assertEquals(DateUtils.buildLocalDateTime(2014, 3, 17, 22, 55, 21), statuses.get(0).getReceiveTime());
119 119 assertEquals("9527", statuses.get(0).getSerialNo());
120 120 assertEquals(1024L, statuses.get(0).getLogId());
121 121 }
... ...
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/ConfigFrameworkDAO.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apollo.internals;
2 2  
3 3 import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO;
4 4  
5   -import java.util.Date;
  5 +import java.time.LocalDateTime;
6 6 import java.util.List;
7 7  
8 8 /**
... ... @@ -20,7 +20,7 @@ public interface ConfigFrameworkDAO {
20 20 * @param maxUpdateTime 最大更新时间
21 21 * @return 是否存在
22 22 */
23   - int selectCountByUpdateTimeGt(Date maxUpdateTime);
  23 + int selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
24 24  
25 25 /**
26 26 * 查询配置列表
... ...
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java
... ... @@ -18,8 +18,8 @@ import lombok.SneakyThrows;
18 18 import lombok.extern.slf4j.Slf4j;
19 19  
20 20 import java.lang.reflect.Constructor;
  21 +import java.time.LocalDateTime;
21 22 import java.util.Comparator;
22   -import java.util.Date;
23 23 import java.util.List;
24 24 import java.util.Properties;
25 25 import java.util.concurrent.Executors;
... ... @@ -48,7 +48,7 @@ public class DBConfigRepository extends AbstractConfigRepository {
48 48 /**
49 49 * 缓存配置的最大更新时间,用于后续的增量轮询,判断是否有更新
50 50 */
51   - private volatile Date maxUpdateTime;
  51 + private volatile LocalDateTime maxUpdateTime;
52 52  
53 53 /**
54 54 * 配置读取 DAO
... ... @@ -166,7 +166,7 @@ public class DBConfigRepository extends AbstractConfigRepository {
166 166 * @param maxUpdateTime 当前配置的最大更新时间
167 167 * @return 配置列表
168 168 */
169   - private List<ConfigRespDTO> loadConfigIfUpdate(Date maxUpdateTime) {
  169 + private List<ConfigRespDTO> loadConfigIfUpdate(LocalDateTime maxUpdateTime) {
170 170 // 第一步,判断是否要更新。
171 171 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
172 172 log.info("[loadConfigIfUpdate][首次加载全量配置]");
... ...
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/dto/ConfigRespDTO.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apollo.internals.dto;
2 2  
3 3 import lombok.Data;
4 4  
5   -import java.util.Date;
  5 +import java.time.LocalDateTime;
6 6  
7 7 /**
8 8 * 配置 Response DTO
... ... @@ -28,6 +28,6 @@ public class ConfigRespDTO {
28 28 /**
29 29 * 更新时间
30 30 */
31   - private Date updateTime;
  31 + private LocalDateTime updateTime;
32 32  
33 33 }
... ...
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/handler/JobHandlerInvoker.java
1 1 package cn.iocoder.yudao.framework.quartz.core.handler;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.lang.Assert;
4 5 import cn.hutool.core.thread.ThreadUtil;
5 6 import cn.iocoder.yudao.framework.quartz.core.enums.JobDataKeyEnum;
... ... @@ -13,10 +14,10 @@ import org.springframework.context.ApplicationContext;
13 14 import org.springframework.scheduling.quartz.QuartzJobBean;
14 15  
15 16 import javax.annotation.Resource;
16   -import java.util.Date;
  17 +import java.time.LocalDateTime;
  18 +import java.time.temporal.ChronoUnit;
17 19  
18 20 import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage;
19   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.diff;
20 21  
21 22 /**
22 23 * 基础 Job 调用者,负责调用 {@link JobHandler#execute(String)} 执行任务
... ... @@ -46,7 +47,7 @@ public class JobHandlerInvoker extends QuartzJobBean {
46 47  
47 48 // 第二步,执行任务
48 49 Long jobLogId = null;
49   - Date startTime = new Date();
  50 + LocalDateTime startTime = LocalDateTime.now();
50 51 String data = null;
51 52 Throwable exception = null;
52 53 try {
... ... @@ -73,9 +74,9 @@ public class JobHandlerInvoker extends QuartzJobBean {
73 74 return jobHandler.execute(jobHandlerParam);
74 75 }
75 76  
76   - private void updateJobLogResultAsync(Long jobLogId, Date startTime, String data, Throwable exception,
  77 + private void updateJobLogResultAsync(Long jobLogId, LocalDateTime startTime, String data, Throwable exception,
77 78 JobExecutionContext executionContext) {
78   - Date endTime = new Date();
  79 + LocalDateTime endTime = LocalDateTime.now();
79 80 // 处理是否成功
80 81 boolean success = exception == null;
81 82 if (!success) {
... ... @@ -83,7 +84,7 @@ public class JobHandlerInvoker extends QuartzJobBean {
83 84 }
84 85 // 更新日志
85 86 try {
86   - jobLogFrameworkService.updateJobLogResultAsync(jobLogId, endTime, (int) diff(endTime, startTime), success, data);
  87 + jobLogFrameworkService.updateJobLogResultAsync(jobLogId, endTime, (int) LocalDateTimeUtil.between(startTime, endTime).toMillis(), success, data);
87 88 } catch (Exception ex) {
88 89 log.error("[executeInternal][Job({}) logId({}) 记录执行日志失败({}/{})]",
89 90 executionContext.getJobDetail().getKey(), jobLogId, success, data);
... ...
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/service/JobLogFrameworkService.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.quartz.core.service;
2 2  
3 3 import javax.validation.constraints.NotEmpty;
4 4 import javax.validation.constraints.NotNull;
5   -import java.util.Date;
  5 +import java.time.LocalDateTime;
6 6  
7 7 /**
8 8 * Job 日志 Framework Service 接口
... ... @@ -22,7 +22,7 @@ public interface JobLogFrameworkService {
22 22 * @return Job 日志的编号
23 23 */
24 24 Long createJobLog(@NotNull(message = "任务编号不能为空") Long jobId,
25   - @NotNull(message = "开始时间") Date beginTime,
  25 + @NotNull(message = "开始时间") LocalDateTime beginTime,
26 26 @NotEmpty(message = "Job 处理器的名字不能为空") String jobHandlerName,
27 27 String jobHandlerParam,
28 28 @NotNull(message = "第几次执行不能为空") Integer executeIndex);
... ... @@ -37,7 +37,7 @@ public interface JobLogFrameworkService {
37 37 * @param result 成功数据
38 38 */
39 39 void updateJobLogResultAsync(@NotNull(message = "日志编号不能为空") Long logId,
40   - @NotNull(message = "结束时间不能为空") Date endTime,
  40 + @NotNull(message = "结束时间不能为空") LocalDateTime endTime,
41 41 @NotNull(message = "运行时长不能为空") Integer duration,
42 42 boolean success, String result);
43 43  
... ...
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/util/CronUtils.java
1 1 package cn.iocoder.yudao.framework.quartz.core.util;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import org.quartz.CronExpression;
4 5  
5 6 import java.text.ParseException;
  7 +import java.time.LocalDateTime;
6 8 import java.util.ArrayList;
7 9 import java.util.Date;
8 10 import java.util.List;
... ... @@ -31,7 +33,7 @@ public class CronUtils {
31 33 * @param n 数量
32 34 * @return 满足条件的执行时间
33 35 */
34   - public static List<Date> getNextTimes(String cronExpression, int n) {
  36 + public static List<LocalDateTime> getNextTimes(String cronExpression, int n) {
35 37 // 获得 CronExpression 对象
36 38 CronExpression cron;
37 39 try {
... ... @@ -41,10 +43,10 @@ public class CronUtils {
41 43 }
42 44 // 从当前开始计算,n 个满足条件的
43 45 Date now = new Date();
44   - List<Date> nextTimes = new ArrayList<>(n);
  46 + List<LocalDateTime> nextTimes = new ArrayList<>(n);
45 47 for (int i = 0; i < n; i++) {
46 48 Date nextTime = cron.getNextValidTimeAfter(now);
47   - nextTimes.add(nextTime);
  49 + nextTimes.add(LocalDateTimeUtil.of(nextTime));
48 50 // 切换现在,为下一个触发时间;
49 51 now = nextTime;
50 52 }
... ...
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import org.apache.ibatis.type.JdbcType;
8 8  
9 9 import java.io.Serializable;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 /**
13 13 * 基础实体对象
... ... @@ -21,12 +21,12 @@ public abstract class BaseDO implements Serializable {
21 21 * 创建时间
22 22 */
23 23 @TableField(fill = FieldFill.INSERT)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25 /**
26 26 * 最后更新时间
27 27 */
28 28 @TableField(fill = FieldFill.INSERT_UPDATE)
29   - private Date updateTime;
  29 + private LocalDateTime updateTime;
30 30 /**
31 31 * 创建者,目前使用 SysUser 的 id 编号
32 32 *
... ...
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/handler/DefaultDBFieldHandler.java
... ... @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
5 5 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
6 6 import org.apache.ibatis.reflection.MetaObject;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9 import java.util.Objects;
10 10  
11 11 /**
... ... @@ -22,7 +22,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
22 22 if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof BaseDO) {
23 23 BaseDO baseDO = (BaseDO) metaObject.getOriginalObject();
24 24  
25   - Date current = new Date();
  25 + LocalDateTime current = LocalDateTime.now();
26 26 // 创建时间为空,则以当前时间为插入时间
27 27 if (Objects.isNull(baseDO.getCreateTime())) {
28 28 baseDO.setCreateTime(current);
... ... @@ -49,7 +49,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
49 49 // 更新时间为空,则以当前时间为更新时间
50 50 Object modifyTime = getFieldValByName("updateTime", metaObject);
51 51 if (Objects.isNull(modifyTime)) {
52   - setFieldValByName("updateTime", new Date(), metaObject);
  52 + setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
53 53 }
54 54  
55 55 // 当前登录用户不为空,更新人为空,则当前登录用户为更新人
... ...
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
1 1 package cn.iocoder.yudao.framework.test.core.util;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.util.ArrayUtil;
4 5 import cn.hutool.core.util.RandomUtil;
5 6 import cn.hutool.core.util.StrUtil;
... ... @@ -8,6 +9,7 @@ import uk.co.jemos.podam.api.PodamFactory;
8 9 import uk.co.jemos.podam.api.PodamFactoryImpl;
9 10  
10 11 import java.lang.reflect.Type;
  12 +import java.time.LocalDateTime;
11 13 import java.util.Arrays;
12 14 import java.util.Date;
13 15 import java.util.List;
... ... @@ -76,6 +78,10 @@ public class RandomUtils {
76 78 return RandomUtil.randomDay(0, RANDOM_DATE_MAX);
77 79 }
78 80  
  81 + public static LocalDateTime randomLocalDateTime() {
  82 + return LocalDateTimeUtil.of(randomDate());
  83 + }
  84 +
79 85 public static Short randomShort() {
80 86 return (short) RandomUtil.randomInt(0, Short.MAX_VALUE);
81 87 }
... ...
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java
1 1 package cn.iocoder.yudao.framework.apilog.core.filter;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.exceptions.ExceptionUtil;
4 5 import cn.hutool.core.map.MapUtil;
5 6 import cn.hutool.extra.servlet.ServletUtil;
... ... @@ -7,7 +8,6 @@ import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLog;
7 8 import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService;
8 9 import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
9 10 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
10   -import cn.iocoder.yudao.framework.common.util.date.DateUtils;
11 11 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
12 12 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
13 13 import cn.iocoder.yudao.framework.web.config.WebProperties;
... ... @@ -20,7 +20,8 @@ import javax.servlet.ServletException;
20 20 import javax.servlet.http.HttpServletRequest;
21 21 import javax.servlet.http.HttpServletResponse;
22 22 import java.io.IOException;
23   -import java.util.Date;
  23 +import java.time.LocalDateTime;
  24 +import java.time.temporal.ChronoUnit;
24 25 import java.util.Map;
25 26  
26 27 import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString;
... ... @@ -47,7 +48,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
47 48 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
48 49 throws ServletException, IOException {
49 50 // 获得开始时间
50   - Date beginTim = new Date();
  51 + LocalDateTime beginTime = LocalDateTime.now();
51 52 // 提前获得参数,避免 XssFilter 过滤处理
52 53 Map<String, String> queryString = ServletUtil.getParamMap(request);
53 54 String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtil.getBody(request) : null;
... ... @@ -56,15 +57,15 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
56 57 // 继续过滤器
57 58 filterChain.doFilter(request, response);
58 59 // 正常执行,记录日志
59   - createApiAccessLog(request, beginTim, queryString, requestBody, null);
  60 + createApiAccessLog(request, beginTime, queryString, requestBody, null);
60 61 } catch (Exception ex) {
61 62 // 异常执行,记录日志
62   - createApiAccessLog(request, beginTim, queryString, requestBody, ex);
  63 + createApiAccessLog(request, beginTime, queryString, requestBody, ex);
63 64 throw ex;
64 65 }
65 66 }
66 67  
67   - private void createApiAccessLog(HttpServletRequest request, Date beginTime,
  68 + private void createApiAccessLog(HttpServletRequest request, LocalDateTime beginTime,
68 69 Map<String, String> queryString, String requestBody, Exception ex) {
69 70 ApiAccessLog accessLog = new ApiAccessLog();
70 71 try {
... ... @@ -75,7 +76,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
75 76 }
76 77 }
77 78  
78   - private void buildApiAccessLogDTO(ApiAccessLog accessLog, HttpServletRequest request, Date beginTime,
  79 + private void buildApiAccessLogDTO(ApiAccessLog accessLog, HttpServletRequest request, LocalDateTime beginTime,
79 80 Map<String, String> queryString, String requestBody, Exception ex) {
80 81 // 处理用户信息
81 82 accessLog.setUserId(WebFrameworkUtils.getLoginUserId(request));
... ... @@ -103,8 +104,8 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
103 104 accessLog.setUserIp(ServletUtil.getClientIP(request));
104 105 // 持续时间
105 106 accessLog.setBeginTime(beginTime);
106   - accessLog.setEndTime(new Date());
107   - accessLog.setDuration((int) DateUtils.diff(accessLog.getEndTime(), accessLog.getBeginTime()));
  107 + accessLog.setEndTime(LocalDateTime.now());
  108 + accessLog.setDuration((int) LocalDateTimeUtil.between(accessLog.getBeginTime(), accessLog.getEndTime(), ChronoUnit.SECONDS));
108 109 }
109 110  
110 111 }
... ...
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLog.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.apilog.core.service;
3 3 import lombok.Data;
4 4  
5 5 import javax.validation.constraints.NotNull;
6   -import java.util.Date;
  6 +import java.time.LocalDateTime;
7 7  
8 8 /**
9 9 * API 访问日志
... ... @@ -61,12 +61,12 @@ public class ApiAccessLog {
61 61 * 开始请求时间
62 62 */
63 63 @NotNull(message = "开始请求时间不能为空")
64   - private Date beginTime;
  64 + private LocalDateTime beginTime;
65 65 /**
66 66 * 结束请求时间
67 67 */
68 68 @NotNull(message = "结束请求时间不能为空")
69   - private Date endTime;
  69 + private LocalDateTime endTime;
70 70 /**
71 71 * 执行时长,单位:毫秒
72 72 */
... ...
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLog.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.apilog.core.service;
3 3 import lombok.Data;
4 4  
5 5 import javax.validation.constraints.NotNull;
6   -import java.util.Date;
  6 +import java.time.LocalDateTime;
7 7  
8 8 /**
9 9 * API 错误日志
... ... @@ -61,7 +61,7 @@ public class ApiErrorLog {
61 61 * 异常时间
62 62 */
63 63 @NotNull(message = "异常时间不能为空")
64   - private Date exceptionTime;
  64 + private LocalDateTime exceptionTime;
65 65 /**
66 66 * 异常名
67 67 */
... ...
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
... ... @@ -31,7 +31,7 @@ import javax.servlet.http.HttpServletRequest;
31 31 import javax.validation.ConstraintViolation;
32 32 import javax.validation.ConstraintViolationException;
33 33 import javax.validation.ValidationException;
34   -import java.util.Date;
  34 +import java.time.LocalDateTime;
35 35 import java.util.Map;
36 36  
37 37 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.*;
... ... @@ -267,7 +267,7 @@ public class GlobalExceptionHandler {
267 267 errorLog.setRequestMethod(request.getMethod());
268 268 errorLog.setUserAgent(ServletUtils.getUserAgent(request));
269 269 errorLog.setUserIp(ServletUtil.getClientIP(request));
270   - errorLog.setExceptionTime(new Date());
  270 + errorLog.setExceptionTime(LocalDateTime.now());
271 271 }
272 272  
273 273 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9 9 import javax.validation.constraints.NotNull;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.List;
12 12  
13 13 @ApiModel("管理后台 - 动态表单 Response VO")
... ... @@ -28,6 +28,6 @@ public class BpmFormRespVO extends BpmFormBaseVO {
28 28 private List<String> fields;
29 29  
30 30 @ApiModelProperty(value = "创建时间", required = true)
31   - private Date createTime;
  31 + private LocalDateTime createTime;
32 32  
33 33 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java
... ... @@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
9 9 import lombok.ToString;
10 10 import org.springframework.format.annotation.DateTimeFormat;
11 11  
12   -import java.util.Date;
  12 +import java.time.LocalDateTime;
13 13  
14 14 @ApiModel("管理后台 - 用户组分页 Request VO")
15 15 @Data
... ... @@ -25,6 +25,6 @@ public class BpmUserGroupPageReqVO extends PageParam {
25 25  
26 26 @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 27 @ApiModelProperty(value = "创建时间")
28   - private Date[] createTime;
  28 + private LocalDateTime[] createTime;
29 29  
30 30 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupRespVO.java
1 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
  6 +
5 7 import io.swagger.annotations.*;
6 8  
7 9 @ApiModel("管理后台 - 用户组 Response VO")
... ... @@ -14,6 +16,6 @@ public class BpmUserGroupRespVO extends BpmUserGroupBaseVO {
14 16 private Long id;
15 17  
16 18 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  19 + private LocalDateTime createTime;
18 20  
19 21 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelPageItemRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 流程模型的分页的每一项 Response VO")
12 12 @Data
... ... @@ -21,7 +21,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO {
21 21 private String formName;
22 22  
23 23 @ApiModelProperty(value = "创建时间", required = true)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25  
26 26 /**
27 27 * 最新部署的流程定义
... ... @@ -39,7 +39,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO {
39 39 private Integer version;
40 40  
41 41 @ApiModelProperty(value = "部署时间", required = true)
42   - private Date deploymentTime;
  42 + private LocalDateTime deploymentTime;
43 43  
44 44 @ApiModelProperty(value = "中断状态", required = true, example = "1", notes = "参见 SuspensionState 枚举")
45 45 private Integer suspensionState;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 流程模型的创建 Request VO")
12 12 @Data
... ... @@ -21,6 +21,6 @@ public class BpmModelRespVO extends BpmModelBaseVO {
21 21 private String bpmnXml;
22 22  
23 23 @ApiModelProperty(value = "创建时间", required = true)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25  
26 26 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionPageItemRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 流程定义的分页的每一项 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class BpmProcessDefinitionPageItemRespVO extends BpmProcessDefinitionResp
18 18 private String formName;
19 19  
20 20 @ApiModelProperty(value = "部署时间", required = true)
21   - private Date deploymentTime;
  21 + private LocalDateTime deploymentTime;
22 22  
23 23 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java
1 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +import java.time.LocalDateTime;
5 5 import io.swagger.annotations.*;
6 6 import javax.validation.constraints.*;
7 7 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -18,11 +18,11 @@ public class BpmOALeaveBaseVO {
18 18 @ApiModelProperty(value = "请假的开始时间", required = true)
19 19 @NotNull(message = "开始时间不能为空")
20 20 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
21   - private Date startTime;
  21 + private LocalDateTime startTime;
22 22 @ApiModelProperty(value = "请假的结束时间", required = true)
23 23 @NotNull(message = "结束时间不能为空")
24 24 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
25   - private Date endTime;
  25 + private LocalDateTime endTime;
26 26  
27 27 @ApiModelProperty(value = "请假类型", required = true, example = "1", notes = "参见 bpm_oa_type 枚举")
28 28 private Integer type;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java
... ... @@ -15,7 +15,7 @@ public class BpmOALeaveCreateReqVO extends BpmOALeaveBaseVO {
15 15  
16 16 @AssertTrue(message = "结束时间,需要在开始时间之后")
17 17 public boolean isEndTimeValid() {
18   - return !getEndTime().before(getStartTime());
  18 + return !getEndTime().isBefore(getStartTime());
19 19 }
20 20  
21 21 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java
1 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +import java.time.LocalDateTime;
5 5 import io.swagger.annotations.*;
6 6 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 7 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -25,6 +25,6 @@ public class BpmOALeavePageReqVO extends PageParam {
25 25  
26 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 27 @ApiModelProperty(value = "申请时间")
28   - private Date[] createTime;
  28 + private LocalDateTime[] createTime;
29 29  
30 30 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveRespVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.*;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -24,7 +24,7 @@ public class BpmOALeaveRespVO extends BpmOALeaveBaseVO {
24 24 @ApiModelProperty(value = "申请时间", required = true)
25 25 @NotNull(message = "申请时间不能为空")
26 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27   - private Date createTime;
  27 + private LocalDateTime createTime;
28 28  
29 29 @ApiModelProperty(value = "流程id")
30 30 private String processInstanceId;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/activity/BpmActivityRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8  
9 9 @ApiModel("管理后台 - 流程活动的 Response VO")
10 10 @Data
... ... @@ -16,9 +16,9 @@ public class BpmActivityRespVO {
16 16 private String type;
17 17  
18 18 @ApiModelProperty(value = "流程活动的开始时间", required = true)
19   - private Date startTime;
  19 + private LocalDateTime startTime;
20 20 @ApiModelProperty(value = "流程活动的结束时间", required = true)
21   - private Date endTime;
  21 + private LocalDateTime endTime;
22 22  
23 23 @ApiModelProperty(value = "关联的流程任务的编号", example = "2048", notes = "关联的流程任务,只有 UserTask 等类型才有")
24 24 private String taskId;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -35,6 +35,6 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam {
35 35  
36 36 @ApiModelProperty(value = "创建时间")
37 37 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
38   - private Date[] createTime;
  38 + private LocalDateTime[] createTime;
39 39  
40 40 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8 import java.util.List;
9 9  
10 10 @ApiModel("管理后台 - 流程实例的分页 Item Response VO")
... ... @@ -30,10 +30,10 @@ public class BpmProcessInstancePageItemRespVO {
30 30 private Integer result;
31 31  
32 32 @ApiModelProperty(value = "提交时间", required = true)
33   - private Date createTime;
  33 + private LocalDateTime createTime;
34 34  
35 35 @ApiModelProperty(value = "结束时间", required = true)
36   - private Date endTime;
  36 + private LocalDateTime endTime;
37 37  
38 38 /**
39 39 * 当前任务
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8 import java.util.List;
9 9 import java.util.Map;
10 10  
... ... @@ -28,10 +28,10 @@ public class BpmProcessInstanceRespVO {
28 28 private Integer result;
29 29  
30 30 @ApiModelProperty(value = "提交时间", required = true)
31   - private Date createTime;
  31 + private LocalDateTime createTime;
32 32  
33 33 @ApiModelProperty(value = "结束时间", required = true)
34   - private Date endTime;
  34 + private LocalDateTime endTime;
35 35  
36 36 @ApiModelProperty(value = "提交的表单值", required = true)
37 37 private Map<String, Object> formVariables;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageItemRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 流程任务的 Done 已完成的分页项 Response VO")
12 12 @Data
... ... @@ -15,7 +15,7 @@ import java.util.Date;
15 15 public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO {
16 16  
17 17 @ApiModelProperty(value = "结束时间", required = true)
18   - private Date endTime;
  18 + private LocalDateTime endTime;
19 19 @ApiModelProperty(value = "持续时间", required = true, example = "1000")
20 20 private Long durationInMillis;
21 21  
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -23,10 +23,10 @@ public class BpmTaskDonePageReqVO extends PageParam {
23 23  
24 24 @ApiModelProperty(value = "开始的创建收间")
25 25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26   - private Date beginCreateTime;
  26 + private LocalDateTime beginCreateTime;
27 27  
28 28 @ApiModelProperty(value = "结束的创建时间")
29 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30   - private Date endCreateTime;
  30 + private LocalDateTime endCreateTime;
31 31  
32 32 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8  
9 9 @ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO")
10 10 @Data
... ... @@ -17,10 +17,10 @@ public class BpmTaskTodoPageItemRespVO {
17 17 private String name;
18 18  
19 19 @ApiModelProperty(value = "接收时间", required = true)
20   - private Date claimTime;
  20 + private LocalDateTime claimTime;
21 21  
22 22 @ApiModelProperty(value = "创建时间", required = true)
23   - private Date createTime;
  23 + private LocalDateTime createTime;
24 24  
25 25 @ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举")
26 26 private Integer suspensionState;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -23,10 +23,10 @@ public class BpmTaskTodoPageReqVO extends PageParam {
23 23  
24 24 @ApiModelProperty(value = "开始的创建收间")
25 25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26   - private Date beginCreateTime;
  26 + private LocalDateTime beginCreateTime;
27 27  
28 28 @ApiModelProperty(value = "结束的创建时间")
29 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30   - private Date endCreateTime;
  30 + private LocalDateTime endCreateTime;
31 31  
32 32 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.convert.definition;
2 2  
3 3 import cn.hutool.core.util.StrUtil;
4 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  5 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
5 6 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
6 7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*;
7 8 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
... ... @@ -44,7 +45,7 @@ public interface BpmModelConvert {
44 45 default BpmModelPageItemRespVO convert(Model model, BpmFormDO form, Deployment deployment, ProcessDefinition processDefinition) {
45 46 BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO();
46 47 modelRespVO.setId(model.getId());
47   - modelRespVO.setCreateTime(model.getCreateTime());
  48 + modelRespVO.setCreateTime(DateUtils.dateToLocalDateTime(model.getCreateTime()));
48 49 // 通用 copy
49 50 copyTo(model, modelRespVO);
50 51 // Form
... ... @@ -57,7 +58,7 @@ public interface BpmModelConvert {
57 58 if (modelRespVO.getProcessDefinition() != null) {
58 59 modelRespVO.getProcessDefinition().setSuspensionState(processDefinition.isSuspended() ?
59 60 SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode());
60   - modelRespVO.getProcessDefinition().setDeploymentTime(deployment.getDeploymentTime());
  61 + modelRespVO.getProcessDefinition().setDeploymentTime(DateUtils.dateToLocalDateTime(deployment.getDeploymentTime()));
61 62 }
62 63 return modelRespVO;
63 64 }
... ... @@ -65,7 +66,7 @@ public interface BpmModelConvert {
65 66 default BpmModelRespVO convert(Model model) {
66 67 BpmModelRespVO modelRespVO = new BpmModelRespVO();
67 68 modelRespVO.setId(model.getId());
68   - modelRespVO.setCreateTime(model.getCreateTime());
  69 + modelRespVO.setCreateTime(DateUtils.dateToLocalDateTime(model.getCreateTime()));
69 70 // 通用 copy
70 71 copyTo(model, modelRespVO);
71 72 return modelRespVO;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmProcessDefinitionConvert.java
1 1 package cn.iocoder.yudao.module.bpm.convert.definition;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  5 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
4 6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageItemRespVO;
5 7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
6 8 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
... ... @@ -67,7 +69,7 @@ public interface BpmProcessDefinitionConvert {
67 69 BpmProcessDefinitionPageItemRespVO respVO = convert(bean);
68 70 respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode());
69 71 if (deployment != null) {
70   - respVO.setDeploymentTime(deployment.getDeploymentTime());
  72 + respVO.setDeploymentTime(LocalDateTimeUtil.of(deployment.getDeploymentTime()));
71 73 }
72 74 if (form != null) {
73 75 respVO.setFormName(form.getName());
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java
1 1 package cn.iocoder.yudao.module.bpm.convert.task;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
4 5 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
5 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskDonePageItemRespVO;
... ... @@ -151,7 +152,7 @@ public interface BpmTaskConvert {
151 152 BpmTaskExtDO taskExtDO = new BpmTaskExtDO().setTaskId(task.getId())
152 153 .setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setName(task.getName())
153 154 .setProcessDefinitionId(task.getProcessDefinitionId()).setProcessInstanceId(task.getProcessInstanceId());
154   - taskExtDO.setCreateTime(task.getCreateTime());
  155 + taskExtDO.setCreateTime(LocalDateTimeUtil.of(task.getCreateTime()));
155 156 return taskExtDO;
156 157 }
157 158  
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
2 2  
3 3 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
4 4 import lombok.*;
5   -import java.util.*;
  5 +import java.time.LocalDateTime;
6 6 import com.baomidou.mybatisplus.annotation.*;
7 7 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
8 8  
... ... @@ -46,11 +46,11 @@ public class BpmOALeaveDO extends BaseDO {
46 46 /**
47 47 * 开始时间
48 48 */
49   - private Date startTime;
  49 + private LocalDateTime startTime;
50 50 /**
51 51 * 结束时间
52 52 */
53   - private Date endTime;
  53 + private LocalDateTime endTime;
54 54 /**
55 55 * 请假天数
56 56 */
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmActivityDO.java
... ... @@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
4 4 import lombok.*;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8  
9 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
... ... @@ -80,18 +80,18 @@ public class BpmActivityDO {
80 80 */
81 81 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
82 82 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
83   - private Date startTime;
  83 + private LocalDateTime startTime;
84 84  
85 85 /**
86 86 * 任务结束时间
87 87 */
88 88 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
89 89 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
90   - private Date endTime;
  90 + private LocalDateTime endTime;
91 91  
92 92 private Integer transactionOrder;
93 93  
94   - private Long duration;
  94 + private LocalDateTime duration;
95 95  
96 96 /**
97 97 * 删除结果
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmProcessInstanceExtDO.java
... ... @@ -11,7 +11,7 @@ import lombok.Data;
11 11 import lombok.EqualsAndHashCode;
12 12 import lombok.ToString;
13 13  
14   -import java.util.Date;
  14 +import java.time.LocalDateTime;
15 15 import java.util.Map;
16 16  
17 17 /**
... ... @@ -79,7 +79,7 @@ public class BpmProcessInstanceExtDO extends BaseDO {
79 79 *
80 80 * 冗余 HistoricProcessInstance 的 endTime 属性
81 81 */
82   - private Date endTime;
  82 + private LocalDateTime endTime;
83 83  
84 84 /**
85 85 * 提交的表单值
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmTaskExtDO.java
... ... @@ -8,7 +8,7 @@ import lombok.Data;
8 8 import lombok.EqualsAndHashCode;
9 9 import lombok.ToString;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * Bpm 流程任务的拓展表
... ... @@ -67,7 +67,7 @@ public class BpmTaskExtDO extends BaseDO {
67 67 *
68 68 * 冗余 HistoricTaskInstance 的 endTime 属性
69 69 */
70   - private Date endTime;
  70 + private LocalDateTime endTime;
71 71  
72 72 /**
73 73 * 流程实例的编号
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java
1 1 package cn.iocoder.yudao.module.bpm.service.oa;
2 2  
3   -import cn.hutool.core.date.DateUtil;
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
6 6 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
... ... @@ -46,7 +46,7 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService {
46 46 @Transactional(rollbackFor = Exception.class)
47 47 public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) {
48 48 // 插入 OA 请假单
49   - long day = DateUtil.betweenDay(createReqVO.getStartTime(), createReqVO.getEndTime(), false);
  49 + long day = LocalDateTimeUtil.between(createReqVO.getStartTime(), createReqVO.getEndTime()).toDays();
50 50 BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day)
51 51 .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
52 52 leaveMapper.insert(leave);
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
1   -package cn.iocoder.yudao.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. <a href="https://blog.csdn.net/bobozai86/article/details/105210414" /> * * HistoricProcessInstance & ProcessInstance 的关系: * 1. <a href=" https://my.oschina.net/843294669/blog/71902" /> * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<ProcessInstance> getProcessInstances(Set<String> ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map<String, Object> variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.startProcessInstanceById(definition.getId(), businessKey, variables); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } }
2 1 \ No newline at end of file
  2 +package cn.iocoder.yudao.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. <a href="https://blog.csdn.net/bobozai86/article/details/105210414" /> * * HistoricProcessInstance & ProcessInstance 的关系: * 1. <a href=" https://my.oschina.net/843294669/blog/71902" /> * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<ProcessInstance> getProcessInstances(Set<String> ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map<String, Object> variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.startProcessInstanceById(definition.getId(), businessKey, variables); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } }
3 3 \ No newline at end of file
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
... ... @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.bpm.service.task;
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.util.StrUtil;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
6 7 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
7 8 import cn.iocoder.yudao.framework.common.util.object.PageUtils;
8 9 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
... ... @@ -32,6 +33,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
32 33  
33 34 import javax.annotation.Resource;
34 35 import javax.validation.Valid;
  36 +import java.time.LocalDateTime;
35 37 import java.util.*;
36 38  
37 39 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -74,10 +76,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
74 76 taskQuery.taskNameLike("%" + pageVO.getName() + "%");
75 77 }
76 78 if (pageVO.getBeginCreateTime() != null) {
77   - taskQuery.taskCreatedAfter(pageVO.getBeginCreateTime());
  79 + taskQuery.taskCreatedAfter(DateUtils.localDateTimeToDate(pageVO.getBeginCreateTime()));
78 80 }
79 81 if (pageVO.getEndCreateTime() != null) {
80   - taskQuery.taskCreatedBefore(pageVO.getEndCreateTime());
  82 + taskQuery.taskCreatedBefore(DateUtils.localDateTimeToDate(pageVO.getEndCreateTime()));
81 83 }
82 84 // 执行查询
83 85 List<Task> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
... ... @@ -106,10 +108,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
106 108 taskQuery.taskNameLike("%" + pageVO.getName() + "%");
107 109 }
108 110 if (pageVO.getBeginCreateTime() != null) {
109   - taskQuery.taskCreatedAfter(pageVO.getBeginCreateTime());
  111 + taskQuery.taskCreatedAfter(DateUtils.localDateTimeToDate(pageVO.getBeginCreateTime()));
110 112 }
111 113 if (pageVO.getEndCreateTime() != null) {
112   - taskQuery.taskCreatedBefore(pageVO.getEndCreateTime());
  114 + taskQuery.taskCreatedBefore(DateUtils.localDateTimeToDate(pageVO.getEndCreateTime()));
113 115 }
114 116 // 执行查询
115 117 List<HistoricTaskInstance> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
... ... @@ -205,7 +207,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
205 207 // 更新任务拓展表为不通过
206 208 taskExtMapper.updateByTaskId(
207 209 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.REJECT.getResult())
208   - .setEndTime(new Date()).setReason(reqVO.getReason()));
  210 + .setEndTime(LocalDateTime.now()).setReason(reqVO.getReason()));
209 211 }
210 212  
211 213 @Override
... ... @@ -249,7 +251,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
249 251 public void updateTaskExtComplete(Task task) {
250 252 BpmTaskExtDO taskExtDO = BpmTaskConvert.INSTANCE.convert2TaskExt(task)
251 253 .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) // 不设置也问题不大,因为 Complete 一般是审核通过,已经设置
252   - .setEndTime(new Date());
  254 + .setEndTime(LocalDateTime.now());
253 255 taskExtMapper.updateByTaskId(taskExtDO);
254 256 }
255 257  
... ... @@ -280,7 +282,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
280 282  
281 283 // 更新任务
282 284 taskExtMapper.updateById(new BpmTaskExtDO().setId(taskExt.getId()).setResult(BpmProcessInstanceResultEnum.CANCEL.getResult())
283   - .setEndTime(new Date()).setReason(BpmProcessInstanceDeleteReasonEnum.translateReason(task.getDeleteReason())));
  285 + .setEndTime(LocalDateTime.now()).setReason(BpmProcessInstanceDeleteReasonEnum.translateReason(task.getDeleteReason())));
284 286 }
285 287  
286 288 });
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/service/definition/BpmUserGroupServiceTest.java
... ... @@ -17,9 +17,9 @@ import org.springframework.context.annotation.Import;
17 17  
18 18 import javax.annotation.Resource;
19 19  
20   -import java.util.Date;
  20 +import java.time.LocalDateTime;
21 21  
22   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  22 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
23 23 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
24 24 import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.USER_GROUP_NOT_EXISTS;
25 25  
... ... @@ -106,7 +106,7 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
106 106 BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到
107 107 o.setName("芋道源码");
108 108 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
109   - o.setCreateTime(DateUtils.buildTime(2021, 11, 11));
  109 + o.setCreateTime(DateUtils.buildLocalDateTime(2021, 11, 11));
110 110 });
111 111 userGroupMapper.insert(dbUserGroup);
112 112 // 测试 name 不匹配
... ... @@ -114,12 +114,12 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
114 114 // 测试 status 不匹配
115 115 userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
116 116 // 测试 createTime 不匹配
117   - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(DateUtils.buildTime(2021, 12, 12))));
  117 + userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2021, 12, 12))));
118 118 // 准备参数
119 119 BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO();
120 120 reqVO.setName("源码");
121 121 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
122   - reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)}));
  122 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 10),buildLocalDateTime(2021, 11, 12)}));
123 123  
124 124 // 调用
125 125 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO);
... ...
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.api.logger.dto;
3 3 import lombok.Data;
4 4  
5 5 import javax.validation.constraints.NotNull;
6   -import java.util.Date;
  6 +import java.time.LocalDateTime;
7 7  
8 8 /**
9 9 * API 访问日志
... ... @@ -61,12 +61,12 @@ public class ApiAccessLogCreateReqDTO {
61 61 * 开始请求时间
62 62 */
63 63 @NotNull(message = "开始请求时间不能为空")
64   - private Date beginTime;
  64 + private LocalDateTime beginTime;
65 65 /**
66 66 * 结束请求时间
67 67 */
68 68 @NotNull(message = "结束请求时间不能为空")
69   - private Date endTime;
  69 + private LocalDateTime endTime;
70 70 /**
71 71 * 执行时长,单位:毫秒
72 72 */
... ...
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.api.logger.dto;
3 3 import lombok.Data;
4 4  
5 5 import javax.validation.constraints.NotNull;
6   -import java.util.Date;
  6 +import java.time.LocalDateTime;
7 7  
8 8 /**
9 9 * API 错误日志
... ... @@ -61,7 +61,7 @@ public class ApiErrorLogCreateReqDTO {
61 61 * 异常时间
62 62 */
63 63 @NotNull(message = "异常时间不能为空")
64   - private Date exceptionTime;
  64 + private LocalDateTime exceptionTime;
65 65 /**
66 66 * 异常名
67 67 */
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/column/CodegenColumnRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 代码生成字段定义 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class CodegenColumnRespVO extends CodegenColumnBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,6 +26,6 @@ public class CodegenTablePageReqVO extends PageParam {
26 26  
27 27 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
28 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29   - private Date[] createTime;
  29 + private LocalDateTime[] createTime;
30 30  
31 31 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 代码生成表定义 Response VO")
12 12 @Data
... ... @@ -21,9 +21,9 @@ public class CodegenTableRespVO extends CodegenTableBaseVO {
21 21 private Integer dataSourceConfigId;
22 22  
23 23 @ApiModelProperty(value = "创建时间", required = true)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25  
26 26 @ApiModelProperty(value = "更新时间", required = true)
27   - private Date updateTime;
  27 + private LocalDateTime updateTime;
28 28  
29 29 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 参数配置 Excel 导出响应 VO
... ... @@ -41,6 +41,6 @@ public class ConfigExcelVO {
41 41 private String remark;
42 42  
43 43 @ExcelProperty("创建时间")
44   - private Date createTime;
  44 + private LocalDateTime createTime;
45 45  
46 46 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -24,6 +24,6 @@ public class ConfigExportReqVO {
24 24  
25 25 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
26 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27   - private Date[] createTime;
  27 + private LocalDateTime[] createTime;
28 28  
29 29 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -29,6 +29,6 @@ public class ConfigPageReqVO extends PageParam {
29 29  
30 30 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
31 31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
32   - private Date[] createTime;
  32 + private LocalDateTime[] createTime;
33 33  
34 34 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 7  
8 8 import javax.validation.constraints.NotBlank;
9 9 import javax.validation.constraints.Size;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 参数配置信息 Response VO")
13 13 @Data
... ... @@ -26,6 +26,6 @@ public class ConfigRespVO extends ConfigBaseVO {
26 26 private Integer type;
27 27  
28 28 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
29   - private Date createTime;
  29 + private LocalDateTime createTime;
30 30  
31 31 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 数据源配置 Response VO")
... ... @@ -14,6 +15,6 @@ public class DataSourceConfigRespVO extends DataSourceConfigBaseVO {
14 15 private Integer id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,6 +26,6 @@ public class FileConfigPageReqVO extends PageParam {
26 26  
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 @ApiModelProperty(value = "创建时间")
29   - private Date[] createTime;
  29 + private LocalDateTime[] createTime;
30 30  
31 31 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigRespVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9  
10 10 import javax.validation.constraints.NotNull;
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 @ApiModel("管理后台 - 文件配置 Response VO")
14 14 @Data
... ... @@ -31,6 +31,6 @@ public class FileConfigRespVO extends FileConfigBaseVO {
31 31 private FileClientConfig config;
32 32  
33 33 @ApiModelProperty(value = "创建时间", required = true)
34   - private Date createTime;
  34 + private LocalDateTime createTime;
35 35  
36 36 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FilePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,6 +26,6 @@ public class FilePageReqVO extends PageParam {
26 26  
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 @ApiModelProperty(value = "创建时间")
29   - private Date[] createTime;
  29 + private LocalDateTime[] createTime;
30 30  
31 31 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8  
9 9 @ApiModel(value = "管理后台 - 文件 Response VO", description = "不返回 content 字段,太大")
10 10 @Data
... ... @@ -32,6 +32,6 @@ public class FileRespVO {
32 32 private Integer size;
33 33  
34 34 @ApiModelProperty(value = "创建时间", required = true)
35   - private Date createTime;
  35 + private LocalDateTime createTime;
36 36  
37 37 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/JobController.java
... ... @@ -22,9 +22,9 @@ import javax.annotation.Resource;
22 22 import javax.servlet.http.HttpServletResponse;
23 23 import javax.validation.Valid;
24 24 import java.io.IOException;
  25 +import java.time.LocalDateTime;
25 26 import java.util.Collection;
26 27 import java.util.Collections;
27   -import java.util.Date;
28 28 import java.util.List;
29 29  
30 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
... ... @@ -133,8 +133,8 @@ public class JobController {
133 133 @ApiImplicitParam(name = "count", value = "数量", example = "5", dataTypeClass = Long.class)
134 134 })
135 135 @PreAuthorize("@ss.hasPermission('infra:job:query')")
136   - public CommonResult<List<Date>> getJobNextTimes(@RequestParam("id") Long id,
137   - @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
  136 + public CommonResult<List<LocalDateTime>> getJobNextTimes(@RequestParam("id") Long id,
  137 + @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
138 138 JobDO job = jobService.getJob(id);
139 139 if (job == null) {
140 140 return success(Collections.emptyList());
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 定时任务 Excel VO
... ... @@ -36,21 +36,21 @@ public class JobExcelVO {
36 36 private String cronExpression;
37 37  
38 38 @ExcelProperty("最后一次执行的开始时间")
39   - private Date executeBeginTime;
  39 + private LocalDateTime executeBeginTime;
40 40  
41 41 @ExcelProperty("最后一次执行的结束时间")
42   - private Date executeEndTime;
  42 + private LocalDateTime executeEndTime;
43 43  
44 44 @ExcelProperty("上一次触发时间")
45   - private Date firePrevTime;
  45 + private LocalDateTime firePrevTime;
46 46  
47 47 @ExcelProperty("下一次触发时间")
48   - private Date fireNextTime;
  48 + private LocalDateTime fireNextTime;
49 49  
50 50 @ExcelProperty("监控超时时间")
51 51 private Integer monitorTimeout;
52 52  
53 53 @ExcelProperty("创建时间")
54   - private Date createTime;
  54 + private LocalDateTime createTime;
55 55  
56 56 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9 9 import javax.validation.constraints.NotNull;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 定时任务 Response VO")
13 13 @Data
... ... @@ -26,6 +26,6 @@ public class JobRespVO extends JobBaseVO {
26 26 private String handlerName;
27 27  
28 28 @ApiModelProperty(value = "创建时间", required = true)
29   - private Date createTime;
  29 + private LocalDateTime createTime;
30 30  
31 31 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java
... ... @@ -5,7 +5,7 @@ import lombok.Data;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -34,11 +34,11 @@ public class JobLogBaseVO {
34 34 @ApiModelProperty(value = "开始执行时间", required = true)
35 35 @NotNull(message = "开始执行时间不能为空")
36 36 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
37   - private Date beginTime;
  37 + private LocalDateTime beginTime;
38 38  
39 39 @ApiModelProperty(value = "结束执行时间")
40 40 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
41   - private Date endTime;
  41 + private LocalDateTime endTime;
42 42  
43 43 @ApiModelProperty(value = "执行时长", example = "123")
44 44 private Integer duration;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 定时任务 Excel VO
... ... @@ -32,10 +32,10 @@ public class JobLogExcelVO {
32 32 private Integer executeIndex;
33 33  
34 34 @ExcelProperty("开始执行时间")
35   - private Date beginTime;
  35 + private LocalDateTime beginTime;
36 36  
37 37 @ExcelProperty("结束执行时间")
38   - private Date endTime;
  38 + private LocalDateTime endTime;
39 39  
40 40 @ExcelProperty("执行时长")
41 41 private Integer duration;
... ... @@ -48,6 +48,6 @@ public class JobLogExcelVO {
48 48 private String result;
49 49  
50 50 @ExcelProperty("创建时间")
51   - private Date createTime;
  51 + private LocalDateTime createTime;
52 52  
53 53 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -21,11 +21,11 @@ public class JobLogExportReqVO {
21 21  
22 22 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
23 23 @ApiModelProperty(value = "开始执行时间")
24   - private Date beginTime;
  24 + private LocalDateTime beginTime;
25 25  
26 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 27 @ApiModelProperty(value = "结束执行时间")
28   - private Date endTime;
  28 + private LocalDateTime endTime;
29 29  
30 30 @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举")
31 31 private Integer status;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,11 +26,11 @@ public class JobLogPageReqVO extends PageParam {
26 26  
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 @ApiModelProperty(value = "开始执行时间")
29   - private Date beginTime;
  29 + private LocalDateTime beginTime;
30 30  
31 31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
32 32 @ApiModelProperty(value = "结束执行时间")
33   - private Date endTime;
  33 + private LocalDateTime endTime;
34 34  
35 35 @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举")
36 36 private Integer status;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 定时任务日志 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class JobLogRespVO extends JobLogBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java
... ... @@ -5,7 +5,7 @@ import lombok.Data;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -54,12 +54,12 @@ public class ApiAccessLogBaseVO {
54 54 @ApiModelProperty(value = "开始请求时间", required = true)
55 55 @NotNull(message = "开始请求时间不能为空")
56 56 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
57   - private Date beginTime;
  57 + private LocalDateTime beginTime;
58 58  
59 59 @ApiModelProperty(value = "结束请求时间", required = true)
60 60 @NotNull(message = "结束请求时间不能为空")
61 61 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
62   - private Date endTime;
  62 + private LocalDateTime endTime;
63 63  
64 64 @ApiModelProperty(value = "执行时长", required = true, example = "100")
65 65 @NotNull(message = "执行时长不能为空")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * API 访问日志 Excel VO
... ... @@ -48,10 +48,10 @@ public class ApiAccessLogExcelVO {
48 48 private String userAgent;
49 49  
50 50 @ExcelProperty("开始请求时间")
51   - private Date beginTime;
  51 + private LocalDateTime beginTime;
52 52  
53 53 @ExcelProperty("结束请求时间")
54   - private Date endTime;
  54 + private LocalDateTime endTime;
55 55  
56 56 @ExcelProperty("执行时长")
57 57 private Integer duration;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -27,7 +27,7 @@ public class ApiAccessLogExportReqVO {
27 27  
28 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 29 @ApiModelProperty(value = "开始请求时间")
30   - private Date[] beginTime;
  30 + private LocalDateTime[] beginTime;
31 31  
32 32 @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒")
33 33 private Integer duration;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -32,7 +32,7 @@ public class ApiAccessLogPageReqVO extends PageParam {
32 32  
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 34 @ApiModelProperty(value = "开始请求时间")
35   - private Date[] beginTime;
  35 + private LocalDateTime[] beginTime;
36 36  
37 37 @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒")
38 38 private Integer duration;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - API 访问日志 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class ApiAccessLogRespVO extends ApiAccessLogBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogBaseVO.java
... ... @@ -5,7 +5,7 @@ import lombok.Data;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -55,7 +55,7 @@ public class ApiErrorLogBaseVO {
55 55 @ApiModelProperty(value = "异常发生时间", required = true)
56 56 @NotNull(message = "异常发生时间不能为空")
57 57 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
58   - private Date exceptionTime;
  58 + private LocalDateTime exceptionTime;
59 59  
60 60 @ApiModelProperty(value = "异常名", required = true)
61 61 @NotNull(message = "异常名不能为空")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * API 错误日志 Excel VO
... ... @@ -48,7 +48,7 @@ public class ApiErrorLogExcelVO {
48 48 private String userAgent;
49 49  
50 50 @ExcelProperty("异常发生时间")
51   - private Date exceptionTime;
  51 + private LocalDateTime exceptionTime;
52 52  
53 53 @ExcelProperty("异常名")
54 54 private String exceptionName;
... ... @@ -75,14 +75,14 @@ public class ApiErrorLogExcelVO {
75 75 private Integer exceptionLineNumber;
76 76  
77 77 @ExcelProperty("创建时间")
78   - private Date createTime;
  78 + private LocalDateTime createTime;
79 79  
80 80 @ExcelProperty(value = "处理状态", converter = DictConvert.class)
81 81 @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS)
82 82 private Integer processStatus;
83 83  
84 84 @ExcelProperty("处理时间")
85   - private Date processTime;
  85 + private LocalDateTime processTime;
86 86  
87 87 @ExcelProperty("处理用户编号")
88 88 private Integer processUserId;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -27,7 +27,7 @@ public class ApiErrorLogExportReqVO {
27 27  
28 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 29 @ApiModelProperty(value = "异常发生时间")
30   - private Date[] exceptionTime;
  30 + private LocalDateTime[] exceptionTime;
31 31  
32 32 @ApiModelProperty(value = "处理状态", example = "0")
33 33 private Integer processStatus;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -32,7 +32,7 @@ public class ApiErrorLogPageReqVO extends PageParam {
32 32  
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 34 @ApiModelProperty(value = "异常发生时间")
35   - private Date[] exceptionTime;
  35 + private LocalDateTime[] exceptionTime;
36 36  
37 37 @ApiModelProperty(value = "处理状态", example = "0")
38 38 private Integer processStatus;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - API 错误日志 Response VO")
12 12 @Data
... ... @@ -18,10 +18,10 @@ public class ApiErrorLogRespVO extends ApiErrorLogBaseVO {
18 18 private Integer id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 @ApiModelProperty(value = "处理时间", required = true)
24   - private Date processTime;
  24 + private LocalDateTime processTime;
25 25  
26 26 @ApiModelProperty(value = "处理用户编号", example = "233")
27 27 private Integer processUserId;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoExcelVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
5   -import io.swagger.annotations.*;
  4 +
  5 +import java.time.LocalDateTime;
6 6  
7 7 import com.alibaba.excel.annotation.ExcelProperty;
8 8  
... ... @@ -33,6 +33,6 @@ public class TestDemoExcelVO {
33 33 private String remark;
34 34  
35 35 @ExcelProperty("创建时间")
36   - private Date createTime;
  36 + private LocalDateTime createTime;
37 37  
38 38 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 7 import org.springframework.format.annotation.DateTimeFormat;
8 8  
9 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ... @@ -29,6 +29,6 @@ public class TestDemoExportReqVO {
29 29  
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31 31 @ApiModelProperty(value = "创建时间")
32   - private Date[] createTime;
  32 + private LocalDateTime[] createTime;
33 33  
34 34 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoPageReqVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 8 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -31,6 +32,6 @@ public class TestDemoPageReqVO extends PageParam {
31 32  
32 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
33 34 @ApiModelProperty(value = "创建时间")
34   - private Date[] createTime;
  35 + private LocalDateTime[] createTime;
35 36  
36 37 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 字典类型 Response VO")
... ... @@ -14,6 +15,6 @@ public class TestDemoRespVO extends TestDemoBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/job/JobLogDO.java
... ... @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
7 7 import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.*;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 /**
13 13 * 定时任务的执行日志
... ... @@ -56,11 +56,11 @@ public class JobLogDO extends BaseDO {
56 56 /**
57 57 * 开始执行时间
58 58 */
59   - private Date beginTime;
  59 + private LocalDateTime beginTime;
60 60 /**
61 61 * 结束执行时间
62 62 */
63   - private Date endTime;
  63 + private LocalDateTime endTime;
64 64 /**
65 65 * 执行时长,单位:毫秒
66 66 */
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiAccessLogDO.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
8 8 import com.baomidou.mybatisplus.annotation.TableName;
9 9 import lombok.*;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * API 访问日志
... ... @@ -84,11 +84,11 @@ public class ApiAccessLogDO extends BaseDO {
84 84 /**
85 85 * 开始请求时间
86 86 */
87   - private Date beginTime;
  87 + private LocalDateTime beginTime;
88 88 /**
89 89 * 结束请求时间
90 90 */
91   - private Date endTime;
  91 + private LocalDateTime endTime;
92 92 /**
93 93 * 执行时长,单位:毫秒
94 94 */
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiErrorLogDO.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
8 8 import com.baomidou.mybatisplus.annotation.TableName;
9 9 import lombok.*;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * API 异常数据
... ... @@ -84,7 +84,7 @@ public class ApiErrorLogDO extends BaseDO {
84 84 /**
85 85 * 异常发生时间
86 86 */
87   - private Date exceptionTime;
  87 + private LocalDateTime exceptionTime;
88 88 /**
89 89 * 异常名
90 90 *
... ... @@ -145,7 +145,7 @@ public class ApiErrorLogDO extends BaseDO {
145 145 /**
146 146 * 处理时间
147 147 */
148   - private Date processTime;
  148 + private LocalDateTime processTime;
149 149 /**
150 150 * 处理用户编号
151 151 *
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigDAOImpl.java
1 1 package cn.iocoder.yudao.module.infra.dal.mysql.config;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO;
4 5 import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO;
5 6 import org.springframework.jdbc.core.JdbcTemplate;
6 7 import org.springframework.jdbc.datasource.DriverManagerDataSource;
7 8  
8 9 import javax.sql.DataSource;
9   -import java.util.Date;
  10 +import java.time.LocalDateTime;
10 11 import java.util.List;
11 12  
12 13 /**
... ... @@ -24,7 +25,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO {
24 25 }
25 26  
26 27 @Override
27   - public int selectCountByUpdateTimeGt(Date maxUpdateTime) {
  28 + public int selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime) {
28 29 return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM infra_config WHERE update_time > ?",
29 30 Integer.class, maxUpdateTime);
30 31 }
... ... @@ -34,7 +35,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO {
34 35 return jdbcTemplate.query("SELECT config_key, value, update_time, deleted FROM infra_config",
35 36 (rs, rowNum) -> new ConfigRespDTO().setKey(rs.getString("config_key"))
36 37 .setValue(rs.getString("value"))
37   - .setUpdateTime(rs.getDate("update_time"))
  38 + .setUpdateTime(LocalDateTimeUtil.of(rs.getDate("update_time")))
38 39 .setDeleted(rs.getBoolean("deleted")));
39 40 }
40 41  
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/file/FileConfigMapper.java
... ... @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9 import org.apache.ibatis.annotations.Select;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * 文件配置 Mapper
... ... @@ -27,6 +27,6 @@ public interface FileConfigMapper extends BaseMapperX&lt;FileConfigDO&gt; {
27 27 }
28 28  
29 29 @Select("SELECT COUNT(*) FROM infra_file_config WHERE update_time > #{maxUpdateTime}")
30   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  30 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
31 31  
32 32 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DatabaseTableServiceImpl.java
... ... @@ -53,7 +53,7 @@ public class DatabaseTableServiceImpl implements DatabaseTableService {
53 53 if (StrUtil.isNotEmpty(name)) {
54 54 strategyConfig.addInclude(name);
55 55 }
56   - GlobalConfig globalConfig = new GlobalConfig.Builder().dateType(DateType.ONLY_DATE).build(); // 只使用 Date 类型,不使用 LocalDate
  56 + GlobalConfig globalConfig = new GlobalConfig.Builder().dateType(DateType.TIME_PACK).build(); // 只使用 Date 类型,不使用 LocalDate
57 57 ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, strategyConfig.build(),
58 58 null, globalConfig, null);
59 59 // 按照名字排序
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java
... ... @@ -31,8 +31,8 @@ import org.springframework.validation.annotation.Validated;
31 31 import javax.annotation.PostConstruct;
32 32 import javax.annotation.Resource;
33 33 import javax.validation.Validator;
  34 +import java.time.LocalDateTime;
34 35 import java.util.Collection;
35   -import java.util.Date;
36 36 import java.util.List;
37 37 import java.util.Map;
38 38  
... ... @@ -60,7 +60,7 @@ public class FileConfigServiceImpl implements FileConfigService {
60 60 * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新
61 61 */
62 62 @Getter
63   - private volatile Date maxUpdateTime;
  63 + private volatile LocalDateTime maxUpdateTime;
64 64  
65 65 @Resource
66 66 private FileClientFactory fileClientFactory;
... ... @@ -118,7 +118,7 @@ public class FileConfigServiceImpl implements FileConfigService {
118 118 * @param maxUpdateTime 当前文件配置的最大更新时间
119 119 * @return 文件配置列表
120 120 */
121   - private List<FileConfigDO> loadFileConfigIfUpdate(Date maxUpdateTime) {
  121 + private List<FileConfigDO> loadFileConfigIfUpdate(LocalDateTime maxUpdateTime) {
122 122 // 第一步,判断是否要更新。
123 123 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
124 124 log.info("[loadFileConfigIfUpdate][首次加载全量文件配置]");
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobLogServiceImpl.java
... ... @@ -12,8 +12,8 @@ import org.springframework.stereotype.Service;
12 12 import org.springframework.validation.annotation.Validated;
13 13  
14 14 import javax.annotation.Resource;
  15 +import java.time.LocalDateTime;
15 16 import java.util.Collection;
16   -import java.util.Date;
17 17 import java.util.List;
18 18  
19 19 /**
... ... @@ -30,7 +30,7 @@ public class JobLogServiceImpl implements JobLogService {
30 30 private JobLogMapper jobLogMapper;
31 31  
32 32 @Override
33   - public Long createJobLog(Long jobId, Date beginTime, String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
  33 + public Long createJobLog(Long jobId, LocalDateTime beginTime, String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
34 34 JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName).handlerParam(jobHandlerParam).executeIndex(executeIndex)
35 35 .beginTime(beginTime).status(JobLogStatusEnum.RUNNING.getStatus()).build();
36 36 jobLogMapper.insert(log);
... ... @@ -39,7 +39,7 @@ public class JobLogServiceImpl implements JobLogService {
39 39  
40 40 @Override
41 41 @Async
42   - public void updateJobLogResultAsync(Long logId, Date endTime, Integer duration, boolean success, String result) {
  42 + public void updateJobLogResultAsync(Long logId, LocalDateTime endTime, Integer duration, boolean success, String result) {
43 43 try {
44 44 JobLogDO updateObj = JobLogDO.builder().id(logId).endTime(endTime).duration(duration)
45 45 .status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus()).result(result).build();
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/logger/ApiErrorLogServiceImpl.java
... ... @@ -14,7 +14,7 @@ import org.springframework.stereotype.Service;
14 14 import org.springframework.validation.annotation.Validated;
15 15  
16 16 import javax.annotation.Resource;
17   -import java.util.Date;
  17 +import java.time.LocalDateTime;
18 18 import java.util.List;
19 19  
20 20 /**
... ... @@ -57,7 +57,7 @@ public class ApiErrorLogServiceImpl implements ApiErrorLogService {
57 57 }
58 58 // 标记处理
59 59 apiErrorLogMapper.updateById(ApiErrorLogDO.builder().id(id).processStatus(processStatus)
60   - .processUserId(processUserId).processTime(new Date()).build());
  60 + .processUserId(processUserId).processTime(LocalDateTime.now()).build());
61 61 }
62 62  
63 63 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/_column.vm
... ... @@ -7,7 +7,7 @@
7 7 @NotNull(message = "${column.columnComment}不能为空")
8 8 #end
9 9 #end
10   -#if (${column.javaType} == "Date")## 时间类型
  10 +#if (${column.javaType} == "LocalDateTime")## 时间类型
11 11 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
12 12 #end
13 13 private ${column.javaType} ${column.javaField};
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/baseVO.vm
... ... @@ -5,7 +5,9 @@ import java.util.*;
5 5 #foreach ($column in $columns)
6 6 #if (${column.javaType} == "BigDecimal")
7 7 import java.math.BigDecimal;
8   -#break
  8 +#end
  9 +#if (${column.javaType} == "LocalDateTime")
  10 +import java.time.LocalDateTime;
9 11 #end
10 12 #end
11 13 import io.swagger.annotations.*;
... ... @@ -13,7 +15,7 @@ import javax.validation.constraints.*;
13 15 ## 处理 Date 字段的引入
14 16 #foreach ($column in $columns)
15 17 #if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult}
16   - && ${column.javaType} == "Date")## 时间类型
  18 + && ${column.javaType} == "LocalDateTime")## 时间类型
17 19 import org.springframework.format.annotation.DateTimeFormat;
18 20  
19 21 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/createReqVO.vm
... ... @@ -7,7 +7,7 @@ import javax.validation.constraints.*;
7 7 ## 处理 Date 字段的引入
8 8 #foreach ($column in $columns)
9 9 #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult})
10   - && ${column.javaType} == "Date")## 时间类型
  10 + && ${column.javaType} == "LocalDateTime")## 时间类型
11 11 import org.springframework.format.annotation.DateTimeFormat;
12 12  
13 13 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/excelVO.vm
... ... @@ -5,7 +5,9 @@ import java.util.*;
5 5 #foreach ($column in $columns)
6 6 #if (${column.javaType} == "BigDecimal")
7 7 import java.math.BigDecimal;
8   -#break
  8 +#end
  9 +#if (${column.javaType} == "LocalDateTime")
  10 +import java.time.LocalDateTime;
9 11 #end
10 12 #end
11 13 import io.swagger.annotations.*;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/exportReqVO.vm
... ... @@ -6,7 +6,8 @@ import io.swagger.annotations.*;
6 6 import ${PageParamClassName};
7 7 ## 处理 Date 字段的引入
8 8 #foreach ($column in $columns)
9   -#if (${column.listOperation} && ${column.javaType} == "Date")## 时间类型
  9 +#if (${column.listOperation} && ${column.javaType} == "LocalDateTime")## 时间类型
  10 +import java.time.LocalDateTime;
10 11 import org.springframework.format.annotation.DateTimeFormat;
11 12  
12 13 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/pageReqVO.vm
... ... @@ -6,8 +6,9 @@ import io.swagger.annotations.*;
6 6 import ${PageParamClassName};
7 7 ## 处理 Date 字段的引入
8 8 #foreach ($column in $columns)
9   -#if (${column.listOperation} && ${column.javaType} == "Date")## 时间类型
  9 +#if (${column.listOperation} && ${column.javaType} == "LocalDateTime")## 时间类型
10 10 import org.springframework.format.annotation.DateTimeFormat;
  11 +import java.time.LocalDateTime;
11 12  
12 13 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 14 #break
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/updateReqVO.vm
... ... @@ -7,9 +7,9 @@ import javax.validation.constraints.*;
7 7 ## 处理 Date 字段的引入
8 8 #foreach ($column in $columns)
9 9 #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult})
10   - && ${column.javaType} == "Date")## 时间类型
  10 + && ${column.javaType} == "LocalDateTime")## 时间类型
11 11 import org.springframework.format.annotation.DateTimeFormat;
12   -
  12 +import java.time.LocalDateTime;
13 13 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14 #break
15 15 #end
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/dal/do.vm
... ... @@ -5,7 +5,9 @@ import java.util.*;
5 5 #foreach ($column in $columns)
6 6 #if (${column.javaType} == "BigDecimal")
7 7 import java.math.BigDecimal;
8   -#break
  8 +#end
  9 +#if (${column.javaType} == "LocalDateTime")
  10 +import java.time.LocalDateTime;
9 11 #end
10 12 #end
11 13 import com.baomidou.mybatisplus.annotation.*;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/test/serviceTest.vm
... ... @@ -16,6 +16,7 @@ import ${PageResultClassName};
16 16 import javax.annotation.Resource;
17 17 import org.springframework.context.annotation.Import;
18 18 import java.util.*;
  19 +import java.time.LocalDateTime;
19 20  
20 21 import static cn.hutool.core.util.RandomUtil.*;
21 22 import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*;
... ... @@ -51,7 +52,7 @@ import static org.mockito.Mockito.*;
51 52 #if (${column.listOperation})
52 53 #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
53 54 #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况
54   - reqVO.set${JavaField}((new Date[]{}));
  55 + reqVO.set${JavaField}((new LocalDateTime[]{}));
55 56 #else
56 57 reqVO.set$JavaField(null);
57 58 #end
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm
... ... @@ -65,7 +65,7 @@
65 65 #set ($javaField = $column.javaField)
66 66 #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
67 67 #set ($comment=$column.columnComment)
68   -#if ($column.javaType == "Date")## 时间类型
  68 +#if ($column.javaType == "LocalDateTime")## 时间类型
69 69 <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
70 70 <template v-slot="scope">
71 71 <span>{{ parseTime(scope.row.${javaField}) }}</span>
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
... ... @@ -128,7 +128,7 @@ getList()
128 128 #foreach($column in $columns)
129 129 #if ($column.listOperationResult)
130 130 #set ($dictType=$column.dictType)
131   - #if ($column.javaType == "Date")## 时间类型
  131 + #if ($column.javaType == "LocalDateTime")## 时间类型
132 132 <template #${column.javaField}="{ row }">
133 133 <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span>
134 134 </template>
... ... @@ -185,7 +185,7 @@ getList()
185 185 #foreach($column in $columns)
186 186 #if ($column.listOperationResult)
187 187 #set ($dictType=$column.dictType)
188   - #if ($column.javaType == "Date")## 时间类型
  188 + #if ($column.javaType == "LocalDateTime")## 时间类型
189 189 <template #${column.javaField}="{ row }">
190 190 <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span>
191 191 </template>
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceTest.java
... ... @@ -19,12 +19,12 @@ import org.springframework.boot.test.mock.mockito.MockBean;
19 19 import org.springframework.context.annotation.Import;
20 20  
21 21 import javax.annotation.Resource;
22   -import java.util.Date;
  22 +import java.time.LocalDateTime;
23 23 import java.util.List;
24 24 import java.util.function.Consumer;
25 25  
26 26 import static cn.hutool.core.util.RandomUtil.randomEle;
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  27 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
28 28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
29 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
30 30 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -165,7 +165,7 @@ public class ConfigServiceTest extends BaseDbUnitTest {
165 165 o.setName("芋艿");
166 166 o.setConfigKey("yunai");
167 167 o.setType(ConfigTypeEnum.SYSTEM.getType());
168   - o.setCreateTime(buildTime(2021, 2, 1));
  168 + o.setCreateTime(buildLocalDateTime(2021, 2, 1));
169 169 });
170 170 configMapper.insert(dbConfig);
171 171 // 测试 name 不匹配
... ... @@ -175,13 +175,13 @@ public class ConfigServiceTest extends BaseDbUnitTest {
175 175 // 测试 type 不匹配
176 176 configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
177 177 // 测试 createTime 不匹配
178   - configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1))));
  178 + configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildLocalDateTime(2021, 1, 1))));
179 179 // 准备参数
180 180 ConfigPageReqVO reqVO = new ConfigPageReqVO();
181 181 reqVO.setName("艿");
182 182 reqVO.setKey("nai");
183 183 reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
184   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 15),buildTime(2021, 2, 15)}));
  184 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 15),buildLocalDateTime(2021, 2, 15)}));
185 185  
186 186 // 调用
187 187 PageResult<ConfigDO> pageResult = configService.getConfigPage(reqVO);
... ... @@ -198,7 +198,7 @@ public class ConfigServiceTest extends BaseDbUnitTest {
198 198 o.setName("芋艿");
199 199 o.setConfigKey("yunai");
200 200 o.setType(ConfigTypeEnum.SYSTEM.getType());
201   - o.setCreateTime(buildTime(2021, 2, 1));
  201 + o.setCreateTime(buildLocalDateTime(2021, 2, 1));
202 202 });
203 203 configMapper.insert(dbConfig);
204 204 // 测试 name 不匹配
... ... @@ -208,13 +208,13 @@ public class ConfigServiceTest extends BaseDbUnitTest {
208 208 // 测试 type 不匹配
209 209 configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
210 210 // 测试 createTime 不匹配
211   - configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1))));
  211 + configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildLocalDateTime(2021, 1, 1))));
212 212 // 准备参数
213 213 ConfigExportReqVO reqVO = new ConfigExportReqVO();
214 214 reqVO.setName("艿");
215 215 reqVO.setKey("nai");
216 216 reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
217   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 15),buildTime(2021, 2, 15)}));
  217 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 15),buildLocalDateTime(2021, 2, 15)}));
218 218  
219 219 // 调用
220 220 List<ConfigDO> list = configService.getConfigList(reqVO);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java
1 1 package cn.iocoder.yudao.module.infra.service.file;
2 2  
  3 +import cn.hutool.core.date.DatePattern;
  4 +import cn.hutool.core.date.LocalDateTimeUtil;
3 5 import cn.hutool.core.map.MapUtil;
4 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 7 import cn.iocoder.yudao.framework.file.core.client.FileClient;
... ... @@ -22,11 +24,11 @@ import org.springframework.context.annotation.Import;
22 24 import javax.annotation.Resource;
23 25 import javax.validation.Validator;
24 26 import java.io.Serializable;
25   -import java.util.Date;
  27 +import java.time.LocalDateTime;
26 28 import java.util.Map;
27 29  
28 30 import static cn.hutool.core.util.RandomUtil.randomEle;
29   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  31 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
30 32 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
31 33 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
32 34 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
... ... @@ -205,19 +207,19 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
205 207 // mock 数据
206 208 FileConfigDO dbFileConfig = randomFileConfigDO().setName("芋道源码")
207 209 .setStorage(FileStorageEnum.LOCAL.getStorage());
208   - dbFileConfig.setCreateTime(buildTime(2022, 11, 11));// 等会查询到
  210 + dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到
209 211 fileConfigMapper.insert(dbFileConfig);
210 212 // 测试 name 不匹配
211 213 fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码")));
212 214 // 测试 storage 不匹配
213 215 fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage())));
214 216 // 测试 createTime 不匹配
215   - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(buildTime(2022, 12, 12))));
  217 + fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN))));
216 218 // 准备参数
217 219 FileConfigPageReqVO reqVO = new FileConfigPageReqVO();
218 220 reqVO.setName("芋道");
219 221 reqVO.setStorage(FileStorageEnum.LOCAL.getStorage());
220   - reqVO.setCreateTime((new Date[]{buildTime(2022, 11, 10),buildTime(2022, 11, 12)}));
  222 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 11, 10),buildLocalDateTime(2022, 11, 12)}));
221 223  
222 224 // 调用
223 225 PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java
... ... @@ -15,9 +15,9 @@ import org.springframework.context.annotation.Import;
15 15  
16 16 import javax.annotation.Resource;
17 17  
18   -import java.util.Date;
  18 +import java.time.LocalDateTime;
19 19  
20   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  20 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
21 21 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
22 22 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
23 23 import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
... ... @@ -43,7 +43,7 @@ public class FileServiceTest extends BaseDbUnitTest {
43 43 FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到
44 44 o.setPath("yunai");
45 45 o.setType("image/jpg");
46   - o.setCreateTime(buildTime(2021, 1, 15));
  46 + o.setCreateTime(buildLocalDateTime(2021, 1, 15));
47 47 });
48 48 fileMapper.insert(dbFile);
49 49 // 测试 path 不匹配
... ... @@ -54,13 +54,13 @@ public class FileServiceTest extends BaseDbUnitTest {
54 54 }));
55 55 // 测试 createTime 不匹配
56 56 fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> {
57   - o.setCreateTime(buildTime(2020, 1, 15));
  57 + o.setCreateTime(buildLocalDateTime(2020, 1, 15));
58 58 }));
59 59 // 准备参数
60 60 FilePageReqVO reqVO = new FilePageReqVO();
61 61 reqVO.setPath("yunai");
62 62 reqVO.setType("jp");
63   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 10), buildTime(2021, 1, 20)}));
  63 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 10), buildLocalDateTime(2021, 1, 20)}));
64 64  
65 65 // 调用
66 66 PageResult<FileDO> pageResult = fileService.getFilePage(reqVO);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/job/JobLogServiceTest.java
... ... @@ -16,7 +16,7 @@ import java.util.ArrayList;
16 16 import java.util.List;
17 17  
18 18 import static cn.hutool.core.util.RandomUtil.randomEle;
19   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  19 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
20 20 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
21 21 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
22 22 import static org.junit.jupiter.api.Assertions.assertEquals;
... ... @@ -96,8 +96,8 @@ public class JobLogServiceTest extends BaseDbUnitTest {
96 96 o.setExecuteIndex(1);
97 97 o.setHandlerName("handlerName 单元测试");
98 98 o.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
99   - o.setBeginTime(buildTime(2021, 1, 8));
100   - o.setEndTime(buildTime(2021, 1, 8));
  99 + o.setBeginTime(buildLocalDateTime(2021, 1, 8));
  100 + o.setEndTime(buildLocalDateTime(2021, 1, 8));
101 101 });
102 102 jobLogMapper.insert(dbJobLog);
103 103 // 测试 jobId 不匹配
... ... @@ -105,9 +105,9 @@ public class JobLogServiceTest extends BaseDbUnitTest {
105 105 // 测试 handlerName 不匹配
106 106 jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString())));
107 107 // 测试 beginTime 不匹配
108   - jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7))));
  108 + jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildLocalDateTime(2021, 1, 7))));
109 109 // 测试 endTime 不匹配
110   - jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9))));
  110 + jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildLocalDateTime(2021, 1, 9))));
111 111 // 测试 status 不匹配
112 112 jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus())));
113 113 // 准备参数
... ... @@ -132,8 +132,8 @@ public class JobLogServiceTest extends BaseDbUnitTest {
132 132 o.setExecuteIndex(1);
133 133 o.setHandlerName("handlerName 单元测试");
134 134 o.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
135   - o.setBeginTime(buildTime(2021, 1, 8));
136   - o.setEndTime(buildTime(2021, 1, 8));
  135 + o.setBeginTime(buildLocalDateTime(2021, 1, 8));
  136 + o.setEndTime(buildLocalDateTime(2021, 1, 8));
137 137 });
138 138 jobLogMapper.insert(dbJobLog);
139 139 // 测试 jobId 不匹配
... ... @@ -141,9 +141,9 @@ public class JobLogServiceTest extends BaseDbUnitTest {
141 141 // 测试 handlerName 不匹配
142 142 jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString())));
143 143 // 测试 beginTime 不匹配
144   - jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7))));
  144 + jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildLocalDateTime(2021, 1, 7))));
145 145 // 测试 endTime 不匹配
146   - jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9))));
  146 + jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildLocalDateTime(2021, 1, 9))));
147 147 // 测试 status 不匹配
148 148 jobLogMapper.insert(ObjectUtils.cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus())));
149 149 // 准备参数
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/logger/ApiAccessLogServiceImplTest.java
... ... @@ -16,10 +16,10 @@ import org.junit.jupiter.api.Test;
16 16 import org.springframework.context.annotation.Import;
17 17  
18 18 import javax.annotation.Resource;
19   -import java.util.Date;
  19 +import java.time.LocalDateTime;
20 20 import java.util.List;
21 21  
22   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  22 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
23 23 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
24 24 import static org.junit.jupiter.api.Assertions.assertEquals;
25 25 import static org.junit.jupiter.api.Assertions.assertNotNull;
... ... @@ -40,7 +40,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
40 40 int userType = UserTypeEnum.ADMIN.getValue();
41 41 String applicationName = "yudao-test";
42 42 String requestUrl = "foo";
43   - Date beginTime = buildTime(2021, 3, 13);
  43 + LocalDateTime beginTime = buildLocalDateTime(2021, 3, 13);
44 44 int duration = 1000;
45 45 int resultCode = GlobalErrorCodeConstants.SUCCESS.getCode();
46 46  
... ... @@ -65,7 +65,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
65 65 // requestUrl 不同的
66 66 apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setRequestUrl("bar")));
67 67 // 构造一个早期时间 2021-02-06 00:00:00
68   - apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildTime(2021, 2, 6))));
  68 + apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildLocalDateTime(2021, 2, 6))));
69 69 // duration 不同的
70 70 apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setDuration(100)));
71 71 // resultCode 不同的
... ... @@ -77,7 +77,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
77 77 reqVO.setUserType(userType);
78 78 reqVO.setApplicationName(applicationName);
79 79 reqVO.setRequestUrl(requestUrl);
80   - reqVO.setBeginTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)}));
  80 + reqVO.setBeginTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 12),buildLocalDateTime(2021, 3, 14)}));
81 81 reqVO.setDuration(duration);
82 82 reqVO.setResultCode(resultCode);
83 83  
... ... @@ -97,7 +97,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
97 97 int userType = UserTypeEnum.ADMIN.getValue();
98 98 String applicationName = "yudao-test";
99 99 String requestUrl = "foo";
100   - Date beginTime = buildTime(2021, 3, 13);
  100 + LocalDateTime beginTime = buildLocalDateTime(2021, 3, 13);
101 101 int duration = 1000;
102 102 int resultCode = GlobalErrorCodeConstants.SUCCESS.getCode();
103 103  
... ... @@ -122,7 +122,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
122 122 // requestUrl 不同的
123 123 apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setRequestUrl("bar")));
124 124 // 构造一个早期时间 2021-02-06 00:00:00
125   - apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildTime(2021, 2, 6))));
  125 + apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildLocalDateTime(2021, 2, 6))));
126 126 // duration 不同的
127 127 apiAccessLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiAccessLogDO, logDO -> logDO.setDuration(100)));
128 128 // resultCode 不同的
... ... @@ -134,7 +134,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
134 134 reqVO.setUserType(userType);
135 135 reqVO.setApplicationName(applicationName);
136 136 reqVO.setRequestUrl(requestUrl);
137   - reqVO.setBeginTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)}));
  137 + reqVO.setBeginTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 12),buildLocalDateTime(2021, 3, 14)}));
138 138 reqVO.setDuration(duration);
139 139 reqVO.setResultCode(resultCode);
140 140  
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/logger/ApiErrorLogServiceImplTest.java
... ... @@ -17,10 +17,10 @@ import org.junit.jupiter.api.Test;
17 17 import org.springframework.context.annotation.Import;
18 18  
19 19 import javax.annotation.Resource;
20   -import java.util.Date;
  20 +import java.time.LocalDateTime;
21 21 import java.util.List;
22 22  
23   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  23 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
24 24 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
25 25 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
26 26 import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_NOT_FOUND;
... ... @@ -44,7 +44,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
44 44 int userType = UserTypeEnum.ADMIN.getValue();
45 45 String applicationName = "yudao-test";
46 46 String requestUrl = "foo";
47   - Date beginTime = buildTime(2021, 3, 13);
  47 + LocalDateTime beginTime = buildLocalDateTime(2021, 3, 13);
48 48 int progressStatus = ApiErrorLogProcessStatusEnum.INIT.getStatus();
49 49  
50 50 ApiErrorLogDO infApiErrorLogDO = RandomUtils.randomPojo(ApiErrorLogDO.class, logDO -> {
... ... @@ -67,7 +67,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
67 67 // requestUrl 不同的
68 68 infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setRequestUrl("bar")));
69 69 // 构造一个早期时间 2021-02-06 00:00:00
70   - infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6))));
  70 + infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildLocalDateTime(2021, 2, 6))));
71 71 // progressStatus 不同的
72 72 infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setProcessStatus(ApiErrorLogProcessStatusEnum.DONE.getStatus())));
73 73  
... ... @@ -77,7 +77,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
77 77 reqVO.setUserType(userType);
78 78 reqVO.setApplicationName(applicationName);
79 79 reqVO.setRequestUrl(requestUrl);
80   - reqVO.setExceptionTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)}));
  80 + reqVO.setExceptionTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 12),buildLocalDateTime(2021, 3, 14)}));
81 81 reqVO.setProcessStatus(progressStatus);
82 82  
83 83 // 调用service方法
... ... @@ -96,7 +96,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
96 96 int userType = UserTypeEnum.ADMIN.getValue();
97 97 String applicationName = "yudao-test";
98 98 String requestUrl = "foo";
99   - Date beginTime = buildTime(2021, 3, 13);
  99 + LocalDateTime beginTime = buildLocalDateTime(2021, 3, 13);
100 100 int progressStatus = ApiErrorLogProcessStatusEnum.INIT.getStatus();
101 101  
102 102 ApiErrorLogDO infApiErrorLogDO = RandomUtils.randomPojo(ApiErrorLogDO.class, logDO -> {
... ... @@ -119,7 +119,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
119 119 // requestUrl 不同的
120 120 infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setRequestUrl("bar")));
121 121 // 构造一个早期时间 2021-02-06 00:00:00
122   - infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6))));
  122 + infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildLocalDateTime(2021, 2, 6))));
123 123 // progressStatus 不同的
124 124 infApiErrorLogMapper.insert(ObjectUtils.cloneIgnoreId(infApiErrorLogDO, logDO -> logDO.setProcessStatus(ApiErrorLogProcessStatusEnum.DONE.getStatus())));
125 125  
... ... @@ -129,7 +129,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
129 129 reqVO.setUserType(userType);
130 130 reqVO.setApplicationName(applicationName);
131 131 reqVO.setRequestUrl(requestUrl);
132   - reqVO.setExceptionTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)}));
  132 + reqVO.setExceptionTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 12),buildLocalDateTime(2021, 3, 14)}));
133 133 reqVO.setProcessStatus(progressStatus);
134 134  
135 135 // 调用service方法
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/test/TestDemoServiceImplTest.java
... ... @@ -14,10 +14,10 @@ import org.junit.jupiter.api.Test;
14 14 import org.springframework.context.annotation.Import;
15 15  
16 16 import javax.annotation.Resource;
17   -import java.util.Date;
  17 +import java.time.LocalDateTime;
18 18 import java.util.List;
19 19  
20   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  20 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
21 21 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
22 22 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
23 23 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -112,7 +112,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest {
112 112 o.setType(1);
113 113 o.setCategory(2);
114 114 o.setRemark("哈哈哈");
115   - o.setCreateTime(DateUtils.buildTime(2021, 11, 11));
  115 + o.setCreateTime(DateUtils.buildLocalDateTime(2021, 11, 11));
116 116 });
117 117 testDemoMapper.insert(dbTestDemo);
118 118 // 测试 name 不匹配
... ... @@ -126,7 +126,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest {
126 126 // 测试 remark 不匹配
127 127 testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark("呵呵呵")));
128 128 // 测试 createTime 不匹配
129   - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(DateUtils.buildTime(2021, 12, 12))));
  129 + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2021, 12, 12))));
130 130 // 准备参数
131 131 TestDemoPageReqVO reqVO = new TestDemoPageReqVO();
132 132 reqVO.setName("芋道");
... ... @@ -134,7 +134,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest {
134 134 reqVO.setType(1);
135 135 reqVO.setCategory(2);
136 136 reqVO.setRemark("哈哈哈");
137   - reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)}));
  137 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 10),buildLocalDateTime(2021, 11, 12)}));
138 138  
139 139 // 调用
140 140 PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(reqVO);
... ... @@ -153,7 +153,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest {
153 153 o.setType(1);
154 154 o.setCategory(2);
155 155 o.setRemark("哈哈哈");
156   - o.setCreateTime(DateUtils.buildTime(2021, 11, 11));
  156 + o.setCreateTime(DateUtils.buildLocalDateTime(2021, 11, 11));
157 157 });
158 158 testDemoMapper.insert(dbTestDemo);
159 159 // 测试 name 不匹配
... ... @@ -167,7 +167,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest {
167 167 // 测试 remark 不匹配
168 168 testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark("呵呵呵")));
169 169 // 测试 createTime 不匹配
170   - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(DateUtils.buildTime(2021, 12, 12))));
  170 + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2021, 12, 12))));
171 171 // 准备参数
172 172 TestDemoExportReqVO reqVO = new TestDemoExportReqVO();
173 173 reqVO.setName("芋道");
... ... @@ -175,7 +175,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest {
175 175 reqVO.setType(1);
176 176 reqVO.setCategory(2);
177 177 reqVO.setRemark("哈哈哈");
178   - reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)}));
  178 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 10),buildLocalDateTime(2021, 11, 12)}));
179 179  
180 180 // 调用
181 181 List<TestDemoDO> list = testDemoService.getTestDemoList(reqVO);
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupon/vo/CouponBaseVO.java
1 1 package cn.iocoder.yudao.module.coupon.controller.admin.coupon.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import java.math.BigDecimal;
6 7 import io.swagger.annotations.*;
7 8 import javax.validation.constraints.*;
... ... @@ -90,21 +91,21 @@ public class CouponBaseVO {
90 91 @ApiModelProperty(value = "领取时间", required = true)
91 92 @NotNull(message = "领取时间不能为空")
92 93 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
93   - private Date fetchTime;
  94 + private LocalDateTime fetchTime;
94 95  
95 96 @ApiModelProperty(value = "使用时间", required = true)
96 97 @NotNull(message = "使用时间不能为空")
97 98 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
98   - private Date useTime;
  99 + private LocalDateTime useTime;
99 100  
100 101 @ApiModelProperty(value = "可使用的开始时间", required = true)
101 102 @NotNull(message = "可使用的开始时间不能为空")
102 103 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
103   - private Date startTime;
  104 + private LocalDateTime startTime;
104 105  
105 106 @ApiModelProperty(value = "有效期结束时间", required = true)
106 107 @NotNull(message = "有效期结束时间不能为空")
107 108 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
108   - private Date endTime;
  109 + private LocalDateTime endTime;
109 110  
110 111 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupon/vo/CouponExcelVO.java
1 1 package cn.iocoder.yudao.module.coupon.controller.admin.coupon.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import java.math.BigDecimal;
6   -import io.swagger.annotations.*;
7 7  
8 8 import com.alibaba.excel.annotation.ExcelProperty;
9 9  
... ... @@ -73,18 +73,18 @@ public class CouponExcelVO {
73 73 private Boolean getType;
74 74  
75 75 @ExcelProperty("领取时间")
76   - private Date fetchTime;
  76 + private LocalDateTime fetchTime;
77 77  
78 78 @ExcelProperty("使用时间")
79   - private Date useTime;
  79 + private LocalDateTime useTime;
80 80  
81 81 @ExcelProperty("可使用的开始时间")
82   - private Date startTime;
  82 + private LocalDateTime startTime;
83 83  
84 84 @ExcelProperty("有效期结束时间")
85   - private Date endTime;
  85 + private LocalDateTime endTime;
86 86  
87 87 @ExcelProperty("创建时间")
88   - private Date createTime;
  88 + private LocalDateTime createTime;
89 89  
90 90 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupon/vo/CouponExportReqVO.java
... ... @@ -3,9 +3,8 @@ package cn.iocoder.yudao.module.coupon.controller.admin.coupon.vo;
3 3 import lombok.*;
4 4  
5 5 import java.math.BigDecimal;
6   -import java.util.*;
  6 +import java.time.LocalDateTime;
7 7 import io.swagger.annotations.*;
8   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
9 8 import org.springframework.format.annotation.DateTimeFormat;
10 9  
11 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ... @@ -70,22 +69,22 @@ public class CouponExportReqVO {
70 69  
71 70 @ApiModelProperty(value = "领取时间")
72 71 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
73   - private Date[] fetchTime;
  72 + private LocalDateTime[] fetchTime;
74 73  
75 74 @ApiModelProperty(value = "使用时间")
76 75 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
77   - private Date[] useTime;
  76 + private LocalDateTime[] useTime;
78 77  
79 78 @ApiModelProperty(value = "可使用的开始时间")
80 79 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
81   - private Date[] startTime;
  80 + private LocalDateTime[] startTime;
82 81  
83 82 @ApiModelProperty(value = "有效期结束时间")
84 83 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
85   - private Date[] endTime;
  84 + private LocalDateTime[] endTime;
86 85  
87 86 @ApiModelProperty(value = "创建时间")
88 87 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
89   - private Date[] createTime;
  88 + private LocalDateTime[] createTime;
90 89  
91 90 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupon/vo/CouponPageReqVO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.coupon.controller.admin.coupon.vo;
3 3 import lombok.*;
4 4  
5 5 import java.math.BigDecimal;
6   -import java.util.*;
  6 +import java.time.LocalDateTime;
7 7 import io.swagger.annotations.*;
8 8 import cn.iocoder.yudao.framework.common.pojo.PageParam;
9 9 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -72,22 +72,22 @@ public class CouponPageReqVO extends PageParam {
72 72  
73 73 @ApiModelProperty(value = "领取时间")
74 74 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
75   - private Date[] fetchTime;
  75 + private LocalDateTime[] fetchTime;
76 76  
77 77 @ApiModelProperty(value = "使用时间")
78 78 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
79   - private Date[] useTime;
  79 + private LocalDateTime[] useTime;
80 80  
81 81 @ApiModelProperty(value = "可使用的开始时间")
82 82 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
83   - private Date[] startTime;
  83 + private LocalDateTime[] startTime;
84 84  
85 85 @ApiModelProperty(value = "有效期结束时间")
86 86 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
87   - private Date[] endTime;
  87 + private LocalDateTime[] endTime;
88 88  
89 89 @ApiModelProperty(value = "创建时间")
90 90 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
91   - private Date[] createTime;
  91 + private LocalDateTime[] createTime;
92 92  
93 93 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupon/vo/CouponRespVO.java
1 1 package cn.iocoder.yudao.module.coupon.controller.admin.coupon.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 优惠券 Response VO")
... ... @@ -14,6 +15,6 @@ public class CouponRespVO extends CouponBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/templete/vo/CouponTempleteBaseVO.java
1 1 package cn.iocoder.yudao.module.coupon.controller.admin.templete.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import java.math.BigDecimal;
6 7 import io.swagger.annotations.*;
7 8 import javax.validation.constraints.*;
... ... @@ -86,11 +87,11 @@ public class CouponTempleteBaseVO {
86 87  
87 88 @ApiModelProperty(value = "使用开始日期 过期类型1时必填")
88 89 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
89   - private Date startUseTime;
  90 + private LocalDateTime startUseTime;
90 91  
91 92 @ApiModelProperty(value = "使用结束日期 过期类型1时必填")
92 93 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
93   - private Date endUseTime;
  94 + private LocalDateTime endUseTime;
94 95  
95 96 @ApiModelProperty(value = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效")
96 97 @NotNull(message = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效不能为空")
... ... @@ -98,7 +99,7 @@ public class CouponTempleteBaseVO {
98 99  
99 100 @ApiModelProperty(value = "有效日期结束时间")
100 101 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
101   - private Date endTime;
  102 + private LocalDateTime endTime;
102 103  
103 104 /* ============过期类型——结束============= */
104 105  
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/templete/vo/CouponTempleteExcelVO.java
1 1 package cn.iocoder.yudao.module.coupon.controller.admin.templete.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import java.math.BigDecimal;
6 7  
7 8 import com.alibaba.excel.annotation.ExcelProperty;
... ... @@ -69,10 +70,10 @@ public class CouponTempleteExcelVO {
69 70 private Integer validityType;
70 71  
71 72 @ExcelProperty("使用开始日期 过期类型1时必填")
72   - private Date startUseTime;
  73 + private LocalDateTime startUseTime;
73 74  
74 75 @ExcelProperty("使用结束日期 过期类型1时必填")
75   - private Date endUseTime;
  76 + private LocalDateTime endUseTime;
76 77  
77 78 @ExcelProperty("当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效")
78 79 private Integer fixedTerm;
... ... @@ -111,9 +112,9 @@ public class CouponTempleteExcelVO {
111 112 private Integer status;
112 113  
113 114 @ExcelProperty("有效日期结束时间")
114   - private Date endTime;
  115 + private LocalDateTime endTime;
115 116  
116 117 @ExcelProperty("创建时间")
117   - private Date createTime;
  118 + private LocalDateTime createTime;
118 119  
119 120 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/templete/vo/CouponTempleteExportReqVO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.coupon.controller.admin.templete.vo;
3 3 import lombok.*;
4 4  
5 5 import java.math.BigDecimal;
6   -import java.util.*;
  6 +import java.time.LocalDateTime;
7 7 import io.swagger.annotations.*;
8 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
... ... @@ -66,11 +66,11 @@ public class CouponTempleteExportReqVO {
66 66  
67 67 @ApiModelProperty(value = "使用开始日期 过期类型1时必填")
68 68 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
69   - private Date[] startUseTime;
  69 + private LocalDateTime[] startUseTime;
70 70  
71 71 @ApiModelProperty(value = "使用结束日期 过期类型1时必填")
72 72 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
73   - private Date[] endUseTime;
  73 + private LocalDateTime[] endUseTime;
74 74  
75 75 @ApiModelProperty(value = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效")
76 76 private Integer fixedTerm;
... ... @@ -110,10 +110,10 @@ public class CouponTempleteExportReqVO {
110 110  
111 111 @ApiModelProperty(value = "有效日期结束时间")
112 112 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
113   - private Date[] endTime;
  113 + private LocalDateTime[] endTime;
114 114  
115 115 @ApiModelProperty(value = "创建时间")
116 116 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
117   - private Date[] createTime;
  117 + private LocalDateTime[] createTime;
118 118  
119 119 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/templete/vo/CouponTempletePageReqVO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.coupon.controller.admin.templete.vo;
3 3 import lombok.*;
4 4  
5 5 import java.math.BigDecimal;
6   -import java.util.*;
  6 +import java.time.LocalDateTime;
7 7 import io.swagger.annotations.*;
8 8 import cn.iocoder.yudao.framework.common.pojo.PageParam;
9 9 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -69,11 +69,11 @@ public class CouponTempletePageReqVO extends PageParam {
69 69  
70 70 @ApiModelProperty(value = "使用开始日期 过期类型1时必填")
71 71 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
72   - private Date[] startUseTime;
  72 + private LocalDateTime[] startUseTime;
73 73  
74 74 @ApiModelProperty(value = "使用结束日期 过期类型1时必填")
75 75 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
76   - private Date[] endUseTime;
  76 + private LocalDateTime[] endUseTime;
77 77  
78 78 @ApiModelProperty(value = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效")
79 79 private Integer fixedTerm;
... ... @@ -113,10 +113,10 @@ public class CouponTempletePageReqVO extends PageParam {
113 113  
114 114 @ApiModelProperty(value = "有效日期结束时间")
115 115 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
116   - private Date[] endTime;
  116 + private LocalDateTime[] endTime;
117 117  
118 118 @ApiModelProperty(value = "创建时间")
119 119 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
120   - private Date[] createTime;
  120 + private LocalDateTime[] createTime;
121 121  
122 122 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/templete/vo/CouponTempleteRespVO.java
1 1 package cn.iocoder.yudao.module.coupon.controller.admin.templete.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 优惠券模板 Response VO")
... ... @@ -14,6 +15,6 @@ public class CouponTempleteRespVO extends CouponTempleteBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/dal/dataobject/CouponTemplete/CouponTempleteDO.java
1 1 package cn.iocoder.yudao.module.coupon.dal.dataobject.CouponTemplete;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import java.math.BigDecimal;
6 7 import com.baomidou.mybatisplus.annotation.*;
7 8 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
... ... @@ -97,11 +98,11 @@ public class CouponTempleteDO extends BaseDO {
97 98 /**
98 99 * 使用开始日期 过期类型1时必填
99 100 */
100   - private Date startUseTime;
  101 + private LocalDateTime startUseTime;
101 102 /**
102 103 * 使用结束日期 过期类型1时必填
103 104 */
104   - private Date endUseTime;
  105 + private LocalDateTime endUseTime;
105 106 /**
106 107 * 当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效
107 108 */
... ... @@ -153,6 +154,6 @@ public class CouponTempleteDO extends BaseDO {
153 154 /**
154 155 * 有效日期结束时间
155 156 */
156   - private Date endTime;
  157 + private LocalDateTime endTime;
157 158  
158 159 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/dal/dataobject/coupon/CouponDO.java
... ... @@ -2,7 +2,8 @@ package cn.iocoder.yudao.module.coupon.dal.dataobject.coupon;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 4 import lombok.*;
5   -import java.util.*;
  5 +
  6 +import java.time.LocalDateTime;
6 7 import java.math.BigDecimal;
7 8 import com.baomidou.mybatisplus.annotation.*;
8 9  
... ... @@ -101,18 +102,18 @@ public class CouponDO extends BaseDO {
101 102 /**
102 103 * 领取时间
103 104 */
104   - private Date fetchTime;
  105 + private LocalDateTime fetchTime;
105 106 /**
106 107 * 使用时间
107 108 */
108   - private Date useTime;
  109 + private LocalDateTime useTime;
109 110 /**
110 111 * 可使用的开始时间
111 112 */
112   - private Date startTime;
  113 + private LocalDateTime startTime;
113 114 /**
114 115 * 有效期结束时间
115 116 */
116   - private Date endTime;
  117 + private LocalDateTime endTime;
117 118  
118 119 }
... ...
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerCreateReqVO.java
1 1 package cn.iocoder.yudao.module.market.controller.admin.banner.vo;
2 2  
3 3 import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9   -import java.util.Date;
10   -
11 8 /**
12 9 * @author xia
13 10 */
... ...
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerPageReqVO.java
... ... @@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode;
10 10 import lombok.ToString;
11 11 import org.springframework.format.annotation.DateTimeFormat;
12 12  
13   -import java.util.Date;
  13 +import java.time.LocalDateTime;
14 14  
15 15 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
16 16  
... ... @@ -33,6 +33,6 @@ public class BannerPageReqVO extends PageParam {
33 33  
34 34 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
35 35 @ApiModelProperty(value = "创建时间")
36   - private Date[] createTime;
  36 + private LocalDateTime[] createTime;
37 37  
38 38 }
... ...
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.ToString;
7 7  
8 8 import javax.validation.constraints.NotNull;
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * @author xia
... ... @@ -21,6 +21,6 @@ public class BannerRespVO extends BannerBaseVO {
21 21 private Long id;
22 22  
23 23 @ApiModelProperty(value = "创建时间", required = true)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25  
26 26 }
... ...
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/dataobject/discount/DiscountActivityDO.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.Data;
9 9 import lombok.EqualsAndHashCode;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * 限时折扣活动 DO
... ... @@ -42,11 +42,11 @@ public class DiscountActivityDO extends BaseDO {
42 42 /**
43 43 * 开始时间
44 44 */
45   - private Date startTime;
  45 + private LocalDateTime startTime;
46 46 /**
47 47 * 结束时间
48 48 */
49   - private Date endTime;
  49 + private LocalDateTime endTime;
50 50 /**
51 51 * 备注
52 52 */
... ...
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/dataobject/discount/DiscountProductDO.java
... ... @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
7 7 import lombok.Data;
8 8 import lombok.EqualsAndHashCode;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 /**
13 13 * 限时折扣商品 DO
... ... @@ -46,11 +46,11 @@ public class DiscountProductDO extends BaseDO {
46 46 /**
47 47 * 开始时间
48 48 */
49   - private Date startTime;
  49 + private LocalDateTime startTime;
50 50 /**
51 51 * 结束时间
52 52 */
53   - private Date endTime;
  53 + private LocalDateTime endTime;
54 54 /**
55 55 * 销售价格,单位:分
56 56 *
... ...
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/dataobject/reward/RewardActivityDO.java
... ... @@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
12 12 import lombok.Data;
13 13 import lombok.EqualsAndHashCode;
14 14  
15   -import java.util.Date;
  15 +import java.time.LocalDateTime;
16 16 import java.util.List;
17 17  
18 18 /**
... ... @@ -44,11 +44,11 @@ public class RewardActivityDO extends BaseDO {
44 44 /**
45 45 * 开始时间
46 46 */
47   - private Date startTime;
  47 + private LocalDateTime startTime;
48 48 /**
49 49 * 结束时间
50 50 */
51   - private Date endTime;
  51 + private LocalDateTime endTime;
52 52 /**
53 53 * 备注
54 54 */
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,6 +26,6 @@ public class ProductBrandPageReqVO extends PageParam {
26 26  
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 @ApiModelProperty(value = "创建时间")
29   - private Date[] createTime;
  29 + private LocalDateTime[] createTime;
30 30  
31 31 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 品牌 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class ProductBrandRespVO extends ProductBrandBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/ProductCategoryRespVO.java
1 1 package cn.iocoder.yudao.module.product.controller.admin.category.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 商品分类 Response VO")
... ... @@ -14,6 +15,6 @@ public class ProductCategoryRespVO extends ProductCategoryBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyAndValueRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.List;
12 12  
13 13 @ApiModel("管理后台 - 规格 + 规格值 Response VO")
... ... @@ -20,7 +20,7 @@ public class ProductPropertyAndValueRespVO extends ProductPropertyBaseVO {
20 20 private Long id;
21 21  
22 22 @ApiModelProperty(value = "创建时间", required = true)
23   - private Date createTime;
  23 + private LocalDateTime createTime;
24 24  
25 25 /**
26 26 * 规格值的集合
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,6 +26,6 @@ public class ProductPropertyPageReqVO extends PageParam {
26 26  
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 @ApiModelProperty(value = "创建时间")
29   - private Date[] createTime;
  29 + private LocalDateTime[] createTime;
30 30  
31 31 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 规格值 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class ProductPropertyValueRespVO extends ProductPropertyValueBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间")
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.List;
11 11  
12 12 @ApiModel("管理后台 - 商品sku Response VO")
... ... @@ -19,7 +19,7 @@ public class ProductSkuRespVO extends ProductSkuBaseVO {
19 19 private Long id;
20 20  
21 21 @ApiModelProperty(value = "创建时间")
22   - private Date createTime;
  22 + private LocalDateTime createTime;
23 23  
24 24 /**
25 25 * 规格值数组
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.List;
12 12  
13 13 @ApiModel(value = "管理后台 - 商品 SPU 详细 Response VO", description = "包括关联的 SKU 等信息")
... ... @@ -20,7 +20,7 @@ public class ProductSpuDetailRespVO extends ProductSpuBaseVO {
20 20 private Long id;
21 21  
22 22 @ApiModelProperty(value = "创建时间")
23   - private Date createTime;
  23 + private LocalDateTime createTime;
24 24  
25 25 /**
26 26 * SKU 数组
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuPageReqVO.java
1 1 package cn.iocoder.yudao.module.product.controller.admin.spu.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 8 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -46,6 +47,6 @@ public class ProductSpuPageReqVO extends PageParam {
46 47  
47 48 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
48 49 @ApiModelProperty(value = "创建时间")
49   - private Date[] createTime;
  50 + private LocalDateTime[] createTime;
50 51  
51 52 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuRespVO.java
... ... @@ -8,7 +8,7 @@ import lombok.Data;
8 8 import lombok.EqualsAndHashCode;
9 9 import lombok.ToString;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12 import java.util.List;
13 13  
14 14 // TODO @Luowenfeng:这个类只返回 SPU 相关的信息,删除 skus、categoryIds、productPropertyViews;明细使用 SpuDetailRespVO 替代
... ... @@ -22,7 +22,7 @@ public class ProductSpuRespVO extends ProductSpuBaseVO {
22 22 private Long id;
23 23  
24 24 @ApiModelProperty(value = "创建时间")
25   - private Date createTime;
  25 + private LocalDateTime createTime;
26 26  
27 27 /**
28 28 * SKU 数组
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java
... ... @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
10 10 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
11 11 import lombok.*;
12 12  
13   -import java.util.Date;
  13 +import java.time.LocalDateTime;
14 14 import java.util.List;
15 15  
16 16 /**
... ... @@ -117,7 +117,7 @@ public class ProductCommentDO extends BaseDO {
117 117 /**
118 118 * 商家回复时间
119 119 */
120   - private Date replyTime;
  120 + private LocalDateTime replyTime;
121 121  
122 122 /**
123 123 * 有用的计数
... ...
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/brand/ProductBrandServiceImplTest.java
... ... @@ -12,9 +12,10 @@ import org.junit.jupiter.api.Test;
12 12 import org.springframework.context.annotation.Import;
13 13  
14 14 import javax.annotation.Resource;
15   -import java.util.Date;
16 15  
17   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  16 +import java.time.LocalDateTime;
  17 +
  18 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
18 19 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
19 20 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
20 21 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -106,7 +107,7 @@ public class ProductBrandServiceImplTest extends BaseDbUnitTest {
106 107 ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class, o -> { // 等会查询到
107 108 o.setName("芋道源码");
108 109 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
109   - o.setCreateTime(buildTime(2022, 2, 1));
  110 + o.setCreateTime(buildLocalDateTime(2022, 2, 1));
110 111 });
111 112 brandMapper.insert(dbBrand);
112 113 // 测试 name 不匹配
... ... @@ -114,12 +115,12 @@ public class ProductBrandServiceImplTest extends BaseDbUnitTest {
114 115 // 测试 status 不匹配
115 116 brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
116 117 // 测试 createTime 不匹配
117   - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCreateTime(buildTime(2022, 3, 1))));
  118 + brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCreateTime(buildLocalDateTime(2022, 3, 1))));
118 119 // 准备参数
119 120 ProductBrandPageReqVO reqVO = new ProductBrandPageReqVO();
120 121 reqVO.setName("芋道");
121 122 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
122   - reqVO.setCreateTime((new Date[]{buildTime(2022, 1, 1), buildTime(2022, 2, 25)}));
  123 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 1, 1), buildLocalDateTime(2022, 2, 25)}));
123 124  
124 125 // 调用
125 126 PageResult<ProductBrandDO> pageResult = brandService.getBrandPage(reqVO);
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/TradeOrderItemRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8  
9 9 @ApiModel("交易订单项 Response VO")
10 10 @Data
... ... @@ -47,7 +47,7 @@ public class TradeOrderItemRespVO {
47 47 @ApiModelProperty(value = "售后订单编号")
48 48 private Integer afterSaleOrderId;
49 49 @ApiModelProperty(value = "创建时间", required = true)
50   - private Date createTime;
  50 + private LocalDateTime createTime;
51 51  
52 52  
53 53 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/TradeOrderRespVO.java
... ... @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.trade.controller.app.order.vo;
2 2  
3 3 import lombok.*;
4 4 import io.swagger.annotations.*;
  5 +
  6 +import java.time.LocalDateTime;
5 7 import java.util.*;
6 8  
7 9 @ApiModel("订单交易 Response VO")
... ... @@ -19,7 +21,7 @@ public class TradeOrderRespVO {
19 21 @ApiModelProperty(value = "备注")
20 22 private String remark;
21 23 @ApiModelProperty(value = "订单结束时间")
22   - private Date endTime;
  24 + private LocalDateTime endTime;
23 25 @ApiModelProperty(value = "订单金额(总金额),单位:分", required = true)
24 26 private Integer buyPrice;
25 27 @ApiModelProperty(value = "优惠总金额,单位:分", required = true)
... ... @@ -33,7 +35,7 @@ public class TradeOrderRespVO {
33 35 @ApiModelProperty(value = "退款金额,单位:分", required = true)
34 36 private Integer refundPrice;
35 37 @ApiModelProperty(value = "付款时间")
36   - private Date payTime;
  38 + private LocalDateTime payTime;
37 39 @ApiModelProperty(value = "支付订单编号")
38 40 private Integer payTransactionId;
39 41 @ApiModelProperty(value = "支付渠道")
... ... @@ -41,9 +43,9 @@ public class TradeOrderRespVO {
41 43 @ApiModelProperty(value = "配送类型", required = true)
42 44 private Integer deliveryType;
43 45 @ApiModelProperty(value = "发货时间")
44   - private Date deliveryTime;
  46 + private LocalDateTime deliveryTime;
45 47 @ApiModelProperty(value = "收货时间")
46   - private Date receiveTime;
  48 + private LocalDateTime receiveTime;
47 49 @ApiModelProperty(value = "收件人名称", required = true)
48 50 private String receiverName;
49 51 @ApiModelProperty(value = "手机号", required = true)
... ... @@ -57,7 +59,7 @@ public class TradeOrderRespVO {
57 59 @ApiModelProperty(value = "优惠劵编号")
58 60 private Integer couponCardId;
59 61 @ApiModelProperty(value = "创建时间", required = true)
60   - private Date createTime;
  62 + private LocalDateTime createTime;
61 63  
62 64 /**
63 65 * 订单项数组
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/cart/CartItemDO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.experimental.Accessors;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 购物车的商品信息 DO
... ... @@ -30,7 +30,7 @@ public class CartItemDO extends BaseDO {
30 30 /**
31 31 * 购物时间
32 32 */
33   - private Date buyTime; // basket_date
  33 + private LocalDateTime buyTime; // basket_date
34 34  
35 35 // ========= 基础字段 END =========
36 36  
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
... ... @@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
11 11 import com.baomidou.mybatisplus.annotation.TableName;
12 12 import lombok.*;
13 13  
14   -import java.util.Date;
  14 +import java.time.LocalDateTime;
15 15  
16 16 /**
17 17 * 交易订单 DO
... ... @@ -79,11 +79,11 @@ public class TradeOrderDO extends BaseDO {
79 79 /**
80 80 * 订单完成时间
81 81 */
82   - private Date finishTime;
  82 + private LocalDateTime finishTime;
83 83 /**
84 84 * 订单取消时间
85 85 */
86   - private Date cancelTime;
  86 + private LocalDateTime cancelTime;
87 87 /**
88 88 * 取消类型
89 89 *
... ... @@ -106,7 +106,7 @@ public class TradeOrderDO extends BaseDO {
106 106 /**
107 107 * 付款时间
108 108 */
109   - private Date payTime;
  109 + private LocalDateTime payTime;
110 110  
111 111 // ========== 价格 + 支付基本信息 ==========
112 112 // 价格文档 - 淘宝:https://open.taobao.com/docV3.htm?docId=108471&docType=1
... ... @@ -201,11 +201,11 @@ public class TradeOrderDO extends BaseDO {
201 201 /**
202 202 * 发货时间
203 203 */
204   - private Date deliveryTime;
  204 + private LocalDateTime deliveryTime;
205 205 /**
206 206 * 收货时间
207 207 */
208   - private Date receiveTime;
  208 + private LocalDateTime receiveTime;
209 209 /**
210 210 * 收件人名称
211 211 */
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/refund/TradeRefundDO.java
... ... @@ -12,7 +12,7 @@ import lombok.Data;
12 12 import lombok.EqualsAndHashCode;
13 13 import lombok.experimental.Accessors;
14 14  
15   -import java.util.Date;
  15 +import java.time.LocalDateTime;
16 16 import java.util.List;
17 17  
18 18 /**
... ... @@ -75,7 +75,7 @@ public class TradeRefundDO extends BaseDO {
75 75 /**
76 76 * 商家处理时间
77 77 */
78   - private Date handleTime; // handel_time
  78 + private LocalDateTime handleTime; // handel_time
79 79 /**
80 80 * 商家拒绝理由
81 81 */
... ... @@ -132,7 +132,7 @@ public class TradeRefundDO extends BaseDO {
132 132 /**
133 133 * 退货时间
134 134 */
135   - private Date returnDate; // ship_time
  135 + private LocalDateTime returnDate; // ship_time
136 136  
137 137 // ========== 收获相关 ==========
138 138  
... ... @@ -143,6 +143,6 @@ public class TradeRefundDO extends BaseDO {
143 143 /**
144 144 * 收货时间
145 145 */
146   - private Date receiveDate; // receive_time
  146 + private LocalDateTime receiveDate; // receive_time
147 147  
148 148 }
... ...
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/UserInfoDTO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.api.user.dto;
3 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import lombok.Data;
5 5  
6   -import java.util.Date;
  6 +import java.time.LocalDateTime;
7 7  
8 8 /**
9 9 * 用户信息 Response DTO
... ... @@ -47,6 +47,6 @@ public class UserInfoDTO {
47 47 /**
48 48 * 最后登录时间
49 49 */
50   - private Date loginDate;
  50 + private LocalDateTime loginDate;
51 51  
52 52 }
... ...
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/address/vo/AppAddressRespVO.java
1 1 package cn.iocoder.yudao.module.member.controller.app.address.vo;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +import java.time.LocalDateTime;
5 5 import io.swagger.annotations.*;
6 6  
7 7 @ApiModel("用户 APP - 用户收件地址 Response VO")
... ... @@ -14,6 +14,6 @@ public class AppAddressRespVO extends AppAddressBaseVO {
14 14 private Long id;
15 15  
16 16 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  17 + private LocalDateTime createTime;
18 18  
19 19 }
... ...
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthLoginRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Builder;
7 7 import lombok.Data;
8 8 import lombok.NoArgsConstructor;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("用户 APP - 登录 Response VO")
13 13 @Data
... ... @@ -26,6 +26,6 @@ public class AppAuthLoginRespVO {
26 26 private String refreshToken;
27 27  
28 28 @ApiModelProperty(value = "过期时间", required = true)
29   - private Date expiresTime;
  29 + private LocalDateTime expiresTime;
30 30  
31 31 }
... ...
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.*;
9 9 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * 会员用户 DO
... ... @@ -67,7 +67,7 @@ public class MemberUserDO extends TenantBaseDO {
67 67 /**
68 68 * 最后登录时间
69 69 */
70   - private Date loginDate;
  70 + private LocalDateTime loginDate;
71 71  
72 72 // TODO 芋艿:name 真实名字;
73 73 // TODO 芋艿:email 邮箱;
... ...
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
... ... @@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
19 19 import javax.annotation.Resource;
20 20 import javax.validation.Valid;
21 21 import java.io.InputStream;
22   -import java.util.Date;
  22 +import java.time.LocalDateTime;
23 23  
24 24 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
25 25 import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
... ... @@ -78,7 +78,7 @@ public class MemberUserServiceImpl implements MemberUserService {
78 78 @Override
79 79 public void updateUserLogin(Long id, String loginIp) {
80 80 memberUserMapper.updateById(new MemberUserDO().setId(id)
81   - .setLoginIp(loginIp).setLoginDate(new Date()));
  81 + .setLoginIp(loginIp).setLoginDate(LocalDateTime.now()));
82 82 }
83 83  
84 84 @Override
... ...
yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/order/PayOrderDataCreateReqDTO.java
... ... @@ -7,7 +7,7 @@ import javax.validation.constraints.DecimalMin;
7 7 import javax.validation.constraints.NotEmpty;
8 8 import javax.validation.constraints.NotNull;
9 9 import java.io.Serializable;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 /**
13 13 * 支付单创建 Request DTO
... ... @@ -60,6 +60,6 @@ public class PayOrderDataCreateReqDTO implements Serializable {
60 60 * 支付过期时间
61 61 */
62 62 @NotNull(message = "支付过期时间不能为空")
63   - private Date expireTime;
  63 + private LocalDateTime expireTime;
64 64  
65 65 }
66 66 \ No newline at end of file
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/app/PayAppExcelVO.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app;
3 3 import com.alibaba.excel.annotation.ExcelProperty;
4 4 import lombok.Data;
5 5  
6   -import java.util.Date;
  6 +import java.time.LocalDateTime;
7 7  
8 8 /**
9 9 * 支付应用信息 Excel VO
... ... @@ -35,6 +35,6 @@ public class PayAppExcelVO {
35 35 private Long merchantId;
36 36  
37 37 @ExcelProperty("创建时间")
38   - private Date createTime;
  38 + private LocalDateTime createTime;
39 39  
40 40 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/app/PayAppExportReqVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 7 import org.springframework.format.annotation.DateTimeFormat;
8 8  
9 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ... @@ -32,6 +32,6 @@ public class PayAppExportReqVO {
32 32  
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 34 @ApiModelProperty(value = "创建时间")
35   - private Date[] createTime;
  35 + private LocalDateTime[] createTime;
36 36  
37 37 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/app/PayAppPageItemRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.Set;
11 11  
12 12 @ApiModel(value = "管理后台 - 支付应用信息分页查询 Response VO", description = "相比于支付信息,还会多出应用渠道的开关信息")
... ... @@ -19,7 +19,7 @@ public class PayAppPageItemRespVO extends PayAppBaseVO {
19 19 private Long id;
20 20  
21 21 @ApiModelProperty(value = "创建时间", required = true)
22   - private Date createTime;
  22 + private LocalDateTime createTime;
23 23  
24 24 /**
25 25 * 所属商户
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/app/PayAppPageReqVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 8 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -34,6 +35,6 @@ public class PayAppPageReqVO extends PageParam {
34 35  
35 36 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
36 37 @ApiModelProperty(value = "创建时间")
37   - private Date[] createTime;
  38 + private LocalDateTime[] createTime;
38 39  
39 40 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/app/PayAppRespVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 支付应用信息 Response VO")
... ... @@ -14,6 +15,6 @@ public class PayAppRespVO extends PayAppBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/channel/PayChannelExcelVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.channel;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
5   -import io.swagger.annotations.*;
  4 +
  5 +import java.time.LocalDateTime;
6 6  
7 7 import com.alibaba.excel.annotation.ExcelProperty;
8 8  
... ... @@ -44,6 +44,6 @@ public class PayChannelExcelVO {
44 44 /// private String config;
45 45  
46 46 @ExcelProperty("创建时间")
47   - private Date createTime;
  47 + private LocalDateTime createTime;
48 48  
49 49 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/channel/PayChannelExportReqVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.channel;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 7 import org.springframework.format.annotation.DateTimeFormat;
8 8  
9 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ... @@ -35,6 +35,6 @@ public class PayChannelExportReqVO {
35 35  
36 36 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
37 37 @ApiModelProperty(value = "创建时间")
38   - private Date[] createTime;
  38 + private LocalDateTime[] createTime;
39 39  
40 40 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/channel/PayChannelPageReqVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.channel;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 8 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -37,6 +38,6 @@ public class PayChannelPageReqVO extends PageParam {
37 38  
38 39 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
39 40 @ApiModelProperty(value = "创建时间")
40   - private Date[] createTime;
  41 + private LocalDateTime[] createTime;
41 42  
42 43 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/channel/PayChannelRespVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.channel;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7  
7 8 @ApiModel("管理后台 - 支付渠道 Response VO")
... ... @@ -14,7 +15,7 @@ public class PayChannelRespVO extends PayChannelBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 @ApiModelProperty(value = "配置", required = true)
20 21 private String config;
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/merchant/PayMerchantExcelVO.java
... ... @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5 5 import com.alibaba.excel.annotation.ExcelProperty;
6 6 import lombok.Data;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 /**
11 11 * 支付商户信息 Excel VO
... ... @@ -35,6 +35,6 @@ public class PayMerchantExcelVO {
35 35 private String remark;
36 36  
37 37 @ExcelProperty("创建时间")
38   - private Date createTime;
  38 + private LocalDateTime createTime;
39 39  
40 40 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/merchant/PayMerchantExportReqVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.merchant;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 7 import org.springframework.format.annotation.DateTimeFormat;
8 8  
9 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
... ... @@ -29,6 +29,6 @@ public class PayMerchantExportReqVO {
29 29  
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31 31 @ApiModelProperty(value = "创建时间")
32   - private Date[] createTime;
  32 + private LocalDateTime[] createTime;
33 33  
34 34 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/merchant/PayMerchantPageReqVO.java
1 1 package cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.merchant;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
  4 +
  5 +import java.time.LocalDateTime;
5 6 import io.swagger.annotations.*;
6 7 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 8 import org.springframework.format.annotation.DateTimeFormat;
... ... @@ -31,6 +32,6 @@ public class PayMerchantPageReqVO extends PageParam {
31 32  
32 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
33 34 @ApiModelProperty(value = "创建时间")
34   - private Date[] createTime;
  35 + private LocalDateTime[] createTime;
35 36  
36 37 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/merchant/PayMerchantRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 支付商户信息 Response VO")
12 12 @Data
... ... @@ -18,7 +18,7 @@ public class PayMerchantRespVO extends PayMerchantBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 @ApiModelProperty(value = "商户号", required = true, example = "M233666999")
24 24 private String no;
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderBaseVO.java
... ... @@ -5,7 +5,7 @@ import lombok.Data;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -73,15 +73,15 @@ public class PayOrderBaseVO {
73 73 @ApiModelProperty(value = "订单失效时间", required = true)
74 74 @NotNull(message = "订单失效时间不能为空")
75 75 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
76   - private Date expireTime;
  76 + private LocalDateTime expireTime;
77 77  
78 78 @ApiModelProperty(value = "订单支付成功时间")
79 79 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
80   - private Date successTime;
  80 + private LocalDateTime successTime;
81 81  
82 82 @ApiModelProperty(value = "订单支付通知时间")
83 83 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
84   - private Date notifyTime;
  84 + private LocalDateTime notifyTime;
85 85  
86 86 @ApiModelProperty(value = "支付成功的订单拓展单编号")
87 87 private Long successExtensionId;
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderDetailsRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 支付订单详细信息 Response VO")
12 12 @Data
... ... @@ -27,7 +27,7 @@ public class PayOrderDetailsRespVO extends PayOrderBaseVO {
27 27 private String channelCodeName;
28 28  
29 29 @ApiModelProperty(value = "创建时间")
30   - private Date createTime;
  30 + private LocalDateTime createTime;
31 31  
32 32 /**
33 33 * 支付订单扩展
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.pay.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 支付订单Excel VO
... ... @@ -58,16 +58,16 @@ public class PayOrderExcelVO {
58 58 private String notifyUrl;
59 59  
60 60 @ExcelProperty("创建时间")
61   - private Date createTime;
  61 + private LocalDateTime createTime;
62 62  
63 63 @ExcelProperty("订单支付成功时间")
64   - private Date successTime;
  64 + private LocalDateTime successTime;
65 65  
66 66 @ExcelProperty("订单失效时间")
67   - private Date expireTime;
  67 + private LocalDateTime expireTime;
68 68  
69 69 @ExcelProperty("订单支付通知时间")
70   - private Date notifyTime;
  70 + private LocalDateTime notifyTime;
71 71  
72 72 @ExcelProperty(value = "渠道编号名称")
73 73 private String channelCodeName;
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -57,15 +57,15 @@ public class PayOrderExportReqVO {
57 57  
58 58 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
59 59 @ApiModelProperty(value = "订单失效时间")
60   - private Date[] expireTime;
  60 + private LocalDateTime[] expireTime;
61 61  
62 62 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
63 63 @ApiModelProperty(value = "开始订单支付成功时间")
64   - private Date[] successTime;
  64 + private LocalDateTime[] successTime;
65 65  
66 66 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
67 67 @ApiModelProperty(value = "开始订单支付通知时间")
68   - private Date[] notifyTime;
  68 + private LocalDateTime[] notifyTime;
69 69  
70 70 @ApiModelProperty(value = "支付成功的订单拓展单编号")
71 71 private Long successExtensionId;
... ... @@ -87,6 +87,6 @@ public class PayOrderExportReqVO {
87 87  
88 88 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
89 89 @ApiModelProperty(value = "创建时间")
90   - private Date[] createTime;
  90 + private LocalDateTime[] createTime;
91 91  
92 92 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderPageItemRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 支付订单分页 Request VO")
12 12 @Data
... ... @@ -18,7 +18,7 @@ public class PayOrderPageItemRespVO extends PayOrderBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 @ApiModelProperty(value = "商户名称")
24 24 private String merchantName;
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -62,15 +62,15 @@ public class PayOrderPageReqVO extends PageParam {
62 62  
63 63 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
64 64 @ApiModelProperty(value = "订单失效时间")
65   - private Date[] expireTime;
  65 + private LocalDateTime[] expireTime;
66 66  
67 67 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
68 68 @ApiModelProperty(value = "订单支付成功时间")
69   - private Date[] successTime;
  69 + private LocalDateTime[] successTime;
70 70  
71 71 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
72 72 @ApiModelProperty(value = "订单支付通知时间")
73   - private Date[] notifyTime;
  73 + private LocalDateTime[] notifyTime;
74 74  
75 75 @ApiModelProperty(value = "支付成功的订单拓展单编号")
76 76 private Long successExtensionId;
... ... @@ -92,6 +92,6 @@ public class PayOrderPageReqVO extends PageParam {
92 92  
93 93 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
94 94 @ApiModelProperty(value = "创建时间")
95   - private Date[] createTime;
  95 + private LocalDateTime[] createTime;
96 96  
97 97 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 支付订单 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class PayOrderRespVO extends PayOrderBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundBaseVO.java
... ... @@ -5,7 +5,7 @@ import lombok.Data;
5 5 import org.springframework.format.annotation.DateTimeFormat;
6 6  
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -97,14 +97,14 @@ public class PayRefundBaseVO {
97 97  
98 98 @ApiModelProperty(value = "退款失效时间")
99 99 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
100   - private Date expireTime;
  100 + private LocalDateTime expireTime;
101 101  
102 102 @ApiModelProperty(value = "退款成功时间")
103 103 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
104   - private Date successTime;
  104 + private LocalDateTime successTime;
105 105  
106 106 @ApiModelProperty(value = "退款通知时间")
107 107 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
108   - private Date notifyTime;
  108 + private LocalDateTime notifyTime;
109 109  
110 110 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundDetailsRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9 9 import javax.validation.constraints.NotNull;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 退款订单详情 Response VO")
13 13 @Data
... ... @@ -31,9 +31,9 @@ public class PayRefundDetailsRespVO extends PayRefundBaseVO {
31 31 private String subject;
32 32  
33 33 @ApiModelProperty(value = "创建时间")
34   - private Date createTime;
  34 + private LocalDateTime createTime;
35 35  
36 36 @ApiModelProperty(value = "更新时间")
37   - private Date updateTime;
  37 + private LocalDateTime updateTime;
38 38  
39 39 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.pay.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 退款订单 Excel VO
... ... @@ -74,15 +74,15 @@ public class PayRefundExcelVO {
74 74 private String channelRefundNo;
75 75  
76 76 @ExcelProperty("创建时间")
77   - private Date createTime;
  77 + private LocalDateTime createTime;
78 78  
79 79 @ExcelProperty("退款成功时间")
80   - private Date successTime;
  80 + private LocalDateTime successTime;
81 81  
82 82 @ExcelProperty("退款通知时间")
83   - private Date notifyTime;
  83 + private LocalDateTime notifyTime;
84 84  
85 85 @ExcelProperty("退款失效时间")
86   - private Date expireTime;
  86 + private LocalDateTime expireTime;
87 87  
88 88 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -78,18 +78,18 @@ public class PayRefundExportReqVO {
78 78  
79 79 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
80 80 @ApiModelProperty(value = "退款失效时间")
81   - private Date[] expireTime;
  81 + private LocalDateTime[] expireTime;
82 82  
83 83 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
84 84 @ApiModelProperty(value = "退款成功时间")
85   - private Date[] successTime;
  85 + private LocalDateTime[] successTime;
86 86  
87 87 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
88 88 @ApiModelProperty(value = "退款通知时间")
89   - private Date[] notifyTime;
  89 + private LocalDateTime[] notifyTime;
90 90  
91 91 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
92 92 @ApiModelProperty(value = "创建时间")
93   - private Date[] createTime;
  93 + private LocalDateTime[] createTime;
94 94  
95 95 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundPageItemRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 退款订单分页查询 Response VO")
12 12 @Data
... ... @@ -27,6 +27,6 @@ public class PayRefundPageItemRespVO extends PayRefundBaseVO {
27 27 private String channelCodeName;
28 28  
29 29 @ApiModelProperty(value = "创建时间", required = true)
30   - private Date createTime;
  30 + private LocalDateTime createTime;
31 31  
32 32 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -83,18 +83,18 @@ public class PayRefundPageReqVO extends PageParam {
83 83  
84 84 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
85 85 @ApiModelProperty(value = "退款失效时间")
86   - private Date[] expireTime;
  86 + private LocalDateTime[] expireTime;
87 87  
88 88 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
89 89 @ApiModelProperty(value = "退款成功时间")
90   - private Date[] successTime;
  90 + private LocalDateTime[] successTime;
91 91  
92 92 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
93 93 @ApiModelProperty(value = "退款通知时间")
94   - private Date[] notifyTime;
  94 + private LocalDateTime[] notifyTime;
95 95  
96 96 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
97 97 @ApiModelProperty(value = "创建时间")
98   - private Date[] createTime;
  98 + private LocalDateTime[] createTime;
99 99  
100 100 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/refund/vo/PayRefundRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 退款订单 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class PayRefundRespVO extends PayRefundBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/notify/PayNotifyTaskDO.java
... ... @@ -13,7 +13,7 @@ import lombok.Data;
13 13 import lombok.EqualsAndHashCode;
14 14 import lombok.experimental.Accessors;
15 15  
16   -import java.util.Date;
  16 +import java.time.LocalDateTime;
17 17  
18 18 /**
19 19 * 商户支付、退款等的通知
... ... @@ -80,11 +80,11 @@ public class PayNotifyTaskDO extends BaseDO {
80 80 /**
81 81 * 下一次通知时间
82 82 */
83   - private Date nextNotifyTime;
  83 + private LocalDateTime nextNotifyTime;
84 84 /**
85 85 * 最后一次执行时间
86 86 */
87   - private Date lastExecuteTime;
  87 + private LocalDateTime lastExecuteTime;
88 88 /**
89 89 * 当前通知次数
90 90 */
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/order/PayOrderDO.java
... ... @@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
12 12 import com.baomidou.mybatisplus.annotation.TableName;
13 13 import lombok.*;
14 14  
15   -import java.util.Date;
  15 +import java.time.LocalDateTime;
16 16  
17 17 /**
18 18 * 支付订单 DO
... ... @@ -117,15 +117,15 @@ public class PayOrderDO extends BaseDO {
117 117 /**
118 118 * 订单失效时间
119 119 */
120   - private Date expireTime;
  120 + private LocalDateTime expireTime;
121 121 /**
122 122 * 订单支付成功时间
123 123 */
124   - private Date successTime;
  124 + private LocalDateTime successTime;
125 125 /**
126 126 * 订单支付通知时间,即支付渠道的通知时间
127 127 */
128   - private Date notifyTime;
  128 + private LocalDateTime notifyTime;
129 129 /**
130 130 * 支付成功的订单拓展单编号
131 131 *
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/refund/PayRefundDO.java
... ... @@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
13 13 import com.baomidou.mybatisplus.annotation.TableName;
14 14 import lombok.*;
15 15  
16   -import java.util.Date;
  16 +import java.time.LocalDateTime;
17 17  
18 18 /**
19 19 * 支付退款单 DO
... ... @@ -183,15 +183,15 @@ public class PayRefundDO extends BaseDO {
183 183 * TODO
184 184 * 退款失效时间
185 185 */
186   - private Date expireTime;
  186 + private LocalDateTime expireTime;
187 187 /**
188 188 * 退款成功时间
189 189 */
190   - private Date successTime;
  190 + private LocalDateTime successTime;
191 191 /**
192 192 * 退款通知时间
193 193 */
194   - private Date notifyTime;
  194 + private LocalDateTime notifyTime;
195 195  
196 196  
197 197  
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/merchant/PayChannelMapper.java
... ... @@ -10,8 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10 10 import org.apache.ibatis.annotations.Mapper;
11 11 import org.apache.ibatis.annotations.Select;
12 12  
  13 +import java.time.LocalDateTime;
13 14 import java.util.Collection;
14   -import java.util.Date;
15 15 import java.util.List;
16 16  
17 17 @Mapper
... ... @@ -22,7 +22,7 @@ public interface PayChannelMapper extends BaseMapperX&lt;PayChannelDO&gt; {
22 22 }
23 23  
24 24 @Select("SELECT COUNT(*) FROM pay_channel WHERE update_time > #{maxUpdateTime}")
25   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  25 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
26 26  
27 27 default PageResult<PayChannelDO> selectPage(PayChannelPageReqVO reqVO) {
28 28 return selectPage(reqVO, new QueryWrapperX<PayChannelDO>()
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/notify/PayNotifyTaskCoreMapper.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
6 6 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
7 7 import org.apache.ibatis.annotations.Mapper;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.List;
11 11  
12 12 @Mapper
... ... @@ -24,7 +24,7 @@ public interface PayNotifyTaskCoreMapper extends BaseMapperX&lt;PayNotifyTaskDO&gt; {
24 24 return selectList(new QueryWrapper<PayNotifyTaskDO>()
25 25 .in("status", PayNotifyStatusEnum.WAITING.getStatus(), PayNotifyStatusEnum.REQUEST_SUCCESS.getStatus(),
26 26 PayNotifyStatusEnum.REQUEST_FAILURE.getStatus())
27   - .le("next_notify_time", new Date()));
  27 + .le("next_notify_time", LocalDateTime.now()));
28 28 }
29 29  
30 30 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/merchant/PayChannelServiceImpl.java
... ... @@ -28,8 +28,8 @@ import org.springframework.validation.annotation.Validated;
28 28 import javax.annotation.PostConstruct;
29 29 import javax.annotation.Resource;
30 30 import javax.validation.Validator;
  31 +import java.time.LocalDateTime;
31 32 import java.util.Collection;
32   -import java.util.Date;
33 33 import java.util.List;
34 34  
35 35 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -55,7 +55,7 @@ public class PayChannelServiceImpl implements PayChannelService {
55 55 /**
56 56 * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新
57 57 */
58   - private volatile Date maxUpdateTime;
  58 + private volatile LocalDateTime maxUpdateTime;
59 59  
60 60 @Resource
61 61 private PayClientFactory payClientFactory;
... ... @@ -101,7 +101,7 @@ public class PayChannelServiceImpl implements PayChannelService {
101 101 * @param maxUpdateTime 当前支付渠道的最大更新时间
102 102 * @return 支付渠道列表
103 103 */
104   - private List<PayChannelDO> loadPayChannelIfUpdate(Date maxUpdateTime) {
  104 + private List<PayChannelDO> loadPayChannelIfUpdate(LocalDateTime maxUpdateTime) {
105 105 // 第一步,判断是否要更新。
106 106 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
107 107 log.info("[loadPayChannelIfUpdate][首次加载全量支付渠道]");
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/notify/PayNotifyServiceImpl.java
... ... @@ -29,8 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
29 29  
30 30 import javax.annotation.Resource;
31 31 import javax.validation.Valid;
32   -import java.util.Calendar;
33   -import java.util.Date;
  32 +import java.time.LocalDateTime;
34 33 import java.util.List;
35 34 import java.util.Objects;
36 35 import java.util.concurrent.CountDownLatch;
... ... @@ -83,7 +82,7 @@ public class PayNotifyServiceImpl implements PayNotifyService {
83 82 public void createPayNotifyTask(PayNotifyTaskCreateReqDTO reqDTO) {
84 83 PayNotifyTaskDO task = new PayNotifyTaskDO();
85 84 task.setType(reqDTO.getType()).setDataId(reqDTO.getDataId());
86   - task.setStatus(PayNotifyStatusEnum.WAITING.getStatus()).setNextNotifyTime(new Date())
  85 + task.setStatus(PayNotifyStatusEnum.WAITING.getStatus()).setNextNotifyTime(LocalDateTime.now())
87 86 .setNotifyTimes(0).setMaxNotifyTimes(PayNotifyTaskDO.NOTIFY_FREQUENCY.length + 1);
88 87 // 补充 merchantId + appId + notifyUrl 字段
89 88 if (Objects.equals(task.getType(), PayNotifyTypeEnum.ORDER.getType())) {
... ... @@ -232,7 +231,7 @@ public class PayNotifyServiceImpl implements PayNotifyService {
232 231 // 设置通用的更新 PayNotifyTaskDO 的字段
233 232 PayNotifyTaskDO updateTask = new PayNotifyTaskDO()
234 233 .setId(task.getId())
235   - .setLastExecuteTime(new Date())
  234 + .setLastExecuteTime(LocalDateTime.now())
236 235 .setNotifyTimes(task.getNotifyTimes() + 1);
237 236  
238 237 // 情况一:调用成功
... ... @@ -247,7 +246,7 @@ public class PayNotifyServiceImpl implements PayNotifyService {
247 246 return updateTask.getStatus();
248 247 }
249 248 // 2.2 未超过最大回调次数
250   - updateTask.setNextNotifyTime(DateUtils.addDate(Calendar.SECOND, PayNotifyTaskDO.NOTIFY_FREQUENCY[updateTask.getNotifyTimes()]));
  249 + updateTask.setNextNotifyTime(LocalDateTime.now().plusSeconds(PayNotifyTaskDO.NOTIFY_FREQUENCY[updateTask.getNotifyTimes()]));
251 250 updateTask.setStatus(invokeException != null ? PayNotifyStatusEnum.REQUEST_FAILURE.getStatus()
252 251 : PayNotifyStatusEnum.REQUEST_SUCCESS.getStatus());
253 252 return updateTask.getStatus();
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java
... ... @@ -38,8 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
38 38 import org.springframework.validation.annotation.Validated;
39 39  
40 40 import javax.annotation.Resource;
  41 +import java.time.LocalDateTime;
41 42 import java.util.Collection;
42   -import java.util.Date;
43 43 import java.util.List;
44 44 import java.util.Objects;
45 45  
... ... @@ -204,7 +204,7 @@ public class PayOrderServiceImpl implements PayOrderService {
204 204 // 目前的算法
205 205 // 时间序列,年月日时分秒 14 位
206 206 // 纯随机,6 位 TODO 芋艿:此处估计是会有问题的,后续在调整
207   - return DateUtil.format(new Date(), "yyyyMMddHHmmss") + // 时间序列
  207 + return DateUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss") + // 时间序列
208 208 RandomUtil.randomInt(100000, 999999) // 随机。为什么是这个范围,因为偷懒
209 209 ;
210 210 }
... ... @@ -259,7 +259,7 @@ public class PayOrderServiceImpl implements PayOrderService {
259 259 PayOrderDO.builder().status(PayOrderStatusEnum.SUCCESS.getStatus()).channelId(channelId).channelCode(channel.getCode())
260 260 .successTime(notifyRespDTO.getSuccessTime()).successExtensionId(orderExtension.getId())
261 261 .channelOrderNo(notifyRespDTO.getChannelOrderNo()).channelUserId(notifyRespDTO.getChannelUserId())
262   - .notifyTime(new Date()).build());
  262 + .notifyTime(LocalDateTime.now()).build());
263 263 if (updateCounts == 0) { // 校验状态,必须是待支付
264 264 throw ServiceExceptionUtil.exception(ErrorCodeConstants.PAY_ORDER_STATUS_IS_NOT_WAITING);
265 265 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/dto/PayOrderCreateReqDTO.java
... ... @@ -7,7 +7,7 @@ import javax.validation.constraints.DecimalMin;
7 7 import javax.validation.constraints.NotEmpty;
8 8 import javax.validation.constraints.NotNull;
9 9 import java.io.Serializable;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 /**
13 13 * 支付单创建 Request DTO
... ... @@ -59,6 +59,6 @@ public class PayOrderCreateReqDTO implements Serializable {
59 59 * 支付过期时间
60 60 */
61 61 @NotNull(message = "支付过期时间不能为空")
62   - private Date expireTime;
  62 + private LocalDateTime expireTime;
63 63  
64 64 }
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceImpl.java
... ... @@ -40,7 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
40 40 import org.springframework.validation.annotation.Validated;
41 41  
42 42 import javax.annotation.Resource;
43   -import java.util.Date;
  43 +import java.time.LocalDateTime;
44 44 import java.util.List;
45 45 import java.util.Objects;
46 46  
... ... @@ -223,7 +223,7 @@ public class PayRefundServiceImpl implements PayRefundService {
223 223 .setSuccessTime(refundNotify.getRefundSuccessTime())
224 224 .setChannelRefundNo(refundNotify.getChannelOrderNo())
225 225 .setTradeNo(refundNotify.getTradeNo())
226   - .setNotifyTime(new Date())
  226 + .setNotifyTime(LocalDateTime.now())
227 227 .setStatus(PayRefundStatusEnum.SUCCESS.getStatus());
228 228 refundMapper.updateById(updateRefundDO);
229 229  
... ...
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/util/PaySeqUtils.java
... ... @@ -2,9 +2,8 @@ package cn.iocoder.yudao.module.pay.util;
2 2  
3 3 import cn.hutool.core.date.DatePattern;
4 4 import cn.hutool.core.date.DateUtil;
5   -import cn.hutool.core.util.RandomUtil;
6 5  
7   -import java.util.Date;
  6 +import java.time.LocalDateTime;
8 7 import java.util.concurrent.atomic.AtomicLong;
9 8  
10 9 /**
... ... @@ -25,7 +24,7 @@ public class PaySeqUtils {
25 24 */
26 25 public static String genMerchantRefundNo() {
27 26 return String.format("%s%s%04d", "MR",
28   - DateUtil.format(new Date(), DatePattern.PURE_DATETIME_MS_PATTERN),
  27 + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_MS_PATTERN),
29 28 (int) MER_REFUND_NO_SEQ.getAndIncrement() % 10000);
30 29 }
31 30  
... ... @@ -35,7 +34,7 @@ public class PaySeqUtils {
35 34 */
36 35 public static String genRefundReqNo() {
37 36 return String.format("%s%s%04d", "RR",
38   - DateUtil.format(new Date(), DatePattern.PURE_DATETIME_MS_PATTERN),
  37 + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_MS_PATTERN),
39 38 (int) REFUND_REQ_NO_SEQ.getAndIncrement() % 10000);
40 39 }
41 40  
... ... @@ -45,7 +44,7 @@ public class PaySeqUtils {
45 44 */
46 45 public static String genMerchantOrderNo() {
47 46 return String.format("%s%s%04d", "MO",
48   - DateUtil.format(new Date(), DatePattern.PURE_DATETIME_MS_PATTERN),
  47 + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_MS_PATTERN),
49 48 (int) MER_ORDER_NO_SEQ.getAndIncrement() % 10000);
50 49 }
51 50  
... ...
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/merchant/PayAppServiceTest.java
... ... @@ -18,11 +18,11 @@ import org.springframework.boot.test.mock.mockito.MockBean;
18 18 import org.springframework.context.annotation.Import;
19 19  
20 20 import javax.annotation.Resource;
  21 +import java.time.LocalDateTime;
21 22 import java.util.Collections;
22   -import java.util.Date;
23 23 import java.util.List;
24 24  
25   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  25 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
26 26 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
27 27 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
28 28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -123,7 +123,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
123 123 o.setPayNotifyUrl("https://www.hc.com");
124 124 o.setRefundNotifyUrl("https://www.xm.com");
125 125 o.setMerchantId(merchantId);
126   - o.setCreateTime(buildTime(2021,11,20));
  126 + o.setCreateTime(buildLocalDateTime(2021,11,20));
127 127 });
128 128  
129 129 // mock 数据
... ... @@ -134,7 +134,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
134 134 o.setShortName("灿灿子");
135 135 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
136 136 o.setRemark("灿哥的杂货铺");
137   - o.setCreateTime(buildTime(2021,11,3));
  137 + o.setCreateTime(buildLocalDateTime(2021,11,3));
138 138 });
139 139  
140 140 Mockito.when(payMerchantMapper.getMerchantListByName(dbMerchant.getName()))
... ... @@ -154,7 +154,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
154 154 // 测试 merchantId 不匹配
155 155 appMapper.insert(cloneIgnoreId(dbApp, o -> o.setMerchantId(mismatchMerchantId)));
156 156 // 测试 createTime 不匹配
157   - appMapper.insert(cloneIgnoreId(dbApp, o -> o.setCreateTime(buildTime(2021,12,21))));
  157 + appMapper.insert(cloneIgnoreId(dbApp, o -> o.setCreateTime(buildLocalDateTime(2021,12,21))));
158 158 // 准备参数
159 159 PayAppPageReqVO reqVO = new PayAppPageReqVO();
160 160 reqVO.setName("灿灿姐的杂货铺");
... ... @@ -163,7 +163,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
163 163 reqVO.setPayNotifyUrl("https://www.hc.com");
164 164 reqVO.setRefundNotifyUrl("https://www.xm.com");
165 165 reqVO.setMerchantName(dbMerchant.getName());
166   - reqVO.setCreateTime((new Date[]{buildTime(2021,11,19),buildTime(2021,11,21)}));
  166 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021,11,19),buildLocalDateTime(2021,11,21)}));
167 167  
168 168 // 调用
169 169 PageResult<PayAppDO> pageResult = appService.getAppPage(reqVO);
... ... @@ -186,7 +186,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
186 186 o.setPayNotifyUrl("https://www.hc.com");
187 187 o.setRefundNotifyUrl("https://www.xm.com");
188 188 o.setMerchantId(merchantId);
189   - o.setCreateTime(buildTime(2021,11,20));
  189 + o.setCreateTime(buildLocalDateTime(2021,11,20));
190 190 });
191 191  
192 192 // mock 数据
... ... @@ -197,7 +197,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
197 197 o.setShortName("灿灿子");
198 198 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
199 199 o.setRemark("灿哥的杂货铺");
200   - o.setCreateTime(buildTime(2021,11,3));
  200 + o.setCreateTime(buildLocalDateTime(2021,11,3));
201 201 });
202 202  
203 203 Mockito.when(payMerchantMapper.getMerchantListByName(dbMerchant.getName()))
... ... @@ -217,7 +217,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
217 217 // 测试 merchantId 不匹配
218 218 appMapper.insert(cloneIgnoreId(dbApp, o -> o.setMerchantId(mismatchMerchantId)));
219 219 // 测试 createTime 不匹配
220   - appMapper.insert(cloneIgnoreId(dbApp, o -> o.setCreateTime(buildTime(2021,12,21))));
  220 + appMapper.insert(cloneIgnoreId(dbApp, o -> o.setCreateTime(buildLocalDateTime(2021,12,21))));
221 221 // 准备参数
222 222 PayAppExportReqVO reqVO = new PayAppExportReqVO();
223 223 reqVO.setName("灿灿姐的杂货铺");
... ... @@ -226,7 +226,7 @@ public class PayAppServiceTest extends BaseDbUnitTest {
226 226 reqVO.setPayNotifyUrl("https://www.hc.com");
227 227 reqVO.setRefundNotifyUrl("https://www.xm.com");
228 228 reqVO.setMerchantName(dbMerchant.getName());
229   - reqVO.setCreateTime((new Date[]{buildTime(2021,11,19),buildTime(2021,11,21)}));
  229 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021,11,19),buildLocalDateTime(2021,11,21)}));
230 230  
231 231 // 调用
232 232 List<PayAppDO> list = appService.getAppList(reqVO);
... ...
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/merchant/PayChannelServiceTest.java
... ... @@ -20,10 +20,10 @@ import org.springframework.context.annotation.Import;
20 20  
21 21 import javax.annotation.Resource;
22 22 import javax.validation.Validator;
23   -import java.util.Date;
  23 +import java.time.LocalDateTime;
24 24 import java.util.List;
25 25  
26   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  26 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
27 27 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
28 28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
29 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -215,7 +215,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
215 215 o.setMerchantId(1L);
216 216 o.setAppId(1L);
217 217 o.setConfig(payClientConfig);
218   - o.setCreateTime(buildTime(2021,11,20));
  218 + o.setCreateTime(buildLocalDateTime(2021,11,20));
219 219 });
220 220 channelMapper.insert(dbChannel);
221 221 // 执行拷贝的时候会出现异常,所以在插入后要重置为null 后续在写入新的
... ... @@ -253,7 +253,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
253 253 // 测试 createTime 不匹配
254 254 channelMapper.insert(cloneIgnoreId(dbChannel, o -> {
255 255 o.setConfig(payClientConfig);
256   - o.setCreateTime(buildTime(2021, 10, 20));
  256 + o.setCreateTime(buildLocalDateTime(2021, 10, 20));
257 257 }));
258 258 // 准备参数
259 259 PayChannelPageReqVO reqVO = new PayChannelPageReqVO();
... ... @@ -264,7 +264,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
264 264 reqVO.setMerchantId(1L);
265 265 reqVO.setAppId(1L);
266 266 reqVO.setConfig(JSON.toJSONString(payClientConfig));
267   - reqVO.setCreateTime((new Date[]{buildTime(2021,11,19),buildTime(2021,11,21)}));
  267 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021,11,19),buildLocalDateTime(2021,11,21)}));
268 268  
269 269 // 调用
270 270 PageResult<PayChannelDO> pageResult = channelService.getChannelPage(reqVO);
... ... @@ -288,7 +288,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
288 288 o.setMerchantId(1L);
289 289 o.setAppId(1L);
290 290 o.setConfig(payClientConfig);
291   - o.setCreateTime(buildTime(2021,11,20));
  291 + o.setCreateTime(buildLocalDateTime(2021,11,20));
292 292 });
293 293 channelMapper.insert(dbChannel);
294 294 // 执行拷贝的时候会出现异常,所以在插入后要重置为null 后续在写入新的
... ... @@ -326,7 +326,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
326 326 // 测试 createTime 不匹配
327 327 channelMapper.insert(cloneIgnoreId(dbChannel, o -> {
328 328 o.setConfig(payClientConfig);
329   - o.setCreateTime(buildTime(2021, 10, 20));
  329 + o.setCreateTime(buildLocalDateTime(2021, 10, 20));
330 330 }));
331 331 // 准备参数
332 332 PayChannelExportReqVO reqVO = new PayChannelExportReqVO();
... ... @@ -337,7 +337,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
337 337 reqVO.setMerchantId(1L);
338 338 reqVO.setAppId(1L);
339 339 reqVO.setConfig(JSON.toJSONString(payClientConfig));
340   - reqVO.setCreateTime((new Date[]{buildTime(2021,11,19),buildTime(2021,11,21)}));
  340 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021,11,19),buildLocalDateTime(2021,11,21)}));
341 341  
342 342 // 调用
343 343 List<PayChannelDO> list = channelService.getChannelList(reqVO);
... ...
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/merchant/PayMerchantServiceTest.java
... ... @@ -14,10 +14,10 @@ import org.junit.jupiter.api.Test;
14 14 import org.springframework.context.annotation.Import;
15 15  
16 16 import javax.annotation.Resource;
17   -import java.util.Date;
  17 +import java.time.LocalDateTime;
18 18 import java.util.List;
19 19  
20   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  20 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
21 21 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
22 22 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
23 23 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -116,7 +116,7 @@ public class PayMerchantServiceTest extends BaseDbUnitTest {
116 116 o.setShortName("灿灿子");
117 117 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
118 118 o.setRemark("灿哥的杂货铺");
119   - o.setCreateTime(buildTime(2021,11,3));
  119 + o.setCreateTime(buildLocalDateTime(2021,11,3));
120 120 });
121 121 merchantMapper.insert(dbMerchant);
122 122 // 测试 no 不匹配
... ... @@ -130,7 +130,7 @@ public class PayMerchantServiceTest extends BaseDbUnitTest {
130 130 // 测试 remark 不匹配
131 131 merchantMapper.insert(cloneIgnoreId(dbMerchant, o -> o.setRemark("斌哥的杂货铺")));
132 132 // 测试 createTime 不匹配
133   - merchantMapper.insert(cloneIgnoreId(dbMerchant, o -> o.setCreateTime(buildTime(2022,12,4))));
  133 + merchantMapper.insert(cloneIgnoreId(dbMerchant, o -> o.setCreateTime(buildLocalDateTime(2022,12,4))));
134 134 // 准备参数
135 135 PayMerchantPageReqVO reqVO = new PayMerchantPageReqVO();
136 136 reqVO.setNo("M1008611");
... ... @@ -138,7 +138,7 @@ public class PayMerchantServiceTest extends BaseDbUnitTest {
138 138 reqVO.setShortName("灿灿子");
139 139 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
140 140 reqVO.setRemark("灿哥的杂货铺");
141   - reqVO.setCreateTime((new Date[]{buildTime(2021,11,2),buildTime(2021,11,4)}));
  141 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021,11,2),buildLocalDateTime(2021,11,4)}));
142 142  
143 143 // 调用
144 144 PageResult<PayMerchantDO> pageResult = merchantService.getMerchantPage(reqVO);
... ... @@ -157,7 +157,7 @@ public class PayMerchantServiceTest extends BaseDbUnitTest {
157 157 o.setShortName("灿灿子");
158 158 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
159 159 o.setRemark("灿哥的杂货铺");
160   - o.setCreateTime(buildTime(2021,11,3));
  160 + o.setCreateTime(buildLocalDateTime(2021,11,3));
161 161 });
162 162 merchantMapper.insert(dbMerchant);
163 163 // 测试 no 不匹配
... ... @@ -171,7 +171,7 @@ public class PayMerchantServiceTest extends BaseDbUnitTest {
171 171 // 测试 remark 不匹配
172 172 merchantMapper.insert(cloneIgnoreId(dbMerchant, o -> o.setRemark("斌哥的杂货铺")));
173 173 // 测试 createTime 不匹配
174   - merchantMapper.insert(cloneIgnoreId(dbMerchant, o -> o.setCreateTime(buildTime(2022,12,4))));
  174 + merchantMapper.insert(cloneIgnoreId(dbMerchant, o -> o.setCreateTime(buildLocalDateTime(2022,12,4))));
175 175 // 准备参数
176 176 PayMerchantExportReqVO reqVO = new PayMerchantExportReqVO();
177 177 reqVO.setNo("M1008611");
... ... @@ -179,7 +179,7 @@ public class PayMerchantServiceTest extends BaseDbUnitTest {
179 179 reqVO.setShortName("灿灿子");
180 180 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
181 181 reqVO.setRemark("灿哥的杂货铺");
182   - reqVO.setCreateTime((new Date[]{buildTime(2021,11,2),buildTime(2021,11,4)}));
  182 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021,11,2),buildLocalDateTime(2021,11,4)}));
183 183  
184 184 // 调用
185 185 List<PayMerchantDO> list = merchantService.getMerchantList(reqVO);
... ...
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java
... ... @@ -23,10 +23,10 @@ import org.springframework.boot.test.mock.mockito.MockBean;
23 23 import org.springframework.context.annotation.Import;
24 24  
25 25 import javax.annotation.Resource;
26   -import java.util.Date;
  26 +import java.time.LocalDateTime;
27 27 import java.util.List;
28 28  
29   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  29 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
30 30 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
31 31 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
32 32 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
... ... @@ -58,7 +58,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
58 58 private PayNotifyService notifyService;
59 59  
60 60 public String generateNo() {
61   - return DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999);
  61 + return DateUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999);
62 62 }
63 63  
64 64 @Test
... ... @@ -83,17 +83,17 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
83 83 o.setChannelFeeAmount(1L);
84 84 o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
85 85 o.setUserIp("127.0.0.1");
86   - o.setCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
87   - o.setExpireTime(DateUtils.buildTime(2018, 1, 1, 10, 30, 0));
88   - o.setSuccessTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 2));
89   - o.setNotifyTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
  86 + o.setCreateTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 1, 0));
  87 + o.setExpireTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 30, 0));
  88 + o.setSuccessTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 10, 2));
  89 + o.setNotifyTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 10, 15));
90 90 o.setSuccessExtensionId(1L);
91 91 o.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
92 92 o.setRefundTimes(0);
93 93 o.setRefundAmount(0L);
94 94 o.setChannelUserId("1008611");
95 95 o.setChannelOrderNo(channelOrderId);
96   - o.setUpdateTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
  96 + o.setUpdateTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 10, 15));
97 97 });
98 98 orderMapper.insert(dbOrder);
99 99 // 测试 merchantId 不匹配
... ... @@ -113,7 +113,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
113 113 // 测试 refundStatus 不匹配
114 114 orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setRefundStatus(PayRefundTypeEnum.ALL.getStatus())));
115 115 // 测试 createTime 不匹配
116   - orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setCreateTime(DateUtils.buildTime(2019, 1, 1, 10, 10,
  116 + orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2019, 1, 1, 10, 10,
117 117 1))));
118 118 // 准备参数
119 119 PayOrderPageReqVO reqVO = new PayOrderPageReqVO();
... ... @@ -125,7 +125,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
125 125 reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
126 126 reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
127 127 reqVO.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
128   - reqVO.setCreateTime((new Date[]{buildTime(2018, 1, 1, 10, 1, 0),buildTime(2018, 1, 1, 10, 1, 0)}));
  128 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2018, 1, 1, 10, 1, 0),buildLocalDateTime(2018, 1, 1, 10, 1, 0)}));
129 129 // 调用
130 130 PageResult<PayOrderDO> pageResult = orderService.getOrderPage(reqVO);
131 131 // 断言
... ... @@ -155,17 +155,17 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
155 155 o.setChannelFeeAmount(1L);
156 156 o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
157 157 o.setUserIp("127.0.0.1");
158   - o.setCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
159   - o.setExpireTime(DateUtils.buildTime(2018, 1, 1, 10, 30, 0));
160   - o.setSuccessTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 2));
161   - o.setNotifyTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
  158 + o.setCreateTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 1, 0));
  159 + o.setExpireTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 30, 0));
  160 + o.setSuccessTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 10, 2));
  161 + o.setNotifyTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 10, 15));
162 162 o.setSuccessExtensionId(1L);
163 163 o.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
164 164 o.setRefundTimes(0);
165 165 o.setRefundAmount(0L);
166 166 o.setChannelUserId("1008611");
167 167 o.setChannelOrderNo(channelOrderId);
168   - o.setUpdateTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
  168 + o.setUpdateTime(DateUtils.buildLocalDateTime(2018, 1, 1, 10, 10, 15));
169 169  
170 170 });
171 171 orderMapper.insert(dbOrder);
... ... @@ -186,7 +186,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
186 186 // 测试 refundStatus 不匹配
187 187 orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setRefundStatus(PayRefundTypeEnum.ALL.getStatus())));
188 188 // 测试 createTime 不匹配
189   - orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setCreateTime(DateUtils.buildTime(2019, 1, 1, 10, 10,
  189 + orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2019, 1, 1, 10, 10,
190 190 1))));
191 191 // 准备参数
192 192 PayOrderExportReqVO reqVO = new PayOrderExportReqVO();
... ... @@ -198,7 +198,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
198 198 reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
199 199 reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
200 200 reqVO.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
201   - reqVO.setCreateTime((new Date[]{buildTime(2018, 1, 1, 10, 1, 0),buildTime(2018, 1, 1, 10, 1, 0)}));
  201 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2018, 1, 1, 10, 1, 0),buildLocalDateTime(2018, 1, 1, 10, 1, 0)}));
202 202  
203 203 // 调用
204 204 List<PayOrderDO> list = orderService.getOrderList(reqVO);
... ...
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceTest.java
... ... @@ -22,10 +22,10 @@ import org.springframework.boot.test.mock.mockito.MockBean;
22 22 import org.springframework.context.annotation.Import;
23 23  
24 24 import javax.annotation.Resource;
25   -import java.util.Date;
  25 +import java.time.LocalDateTime;
26 26 import java.util.List;
27 27  
28   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  28 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
29 29 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
30 30 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
31 31 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
... ... @@ -78,11 +78,11 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
78 78 o.setChannelErrorCode("");
79 79 o.setChannelErrorMsg("");
80 80 o.setChannelExtras("");
81   - o.setExpireTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 30));
82   - o.setSuccessTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 15));
83   - o.setNotifyTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 20));
84   - o.setCreateTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 10));
85   - o.setUpdateTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 35));
  81 + o.setExpireTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 30));
  82 + o.setSuccessTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 15));
  83 + o.setNotifyTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 20));
  84 + o.setCreateTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 10));
  85 + o.setUpdateTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 35));
86 86 });
87 87 refundMapper.insert(dbRefund);
88 88 // 测试 merchantId 不匹配
... ... @@ -102,7 +102,7 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
102 102 refundMapper.insert(cloneIgnoreId(dbRefund, o -> o.setType(PayRefundTypeEnum.ALL.getStatus())));
103 103 // 测试 createTime 不匹配
104 104 refundMapper.insert(cloneIgnoreId(dbRefund, o ->
105   - o.setCreateTime(DateUtils.buildTime(2022, 1, 1, 10, 10, 10))));
  105 + o.setCreateTime(DateUtils.buildLocalDateTime(2022, 1, 1, 10, 10, 10))));
106 106 // 准备参数
107 107 PayRefundPageReqVO reqVO = new PayRefundPageReqVO();
108 108 reqVO.setMerchantId(1L);
... ... @@ -112,7 +112,7 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
112 112 reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
113 113 reqVO.setStatus(PayRefundStatusEnum.SUCCESS.getStatus());
114 114 reqVO.setType(PayRefundTypeEnum.SOME.getStatus());
115   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 1, 10, 10, 10),buildTime(2021, 1, 1, 10, 10, 12)}));
  115 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 1, 10, 10, 10),buildLocalDateTime(2021, 1, 1, 10, 10, 12)}));
116 116  
117 117 // 调用
118 118 PageResult<PayRefundDO> pageResult = refundService.getRefundPage(reqVO);
... ... @@ -147,11 +147,11 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
147 147 o.setChannelErrorCode("");
148 148 o.setChannelErrorMsg("");
149 149 o.setChannelExtras("");
150   - o.setExpireTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 30));
151   - o.setSuccessTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 15));
152   - o.setNotifyTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 20));
153   - o.setCreateTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 10));
154   - o.setUpdateTime(DateUtils.buildTime(2021, 1, 1, 10, 10, 35));
  150 + o.setExpireTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 30));
  151 + o.setSuccessTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 15));
  152 + o.setNotifyTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 20));
  153 + o.setCreateTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 10));
  154 + o.setUpdateTime(DateUtils.buildLocalDateTime(2021, 1, 1, 10, 10, 35));
155 155 });
156 156 refundMapper.insert(dbRefund);
157 157 // 测试 merchantId 不匹配
... ... @@ -171,7 +171,7 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
171 171 refundMapper.insert(cloneIgnoreId(dbRefund, o -> o.setType(PayRefundTypeEnum.ALL.getStatus())));
172 172 // 测试 createTime 不匹配
173 173 refundMapper.insert(cloneIgnoreId(dbRefund, o ->
174   - o.setCreateTime(DateUtils.buildTime(2022, 1, 1, 10, 10, 10))));
  174 + o.setCreateTime(DateUtils.buildLocalDateTime(2022, 1, 1, 10, 10, 10))));
175 175  
176 176 // 准备参数
177 177 PayRefundExportReqVO reqVO = new PayRefundExportReqVO();
... ... @@ -182,7 +182,7 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
182 182 reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
183 183 reqVO.setStatus(PayRefundStatusEnum.SUCCESS.getStatus());
184 184 reqVO.setType(PayRefundTypeEnum.SOME.getStatus());
185   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 1, 10, 10, 10),buildTime(2021, 1, 1, 10, 10, 12)}));
  185 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 1, 10, 10, 10),buildLocalDateTime(2021, 1, 1, 10, 10, 12)}));
186 186  
187 187 // 调用
188 188 List<PayRefundDO> list = refundService.getRefundList(reqVO);
... ...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/ErrorCodeApi.java
... ... @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReq
4 4 import cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO;
5 5  
6 6 import javax.validation.Valid;
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8 import java.util.List;
9 9  
10 10 /**
... ... @@ -30,6 +30,6 @@ public interface ErrorCodeApi {
30 30 * @param minUpdateTime 最小更新时间
31 31 * @return 错误码数组
32 32 */
33   - List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, Date minUpdateTime);
  33 + List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, LocalDateTime minUpdateTime);
34 34  
35 35 }
... ...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/dto/ErrorCodeRespDTO.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.api.errorcode.dto;
2 2  
3 3 import lombok.Data;
4 4  
5   -import java.util.Date;
  5 +import java.time.LocalDateTime;
6 6  
7 7 /**
8 8 * 错误码的 Response DTO
... ... @@ -23,6 +23,6 @@ public class ErrorCodeRespDTO {
23 23 /**
24 24 * 更新时间
25 25 */
26   - private Date updateTime;
  26 + private LocalDateTime updateTime;
27 27  
28 28 }
... ...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogCreateReqDTO.java
... ... @@ -4,7 +4,7 @@ import lombok.Data;
4 4  
5 5 import javax.validation.constraints.NotEmpty;
6 6 import javax.validation.constraints.NotNull;
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8 import java.util.Map;
9 9  
10 10 /**
... ... @@ -96,7 +96,7 @@ public class OperateLogCreateReqDTO {
96 96 * 开始时间
97 97 */
98 98 @NotNull(message = "开始时间不能为空")
99   - private Date startTime;
  99 + private LocalDateTime startTime;
100 100  
101 101 /**
102 102 * 执行时长,单位:毫秒
... ...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/oauth2/dto/OAuth2AccessTokenRespDTO.java
... ... @@ -4,7 +4,7 @@ import lombok.Data;
4 4 import lombok.experimental.Accessors;
5 5  
6 6 import java.io.Serializable;
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8  
9 9 /**
10 10 * OAuth2.0 访问令牌的信息 Response DTO
... ... @@ -34,6 +34,6 @@ public class OAuth2AccessTokenRespDTO implements Serializable {
34 34 /**
35 35 * 过期时间
36 36 */
37   - private Date expiresTime;
  37 + private LocalDateTime expiresTime;
38 38  
39 39 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/ErrorCodeApiImpl.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.service.errorcode.ErrorCodeService;
6 6 import org.springframework.stereotype.Service;
7 7  
8 8 import javax.annotation.Resource;
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.List;
11 11  
12 12 /**
... ... @@ -26,7 +26,7 @@ public class ErrorCodeApiImpl implements ErrorCodeApi {
26 26 }
27 27  
28 28 @Override
29   - public List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, Date minUpdateTime) {
  29 + public List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, LocalDateTime minUpdateTime) {
30 30 return errorCodeService.getErrorCodeList(applicationName, minUpdateTime);
31 31 }
32 32  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Builder;
7 7 import lombok.Data;
8 8 import lombok.NoArgsConstructor;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 登录 Response VO")
13 13 @Data
... ... @@ -26,6 +26,6 @@ public class AuthLoginRespVO {
26 26 private String refreshToken;
27 27  
28 28 @ApiModelProperty(value = "过期时间", required = true)
29   - private Date expiresTime;
  29 + private LocalDateTime expiresTime;
30 30  
31 31 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 @ApiModel("管理后台 - 部门信息 Response VO")
11 11 @Data
... ... @@ -19,6 +19,6 @@ public class DeptRespVO extends DeptBaseVO {
19 19 private Integer status;
20 20  
21 21 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
22   - private Date createTime;
  22 + private LocalDateTime createTime;
23 23  
24 24 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/post/PostRespVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 @ApiModel("管理后台 - 岗位信息 Response VO")
11 11 @Data
... ... @@ -16,6 +16,6 @@ public class PostRespVO extends PostBaseVO {
16 16 private Long id;
17 17  
18 18 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
19   - private Date createTime;
  19 + private LocalDateTime createTime;
20 20  
21 21 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import lombok.NoArgsConstructor;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 字典数据信息 Response VO")
13 13 @Data
... ... @@ -20,6 +20,6 @@ public class DictDataRespVO extends DictDataBaseVO {
20 20 private Long id;
21 21  
22 22 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
23   - private Date createTime;
  23 + private LocalDateTime createTime;
24 24  
25 25 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -24,6 +24,6 @@ public class DictTypeExportReqVO {
24 24  
25 25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26 26 @ApiModelProperty(value = "创建时间")
27   - private Date[] createTime;
  27 + private LocalDateTime[] createTime;
28 28  
29 29 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
10 10 import javax.validation.constraints.Size;
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -29,6 +29,6 @@ public class DictTypePageReqVO extends PageParam {
29 29  
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31 31 @ApiModelProperty(value = "创建时间")
32   - private Date[] createTime;
  32 + private LocalDateTime[] createTime;
33 33  
34 34 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import lombok.NoArgsConstructor;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 字典类型信息 Response VO")
13 13 @Data
... ... @@ -23,6 +23,6 @@ public class DictTypeRespVO extends DictTypeBaseVO {
23 23 private String type;
24 24  
25 25 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
26   - private Date createTime;
  26 + private LocalDateTime createTime;
27 27  
28 28 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/errorcode/vo/ErrorCodeExcelVO.java
... ... @@ -2,11 +2,10 @@ package cn.iocoder.yudao.module.system.controller.admin.errorcode.vo;
2 2  
3 3 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4 4 import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -//import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants;
6 5 import com.alibaba.excel.annotation.ExcelProperty;
7 6 import lombok.Data;
8 7  
9   -import java.util.Date;
  8 +import java.time.LocalDateTime;
10 9  
11 10 /**
12 11 * 错误码 Excel VO
... ... @@ -36,6 +35,6 @@ public class ErrorCodeExcelVO {
36 35 private String memo;
37 36  
38 37 @ExcelProperty("创建时间")
39   - private Date createTime;
  38 + private LocalDateTime createTime;
40 39  
41 40 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/errorcode/vo/ErrorCodeExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -27,6 +27,6 @@ public class ErrorCodeExportReqVO {
27 27  
28 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 29 @ApiModelProperty(value = "创建时间")
30   - private Date[] createTime;
  30 + private LocalDateTime[] createTime;
31 31  
32 32 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/errorcode/vo/ErrorCodePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -32,6 +32,6 @@ public class ErrorCodePageReqVO extends PageParam {
32 32  
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 34 @ApiModelProperty(value = "创建时间")
35   - private Date[] createTime;
  35 + private LocalDateTime[] createTime;
36 36  
37 37 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/errorcode/vo/ErrorCodeRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 错误码 Response VO")
12 12 @Data
... ... @@ -21,6 +21,6 @@ public class ErrorCodeRespVO extends ErrorCodeBaseVO {
21 21 private Integer type;
22 22  
23 23 @ApiModelProperty(value = "创建时间", required = true)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25  
26 26 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/loginlog/LoginLogExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 登录日志 Excel 导出响应 VO
... ... @@ -35,6 +35,6 @@ public class LoginLogExcelVO {
35 35 private String userAgent;
36 36  
37 37 @ExcelProperty("登录时间")
38   - private Date createTime;
  38 + private LocalDateTime createTime;
39 39  
40 40 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/loginlog/LoginLogExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -24,6 +24,6 @@ public class LoginLogExportReqVO {
24 24  
25 25 @ApiModelProperty(value = "登录时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
26 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27   - private Date[] createTime;
  27 + private LocalDateTime[] createTime;
28 28  
29 29 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/loginlog/LoginLogPageReqVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13  
... ... @@ -27,6 +27,6 @@ public class LoginLogPageReqVO extends PageParam {
27 27  
28 28 @ApiModelProperty(value = "登录时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
29 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30   - private Date[] createTime;
  30 + private LocalDateTime[] createTime;
31 31  
32 32 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/loginlog/LoginLogRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9 9 import javax.validation.constraints.NotNull;
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 登录日志 Response VO")
13 13 @Data
... ... @@ -26,6 +26,6 @@ public class LoginLogRespVO extends LoginLogBaseVO {
26 26 private Integer userType;
27 27  
28 28 @ApiModelProperty(value = "登录时间", required = true)
29   - private Date createTime;
  29 + private LocalDateTime createTime;
30 30  
31 31 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogBaseVO.java
... ... @@ -5,7 +5,7 @@ import lombok.Data;
5 5  
6 6 import javax.validation.constraints.NotEmpty;
7 7 import javax.validation.constraints.NotNull;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9 import java.util.Map;
10 10  
11 11 /**
... ... @@ -66,7 +66,7 @@ public class OperateLogBaseVO {
66 66  
67 67 @ApiModelProperty(value = "开始时间", required = true)
68 68 @NotNull(message = "开始时间不能为空")
69   - private Date startTime;
  69 + private LocalDateTime startTime;
70 70  
71 71 @ApiModelProperty(value = "执行时长,单位:毫秒", required = true)
72 72 @NotNull(message = "执行时长不能为空")
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 操作日志 Excel 导出响应 VO
... ... @@ -34,7 +34,7 @@ public class OperateLogExcelVO {
34 34 private String successStr;
35 35  
36 36 @ExcelProperty("操作日志")
37   - private Date startTime;
  37 + private LocalDateTime startTime;
38 38  
39 39 @ExcelProperty("执行时长")
40 40 private Integer duration;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -27,6 +27,6 @@ public class OperateLogExportReqVO {
27 27  
28 28 @ApiModelProperty(value = "开始时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
29 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30   - private Date[] startTime;
  30 + private LocalDateTime[] startTime;
31 31  
32 32 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java
... ... @@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
6 6 import lombok.Data;
7 7 import org.springframework.format.annotation.DateTimeFormat;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
12 12  
... ... @@ -28,6 +28,6 @@ public class OperateLogPageReqVO extends PageParam {
28 28  
29 29 @ApiModelProperty(value = "开始时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31   - private Date[] startTime;
  31 + private LocalDateTime[] startTime;
32 32  
33 33 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/notice/vo/NoticeRespVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 @ApiModel("管理后台 - 通知公告信息 Response VO")
11 11 @Data
... ... @@ -16,6 +16,6 @@ public class NoticeRespVO extends NoticeBaseVO {
16 16 private Long id;
17 17  
18 18 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
19   - private Date createTime;
  19 + private LocalDateTime createTime;
20 20  
21 21 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - OAuth2 客户端 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class OAuth2ClientRespVO extends OAuth2ClientBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.AllArgsConstructor;
6 6 import lombok.Data;
7 7 import lombok.NoArgsConstructor;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 访问令牌 Response VO")
12 12 @Data
... ... @@ -33,9 +33,9 @@ public class OAuth2AccessTokenRespVO {
33 33 private String clientId;
34 34  
35 35 @ApiModelProperty(value = "创建时间", required = true)
36   - private Date createTime;
  36 + private LocalDateTime createTime;
37 37  
38 38 @ApiModelProperty(value = "过期时间", required = true)
39   - private Date expiresTime;
  39 + private LocalDateTime expiresTime;
40 40  
41 41 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/menu/MenuRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import lombok.NoArgsConstructor;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @ApiModel("管理后台 - 菜单信息 Response VO")
13 13 @Data
... ... @@ -23,6 +23,6 @@ public class MenuRespVO extends MenuBaseVO {
23 23 private Integer status;
24 24  
25 25 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
26   - private Date createTime;
  26 + private LocalDateTime createTime;
27 27  
28 28 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RoleExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -24,6 +24,6 @@ public class RoleExportReqVO {
24 24  
25 25 @ApiModelProperty(value = "开始时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
26 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27   - private Date[] createTime;
  27 + private LocalDateTime[] createTime;
28 28  
29 29 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RolePageReqVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13  
... ... @@ -27,6 +27,6 @@ public class RolePageReqVO extends PageParam {
27 27  
28 28 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
29 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30   - private Date[] createTime;
  30 + private LocalDateTime[] createTime;
31 31  
32 32 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RoleRespVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
8 8 import lombok.NoArgsConstructor;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.Set;
12 12  
13 13 @ApiModel("管理后台 - 角色信息 Response VO")
... ... @@ -33,6 +33,6 @@ public class RoleRespVO extends RoleBaseVO {
33 33 private Integer type;
34 34  
35 35 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
36   - private Date createTime;
  36 + private LocalDateTime createTime;
37 37  
38 38 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sensitiveword/vo/SensitiveWordExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.List;
11 11  
12 12 /**
... ... @@ -34,6 +34,6 @@ public class SensitiveWordExcelVO {
34 34 private String description;
35 35  
36 36 @ExcelProperty("创建时间")
37   - private Date createTime;
  37 + private LocalDateTime createTime;
38 38  
39 39 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sensitiveword/vo/SensitiveWordExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -24,6 +24,6 @@ public class SensitiveWordExportReqVO {
24 24  
25 25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26 26 @ApiModelProperty(value = "创建时间")
27   - private Date[] createTime;
  27 + private LocalDateTime[] createTime;
28 28  
29 29 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sensitiveword/vo/SensitiveWordPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -29,6 +29,6 @@ public class SensitiveWordPageReqVO extends PageParam {
29 29  
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31 31 @ApiModelProperty(value = "创建时间")
32   - private Date[] createTime;
  32 + private LocalDateTime[] createTime;
33 33  
34 34 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sensitiveword/vo/SensitiveWordRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 敏感词 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class SensitiveWordRespVO extends SensitiveWordBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -26,6 +26,6 @@ public class SmsChannelPageReqVO extends PageParam {
26 26  
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 @ApiModelProperty(value = "创建时间")
29   - private Date[] createTime;
  29 + private LocalDateTime[] createTime;
30 30  
31 31 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 短信渠道 Response VO")
12 12 @Data
... ... @@ -21,6 +21,6 @@ public class SmsChannelRespVO extends SmsChannelBaseVO {
21 21 private String code;
22 22  
23 23 @ApiModelProperty(value = "创建时间", required = true)
24   - private Date createTime;
  24 + private LocalDateTime createTime;
25 25  
26 26 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java
... ... @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
7 7 import com.alibaba.excel.annotation.ExcelProperty;
8 8 import lombok.Data;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.Map;
12 12  
13 13 /**
... ... @@ -61,7 +61,7 @@ public class SmsLogExcelVO {
61 61 private Integer sendStatus;
62 62  
63 63 @ExcelProperty("发送时间")
64   - private Date sendTime;
  64 + private LocalDateTime sendTime;
65 65  
66 66 @ExcelProperty("发送结果的编码")
67 67 private Integer sendCode;
... ... @@ -86,7 +86,7 @@ public class SmsLogExcelVO {
86 86 private Integer receiveStatus;
87 87  
88 88 @ExcelProperty("接收时间")
89   - private Date receiveTime;
  89 + private LocalDateTime receiveTime;
90 90  
91 91 @ExcelProperty("API 接收结果的编码")
92 92 private String apiReceiveCode;
... ... @@ -95,6 +95,6 @@ public class SmsLogExcelVO {
95 95 private String apiReceiveMsg;
96 96  
97 97 @ExcelProperty("创建时间")
98   - private Date createTime;
  98 + private LocalDateTime createTime;
99 99  
100 100 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -27,13 +27,13 @@ public class SmsLogExportReqVO {
27 27  
28 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 29 @ApiModelProperty(value = "开始发送时间")
30   - private Date[] sendTime;
  30 + private LocalDateTime[] sendTime;
31 31  
32 32 @ApiModelProperty(value = "接收状态", example = "0")
33 33 private Integer receiveStatus;
34 34  
35 35 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
36 36 @ApiModelProperty(value = "开始接收时间")
37   - private Date[] receiveTime;
  37 + private LocalDateTime[] receiveTime;
38 38  
39 39 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -32,13 +32,13 @@ public class SmsLogPageReqVO extends PageParam {
32 32  
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 34 @ApiModelProperty(value = "发送时间")
35   - private Date[] sendTime;
  35 + private LocalDateTime[] sendTime;
36 36  
37 37 @ApiModelProperty(value = "接收状态", example = "0", notes = "参见 SmsReceiveStatusEnum 枚举类")
38 38 private Integer receiveStatus;
39 39  
40 40 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
41 41 @ApiModelProperty(value = "接收时间")
42   - private Date[] receiveTime;
  42 + private LocalDateTime[] receiveTime;
43 43  
44 44 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogRespVO.java
... ... @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
8 8 import java.util.Map;
9 9  
10 10 @ApiModel("管理后台 - 短信日志 Response VO")
... ... @@ -51,7 +51,7 @@ public class SmsLogRespVO {
51 51 private Integer sendStatus;
52 52  
53 53 @ApiModelProperty(value = "发送时间")
54   - private Date sendTime;
  54 + private LocalDateTime sendTime;
55 55  
56 56 @ApiModelProperty(value = "发送结果的编码", example = "0")
57 57 private Integer sendCode;
... ... @@ -75,7 +75,7 @@ public class SmsLogRespVO {
75 75 private Integer receiveStatus;
76 76  
77 77 @ApiModelProperty(value = "接收时间")
78   - private Date receiveTime;
  78 + private LocalDateTime receiveTime;
79 79  
80 80 @ApiModelProperty(value = "API 接收结果的编码", example = "DELIVRD")
81 81 private String apiReceiveCode;
... ... @@ -84,6 +84,6 @@ public class SmsLogRespVO {
84 84 private String apiReceiveMsg;
85 85  
86 86 @ApiModelProperty(value = "创建时间", required = true)
87   - private Date createTime;
  87 + private LocalDateTime createTime;
88 88  
89 89 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 短信模板 Excel VO
... ... @@ -50,6 +50,6 @@ public class SmsTemplateExcelVO {
50 50 private String channelCode;
51 51  
52 52 @ExcelProperty("创建时间")
53   - private Date createTime;
  53 + private LocalDateTime createTime;
54 54  
55 55 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -33,6 +33,6 @@ public class SmsTemplateExportReqVO {
33 33  
34 34 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
35 35 @ApiModelProperty(value = "创建时间")
36   - private Date[] createTime;
  36 + private LocalDateTime[] createTime;
37 37  
38 38 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplatePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -38,6 +38,6 @@ public class SmsTemplatePageReqVO extends PageParam {
38 38  
39 39 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
40 40 @ApiModelProperty(value = "创建时间")
41   - private Date[] createTime;
  41 + private LocalDateTime[] createTime;
42 42  
43 43 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.List;
11 11  
12 12 @ApiModel("管理后台 - 短信模板 Response VO")
... ... @@ -25,6 +25,6 @@ public class SmsTemplateRespVO extends SmsTemplateBaseVO {
25 25 private List<String> params;
26 26  
27 27 @ApiModelProperty(value = "创建时间", required = true)
28   - private Date createTime;
  28 + private LocalDateTime createTime;
29 29  
30 30 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackagePageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -29,5 +29,5 @@ public class TenantPackagePageReqVO extends PageParam {
29 29  
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31 31 @ApiModelProperty(value = "创建时间")
32   - private Date[] createTime;
  32 + private LocalDateTime[] createTime;
33 33 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackageRespVO.java
... ... @@ -6,7 +6,7 @@ import lombok.Data;
6 6 import lombok.EqualsAndHashCode;
7 7 import lombok.ToString;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 @ApiModel("管理后台 - 租户套餐 Response VO")
12 12 @Data
... ... @@ -18,6 +18,6 @@ public class TenantPackageRespVO extends TenantPackageBaseVO {
18 18 private Long id;
19 19  
20 20 @ApiModelProperty(value = "创建时间", required = true)
21   - private Date createTime;
  21 + private LocalDateTime createTime;
22 22  
23 23 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantBaseVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.*;
5 5 import org.hibernate.validator.constraints.URL;
6 6  
7 7 import javax.validation.constraints.*;
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 /**
11 11 * 租户 Base VO,提供给添加、修改、详细的子 VO 使用
... ... @@ -39,7 +39,7 @@ public class TenantBaseVO {
39 39  
40 40 @ApiModelProperty(value = "过期时间", required = true)
41 41 @NotNull(message = "过期时间不能为空")
42   - private Date expireTime;
  42 + private LocalDateTime expireTime;
43 43  
44 44 @ApiModelProperty(value = "账号数量", required = true, example = "1024")
45 45 @NotNull(message = "账号数量不能为空")
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantExcelVO.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;
2 2  
3 3 import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
4 4 import lombok.*;
5   -import java.util.*;
  5 +import java.time.LocalDateTime;
6 6  
7 7 import com.alibaba.excel.annotation.ExcelProperty;
8 8 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
... ... @@ -34,6 +34,6 @@ public class TenantExcelVO {
34 34 private Integer status;
35 35  
36 36 @ExcelProperty("创建时间")
37   - private Date createTime;
  37 + private LocalDateTime createTime;
38 38  
39 39 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantExportReqVO.java
... ... @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.Data;
6 6 import org.springframework.format.annotation.DateTimeFormat;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11  
... ... @@ -27,6 +27,6 @@ public class TenantExportReqVO {
27 27  
28 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 29 @ApiModelProperty(value = "创建时间")
30   - private Date[] createTime;
  30 + private LocalDateTime[] createTime;
31 31  
32 32 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java
... ... @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 8 import lombok.ToString;
9 9 import org.springframework.format.annotation.DateTimeFormat;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14  
... ... @@ -32,6 +32,6 @@ public class TenantPageReqVO extends PageParam {
32 32  
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 34 @ApiModelProperty(value = "创建时间")
35   - private Date[] createTime;
  35 + private LocalDateTime[] createTime;
36 36  
37 37 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;
2 2  
3 3 import lombok.*;
4   -import java.util.*;
5 4 import io.swagger.annotations.*;
6 5  
  6 +import java.time.LocalDateTime;
  7 +
7 8 @ApiModel("管理后台 - 租户 Response VO")
8 9 @Data
9 10 @EqualsAndHashCode(callSuper = true)
... ... @@ -14,6 +15,6 @@ public class TenantRespVO extends TenantBaseVO {
14 15 private Long id;
15 16  
16 17 @ApiModelProperty(value = "创建时间", required = true)
17   - private Date createTime;
  18 + private LocalDateTime createTime;
18 19  
19 20 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java
... ... @@ -8,7 +8,7 @@ import lombok.Data;
8 8 import lombok.EqualsAndHashCode;
9 9 import lombok.NoArgsConstructor;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12 import java.util.List;
13 13  
14 14  
... ... @@ -29,10 +29,10 @@ public class UserProfileRespVO extends UserBaseVO {
29 29 private String loginIp;
30 30  
31 31 @ApiModelProperty(value = "最后登录时间", required = true, example = "时间戳格式")
32   - private Date loginDate;
  32 + private LocalDateTime loginDate;
33 33  
34 34 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
35   - private Date createTime;
  35 + private LocalDateTime createTime;
36 36  
37 37 /**
38 38 * 所属角色
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExcelVO.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 6 import com.alibaba.excel.annotation.ExcelProperty;
7 7 import lombok.Data;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10  
11 11 /**
12 12 * 用户 Excel 导出 VO
... ... @@ -41,7 +41,7 @@ public class UserExcelVO {
41 41 private String loginIp;
42 42  
43 43 @ExcelProperty("最后登录时间")
44   - private Date loginDate;
  44 + private LocalDateTime loginDate;
45 45  
46 46 @ExcelProperty("部门名称")
47 47 private String deptName;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExportReqVO.java
... ... @@ -7,7 +7,7 @@ import lombok.Data;
7 7 import lombok.NoArgsConstructor;
8 8 import org.springframework.format.annotation.DateTimeFormat;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13  
... ... @@ -28,7 +28,7 @@ public class UserExportReqVO {
28 28  
29 29 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
30 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31   - private Date[] createTime;
  31 + private LocalDateTime[] createTime;
32 32  
33 33 @ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门")
34 34 private Long deptId;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
... ... @@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
9 9 import lombok.NoArgsConstructor;
10 10 import org.springframework.format.annotation.DateTimeFormat;
11 11  
12   -import java.util.Date;
  12 +import java.time.LocalDateTime;
13 13  
14 14 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
15 15  
... ... @@ -31,7 +31,7 @@ public class UserPageReqVO extends PageParam {
31 31  
32 32 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
33 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34   - private Date[] createTime;
  34 + private LocalDateTime[] createTime;
35 35  
36 36 @ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门")
37 37 private Long deptId;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
... ... @@ -4,7 +4,8 @@ import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5 import lombok.*;
6 6  
7   -import java.util.Date;
  7 +import java.time.LocalDateTime;
  8 +
8 9  
9 10 @ApiModel("管理后台 - 用户信息 Response VO")
10 11 @Data
... ... @@ -23,9 +24,9 @@ public class UserRespVO extends UserBaseVO {
23 24 private String loginIp;
24 25  
25 26 @ApiModelProperty(value = "最后登录时间", required = true, example = "时间戳格式")
26   - private Date loginDate;
  27 + private LocalDateTime loginDate;
27 28  
28 29 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
29   - private Date createTime;
  30 + private LocalDateTime createTime;
30 31  
31 32 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2OpenConvert.java
1 1 package cn.iocoder.yudao.module.system.convert.oauth2;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.iocoder.yudao.framework.common.core.KeyValue;
4 5 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
5 6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
... ... @@ -34,7 +35,7 @@ public interface OAuth2OpenConvert {
34 35  
35 36 default OAuth2OpenCheckTokenRespVO convert2(OAuth2AccessTokenDO bean) {
36 37 OAuth2OpenCheckTokenRespVO respVO = convert3(bean);
37   - respVO.setExp(bean.getExpiresTime().getTime() / 1000L);
  38 + respVO.setExp(LocalDateTimeUtil.toEpochMilli(bean.getExpiresTime()) / 1000L);
38 39 respVO.setUserType(UserTypeEnum.ADMIN.getValue());
39 40 return respVO;
40 41 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogDO.java
... ... @@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
12 12 import lombok.Data;
13 13 import lombok.EqualsAndHashCode;
14 14  
15   -import java.util.Date;
  15 +import java.time.LocalDateTime;
16 16 import java.util.Map;
17 17  
18 18 /**
... ... @@ -117,7 +117,7 @@ public class OperateLogDO extends BaseDO {
117 117 /**
118 118 * 开始时间
119 119 */
120   - private Date startTime;
  120 + private LocalDateTime startTime;
121 121 /**
122 122 * 执行时长,单位:毫秒
123 123 */
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java
... ... @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
10 10 import lombok.Data;
11 11 import lombok.EqualsAndHashCode;
12 12  
13   -import java.util.Date;
  13 +import java.time.LocalDateTime;
14 14 import java.util.List;
15 15  
16 16 /**
... ... @@ -64,6 +64,6 @@ public class OAuth2AccessTokenDO extends TenantBaseDO {
64 64 /**
65 65 * 过期时间
66 66 */
67   - private Date expiresTime;
  67 + private LocalDateTime expiresTime;
68 68  
69 69 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.Data;
9 9 import lombok.EqualsAndHashCode;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 /**
14 14 * OAuth2 批准 DO
... ... @@ -58,6 +58,6 @@ public class OAuth2ApproveDO extends BaseDO {
58 58 /**
59 59 * 过期时间
60 60 */
61   - private Date expiresTime;
  61 + private LocalDateTime expiresTime;
62 62  
63 63 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java
... ... @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
9 9 import lombok.Data;
10 10 import lombok.EqualsAndHashCode;
11 11  
12   -import java.util.Date;
  12 +import java.time.LocalDateTime;
13 13 import java.util.List;
14 14  
15 15 /**
... ... @@ -63,6 +63,6 @@ public class OAuth2CodeDO extends BaseDO {
63 63 /**
64 64 * 过期时间
65 65 */
66   - private Date expiresTime;
  66 + private LocalDateTime expiresTime;
67 67  
68 68 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java
... ... @@ -10,7 +10,7 @@ import lombok.Data;
10 10 import lombok.EqualsAndHashCode;
11 11 import lombok.experimental.Accessors;
12 12  
13   -import java.util.Date;
  13 +import java.time.LocalDateTime;
14 14 import java.util.List;
15 15  
16 16 /**
... ... @@ -58,6 +58,6 @@ public class OAuth2RefreshTokenDO extends BaseDO {
58 58 /**
59 59 * 过期时间
60 60 */
61   - private Date expiresTime;
  61 + private LocalDateTime expiresTime;
62 62  
63 63 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SmsCodeDO.java
... ... @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
5 5 import com.baomidou.mybatisplus.annotation.TableName;
6 6 import lombok.*;
7 7  
8   -import java.util.Date;
  8 +import java.time.LocalDateTime;
9 9  
10 10 /**
11 11 * 手机验证码 DO
... ... @@ -56,7 +56,7 @@ public class SmsCodeDO extends BaseDO {
56 56 /**
57 57 * 使用时间
58 58 */
59   - private Date usedTime;
  59 + private LocalDateTime usedTime;
60 60 /**
61 61 * 使用 IP
62 62 */
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SmsLogDO.java
... ... @@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
11 11 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
12 12 import lombok.*;
13 13  
14   -import java.util.Date;
  14 +import java.time.LocalDateTime;
15 15 import java.util.Map;
16 16  
17 17 /**
... ... @@ -114,7 +114,7 @@ public class SmsLogDO extends BaseDO {
114 114 /**
115 115 * 发送时间
116 116 */
117   - private Date sendTime;
  117 + private LocalDateTime sendTime;
118 118 /**
119 119 * 发送结果的编码
120 120 *
... ... @@ -162,7 +162,7 @@ public class SmsLogDO extends BaseDO {
162 162 /**
163 163 * 接收时间
164 164 */
165   - private Date receiveTime;
  165 + private LocalDateTime receiveTime;
166 166 /**
167 167 * 短信 API 接收结果的编码
168 168 */
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/tenant/TenantDO.java
... ... @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
7 7 import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.*;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11  
12 12 /**
13 13 * 租户 DO
... ... @@ -73,7 +73,7 @@ public class TenantDO extends BaseDO {
73 73 /**
74 74 * 过期时间
75 75 */
76   - private Date expireTime;
  76 + private LocalDateTime expireTime;
77 77 /**
78 78 * 账号数量
79 79 */
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
... ... @@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
11 11 import lombok.*;
12 12 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
13 13  
14   -import java.util.Date;
  14 +import java.time.LocalDateTime;
15 15 import java.util.Set;
16 16  
17 17 /**
... ... @@ -91,6 +91,6 @@ public class AdminUserDO extends TenantBaseDO {
91 91 /**
92 92 * 最后登录时间
93 93 */
94   - private Date loginDate;
  94 + private LocalDateTime loginDate;
95 95  
96 96 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9 import org.apache.ibatis.annotations.Select;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12 import java.util.List;
13 13  
14 14 @Mapper
... ... @@ -31,6 +31,6 @@ public interface DeptMapper extends BaseMapperX&lt;DeptDO&gt; {
31 31 }
32 32  
33 33 @Select("SELECT COUNT(*) FROM system_dept WHERE update_time > #{maxUpdateTime}")
34   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  34 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
35 35  
36 36 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/ErrorCodeMapper.java
... ... @@ -8,8 +8,8 @@ import cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodePag
8 8 import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10  
  11 +import java.time.LocalDateTime;
11 12 import java.util.Collection;
12   -import java.util.Date;
13 13 import java.util.List;
14 14  
15 15 @Mapper
... ... @@ -43,7 +43,7 @@ public interface ErrorCodeMapper extends BaseMapperX&lt;ErrorCodeDO&gt; {
43 43 return selectOne(new LambdaQueryWrapperX<ErrorCodeDO>().eq(ErrorCodeDO::getCode, code));
44 44 }
45 45  
46   - default List<ErrorCodeDO> selectListByApplicationNameAndUpdateTimeGt(String applicationName, Date minUpdateTime) {
  46 + default List<ErrorCodeDO> selectListByApplicationNameAndUpdateTimeGt(String applicationName, LocalDateTime minUpdateTime) {
47 47 return selectList(new LambdaQueryWrapperX<ErrorCodeDO>().eq(ErrorCodeDO::getApplicationName, applicationName)
48 48 .gtIfPresent(ErrorCodeDO::getUpdateTime, minUpdateTime));
49 49 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2AccessTokenMapper.java
... ... @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2Acc
7 7 import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10   -import java.util.Date;
  10 +import java.time.LocalDateTime;
11 11 import java.util.List;
12 12  
13 13 @Mapper
... ... @@ -26,7 +26,7 @@ public interface OAuth2AccessTokenMapper extends BaseMapperX&lt;OAuth2AccessTokenDO
26 26 .eqIfPresent(OAuth2AccessTokenDO::getUserId, reqVO.getUserId())
27 27 .eqIfPresent(OAuth2AccessTokenDO::getUserType, reqVO.getUserType())
28 28 .likeIfPresent(OAuth2AccessTokenDO::getClientId, reqVO.getClientId())
29   - .gt(OAuth2AccessTokenDO::getExpiresTime, new Date())
  29 + .gt(OAuth2AccessTokenDO::getExpiresTime, LocalDateTime.now())
30 30 .orderByDesc(OAuth2AccessTokenDO::getId));
31 31 }
32 32  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java
... ... @@ -8,7 +8,8 @@ import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9 import org.apache.ibatis.annotations.Select;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
  12 +
12 13  
13 14 /**
14 15 * OAuth2 客户端 Mapper
... ... @@ -30,6 +31,6 @@ public interface OAuth2ClientMapper extends BaseMapperX&lt;OAuth2ClientDO&gt; {
30 31 }
31 32  
32 33 @Select("SELECT COUNT(*) FROM system_oauth2_client WHERE update_time > #{maxUpdateTime}")
33   - int selectCountByUpdateTimeGt(Date maxUpdateTime);
  34 + int selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
34 35  
35 36 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/MenuMapper.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9 import org.apache.ibatis.annotations.Select;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12 import java.util.List;
13 13  
14 14 @Mapper
... ... @@ -29,6 +29,6 @@ public interface MenuMapper extends BaseMapperX&lt;MenuDO&gt; {
29 29 }
30 30  
31 31 @Select("SELECT COUNT(*) FROM system_menu WHERE update_time > #{maxUpdateTime}")
32   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  32 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
33 33  
34 34 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java
... ... @@ -11,8 +11,8 @@ import org.apache.ibatis.annotations.Mapper;
11 11 import org.apache.ibatis.annotations.Select;
12 12 import org.springframework.lang.Nullable;
13 13  
  14 +import java.time.LocalDateTime;
14 15 import java.util.Collection;
15   -import java.util.Date;
16 16 import java.util.List;
17 17  
18 18 @Mapper
... ... @@ -48,6 +48,6 @@ public interface RoleMapper extends BaseMapperX&lt;RoleDO&gt; {
48 48 }
49 49  
50 50 @Select("SELECT COUNT(*) FROM system_role WHERE update_time > #{maxUpdateTime}")
51   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  51 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
52 52  
53 53 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMenuMapper.java
... ... @@ -8,8 +8,8 @@ import org.apache.ibatis.annotations.Mapper;
8 8 import org.apache.ibatis.annotations.Select;
9 9 import org.springframework.stereotype.Repository;
10 10  
  11 +import java.time.LocalDateTime;
11 12 import java.util.Collection;
12   -import java.util.Date;
13 13 import java.util.List;
14 14  
15 15 @Mapper
... ... @@ -37,6 +37,6 @@ public interface RoleMenuMapper extends BaseMapperX&lt;RoleMenuDO&gt; {
37 37 }
38 38  
39 39 @Select("SELECT COUNT(*) FROM system_role_menu WHERE update_time > #{maxUpdateTime}")
40   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  40 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
41 41  
42 42 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java
... ... @@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6 6 import org.apache.ibatis.annotations.Mapper;
7 7 import org.apache.ibatis.annotations.Select;
8 8  
  9 +import java.time.LocalDateTime;
9 10 import java.util.Collection;
10   -import java.util.Date;
11 11 import java.util.List;
12 12  
13 13 @Mapper
... ... @@ -40,6 +40,6 @@ public interface UserRoleMapper extends BaseMapperX&lt;UserRoleDO&gt; {
40 40 }
41 41  
42 42 @Select("SELECT COUNT(*) FROM system_user_role WHERE update_time > #{maxUpdateTime}")
43   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  43 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
44 44  
45 45 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sensitiveword/SensitiveWordMapper.java
... ... @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.sensitiveword.SensitiveWord
9 9 import org.apache.ibatis.annotations.Mapper;
10 10 import org.apache.ibatis.annotations.Select;
11 11  
12   -import java.util.Date;
  12 +import java.time.LocalDateTime;
13 13 import java.util.List;
14 14  
15 15 /**
... ... @@ -43,6 +43,6 @@ public interface SensitiveWordMapper extends BaseMapperX&lt;SensitiveWordDO&gt; {
43 43 }
44 44  
45 45 @Select("SELECT COUNT(*) FROM system_sensitive_word WHERE update_time > #{maxUpdateTime}")
46   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  46 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
47 47  
48 48 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsChannelMapper.java
... ... @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9 import org.apache.ibatis.annotations.Select;
10 10  
11   -import java.util.Date;
  11 +import java.time.LocalDateTime;
12 12  
13 13 @Mapper
14 14 public interface SmsChannelMapper extends BaseMapperX<SmsChannelDO> {
... ... @@ -22,6 +22,6 @@ public interface SmsChannelMapper extends BaseMapperX&lt;SmsChannelDO&gt; {
22 22 }
23 23  
24 24 @Select("SELECT COUNT(*) FROM system_sms_channel WHERE update_time > #{maxUpdateTime}")
25   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  25 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
26 26  
27 27 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsTemplateMapper.java
... ... @@ -9,14 +9,14 @@ import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10 import org.apache.ibatis.annotations.Select;
11 11  
12   -import java.util.Date;
  12 +import java.time.LocalDateTime;
13 13 import java.util.List;
14 14  
15 15 @Mapper
16 16 public interface SmsTemplateMapper extends BaseMapperX<SmsTemplateDO> {
17 17  
18 18 @Select("SELECT COUNT(*) FROM system_sms_template WHERE update_time > #{maxUpdateTime}")
19   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  19 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
20 20  
21 21 default SmsTemplateDO selectByCode(String code) {
22 22 return selectOne(SmsTemplateDO::getCode, code);
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/TenantMapper.java
... ... @@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10 import org.apache.ibatis.annotations.Select;
11 11  
12   -import java.util.Date;
  12 +import java.time.LocalDateTime;
13 13 import java.util.List;
14 14  
15 15 /**
... ... @@ -53,6 +53,6 @@ public interface TenantMapper extends BaseMapperX&lt;TenantDO&gt; {
53 53 }
54 54  
55 55 @Select("SELECT COUNT(*) FROM system_tenant WHERE update_time > #{maxUpdateTime}")
56   - Long selectCountByUpdateTimeGt(Date maxUpdateTime);
  56 + Long selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
57 57  
58 58 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java
1 1 package cn.iocoder.yudao.module.system.dal.redis.oauth2;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
4 5 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
5 6 import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
... ... @@ -7,6 +8,8 @@ import org.springframework.data.redis.core.StringRedisTemplate;
7 8 import org.springframework.stereotype.Repository;
8 9  
9 10 import javax.annotation.Resource;
  11 +import java.time.LocalDateTime;
  12 +import java.time.temporal.ChronoUnit;
10 13 import java.util.Collection;
11 14 import java.util.List;
12 15 import java.util.concurrent.TimeUnit;
... ... @@ -33,8 +36,8 @@ public class OAuth2AccessTokenRedisDAO {
33 36 String redisKey = formatKey(accessTokenDO.getAccessToken());
34 37 // 清理多余字段,避免缓存
35 38 accessTokenDO.setUpdater(null).setUpdateTime(null).setCreateTime(null).setCreator(null).setDeleted(null);
36   - stringRedisTemplate.opsForValue().set(redisKey, JsonUtils.toJsonString(accessTokenDO),
37   - accessTokenDO.getExpiresTime().getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
  39 + long time = LocalDateTimeUtil.between(LocalDateTime.now(), accessTokenDO.getExpiresTime(), ChronoUnit.SECONDS);
  40 + stringRedisTemplate.opsForValue().set(redisKey, JsonUtils.toJsonString(accessTokenDO), time, TimeUnit.SECONDS);
38 41 }
39 42  
40 43 public void delete(String accessToken) {
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
... ... @@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
24 24  
25 25 import javax.annotation.PostConstruct;
26 26 import javax.annotation.Resource;
  27 +import java.time.LocalDateTime;
27 28 import java.util.*;
28 29  
29 30 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -64,7 +65,7 @@ public class DeptServiceImpl implements DeptService {
64 65 /**
65 66 * 缓存部门的最大更新时间,用于后续的增量轮询,判断是否有更新
66 67 */
67   - private volatile Date maxUpdateTime;
  68 + private volatile LocalDateTime maxUpdateTime;
68 69  
69 70 @Resource
70 71 private DeptMapper deptMapper;
... ... @@ -112,7 +113,7 @@ public class DeptServiceImpl implements DeptService {
112 113 * @param maxUpdateTime 当前部门的最大更新时间
113 114 * @return 部门列表
114 115 */
115   - protected List<DeptDO> loadDeptIfUpdate(Date maxUpdateTime) {
  116 + protected List<DeptDO> loadDeptIfUpdate(LocalDateTime maxUpdateTime) {
116 117 // 第一步,判断是否要更新。
117 118 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
118 119 log.info("[loadMenuIfUpdate][首次加载全量部门]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeService.java
... ... @@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeUpd
10 10 import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO;
11 11  
12 12 import javax.validation.Valid;
13   -import java.util.Date;
  13 +import java.time.LocalDateTime;
14 14 import java.util.List;
15 15  
16 16 /**
... ... @@ -36,7 +36,7 @@ public interface ErrorCodeService {
36 36 * @param minUpdateTime 最小更新时间
37 37 * @return 错误码数组
38 38 */
39   - List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, Date minUpdateTime);
  39 + List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, LocalDateTime minUpdateTime);
40 40  
41 41 /**
42 42 * 创建错误码
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeServiceImpl.java
... ... @@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
19 19 import org.springframework.validation.annotation.Validated;
20 20  
21 21 import javax.annotation.Resource;
22   -import java.util.Date;
  22 +import java.time.LocalDateTime;
23 23 import java.util.List;
24 24 import java.util.Map;
25 25  
... ... @@ -164,7 +164,7 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
164 164 }
165 165  
166 166 @Override
167   - public List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, Date minUpdateTime) {
  167 + public List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, LocalDateTime minUpdateTime) {
168 168 List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByApplicationNameAndUpdateTimeGt(
169 169 applicationName, minUpdateTime);
170 170 return ErrorCodeConvert.INSTANCE.convertList03(errorCodeDOs);
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImpl.java
... ... @@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
12 12 import org.springframework.validation.annotation.Validated;
13 13  
14 14 import javax.annotation.Resource;
  15 +import java.time.LocalDateTime;
15 16 import java.util.*;
16 17  
17 18 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
... ... @@ -46,7 +47,7 @@ public class OAuth2ApproveServiceImpl implements OAuth2ApproveService {
46 47 // gh-877 - if all scopes are auto approved, approvals still need to be added to the approval store.
47 48 Date expireTime = DateUtils.addDate(Calendar.SECOND, TIMEOUT);
48 49 for (String scope : requestedScopes) {
49   - saveApprove(userId, userType, clientId, scope, true, expireTime);
  50 + saveApprove(userId, userType, clientId, scope, true, DateUtils.dateToLocalDateTime(expireTime));
50 51 }
51 52 return true;
52 53 }
... ... @@ -73,7 +74,7 @@ public class OAuth2ApproveServiceImpl implements OAuth2ApproveService {
73 74 if (entry.getValue()) {
74 75 success = true;
75 76 }
76   - saveApprove(userId, userType, clientId, entry.getKey(), entry.getValue(), expireTime);
  77 + saveApprove(userId, userType, clientId, entry.getKey(), entry.getValue(), DateUtils.dateToLocalDateTime(expireTime));
77 78 }
78 79 return success;
79 80 }
... ... @@ -88,7 +89,7 @@ public class OAuth2ApproveServiceImpl implements OAuth2ApproveService {
88 89  
89 90 @VisibleForTesting
90 91 void saveApprove(Long userId, Integer userType, String clientId,
91   - String scope, Boolean approved, Date expireTime) {
  92 + String scope, Boolean approved, LocalDateTime expireTime) {
92 93 // 先更新
93 94 OAuth2ApproveDO approveDO = new OAuth2ApproveDO().setUserId(userId).setUserType(userType)
94 95 .setClientId(clientId).setScope(scope).setApproved(approved).setExpiresTime(expireTime);
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java
... ... @@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
23 23  
24 24 import javax.annotation.PostConstruct;
25 25 import javax.annotation.Resource;
  26 +import java.time.LocalDateTime;
26 27 import java.util.*;
27 28  
28 29 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -59,7 +60,7 @@ public class OAuth2ClientServiceImpl implements OAuth2ClientService {
59 60 * 缓存角色的最大更新时间,用于后续的增量轮询,判断是否有更新
60 61 */
61 62 @Getter
62   - private volatile Date maxUpdateTime;
  63 + private volatile LocalDateTime maxUpdateTime;
63 64  
64 65 @Resource
65 66 private OAuth2ClientMapper oauth2ClientMapper;
... ... @@ -97,7 +98,7 @@ public class OAuth2ClientServiceImpl implements OAuth2ClientService {
97 98 * @param maxUpdateTime 当前客户端的最大更新时间
98 99 * @return 客户端列表
99 100 */
100   - private List<OAuth2ClientDO> loadOAuth2ClientIfUpdate(Date maxUpdateTime) {
  101 + private List<OAuth2ClientDO> loadOAuth2ClientIfUpdate(LocalDateTime maxUpdateTime) {
101 102 // 第一步,判断是否要更新。
102 103 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
103 104 log.info("[loadOAuth2ClientIfUpdate][首次加载全量客户端]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImpl.java
... ... @@ -8,7 +8,7 @@ import org.springframework.stereotype.Service;
8 8 import org.springframework.validation.annotation.Validated;
9 9  
10 10 import javax.annotation.Resource;
11   -import java.util.Calendar;
  11 +import java.time.LocalDateTime;
12 12 import java.util.List;
13 13  
14 14 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -38,7 +38,7 @@ public class OAuth2CodeServiceImpl implements OAuth2CodeService {
38 38 OAuth2CodeDO codeDO = new OAuth2CodeDO().setCode(generateCode())
39 39 .setUserId(userId).setUserType(userType)
40 40 .setClientId(clientId).setScopes(scopes)
41   - .setExpiresTime(DateUtils.addDate(Calendar.SECOND, TIMEOUT))
  41 + .setExpiresTime(LocalDateTime.now().plusSeconds(TIMEOUT))
42 42 .setRedirectUri(redirectUri).setState(state);
43 43 oauth2CodeMapper.insert(codeDO);
44 44 return codeDO;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java
... ... @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
18 18 import org.springframework.transaction.annotation.Transactional;
19 19  
20 20 import javax.annotation.Resource;
  21 +import java.time.LocalDateTime;
21 22 import java.util.Calendar;
22 23 import java.util.List;
23 24  
... ... @@ -137,7 +138,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
137 138 .setUserId(refreshTokenDO.getUserId()).setUserType(refreshTokenDO.getUserType())
138 139 .setClientId(clientDO.getClientId()).setScopes(refreshTokenDO.getScopes())
139 140 .setRefreshToken(refreshTokenDO.getRefreshToken())
140   - .setExpiresTime(DateUtils.addDate(Calendar.SECOND, clientDO.getAccessTokenValiditySeconds()));
  141 + .setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getAccessTokenValiditySeconds()));
141 142 accessTokenDO.setTenantId(TenantContextHolder.getTenantId()); // 手动设置租户编号,避免缓存到 Redis 的时候,无对应的租户编号
142 143 oauth2AccessTokenMapper.insert(accessTokenDO);
143 144 // 记录到 Redis 中
... ... @@ -149,7 +150,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
149 150 OAuth2RefreshTokenDO refreshToken = new OAuth2RefreshTokenDO().setRefreshToken(generateRefreshToken())
150 151 .setUserId(userId).setUserType(userType)
151 152 .setClientId(clientDO.getClientId()).setScopes(scopes)
152   - .setExpiresTime(DateUtils.addDate(Calendar.SECOND, clientDO.getRefreshTokenValiditySeconds()));
  153 + .setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getRefreshTokenValiditySeconds()));
153 154 oauth2RefreshTokenMapper.insert(refreshToken);
154 155 return refreshToken;
155 156 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java
... ... @@ -28,6 +28,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
28 28  
29 29 import javax.annotation.PostConstruct;
30 30 import javax.annotation.Resource;
  31 +import java.time.LocalDateTime;
31 32 import java.util.*;
32 33 import java.util.stream.Collectors;
33 34  
... ... @@ -66,7 +67,7 @@ public class MenuServiceImpl implements MenuService {
66 67 /**
67 68 * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新
68 69 */
69   - private volatile Date maxUpdateTime;
  70 + private volatile LocalDateTime maxUpdateTime;
70 71  
71 72 @Resource
72 73 private MenuMapper menuMapper;
... ... @@ -118,7 +119,7 @@ public class MenuServiceImpl implements MenuService {
118 119 * @param maxUpdateTime 当前菜单的最大更新时间
119 120 * @return 菜单列表
120 121 */
121   - private List<MenuDO> loadMenuIfUpdate(Date maxUpdateTime) {
  122 + private List<MenuDO> loadMenuIfUpdate(LocalDateTime maxUpdateTime) {
122 123 // 第一步,判断是否要更新。
123 124 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
124 125 log.info("[loadMenuIfUpdate][首次加载全量菜单]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java
... ... @@ -40,6 +40,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
40 40  
41 41 import javax.annotation.PostConstruct;
42 42 import javax.annotation.Resource;
  43 +import java.time.LocalDateTime;
43 44 import java.util.*;
44 45 import java.util.function.Supplier;
45 46  
... ... @@ -86,7 +87,7 @@ public class PermissionServiceImpl implements PermissionService {
86 87 * 缓存 RoleMenu 的最大更新时间,用于后续的增量轮询,判断是否有更新
87 88 */
88 89 @Getter
89   - private volatile Date roleMenuMaxUpdateTime;
  90 + private volatile LocalDateTime roleMenuMaxUpdateTime;
90 91  
91 92 /**
92 93 * 用户编号与角色编号的缓存映射
... ... @@ -102,7 +103,7 @@ public class PermissionServiceImpl implements PermissionService {
102 103 * 缓存 UserRole 的最大更新时间,用于后续的增量轮询,判断是否有更新
103 104 */
104 105 @Getter
105   - private volatile Date userRoleMaxUpdateTime;
  106 + private volatile LocalDateTime userRoleMaxUpdateTime;
106 107  
107 108 @Resource
108 109 private RoleMenuMapper roleMenuMapper;
... ... @@ -192,7 +193,7 @@ public class PermissionServiceImpl implements PermissionService {
192 193 * @param maxUpdateTime 当前角色与菜单的关联的最大更新时间
193 194 * @return 角色与菜单的关联列表
194 195 */
195   - protected List<RoleMenuDO> loadRoleMenuIfUpdate(Date maxUpdateTime) {
  196 + protected List<RoleMenuDO> loadRoleMenuIfUpdate(LocalDateTime maxUpdateTime) {
196 197 // 第一步,判断是否要更新。
197 198 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
198 199 log.info("[loadRoleMenuIfUpdate][首次加载全量角色与菜单的关联]");
... ... @@ -213,7 +214,7 @@ public class PermissionServiceImpl implements PermissionService {
213 214 * @param maxUpdateTime 当前角色与菜单的关联的最大更新时间
214 215 * @return 角色与菜单的关联列表
215 216 */
216   - protected List<UserRoleDO> loadUserRoleIfUpdate(Date maxUpdateTime) {
  217 + protected List<UserRoleDO> loadUserRoleIfUpdate(LocalDateTime maxUpdateTime) {
217 218 // 第一步,判断是否要更新。
218 219 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
219 220 log.info("[loadUserRoleIfUpdate][首次加载全量用户与角色的关联]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java
... ... @@ -32,6 +32,7 @@ import org.springframework.util.StringUtils;
32 32  
33 33 import javax.annotation.PostConstruct;
34 34 import javax.annotation.Resource;
  35 +import java.time.LocalDateTime;
35 36 import java.util.*;
36 37 import java.util.stream.Collectors;
37 38  
... ... @@ -65,7 +66,7 @@ public class RoleServiceImpl implements RoleService {
65 66 * 缓存角色的最大更新时间,用于后续的增量轮询,判断是否有更新
66 67 */
67 68 @Getter
68   - private volatile Date maxUpdateTime;
  69 + private volatile LocalDateTime maxUpdateTime;
69 70  
70 71 @Resource
71 72 private PermissionService permissionService;
... ... @@ -111,7 +112,7 @@ public class RoleServiceImpl implements RoleService {
111 112 * @param maxUpdateTime 当前角色的最大更新时间
112 113 * @return 角色列表
113 114 */
114   - private List<RoleDO> loadRoleIfUpdate(Date maxUpdateTime) {
  115 + private List<RoleDO> loadRoleIfUpdate(LocalDateTime maxUpdateTime) {
115 116 // 第一步,判断是否要更新。
116 117 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
117 118 log.info("[loadRoleIfUpdate][首次加载全量角色]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sensitiveword/SensitiveWordServiceImpl.java
... ... @@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
23 23  
24 24 import javax.annotation.PostConstruct;
25 25 import javax.annotation.Resource;
  26 +import java.time.LocalDateTime;
26 27 import java.util.*;
27 28  
28 29 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -58,7 +59,7 @@ public class SensitiveWordServiceImpl implements SensitiveWordService {
58 59 * 缓存敏感词的最大更新时间,用于后续的增量轮询,判断是否有更新
59 60 */
60 61 @Getter
61   - private volatile Date maxUpdateTime;
  62 + private volatile LocalDateTime maxUpdateTime;
62 63  
63 64 @Resource
64 65 private SensitiveWordMapper sensitiveWordMapper;
... ... @@ -133,7 +134,7 @@ public class SensitiveWordServiceImpl implements SensitiveWordService {
133 134 * @param maxUpdateTime 当前敏感词的最大更新时间
134 135 * @return 敏感词列表
135 136 */
136   - private List<SensitiveWordDO> loadSensitiveWordIfUpdate(Date maxUpdateTime) {
  137 + private List<SensitiveWordDO> loadSensitiveWordIfUpdate(LocalDateTime maxUpdateTime) {
137 138 // 第一步,判断是否要更新。
138 139 // 如果更新时间为空,说明 DB 一定有新数据
139 140 if (maxUpdateTime == null) {
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceImpl.java
... ... @@ -18,8 +18,8 @@ import org.springframework.stereotype.Service;
18 18  
19 19 import javax.annotation.PostConstruct;
20 20 import javax.annotation.Resource;
  21 +import java.time.LocalDateTime;
21 22 import java.util.Collection;
22   -import java.util.Date;
23 23 import java.util.List;
24 24  
25 25 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -45,7 +45,7 @@ public class SmsChannelServiceImpl implements SmsChannelService {
45 45 /**
46 46 * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新
47 47 */
48   - private volatile Date maxUpdateTime;
  48 + private volatile LocalDateTime maxUpdateTime;
49 49  
50 50 @Resource
51 51 private SmsClientFactory smsClientFactory;
... ... @@ -89,7 +89,7 @@ public class SmsChannelServiceImpl implements SmsChannelService {
89 89 * @param maxUpdateTime 当前短信渠道的最大更新时间
90 90 * @return 短信渠道列表
91 91 */
92   - private List<SmsChannelDO> loadSmsChannelIfUpdate(Date maxUpdateTime) {
  92 + private List<SmsChannelDO> loadSmsChannelIfUpdate(LocalDateTime maxUpdateTime) {
93 93 // 第一步,判断是否要更新。
94 94 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
95 95 log.info("[loadSmsChannelIfUpdate][首次加载全量短信渠道]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsCodeServiceImpl.java
1 1 package cn.iocoder.yudao.module.system.service.sms;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.lang.Assert;
4 5 import cn.hutool.core.map.MapUtil;
5 6 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
... ... @@ -15,7 +16,9 @@ import org.springframework.stereotype.Service;
15 16 import org.springframework.validation.annotation.Validated;
16 17  
17 18 import javax.annotation.Resource;
18   -import java.util.Date;
  19 +
  20 +import java.time.LocalDateTime;
  21 +import java.time.temporal.ChronoUnit;
19 22  
20 23 import static cn.hutool.core.util.RandomUtil.randomInt;
21 24 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
... ... @@ -51,9 +54,9 @@ public class SmsCodeServiceImpl implements SmsCodeService {
51 54  
52 55 private String createSmsCode(String mobile, Integer scene, String ip) {
53 56 // 校验是否可以发送验证码,不用筛选场景
54   - SmsCodeDO lastSmsCode = smsCodeMapper.selectLastByMobile(mobile, null,null);
  57 + SmsCodeDO lastSmsCode = smsCodeMapper.selectLastByMobile(mobile, null, null);
55 58 if (lastSmsCode != null) {
56   - if (System.currentTimeMillis() - lastSmsCode.getCreateTime().getTime()
  59 + if (LocalDateTimeUtil.between(lastSmsCode.getCreateTime(), LocalDateTime.now()).toMillis()
57 60 < smsCodeProperties.getSendFrequency().toMillis()) { // 发送过于频繁
58 61 throw ServiceExceptionUtil.exception(SMS_CODE_SEND_TOO_FAST);
59 62 }
... ... @@ -80,7 +83,7 @@ public class SmsCodeServiceImpl implements SmsCodeService {
80 83 SmsCodeDO lastSmsCode = this.checkSmsCode0(reqDTO.getMobile(), reqDTO.getCode(), reqDTO.getScene());
81 84 // 使用验证码
82 85 smsCodeMapper.updateById(SmsCodeDO.builder().id(lastSmsCode.getId())
83   - .used(true).usedTime(new Date()).usedIp(reqDTO.getUsedIp()).build());
  86 + .used(true).usedTime(LocalDateTime.now()).usedIp(reqDTO.getUsedIp()).build());
84 87 }
85 88  
86 89 @Override
... ... @@ -90,13 +93,13 @@ public class SmsCodeServiceImpl implements SmsCodeService {
90 93  
91 94 public SmsCodeDO checkSmsCode0(String mobile, String code, Integer scene) {
92 95 // 校验验证码
93   - SmsCodeDO lastSmsCode = smsCodeMapper.selectLastByMobile(mobile,code,scene);
  96 + SmsCodeDO lastSmsCode = smsCodeMapper.selectLastByMobile(mobile, code, scene);
94 97 // 若验证码不存在,抛出异常
95 98 if (lastSmsCode == null) {
96 99 throw ServiceExceptionUtil.exception(SMS_CODE_NOT_FOUND);
97 100 }
98 101 // 超过时间
99   - if (System.currentTimeMillis() - lastSmsCode.getCreateTime().getTime()
  102 + if (LocalDateTimeUtil.between(lastSmsCode.getCreateTime(), LocalDateTime.now()).toMillis()
100 103 >= smsCodeProperties.getExpireTimes().toMillis()) { // 验证码已过期
101 104 throw ServiceExceptionUtil.exception(SMS_CODE_EXPIRED);
102 105 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogService.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
6 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 7 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
8 8  
9   -import java.util.Date;
  9 +import java.time.LocalDateTime;
10 10 import java.util.List;
11 11 import java.util.Map;
12 12  
... ... @@ -56,7 +56,7 @@ public interface SmsLogService {
56 56 * @param apiReceiveCode API 接收结果的编码
57 57 * @param apiReceiveMsg API 接收结果的说明
58 58 */
59   - void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg);
  59 + void updateSmsReceiveResult(Long id, Boolean success, LocalDateTime receiveTime, String apiReceiveCode, String apiReceiveMsg);
60 60  
61 61 /**
62 62 * 获得短信日志分页
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImpl.java
... ... @@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
13 13 import org.springframework.stereotype.Service;
14 14  
15 15 import javax.annotation.Resource;
16   -import java.util.Date;
  16 +import java.time.LocalDateTime;
17 17 import java.util.List;
18 18 import java.util.Map;
19 19 import java.util.Objects;
... ... @@ -61,13 +61,13 @@ public class SmsLogServiceImpl implements SmsLogService {
61 61 SmsSendStatusEnum sendStatus = CommonResult.isSuccess(sendCode) ?
62 62 SmsSendStatusEnum.SUCCESS : SmsSendStatusEnum.FAILURE;
63 63 smsLogMapper.updateById(SmsLogDO.builder().id(id).sendStatus(sendStatus.getStatus())
64   - .sendTime(new Date()).sendCode(sendCode).sendMsg(sendMsg)
  64 + .sendTime(LocalDateTime.now()).sendCode(sendCode).sendMsg(sendMsg)
65 65 .apiSendCode(apiSendCode).apiSendMsg(apiSendMsg)
66 66 .apiRequestId(apiRequestId).apiSerialNo(apiSerialNo).build());
67 67 }
68 68  
69 69 @Override
70   - public void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime,
  70 + public void updateSmsReceiveResult(Long id, Boolean success, LocalDateTime receiveTime,
71 71 String apiReceiveCode, String apiReceiveMsg) {
72 72 SmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ?
73 73 SmsReceiveStatusEnum.SUCCESS : SmsReceiveStatusEnum.FAILURE;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImpl.java
... ... @@ -27,6 +27,7 @@ import org.springframework.util.Assert;
27 27  
28 28 import javax.annotation.PostConstruct;
29 29 import javax.annotation.Resource;
  30 +import java.time.LocalDateTime;
30 31 import java.util.*;
31 32 import java.util.regex.Pattern;
32 33  
... ... @@ -76,7 +77,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
76 77 /**
77 78 * 缓存短信模板的最大更新时间,用于后续的增量轮询,判断是否有更新
78 79 */
79   - private volatile Date maxUpdateTime;
  80 + private volatile LocalDateTime maxUpdateTime;
80 81  
81 82 @Override
82 83 @PostConstruct
... ... @@ -100,7 +101,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
100 101 * @param maxUpdateTime 当前短信模板的最大更新时间
101 102 * @return 短信模板列表
102 103 */
103   - private List<SmsTemplateDO> loadSmsTemplateIfUpdate(Date maxUpdateTime) {
  104 + private List<SmsTemplateDO> loadSmsTemplateIfUpdate(LocalDateTime maxUpdateTime) {
104 105 // 第一步,判断是否要更新。
105 106 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
106 107 log.info("[loadSmsTemplateIfUpdate][首次加载全量短信模板]");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
... ... @@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
32 32  
33 33 import javax.annotation.Resource;
34 34 import java.io.InputStream;
  35 +import java.time.LocalDateTime;
35 36 import java.util.*;
36 37  
37 38 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -129,7 +130,7 @@ public class AdminUserServiceImpl implements AdminUserService {
129 130  
130 131 @Override
131 132 public void updateUserLogin(Long id, String loginIp) {
132   - userMapper.updateById(new AdminUserDO().setId(id).setLoginIp(loginIp).setLoginDate(new Date()));
  133 + userMapper.updateById(new AdminUserDO().setId(id).setLoginIp(loginIp).setLoginDate(LocalDateTime.now()));
133 134 }
134 135  
135 136 @Override
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/util/oauth2/OAuth2Utils.java
1 1 package cn.iocoder.yudao.module.system.util.oauth2;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.date.LocalDateTimeUtil;
4 5 import cn.hutool.core.util.StrUtil;
5 6 import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
6 7 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
7 8  
  9 +import java.time.LocalDateTime;
  10 +import java.time.temporal.ChronoUnit;
8 11 import java.util.*;
9 12  
10 13 /**
... ... @@ -46,7 +49,7 @@ public class OAuth2Utils {
46 49 * @param additionalInformation 附加信息
47 50 * @return 简化授权模式下的重定向 URI
48 51 */
49   - public static String buildImplicitRedirectUri(String redirectUri, String accessToken, String state, Date expireTime,
  52 + public static String buildImplicitRedirectUri(String redirectUri, String accessToken, String state, LocalDateTime expireTime,
50 53 Collection<String> scopes, Map<String, Object> additionalInformation) {
51 54 Map<String, Object> vars = new LinkedHashMap<String, Object>();
52 55 Map<String, String> keys = new HashMap<String, String>();
... ... @@ -85,8 +88,8 @@ public class OAuth2Utils {
85 88 return HttpUtils.append(redirectUri, query, null, !responseType.contains("code"));
86 89 }
87 90  
88   - public static long getExpiresIn(Date expireTime) {
89   - return (expireTime.getTime() - System.currentTimeMillis()) / 1000;
  91 + public static long getExpiresIn(LocalDateTime expireTime) {
  92 + return LocalDateTimeUtil.between(LocalDateTime.now(), expireTime, ChronoUnit.SECONDS);
90 93 }
91 94  
92 95 public static String buildScopeStr(Collection<String> scopes) {
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.oauth2;
2 2  
3 3 import cn.hutool.core.collection.ListUtil;
  4 +import cn.hutool.core.date.LocalDateTimeUtil;
4 5 import cn.hutool.core.map.MapUtil;
5 6 import cn.iocoder.yudao.framework.common.core.KeyValue;
6 7 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
... ... @@ -25,14 +26,13 @@ import org.mockito.InjectMocks;
25 26 import org.mockito.Mock;
26 27  
27 28 import javax.servlet.http.HttpServletRequest;
28   -import java.time.Duration;
  29 +import java.time.LocalDateTime;
  30 +import java.time.temporal.ChronoUnit;
29 31 import java.util.ArrayList;
30   -import java.util.Date;
31 32 import java.util.LinkedHashMap;
32 33 import java.util.List;
33 34  
34 35 import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
35   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
36 36 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
37 37 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
38 38 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
... ... @@ -77,7 +77,7 @@ public class OAuth2OpenControllerTest extends BaseMockitoUnitTest {
77 77  
78 78 // mock 方法(访问令牌)
79 79 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
80   - .setExpiresTime(addTime(Duration.ofMillis(30050L))); // 多给 10 毫秒,保证可执行完
  80 + .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 10L, ChronoUnit.MILLIS)); // 多给 10 毫秒,保证可执行完
81 81 when(oauth2GrantService.grantAuthorizationCodeForAccessToken(eq("test_client_id"),
82 82 eq(code), eq(redirectUri), eq(state))).thenReturn(accessTokenDO);
83 83  
... ... @@ -105,7 +105,7 @@ public class OAuth2OpenControllerTest extends BaseMockitoUnitTest {
105 105  
106 106 // mock 方法(访问令牌)
107 107 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
108   - .setExpiresTime(addTime(Duration.ofMillis(30050L))); // 多给 10 毫秒,保证可执行完
  108 + .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30050L, ChronoUnit.MILLIS)); // 多给 10 毫秒,保证可执行完
109 109 when(oauth2GrantService.grantPassword(eq(username), eq(password), eq("test_client_id"),
110 110 eq(Lists.newArrayList("write", "read")))).thenReturn(accessTokenDO);
111 111  
... ... @@ -132,7 +132,7 @@ public class OAuth2OpenControllerTest extends BaseMockitoUnitTest {
132 132  
133 133 // mock 方法(访问令牌)
134 134 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
135   - .setExpiresTime(addTime(Duration.ofMillis(30010L))); // 多给 10 毫秒,保证可执行完
  135 + .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30050L, ChronoUnit.MILLIS)); // 多给 10 毫秒,保证可执行完
136 136 when(oauth2GrantService.grantRefreshToken(eq(refreshToken), eq("test_client_id"))).thenReturn(accessTokenDO);
137 137  
138 138 // 调用
... ... @@ -178,7 +178,7 @@ public class OAuth2OpenControllerTest extends BaseMockitoUnitTest {
178 178 HttpServletRequest request = mockRequest("demo_client_id", "demo_client_secret");
179 179 String token = randomString();
180 180 // mock 方法
181   - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setUserType(UserTypeEnum.ADMIN.getValue()).setExpiresTime(new Date(1653485731195L));
  181 + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setUserType(UserTypeEnum.ADMIN.getValue()).setExpiresTime(LocalDateTimeUtil.of(1653485731195L));
182 182 when(oauth2TokenService.checkAccessToken(eq(token))).thenReturn(accessTokenDO);
183 183  
184 184 // 调用
... ... @@ -279,7 +279,7 @@ public class OAuth2OpenControllerTest extends BaseMockitoUnitTest {
279 279 eq(clientId), eq(SetUtils.asSet("read", "write")))).thenReturn(true);
280 280 // mock 方法(访问令牌)
281 281 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
282   - .setAccessToken("test_access_token").setExpiresTime(addTime(Duration.ofMillis(30010L)));
  282 + .setAccessToken("test_access_token").setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30010L, ChronoUnit.MILLIS));
283 283 when(oauth2GrantService.grantImplicit(isNull(), eq(UserTypeEnum.ADMIN.getValue()),
284 284 eq(clientId), eq(ListUtil.toList("read")))).thenReturn(accessTokenDO);
285 285  
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceTest.java
... ... @@ -17,7 +17,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
17 17 import org.springframework.context.annotation.Import;
18 18  
19 19 import javax.annotation.Resource;
20   -import java.util.Date;
  20 +import java.time.LocalDateTime;
21 21 import java.util.List;
22 22 import java.util.Map;
23 23 import java.util.function.Consumer;
... ... @@ -69,7 +69,7 @@ public class DeptServiceTest extends BaseDbUnitTest {
69 69 assertPojoEquals(deptDO1, parentDeptCache.get(deptDO1.getParentId()));
70 70 assertPojoEquals(deptDO2, parentDeptCache.get(deptDO2.getParentId()));
71 71 // 断言 maxUpdateTime 缓存
72   - Date maxUpdateTime = (Date) getFieldValue(deptService, "maxUpdateTime");
  72 + LocalDateTime maxUpdateTime = (LocalDateTime) getFieldValue(deptService, "maxUpdateTime");
73 73 assertEquals(ObjectUtils.max(deptDO1.getUpdateTime(), deptDO2.getUpdateTime()), maxUpdateTime);
74 74 }
75 75  
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceTest.java
... ... @@ -16,7 +16,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
16 16 import org.springframework.context.annotation.Import;
17 17  
18 18 import javax.annotation.Resource;
19   -import java.util.Date;
  19 +import java.time.LocalDateTime;
20 20 import java.util.List;
21 21 import java.util.function.Consumer;
22 22  
... ... @@ -24,7 +24,7 @@ import static cn.hutool.core.util.RandomUtil.randomEle;
24 24 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
25 25 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
26 26 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  27 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
28 28 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
29 29 import static org.junit.jupiter.api.Assertions.*;
30 30 import static org.mockito.ArgumentMatchers.eq;
... ... @@ -48,7 +48,7 @@ public class DictTypeServiceTest extends BaseDbUnitTest {
48 48 o.setName("yunai");
49 49 o.setType("芋艿");
50 50 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
51   - o.setCreateTime(buildTime(2021, 1, 15));
  51 + o.setCreateTime(buildLocalDateTime(2021, 1, 15));
52 52 });
53 53 dictTypeMapper.insert(dbDictType);
54 54 // 测试 name 不匹配
... ... @@ -58,13 +58,13 @@ public class DictTypeServiceTest extends BaseDbUnitTest {
58 58 // 测试 status 不匹配
59 59 dictTypeMapper.insert(ObjectUtils.cloneIgnoreId(dbDictType, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
60 60 // 测试 createTime 不匹配
61   - dictTypeMapper.insert(ObjectUtils.cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildTime(2021, 1, 1))));
  61 + dictTypeMapper.insert(ObjectUtils.cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildLocalDateTime(2021, 1, 1))));
62 62 // 准备参数
63 63 DictTypePageReqVO reqVO = new DictTypePageReqVO();
64 64 reqVO.setName("nai");
65 65 reqVO.setType("艿");
66 66 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
67   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 10),buildTime(2021, 1, 20)}));
  67 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 10),buildLocalDateTime(2021, 1, 20)}));
68 68  
69 69 // 调用
70 70 PageResult<DictTypeDO> pageResult = dictTypeService.getDictTypePage(reqVO);
... ... @@ -81,7 +81,7 @@ public class DictTypeServiceTest extends BaseDbUnitTest {
81 81 o.setName("yunai");
82 82 o.setType("芋艿");
83 83 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
84   - o.setCreateTime(buildTime(2021, 1, 15));
  84 + o.setCreateTime(buildLocalDateTime(2021, 1, 15));
85 85 });
86 86 dictTypeMapper.insert(dbDictType);
87 87 // 测试 name 不匹配
... ... @@ -91,13 +91,13 @@ public class DictTypeServiceTest extends BaseDbUnitTest {
91 91 // 测试 status 不匹配
92 92 dictTypeMapper.insert(ObjectUtils.cloneIgnoreId(dbDictType, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
93 93 // 测试 createTime 不匹配
94   - dictTypeMapper.insert(ObjectUtils.cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildTime(2021, 1, 1))));
  94 + dictTypeMapper.insert(ObjectUtils.cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildLocalDateTime(2021, 1, 1))));
95 95 // 准备参数
96 96 DictTypeExportReqVO reqVO = new DictTypeExportReqVO();
97 97 reqVO.setName("nai");
98 98 reqVO.setType("艿");
99 99 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
100   - reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 10),buildTime(2021, 1, 20)}));
  100 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 10),buildLocalDateTime(2021, 1, 20)}));
101 101  
102 102 // 调用
103 103 List<DictTypeDO> list = dictTypeService.getDictTypeList(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeServiceTest.java
... ... @@ -17,12 +17,12 @@ import org.junit.jupiter.api.Test;
17 17 import org.springframework.context.annotation.Import;
18 18  
19 19 import javax.annotation.Resource;
20   -import java.util.Date;
  20 +import java.time.LocalDateTime;
21 21 import java.util.List;
22 22 import java.util.function.Consumer;
23 23  
24 24 import static cn.hutool.core.util.RandomUtil.randomEle;
25   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  25 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
26 26 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
27 27 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
28 28 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -96,7 +96,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
96 96 reqVO.setApplicationName("tu");
97 97 reqVO.setCode(1);
98 98 reqVO.setMessage("ma");
99   - reqVO.setCreateTime((new Date[]{buildTime(2020, 11, 1),buildTime(2020, 11, 30)}));
  99 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2020, 11, 1),buildLocalDateTime(2020, 11, 30)}));
100 100  
101 101 // 调用
102 102 PageResult<ErrorCodeDO> pageResult = errorCodeService.getErrorCodePage(reqVO);
... ... @@ -115,7 +115,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
115 115 o.setApplicationName("tudou");
116 116 o.setCode(1);
117 117 o.setMessage("yuanma");
118   - o.setCreateTime(buildTime(2020, 11, 11));
  118 + o.setCreateTime(buildLocalDateTime(2020, 11, 11));
119 119 });
120 120 errorCodeMapper.insert(dbErrorCode);
121 121 // 测试 type 不匹配
... ... @@ -127,7 +127,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
127 127 // 测试 message 不匹配
128 128 errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setMessage("nai")));
129 129 // 测试 createTime 不匹配
130   - errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setCreateTime(buildTime(2020, 12, 12))));
  130 + errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setCreateTime(buildLocalDateTime(2020, 12, 12))));
131 131 return dbErrorCode;
132 132 }
133 133  
... ... @@ -141,7 +141,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
141 141 reqVO.setApplicationName("tu");
142 142 reqVO.setCode(1);
143 143 reqVO.setMessage("ma");
144   - reqVO.setCreateTime((new Date[]{buildTime(2020, 11, 1),buildTime(2020, 11, 30)}));
  144 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2020, 11, 1),buildLocalDateTime(2020, 11, 30)}));
145 145  
146 146 // 调用
147 147 List<ErrorCodeDO> list = errorCodeService.getErrorCodeList(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/logger/LoginLogServiceImplTest.java
... ... @@ -18,12 +18,12 @@ import org.junit.jupiter.api.Test;
18 18 import org.springframework.context.annotation.Import;
19 19  
20 20 import javax.annotation.Resource;
21   -import java.util.Date;
  21 +import java.time.LocalDateTime;
22 22 import java.util.List;
23 23  
24 24 import static cn.hutool.core.util.RandomUtil.randomEle;
25 25 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
26   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  26 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
27 27 import static org.junit.jupiter.api.Assertions.assertEquals;
28 28  
29 29 @Import(LoginLogServiceImpl.class)
... ... @@ -46,7 +46,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
46 46  
47 47 logDO.setUserIp("192.168.199.16");
48 48 logDO.setUsername("wangkai");
49   - logDO.setCreateTime(buildTime(2021, 3, 6));
  49 + logDO.setCreateTime(buildLocalDateTime(2021, 3, 6));
50 50 logDO.setResult(cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.SUCCESS.getResult());
51 51 });
52 52 loginLogMapper.insert(loginLogDO);
... ... @@ -59,7 +59,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
59 59 // 不同username
60 60 loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
61 61 // 构造一个早期时间 2021-02-06 00:00:00
62   - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
  62 + loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildLocalDateTime(2021, 2, 6))));
63 63  
64 64  
65 65 // 构造调用参数
... ... @@ -67,7 +67,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
67 67 reqVO.setUsername("wangkai");
68 68 reqVO.setUserIp("192.168.199");
69 69 reqVO.setStatus(true);
70   - reqVO.setCreateTime((new Date[]{buildTime(2021, 3, 5),buildTime(2021, 3, 5)}));
  70 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 5),buildLocalDateTime(2021, 3, 5)}));
71 71  
72 72 // 调用service方法
73 73 PageResult<LoginLogDO> pageResult = loginLogService.getLoginLogPage(reqVO);
... ... @@ -90,7 +90,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
90 90  
91 91 logDO.setUserIp("192.168.111.16");
92 92 logDO.setUsername("wangxiaokai");
93   - logDO.setCreateTime(buildTime(2021, 3, 6));
  93 + logDO.setCreateTime(buildLocalDateTime(2021, 3, 6));
94 94 logDO.setResult(cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.SUCCESS.getResult());
95 95 });
96 96 loginLogMapper.insert(loginLogDO);
... ... @@ -103,14 +103,14 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
103 103 // 不同username
104 104 loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
105 105 // 构造一个早期时间 2021-02-06 00:00:00
106   - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
  106 + loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildLocalDateTime(2021, 2, 6))));
107 107  
108 108 // 构造调用参数
109 109 LoginLogExportReqVO reqVO = new LoginLogExportReqVO();
110 110 reqVO.setUsername("wangxiaokai");
111 111 reqVO.setUserIp("192.168.111");
112 112 reqVO.setStatus(true);
113   - reqVO.setCreateTime((new Date[]{buildTime(2021, 3, 5),buildTime(2021, 3, 5)}));
  113 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 5),buildLocalDateTime(2021, 3, 5)}));
114 114  
115 115 // 调用service方法
116 116 List<LoginLogDO> loginLogList = loginLogService.getLoginLogList(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImplTest.java
... ... @@ -23,13 +23,13 @@ import org.springframework.boot.test.mock.mockito.MockBean;
23 23 import org.springframework.context.annotation.Import;
24 24  
25 25 import javax.annotation.Resource;
  26 +import java.time.LocalDateTime;
26 27 import java.util.Collections;
27   -import java.util.Date;
28 28 import java.util.List;
29 29  
30 30 import static cn.hutool.core.util.RandomUtil.randomEle;
31 31 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST;
32   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  32 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
33 33 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
34 34 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
35 35 import static org.junit.jupiter.api.Assertions.assertEquals;
... ... @@ -81,7 +81,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
81 81 o.setUserType(randomEle(UserTypeEnum.values()).getValue());
82 82 o.setModule("order");
83 83 o.setType(OperateTypeEnum.CREATE.getType());
84   - o.setStartTime(buildTime(2021, 3, 6));
  84 + o.setStartTime(buildLocalDateTime(2021, 3, 6));
85 85 o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode());
86 86 o.setExts(MapUtil.<String, Object>builder("orderId", randomLongId()).build());
87 87 });
... ... @@ -95,7 +95,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
95 95 // type 不同
96 96 operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType())));
97 97 // createTime 不同
98   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6))));
  98 + operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setStartTime(buildLocalDateTime(2021, 2, 6))));
99 99 // resultCode 不同
100 100 operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setResultCode(BAD_REQUEST.getCode())));
101 101  
... ... @@ -104,7 +104,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
104 104 reqVO.setUserNickname("wangkai");
105 105 reqVO.setModule("order");
106 106 reqVO.setType(OperateTypeEnum.CREATE.getType());
107   - reqVO.setStartTime((new Date[]{buildTime(2021, 3, 5),buildTime(2021, 3, 7)}));
  107 + reqVO.setStartTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 5),buildLocalDateTime(2021, 3, 7)}));
108 108 reqVO.setSuccess(true);
109 109  
110 110 // 调用service方法
... ... @@ -132,7 +132,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
132 132 o.setUserType(randomEle(UserTypeEnum.values()).getValue());
133 133 o.setModule("order");
134 134 o.setType(OperateTypeEnum.CREATE.getType());
135   - o.setStartTime(buildTime(2021, 3, 6));
  135 + o.setStartTime(buildLocalDateTime(2021, 3, 6));
136 136 o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode());
137 137 o.setExts(MapUtil.<String, Object>builder("orderId", randomLongId()).build());
138 138 });
... ... @@ -146,7 +146,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
146 146 // type 不同
147 147 operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType())));
148 148 // createTime 不同
149   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6))));
  149 + operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setStartTime(buildLocalDateTime(2021, 2, 6))));
150 150 // resultCode 不同
151 151 operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setResultCode(BAD_REQUEST.getCode())));
152 152  
... ... @@ -155,7 +155,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
155 155 reqVO.setUserNickname("wangkai");
156 156 reqVO.setModule("order");
157 157 reqVO.setType(OperateTypeEnum.CREATE.getType());
158   - reqVO.setStartTime((new Date[]{buildTime(2021, 3, 5),buildTime(2021, 3, 7)}));
  158 + reqVO.setStartTime((new LocalDateTime[]{buildLocalDateTime(2021, 3, 5),buildLocalDateTime(2021, 3, 7)}));
159 159 reqVO.setSuccess(true);
160 160  
161 161 // 调用 service 方法
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java
1 1 package cn.iocoder.yudao.module.system.service.oauth2;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.util.ObjectUtil;
4 5 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
5 6 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
... ... @@ -13,11 +14,12 @@ import org.springframework.boot.test.mock.mockito.MockBean;
13 14 import org.springframework.context.annotation.Import;
14 15  
15 16 import javax.annotation.Resource;
16   -import java.time.Duration;
  17 +import java.time.LocalDateTime;
  18 +import java.time.ZoneId;
  19 +import java.time.temporal.ChronoUnit;
17 20 import java.util.*;
18 21  
19 22 import static cn.hutool.core.util.RandomUtil.*;
20   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
21 23 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
22 24 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
23 25 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -81,7 +83,7 @@ public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest {
81 83 // mock 数据
82 84 OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId)
83 85 .setUserType(userType).setClientId(clientId).setScope("read")
84   - .setExpiresTime(addTime(Duration.ofDays(1))).setApproved(true); // 同意
  86 + .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 1L, ChronoUnit.DAYS)).setApproved(true); // 同意
85 87 oauth2ApproveMapper.insert(approve);
86 88  
87 89 // 调用
... ... @@ -104,7 +106,7 @@ public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest {
104 106 // mock 数据
105 107 OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId)
106 108 .setUserType(userType).setClientId(clientId).setScope("read")
107   - .setExpiresTime(addTime(Duration.ofDays(1))).setApproved(false); // 拒绝
  109 + .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 1L, ChronoUnit.DAYS)).setApproved(false); // 拒绝
108 110 oauth2ApproveMapper.insert(approve);
109 111  
110 112 // 调用
... ... @@ -198,10 +200,10 @@ public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest {
198 200 String clientId = randomString();
199 201 // mock 数据
200 202 OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId)
201   - .setUserType(userType).setClientId(clientId).setExpiresTime(addTime(Duration.ofDays(1L)));
  203 + .setUserType(userType).setClientId(clientId).setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 1L, ChronoUnit.DAYS));
202 204 oauth2ApproveMapper.insert(approve); // 未过期
203 205 oauth2ApproveMapper.insert(ObjectUtil.clone(approve).setId(null)
204   - .setExpiresTime(addTime(Duration.ofDays(-1L)))); // 已过期
  206 + .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), -1L, ChronoUnit.DAYS))); // 已过期
205 207  
206 208 // 调用
207 209 List<OAuth2ApproveDO> result = oauth2ApproveService.getApproveList(userId, userType, clientId);
... ... @@ -218,7 +220,7 @@ public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest {
218 220 String clientId = randomString();
219 221 String scope = randomString();
220 222 Boolean approved = randomBoolean();
221   - Date expireTime = randomDay(1, 30);
  223 + LocalDateTime expireTime = LocalDateTime.ofInstant(randomDay(1, 30).toInstant(), ZoneId.systemDefault());
222 224 // mock 方法
223 225  
224 226 // 调用
... ... @@ -246,7 +248,7 @@ public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest {
246 248 String clientId = approve.getClientId();
247 249 String scope = approve.getScope();
248 250 Boolean approved = randomBoolean();
249   - Date expireTime = randomDay(1, 30);
  251 + LocalDateTime expireTime = LocalDateTime.ofInstant(randomDay(1, 30).toInstant(), ZoneId.systemDefault());
250 252 // mock 方法
251 253  
252 254 // 调用
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImplTest.java
... ... @@ -11,10 +11,9 @@ import org.junit.jupiter.api.Test;
11 11 import org.springframework.context.annotation.Import;
12 12  
13 13 import javax.annotation.Resource;
14   -import java.time.Duration;
  14 +import java.time.LocalDateTime;
15 15 import java.util.List;
16 16  
17   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
18 17 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
19 18 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
20 19 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -74,7 +73,7 @@ class OAuth2CodeServiceImplTest extends BaseDbUnitTest {
74 73 String code = "test_code";
75 74 // mock 数据
76 75 OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class).setCode(code)
77   - .setExpiresTime(addTime(Duration.ofDays(-1)));
  76 + .setExpiresTime(LocalDateTime.now().minusDays(1));
78 77 oauth2CodeMapper.insert(codeDO);
79 78  
80 79 // 调用,并断言
... ... @@ -88,7 +87,7 @@ class OAuth2CodeServiceImplTest extends BaseDbUnitTest {
88 87 String code = "test_code";
89 88 // mock 数据
90 89 OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class).setCode(code)
91   - .setExpiresTime(addTime(Duration.ofDays(1)));
  90 + .setExpiresTime(LocalDateTime.now().plusDays(1));
92 91 oauth2CodeMapper.insert(codeDO);
93 92  
94 93 // 调用
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImplTest.java
1 1 package cn.iocoder.yudao.module.system.service.oauth2;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.hutool.core.util.RandomUtil;
4 5 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
5 6 import cn.iocoder.yudao.framework.common.exception.ErrorCode;
... ... @@ -20,11 +21,9 @@ import org.springframework.boot.test.mock.mockito.MockBean;
20 21 import org.springframework.context.annotation.Import;
21 22  
22 23 import javax.annotation.Resource;
23   -import java.time.Duration;
24   -import java.util.Date;
  24 +import java.time.LocalDateTime;
25 25 import java.util.List;
26 26  
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
28 27 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
29 28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
30 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -128,7 +127,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
128 127 // mock 数据(访问令牌)
129 128 OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class)
130 129 .setRefreshToken(refreshToken).setClientId(clientId)
131   - .setExpiresTime(addTime(Duration.ofDays(-1)));
  130 + .setExpiresTime(LocalDateTime.now().minusDays(1));
132 131 oauth2RefreshTokenMapper.insert(refreshTokenDO);
133 132  
134 133 // 调用,并断言
... ... @@ -150,7 +149,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
150 149 // mock 数据(访问令牌)
151 150 OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class)
152 151 .setRefreshToken(refreshToken).setClientId(clientId)
153   - .setExpiresTime(addTime(Duration.ofDays(1)));
  152 + .setExpiresTime(LocalDateTime.now().plusDays(1));
154 153 oauth2RefreshTokenMapper.insert(refreshTokenDO);
155 154 // mock 数据(访问令牌)
156 155 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setRefreshToken(refreshToken);
... ... @@ -177,7 +176,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
177 176 public void testGetAccessToken() {
178 177 // mock 数据(访问令牌)
179 178 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
180   - .setExpiresTime(addTime(Duration.ofDays(1)));
  179 + .setExpiresTime(LocalDateTime.now().plusDays(1));
181 180 oauth2AccessTokenMapper.insert(accessTokenDO);
182 181 // 准备参数
183 182 String accessToken = accessTokenDO.getAccessToken();
... ... @@ -202,7 +201,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
202 201 public void testCheckAccessToken_expired() {
203 202 // mock 数据(访问令牌)
204 203 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
205   - .setExpiresTime(addTime(Duration.ofDays(-1)));
  204 + .setExpiresTime(LocalDateTime.now().minusDays(1));
206 205 oauth2AccessTokenMapper.insert(accessTokenDO);
207 206 // 准备参数
208 207 String accessToken = accessTokenDO.getAccessToken();
... ... @@ -216,7 +215,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
216 215 public void testCheckAccessToken_success() {
217 216 // mock 数据(访问令牌)
218 217 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
219   - .setExpiresTime(addTime(Duration.ofDays(1)));
  218 + .setExpiresTime(LocalDateTime.now().plusDays(1));
220 219 oauth2AccessTokenMapper.insert(accessTokenDO);
221 220 // 准备参数
222 221 String accessToken = accessTokenDO.getAccessToken();
... ... @@ -238,7 +237,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
238 237 public void testRemoveAccessToken_success() {
239 238 // mock 数据(访问令牌)
240 239 OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class)
241   - .setExpiresTime(addTime(Duration.ofDays(1)));
  240 + .setExpiresTime(LocalDateTime.now().plusDays(1));
242 241 oauth2AccessTokenMapper.insert(accessTokenDO);
243 242 // mock 数据(刷新令牌)
244 243 OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class)
... ... @@ -262,7 +261,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
262 261 o.setUserId(10L);
263 262 o.setUserType(1);
264 263 o.setClientId("test_client");
265   - o.setExpiresTime(DateUtils.addTime(Duration.ofDays(1)));
  264 + o.setExpiresTime(LocalDateTime.now().plusDays(1));
266 265 });
267 266 oauth2AccessTokenMapper.insert(dbAccessToken);
268 267 // 测试 userId 不匹配
... ... @@ -272,7 +271,7 @@ public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest {
272 271 // 测试 userType 不匹配
273 272 oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setClientId("it_client")));
274 273 // 测试 expireTime 不匹配
275   - oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setExpiresTime(new Date())));
  274 + oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setExpiresTime(LocalDateTimeUtil.now())));
276 275 // 准备参数
277 276 OAuth2AccessTokenPageReqVO reqVO = new OAuth2AccessTokenPageReqVO();
278 277 reqVO.setUserId(10L);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceTest.java
... ... @@ -27,6 +27,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
27 27 import org.springframework.context.annotation.Import;
28 28  
29 29 import javax.annotation.Resource;
  30 +import java.time.LocalDateTime;
30 31 import java.util.*;
31 32  
32 33 import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
... ... @@ -87,7 +88,7 @@ public class PermissionServiceTest extends BaseDbUnitTest {
87 88 assertEquals(singletonList(1L), permissionService.getMenuRoleCache().get(10L));
88 89 assertEquals(singletonList(1L), permissionService.getMenuRoleCache().get(20L));
89 90 // 断言 maxUpdateTime 缓存
90   - Date maxUpdateTime = permissionService.getRoleMenuMaxUpdateTime();
  91 + LocalDateTime maxUpdateTime = permissionService.getRoleMenuMaxUpdateTime();
91 92 assertEquals(ObjectUtils.max(roleMenuDO01.getUpdateTime(), roleMenuDO02.getUpdateTime()), maxUpdateTime);
92 93 }
93 94  
... ... @@ -105,7 +106,7 @@ public class PermissionServiceTest extends BaseDbUnitTest {
105 106 assertEquals(1, permissionService.getUserRoleCache().size());
106 107 assertEquals(asSet(10L, 20L), permissionService.getUserRoleCache().get(1L));
107 108 // 断言 maxUpdateTime 缓存
108   - Date maxUpdateTime = permissionService.getUserRoleMaxUpdateTime();
  109 + LocalDateTime maxUpdateTime = permissionService.getUserRoleMaxUpdateTime();
109 110 assertEquals(ObjectUtils.max(userRoleDO01.getUpdateTime(), roleMenuDO02.getUpdateTime()), maxUpdateTime);
110 111 }
111 112  
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceTest.java
... ... @@ -19,10 +19,11 @@ import org.springframework.boot.test.mock.mockito.MockBean;
19 19 import org.springframework.context.annotation.Import;
20 20  
21 21 import javax.annotation.Resource;
  22 +import java.time.LocalDateTime;
22 23 import java.util.*;
23 24 import java.util.stream.Collectors;
24 25  
25   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  26 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
26 27 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
27 28 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
28 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
... ... @@ -165,7 +166,7 @@ public class RoleServiceTest extends BaseDbUnitTest {
165 166 o.setName("土豆");
166 167 o.setCode("tudou");
167 168 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
168   - o.setCreateTime(DateUtils.buildTime(2022, 2, 8));
  169 + o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 8));
169 170 });
170 171 roleMapper.insert(dbRole);
171 172 // 测试 name 不匹配
... ... @@ -173,13 +174,13 @@ public class RoleServiceTest extends BaseDbUnitTest {
173 174 // 测试 code 不匹配
174 175 roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCode("hong")));
175 176 // 测试 createTime 不匹配
176   - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(DateUtils.buildTime(2022, 2, 16))));
  177 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 16))));
177 178 // 准备参数
178 179 RoleExportReqVO reqVO = new RoleExportReqVO();
179 180 reqVO.setName("土豆");
180 181 reqVO.setCode("tu");
181 182 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
182   - reqVO.setCreateTime((new Date[]{buildTime(2022, 2, 1),buildTime(2022, 2, 12)}));
  183 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 2, 1),buildLocalDateTime(2022, 2, 12)}));
183 184  
184 185 // 调用
185 186 List<RoleDO> list = roleService.getRoleList(reqVO);
... ... @@ -195,7 +196,7 @@ public class RoleServiceTest extends BaseDbUnitTest {
195 196 o.setName("土豆");
196 197 o.setCode("tudou");
197 198 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
198   - o.setCreateTime(DateUtils.buildTime(2022, 2, 8));
  199 + o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 8));
199 200 });
200 201 roleMapper.insert(dbRole);
201 202 // 测试 name 不匹配
... ... @@ -203,13 +204,13 @@ public class RoleServiceTest extends BaseDbUnitTest {
203 204 // 测试 code 不匹配
204 205 roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCode("hong")));
205 206 // 测试 createTime 不匹配
206   - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(DateUtils.buildTime(2022, 2, 16))));
  207 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 16))));
207 208 // 准备参数
208 209 RolePageReqVO reqVO = new RolePageReqVO();
209 210 reqVO.setName("土豆");
210 211 reqVO.setCode("tu");
211 212 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
212   - reqVO.setCreateTime((new Date[]{buildTime(2022, 2, 1),buildTime(2022, 2, 12)}));
  213 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 2, 1),buildLocalDateTime(2022, 2, 12)}));
213 214  
214 215 // 调用
215 216 PageResult<RoleDO> pageResult = roleService.getRolePage(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sensitiveword/SensitiveWordServiceImplTest.java
... ... @@ -17,11 +17,11 @@ import org.springframework.boot.test.mock.mockito.MockBean;
17 17 import org.springframework.context.annotation.Import;
18 18  
19 19 import javax.annotation.Resource;
  20 +import java.time.LocalDateTime;
20 21 import java.util.Arrays;
21   -import java.util.Date;
22 22 import java.util.List;
23 23  
24   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  24 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
25 25 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
26 26 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
27 27 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
... ... @@ -145,7 +145,7 @@ public class SensitiveWordServiceImplTest extends BaseDbUnitTest {
145 145 o.setName("笨蛋");
146 146 o.setTags(Arrays.asList("论坛", "蔬菜"));
147 147 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
148   - o.setCreateTime(DateUtils.buildTime(2022, 2, 8));
  148 + o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 8));
149 149 });
150 150 sensitiveWordMapper.insert(dbSensitiveWord);
151 151 // 测试 name 不匹配
... ... @@ -153,13 +153,13 @@ public class SensitiveWordServiceImplTest extends BaseDbUnitTest {
153 153 // 测试 tags 不匹配
154 154 sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setTags(Arrays.asList("短信", "日用品"))));
155 155 // 测试 createTime 不匹配
156   - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setCreateTime(DateUtils.buildTime(2022, 2, 16))));
  156 + sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 16))));
157 157 // 准备参数
158 158 SensitiveWordPageReqVO reqVO = new SensitiveWordPageReqVO();
159 159 reqVO.setName("笨");
160 160 reqVO.setTag("论坛");
161 161 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
162   - reqVO.setCreateTime((new Date[]{buildTime(2022, 2, 1),buildTime(2022, 2, 12)}));
  162 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 2, 1),buildLocalDateTime(2022, 2, 12)}));
163 163  
164 164 // 调用
165 165 PageResult<SensitiveWordDO> pageResult = sensitiveWordService.getSensitiveWordPage(reqVO);
... ... @@ -176,7 +176,7 @@ public class SensitiveWordServiceImplTest extends BaseDbUnitTest {
176 176 o.setName("笨蛋");
177 177 o.setTags(Arrays.asList("论坛", "蔬菜"));
178 178 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
179   - o.setCreateTime(DateUtils.buildTime(2022, 2, 8));
  179 + o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 8));
180 180 });
181 181 sensitiveWordMapper.insert(dbSensitiveWord);
182 182 // 测试 name 不匹配
... ... @@ -184,13 +184,13 @@ public class SensitiveWordServiceImplTest extends BaseDbUnitTest {
184 184 // 测试 tags 不匹配
185 185 sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setTags(Arrays.asList("短信", "日用品"))));
186 186 // 测试 createTime 不匹配
187   - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setCreateTime(DateUtils.buildTime(2022, 2, 16))));
  187 + sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2022, 2, 16))));
188 188 // 准备参数
189 189 SensitiveWordExportReqVO reqVO = new SensitiveWordExportReqVO();
190 190 reqVO.setName("笨");
191 191 reqVO.setTag("论坛");
192 192 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
193   - reqVO.setCreateTime((new Date[]{buildTime(2022, 2, 1),buildTime(2022, 2, 12)}));
  193 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 2, 1),buildLocalDateTime(2022, 2, 12)}));
194 194  
195 195 // 调用
196 196 List<SensitiveWordDO> list = sensitiveWordService.getSensitiveWordList(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceTest.java
... ... @@ -18,13 +18,13 @@ import org.springframework.boot.test.mock.mockito.MockBean;
18 18 import org.springframework.context.annotation.Import;
19 19  
20 20 import javax.annotation.Resource;
21   -import java.util.Date;
  21 +import java.time.LocalDateTime;
22 22 import java.util.function.Consumer;
23 23  
24 24 import static cn.hutool.core.util.RandomUtil.randomEle;
25 25 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN;
26 26 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  27 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
28 28 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
29 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
30 30 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -59,7 +59,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
59 59 // 调用
60 60 smsChannelService.initSmsClients();
61 61 // 校验 maxUpdateTime 属性
62   - Date maxUpdateTime = (Date) BeanUtil.getFieldValue(smsChannelService, "maxUpdateTime");
  62 + LocalDateTime maxUpdateTime = (LocalDateTime) BeanUtil.getFieldValue(smsChannelService, "maxUpdateTime");
63 63 assertEquals(max(smsChannelDO01.getUpdateTime(), smsChannelDO02.getUpdateTime()), maxUpdateTime);
64 64 // 校验调用
65 65 verify(smsClientFactory, times(1)).createOrUpdateSmsClient(
... ... @@ -159,7 +159,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
159 159 SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class, o -> { // 等会查询到
160 160 o.setSignature("芋道源码");
161 161 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
162   - o.setCreateTime(buildTime(2020, 12, 12));
  162 + o.setCreateTime(buildLocalDateTime(2020, 12, 12));
163 163 });
164 164 smsChannelMapper.insert(dbSmsChannel);
165 165 // 测试 signature 不匹配
... ... @@ -167,12 +167,12 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
167 167 // 测试 status 不匹配
168 168 smsChannelMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsChannel, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
169 169 // 测试 createTime 不匹配
170   - smsChannelMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsChannel, o -> o.setCreateTime(buildTime(2020, 11, 11))));
  170 + smsChannelMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsChannel, o -> o.setCreateTime(buildLocalDateTime(2020, 11, 11))));
171 171 // 准备参数
172 172 SmsChannelPageReqVO reqVO = new SmsChannelPageReqVO();
173 173 reqVO.setSignature("芋道");
174 174 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
175   - reqVO.setCreateTime((new Date[]{buildTime(2020, 12, 1),buildTime(2020, 12, 24)}));
  175 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2020, 12, 1),buildLocalDateTime(2020, 12, 24)}));
176 176  
177 177 // 调用
178 178 PageResult<SmsChannelDO> pageResult = smsChannelService.getSmsChannelPage(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceTest.java
... ... @@ -19,14 +19,14 @@ import org.junit.jupiter.api.Test;
19 19 import org.springframework.context.annotation.Import;
20 20  
21 21 import javax.annotation.Resource;
22   -import java.util.Date;
  22 +import java.time.LocalDateTime;
23 23 import java.util.List;
24 24 import java.util.Map;
25 25 import java.util.function.Consumer;
26 26  
27 27 import static cn.hutool.core.util.RandomUtil.randomBoolean;
28 28 import static cn.hutool.core.util.RandomUtil.randomEle;
29   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  29 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
30 30 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
31 31 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
32 32 import static org.junit.jupiter.api.Assertions.assertEquals;
... ... @@ -49,9 +49,9 @@ public class SmsLogServiceTest extends BaseDbUnitTest {
49 49 o.setTemplateId(10L);
50 50 o.setMobile("15601691300");
51 51 o.setSendStatus(SmsSendStatusEnum.INIT.getStatus());
52   - o.setSendTime(buildTime(2020, 11, 11));
  52 + o.setSendTime(buildLocalDateTime(2020, 11, 11));
53 53 o.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus());
54   - o.setReceiveTime(buildTime(2021, 11, 11));
  54 + o.setReceiveTime(buildLocalDateTime(2021, 11, 11));
55 55 });
56 56 smsLogMapper.insert(dbSmsLog);
57 57 // 测试 channelId 不匹配
... ... @@ -63,20 +63,20 @@ public class SmsLogServiceTest extends BaseDbUnitTest {
63 63 // 测试 sendStatus 不匹配
64 64 smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setSendStatus(SmsSendStatusEnum.IGNORE.getStatus())));
65 65 // 测试 sendTime 不匹配
66   - smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildTime(2020, 12, 12))));
  66 + smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildLocalDateTime(2020, 12, 12))));
67 67 // 测试 receiveStatus 不匹配
68 68 smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setReceiveStatus(SmsReceiveStatusEnum.SUCCESS.getStatus())));
69 69 // 测试 receiveTime 不匹配
70   - smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildTime(2021, 12, 12))));
  70 + smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildLocalDateTime(2021, 12, 12))));
71 71 // 准备参数
72 72 SmsLogPageReqVO reqVO = new SmsLogPageReqVO();
73 73 reqVO.setChannelId(1L);
74 74 reqVO.setTemplateId(10L);
75 75 reqVO.setMobile("156");
76 76 reqVO.setSendStatus(SmsSendStatusEnum.INIT.getStatus());
77   - reqVO.setSendTime((new Date[]{buildTime(2020, 11, 1),buildTime(2020, 11, 30)}));
  77 + reqVO.setSendTime((new LocalDateTime[]{buildLocalDateTime(2020, 11, 1),buildLocalDateTime(2020, 11, 30)}));
78 78 reqVO.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus());
79   - reqVO.setReceiveTime((new Date[]{buildTime(2021, 11, 1),buildTime(2021, 11, 30)}));
  79 + reqVO.setReceiveTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 1),buildLocalDateTime(2021, 11, 30)}));
80 80  
81 81 // 调用
82 82 PageResult<SmsLogDO> pageResult = smsLogService.getSmsLogPage(reqVO);
... ... @@ -94,9 +94,9 @@ public class SmsLogServiceTest extends BaseDbUnitTest {
94 94 o.setTemplateId(10L);
95 95 o.setMobile("15601691300");
96 96 o.setSendStatus(SmsSendStatusEnum.INIT.getStatus());
97   - o.setSendTime(buildTime(2020, 11, 11));
  97 + o.setSendTime(buildLocalDateTime(2020, 11, 11));
98 98 o.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus());
99   - o.setReceiveTime(buildTime(2021, 11, 11));
  99 + o.setReceiveTime(buildLocalDateTime(2021, 11, 11));
100 100 });
101 101 smsLogMapper.insert(dbSmsLog);
102 102 // 测试 channelId 不匹配
... ... @@ -108,20 +108,20 @@ public class SmsLogServiceTest extends BaseDbUnitTest {
108 108 // 测试 sendStatus 不匹配
109 109 smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setSendStatus(SmsSendStatusEnum.IGNORE.getStatus())));
110 110 // 测试 sendTime 不匹配
111   - smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildTime(2020, 12, 12))));
  111 + smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildLocalDateTime(2020, 12, 12))));
112 112 // 测试 receiveStatus 不匹配
113 113 smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setReceiveStatus(SmsReceiveStatusEnum.SUCCESS.getStatus())));
114 114 // 测试 receiveTime 不匹配
115   - smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildTime(2021, 12, 12))));
  115 + smsLogMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildLocalDateTime(2021, 12, 12))));
116 116 // 准备参数
117 117 SmsLogExportReqVO reqVO = new SmsLogExportReqVO();
118 118 reqVO.setChannelId(1L);
119 119 reqVO.setTemplateId(10L);
120 120 reqVO.setMobile("156");
121 121 reqVO.setSendStatus(SmsSendStatusEnum.INIT.getStatus());
122   - reqVO.setSendTime((new Date[]{buildTime(2020, 11, 1),buildTime(2020, 11, 30)}));
  122 + reqVO.setSendTime((new LocalDateTime[]{buildLocalDateTime(2020, 11, 1),buildLocalDateTime(2020, 11, 30)}));
123 123 reqVO.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus());
124   - reqVO.setReceiveTime((new Date[]{buildTime(2021, 11, 1),buildTime(2021, 11, 30)}));
  124 + reqVO.setReceiveTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 1),buildLocalDateTime(2021, 11, 30)}));
125 125  
126 126 // 调用
127 127 List<SmsLogDO> list = smsLogService.getSmsLogList(reqVO);
... ... @@ -202,7 +202,7 @@ public class SmsLogServiceTest extends BaseDbUnitTest {
202 202 // 准备参数
203 203 Long id = dbSmsLog.getId();
204 204 Boolean success = randomBoolean();
205   - Date receiveTime = randomDate();
  205 + LocalDateTime receiveTime = randomLocalDateTime();
206 206 String apiReceiveCode = randomString();
207 207 String apiReceiveMsg = randomString();
208 208  
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceTest.java
... ... @@ -25,7 +25,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
25 25 import org.springframework.context.annotation.Import;
26 26  
27 27 import javax.annotation.Resource;
28   -import java.util.Date;
  28 +import java.time.LocalDateTime;
29 29 import java.util.List;
30 30 import java.util.Map;
31 31 import java.util.function.Consumer;
... ... @@ -34,7 +34,7 @@ import static cn.hutool.core.bean.BeanUtil.getFieldValue;
34 34 import static cn.hutool.core.util.RandomUtil.randomEle;
35 35 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
36 36 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
37   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  37 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
38 38 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
39 39 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
40 40 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -77,7 +77,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
77 77 assertPojoEquals(smsTemplate01, smsTemplateCache.get(smsTemplate01.getCode()));
78 78 assertPojoEquals(smsTemplate02, smsTemplateCache.get(smsTemplate02.getCode()));
79 79 // 断言 maxUpdateTime 缓存
80   - Date maxUpdateTime = (Date) getFieldValue(smsTemplateService, "maxUpdateTime");
  80 + LocalDateTime maxUpdateTime = (LocalDateTime) getFieldValue(smsTemplateService, "maxUpdateTime");
81 81 assertEquals(max(smsTemplate01.getUpdateTime(), smsTemplate02.getUpdateTime()), maxUpdateTime);
82 82 }
83 83  
... ... @@ -205,7 +205,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
205 205 o.setContent("芋道源码");
206 206 o.setApiTemplateId("yunai");
207 207 o.setChannelId(1L);
208   - o.setCreateTime(buildTime(2021, 11, 11));
  208 + o.setCreateTime(buildLocalDateTime(2021, 11, 11));
209 209 });
210 210 smsTemplateMapper.insert(dbSmsTemplate);
211 211 // 测试 type 不匹配
... ... @@ -221,7 +221,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
221 221 // 测试 channelId 不匹配
222 222 smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setChannelId(2L)));
223 223 // 测试 createTime 不匹配
224   - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildTime(2021, 12, 12))));
  224 + smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildLocalDateTime(2021, 12, 12))));
225 225 // 准备参数
226 226 SmsTemplatePageReqVO reqVO = new SmsTemplatePageReqVO();
227 227 reqVO.setType(SmsTemplateTypeEnum.PROMOTION.getType());
... ... @@ -230,7 +230,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
230 230 reqVO.setContent("芋道");
231 231 reqVO.setApiTemplateId("yu");
232 232 reqVO.setChannelId(1L);
233   - reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 1),buildTime(2021, 12, 1)}));
  233 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 1),buildLocalDateTime(2021, 12, 1)}));
234 234  
235 235 // 调用
236 236 PageResult<SmsTemplateDO> pageResult = smsTemplateService.getSmsTemplatePage(reqVO);
... ... @@ -250,7 +250,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
250 250 o.setContent("芋道源码");
251 251 o.setApiTemplateId("yunai");
252 252 o.setChannelId(1L);
253   - o.setCreateTime(buildTime(2021, 11, 11));
  253 + o.setCreateTime(buildLocalDateTime(2021, 11, 11));
254 254 });
255 255 smsTemplateMapper.insert(dbSmsTemplate);
256 256 // 测试 type 不匹配
... ... @@ -266,7 +266,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
266 266 // 测试 channelId 不匹配
267 267 smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setChannelId(2L)));
268 268 // 测试 createTime 不匹配
269   - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildTime(2021, 12, 12))));
  269 + smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildLocalDateTime(2021, 12, 12))));
270 270 // 准备参数
271 271 SmsTemplateExportReqVO reqVO = new SmsTemplateExportReqVO();
272 272 reqVO.setType(SmsTemplateTypeEnum.PROMOTION.getType());
... ... @@ -275,7 +275,7 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest {
275 275 reqVO.setContent("芋道");
276 276 reqVO.setApiTemplateId("yu");
277 277 reqVO.setChannelId(1L);
278   - reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 1),buildTime(2021, 12, 1)}));
  278 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 1),buildLocalDateTime(2021, 12, 1)}));
279 279  
280 280 // 调用
281 281 List<SmsTemplateDO> list = smsTemplateService.getSmsTemplateList(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/tenant/TenantPackageServiceImplTest.java
... ... @@ -15,9 +15,9 @@ import org.springframework.context.annotation.Import;
15 15  
16 16 import javax.annotation.Resource;
17 17  
18   -import java.util.Date;
  18 +import java.time.LocalDateTime;
19 19  
20   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  20 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
21 21 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
22 22 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
23 23 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -142,7 +142,7 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest {
142 142 o.setName("芋道源码");
143 143 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
144 144 o.setRemark("源码解析");
145   - o.setCreateTime(buildTime(2022, 10, 10));
  145 + o.setCreateTime(buildLocalDateTime(2022, 10, 10));
146 146 });
147 147 tenantPackageMapper.insert(dbTenantPackage);
148 148 // 测试 name 不匹配
... ... @@ -152,13 +152,13 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest {
152 152 // 测试 remark 不匹配
153 153 tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setRemark("解析")));
154 154 // 测试 createTime 不匹配
155   - tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setCreateTime(buildTime(2022, 11, 11))));
  155 + tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setCreateTime(buildLocalDateTime(2022, 11, 11))));
156 156 // 准备参数
157 157 TenantPackagePageReqVO reqVO = new TenantPackagePageReqVO();
158 158 reqVO.setName("芋道");
159 159 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
160 160 reqVO.setRemark("源码");
161   - reqVO.setCreateTime((new Date[]{buildTime(2022, 10, 9),buildTime(2022, 10, 11)}));
  161 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2022, 10, 9),buildLocalDateTime(2022, 10, 11)}));
162 162  
163 163 // 调用
164 164 PageResult<TenantPackageDO> pageResult = tenantPackageService.getTenantPackagePage(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImplTest.java
... ... @@ -28,15 +28,13 @@ import org.springframework.boot.test.mock.mockito.MockBean;
28 28 import org.springframework.context.annotation.Import;
29 29  
30 30 import javax.annotation.Resource;
31   -import java.time.Duration;
  31 +import java.time.LocalDateTime;
32 32 import java.util.Arrays;
33 33 import java.util.Collections;
34   -import java.util.Date;
35 34 import java.util.List;
36 35  
37 36 import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
38   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
39   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  37 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
40 38 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
41 39 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
42 40 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
... ... @@ -112,7 +110,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
112 110 public void testValidTenant_expired() {
113 111 // mock 数据
114 112 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setId(1L).setStatus(CommonStatusEnum.ENABLE.getStatus())
115   - .setExpireTime(buildTime(2020, 2, 2)));
  113 + .setExpireTime(buildLocalDateTime(2020, 2, 2)));
116 114 tenantMapper.insert(tenant);
117 115  
118 116 // 调用,并断言业务异常
... ... @@ -123,7 +121,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
123 121 public void testValidTenant_success() {
124 122 // mock 数据
125 123 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setId(1L).setStatus(CommonStatusEnum.ENABLE.getStatus())
126   - .setExpireTime(addTime(Duration.ofDays(1))));
  124 + .setExpireTime(LocalDateTime.now().plusDays(1)));
127 125 tenantMapper.insert(tenant);
128 126  
129 127 // 调用,并断言业务异常
... ... @@ -293,7 +291,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
293 291 o.setContactName("芋艿");
294 292 o.setContactMobile("15601691300");
295 293 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
296   - o.setCreateTime(buildTime(2020, 12, 12));
  294 + o.setCreateTime(buildLocalDateTime(2020, 12, 12));
297 295 });
298 296 tenantMapper.insert(dbTenant);
299 297 // 测试 name 不匹配
... ... @@ -305,14 +303,14 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
305 303 // 测试 status 不匹配
306 304 tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
307 305 // 测试 createTime 不匹配
308   - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildTime(2021, 12, 12))));
  306 + tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildLocalDateTime(2021, 12, 12))));
309 307 // 准备参数
310 308 TenantPageReqVO reqVO = new TenantPageReqVO();
311 309 reqVO.setName("芋道");
312 310 reqVO.setContactName("艿");
313 311 reqVO.setContactMobile("1560");
314 312 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
315   - reqVO.setCreateTime(new Date[]{buildTime(2020, 12, 1),buildTime(2020, 12, 24)});
  313 + reqVO.setCreateTime(new LocalDateTime[]{buildLocalDateTime(2020, 12, 1),buildLocalDateTime(2020, 12, 24)});
316 314  
317 315 // 调用
318 316 PageResult<TenantDO> pageResult = tenantService.getTenantPage(reqVO);
... ... @@ -330,7 +328,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
330 328 o.setContactName("芋艿");
331 329 o.setContactMobile("15601691300");
332 330 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
333   - o.setCreateTime(buildTime(2020, 12, 12));
  331 + o.setCreateTime(buildLocalDateTime(2020, 12, 12));
334 332 });
335 333 tenantMapper.insert(dbTenant);
336 334 // 测试 name 不匹配
... ... @@ -342,14 +340,14 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
342 340 // 测试 status 不匹配
343 341 tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
344 342 // 测试 createTime 不匹配
345   - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildTime(2021, 12, 12))));
  343 + tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildLocalDateTime(2021, 12, 12))));
346 344 // 准备参数
347 345 TenantExportReqVO reqVO = new TenantExportReqVO();
348 346 reqVO.setName("芋道");
349 347 reqVO.setContactName("艿");
350 348 reqVO.setContactMobile("1560");
351 349 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
352   - reqVO.setCreateTime(new Date[]{buildTime(2020, 12, 1),buildTime(2020, 12, 24)});
  350 + reqVO.setCreateTime(new LocalDateTime[]{buildLocalDateTime(2020, 12, 1),buildLocalDateTime(2020, 12, 24)});
353 351  
354 352 // 调用
355 353 List<TenantDO> list = tenantService.getTenantList(reqVO);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
... ... @@ -32,15 +32,15 @@ import org.springframework.security.crypto.password.PasswordEncoder;
32 32  
33 33 import javax.annotation.Resource;
34 34 import java.io.ByteArrayInputStream;
  35 +import java.time.LocalDateTime;
35 36 import java.util.Collection;
36   -import java.util.Date;
37 37 import java.util.List;
38 38 import java.util.function.Consumer;
39 39  
40 40 import static cn.hutool.core.util.RandomUtil.randomBytes;
41 41 import static cn.hutool.core.util.RandomUtil.randomEle;
42 42 import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
43   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  43 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
44 44 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
45 45 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
46 46 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -295,7 +295,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
295 295 reqVO.setUsername("tu");
296 296 reqVO.setMobile("1560");
297 297 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
298   - reqVO.setCreateTime((new Date[]{buildTime(2020, 12, 1),buildTime(2020, 12, 24)}));
  298 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2020, 12, 1),buildLocalDateTime(2020, 12, 24)}));
299 299 reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门
300 300 // mock 方法
301 301 List<DeptDO> deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L)));
... ... @@ -318,7 +318,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
318 318 reqVO.setUsername("tu");
319 319 reqVO.setMobile("1560");
320 320 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
321   - reqVO.setCreateTime((new Date[]{buildTime(2020, 12, 1),buildTime(2020, 12, 24)}));
  321 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2020, 12, 1),buildLocalDateTime(2020, 12, 24)}));
322 322 reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门
323 323 // mock 方法
324 324 List<DeptDO> deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L)));
... ... @@ -340,7 +340,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
340 340 o.setUsername("tudou");
341 341 o.setMobile("15601691300");
342 342 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
343   - o.setCreateTime(buildTime(2020, 12, 12));
  343 + o.setCreateTime(buildLocalDateTime(2020, 12, 12));
344 344 o.setDeptId(2L);
345 345 });
346 346 userMapper.insert(dbUser);
... ... @@ -351,7 +351,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
351 351 // 测试 status 不匹配
352 352 userMapper.insert(ObjectUtils.cloneIgnoreId(dbUser, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
353 353 // 测试 createTime 不匹配
354   - userMapper.insert(ObjectUtils.cloneIgnoreId(dbUser, o -> o.setCreateTime(buildTime(2020, 11, 11))));
  354 + userMapper.insert(ObjectUtils.cloneIgnoreId(dbUser, o -> o.setCreateTime(buildLocalDateTime(2020, 11, 11))));
355 355 // 测试 dept 不匹配
356 356 userMapper.insert(ObjectUtils.cloneIgnoreId(dbUser, o -> o.setDeptId(0L)));
357 357 return dbUser;
... ...
yudao-server/src/main/java/cn/iocoder/yudao/module/shop/controller/app/AppShopOrderController.java
1 1 package cn.iocoder.yudao.module.shop.controller.app;
2 2  
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.util.date.DateUtils;
5 5 import cn.iocoder.yudao.module.pay.service.notify.vo.PayNotifyOrderReqVO;
6 6 import cn.iocoder.yudao.module.pay.service.notify.vo.PayRefundOrderReqVO;
7 7 import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
... ... @@ -19,7 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
19 19  
20 20 import javax.annotation.Resource;
21 21 import javax.validation.Valid;
22   -import java.time.Duration;
  22 +import java.time.LocalDateTime;
  23 +import java.time.temporal.ChronoUnit;
23 24  
24 25 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 26 import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
... ... @@ -49,7 +50,7 @@ public class AppShopOrderController {
49 50 reqDTO.setSubject("标题:" + shopOrderId);
50 51 reqDTO.setBody("内容:" + shopOrderId);
51 52 reqDTO.setAmount(200); // 单位:分
52   - reqDTO.setExpireTime(DateUtils.addTime(Duration.ofDays(1)));
  53 + reqDTO.setExpireTime(LocalDateTime.now().plusDays(1));
53 54 Long payOrderId = payOrderService.createPayOrder(reqDTO);
54 55  
55 56 // 拼接返回
... ...