Просмотр исходного кода

feat: 故障订阅回复消息/管理页面使用站点名称;FaultSubscriber 时间字段添加 @JsonFormat

- 微信回复消息中的站点编号改为站点名称
- 管理页面订阅列表站点列改为站点名称
- subscribeTime/unbindTime 添加 @JsonFormat 修复前端日期显示

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 14 часов назад
Родитель
Сommit
b225890c75

+ 1 - 1
admin-web/src/views/admin/station/fault/index.vue

@@ -79,7 +79,7 @@
             </template>
             <el-table-column label="OpenID" prop="openid" width="260" show-overflow-tooltip/>
             <el-table-column label="昵称" prop="nickname" width="150"/>
-            <el-table-column label="站点" prop="stationId" width="120"/>
+            <el-table-column label="站点" prop="stationName" width="120"/>
             <el-table-column label="绑定时间" prop="subscribeTime" width="170">
               <template #default="{row}">{{ u.fmt.fmtDateTime(row.subscribeTime) }}</template>
             </el-table-column>

+ 2 - 0
car-wash-admin/src/main/java/com/kym/admin/controller/FaultSubscriberController.java

@@ -46,6 +46,8 @@ public class FaultSubscriberController {
                 .eq(FaultSubscriber::getStatus, FaultSubscriber.STATUS_已订阅)
                 .orderByDesc(FaultSubscriber::getSubscribeTime)
                 .list();
+        var stationName = com.kym.service.cache.KymCache.INSTANCE.getStationNameById(stationId);
+        list.forEach(s -> s.setStationName(stationName != null ? stationName : stationId));
         return R.success(list);
     }
 

+ 10 - 0
car-wash-entity/src/main/java/com/kym/entity/FaultSubscriber.java

@@ -1,6 +1,8 @@
 package com.kym.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
@@ -46,10 +48,18 @@ public class FaultSubscriber extends BaseEntity<FaultSubscriber> {
     /**
      * 绑定时间
      */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime subscribeTime;
 
     /**
      * 解绑时间
      */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime unbindTime;
+
+    /**
+     * 站点名称(非数据库字段,仅用于前端展示)
+     */
+    @TableField(exist = false)
+    private String stationName;
 }

+ 4 - 1
car-wash-service/src/main/java/com/kym/service/wechat/impl/WeixinMPServiceImpl.java

@@ -213,8 +213,11 @@ public class WeixinMPServiceImpl implements WeixinMPService {
             var result = faultSubscriberService.toggleSubscription(mpOpenid, stationId);
             log.info("故障通知订阅操作: openid={}, stationId={}, result={}", mpOpenid, stationId, result);
 
+            var stationName = com.kym.service.cache.KymCache.INSTANCE.getStationNameById(stationId);
+            var displayName = stationName != null ? stationName : stationId;
+
             // 构造被动文本回复:交换收发方,设置文本消息内容
-            var replyContent = result + "!\n站点:" + stationId + "\n" + ("绑定成功".equals(result) ? "您将收到该站点的设备故障提醒。" : "您将不再收到该站点的设备故障提醒。");
+            var replyContent = result + "!\n站点:" + displayName + "\n" + ("绑定成功".equals(result) ? "您将收到该站点的设备故障提醒。" : "您将不再收到该站点的设备故障提醒。");
             var fromUser = eventData.get("FromUserName"); // 用户openid,回复时要变成 ToUserName
             var toUser = eventData.get("ToUserName");     // 公众号ID,回复时要变成 FromUserName
             eventData.put("ToUserName", fromUser);