Browse Source

消息、通知、交易

qrs 1 tuần trước cách đây
mục cha
commit
f755a896a9

+ 4 - 1
alien-config/src/main/java/shop/alien/config/databases/MyBatisFieldHandler.java

@@ -1,6 +1,7 @@
 package shop.alien.config.databases;
 
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.reflection.MetaObject;
 import org.springframework.stereotype.Component;
 import shop.alien.util.common.JwtUtil;
@@ -15,6 +16,7 @@ import java.util.Objects;
  * @version 1.0
  * @date 2024/12/6 10:19
  */
+@Slf4j
 @Component
 public class MyBatisFieldHandler implements MetaObjectHandler {
 
@@ -25,9 +27,10 @@ public class MyBatisFieldHandler implements MetaObjectHandler {
      */
     @Override
     public void insertFill(MetaObject metaObject) {
+        log.info("=================================insertFill=========================================");
         //字段为实体类名, 不是表字段名
         this.setFieldValByName("createdTime", new Date(), metaObject);
-        this.setFieldValByName("createdUserId", Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getInteger("userId"), metaObject);
+        this.setFieldValByName("createdUserId", 1, metaObject);
     }
 
     /**

+ 10 - 10
alien-entity/src/main/java/shop/alien/entity/second/SecondTradeRecord.java

@@ -96,22 +96,26 @@ public class SecondTradeRecord extends Model<SecondTradeRecord> {
     @TableField("seller_sign_in_latitude_longitude_address")
     private String sellerSignInLatitudeLongitudeAddress;
 
-    @ApiModelProperty(value = "买家交易状态  1-交易成功  2-交易失败")
+    @ApiModelProperty(value = "买家交易状态  0-未确认  1-交易成功  2-交易失败")
     @TableField("buyer_transaction_status")
     private Integer buyerTransactionStatus;
 
-    @ApiModelProperty(value = "卖家交易状态  1-交易成功  2-交易失败")
+    @ApiModelProperty(value = "买家评价")
+    @TableField("buyer_evaluate")
+    private String buyerEvaluate;
+
+    @ApiModelProperty(value = "卖家交易状态  0-未确认  1-交易成功  2-交易失败")
     @TableField("seller_transaction_status")
     private Integer sellerTransactionStatus;
 
+    @ApiModelProperty(value = "卖家评价")
+    @TableField("seller_evaluate")
+    private String sellerEvaluate;
+
     @ApiModelProperty(value = "交易状态  1-待确认  2-已拒绝  3-待交易  4-交易成功  5-交易失败  6-交易取消")
     @TableField("trade_status")
     private Integer tradeStatus;
 
-    @ApiModelProperty(value = "买家评价")
-    @TableField("buyer_evaluate")
-    private String buyerEvaluate;
-
     @ApiModelProperty(value = "取消交易的用户id")
     @TableField("cancel_user_id")
     private Integer cancelUserId;
@@ -124,10 +128,6 @@ public class SecondTradeRecord extends Model<SecondTradeRecord> {
     @TableField("cancel_reason_supplement")
     private String cancelReasonSupplement;
 
-    @ApiModelProperty(value = "卖家评价")
-    @TableField("seller_evaluate")
-    private String sellerEvaluate;
-
     @ApiModelProperty(value = "删除标记  0:未删除  1:已删除")
     @TableField("delete_flag")
     @TableLogic

+ 5 - 3
alien-entity/src/main/java/shop/alien/entity/second/vo/SecondTradeRecordVo.java

@@ -16,16 +16,18 @@ import java.math.BigDecimal;
 @ApiModel(value = "SecondTradeRecordVo对象", description = "二手商品交易vo")
 public class SecondTradeRecordVo extends SecondTradeRecord {
 
-    @TableField("title")
     @ApiModelProperty(value = "商品标题")
     private String title;
 
-    @TableField("home_image")
     @ApiModelProperty(value = "商品封面图片")
     private String homeImage;
 
-    @TableField("price")
     @ApiModelProperty(value = "商品价格(元,保留小数后两位)")
     private BigDecimal price;
 
+    @ApiModelProperty(value = "用户交易状态  0-未确认  1-交易成功  2-交易失败")
+    private Integer userTransactionStatus;
+
+    @ApiModelProperty(value = "用户交易评价")
+    private String userEvaluate;
 }

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/WebsocketVo.java

@@ -17,6 +17,9 @@ public class WebsocketVo {
     @ApiModelProperty(value = "类别  message:消息  notice:公告  heartbeat:心跳  receipt:消息发送成功回调(用来记录消息id)")
     private String category;
 
+    @ApiModelProperty(value = "公告类型  (0-系统通知和订单提醒之外的类型  1-系统通知 2-订单提醒)")
+    private String noticeType;
+
     @ApiModelProperty(value = "消息类型  1-文本  2-图片 3-链接分享  4-二手交易(确认/拒绝/取消)  5-二手交易签到提醒  6-二手交易已签到")
     private String type;
 

+ 51 - 0
alien-job/pom.xml

@@ -93,6 +93,57 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+        </dependency>
+
+        <!-- mybatis-plus代码生成器 Start -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis-spring</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-annotation</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-core</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <!-- mybatisPlus Freemarker 模版引擎 -->
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+        </dependency>
+        <!-- mybatis-plus代码生成器 End -->
+
     </dependencies>
 
     <build>

+ 1 - 1
alien-job/src/main/java/shop/alien/job/AlienJobApplication.java

@@ -8,7 +8,7 @@ import org.springframework.context.annotation.ComponentScan;
 
 
 @SpringBootApplication
-@ComponentScan({"shop.alien.job.*", "shop.alien.config.redis"})
+@ComponentScan({"shop.alien.job.*", "shop.alien.config.redis", "shop.alien.config.databases",})
 @MapperScan({"shop.alien.mapper"})
 @EnableFeignClients(basePackages = {"shop.alien.job.feign"})
 public class AlienJobApplication {

+ 28 - 30
alien-job/src/main/java/shop/alien/job/second/SecondGoodsTradeXxlJob.java

@@ -83,17 +83,16 @@ public class SecondGoodsTradeXxlJob {
                     lifeMessage.setReceiverId(buyerPhoneId);
                     lifeMessage.setContent(message.toJSONString());
                     lifeMessage.setType("5");
-                    lifeMessage.setIsRead(1);
                     lifeMessageMapper.insert(lifeMessage);
 
                     // 给买家推送消息
-                    WebsocketVo websocketVo = new WebsocketVo();
-                    websocketVo.setSenderId(sellerPhoneId);
-                    websocketVo.setReceiverId(buyerPhoneId);
-                    websocketVo.setCategory("message");
-                    websocketVo.setType("5");
-                    websocketVo.setText(message.toJSONString());
-                    websocketVo.setMessageId(lifeMessage.getId());
+//                    WebsocketVo websocketVo = new WebsocketVo();
+//                    websocketVo.setSenderId(sellerPhoneId);
+//                    websocketVo.setReceiverId(buyerPhoneId);
+//                    websocketVo.setCategory("message");
+//                    websocketVo.setType("5");
+//                    websocketVo.setText(message.toJSONString());
+//                    websocketVo.setMessageId(lifeMessage.getId());
                     alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, sellerPhoneId, buyerPhoneId, "message", "5", message.toJSONString(), lifeMessage.getId());
 
                     // 给买家发送通知
@@ -107,13 +106,13 @@ public class SecondGoodsTradeXxlJob {
                     lifeNoticeMapper.insert(lifeNotice);
 
                     // 给买家推送通知
-                    websocketVo = new WebsocketVo();
-                    websocketVo.setSenderId("system");
-                    websocketVo.setReceiverId(buyerPhoneId);
-                    websocketVo.setCategory("notice");
-                    websocketVo.setType("5");
-                    websocketVo.setText(message.toJSONString());
-                    websocketVo.setMessageId(lifeMessage.getId());
+//                    websocketVo = new WebsocketVo();
+//                    websocketVo.setSenderId("system");
+//                    websocketVo.setReceiverId(buyerPhoneId);
+//                    websocketVo.setCategory("notice");
+//                    websocketVo.setType("5");
+//                    websocketVo.setText(message.toJSONString());
+//                    websocketVo.setMessageId(lifeMessage.getId());
                     alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, "system", buyerPhoneId, "notice", "5", message.toJSONString(), lifeMessage.getId());
 
                     // 给卖家发送消息
@@ -122,17 +121,16 @@ public class SecondGoodsTradeXxlJob {
                     lifeMessage.setReceiverId(sellerPhoneId);
                     lifeMessage.setContent(message.toJSONString());
                     lifeMessage.setType("5");
-                    lifeMessage.setIsRead(1);
                     lifeMessageMapper.insert(lifeMessage);
 
                     // 给卖家推送消息
-                    websocketVo = new WebsocketVo();
-                    websocketVo.setSenderId(buyerPhoneId);
-                    websocketVo.setReceiverId(sellerPhoneId);
-                    websocketVo.setCategory("message");
-                    websocketVo.setType("5");
-                    websocketVo.setText(message.toJSONString());
-                    websocketVo.setMessageId(lifeMessage.getId());
+//                    websocketVo = new WebsocketVo();
+//                    websocketVo.setSenderId(buyerPhoneId);
+//                    websocketVo.setReceiverId(sellerPhoneId);
+//                    websocketVo.setCategory("message");
+//                    websocketVo.setType("5");
+//                    websocketVo.setText(message.toJSONString());
+//                    websocketVo.setMessageId(lifeMessage.getId());
                     alienStoreFeign.sendMsgToClientByPhoneId(sellerPhoneId, buyerPhoneId, sellerPhoneId, "message", "5", message.toJSONString(), lifeMessage.getId());
 
                     // 给卖家发送通知
@@ -146,13 +144,13 @@ public class SecondGoodsTradeXxlJob {
                     lifeNoticeMapper.insert(lifeNotice);
 
                     // 给卖家推送通知
-                    websocketVo = new WebsocketVo();
-                    websocketVo.setSenderId("system");
-                    websocketVo.setReceiverId(sellerPhoneId);
-                    websocketVo.setCategory("notice");
-                    websocketVo.setType("5");
-                    websocketVo.setText(message.toJSONString());
-                    websocketVo.setMessageId(lifeMessage.getId());
+//                    websocketVo = new WebsocketVo();
+//                    websocketVo.setSenderId("system");
+//                    websocketVo.setReceiverId(sellerPhoneId);
+//                    websocketVo.setCategory("notice");
+//                    websocketVo.setType("5");
+//                    websocketVo.setText(message.toJSONString());
+//                    websocketVo.setMessageId(lifeMessage.getId());
                     alienStoreFeign.sendMsgToClientByPhoneId(sellerPhoneId, "system", sellerPhoneId, "notice", "5", message.toJSONString(), lifeMessage.getId());
                 }
             }

+ 1 - 1
alien-job/src/main/resources/logback-spring.xml

@@ -10,7 +10,7 @@
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
     <!-- 定义全局参数常量 -->
-    <property name="log.level" value="info"/>
+    <property name="log.level" value="debug"/>
     <property name="log.maxHistory" value="30"/><!-- 30表示30个 -->
     <property name="logging.path" value="/javaLog/accountBookLog"/>
     <!--输出文件前缀-->

+ 25 - 8
alien-second/src/main/java/shop/alien/second/controller/SecondTradeRecordController.java

@@ -64,7 +64,7 @@ public class SecondTradeRecordController {
     }
 
     @ApiOperation("取消交易")
-    @ApiOperationSupport(order = 6)
+    @ApiOperationSupport(order = 4)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "tradeId", value = "交易id", dataType = "Integer", paramType = "query", required = true),
             @ApiImplicitParam(name = "cancelReason", value = "取消原因", dataType = "String", paramType = "query", required = true),
@@ -76,8 +76,17 @@ public class SecondTradeRecordController {
         return R.fail("取消交易失败");
     }
 
+    @ApiOperation("交易是否可以签到")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({@ApiImplicitParam(name = "tradeId", value = "交易id", dataType = "Integer", paramType = "query", required = true)})
+    @GetMapping("/whetherCanSignIn")
+    public R<Boolean> whetherCanSignIn(@RequestParam int tradeId) throws Exception {
+        log.info("SecondTradeRecordController.whetherCanSignIn?tradeId={}", tradeId);
+        return R.data(secondTradeRecordService.whetherCanSignIn(tradeId));
+    }
+
     @ApiOperation("交易签到")
-    @ApiOperationSupport(order = 4)
+    @ApiOperationSupport(order = 6)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "tradeId", value = "交易id", dataType = "Integer", paramType = "query", required = true),
             @ApiImplicitParam(name = "messageId", value = "消息id", dataType = "Integer", paramType = "query", required = true),
@@ -90,21 +99,29 @@ public class SecondTradeRecordController {
         return R.fail("签到失败");
     }
 
-    @ApiOperation("交易完成")
-    @ApiOperationSupport(order = 5)
+    @ApiOperation("交易完成确认")
+    @ApiOperationSupport(order = 7)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "tradeId", value = "交易id", dataType = "Integer", paramType = "query", required = true),
-            @ApiImplicitParam(name = "type", value = "0-失败  1-成功", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "type", value = "1-交易成功  2-交易失败", dataType = "Integer", paramType = "query", required = true),
             @ApiImplicitParam(name = "evaluate", value = "评价", dataType = "String", paramType = "query")})
     @GetMapping("/tradeCompleteConfirm")
     public R<Boolean> tradeCompleteConfirm(@RequestParam int tradeId, @RequestParam int type, String evaluate) throws Exception {
         log.info("SecondTradeRecordController.tradeCompleteConfirm?tradeId={}, type={}, evaluate={}", tradeId, type, evaluate);
-        if (secondTradeRecordService.tradeCompleteConfirm(tradeId, type, evaluate)) return R.success("交易完成成功");
-        return R.fail("交易完成失败");
+        return R.data(secondTradeRecordService.tradeCompleteConfirm(tradeId, type, evaluate));
+    }
+
+    @ApiOperation("获取用户交易确认信息")
+    @ApiOperationSupport(order = 8)
+    @ApiImplicitParams({@ApiImplicitParam(name = "tradeId", value = "交易id", dataType = "Integer", paramType = "query", required = true)})
+    @GetMapping("/getUserTradeStatus")
+    public R<SecondTradeRecordVo> getUserTradeStatus(@RequestParam int tradeId) throws Exception {
+        log.info("SecondTradeRecordController.getUserTradeStatus?tradeId={}", tradeId);
+        return R.data(secondTradeRecordService.getUserTradeStatus(tradeId));
     }
 
     @ApiOperation("交易窗")
-    @ApiOperationSupport(order = 7)
+    @ApiOperationSupport(order = 9)
     @ApiImplicitParams({@ApiImplicitParam(name = "sideId", value = "对方的id", dataType = "Integer", paramType = "query", required = true)})
     @GetMapping("/getTradeRecord")
     public R<List<SecondTradeRecordVo>> getTradeRecord(@RequestParam int sideId) throws Exception {

+ 4 - 0
alien-second/src/main/java/shop/alien/second/service/SecondTradeRecordService.java

@@ -25,8 +25,12 @@ public interface SecondTradeRecordService extends IService<SecondTradeRecord> {
 
     boolean cancelTrade(int tradeId, String cancelReason, String cancelReasonSupplement) throws Exception;
 
+    boolean whetherCanSignIn(int tradeId) throws Exception;
+
     boolean tradeSignIn(int tradeId, int messageId, String signInLatitudeLongitude, String signInLatitudeLongitudeAddress) throws Exception;
 
+    SecondTradeRecordVo getUserTradeStatus(int tradeId) throws Exception;
+
     boolean tradeCompleteConfirm(int tradeId, int type, String evaluate) throws Exception;
 
     List<SecondTradeRecordVo> getTradeRecord(int sideId) throws Exception;

+ 40 - 1
alien-second/src/main/java/shop/alien/second/service/impl/SecondTradeRecordServiceImpl.java

@@ -225,6 +225,22 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
     }
 
     @Override
+    public boolean whetherCanSignIn(int tradeId) throws Exception {
+        try {
+            int userId = Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getInteger("userId");
+            SecondTradeRecord trade = secondTradeRecordMapper.selectById(tradeId);
+            if (null == trade) return false;
+
+            if (userId == trade.getBuyerId() && 0 == trade.getBuyerSignIn()) return true;
+            if (userId == trade.getSellerId() && 0 == trade.getSellerSignIn()) return true;
+        } catch (Exception e) {
+            log.error("SecondTradeRecordServiceImpl.whetherCanSignIn Error Mgs={}", e.getMessage());
+            throw new Exception(e);
+        }
+        return false;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean tradeSignIn(int tradeId, int messageId, String signInLatitudeLongitude, String signInLatitudeLongitudeAddress) throws Exception {
         try {
@@ -260,6 +276,7 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
 
             // 删除签到提醒
             LifeMessage signInMessage = lifeMessageMapper.selectById(messageId);
+            if (null == signInMessage) throw new Exception("该交易已签到,无需再次签到");
             lifeMessageMapper.deleteById(messageId);
 
             // 发送已签到消息
@@ -287,6 +304,26 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
     }
 
     @Override
+    public SecondTradeRecordVo getUserTradeStatus(int tradeId) throws Exception {
+        try {
+            SecondTradeRecordVo recordVo = new SecondTradeRecordVo();
+            int userId = Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getInteger("userId");
+            SecondTradeRecord tradeRecord = secondTradeRecordMapper.selectById(tradeId);
+            if (userId == tradeRecord.getBuyerId()) {
+                recordVo.setUserTransactionStatus(tradeRecord.getBuyerTransactionStatus());
+                recordVo.setUserEvaluate(tradeRecord.getBuyerEvaluate());
+            } else if (userId == tradeRecord.getSellerId()) {
+                recordVo.setUserTransactionStatus(tradeRecord.getSellerTransactionStatus());
+                recordVo.setUserEvaluate(tradeRecord.getSellerEvaluate());
+            }
+            return recordVo;
+        } catch (Exception e) {
+            log.error("SecondTradeRecordServiceImpl.getUserTradeStatus Error Mgs={}", e.getMessage());
+            throw new Exception(e);
+        }
+    }
+
+    @Override
     public boolean tradeCompleteConfirm(int tradeId, int type, String evaluate) throws Exception {
         try {
             int userId = Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getInteger("userId");
@@ -294,9 +331,11 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
             SecondTradeRecord record = new SecondTradeRecord();
             record.setId(tradeId);
             if (userId == tradeRecord.getBuyerId()) {
+                if (0 != tradeRecord.getBuyerTransactionStatus()) return false;
                 record.setBuyerTransactionStatus(type);
                 record.setBuyerEvaluate(evaluate);
             } else if (userId == tradeRecord.getSellerId()) {
+                if (0 != tradeRecord.getSellerTransactionStatus()) return false;
                 record.setSellerTransactionStatus(type);
                 record.setSellerEvaluate(evaluate);
                 record.setTradeStatus(type);
@@ -306,7 +345,7 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
             secondTradeRecordMapper.updateById(record);
             return true;
         } catch (Exception e) {
-            log.error("SecondTradeRecordServiceImpl.tradeCCompleteConfirm Error Mgs={}", e.getMessage());
+            log.error("SecondTradeRecordServiceImpl.tradeCompleteConfirm Error Mgs={}", e.getMessage());
             throw new Exception(e);
         }
     }

+ 3 - 26
alien-store/src/main/java/shop/alien/store/controller/LifeMessageController.java

@@ -1,19 +1,12 @@
 package shop.alien.store.controller;
 
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.alibaba.fastjson2.JSONObject;
 import io.swagger.annotations.*;
-import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.lang.Nullable;
-import org.springframework.messaging.handler.annotation.MessageMapping;
-import org.springframework.messaging.handler.annotation.SendTo;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
-import shop.alien.entity.store.LifeMessage;
 import shop.alien.entity.store.vo.LifeMessageVo;
-import shop.alien.mapper.LifeMessageMapper;
 import shop.alien.store.service.LifeMessageService;
 import shop.alien.store.task.ScheduledTask;
 
@@ -68,10 +61,10 @@ public class LifeMessageController {
     @ApiOperation("消息详情")
     @ApiOperationSupport(order = 4)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "当前登录人", value = "receiverId", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "receiverId", value = "当前登录人", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "senderId", value = "聊天对方", dataType = "String", paramType = "query")})
     @GetMapping("/getMessageListByReceiverId")
-    public R<List<LifeMessageVo>> getMessageListByReceiverId(@RequestParam String receiverId, @RequestParam String senderId) throws Exception {
+    public R<JSONObject> getMessageListByReceiverId(@RequestParam String receiverId, @RequestParam String senderId) throws Exception {
         log.info("LifeMessageController.getMessageListByReceiverId?receiverId={}, senderId={}", receiverId, senderId);
         return R.data(lifeMessageService.getMessageListByReceiverId(receiverId, senderId));
     }
@@ -116,20 +109,4 @@ public class LifeMessageController {
         log.info("LifeMessageController.noReadCount?receiverId={}", receiverId);
         return R.data(lifeMessageService.noReadCount(receiverId));
     }
-
-//    @MessageMapping("/send")
-//    @SendTo("/topic/messages")
-//    public LifeMessage sendMessage(LifeMessage message) {
-//        log.info("LifeMessageController.sendMessage?message={}", message.toString());
-//        messageMapper.insert(message);
-//        return message;
-//    }
-//
-//    @GetMapping("/messages")
-//    public List<LifeMessage> getMessages(@RequestParam String receiverId) {
-//        log.info("LifeMessageController.getMessages?receiverId={}", receiverId);
-//        LambdaUpdateWrapper<LifeMessage> wrapper = new LambdaUpdateWrapper<>();
-//        wrapper.eq(LifeMessage::getReceiverId, receiverId);
-//        return messageMapper.selectList(wrapper);
-//    }
 }

+ 2 - 1
alien-store/src/main/java/shop/alien/store/service/LifeMessageService.java

@@ -1,5 +1,6 @@
 package shop.alien.store.service;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.LifeMessage;
@@ -15,7 +16,7 @@ public interface LifeMessageService extends IService<LifeMessage> {
 
     LifeMessageVo getNoFriendMessageNum(String receiverId) throws Exception ;
 
-    List<LifeMessageVo> getMessageListByReceiverId(String senderId, String receiverId) throws Exception;
+    JSONObject getMessageListByReceiverId(String senderId, String receiverId) throws Exception;
 
     int read(String receiverId, String senderId) throws Exception;
 

+ 18 - 7
alien-store/src/main/java/shop/alien/store/service/impl/LifeMessageServiceImpl.java

@@ -1,5 +1,6 @@
 package shop.alien.store.service.impl;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -19,7 +20,6 @@ import shop.alien.store.service.LifeMessageService;
 import shop.alien.store.service.LifeUserService;
 import shop.alien.util.common.JwtUtil;
 
-import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
@@ -157,14 +157,13 @@ public class LifeMessageServiceImpl extends ServiceImpl<LifeMessageMapper, LifeM
                     // 免打扰
                     if (notDisturbList.contains(messageVo.getPhoneId())) {
                         messageVo.setIsNotDisturb("1");
-                        // 未读消息数量
-                        messageVo.setNotReadCount(0L);
                     } else {
                         messageVo.setIsNotDisturb("0");
-                        messageVo.setNotReadCount(noReadList.stream().filter(item -> item.getSenderId().equals(messageVo.getPhoneId())).count());
-                        // 未读消息数量
                     }
 
+                    // 未读消息数量
+                    messageVo.setNotReadCount(noReadList.stream().filter(item -> item.getSenderId().equals(messageVo.getPhoneId())).count());
+
                     // 我是否关注对方
                     if (followIds.contains(messageVo.getPhoneId())) {
                         messageVo.setIsFollowThis("1");
@@ -299,7 +298,7 @@ public class LifeMessageServiceImpl extends ServiceImpl<LifeMessageMapper, LifeM
     }
 
     @Override
-    public List<LifeMessageVo> getMessageListByReceiverId(String receiverId, String senderId) throws Exception {
+    public JSONObject getMessageListByReceiverId(String receiverId, String senderId) throws Exception {
         try {
             // 获取发送方与接收方头像
             LifeUser lifeUser1 = null;
@@ -353,7 +352,19 @@ public class LifeMessageServiceImpl extends ServiceImpl<LifeMessageMapper, LifeM
                     }
                 }
             }
-            return lifeMessageVos;
+
+            // 查询两个人是否是陌生人(只有一条消息)
+            QueryWrapper<LifeMessage> wrapper = new QueryWrapper<>();
+            // 没聊过
+            wrapper.apply("((sender_id = '" + senderId + "' and receiver_id = '" + receiverId + "') or (sender_id = '" + receiverId + "' and receiver_id = '" + senderId + "'))");
+            wrapper.orderByDesc("created_time");
+            int count = lifeMessageMapper.selectCount(wrapper);
+
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("messageList", lifeMessageVos);
+            jsonObject.put("isStranger", count <= 1);
+
+            return jsonObject;
         } catch (Exception e) {
             log.error("LifeMessageServiceImpl.getMessageListByReceiverId Error Mgs={}", e.getMessage());
             throw new Exception(e);

+ 1 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeNoticeServiceImpl.java

@@ -37,6 +37,7 @@ public class LifeNoticeServiceImpl extends ServiceImpl<LifeNoticeMapper, LifeNot
         queryWrapper.eq(LifeNotice::getReceiverId, receiverId);
         queryWrapper.eq(LifeNotice::getNoticeType, noticeType);
         queryWrapper.eq(LifeNotice::getDeleteFlag, 0);
+        queryWrapper.orderByDesc(LifeNotice::getCreatedTime);
         List<LifeNotice> lifeNoticeList = lifeNoticeMapper.selectList(queryWrapper);
 //        IPage<LifeNotice> lifeNoticeList = lifeNoticeMapper.selectPage(ipage, queryWrapper);