Explorar el Código

feat(recommend): 优化用户浏览记录存储逻辑并改进访问时间显示格式

- 修改数据库操作方式,先尝试更新现有记录再插入新记录,避免重复数据
- 重构时间计算逻辑,区分今天、昨天和具体日期的显示格式
- 添加详细的日期比较和格式化功能
- 移除原有的ON DUPLICATE KEY UPDATE语法,改用ROW_COUNT判断插入条件
- 实现更精确的时间差计算和人性化显示效果
李思佳 hace 3 días
padre
commit
ee1e791310

+ 24 - 12
LiangZhiYUMao/pages/mine/visited-by-me.vue

@@ -144,20 +144,32 @@ export default {
       
       const now = new Date()
       const viewTime = new Date(time)
-      const diff = now - viewTime
       
-      const minutes = Math.floor(diff / (1000 * 60))
-      const hours = Math.floor(diff / (1000 * 60 * 60))
-      const days = Math.floor(diff / (1000 * 60 * 60 * 24))
+      // 获取当前日期和时间部分
+      const nowYear = now.getFullYear()
+      const nowMonth = now.getMonth()
+      const nowDate = now.getDate()
       
-      if (minutes < 60) {
-        return `${minutes}分钟前`
-      } else if (hours < 24) {
-        return `${hours}小时前`
-      } else if (days < 30) {
-        return `${days}天前`
-      } else {
-        return viewTime.toLocaleDateString()
+      // 获取浏览日期和时间部分
+      const viewYear = viewTime.getFullYear()
+      const viewMonth = viewTime.getMonth()
+      const viewDate = viewTime.getDate()
+      
+      // 计算日期差
+      const diffTime = now - viewTime
+      const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24))
+      
+      // 检查是否是今天
+      if (nowYear === viewYear && nowMonth === viewMonth && nowDate === viewDate) {
+        return '今天'
+      }
+      // 检查是否是昨天
+      else if (nowYear === viewYear && nowMonth === viewMonth && nowDate - 1 === viewDate) {
+        return '昨天'
+      }
+      // 否则显示具体日期
+      else {
+        return `${viewYear}-${String(viewMonth + 1).padStart(2, '0')}-${String(viewDate).padStart(2, '0')}`
       }
     },
     

+ 8 - 2
service/Recommend/src/main/resources/mapper/RecommendMapper.xml

@@ -669,9 +669,15 @@
     <!-- 插入用户浏览记录 -->
     <insert id="insertUserLook">
         <![CDATA[
+        -- 先尝试更新,如果存在记录则更新时间
+        UPDATE user_look 
+        SET update_time = NOW() 
+        WHERE user_id = #{userId} AND look_user_id = #{lookUserId};
+        
+        -- 如果没有更新任何记录,则插入新记录
         INSERT INTO user_look (user_id, look_user_id, create_time, update_time)
-        VALUES (#{userId}, #{lookUserId}, NOW(), NOW())
-        ON DUPLICATE KEY UPDATE update_time = NOW()
+        SELECT #{userId}, #{lookUserId}, NOW(), NOW()
+        WHERE ROW_COUNT() = 0;
         ]]>
     </insert>