package cn.iocoder.yudao.module.product.dal.mysql.comment; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.product.controller.admin.comment.vo.ProductCommentPageReqVO; import cn.iocoder.yudao.module.product.controller.app.comment.vo.AppCommentPageReqVO; import cn.iocoder.yudao.module.product.dal.dataobject.comment.ProductCommentDO; import org.apache.ibatis.annotations.Mapper; @Mapper public interface ProductCommentMapper extends BaseMapperX { default PageResult selectPage(ProductCommentPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(ProductCommentDO::getUserNickname, reqVO.getUserNickname()) .eqIfPresent(ProductCommentDO::getOrderId, reqVO.getOrderId()) .eqIfPresent(ProductCommentDO::getSpuId, reqVO.getSpuId()) .eqIfPresent(ProductCommentDO::getScores, reqVO.getScores()) .eqIfPresent(ProductCommentDO::getReplyStatus, reqVO.getReplyStatus()) .betweenIfPresent(ProductCommentDO::getCreateTime, reqVO.getCreateTime()) .likeIfPresent(ProductCommentDO::getSpuName, reqVO.getSpuName()) .orderByDesc(ProductCommentDO::getId)); } static void appendTabQuery(LambdaQueryWrapperX queryWrapper, Integer type) { // 构建好评查询语句:好评计算 总评 >= 4 if (ObjectUtil.equal(type, AppCommentPageReqVO.GOOD_COMMENT)) { queryWrapper.ge(ProductCommentDO::getScores, 4); } // 构建中评查询语句:中评计算 总评 >= 3 且 总评 < 4 if (ObjectUtil.equal(type, AppCommentPageReqVO.MEDIOCRE_COMMENT)) { queryWrapper.ge(ProductCommentDO::getScores, 3); queryWrapper.lt(ProductCommentDO::getScores, 4); } // 构建差评查询语句:差评计算 总评 < 3 if (ObjectUtil.equal(type, AppCommentPageReqVO.NEGATIVE_COMMENT)) { queryWrapper.lt(ProductCommentDO::getScores, 3); } } default PageResult selectPage(AppCommentPageReqVO reqVO, Boolean visible) { LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() .eqIfPresent(ProductCommentDO::getSpuId, reqVO.getSpuId()) .eqIfPresent(ProductCommentDO::getVisible, visible); // 构建评价查询语句 appendTabQuery(queryWrapper, reqVO.getType()); // 按评价时间排序最新的显示在前面 queryWrapper.orderByDesc(ProductCommentDO::getCreateTime); return selectPage(reqVO, queryWrapper); } default ProductCommentDO selectByUserIdAndOrderItemId(Long userId, Long orderItemId) { return selectOne(new LambdaQueryWrapperX() .eq(ProductCommentDO::getUserId, userId) .eq(ProductCommentDO::getOrderItemId, orderItemId)); } }