Procházet zdrojové kódy

feat(recommend): 优化用户浏览记录功能

- 添加获取真实浏览记录数量的API调用
- 在用户详情页添加保存浏览记录功能
- 优化数据库查询去重浏览记录
- 修复跳转用户详情页路径错误
- 调整浏览历史页面样式和布局
- 移除重复的浏览状态图标显示
李思佳 před 3 dny
rodič
revize
c7ce2f708d

+ 19 - 0
LiangZhiYUMao/pages/mine/index.vue

@@ -1311,6 +1311,25 @@ export default {
       }
     },
     
+    // 获取我浏览的用户真实数量
+    async getBrowseHistoryCount() {
+      try {
+        const userId = this.currentUserId
+        if (userId) {
+          // 调用后端API获取真实的浏览记录数量
+          const result = await api.recommend.getBrowseHistoryCount(userId)
+          // 确保获取的是数字值
+          const count = typeof result === 'number' ? result : (result.data || 0)
+          // 更新统计数据
+          this.stats.iViewed = count || 0
+        }
+      } catch (error) {
+        console.error('获取浏览记录数量失败:', error)
+        // 如果获取失败,使用默认值
+        this.stats.iViewed = 0
+      }
+    },
+    
     goToLikedMe() {
       // 跳转到喜欢我的页面
       uni.navigateTo({

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

@@ -34,9 +34,6 @@
             <text class="time-text">{{ formatTime(item.viewTime) }}</text>
           </view>
         </view>
-        <view class="browse-status">
-          <text class="browse-icon">👁️</text>
-        </view>
       </view>
     </scroll-view>
   </view>
@@ -167,7 +164,7 @@ export default {
     // 跳转到用户详情页
     goUserDetail(userId) {
       uni.navigateTo({
-        url: `/pages/recommend/index?userId=${userId}`,
+        url: `/pages/recommend/user-detail?userId=${userId}`,
         fail: (err) => {
           console.error('跳转用户详情失败:', err)
           uni.showToast({
@@ -251,7 +248,9 @@ export default {
 
 .history-list {
   padding: 20rpx;
-  height: calc(100vh - 88rpx);
+  height: 100vh;
+  box-sizing: border-box;
+  overflow-x: hidden;
 }
 
 .history-item {
@@ -321,12 +320,5 @@ export default {
       }
     }
   }
-  
-  .browse-status {
-    .browse-icon {
-      font-size: 40rpx;
-      color: #E91E63;
-    }
-  }
 }
 </style>

+ 14 - 0
LiangZhiYUMao/pages/recommend/user-detail.vue

@@ -391,6 +391,20 @@ export default {
 		// 返回
 		goBack() {
 			uni.navigateBack()
+		},
+		
+		// 保存浏览记录
+		async saveBrowseHistory() {
+			try {
+				const currentUserId = uni.getStorageSync('userId') || uni.getStorageSync('userInfo')?.userId
+				if (currentUserId && this.userId) {
+					// 调用 API 保存浏览记录
+					await api.recommend.saveUserLook(currentUserId, this.userId)
+				}
+			} catch (error) {
+				console.error('保存浏览记录失败:', error)
+				// 保存失败不影响页面正常显示,仅记录日志
+			}
 		}
 	}
 }

+ 9 - 5
service/Recommend/src/main/resources/mapper/RecommendMapper.xml

@@ -678,7 +678,7 @@
     <!-- 查询用户浏览的列表 -->
     <select id="selectLookedUsers" resultMap="RecommendUserMap">
         <![CDATA[
-        SELECT DISTINCT
+        SELECT 
             ul.create_time,
           u.user_id,
           u.nickname,
@@ -703,14 +703,18 @@
           u.avatar_url,
           u.last_active_at,
           80.0 AS compatibility_score
-        FROM user_look ul
+        FROM (
+            SELECT DISTINCT look_user_id, MAX(create_time) AS create_time
+            FROM user_look 
+            WHERE user_id = #{userId}
+            GROUP BY look_user_id
+        ) ul
         JOIN users u ON u.user_id = ul.look_user_id
         LEFT JOIN user_profile p ON p.user_id = u.user_id
         LEFT JOIN province pr ON pr.id = p.province_id
         LEFT JOIN city ct ON ct.id = p.city_id
         LEFT JOIN area ar ON ar.id = p.area_id
-        WHERE ul.user_id = #{userId}
-          AND u.status = 1
+        WHERE u.status = 1
         ORDER BY ul.create_time DESC
         LIMIT #{offset}, #{limit}
         ]]>
@@ -719,7 +723,7 @@
     <!-- 统计用户浏览的用户数量 -->
     <select id="countLookedUsers" resultType="java.lang.Integer">
         <![CDATA[
-        SELECT COUNT(*) 
+        SELECT COUNT(DISTINCT ul.look_user_id) 
         FROM user_look ul
         JOIN users u ON u.user_id = ul.look_user_id
         WHERE ul.user_id = #{userId}