Forráskód Böngészése

消息、通知、交易

qrs 4 hónapja
szülő
commit
b4b77f726c

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

@@ -32,6 +32,10 @@ public class SecondTradeRecord extends Model<SecondTradeRecord> {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    @ApiModelProperty(value = "交易编号")
+    @TableField("trade_no")
+    private String tradeNo;
+
     @ApiModelProperty(value = "商品id")
     @TableField("goods_id")
     private Integer goodsId;

+ 7 - 19
alien-entity/src/main/java/shop/alien/mapper/LifeMessageMapper.java

@@ -54,29 +54,17 @@ public interface LifeMessageMapper extends BaseMapper<LifeMessage> {
     List<LifeMessageVo> getLifeMessagePageByPhoneId(@Param("phoneId") String phoneId, @Param(Constants.WRAPPER) QueryWrapper<LifeFansVo> dynamicsWrapper);
 
     @Update("update life_message set delete_phone_id = (if(delete_phone_id is null, #{receiverId}, concat(delete_phone_id, ',', #{receiverId}))) " +
-            "where (receiver_id = #{senderId} and sender_id = #{receiverId}) or (sender_id = #{senderId} and receiver_id = #{receiverId}) ")
+            "where ((receiver_id = #{senderId} and sender_id = #{receiverId}) or (sender_id = #{senderId} and receiver_id = #{receiverId})) " +
+            "   and (instr(delete_phone_id, #{receiverId}) is null or instr(delete_phone_id, #{receiverId}) = 0)")
     int deleteMessageByPhoneId(@Param("senderId") String senderId, @Param("receiverId") String receiverId);
 
-    //    @Select("select lm.id,lm.updated_time,lm.created_user_id,lm.receiver_name,lm.is_read,lm.type,lm.content," +
-//            "lm.current_time,lm.delete_flag,lm.sender_id,lm.sender_name,lm.receiver_id,lm.delete_phone_id," +
-//            "lm.created_time,lm.updated_user_id,lu.user_image,img.img_url storeImg" +
-//            "    from life_message lm" +
-//            "    left join life_user lu " +
-//            "    on SUBSTRING(lm.sender_id, INSTR(lm.sender_id, '_') + 1) = lu.user_phone" +
-//            "        left join store_user su on SUBSTRING(lm.sender_id, INSTR(lm.sender_id, '_') + 1) = su.phone " +
-//            "        left join store_info s on su.store_id = s.id" +
-//            "        left join store_img img on img.store_id = s.id and img.img_type = '10' and img.delete_flag = 0 "+
-//            "    where lm.delete_flag = 0 and su.delete_flag = 0 and s.delete_flag = 0" +
-//            "    and ( ((lm.receiver_id = #{senderId} and lm.sender_id = #{receiverId})" +
-//            "    or (lm.sender_id = #{senderId} and lm.receiver_id = #{receiverId})) )" +
-//            "    order by lm.created_time asc")
-    @Select("select lm.id,lm.updated_time,lm.created_user_id,lm.receiver_name,lm.is_read,lm.type,lm.content,lm.current_time,lm.delete_flag,lm.sender_id,lm.sender_name,lm.receiver_id,lm.delete_phone_id,lm.created_time,lm.updated_user_id,lu.user_image " +
+    @Select("select lm.id,lm.updated_time,lm.created_user_id,lm.receiver_name,lm.is_read,lm.type,lm.content,lm.current_time,lm.delete_flag," +
+            "       lm.sender_id,lm.sender_name,lm.receiver_id,lm.delete_phone_id,lm.created_time,lm.updated_user_id,lu.user_image " +
             "from life_message lm " +
-            "left join life_user lu " +
-            "on SUBSTRING(lm.sender_id, INSTR(lm.sender_id, '_') + 1) = lu.user_phone " +
+            "left join life_user lu on SUBSTRING(lm.sender_id, INSTR(lm.sender_id, '_') + 1) = lu.user_phone " +
             "where lm.delete_flag = 0 " +
-            "and ( ((lm.receiver_id = #{senderId} and lm.sender_id = #{receiverId}) or (lm.sender_id = #{senderId} and lm.receiver_id = #{receiverId})) ) " +
-            "and (instr(delete_phone_id, #{receiverId}) is null or instr(delete_phone_id, #{receiverId}) = 0) " +
+            "   and (((lm.receiver_id = #{senderId} and lm.sender_id = #{receiverId}) or (lm.sender_id = #{senderId} and lm.receiver_id = #{receiverId}))) " +
+            "   and (instr(delete_phone_id, #{receiverId}) is null or instr(delete_phone_id, #{receiverId}) = 0) " +
             "order by lm.created_time asc ")
     List<LifeMessageVo> getMessageListByReceiverId(@Param("receiverId") String receiverId, @Param("senderId") String senderId);
 

+ 11 - 0
alien-second/src/main/java/shop/alien/second/service/impl/SecondTradeRecordServiceImpl.java

@@ -25,6 +25,7 @@ import shop.alien.second.feign.AlienStoreFeign;
 import shop.alien.second.service.SecondTradeRecordService;
 import shop.alien.util.common.JwtUtil;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.Date;
@@ -51,10 +52,20 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
     private final AlienStoreFeign alienStoreFeign;
     private final StoreDictionaryMapper storeDictionaryMapper;
 
+    private final Object lock = new Object();
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean createTrade(SecondTradeRecord trade) throws Exception {
         try {
+            synchronized (lock) {
+                LocalDate now = LocalDate.now();
+                LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
+                wrapper.between(SecondTradeRecord::getCreatedTime, now + " 00:00:00", now + " 23:59:59");
+                int count = secondTradeRecordMapper.selectCount(wrapper);
+                String tradeNo = "S" + now.toString().replace("-", "") + String.format("%05d", count);
+                trade.setTradeNo(tradeNo);
+            }
             // 保存交易记录
             secondTradeRecordMapper.insert(trade);
 

+ 8 - 12
alien-store/src/main/java/shop/alien/store/config/WebSocketProcess.java

@@ -4,9 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.common.collect.Lists;
-import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Component;
@@ -21,7 +19,6 @@ import shop.alien.util.common.safe.TextModerationResultVO;
 import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
 
-import javax.annotation.Resource;
 import javax.websocket.*;
 import javax.websocket.server.PathParam;
 import javax.websocket.server.ServerEndpoint;
@@ -128,6 +125,9 @@ public class WebSocketProcess implements ApplicationContextAware {
                 return;
             }
 
+            log.info("websocketVo----------------{}",JSONObject.from(websocketVo).toJSONString());
+            log.info("concurrentHashMap----------{}",concurrentHashMap.keySet());
+
             // 保存消息记录
             LifeMessage lifeMessage = new LifeMessage();
             lifeMessage.setSenderId(websocketVo.getSenderId());
@@ -157,7 +157,7 @@ public class WebSocketProcess implements ApplicationContextAware {
             sendMessage(websocketVo.getSenderId(), JSONObject.from(websocketVo).toJSONString());
             sendMessage(websocketVo.getReceiverId(), JSONObject.from(websocketVo).toJSONString());
         } catch (Exception e) {
-            log.error("WebSocketProcess.onMessage() Error Mgs={}", e.getMessage());
+            log.error("WebSocketProcess.onMessage()----error----Msg={}", e.getMessage());
         }
     }
 
@@ -184,23 +184,19 @@ public class WebSocketProcess implements ApplicationContextAware {
      * 发送消息到指定客户端
      */
     public void sendMessage(String id, String message) throws Exception {
-        log.info("-------------sendMessage----------------");
-        log.info("-------------sendMessage {}  {}----------------", id, message);
+        log.info("WebSocketProcess.sendMessage()--ready----id={},message={}", id, message);
         //根据id,从map中获取存储的webSocket对象
         WebSocketProcess webSocketProcess = concurrentHashMap.get(id);
-        log.info("-------------webSocketProcess----------------");
-        System.out.println(concurrentHashMap);
-        log.info("-------------concurrentHashMap----------------");
-        System.out.println(webSocketProcess);
         if (!ObjectUtils.isEmpty(webSocketProcess)) {
             //当客户端是Open状态时,才能发送消息
             if (webSocketProcess.session.isOpen()) {
                 webSocketProcess.session.getBasicRemote().sendText(message);
+                log.info("WebSocketProcess.sendMessage()---success---id={},message={}", id, message);
             } else {
-                log.error("WebSocketProcess.sendMessage() websocket session={} is closed ", id);
+                log.error("WebSocketProcess.sendMessage()---error----websocket session:{} is closed ", id);
             }
         } else {
-            log.error("WebSocketProcess.sendMessage() websocket session={} is not exit ", id);
+            log.error("WebSocketProcess.sendMessage()---error----websocket session:{} is not exit ", id);
         }
     }
 

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

@@ -100,6 +100,7 @@ public class LifeMessageServiceImpl extends ServiceImpl<LifeMessageMapper, LifeM
                 messageWrapper.eq(LifeMessage::getReceiverId, receiverId);
                 messageWrapper.eq(LifeMessage::getIsRead, 0);
                 messageWrapper.eq(LifeMessage::getDeleteFlag, 0);
+                messageWrapper.apply("(instr(delete_phone_id, '" + receiverId + "') is null or instr(delete_phone_id, '" + receiverId + "') = 0)");
                 List<LifeMessage> noReadList = lifeMessageMapper.selectList(messageWrapper);
 
                 // 查询免打扰用户