瀏覽代碼

修改store服务下所有的发送站内信

liudongzhi 8 小時之前
父節點
當前提交
33e1377951
共有 30 個文件被更改,包括 215 次插入81 次删除
  1. 4 0
      alien-store/src/main/java/shop/alien/store/controller/LifeNoticeController.java
  2. 5 0
      alien-store/src/main/java/shop/alien/store/service/LifeAppealManageService.java
  3. 4 6
      alien-store/src/main/java/shop/alien/store/service/LifeCommentService.java
  4. 4 0
      alien-store/src/main/java/shop/alien/store/service/LifeUserOrderService.java
  5. 5 7
      alien-store/src/main/java/shop/alien/store/service/LifeUserService.java
  6. 3 0
      alien-store/src/main/java/shop/alien/store/service/StoreCommentAppealSupplementJobService.java
  7. 4 0
      alien-store/src/main/java/shop/alien/store/service/impl/ArrivalReminderNoticeServiceImpl.java
  8. 6 0
      alien-store/src/main/java/shop/alien/store/service/impl/CommentAppealServiceImpl.java
  9. 4 18
      alien-store/src/main/java/shop/alien/store/service/impl/CommonRatingServiceImpl.java
  10. 8 0
      alien-store/src/main/java/shop/alien/store/service/impl/LawyerUserViolationServiceImpl.java
  11. 7 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponStoreFriendServiceImpl.java
  12. 8 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeFeedbackServiceImpl.java
  13. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeGroupPackageServiceImpl.java
  14. 4 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeUserExpertOrderServiceImpl.java
  15. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeUserExpertServiceImpl.java
  16. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeUserViolationServiceImpl.java
  17. 4 0
      alien-store/src/main/java/shop/alien/store/service/impl/OperationalActivityServiceImpl.java
  18. 6 0
      alien-store/src/main/java/shop/alien/store/service/impl/ReservationNoticeAsyncServiceImpl.java
  19. 4 7
      alien-store/src/main/java/shop/alien/store/service/impl/StoreClockInServiceImpl.java
  20. 6 11
      alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentAppealServiceImpl.java
  21. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java
  22. 4 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreIncomeDetailsRecordServiceImpl.java
  23. 7 13
      alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java
  24. 4 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreOperationalActivityServiceImpl.java
  25. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreRenovationRequirementServiceImpl.java
  26. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreReservationServiceImpl.java
  27. 4 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreUserExpertServiceImpl.java
  28. 5 19
      alien-store/src/main/java/shop/alien/store/service/impl/StoreUserServiceImpl.java
  29. 70 0
      alien-store/src/main/java/shop/alien/store/util/LifeNoticeUtil.java
  30. 5 0
      alien-store/src/main/java/shop/alien/store/util/ai/AiReportReviewUtil.java

+ 4 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeNoticeController.java

@@ -11,6 +11,7 @@ import shop.alien.entity.store.LifeNotice;
 import shop.alien.entity.store.vo.LifeNoticeVo;
 import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.store.service.LifeNoticeService;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.util.List;
 
@@ -24,6 +25,8 @@ public class LifeNoticeController {
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeNoticeService lifeNoticeService;
 
     @GetMapping("/getNoticeByPhoneId")
@@ -91,6 +94,7 @@ public class LifeNoticeController {
     @PostMapping("/addNotice")
     public R<Boolean> addNotice(LifeNotice notice) {
         log.info("LifeNoticeController.addNotice?notice={}", notice.toString());
+        lifeNoticeUtil.fillUserTypeAndRefId(notice);
         if (lifeNoticeMapper.insert(notice) > 0) {
             return R.success("新增成功");
         }

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/LifeAppealManageService.java

@@ -25,6 +25,8 @@ import shop.alien.mapper.LifeAppealManageMapper;
 import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.StoreCommentAppealMapper;
 import shop.alien.mapper.StoreCommentMapper;
+import shop.alien.store.util.LifeNoticeUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 import shop.alien.util.ali.AliOSSUtil;
 
 import java.io.File;
@@ -47,6 +49,8 @@ public class LifeAppealManageService {
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final StoreCommentAppealMapper storeCommentAppealMapper;
 
     private final StoreCommentMapper storeCommentMapper;
@@ -92,6 +96,7 @@ public class LifeAppealManageService {
         }
         notice.setCreatedTime(new Date());
         notice.setNoticeType(1);
+        lifeNoticeUtil.fillUserTypeAndRefId(notice);
         lifeNoticeMapper.insert(notice);
         return storeCommentAppealMapper.updateById(storeCommentAppeal);
     }

+ 4 - 6
alien-store/src/main/java/shop/alien/store/service/LifeCommentService.java

@@ -21,6 +21,7 @@ import shop.alien.mapper.*;
 import shop.alien.mapper.second.SecondGoodsMapper;
 import shop.alien.store.service.clockin.ClockInRecommendCacheService;
 import shop.alien.store.service.dynamics.DynamicsRecommendCacheService;
+import shop.alien.store.util.LifeNoticeUtil;
 import shop.alien.util.type.PhoneTypeIdResult;
 import shop.alien.util.type.TypeUtil;
 
@@ -63,6 +64,8 @@ public class LifeCommentService {
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final SecondGoodsMapper secondGoodsMapper;
 
     private final StoreStaffConfigMapper storeStaffConfigMapper;
@@ -326,13 +329,8 @@ public class LifeCommentService {
             lifeNotice.setTitle("动态通知");
             lifeNotice.setContext("点赞了你的动态");
             LifeUserDynamics lifeUserDynamics = lifeUserDynamicsMapper.selectById(Integer.parseInt(huifuId));
-
-            //系统通知,只修改接收人的 id和类型
-            PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(lifeUserDynamics == null ? null : lifeUserDynamics.getPhoneId());
-            lifeNotice.setReceiverUserType(phoneTypeIdResult.getType());
-            lifeNotice.setSenderRefId(phoneTypeIdResult.getId());
-
             lifeNotice.setReceiverId(lifeUserDynamics == null ? null : lifeUserDynamics.getPhoneId());
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
         }
     }

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/LifeUserOrderService.java

@@ -31,6 +31,7 @@ import shop.alien.store.util.ali.AliApi;
 import shop.alien.util.ali.AliOSSUtil;
 import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.constant.*;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.io.File;
 import java.io.IOException;
@@ -70,6 +71,8 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final StoreImgMapper storeImgMapper;
 
     private final StoreUserMapper storeUserMapper;
@@ -534,6 +537,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
             lifeMessage.setIsRead(0);
             lifeMessage.setNoticeType(2);
             lifeMessage.setTitle("退款成功");
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
 
             WebSocketVo websocketVo = new WebSocketVo();

+ 5 - 7
alien-store/src/main/java/shop/alien/store/service/LifeUserService.java

@@ -40,6 +40,7 @@ import shop.alien.store.service.clockin.ClockInRecommendCacheService;
 import shop.alien.store.service.dynamics.DynamicsRecommendCacheService;
 import shop.alien.store.util.FunctionMagic;
 import shop.alien.store.util.LifeFansIdentityQuery;
+import shop.alien.store.util.LifeNoticeUtil;
 import shop.alien.util.type.PhoneTypeIdResult;
 import shop.alien.util.type.TypeUtil;
 
@@ -80,6 +81,8 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeMessageMapper messageMapper;
 
     private final WebSocketProcess webSocketProcess;
@@ -344,6 +347,7 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
         boolean suppressNotice = followedLifeUserId != null
                 && lifeUserPersonalizationSettingService.shouldSuppressFollowRelatedNotice(followedLifeUserId);
         if (!suppressNotice) {
+            lifeNoticeUtil.fillUserTypeAndRefId(notice);
             lifeNoticeMapper.insert(notice);
 
             if (uniPushOn) {
@@ -564,13 +568,6 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
         LifeNotice lifeNotice = new LifeNotice();
         lifeNotice.setReceiverId(receiverId);
 
-        if (receiverId.contains("_")){
-            PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(receiverId);
-            lifeNotice.setReceiverUserType(phoneTypeIdResult.getType());
-            lifeNotice.setReceiverRefId(phoneTypeIdResult.getId());
-        }
-
-
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String storeDate = simpleDateFormat.format(new Date());
         String text = "您在" + storeDate + "实名认证成功。";
@@ -581,6 +578,7 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
         lifeNotice.setSenderId("system");
         lifeNotice.setIsRead(0);
         lifeNotice.setNoticeType(1);
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
         lifeNoticeMapper.insert(lifeNotice);
 
         WebSocketVo websocketVo = new WebSocketVo();

+ 3 - 0
alien-store/src/main/java/shop/alien/store/service/StoreCommentAppealSupplementJobService.java

@@ -20,6 +20,7 @@ import org.springframework.web.client.RestTemplate;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.mapper.*;
+import shop.alien.store.util.LifeNoticeUtil;
 import shop.alien.util.common.constant.CommentSourceTypeEnum;
 
 import java.util.ArrayList;
@@ -41,6 +42,7 @@ public class StoreCommentAppealSupplementJobService {
     private final StoreUserMapper storeUserMapper;
     private final LifeUserMapper lifeUserMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final CommonRatingMapper commonRatingMapper;
     private final CommonCommentMapper commonCommentMapper;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
@@ -260,6 +262,7 @@ public class StoreCommentAppealSupplementJobService {
         lifeNotice.setContext(context);
         lifeNotice.setNoticeType(1);
         lifeNotice.setIsRead(0);
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
         lifeNoticeMapper.insert(lifeNotice);
     }
 

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/impl/ArrivalReminderNoticeServiceImpl.java

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
 import shop.alien.entity.store.LifeNotice;
 import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.store.service.ArrivalReminderNoticeService;
+import shop.alien.store.util.LifeNoticeUtil;
 
 /**
  * 到店提醒用户站内通知:独立实现,便于维护与测试
@@ -22,6 +23,8 @@ public class ArrivalReminderNoticeServiceImpl implements ArrivalReminderNoticeSe
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     @Override
     public boolean sendArrivalReminderNotice(String userPhone, Integer orderId, Integer businessOrderId,
                                              Integer reservationId, String startTimeRaw,
@@ -49,6 +52,7 @@ public class ArrivalReminderNoticeServiceImpl implements ArrivalReminderNoticeSe
             notice.setContext(ctx.toJSONString());
             notice.setNoticeType(NOTICE_TYPE_ORDER);
             notice.setIsRead(0);
+            lifeNoticeUtil.fillUserTypeAndRefId(notice);
             lifeNoticeMapper.insert(notice);
             log.info("到店提醒站内通知已写入,orderId={}, receiverId=user_{}", orderId, phone);
             return true;

+ 6 - 0
alien-store/src/main/java/shop/alien/store/service/impl/CommentAppealServiceImpl.java

@@ -22,6 +22,7 @@ import shop.alien.store.service.OrderReviewService;
 import shop.alien.store.service.ReviewCommentService;
 import shop.alien.util.common.JwtUtil;
 import shop.alien.util.common.ListToPage;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -42,6 +43,8 @@ public class CommentAppealServiceImpl extends ServiceImpl<CommentAppealMapper, C
     private final ReviewCommentService reviewCommentService;
     private final WebSocketProcess webSocketProcess;
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final OrderReviewMapper orderReviewMapper;
     private final LifeUserMapper lifeUserMapper;
     private final LawyerUserMapper lawyerUserMapper;
@@ -226,6 +229,7 @@ public class CommentAppealServiceImpl extends ServiceImpl<CommentAppealMapper, C
 //            jsonObject.put("status", "pending"); // 待审核状态
             lifeNotice.setContext(jsonObject.toJSONString());
 
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 发送 WebSocket 消息
@@ -289,6 +293,7 @@ public class CommentAppealServiceImpl extends ServiceImpl<CommentAppealMapper, C
             jsonObject.put("message", message);
             lifeNotice.setContext(jsonObject.toJSONString());
 
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 发送 WebSocket 消息
@@ -334,6 +339,7 @@ public class CommentAppealServiceImpl extends ServiceImpl<CommentAppealMapper, C
             jsonObject.put("message", message);
             lifeNotice.setContext(jsonObject.toJSONString());
 
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 发送 WebSocket 消息

+ 4 - 18
alien-store/src/main/java/shop/alien/store/service/impl/CommonRatingServiceImpl.java

@@ -44,8 +44,7 @@ import shop.alien.util.common.constant.CommentSourceTypeEnum;
 import shop.alien.util.common.constant.RatingBusinessTypeEnum;
 import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
-import shop.alien.util.type.PhoneTypeIdResult;
-import shop.alien.util.type.TypeUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -76,6 +75,7 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
     private final StoreInfoMapper storeInfoMapper;
     private final StoreUserMapper storeUserMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final WebSocketProcess webSocketProcess;
     private final LifeUserMapper lifeUserMapper;
     private final CommonCommentMapper commonCommentMapper;
@@ -95,8 +95,6 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
     private final StoreClockInMapper storeClockInMapper;
     private final OrderReviewService orderReviewService;
 
-    private TypeUtil typeUtil;
-
     public static final List<String> SERVICES_LIST = ImmutableList.of(
             TextReviewServiceEnum.COMMENT_DETECTION_PRO.getService(),
             TextReviewServiceEnum.LLM_QUERY_MODERATION.getService()
@@ -296,18 +294,12 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
                         lifeNotice.setSenderId("system");
                         lifeNotice.setReceiverId(receiverId);
 
-                        if (receiverId.contains("_")){
-                            PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(receiverId);
-                            lifeNotice.setReceiverUserType(phoneTypeIdResult.getType());
-                            lifeNotice.setReceiverRefId(phoneTypeIdResult.getId());
-                        }
-
-
                         lifeNotice.setBusinessId(commonRating.getBusinessId());
                         lifeNotice.setTitle(noticeTitle);
                         lifeNotice.setContext(contextJson.toJSONString());
                         lifeNotice.setNoticeType(Constants.Notice.SYSTEM_NOTICE); // 系统通知
                         lifeNotice.setIsRead(0);
+                        lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
                         lifeNoticeMapper.insert(lifeNotice);
                         
                         // 通过WebSocket发送实时通知
@@ -511,13 +503,6 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
                 LifeNotice lifeMessage = new LifeNotice();
                 lifeMessage.setReceiverId("store_" + storeUser.getPhone());
 
-                if (lifeMessage.getReceiverId().contains("_")){
-                        PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(lifeMessage.getReceiverId());
-                        lifeMessage.setReceiverUserType(phoneTypeIdResult.getType());
-                        lifeMessage.setReceiverRefId(phoneTypeIdResult.getId());
-                }
-
-
                 String text = "在"+commonDate+",您的店铺有一条差评记录,您可查看评价内容是否属实,如不属实,可向平台进行申诉。";
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put("message", text);
@@ -526,6 +511,7 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
                 lifeMessage.setSenderId("system");
                 lifeMessage.setIsRead(0);
                 lifeMessage.setNoticeType(1);
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                 lifeNoticeMapper.insert(lifeMessage);
 
                 WebSocketVo websocketVo = new WebSocketVo();

+ 8 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LawyerUserViolationServiceImpl.java

@@ -25,6 +25,7 @@ import shop.alien.store.service.LawyerUserViolationService;
 import shop.alien.store.util.ali.AliApi;
 import shop.alien.util.common.EnumUtil;
 import shop.alien.util.common.constant.LawyerStatusEnum;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -117,6 +118,8 @@ public class LawyerUserViolationServiceImpl extends ServiceImpl<LawyerUserViolat
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final WebSocketProcess webSocketProcess;
 
     private final StoreDictionaryMapper storeDictionaryMapper;
@@ -296,6 +299,7 @@ public class LawyerUserViolationServiceImpl extends ServiceImpl<LawyerUserViolat
                 return;
             }
 
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             int noticeResult = lifeNoticeMapper.insert(lifeNotice);
             if (noticeResult <= 0) {
                 log.warn("保存举报人通知失败,举报ID:{}", lawyerUserViolation.getId());
@@ -328,6 +332,7 @@ public class LawyerUserViolationServiceImpl extends ServiceImpl<LawyerUserViolat
                 return;
             }
 
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNoticeReported);
             int noticeResult = lifeNoticeMapper.insert(lifeNoticeReported);
             if (noticeResult <= 0) {
                 log.warn("保存被举报人通知失败,举报ID:{}", lawyerUserViolation.getId());
@@ -1232,6 +1237,7 @@ public class LawyerUserViolationServiceImpl extends ServiceImpl<LawyerUserViolat
             // 创建并保存通知
             LifeNotice lifeNotice = createLifeNotice(violation.getId(), receiverId,
                     notificationInfo.getTitle(), notificationInfo.getMessage());
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 发送WebSocket消息
@@ -1244,6 +1250,7 @@ public class LawyerUserViolationServiceImpl extends ServiceImpl<LawyerUserViolat
             String notificationInfo1 = "您的编号为" + violation.getOrderNumber() + "的订单,订单金额已原路返还至您的支付渠道,请查收";
             LifeNotice lifeNotice1 = createLifeNotice(violation.getId(), receiverId,
                     "退款到账通知", notificationInfo1);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice1);
             lifeNoticeMapper.insert(lifeNotice1);
 
             // 发送WebSocket消息
@@ -1277,6 +1284,7 @@ public class LawyerUserViolationServiceImpl extends ServiceImpl<LawyerUserViolat
             // 创建并保存通知
             LifeNotice lifeNotice = createLifeNotice(violation.getId(), receiverId,
                     notificationInfo.getTitle(), notificationInfo.getMessage());
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 发送WebSocket消息

+ 7 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponStoreFriendServiceImpl.java

@@ -24,6 +24,7 @@ import shop.alien.store.service.LifeDiscountCouponStoreFriendService;
 import shop.alien.util.common.constant.DiscountCouponEnum;
 import shop.alien.util.coupon.DiscountCouponExpirationUtil;
 import shop.alien.util.coupon.LifeDiscountCouponStock;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -77,6 +78,8 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeDiscountCouponFriendRuleMapper lifeDiscountCouponFriendRuleMapper;
 
     private final LifeDiscountCouponFriendRuleDetailMapper lifeDiscountCouponFriendRuleDetailMapper;
@@ -352,6 +355,7 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
         lifeMessage.setIsRead(0);
         lifeMessage.setDeleteFlag(0);
         lifeMessage.setSenderId("system");
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
         lifeNoticeMapper.insert(lifeMessage);
     }
 
@@ -511,6 +515,7 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
                 //存入类型
                 lifeNotice.setNoticeType(1);
                 lifeNotice.setTitle("赠劵通知");
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
                 lifeNoticeMapper.insert(lifeNotice);
 
             }
@@ -670,6 +675,7 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
                 //存入类型
                 lifeNotice.setNoticeType(1);
                 lifeNotice.setTitle("赠劵通知");
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
                 lifeNoticeMapper.insert(lifeNotice);
 
             }
@@ -1312,6 +1318,7 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
             couponNotice.setTitle("好评送优惠券");
             couponNotice.setIsRead(0);
             couponNotice.setDeleteFlag(0);
+            lifeNoticeUtil.fillUserTypeAndRefId(couponNotice);
             lifeNoticeMapper.insert(couponNotice);
 
             try {

+ 8 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeFeedbackServiceImpl.java

@@ -22,6 +22,7 @@ import shop.alien.store.service.LifeFeedbackReplyService;
 import shop.alien.store.service.LifeFeedbackService;
 import shop.alien.store.service.LifeImgService;
 import shop.alien.store.util.ai.AiFeedbackAssignUtils;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -41,6 +42,8 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
     private final LifeLogMapper lifeLogMapper;
     private final LifeFeedbackReplyService lifeFeedbackReplyService;
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final StoreUserMapper storeUserMapper;
     private final WebSocketProcess webSocketProcess;
     private final AiFeedbackAssignUtils aiFeedbackAssignUtils;
@@ -723,6 +726,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             lifeNotice.setBusinessId(feedback.getId());
 
             // 保存通知
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 通过WebSocket发送实时通知
@@ -826,6 +830,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             lifeNotice.setBusinessId(feedback.getId());
 
             // 保存通知
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 通过WebSocket发送实时通知
@@ -928,6 +933,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             lifeNotice.setBusinessId(feedback.getId());
 
             // 保存通知
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 通过WebSocket发送实时通知
@@ -1015,6 +1021,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             lifeNotice.setBusinessId(feedback.getId());
 
             // 保存通知
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 通过WebSocket发送实时通知
@@ -1090,6 +1097,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             lifeNotice.setBusinessId(feedback.getId());
 
             // 保存通知
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 通过WebSocket发送实时通知

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeGroupPackageServiceImpl.java

@@ -19,6 +19,7 @@ import shop.alien.store.util.GroupConstant;
 import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.constant.DiscountCouponEnum;
 import shop.alien.util.coupon.DiscountCouponExpirationUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
@@ -45,6 +46,8 @@ public class LifeGroupPackageServiceImpl extends ServiceImpl<LifeGroupPackageMap
     private final LifeDiscountCouponUserMapper lifeDiscountCouponUserMapper;
     private final LifeUserMapper lifeUserMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final StoreInfoMapper storeInfoMapper;
     private final StoreGroupInfoMapper storeGroupInfoMapper;
     private final StoreImgMapper storeImgMapper;
@@ -172,6 +175,7 @@ public class LifeGroupPackageServiceImpl extends ServiceImpl<LifeGroupPackageMap
                                         lifeMessage.setSenderId("system");
                                         lifeMessage.setIsRead(0);
                                         lifeMessage.setNoticeType(2);
+                                        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                                         lifeNoticeMapper.insert(lifeMessage);
                                     }
                                 }
@@ -309,6 +313,7 @@ public class LifeGroupPackageServiceImpl extends ServiceImpl<LifeGroupPackageMap
                                         lifeMessage.setSenderId("system");
                                         lifeMessage.setIsRead(0);
                                         lifeMessage.setNoticeType(2);
+                                        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                                         lifeNoticeMapper.insert(lifeMessage);
                                     }
                                 }

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeUserExpertOrderServiceImpl.java

@@ -15,6 +15,7 @@ import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.LifeUserExpertOrderMapper;
 import shop.alien.store.service.LifeUserExpertOrderService;
 import shop.alien.util.common.ListToPage;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -38,6 +39,8 @@ public class LifeUserExpertOrderServiceImpl extends ServiceImpl<LifeUserExpertOr
     private final LifeUserExpertOrderMapper lifeUserExpertOrderMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     @Override
     public IPage<LifeUserExpertOrderVo> getExpertOrderList(int page, int size, String orderNo, String storeName) {
         QueryWrapper<LifeUserExpertOrderVo> wrapper = new QueryWrapper<>();
@@ -196,6 +199,7 @@ public class LifeUserExpertOrderServiceImpl extends ServiceImpl<LifeUserExpertOr
             lifeMessage.setIsRead(0);
             lifeMessage.setDeleteFlag(0);
             lifeMessage.setSenderId("system");
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
             return resultMap;
         }

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeUserExpertServiceImpl.java

@@ -20,6 +20,7 @@ import shop.alien.mapper.LifeUserExpertOrderMapper;
 import shop.alien.mapper.LifeUserExpertWorksMapper;
 import shop.alien.store.service.LifeUserExpertOrderService;
 import shop.alien.store.service.LifeUserExpertService;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -50,6 +51,8 @@ public class LifeUserExpertServiceImpl extends ServiceImpl<LifeUserExpertMapper,
     private final LifeUserExpertOrderMapper lifeUserExpertOrderMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     @Override
     public IPage<LifeUserExpertVo> getUserExpertList(int page, int size, String userName, String expertCode, Integer userId) {
         QueryWrapper<LifeUserExpertVo> wrapper = new QueryWrapper<>();
@@ -109,6 +112,7 @@ public class LifeUserExpertServiceImpl extends ServiceImpl<LifeUserExpertMapper,
             lifeMessage.setIsRead(0);
             lifeMessage.setDeleteFlag(0);
             lifeMessage.setSenderId("system");
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
         } else if (expertStatus == 2) {
             String text = "您在"+formattedDate+"提交的信息未通过审核,拒绝原因:"+comment+"。请您重新填写信息后再次提交至平台审核。";
@@ -121,6 +125,7 @@ public class LifeUserExpertServiceImpl extends ServiceImpl<LifeUserExpertMapper,
             lifeMessage.setIsRead(0);
             lifeMessage.setDeleteFlag(0);
             lifeMessage.setSenderId("system");
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
         }
         return lifeUserExpertMapper.updateExpert(expert);

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeUserViolationServiceImpl.java

@@ -33,6 +33,7 @@ import shop.alien.store.util.FunctionMagic;
 import shop.alien.store.util.ai.AiReportReviewUtil;
 import shop.alien.util.ali.AliOSSUtil;
 import shop.alien.util.common.EnumUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.io.File;
 import java.io.IOException;
@@ -75,6 +76,8 @@ public class LifeUserViolationServiceImpl extends ServiceImpl<LifeUserViolationM
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final WebSocketProcess webSocketProcess;
 
     private final AliOSSUtil aliOSSUtil;
@@ -447,6 +450,7 @@ public class LifeUserViolationServiceImpl extends ServiceImpl<LifeUserViolationM
             LifeMessage.setReceiverId("user_" + lifeUser.getUserPhone());
 
         }
+        lifeNoticeUtil.fillUserTypeAndRefId(LifeMessage);
         lifeNoticeMapper.insert(LifeMessage);
 
         WebSocketVo websocketVo = new WebSocketVo();
@@ -483,6 +487,7 @@ public class LifeUserViolationServiceImpl extends ServiceImpl<LifeUserViolationM
                 LifeUser lifeUser = lifeUserService.getOne(new QueryWrapper<LifeUser>().eq("id", v.getReportedUserId()));
                 reportedLifeMessage.setReceiverId("user_" + lifeUser.getUserPhone());
             }
+            lifeNoticeUtil.fillUserTypeAndRefId(reportedLifeMessage);
             lifeNoticeMapper.insert(reportedLifeMessage);
 
             WebSocketVo websocketVoReported = new WebSocketVo();

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/impl/OperationalActivityServiceImpl.java

@@ -28,6 +28,7 @@ import shop.alien.mapper.storePlantform.StoreOperationalActivityMapper;
 import shop.alien.store.config.WebSocketProcess;
 import shop.alien.store.service.OperationalActivityService;
 import shop.alien.util.common.Constants;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.util.*;
 
@@ -60,6 +61,8 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final StoreUserMapper storeUserMapper;
 
     private final WebSocketProcess webSocketProcess;
@@ -430,6 +433,7 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
         lifeNotice.setIsRead(0);
 
         // 保存通知到数据库
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
         lifeNoticeMapper.insert(lifeNotice);
 
         // 通过WebSocket发送实时通知

+ 6 - 0
alien-store/src/main/java/shop/alien/store/service/impl/ReservationNoticeAsyncServiceImpl.java

@@ -19,6 +19,7 @@ import shop.alien.mapper.UserReservationOrderMapper;
 import shop.alien.mapper.UserReservationTableMapper;
 import shop.alien.store.service.ReservationNoticeAsyncService;
 import shop.alien.store.service.StoreBookingTableService;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -32,6 +33,8 @@ import java.util.stream.Collectors;
 public class ReservationNoticeAsyncServiceImpl implements ReservationNoticeAsyncService {
 
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final UserReservationOrderMapper userReservationOrderMapper;
     private final UserReservationMapper userReservationMapper;
     private final StoreUserMapper storeUserMapper;
@@ -95,6 +98,7 @@ public class ReservationNoticeAsyncServiceImpl implements ReservationNoticeAsync
             lifeNotice.setContext(contextJson.toJSONString());
             lifeNotice.setNoticeType(2);
             lifeNotice.setIsRead(0);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
             log.info("用户取消预订已通知商家,reservationId={}, receiverId=store_{}", reservationId, storePhone);
         } catch (Exception e) {
@@ -138,6 +142,7 @@ public class ReservationNoticeAsyncServiceImpl implements ReservationNoticeAsync
             lifeNotice.setContext(contextJson.toJSONString());
             lifeNotice.setNoticeType(2);
             lifeNotice.setIsRead(0);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
             log.info("用户修改预订已通知商家,reservationId={}, receiverId=store_{}", reservationId, storePhone);
         } catch (Exception e) {
@@ -197,6 +202,7 @@ public class ReservationNoticeAsyncServiceImpl implements ReservationNoticeAsync
             lifeNotice.setContext(contextJson.toJSONString());
             lifeNotice.setNoticeType(2);
             lifeNotice.setIsRead(0);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
             log.info("订单过期已通知商家,reservationId={}, receiverId=store_{}", reservationId, storePhone);
         } catch (Exception e) {

+ 4 - 7
alien-store/src/main/java/shop/alien/store/service/impl/StoreClockInServiceImpl.java

@@ -25,6 +25,7 @@ import shop.alien.store.config.WebSocketProcess;
 import shop.alien.store.service.CommonCommentService;
 import shop.alien.store.service.StoreClockInService;
 import shop.alien.store.service.StoreCommentService;
+import shop.alien.store.util.LifeNoticeUtil;
 import shop.alien.store.util.ai.AiContentModerationUtil;
 import shop.alien.util.common.constant.CommentSourceTypeEnum;
 import shop.alien.util.type.PhoneTypeIdResult;
@@ -73,6 +74,8 @@ public class StoreClockInServiceImpl extends ServiceImpl<StoreClockInMapper, Sto
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final CommonCommentService commonCommentService;
 
     private final CommonCommentMapper commonCommentMapper;
@@ -442,13 +445,6 @@ public class StoreClockInServiceImpl extends ServiceImpl<StoreClockInMapper, Sto
 
             lifeNotice.setReceiverId(phoneId);
 
-            if (phoneId.contains("_")){
-                PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(phoneId);
-                lifeNotice.setReceiverUserType(phoneTypeIdResult.getType());
-                lifeNotice.setReceiverRefId(phoneTypeIdResult.getId());
-            }
-
-
             lifeNotice.setTitle("打卡审核通知");
             lifeNotice.setNoticeType(1); // 1-系统通知
             lifeNotice.setIsRead(0);
@@ -460,6 +456,7 @@ public class StoreClockInServiceImpl extends ServiceImpl<StoreClockInMapper, Sto
             lifeNotice.setContext(jsonObject.toJSONString());
 
             // 保存通知
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             // 发送WebSocket消息

+ 6 - 11
alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentAppealServiceImpl.java

@@ -44,8 +44,7 @@ import shop.alien.util.common.safe.TextModerationResultVO;
 import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
 import shop.alien.util.common.constant.CommentSourceTypeEnum;
-import shop.alien.util.type.PhoneTypeIdResult;
-import shop.alien.util.type.TypeUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
@@ -86,6 +85,8 @@ public class StoreCommentAppealServiceImpl extends ServiceImpl<StoreCommentAppea
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeUserMapper lifeUserMapper;
 
     private final StoreCommentAppealSupplementMapper storeCommentAppealSupplementMapper;
@@ -113,8 +114,6 @@ public class StoreCommentAppealServiceImpl extends ServiceImpl<StoreCommentAppea
     private String resultUrl;
 
 
-    private TypeUtil typeUtil;
-
     /**
      * 懒得查, 留着导出Excel
      */
@@ -684,13 +683,6 @@ public class StoreCommentAppealServiceImpl extends ServiceImpl<StoreCommentAppea
         LifeNotice lifeMessage = new LifeNotice();
         lifeMessage.setReceiverId("store_" + storeUser.getPhone());
 
-        if (lifeMessage.getReceiverId().contains("_")){
-            PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(lifeMessage.getReceiverId());
-            lifeMessage.setReceiverUserType(phoneTypeIdResult.getType());
-            lifeMessage.setReceiverRefId(phoneTypeIdResult.getId());
-        }
-
-
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("message", text);
         lifeMessage.setContext(jsonObject.toJSONString());
@@ -698,6 +690,7 @@ public class StoreCommentAppealServiceImpl extends ServiceImpl<StoreCommentAppea
         lifeMessage.setSenderId("system");
         lifeMessage.setIsRead(0);
         lifeMessage.setNoticeType(1);
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
         lifeNoticeMapper.insert(lifeMessage);
 
         WebSocketVo websocketVo = new WebSocketVo();
@@ -1200,6 +1193,7 @@ public class StoreCommentAppealServiceImpl extends ServiceImpl<StoreCommentAppea
             lifeNotice.setContext(contextJson.toJSONString());
             lifeNotice.setNoticeType(1);
             lifeNotice.setIsRead(0);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             WebSocketVo websocketVo = new WebSocketVo();
@@ -1261,6 +1255,7 @@ public class StoreCommentAppealServiceImpl extends ServiceImpl<StoreCommentAppea
             lifeMessage.setSenderId("system");
             lifeMessage.setIsRead(0);
             lifeMessage.setNoticeType(1);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
 
             WebSocketVo websocketVo = new WebSocketVo();

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java

@@ -31,6 +31,7 @@ import shop.alien.util.common.netease.TextCheckUtil;
 import shop.alien.util.common.safe.TextModerationResultVO;
 import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -72,6 +73,8 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final WebSocketProcess webSocketProcess;
 
     private final TagsSynonymMapper tagsSynonymMapper;
@@ -698,6 +701,7 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
                 lifeMessage.setSenderId("system");
                 lifeMessage.setIsRead(0);
                 lifeMessage.setNoticeType(1);
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                 lifeNoticeMapper.insert(lifeMessage);
 
                 WebSocketVo websocketVo = new WebSocketVo();
@@ -1169,6 +1173,7 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
                 lifeMessage.setSenderId("system");
                 lifeMessage.setIsRead(0);
                 lifeMessage.setNoticeType(1);
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                 lifeNoticeMapper.insert(lifeMessage);
 
                 WebSocketVo websocketVo = new WebSocketVo();

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreIncomeDetailsRecordServiceImpl.java

@@ -26,6 +26,7 @@ import shop.alien.util.common.DateUtils;
 import shop.alien.util.common.ListToPage;
 import shop.alien.util.common.constant.CouponTypeEnum;
 import shop.alien.util.common.constant.OrderStatusEnum;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -61,6 +62,8 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final WebSocketProcess webSocketProcess;
     private final StoreInfoMapper storeInfoMapper;
 
@@ -334,6 +337,7 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
         lifeMessage.setSenderId("system");
         lifeMessage.setIsRead(0);
         lifeMessage.setNoticeType(1);
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
         lifeNoticeMapper.insert(lifeMessage);
 
         WebSocketVo websocketVo = new WebSocketVo();

+ 7 - 13
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -52,8 +52,7 @@ import shop.alien.util.common.constant.CouponStatusEnum;
 import shop.alien.util.common.constant.CouponTypeEnum;
 import shop.alien.util.common.constant.OcrTypeEnum;
 import shop.alien.util.common.constant.OrderStatusEnum;
-import shop.alien.util.type.PhoneTypeIdResult;
-import shop.alien.util.type.TypeUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import javax.annotation.Resource;
 import java.io.File;
@@ -138,6 +137,8 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeGroupBuyMainMapper lifeGroupBuyMainMapper;
 
     private final StoreClockInService storeClockInService;
@@ -162,8 +163,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 
     private final StoreOfficialAlbumMapper storeOfficialAlbumMapper;
 
-    private TypeUtil typeUtil;
-
     /**
      * 运营活动数据访问对象
      */
@@ -1446,6 +1445,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         lifeMessage.setSenderId("system");
         lifeMessage.setIsRead(0);
         lifeMessage.setNoticeType(1);
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
         lifeNoticeMapper.insert(lifeMessage);
 
         WebSocketVo websocketVo = new WebSocketVo();
@@ -2215,15 +2215,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         lifeNotice.setSenderId("system");
         lifeNotice.setReceiverId("store_" + storeUser.getPhone());
 
-
-        if (lifeNotice.getReceiverId().contains("_")){
-            PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(lifeNotice.getReceiverId());
-            lifeNotice.setReceiverUserType(phoneTypeIdResult.getType());
-            lifeNotice.setReceiverRefId(phoneTypeIdResult.getId());
-        }
-
-
-
         lifeNotice.setBusinessId(storeInfo.getId());
         lifeNotice.setTitle("店铺审核通知");
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -2238,6 +2229,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         lifeNotice.setContext(jsonObject.toJSONString());
         lifeNotice.setNoticeType(1); // 系统通知
         lifeNotice.setIsRead(0);
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
         lifeNoticeMapper.insert(lifeNotice);
 
         WebSocketVo websocketVo = new WebSocketVo();
@@ -2799,6 +2791,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             if (num > 0) {
                 // 发送通知
                 LifeNotice lifeMessage = getLifeNotice(storeInfo);
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                 lifeNoticeMapper.insert(lifeMessage);
                 WebSocketVo websocketVo = new WebSocketVo();
                 websocketVo.setSenderId("system");
@@ -2880,6 +2873,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             lifeMessage.setSenderId("system");
             lifeMessage.setIsRead(0);
             lifeMessage.setNoticeType(1);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
 
             WebSocketVo websocketVo = new WebSocketVo();

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreOperationalActivityServiceImpl.java

@@ -33,6 +33,7 @@ import shop.alien.store.config.WebSocketProcess;
 import shop.alien.store.dto.StoreOperationalActivitySignupDto;
 import shop.alien.store.service.StoreOperationalActivityService;
 import shop.alien.util.common.Constants;
+import shop.alien.store.util.LifeNoticeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 
 import java.util.ArrayList;
@@ -60,6 +61,8 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
     private final StoreOperationalActivitySignupMapper signupMapper;
     private final BaseRedisService baseRedisService;
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final StoreUserMapper storeUserMapper;
     private final WebSocketProcess webSocketProcess;
 
@@ -610,6 +613,7 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
         lifeNotice.setIsRead(0);
 
         // 保存通知到数据库
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
         lifeNoticeMapper.insert(lifeNotice);
 
         // 通过WebSocket发送实时通知

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreRenovationRequirementServiceImpl.java

@@ -20,6 +20,7 @@ import shop.alien.store.config.WebSocketProcess;
 import shop.alien.store.service.StoreRenovationRequirementService;
 import shop.alien.store.util.ai.AiContentModerationUtil;
 import shop.alien.util.common.JwtUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -43,6 +44,8 @@ public class StoreRenovationRequirementServiceImpl extends ServiceImpl<StoreReno
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final WebSocketProcess webSocketProcess;
 
     private final StoreUserMapper storeUserMapper;
@@ -116,6 +119,7 @@ public class StoreRenovationRequirementServiceImpl extends ServiceImpl<StoreReno
             lifeMessage.setSenderId("system");
             lifeMessage.setIsRead(0);
             lifeMessage.setNoticeType(1);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
 
             WebSocketVo websocketVo = new WebSocketVo();
@@ -240,6 +244,7 @@ public class StoreRenovationRequirementServiceImpl extends ServiceImpl<StoreReno
             lifeNotice.setSenderId("system");
             lifeNotice.setIsRead(0);
             lifeNotice.setNoticeType(1);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
 
             WebSocketVo websocketVo = new WebSocketVo();

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreReservationServiceImpl.java

@@ -36,6 +36,7 @@ import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.LifeUserMapper;
 import shop.alien.mapper.StoreUserMapper;
 import shop.alien.util.common.JwtUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 import org.springframework.util.StringUtils;
 import javax.annotation.PostConstruct;
 import java.text.ParseException;
@@ -66,6 +67,8 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
     private final StoreBookingTableService storeBookingTableService;
     private final UserReservationTableMapper userReservationTableMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final LifeUserMapper lifeUserMapper;
     private final StoreUserMapper storeUserMapper;
     private final MerchantPaymentStrategyFactory merchantPaymentStrategyFactory;
@@ -339,6 +342,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
             lifeNotice.setIsRead(0);
             
             // 保存通知到数据库
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
             
             log.info("商家取消预约通知发送成功,reservationId={}, userId={}, receiverId={}", 
@@ -465,6 +469,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
             lifeNotice.setIsRead(0);
             
             // 保存通知到数据库
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeNotice);
             lifeNoticeMapper.insert(lifeNotice);
             
             log.info("核销后订金退款通知发送成功,reservationId={}, userId={}, receiverId={}", 

+ 4 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreUserExpertServiceImpl.java

@@ -16,6 +16,7 @@ import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.LifeUserExpertMapper;
 import shop.alien.mapper.LifeUserMapper;
 import shop.alien.store.service.StoreUserExpertService;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -44,6 +45,8 @@ public class StoreUserExpertServiceImpl extends ServiceImpl<LifeUserExpertMapper
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeUserMapper lifeUserMapper;
 
     @Override
@@ -246,6 +249,7 @@ public class StoreUserExpertServiceImpl extends ServiceImpl<LifeUserExpertMapper
         lifeMessage.setIsRead(0);
         lifeMessage.setDeleteFlag(0);
         lifeMessage.setSenderId("system");
+        lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
         lifeNoticeMapper.insert(lifeMessage);
         return result;
     }

+ 5 - 19
alien-store/src/main/java/shop/alien/store/service/impl/StoreUserServiceImpl.java

@@ -34,8 +34,7 @@ import shop.alien.store.util.FunctionMagic;
 import shop.alien.util.ali.AliOSSUtil;
 import shop.alien.util.common.DateUtils;
 import shop.alien.util.common.JwtUtil;
-import shop.alien.util.type.PhoneTypeIdResult;
-import shop.alien.util.type.TypeUtil;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.io.File;
 import java.io.IOException;
@@ -74,6 +73,8 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
 
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final LifeNoticeUtil lifeNoticeUtil;
+
     private final LifeMessageMapper lifeMessageMapper;
 
     private final StorePlatformUserRoleMapper storePlatformUserRoleMapper;
@@ -84,9 +85,6 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
 
     private final WebSocketProcess webSocketProcess;
 
-
-    private TypeUtil typeUtil;
-
     @Value("${spring.web.resources.excel-path}")
     private String excelPath;
 
@@ -1053,12 +1051,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
                 lifeMessage.setIsRead(0);
                 lifeMessage.setNoticeType(1);
 
-                if (lifeMessage.getReceiverId().contains("_")){
-                    PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(lifeMessage.getReceiverId());
-                    lifeMessage.setReceiverUserType(phoneTypeIdResult.getType());
-                    lifeMessage.setReceiverRefId(phoneTypeIdResult.getId());
-                }
-
+                lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
                 lifeNoticeMapper.insert(lifeMessage);
 
                 WebSocketVo websocketVo = new WebSocketVo();
@@ -1101,14 +1094,6 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
             LifeNotice lifeMessage = new LifeNotice();
             lifeMessage.setReceiverId("store_" + storeUser.getPhone());
 
-
-            if (lifeMessage.getReceiverId().contains("_")){
-                PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(lifeMessage.getReceiverId());
-                lifeMessage.setReceiverUserType(phoneTypeIdResult.getType());
-                lifeMessage.setReceiverRefId(phoneTypeIdResult.getId());
-            }
-
-
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String storeDate = simpleDateFormat.format(storeUser.getCreatedTime());
             String text = "您在" + storeDate + "撤销了注销账号,所有数据均已保留,您可继续在平台使用。";
@@ -1119,6 +1104,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
             lifeMessage.setSenderId("system");
             lifeMessage.setIsRead(0);
             lifeMessage.setNoticeType(1);
+            lifeNoticeUtil.fillUserTypeAndRefId(lifeMessage);
             lifeNoticeMapper.insert(lifeMessage);
 
             WebSocketVo websocketVo = new WebSocketVo();

+ 70 - 0
alien-store/src/main/java/shop/alien/store/util/LifeNoticeUtil.java

@@ -0,0 +1,70 @@
+package shop.alien.store.util;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.store.LifeNotice;
+import shop.alien.util.type.PhoneTypeIdResult;
+import shop.alien.util.type.TypeUtil;
+
+/**
+ * LifeNotice 发送人/接收人 userType、refId 回填工具。
+ * <p>
+ * senderId 为 system 时仅补接收人;为 user_/store_/lawyer_ 前缀时补发送人与接收人。
+ * </p>
+ */
+@Component
+@RequiredArgsConstructor
+public class LifeNoticeUtil {
+
+    private static final String SYSTEM_SENDER_ID = "system";
+
+    private final TypeUtil typeUtil;
+
+    public void fillUserTypeAndRefId(LifeNotice notice) {
+        if (notice == null) {
+            return;
+        }
+        fillSender(notice);
+        fillReceiver(notice);
+    }
+
+    private void fillSender(LifeNotice notice) {
+        String senderId = notice.getSenderId();
+        if (!StringUtils.hasText(senderId) || SYSTEM_SENDER_ID.equals(senderId)) {
+            return;
+        }
+        if (notice.getSenderUserType() != null && notice.getSenderRefId() != null) {
+            return;
+        }
+        if (typeUtil.containsUnderscore(senderId)) {
+            applyTypeId(notice, typeUtil.resolveTypeAndId(senderId), true);
+        }
+    }
+
+    private void fillReceiver(LifeNotice notice) {
+        String receiverId = notice.getReceiverId();
+        if (!StringUtils.hasText(receiverId)) {
+            return;
+        }
+        if (notice.getReceiverUserType() != null && notice.getReceiverRefId() != null) {
+            return;
+        }
+        if (typeUtil.containsUnderscore(receiverId)) {
+            applyTypeId(notice, typeUtil.resolveTypeAndId(receiverId), false);
+        }
+    }
+
+    private void applyTypeId(LifeNotice notice, PhoneTypeIdResult result, boolean sender) {
+        if (result == null) {
+            return;
+        }
+        if (sender) {
+            notice.setSenderUserType(result.getType());
+            notice.setSenderRefId(result.getId());
+        } else {
+            notice.setReceiverUserType(result.getType());
+            notice.setReceiverRefId(result.getId());
+        }
+    }
+}

+ 5 - 0
alien-store/src/main/java/shop/alien/store/util/ai/AiReportReviewUtil.java

@@ -17,6 +17,7 @@ import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.WebSocketVo;
 import shop.alien.mapper.*;
 import shop.alien.store.config.WebSocketProcess;
+import shop.alien.store.util.LifeNoticeUtil;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -46,6 +47,8 @@ public class AiReportReviewUtil {
     private final CommonCommentMapper commonCommentMapper;
     private final LifeUserDynamicsMapper lifeUserDynamicsMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
+
+    private final LifeNoticeUtil lifeNoticeUtil;
     private final WebSocketProcess webSocketProcess;
     private final LifeUserMapper lifeUserMapper;
     private final StoreUserMapper storeUserMapper;
@@ -216,6 +219,7 @@ public class AiReportReviewUtil {
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put("message", message);
                 notice.setContext(jsonObject.toJSONString());
+                lifeNoticeUtil.fillUserTypeAndRefId(notice);
                 lifeNoticeMapper.insert(notice);
 
                 WebSocketVo websocketVo = new WebSocketVo();
@@ -243,6 +247,7 @@ public class AiReportReviewUtil {
                     JSONObject reportedJson = new JSONObject();
                     reportedJson.put("message", reportedMessage);
                     reportedNotice.setContext(reportedJson.toJSONString());
+                    lifeNoticeUtil.fillUserTypeAndRefId(reportedNotice);
                     lifeNoticeMapper.insert(reportedNotice);
 
                     WebSocketVo reportedWsVo = new WebSocketVo();