소스 검색

feat: 故障订阅绑定时自动获取并存储微信昵称,管理页面直观展示

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 1 일 전
부모
커밋
e6b5e6e08c
1개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 15 0
      car-wash-service/src/main/java/com/kym/service/wechat/impl/WeixinMPServiceImpl.java

+ 15 - 0
car-wash-service/src/main/java/com/kym/service/wechat/impl/WeixinMPServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.CharsetUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.XmlUtil;
 import com.kym.common.utils.CommUtil;
+import com.kym.entity.FaultSubscriber;
 import com.kym.entity.MpMsgTemplate;
 import com.kym.service.FaultSubscriberService;
 import com.kym.service.MpMsgTemplateService;
@@ -213,6 +214,20 @@ public class WeixinMPServiceImpl implements WeixinMPService {
             var result = faultSubscriberService.toggleSubscription(mpOpenid, stationId);
             log.info("故障通知订阅操作: openid={}, stationId={}, result={}", mpOpenid, stationId, result);
 
+            // 绑定成功时更新微信昵称
+            if ("绑定成功".equals(result)) {
+                try {
+                    var mpUser = wxMpService.getUserService().userInfo(mpOpenid, "zh_CN");
+                    faultSubscriberService.lambdaUpdate()
+                            .set(FaultSubscriber::getNickname, mpUser.getNickname())
+                            .eq(FaultSubscriber::getOpenid, mpOpenid)
+                            .eq(FaultSubscriber::getStationId, stationId)
+                            .update();
+                } catch (Exception e) {
+                    log.warn("获取微信昵称失败: mpOpenid={}", mpOpenid, e);
+                }
+            }
+
             var stationName = com.kym.service.cache.KymCache.INSTANCE.getStationNameById(stationId);
             var displayName = stationName != null ? stationName : stationId;