From 7d9505bf21b3178b38bdf628f50e39712d30980f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E4=BD=B3=E8=B1=AA?= <18505142974@163.com> Date: Wed, 13 Aug 2025 17:29:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 10 +-- .../admin/VlogUploadController.java | 62 ++++++++++--------- .../wzj/soopin/content/domain/po/Comment.java | 2 +- .../soopin/content/domain/po/MyLikedVlog.java | 2 +- .../soopin/content/domain/po/UserMember.java | 2 +- .../wzj/soopin/content/domain/po/Users.java | 2 +- .../wzj/soopin/content/domain/po/Vlog.java | 2 +- .../soopin/content/mapper/CommentMapper.java | 4 +- .../content/mapper/MyLikedVlogMapper.java | 4 +- .../wzj/soopin/content/mapper/VlogMapper.java | 8 +-- .../content/service/impl/VlogServiceImpl.java | 45 +++++++------- .../mapper/content/CommentMapper.xml | 8 +-- .../mapper/content/CommentMapperCustom.xml | 8 +-- .../mapper/content/FansMapperCustom.xml | 8 +-- .../mapper/content/MessageRepository.xml | 4 +- .../mapper/content/UserMemberMapper.xml | 2 +- .../resources/mapper/content/VlogMapper.xml | 30 ++++----- .../mapper/content/VlogMapperCustom.xml | 26 ++++---- .../controller/AccountDetailController.java | 10 ++- .../MemberAccountChangeRecordMapper.xml | 13 +++- 20 files changed, 137 insertions(+), 115 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 961a60190..a9a34119c 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -125,11 +125,11 @@ tenant: # 排除表 excludes: - sys_menu - - t_users - - t_vlog - - t_comment - - t_my_liked_vlog - - t_fans + - cont_users + - cont_vlog + - cont_comment + - cont_my_liked_vlog + - ums_fans - sys_tenant - sys_tenant_package - aws_system_statistics diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java index b4b807839..4f2e4a6c8 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java @@ -114,47 +114,53 @@ public class VlogUploadController extends BaseInfoProperties { log.info("腾讯云 SearchMedia API 调用成功,总记录数: {}", resp.getTotalCount()); // 处理响应结果 - Map result = new HashMap<>(); - result.put("total", resp.getTotalCount()); - result.put("current", vlogBO.getCurrent()); - result.put("size", vlogBO.getSize()); - result.put("pages", (resp.getTotalCount() + vlogBO.getSize() - 1) / vlogBO.getSize()); // 总页数 - List> mediaList = new ArrayList<>(); if (resp.getMediaInfoSet() != null) { for (MediaInfo mediaInfo : resp.getMediaInfoSet()) { Map mediaMap = new HashMap<>(); - // 基础信息 MediaBasicInfo basicInfo = mediaInfo.getBasicInfo(); - mediaMap.put("fileId", mediaInfo.getFileId()); - mediaMap.put("name", basicInfo.getName()); - mediaMap.put("description", basicInfo.getDescription()); - mediaMap.put("createTime", basicInfo.getCreateTime()); - mediaMap.put("updateTime", basicInfo.getUpdateTime()); - mediaMap.put("coverUrl", basicInfo.getCoverUrl()); - mediaMap.put("type", basicInfo.getType()); - mediaMap.put("mediaUrl", basicInfo.getMediaUrl()); + + // 1. 映射字段(与表结构一致) + String fileId = mediaInfo.getFileId(); + mediaMap.put("vloger_id", vlogBO.getVlogerId()); + mediaMap.put("url", basicInfo.getMediaUrl()); + mediaMap.put("cover", basicInfo.getCoverUrl()); + mediaMap.put("title", basicInfo.getName()); + mediaMap.put("create_time", basicInfo.getCreateTime()); + mediaMap.put("update_time", basicInfo.getUpdateTime()); mediaMap.put("status", basicInfo.getStatus()); - mediaMap.put("category", basicInfo.getCategory()); - mediaMap.put("title",vlogBO.getTitle()); - mediaMap.put("firstFrameImg",vlogBO.getFirstFrameImg()); - mediaMap.put("vlogerId",vlogBO.getVlogerId()); + mediaMap.put("file_id", fileId); + mediaMap.put("first_frame_img", vlogBO.getFirstFrameImg()); - // 获取视频统计信息 - Map statistics = vlogService.getVlogStatistics(mediaInfo.getFileId()); - mediaMap.putAll(statistics); - // 获取视频上传者信息 - Map uploaderInfo = vlogService.getVlogUploaderInfo(mediaInfo.getFileId()); - if (uploaderInfo != null) { - mediaMap.put("nickname", uploaderInfo.get("name")); - mediaMap.put("mobile", uploaderInfo.get("phone")); + // 2. 点赞数和评论数从Redis获取 + String likeCountsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + fileId); + Integer likeCounts = 0; + if (StringUtils.isNotBlank(likeCountsStr)) { + try { + likeCounts = Integer.valueOf(likeCountsStr); + } catch (NumberFormatException e) { + log.warn("Redis中视频{}的点赞数格式错误: {}", fileId, likeCountsStr); + likeCounts = 0; + } } + mediaMap.put("like_counts", likeCounts); + + String commentCountsStr = redis.get(REDIS_VLOG_COMMENT_COUNTS + ":" + fileId); + Integer commentCounts = 0; + if (StringUtils.isNotBlank(commentCountsStr)) { + try { + commentCounts = Integer.valueOf(commentCountsStr); + } catch (NumberFormatException e) { + log.warn("Redis中视频{}的评论数格式错误: {}", fileId, commentCountsStr); + commentCounts = 0; + } + } + mediaMap.put("comments_counts", commentCounts); mediaList.add(mediaMap); } } - result.put("records", mediaList); // 构建Page对象 Page> page = new Page<>(); diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Comment.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Comment.java index 58bd15a3f..b37e2eea8 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Comment.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Comment.java @@ -8,7 +8,7 @@ import lombok.Data; import java.time.LocalDateTime; @Data -@TableName("t_comment") +@TableName("cont_comment") public class Comment { @TableId(type = IdType.ASSIGN_ID) diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/MyLikedVlog.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/MyLikedVlog.java index add52cfa3..b2265380c 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/MyLikedVlog.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/MyLikedVlog.java @@ -10,7 +10,7 @@ import org.dromara.common.tenant.core.TenantEntity; import java.util.Date; -@TableName("t_my_liked_vlog") +@TableName("cont_my_liked_vlog") @Data @EqualsAndHashCode(callSuper = true) public class MyLikedVlog extends BaseAudit { diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/UserMember.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/UserMember.java index af76b7746..eb8187bad 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/UserMember.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/UserMember.java @@ -10,7 +10,7 @@ import org.dromara.common.tenant.core.TenantEntity; @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -@TableName( "r_user_member") +@TableName( "cont_user_member") public class UserMember extends BaseAudit { private String userId; private String memberId; diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Users.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Users.java index 9908a3d99..94a468392 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Users.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Users.java @@ -11,7 +11,7 @@ import org.dromara.common.tenant.core.TenantEntity; import java.util.Date; -@TableName("t_users") +@TableName("cont_users") @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Vlog.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Vlog.java index 1dd566653..c2a94186b 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Vlog.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Vlog.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.core.domain.model.BaseAudit; -@TableName(value = "t_vlog", autoResultMap = true) +@TableName(value = "cont_vlog", autoResultMap = true) @Data @EqualsAndHashCode(callSuper = true) diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/CommentMapper.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/CommentMapper.java index 6bff0cf75..0949bafd2 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/CommentMapper.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/CommentMapper.java @@ -39,8 +39,8 @@ public interface CommentMapper extends BaseMapper { * 根据视频ID查询评论列表 */ @Select("SELECT c.*, u.nickname as userNickname, u.face as userFace " + - "FROM t_comment c " + - "LEFT JOIN t_users u ON c.comment_user_id = u.id " + + "FROM cont_comment c " + + "LEFT JOIN cont_users u ON c.comment_user_id = u.id " + "WHERE c.vlog_id = #{vlogId} " + "ORDER BY c.create_time DESC") List> selectCommentsByVlogId(@Param("vlogId") String vlogId); diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/MyLikedVlogMapper.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/MyLikedVlogMapper.java index 814f19b6f..6f2f2f77d 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/MyLikedVlogMapper.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/MyLikedVlogMapper.java @@ -15,9 +15,9 @@ public interface MyLikedVlogMapper extends BaseMapperPlus> selectLikedUsersByVlogId(@Param("vlogId") String vlogId); } diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/VlogMapper.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/VlogMapper.java index a037f7e31..a7c305563 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/VlogMapper.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/VlogMapper.java @@ -96,7 +96,7 @@ public interface VlogMapper extends BaseMapper { */ IPage> selectVlogListWithAggregatedData(Page> page, @Param("vlogBO") VlogBO vlogBO); - @Select("SELECT COUNT(*) FROM t_vlog where status = 0") + @Select("SELECT COUNT(*) FROM cont_vlog where status = 0") Object countVlog(); @@ -104,7 +104,7 @@ public interface VlogMapper extends BaseMapper { " DATE_FORMAT(create_time, '%Y-%m') AS month, " + " COUNT(*) AS vlog_count " + "FROM " + - " t_vlog " + + " cont_vlog " + "WHERE " + " status = 1 " + "GROUP BY " + @@ -135,7 +135,7 @@ public interface VlogMapper extends BaseMapper { " v.reason, " + "city_code,"+ " v.first_frame_img " + - "FROM t_vlog v " + + "FROM cont_vlog v " + "WHERE v.status = 1 AND v.is_private = 0 " + "ORDER BY v.create_time DESC") List> selectAllPublicVlogs(); @@ -163,7 +163,7 @@ public interface VlogMapper extends BaseMapper { " v.reason, " + " v.city_code, " + " v.first_frame_img " + - "FROM t_vlog v " + + "FROM cont_vlog v " + "WHERE v.status = 1 AND v.is_private = 0 " + "ORDER BY RAND() " + "LIMIT #{limit}") diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java index 0b6f62342..7a167147d 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java @@ -492,22 +492,8 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService { result.put("height",vlog.getHeight()); result.put("reason",vlog.getReason()); - // 点赞数通过点赞表统计 - int likeCounts = myLikedVlogMapper.countLikesByVlogId(vlog.getId()); - result.put("likeCounts", likeCounts); - - // 评论数:优先 Redis,无则 MySQL - String commentCountStr = redis.get(REDIS_VLOG_COMMENT_COUNTS + ":" + vlog.getId()); - Integer commentCount = 0; - if (StringUtils.isNotBlank(commentCountStr)) { - commentCount = Integer.valueOf(commentCountStr); - } else { - commentCount = commentMapper.countByVlogId(vlog.getId()); - if (commentCount != null) { - redis.set(REDIS_VLOG_COMMENT_COUNTS + ":" + vlog.getId(), String.valueOf(commentCount)); - } - } - result.put("commentCounts", commentCount); + // 注意:点赞数和评论数现在在控制器中直接从Redis获取 + // 这里不再统计,避免重复计算 // 获取粉丝数量:优先 Redis,无则 MySQL String fansCountsStr = redis.get(REDIS_MY_FANS_COUNTS + ":" + vlog.getVlogerId()); @@ -523,8 +509,6 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService { result.put("fansCounts", fansCounts); } else { result.put("vlogId", null); - result.put("likeCounts", 0); - result.put("commentCounts", 0); result.put("reason", null); result.put("fansCounts", 0); } @@ -551,8 +535,17 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService { List> comments = commentMapper.selectCommentsByVlogId(vlog.getId()); result.put("comments", comments); - // 添加点赞数和点赞用户信息 - int likeCounts = myLikedVlogMapper.countLikesByVlogId(vlog.getId()); + // 从Redis获取点赞数 + String likeCountsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + vlog.getId()); + Integer likeCounts = 0; + if (StringUtils.isNotBlank(likeCountsStr)) { + try { + likeCounts = Integer.valueOf(likeCountsStr); + } catch (NumberFormatException e) { + log.warn("Redis中视频{}的点赞数格式错误: {}", vlog.getId(), likeCountsStr); + likeCounts = 0; + } + } result.put("likeCounts", likeCounts); result.put("vlogId", vlog.getId()); @@ -593,7 +586,17 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService { @Override public int getLikeCounts(String vlogId) { - return myLikedVlogMapper.countLikesByVlogId(vlogId); + // 从Redis获取点赞数 + String likeCountsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + vlogId); + if (StringUtils.isNotBlank(likeCountsStr)) { + try { + return Integer.valueOf(likeCountsStr); + } catch (NumberFormatException e) { + log.warn("Redis中视频{}的点赞数格式错误: {}", vlogId, likeCountsStr); + return 0; + } + } + return 0; } @Override diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapper.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapper.xml index 9412d3dda..f57ebc757 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapper.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapper.xml @@ -17,27 +17,27 @@ diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapperCustom.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapperCustom.xml index c6b9df277..54bce60c2 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapperCustom.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/CommentMapperCustom.xml @@ -22,8 +22,8 @@ c.content, c.like_counts as likeCounts, c.create_time as createTime - FROM t_comment c - LEFT JOIN t_users u ON c.comment_user_id = u.id + FROM cont_comment c + LEFT JOIN cont_users u ON c.comment_user_id = u.id AND c.vlog_id = #{paramMap.vlogId} @@ -52,8 +52,8 @@ c.content, c.like_counts as likeCounts, c.create_time as createTime - FROM t_comment c - LEFT JOIN t_users u ON c.comment_user_id = u.id + FROM cont_comment c + LEFT JOIN cont_users u ON c.comment_user_id = u.id c.father_comment_id = '0' diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml index 0a2e4ddc8..6b2bbb8d9 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml @@ -11,9 +11,9 @@ f.is_fan_friend_of_mine as bothFriend, f.created_time as createdTime FROM - t_fans f + ums_fans f LEFT JOIN - t_users u + cont_users u ON f.vloger_id = u.id WHERE @@ -33,9 +33,9 @@ f.is_fan_friend_of_mine as bothFriend, f.created_time as createdTime FROM - t_fans f + ums_fans f LEFT JOIN - t_users u + cont_users u ON f.fan_id = u.id WHERE diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/MessageRepository.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/MessageRepository.xml index 8db1d8235..79cf44b53 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/MessageRepository.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/MessageRepository.xml @@ -20,7 +20,7 @@ - INSERT INTO t_message + INSERT INTO cont_message ( id, from_user_id, @@ -55,7 +55,7 @@ msg_type, msg_content, create_time - FROM t_message + FROM cont_message WHERE to_user_id = #{toUserId} ORDER BY create_time DESC LIMIT #{pageable.offset}, #{pageable.pageSize} diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/UserMemberMapper.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/UserMemberMapper.xml index 86312a988..fd78356cd 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/UserMemberMapper.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/UserMemberMapper.xml @@ -38,7 +38,7 @@ t1.description, t1.bg_img, t1.can_imooc_num_be_updated - FROM t_users t1 INNER JOIN + FROM cont_users t1 INNER JOIN r_user_member t2 ON t1.id=t2.user_id WHERE t2.member_id=#{memberId} diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/VlogMapper.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/VlogMapper.xml index 835202c23..2a092d709 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/VlogMapper.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/VlogMapper.xml @@ -4,7 +4,7 @@ - UPDATE t_vlog + UPDATE cont_vlog ${key} = #{value} @@ -14,7 +14,7 @@ - UPDATE t_vlog + UPDATE cont_vlog ${key} = #{value} @@ -45,7 +45,7 @@ - INSERT INTO t_vlog + INSERT INTO cont_vlog ${key} @@ -57,7 +57,7 @@ - INSERT INTO t_vlog + INSERT INTO cont_vlog ${key} @@ -91,9 +91,9 @@ v.first_frame_img as firstFrameImg, v.id as vlogId FROM - t_vlog v + cont_vlog v LEFT JOIN - t_users u + cont_users u ON v.vloger_id = u.id WHERE @@ -146,9 +146,9 @@ v.first_frame_img as firstFrameImg, v.id as vlogId FROM - t_vlog v + cont_vlog v LEFT JOIN - t_users u + cont_users u ON v.vloger_id = u.id WHERE @@ -169,7 +169,7 @@ SELECT r.id, r.member_id as memberId, r.account_id as accountId, - a.type as accountType, + COALESCE(ma.type, ta.type) as accountType, + CASE + WHEN ma.id IS NOT NULL THEN 2 -- 会员 + WHEN ta.id IS NOT NULL THEN 1 -- 租户 + ELSE 2 -- 默认会员 + END as userType, r.money_balance as moneyBalance, r.before_balance as beforeBalance, r.after_balance as afterBalance, @@ -18,7 +23,8 @@ r.source, r.create_time as createTime FROM ums_account_change_record r - LEFT JOIN ums_account a ON r.account_id = a.id +LEFT JOIN ums_account ma ON r.account_id = ma.member_id +LEFT JOIN sys_tenant_account ta ON r.account_id = ta.tenant_id AND r.member_id = #{memberId} @@ -38,6 +44,7 @@ AND r.create_time <= #{endTime} + AND (ma.id IS NOT NULL OR ta.id IS NOT NULL) ORDER BY r.create_time DESC