From f69d8503a2e17995010c78eceb9bb94e9afe6371 Mon Sep 17 00:00:00 2001 From: wangzhs Date: Sun, 19 Mar 2023 15:47:49 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E][=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=AF=84=E4=BB=B7]=201.=20=E5=AE=9E=E4=BD=93=E7=B1=BB=202.=20h?= =?UTF-8?q?2.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataobject/comment/ProductCommentDO.java | 158 +++++++++++------- .../mysql/comment/ProductCommentMapper.java | 16 ++ .../comment/ProductCommentService.java | 14 ++ .../comment/ProductCommentServiceImpl.java | 9 + .../ProductCommentServiceImplTest.java | 39 +++++ .../src/test/resources/sql/clean.sql | 1 + .../src/test/resources/sql/create_tables.sql | 32 ++++ 7 files changed, 211 insertions(+), 58 deletions(-) create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentService.java create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java create mode 100644 yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java index c14808f22..76259aa02 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.product.dal.dataobject.comment; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; -import cn.iocoder.yudao.module.product.enums.comment.ProductCommentAuditStatusEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -18,7 +18,7 @@ import java.util.List; * * @author 芋道源码 */ -@TableName("product_comment") +@TableName(value = "product_comment", autoResultMap = true) @KeySequence("product_comment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @@ -33,97 +33,139 @@ public class ProductCommentDO extends BaseDO { */ @TableId private Long id; - /** - * 商品 SPU 编号 - * - * 关联 {@link ProductSpuDO#getId()} - */ - private Long spuId; - /** - * 交易订单编号 - * - * 关联 TradeOrderDO 的 id 编号 - */ - private Long orderId; - /** - * 交易订单项编号 - * - * 关联 TradeOrderItemDO 的 id 编号 - */ - private Long orderItemId; - /** - * 审核状态 - * - * 枚举 {@link ProductCommentAuditStatusEnum} - */ - private Integer auditStatus; /** - * 用户编号 - * + * 评价人 用户编号 + *

* 关联 MemberUserDO 的 id 编号 */ private Long userId; + /** - * 用户 IP + * 评价人名称 */ - private String userIp; + private Long userNickname; + + /** + * 评价人头像 + */ + private Long userAvatar; + /** * 是否匿名 */ private Boolean anonymous; + + /** + * 交易订单编号 + *

+ * 关联 TradeOrderDO 的 id 编号 + */ + private Long orderId; + + /** + * 交易订单项编号 + *

+ * 关联 TradeOrderItemDO 的 id 编号 + */ + private Long orderItemId; + + /** + * 商品 SPU 编号 + *

+ * 关联 {@link ProductSpuDO#getId()} + */ + private Long spuId; + + /** + * 商品 SKU 编号 + *

+ * 关联 {@link ProductSkuDO#getId()} + */ + private Long skuId; + + /** + * 是否可见 + *

+ * 1:显示 0:隐藏 + */ + private Boolean visible; + + /** + * 评分星级 + *

+ * 1-5分 + */ + private Integer scores; + + /** + * 描述星级 + *

+ * 1-5 星 + */ + private Integer descriptionScores; + + /** + * 服务星级 + *

+ * 1-5 星 + */ + private Integer benefitScores; + + /** + * 配送星级 + *

+ * 1-5 星 + */ + private Integer deliveryScores; + /** * 评论内容 */ private String content; + /** * 评论图片地址数组 */ @TableField(typeHandler = JacksonTypeHandler.class) private List picUrls; - /** - * 描述相符星级 - * - * 1-5 星 - */ - private Integer descriptionScore; - /** - * 商品评论星级 - * - * 1-5 星 - */ - private Integer productScore; - /** - * 服务评论星级 - * - * 1-5 星 - */ - private Integer serviceScore; - /** - * 物流评论星级 - * - * 1-5 星 - */ - private Integer expressComment; /** * 商家是否回复 */ private Boolean replied; + + /** + * 回复管理员编号 + *

+ * 关联 AdminUserDO 的 id 编号 + */ + private Long replyUserId; + /** * 商家回复内容 */ private String replyContent; + /** * 商家回复时间 */ private LocalDateTime replyTime; /** - * 有用的计数 - * - * 其他用户看到评论时,可点击「有用」按钮 + * 追加评价内容 */ - private Integer usefulCount; + private String additionalContent; + + /** + * 追评评价图片地址数组 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List additionalPicUrls; + + /** + * 追加评价时间 + */ + private LocalDateTime additionalCreateTime; } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java new file mode 100644 index 000000000..4b44e0ce2 --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.product.dal.mysql.comment; + + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.product.dal.dataobject.comment.ProductCommentDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 商品评论 Mapper + * + * @author wangzhs + */ +@Mapper +public interface ProductCommentMapper extends BaseMapperX { +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentService.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentService.java new file mode 100644 index 000000000..e89a2de0e --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentService.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.product.service.comment; + +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +/** + * 商品评论 Service 接口 + * + * @author wangzhs + */ +@Service +@Validated +public interface ProductCommentService { +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java new file mode 100644 index 000000000..a085a75ce --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.product.service.comment; + +/** + * 商品评论 Service 实现类 + * + * @author wangzhs + */ +public class ProductCommentServiceImpl implements ProductCommentService { +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java b/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java new file mode 100644 index 000000000..47a66995e --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.product.service.comment; + +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; +import cn.iocoder.yudao.module.product.dal.dataobject.comment.ProductCommentDO; +import cn.iocoder.yudao.module.product.dal.mysql.comment.ProductCommentMapper; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; + +/** + * {@link ProductCommentServiceImpl} 的单元测试类 + * + * @author wangzhs + */ +@Import(ProductCommentServiceImpl.class) +public class ProductCommentServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProductCommentMapper productCommentMapper; + + @Test + public void testCreateCommentAndGet_success() { + // mock 测试 + ProductCommentDO productComment = randomPojo(ProductCommentDO.class); + productCommentMapper.insert(productComment); + + // 断言 + // 校验记录的属性是否正确 + ProductCommentDO comment = productCommentMapper.selectById(productComment.getId()); + assertPojoEquals(productComment, comment); + } + + +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/clean.sql b/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/clean.sql index 48079766a..4ecb5f34d 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/clean.sql +++ b/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/clean.sql @@ -2,3 +2,4 @@ DELETE FROM "product_sku"; DELETE FROM "product_spu"; DELETE FROM "product_brand"; DELETE FROM "product_category"; +DELETE FROM "product_comment"; diff --git a/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/create_tables.sql b/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/create_tables.sql index e79e987c6..dc9f903f0 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/create_tables.sql +++ b/yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/create_tables.sql @@ -82,3 +82,35 @@ CREATE TABLE IF NOT EXISTS `product_brand` ( `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`) ) COMMENT '商品品牌'; + +CREATE TABLE IF NOT EXISTS `product_comment` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评价编号', + `user_id` bigint NOT NULL COMMENT ' 评价ID 用户编号', + `user_nickname` varchar(128) NOT NULL COMMENT '评价人名称', + `user_avatar` varchar(255) NOT NULL COMMENT '评价人头像', + `anonymous` bit(1) NOT NULL DEFAULT 0 COMMENT '是否匿名 0:不匿名 1:匿名', + `order_id` bigint NOT NULL COMMENT '交易订单编号', + `order_item_id` bigint NOT NULL COMMENT '交易订单项编号', + `spu_id` bigint NOT NULL COMMENT '商品SPU编号', + `sku_id` bigint NOT NULL COMMENT '商品SKU编号', + `visible` bit(1) NOT NULL DEFAULT 1 COMMENT '是否可见 1:显示 0:隐藏', + `scores` int NOT NULL COMMENT '评分星级 1-5分', + `description_scores` int NOT NULL COMMENT '描述星级 1-5分', + `benefit_scores` int NOT NULL COMMENT '服务星级 1-5分', + `delivery_scores` int NOT NULL COMMENT '配送星级 1-5分', + `content` varchar(2000) NOT NULL COMMENT '评论内容', + `pic_urls` varchar(1024) DEFAULT '' COMMENT '评论图片地址数组,以逗号分隔最多上传9张', + `replied` bit(1) NOT NULL DEFAULT 0 COMMENT '商家是否回复 1:回复 0:未回复', + `reply_user_id` bigint COMMENT '回复管理员编号', + `reply_content` varchar(2000) COMMENT '商家回复内容', + `reply_time` datetime COMMENT '商家回复时间', + `additional_content` varchar(2000) COMMENT '追加评价内容', + `additional_pic_urls` varchar(1024) COMMENT '追评评价图片地址数组,以逗号分隔最多上传9张', + `additional_create_time` datetime COMMENT '追加评价时间', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `creator` varchar DEFAULT NULL COMMENT '创建人', + `updater` varchar DEFAULT NULL COMMENT '更新人', + `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY (`id`) +) COMMENT '商品评价'; \ No newline at end of file