Переглянути джерело

update 优化 提示语与待办时间展示

疯狂的狮子Li 7 місяців тому
батько
коміт
2add71a01c

+ 2 - 1
ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java

@@ -43,6 +43,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -104,7 +105,7 @@ public class TokenController {
 
         Long userId = LoginHelper.getUserId();
         scheduledExecutorService.schedule(() -> {
-            remoteMessageService.publishMessage(List.of(userId), "欢迎登录RuoYi-Cloud-Plus微服务管理系统");
+            remoteMessageService.publishMessage(List.of(userId), DateUtils.getTodayHour(new Date()) + "好,欢迎登录 RuoYi-Cloud-Plus 后台管理系统");
         }, 5, TimeUnit.SECONDS);
         return R.ok(loginVo);
     }

+ 78 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java

@@ -1,5 +1,7 @@
 package org.dromara.common.core.utils;
 
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.dromara.common.core.enums.FormatsType;
 import org.dromara.common.core.exception.ServiceException;
@@ -297,4 +299,80 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         }
     }
 
+    /**
+     * 根据指定日期时间获取时间段(凌晨 / 上午 / 中午 / 下午 / 晚上)
+     *
+     * @param date 日期时间
+     * @return 时间段描述
+     */
+    public static String getTodayHour(Date date) {
+        int hour = DateUtil.hour(date, true);
+        if (hour <= 6) {
+            return "凌晨";
+        } else if (hour < 12) {
+            return "上午";
+        } else if (hour == 12) {
+            return "中午";
+        } else if (hour <= 18) {
+            return "下午";
+        } else {
+            return "晚上";
+        }
+    }
+
+    /**
+     * 将日期格式化为仿微信的友好时间
+     * <p>
+     * 规则说明:
+     * 1. 未来时间:yyyy-MM-dd HH:mm
+     * 2. 今天:
+     * - 1 分钟内:刚刚
+     * - 1 小时内:X 分钟前
+     * - 超过 1 小时:凌晨/上午/中午/下午/晚上 HH:mm
+     * 3. 昨天:昨天 HH:mm
+     * 4. 本周:周X HH:mm
+     * 5. 今年内:MM-dd HH:mm
+     * 6. 非今年:yyyy-MM-dd HH:mm
+     *
+     * @param date 日期时间
+     * @return 格式化后的时间描述
+     */
+    public static String formatFriendlyTime(Date date) {
+        if (date == null) {
+            return "";
+        }
+        Date now = DateUtil.date();
+
+        // 未来时间或非今年
+        if (date.after(now) || DateUtil.year(date) != DateUtil.year(now)) {
+            return parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM, date);
+        }
+
+        // 今天
+        if (DateUtil.isSameDay(date, now)) {
+            long minutes = DateUtil.between(date, now, DateUnit.MINUTE);
+            if (minutes < 1) {
+                return "刚刚";
+            }
+            if (minutes < 60) {
+                return minutes + "分钟前";
+            }
+            return getTodayHour(date) + " " + DateUtil.format(date, "HH:mm");
+        }
+
+        // 昨天
+        if (DateUtil.isSameDay(date, DateUtil.yesterday())) {
+            return "昨天 " + DateUtil.format(date, "HH:mm");
+        }
+
+        // 本周
+        if (DateUtil.isSameWeek(date, now, true)) {
+            return DateUtil.dayOfWeekEnum(date).toChinese("周")
+                + " " + DateUtil.format(date, "HH:mm");
+        }
+
+        // 今年内其它时间
+        return DateUtil.format(date, "MM-dd HH:mm");
+    }
+
 }

+ 4 - 0
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java

@@ -253,4 +253,8 @@ public class FlowHisTaskVo implements Serializable {
         this.cooperateTypeName = CooperateType.getValueByKey(cooperateType);
     }
 
+    public String getCreateTime() {
+        return DateUtils.formatFriendlyTime(createTime);
+    }
+
 }

+ 5 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java

@@ -1,6 +1,7 @@
 package org.dromara.workflow.domain.vo;
 
 import lombok.Data;
+import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.warm.flow.core.entity.User;
@@ -8,7 +9,6 @@ import org.dromara.workflow.common.constant.FlowConstant;
 
 import java.io.Serial;
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -212,4 +212,8 @@ public class FlowTaskVo implements Serializable {
     private String businessTitle;
     //业务扩展信息结束
 
+    public String getCreateTime() {
+        return DateUtils.formatFriendlyTime(createTime);
+    }
+
 }