Explorar o código

广场动态会根据用户的性别个性化推送

caojp hai 1 mes
pai
achega
87ec768c00

+ 3 - 1
service/dynamic/src/main/java/com/zhentao/mapper/UserDynamicsMapper.java

@@ -21,13 +21,15 @@ public interface UserDynamicsMapper extends BaseMapper<UserDynamics> {
      * @param userId 当前登录用户ID(用于判断点赞收藏状态)
      * @param auditStatus 审核状态
      * @param visibility 可见性
+     * @param targetGender 目标性别(1-男 2-女,null表示不限制)
      * @return 动态列表
      */
     IPage<UserDynamics> selectDynamicsWithUserInfo(
             @Param("page") Page<UserDynamics> page,
             @Param("userId") Integer userId,
             @Param("auditStatus") Integer auditStatus,
-            @Param("visibility") Integer visibility
+            @Param("visibility") Integer visibility,
+            @Param("targetGender") Integer targetGender
     );
 
     /**

+ 28 - 1
service/dynamic/src/main/java/com/zhentao/service/impl/UserDynamicsServiceImpl.java

@@ -52,17 +52,44 @@ public class UserDynamicsServiceImpl implements UserDynamicsService {
     @Autowired
     private com.zhentao.mapper.DynamicReportsMapper reportMapper;
 
+    @Autowired
+    private com.zhentao.mapper.UsersMapper usersMapper;
+
     @Override
     public PageResult<DynamicVO> getDynamicList(DynamicQueryDTO queryDTO) {
         // 创建分页对象
         Page<UserDynamics> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
         
+        // 根据当前用户性别确定目标性别(推送相反性别的动态)
+        Integer targetGender = null; // null表示不限制性别
+        if (queryDTO.getCurrentUserId() != null) {
+            try {
+                com.zhentao.entity.Users currentUser = usersMapper.selectById(queryDTO.getCurrentUserId());
+                if (currentUser != null && currentUser.getGender() != null) {
+                    Integer currentGender = currentUser.getGender();
+                    // 0-未知 1-男 2-女
+                    if (currentGender == 1) {
+                        // 男性用户,推送女性动态
+                        targetGender = 2;
+                    } else if (currentGender == 2) {
+                        // 女性用户,推送男性动态
+                        targetGender = 1;
+                    }
+                    // 如果性别是0(未知),targetGender保持为null,显示所有动态
+                }
+            } catch (Exception e) {
+                // 如果查询用户信息失败,不限制性别,显示所有动态
+                // 忽略异常,继续执行
+            }
+        }
+        
         // 查询数据
         IPage<UserDynamics> dynamicsPage = userDynamicsMapper.selectDynamicsWithUserInfo(
                 page,
                 queryDTO.getCurrentUserId(),
                 queryDTO.getAuditStatus() != null ? queryDTO.getAuditStatus() : 1, // 默认查询审核通过的
-                queryDTO.getVisibility() != null ? queryDTO.getVisibility() : 1 // 默认查询公开的
+                queryDTO.getVisibility() != null ? queryDTO.getVisibility() : 1, // 默认查询公开的
+                targetGender // 目标性别(相反性别)
         );
 
         // 转换为VO

+ 3 - 0
service/dynamic/src/main/resources/mapper/UserDynamicsMapper.xml

@@ -71,6 +71,9 @@
         <if test="visibility != null">
             AND d.visibility = #{visibility}
         </if>
+        <if test="targetGender != null">
+            AND u.gender = #{targetGender}
+        </if>
         ORDER BY d.created_at DESC
     </select>
 

+ 0 - 38
service/randomMatch/src/test/java/com/zhentao/AppTest.java

@@ -1,38 +0,0 @@
-package com.zhentao;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Unit test for simple App.
- */
-public class AppTest 
-    extends TestCase
-{
-    /**
-     * Create the test case
-     *
-     * @param testName name of the test case
-     */
-    public AppTest( String testName )
-    {
-        super( testName );
-    }
-
-    /**
-     * @return the suite of tests being tested
-     */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
-    }
-
-    /**
-     * Rigourous Test :-)
-     */
-    public void testApp()
-    {
-        assertTrue( true );
-    }
-}