Pārlūkot izejas kodu

开发我的评分查询接口

jinshihui 1 dienu atpakaļ
vecāks
revīzija
a71d02e393

+ 1 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/IMaTechnicianService.java

@@ -112,8 +112,7 @@ public interface IMaTechnicianService extends IService<MaTechnician> {
      * @param dto  查询条件
      * @return 商户入驻审核分页列表
      */
-    Page<MaTechnicianAuditListVO> selectMerchantAuditList(Page<MaTechnicianAuditListVO> page,
-                                                          MaTechnicianAuditQueryDTO dto);
+    Page<MaTechnicianAuditListVO> selectMerchantAuditList(Page<MaTechnicianAuditListVO> page, MaTechnicianAuditQueryDTO dto);
 
     /**
      * 商户待入驻提交审核。

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TechnicianMomentServiceImpl.java

@@ -646,7 +646,7 @@ public class TechnicianMomentServiceImpl extends ServiceImpl<TechnicianMomentMap
         Page<TechnicianMoment> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<TechnicianMoment> momentWrapper = new LambdaQueryWrapper<>();
         momentWrapper.eq(TechnicianMoment::getTechnicianId, technician.getId())
-                .in(TechnicianMoment::getAuditStatus, 1, 2,3) // 1-待审核, 2-审核通过,3-审核拒绝
+                .in(TechnicianMoment::getAuditStatus, 0,1, 2,3) // 1-待审核, 2-审核通过,3-审核拒绝
                 .orderByDesc(TechnicianMoment::getPublishTime);
 
         Page<TechnicianMoment> momentPage = momentMapper.selectPage(page, momentWrapper);

+ 21 - 1
nightFragrance-massage/src/main/java/com/ylx/order/controller/OrderCommentController.java

@@ -1,11 +1,15 @@
 package com.ylx.order.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.domain.R;
+import com.ylx.order.domain.dto.MerchantMyCommentQueryDTO;
+import com.ylx.order.domain.vo.MerchantMyCommentVO;
 import com.ylx.order.service.TCommentUserService;
 import com.ylx.order.domain.dto.OrderCommentDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -35,5 +39,21 @@ public class OrderCommentController {
         return R.ok("评价完成");
     }
 
+    /**
+     * 商户端我的评分分页查询接口
+     *
+     * @param dto
+     * @return R<Page<MerchantMyCommentVO>>
+     */
+    @ApiOperation("商户端我的评分分页查询接口")
+    @PostMapping("/merchant/my/page")
+    public R<Page<MerchantMyCommentVO>> getMerchantMyCommentPage(@Validated @RequestBody MerchantMyCommentQueryDTO dto) {
+        try {
+            return R.ok(tCommentUserService.getMerchantMyCommentPage(dto));
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e);
+        }
+    }
 
-}
+}

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/order/domain/CommentUserAudit.java

@@ -33,7 +33,7 @@ public class CommentUserAudit implements Serializable {
     /**
      * 订单id
      */
-    private String orderId;
+    private Long orderId;
 
     /**
      * 评论内容

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/order/domain/TCommentUser.java

@@ -61,7 +61,7 @@ public class TCommentUser {
      * 订单id
      */
     @ApiModelProperty("订单id")
-    private String orderId;
+    private Long orderId;
 
     /**
      * 评分

+ 18 - 0
nightFragrance-massage/src/main/java/com/ylx/order/domain/dto/MerchantMyCommentQueryDTO.java

@@ -0,0 +1,18 @@
+package com.ylx.order.domain.dto;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.order.domain.vo.MerchantMyCommentVO;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 商户端我的评分分页查询参数。
+ */
+@Data
+@ApiModel("商户端我的评分分页查询DTO")
+public class MerchantMyCommentQueryDTO extends Page<MerchantMyCommentVO> implements Serializable {
+
+    private static final long serialVersionUID = 7563623394367386076L;
+}

+ 7 - 7
nightFragrance-massage/src/main/java/com/ylx/order/domain/dto/OrderCommentDTO.java

@@ -21,9 +21,9 @@ public class OrderCommentDTO {
     /**
      * 订单id
      */
-    @NotBlank(message = "订单id不能为空")
+    @NotNull(message = "订单id不能为空")
     @ApiModelProperty("订单id")
-    private String orderId;
+    private Long orderId;
 
     /**
      * 商户id
@@ -31,7 +31,7 @@ public class OrderCommentDTO {
      */
     @NotNull(message = "商户id不能为空")
     @ApiModelProperty("商户id")
-    private Long merchantId;
+    private Integer merchantId;
 
     /**
      * 商户姓名
@@ -41,28 +41,28 @@ public class OrderCommentDTO {
     @ApiModelProperty("商户姓名")
     private String merchantName;
     /**
-     *  体验评价等级1-5
+     * 体验评价等级1-5
      */
     @NotNull(message = "体验评价等级不能为空")
     @ApiModelProperty("体验评价等级1-5")
     private Integer experienceComment;
 
     /**
-     *  价格评价等级1-5
+     * 价格评价等级1-5
      */
     @NotNull(message = "价格评价等级不能为空")
     @ApiModelProperty("价格评价等级1-5")
     private Integer priceComment;
 
     /**
-     *  态度评价等级1-5
+     * 态度评价等级1-5
      */
     @NotNull(message = "态度评价等级不能为空")
     @ApiModelProperty("态度评价等级1-5")
     private Integer attitudeComment;
 
     /**
-     *  仪表仪容等级1-5
+     * 仪表仪容等级1-5
      */
     @NotNull(message = "仪表仪容等级不能为空")
     @ApiModelProperty("仪表仪容等级1-5")

+ 73 - 0
nightFragrance-massage/src/main/java/com/ylx/order/domain/vo/MerchantMyCommentVO.java

@@ -0,0 +1,73 @@
+package com.ylx.order.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 商户端我的评分列表项。
+ */
+@Data
+@ApiModel("商户端我的评分VO")
+public class MerchantMyCommentVO implements Serializable {
+
+    /**
+     * 序列化版本号。
+     */
+    private static final long serialVersionUID = -1844793534667564100L;
+
+    /**
+     * 评论ID。
+     */
+    @ApiModelProperty("评论ID")
+    private String id;
+
+    /**
+     * 项目名称。
+     */
+    @ApiModelProperty("项目名称")
+    private String projectName;
+
+    /**
+     * 综合评分,按体验、价格、态度、仪表仪容四个维度平均计算,保留1位小数。
+     */
+    @ApiModelProperty("综合评分")
+    private BigDecimal score;
+
+    /**
+     * 用户评价文本内容。
+     */
+    @ApiModelProperty("评价文本内容")
+    private String text;
+
+    /**
+     * 评论图片URL列表。
+     */
+    @ApiModelProperty("评论图片列表")
+    private List<String> pictures;
+
+    /**
+     * 用户昵称。
+     */
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    /**
+     * 用户头像URL。
+     */
+    @ApiModelProperty("用户头像")
+    private String userIcon;
+
+    /**
+     * 用户评论时间。
+     */
+    @ApiModelProperty("评论时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date commentTime;
+}

+ 10 - 1
nightFragrance-massage/src/main/java/com/ylx/order/mapper/TCommentUserMapper.java

@@ -6,6 +6,7 @@ import com.ylx.merchant.domain.dto.MerchantCommentDTO;
 import com.ylx.merchant.domain.vo.MerchantCommentVO;
 import org.apache.ibatis.annotations.Param;
 import com.ylx.order.domain.TCommentUser;
+import com.ylx.order.domain.vo.MerchantMyCommentVO;
 import com.ylx.order.domain.vo.TCommentUserAuditStatusCountVO;
 
 import java.util.List;
@@ -52,5 +53,13 @@ public interface TCommentUserMapper extends BaseMapper<TCommentUser> {
     TCommentUserAuditStatusCountVO selectAuditStatusCount(@Param("tCommentUser") TCommentUser tCommentUser);
 
     Page<MerchantCommentVO> getMerchantComment(Page<MerchantCommentVO> page, @Param("dto") MerchantCommentDTO dto);
-}
 
+    /**
+     * 商户端查询我的评分分页列表。
+     *
+     * @param page       分页参数
+     * @param merchantId 当前登录商户ID
+     * @return 我的评分分页列表
+     */
+    Page<MerchantMyCommentVO> selectMerchantMyCommentPage(Page<MerchantMyCommentVO> page, @Param("merchantId") Integer merchantId);
+}

+ 10 - 1
nightFragrance-massage/src/main/java/com/ylx/order/service/TCommentUserService.java

@@ -6,7 +6,9 @@ import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.merchant.domain.dto.MerchantCommentDTO;
 import com.ylx.merchant.domain.vo.MerchantCommentVO;
 import com.ylx.order.domain.TCommentUser;
+import com.ylx.order.domain.dto.MerchantMyCommentQueryDTO;
 import com.ylx.order.domain.dto.OrderCommentDTO;
+import com.ylx.order.domain.vo.MerchantMyCommentVO;
 import com.ylx.order.domain.vo.TCommentUserAuditStatusCountVO;
 
 /**
@@ -49,5 +51,12 @@ public interface TCommentUserService extends IService<TCommentUser> {
     void submitComment(OrderCommentDTO dto);
 
     Page<MerchantCommentVO> getMerchantComment(MerchantCommentDTO dto);
-}
 
+    /**
+     * 商户端查询我的评分列表。
+     *
+     * @param dto 分页参数
+     * @return 我的评分分页列表
+     */
+    Page<MerchantMyCommentVO> getMerchantMyCommentPage(MerchantMyCommentQueryDTO dto);
+}

+ 78 - 8
nightFragrance-massage/src/main/java/com/ylx/order/service/impl/TCommentUserServiceImpl.java

@@ -3,20 +3,27 @@ package com.ylx.order.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.common.exception.ServiceException;
+import com.ylx.common.utils.SecurityUtils;
+import com.ylx.massage.domain.MaTechnician;
+import com.ylx.massage.domain.vo.MaTechnicianAuditListVO;
+import com.ylx.massage.service.IMaTechnicianService;
 import com.ylx.merchant.domain.dto.MerchantCommentDTO;
 import com.ylx.merchant.domain.vo.MerchantCommentVO;
 import com.ylx.order.domain.CommentUserAudit;
 import com.ylx.massage.mapper.TCommentUserAuditMapper;
 import com.ylx.order.domain.TCommentPicture;
 import com.ylx.order.domain.TCommentUser;
+import com.ylx.order.domain.dto.MerchantMyCommentQueryDTO;
 import com.ylx.order.mapper.TCommentUserMapper;
 import com.ylx.order.service.TCommentUserService;
 import com.ylx.order.domain.dto.OrderCommentDTO;
+import com.ylx.order.domain.vo.MerchantMyCommentVO;
 import com.ylx.order.domain.vo.TCommentUserAuditStatusCountVO;
 import com.ylx.order.enums.AuditStatusEnum;
 import com.ylx.order.service.TCommentPictureService;
@@ -49,6 +56,9 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
     @Resource
     private TCommentPictureService tCommentPictureService;
 
+    @Resource
+    private IMaTechnicianService maTechnicianService;
+
     @Override
     public Boolean saveComment(TCommentUser comment, WxLoginUser wxLoginUser) {
         return null;
@@ -75,14 +85,14 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
         validateComment(dto);
 
         // 1. 获取并校验当前用户
-//        WxLoginUser wxLoginUser = SecurityUtils.getWxLoginUser();
-//        if (ObjectUtil.isNull(wxLoginUser)) {
-//            throw new ServiceException("用户未登录");
-//        }
+        WxLoginUser wxLoginUser = SecurityUtils.getWxLoginUser();
+        if (ObjectUtil.isNull(wxLoginUser)) {
+            throw new ServiceException("用户未登录");
+        }
 
         // 2. 构建评论实体 TCommentUser
         TCommentUser comment = new TCommentUser();
-        String userId = "2052914416724815873";
+        String userId = wxLoginUser.getId();
         comment.setUserId(userId);
         comment.setOrderId(dto.getOrderId());
         comment.setMerchantId(Math.toIntExact(dto.getMerchantId()));
@@ -95,7 +105,6 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
         comment.setCommentTime(new Date());
         comment.setCreateTime(new Date());
         comment.setUpdateTime(new Date());
-        comment.setIsDelete(0);
 
         // 4. 保存评论到 t_comment_user
         int insertResult = tCommentUserMapper.insert(comment);
@@ -136,7 +145,7 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
         Page<MerchantCommentVO> page = new Page<>(dto.getCurrent(), dto.getSize());
         // 1.查询评论和订单基础信息
         page = this.baseMapper.getMerchantComment(page, dto);
-        if(ObjectUtil.isNotNull(page) && CollUtil.isNotEmpty(page.getRecords())){
+        if (ObjectUtil.isNotNull(page) && CollUtil.isNotEmpty(page.getRecords())) {
             List<MerchantCommentVO> records = page.getRecords();
 
             // 2. 提取所有评论ID
@@ -164,6 +173,45 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
         return page;
     }
 
+    @Override
+    public Page<MerchantMyCommentVO> getMerchantMyCommentPage(MerchantMyCommentQueryDTO dto) {
+        Integer merchantId = getCurrentMerchantId();
+        MerchantMyCommentQueryDTO query = dto == null ? new MerchantMyCommentQueryDTO() : dto;
+        long current = query.getCurrent() <= 0 ? 1 : query.getCurrent();
+        long size = query.getSize() <= 0 ? 10 : query.getSize();
+        Page<MerchantMyCommentVO> page = new Page<>(current, size);
+
+        Page<MerchantMyCommentVO> result = tCommentUserMapper.selectMerchantMyCommentPage(page, merchantId);
+        if (ObjectUtil.isNull(result) || CollUtil.isEmpty(result.getRecords())) {
+            return result == null ? page : result;
+        }
+
+        List<MerchantMyCommentVO> records = result.getRecords();
+        List<String> commentIds = records.stream()
+                .map(MerchantMyCommentVO::getId)
+                .filter(StrUtil::isNotBlank)
+                .collect(Collectors.toList());
+        if (CollUtil.isEmpty(commentIds)) {
+            records.forEach(record -> record.setPictures(Collections.emptyList()));
+            return result;
+        }
+
+        List<TCommentPicture> pictures = tCommentPictureService.selectByCommentIds(commentIds);
+        Map<String, List<String>> pictureMap = CollUtil.isEmpty(pictures)
+                ? Collections.emptyMap()
+                : pictures.stream()
+                .filter(picture -> StrUtil.isNotBlank(picture.getCommentId()) && StrUtil.isNotBlank(picture.getPictureUrl()))
+                .collect(Collectors.groupingBy(
+                        TCommentPicture::getCommentId,
+                        Collectors.mapping(TCommentPicture::getPictureUrl, Collectors.toList())
+                ));
+
+        for (MerchantMyCommentVO record : records) {
+            record.setPictures(pictureMap.getOrDefault(record.getId(), Collections.emptyList()));
+        }
+        return result;
+    }
+
     /**
      * 校验评论参数
      */
@@ -171,7 +219,7 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
         if (dto == null) {
             throw new IllegalArgumentException("评论信息不能为空");
         }
-        if (StrUtil.isBlank(dto.getOrderId())) {
+        if (ObjectUtil.isNull(dto.getOrderId())) {
             throw new IllegalArgumentException("订单ID不能为空");
         }
         if (dto.getMerchantId() == null) {
@@ -200,4 +248,26 @@ public class TCommentUserServiceImpl extends ServiceImpl<TCommentUserMapper, TCo
         countVO.setRejectedCount(0L);
         return countVO;
     }
+
+    /**
+     * 获取当前登录商户ID
+     *
+     * @return Integer
+     */
+    private Integer getCurrentMerchantId() {
+        WxLoginUser wxLoginUser = SecurityUtils.getWxLoginUser();
+        if (ObjectUtil.isNull(wxLoginUser) || StrUtil.isBlank(wxLoginUser.getId())) {
+            throw new ServiceException("用户未登录");
+        }
+
+        // 根据openID查询商户ID
+        String openid = wxLoginUser.getCOpenid();
+        LambdaQueryWrapper<MaTechnician> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MaTechnician::getCOpenid, openid);
+        MaTechnician technician = maTechnicianService.getOne(queryWrapper);
+        if (ObjectUtil.isNull(technician)) {
+            throw new ServiceException("当前登录商户不存在");
+        }
+        return technician.getId();
+    }
 }

+ 34 - 1
nightFragrance-massage/src/main/resources/mapper/order/TCommentUserMapper.xml

@@ -116,5 +116,38 @@
             c.comment_time DESC
     </select>
 
-</mapper>
+    <select id="selectMerchantMyCommentPage" resultType="com.ylx.order.domain.vo.MerchantMyCommentVO">
+        SELECT
+            c.id,
+            o.project_name AS projectName,
+            CASE
+                WHEN c.experience_comment IS NULL
+                    OR c.price_comment IS NULL
+                    OR c.attitude_comment IS NULL
+                    OR c.grooming_comment IS NULL
+                THEN NULL
+                ELSE ROUND((
+                    c.experience_comment
+                    + c.price_comment
+                    + c.attitude_comment
+                    + c.grooming_comment
+                ) / 4.0, 1)
+            END AS score,
+            c.text,
+            c.nick_name AS nickName,
+            c.user_icon AS userIcon,
+            c.comment_time AS commentTime
+        FROM
+            t_comment_user c
+        INNER JOIN t_comment_user_audit a ON c.id = a.comment_id
+        LEFT JOIN t_order o ON c.order_id = o.id
+        WHERE
+            c.merchant_id = #{merchantId}
+        AND a.audit_status = 1
+        AND c.is_delete = 0
+        AND a.is_delete = 0
+        ORDER BY
+            c.comment_time DESC
+    </select>
 
+</mapper>

+ 0 - 46
nightFragrance-massage/src/test/java/com/ylx/order/mapper/TCommentUserMapperXmlTest.java

@@ -1,46 +0,0 @@
-package com.ylx.order.mapper;
-
-import org.junit.jupiter.api.Test;
-
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class TCommentUserMapperXmlTest {
-
-    @Test
-    public void selectAllKeepsAuditJoinAndFilters() throws Exception {
-        String xml = readMapperXml();
-
-        assertTrue(xml.contains("select id=\"selectAll\""));
-        assertTrue(xml.contains("LEFT JOIN t_comment_user_audit tcua ON tcu.id = tcua.comment_id"));
-        assertTrue(xml.contains("tcu.is_delete = 0"));
-        assertTrue(xml.contains("tcua.is_delete = 0"));
-        assertTrue(xml.contains("tcu.merchant_name = #{tCommentUser.merchantName}"));
-        assertTrue(xml.contains("tcu.sensitive_word = #{tCommentUser.sensitiveWord}"));
-        assertTrue(xml.contains("tcua.audit_status = #{tCommentUser.auditStatus}"));
-    }
-
-    @Test
-    public void selectAuditStatusCountKeepsSameBaseFiltersAndCountsThreeStatuses() throws Exception {
-        String xml = readMapperXml();
-
-        assertTrue(xml.contains("select id=\"selectAuditStatusCount\""));
-        assertTrue(xml.contains("COALESCE(SUM(CASE WHEN tcua.audit_status = 0 THEN 1 ELSE 0 END), 0) AS pendingCount"));
-        assertTrue(xml.contains("COALESCE(SUM(CASE WHEN tcua.audit_status = 1 THEN 1 ELSE 0 END), 0) AS approvedCount"));
-        assertTrue(xml.contains("COALESCE(SUM(CASE WHEN tcua.audit_status = 2 THEN 1 ELSE 0 END), 0) AS rejectedCount"));
-        assertTrue(xml.contains("<include refid=\"CommentUserAuditBaseWhere\"/>"));
-    }
-
-    private String readMapperXml() throws Exception {
-        try (InputStream inputStream = getClass().getClassLoader()
-                .getResourceAsStream("mapper/order/TCommentUserMapper.xml")) {
-            assertNotNull(inputStream, "TCommentUserMapper.xml should exist in test classpath");
-            byte[] bytes = new byte[inputStream.available()];
-            inputStream.read(bytes);
-            return new String(bytes, StandardCharsets.UTF_8);
-        }
-    }
-}

+ 0 - 65
nightFragrance-massage/src/test/java/com/ylx/order/service/impl/TCommentUserServiceImplTest.java

@@ -1,65 +0,0 @@
-package com.ylx.order.service.impl;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ylx.order.domain.TCommentUser;
-import com.ylx.order.domain.vo.TCommentUserAuditStatusCountVO;
-import com.ylx.order.mapper.TCommentUserMapper;
-import org.junit.jupiter.api.Test;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-public class TCommentUserServiceImplTest {
-
-    @Test
-    public void selectAllUsesMybatisPlusPageMapper() {
-        TCommentUserMapper mapper = mock(TCommentUserMapper.class);
-        Page<TCommentUser> page = new Page<>(2, 20);
-        TCommentUser query = new TCommentUser();
-        Page<TCommentUser> mapperResult = new Page<>(2, 20, 35);
-        when(mapper.selectAll(page, query)).thenReturn(mapperResult);
-        TCommentUserServiceImpl service = new TCommentUserServiceImpl();
-        ReflectionTestUtils.setField(service, "tCommentUserMapper", mapper);
-
-        Page<TCommentUser> result = service.selectAll(page, query);
-
-        assertEquals(mapperResult, result);
-        verify(mapper).selectAll(eq(page), eq(query));
-    }
-
-    @Test
-    public void selectAuditStatusCountUsesMapperAndNormalizesNullQuery() {
-        TCommentUserMapper mapper = mock(TCommentUserMapper.class);
-        TCommentUserAuditStatusCountVO mapperResult = new TCommentUserAuditStatusCountVO();
-        mapperResult.setPendingCount(1L);
-        mapperResult.setApprovedCount(2L);
-        mapperResult.setRejectedCount(3L);
-        when(mapper.selectAuditStatusCount(any(TCommentUser.class))).thenReturn(mapperResult);
-        TCommentUserServiceImpl service = new TCommentUserServiceImpl();
-        ReflectionTestUtils.setField(service, "tCommentUserMapper", mapper);
-
-        TCommentUserAuditStatusCountVO result = service.selectAuditStatusCount(null);
-
-        assertEquals(mapperResult, result);
-        verify(mapper).selectAuditStatusCount(any(TCommentUser.class));
-    }
-
-    @Test
-    public void selectAuditStatusCountReturnsZeroWhenMapperReturnsNull() {
-        TCommentUserMapper mapper = mock(TCommentUserMapper.class);
-        when(mapper.selectAuditStatusCount(any(TCommentUser.class))).thenReturn(null);
-        TCommentUserServiceImpl service = new TCommentUserServiceImpl();
-        ReflectionTestUtils.setField(service, "tCommentUserMapper", mapper);
-
-        TCommentUserAuditStatusCountVO result = service.selectAuditStatusCount(new TCommentUser());
-
-        assertEquals(0L, result.getPendingCount());
-        assertEquals(0L, result.getApprovedCount());
-        assertEquals(0L, result.getRejectedCount());
-    }
-}