wangming há 4 semanas atrás
pai
commit
99193bb1ff

+ 16 - 31
yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdCommController.java

@@ -11,17 +11,14 @@
 package com.yami.shop.api.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yami.shop.bean.app.dto.ProdCommDto;
 import com.yami.shop.bean.app.param.ProdCommParam;
 import com.yami.shop.bean.enums.OrderStatus;
 import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.ProdComm;
 import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.util.PageParam;
-import com.yami.shop.security.api.util.SecurityUtils;
-import com.yami.shop.service.OrderItemService;
 import com.yami.shop.service.OrderService;
 import com.yami.shop.service.ProdCommService;
 import io.swagger.annotations.Api;
@@ -31,54 +28,42 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Objects;
 
 @RestController
-@RequestMapping("/p/prodComm")
+//@RequestMapping("/p/prodComm")
+@RequestMapping("/prodComm")
 @Api(tags = "评论接口")
 @AllArgsConstructor
 public class ProdCommController {
 
     private final ProdCommService prodCommService;
 
-    private final OrderItemService orderItemService;
-
     private final OrderService orderService;
 
-    @GetMapping("/prodCommPageByUser")
-    @ApiOperation(value = "根据用户返回评论分页数据", notes = "传入页码")
-    public ResponseEntity<IPage<ProdCommDto>> getProdCommPage(PageParam page) {
-        return ResponseEntity.ok(prodCommService.getProdCommDtoPageByUserId(page, SecurityUtils.getUser().getUserId()));
-    }
-
     @PostMapping
     @ApiOperation(value = "添加评论")
     public ResponseEntity<Void> saveProdCommPage(@Valid @RequestBody ProdCommParam prodCommParam) {
-        Long orderItemId = prodCommParam.getOrderItemId();
-        Order orderServiceById = orderService.getById(orderItemId);
-        if (orderServiceById == null) {
-            throw new GlobalException("订单项不存在");
+        List<ProdComm> commList = prodCommService.list(
+                new LambdaQueryWrapper<ProdComm>().eq(ProdComm::getOrderNumber, prodCommParam.getOrderNumber()));
+        if (!commList.isEmpty()) {
+            throw new GlobalException("该订单已评论...");
         }
-        if (Objects.equals(orderServiceById.getCommSts(), 1)) {
-            throw new GlobalException("该订单项已评论,请勿重复评论");
+        Order order = orderService.getOrderByOrderNumber(prodCommParam.getOrderNumber());
+        if (order == null) {
+            throw new GlobalException("订单不存在");
         }
-
-        String userId = SecurityUtils.getUser().getUserId();
-        Order order = orderService.getOrderByOrderNumberAndUserId(orderServiceById.getOrderNumber(),userId, true);
         if (!Objects.equals(order.getHbOrderStatus(), OrderStatus.SUCCESS.value())) {
             throw new GlobalException("请确认收货后再进行评论");
         }
-
-        prodCommService.comm(orderServiceById, prodCommParam);
+        prodCommService.comm(order, prodCommParam);
         return ResponseEntity.ok().build();
     }
 
-    @GetMapping("/getProdComment")
-    @ApiOperation(value = "根据itemId获取评论", notes = "根据itemId获取评论")
-    public ResponseEntity<ProdComm> getProdComment(Long orderItemId) {
-        ProdComm prodComm = prodCommService.getOne(new LambdaUpdateWrapper<ProdComm>()
-                .eq(ProdComm::getOrderItemId, orderItemId)
-                .eq(ProdComm::getUserId,SecurityUtils.getUser().getUserId()));
-        return ResponseEntity.ok(prodComm);
+    @GetMapping("/commList")
+    @ApiOperation(value = "商品详情-查看商品评价-评价(0好评 1中评 2差评 3有图)")
+    public ResponseEntity<IPage<ProdComm>> commList(PageParam<ProdComm> page, Long skuId, Integer commStatus) {
+        return ResponseEntity.ok(prodCommService.commList(page,skuId,commStatus));
     }
 }

+ 4 - 11
yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/ProdCommParam.java

@@ -20,12 +20,10 @@ import javax.validation.constraints.NotNull;
 @Data
 @ApiModel(value= "添加评论信息")
 public class ProdCommParam {
-    /**
-     * 订单项ID
-     */
-    @ApiModelProperty(value = "订单项ID")
-    @NotNull(message = "订单项ID不能为空")
-    private Long orderItemId;
+
+    @ApiModelProperty(value = "订单号")
+    @NotNull(message = "订单号不能为空")
+    private String orderNumber;
 
     /**
      * 评价,0-5分
@@ -59,9 +57,4 @@ public class ProdCommParam {
     @ApiModelProperty(value = "是否匿名(1:是  0:否) 默认为否")
     @NotNull(message = "是否匿名不能为空")
     private Integer isAnonymous;
-
-    @ApiModelProperty(value = "评价(0好评 1中评 2差评)")
-    @NotNull(message = "评价不能为空")
-    private Integer evaluate;
-
 }

+ 7 - 2
yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdComm.java

@@ -22,6 +22,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 商品评论
@@ -45,9 +46,9 @@ public class ProdComm implements Serializable{
      */
     private Long prodId;
     /**
-     * 订单项ID
+     * 订单
      */
-    private Long orderItemId;
+    private String orderNumber;
     /**
      * 评论用户ID
      */
@@ -128,4 +129,8 @@ public class ProdComm implements Serializable{
      */
     @TableField(exist = false)
     private String[] picsArray;
+
+    @TableField(exist = false)
+    private List<OrderItem> orderItems;
+
 }

+ 3 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/ProdCommMapper.java

@@ -17,6 +17,7 @@ import com.yami.shop.bean.app.dto.ProdCommDto;
 import com.yami.shop.bean.model.ProdComm;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yami.shop.common.util.PageParam;
 import org.apache.ibatis.annotations.Param;
 
 public interface ProdCommMapper extends BaseMapper<ProdComm> {
@@ -27,4 +28,6 @@ public interface ProdCommMapper extends BaseMapper<ProdComm> {
     IPage<ProdCommDto> getProdCommDtoPageByUserId(Page page, @Param("userId") String userId);
 
     IPage<ProdComm> getProdCommPage(Page page, @Param("prodComm") ProdComm prodComm, @Param("shopId") Long shopId);
+
+    IPage<ProdComm> commList(@Param("page") PageParam<ProdComm> page, @Param("skuId") Long skuId, @Param("commStatus") Integer commStatus);
 }

+ 3 - 0
yami-shop-service/src/main/java/com/yami/shop/service/ProdCommService.java

@@ -9,6 +9,7 @@ import com.yami.shop.bean.app.dto.ProdCommDto;
 import com.yami.shop.bean.app.param.ProdCommParam;
 import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.ProdComm;
+import com.yami.shop.common.util.PageParam;
 
 
 /**
@@ -27,4 +28,6 @@ public interface ProdCommService extends IService<ProdComm> {
     IPage<ProdComm> getProdCommPage(Page page,ProdComm prodComm,Long shopId);
 
     void comm(Order order, ProdCommParam prodCommParam);
+
+    IPage<ProdComm> commList(PageParam<ProdComm> page,Long skuId,Integer commStatus);
 }

+ 17 - 9
yami-shop-service/src/main/java/com/yami/shop/service/impl/ProdCommServiceImpl.java

@@ -12,6 +12,7 @@ package com.yami.shop.service.impl;
 
 
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,6 +24,7 @@ import com.yami.shop.bean.model.OrderItem;
 import com.yami.shop.bean.model.ProdComm;
 import com.yami.shop.common.util.Arith;
 import com.yami.shop.common.util.IPHelper;
+import com.yami.shop.common.util.PageParam;
 import com.yami.shop.dao.OrderItemMapper;
 import com.yami.shop.dao.OrderMapper;
 import com.yami.shop.dao.ProdCommMapper;
@@ -91,24 +93,20 @@ public class ProdCommServiceImpl extends ServiceImpl<ProdCommMapper, ProdComm> i
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void comm(Order order, ProdCommParam prodCommParam) {
-        List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
-        listByOrderNumber.forEach(orderItem -> {
             // 插入评论
             ProdComm prodComm = new ProdComm();
-            prodComm.setProdId(orderItem.getProdId());
-            prodComm.setOrderItemId(orderItem.getOrderItemId());
+            prodComm.setProdId(0L);
+            prodComm.setOrderNumber(order.getOrderNumber());
             prodComm.setUserId(order.getUserId());
             prodComm.setScore(prodCommParam.getScore());
             prodComm.setDeliveryPack(prodCommParam.getDeliveryPack());
             prodComm.setDeliverySpeed(prodCommParam.getDeliverySpeed());
             prodComm.setDeliveryService(prodCommParam.getDeliveryService());
             prodComm.setContent(prodCommParam.getContent());
-//        prodComm.setPics(prodCommParam.getPics());
             prodComm.setPics(StrUtil.isBlank(prodCommParam.getPics()) ?null:prodCommParam.getPics());
             prodComm.setIsAnonymous(prodCommParam.getIsAnonymous());
             prodComm.setRecTime(new Date());
-            // 平台不需要控评
-            prodComm.setStatus(1);
+            prodComm.setStatus(0);
             prodComm.setPostip(IPHelper.getIpAddr());
             // 好评
             if (Objects.equals(prodComm.getScore(), 5) || Objects.equals(prodComm.getScore(), 4)) {
@@ -123,10 +121,20 @@ public class ProdCommServiceImpl extends ServiceImpl<ProdCommMapper, ProdComm> i
                 prodComm.setEvaluate(2);
             }
             prodCommMapper.insert(prodComm);
-        });
-
         // 更新订单项评论状态
         order.setCommSts(1);
         orderMapper.updateById(order);
     }
+
+    @Override
+    public IPage<ProdComm> commList(PageParam<ProdComm> page, Long skuId,Integer commStatus) {
+        IPage<ProdComm> commList = prodCommMapper.commList(page, skuId,commStatus);
+        List<ProdComm> records = commList.getRecords();
+        if (!records.isEmpty()){
+            records.forEach(c->
+                c.setOrderItems(orderItemMapper.selectList(
+                        new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, c.getOrderNumber()))));
+        }
+        return commList;
+    }
 }

+ 18 - 2
yami-shop-service/src/main/resources/mapper/ProdCommMapper.xml

@@ -4,7 +4,7 @@
     <resultMap id="BaseResultMap" type="com.yami.shop.bean.model.ProdComm">
         <id column="prod_comm_id" jdbcType="BIGINT" property="prodCommId"/>
         <result property="prodId" column="prod_id"/>
-        <result property="orderItemId" column="order_item_id"/>
+        <result property="orderNumber" column="order_number"/>
         <result property="userId" column="user_id"/>
         <result property="content" column="content"/>
         <result property="replyContent" column="reply_content"/>
@@ -96,7 +96,7 @@
     <resultMap id="ProdComm_Prod_User" type="com.yami.shop.bean.model.ProdComm">
         <id column="prod_comm_id" jdbcType="BIGINT" property="prodCommId"/>
         <result property="prodId" column="prod_id"/>
-        <result property="orderItemId" column="order_item_id"/>
+        <result property="orderNumber" column="order_number"/>
         <result property="userId" column="user_id"/>
         <result property="content" column="content"/>
         <result property="replyContent" column="reply_content"/>
@@ -150,4 +150,20 @@
         order by pc.prod_comm_id desc
     </select>
 
+
+    <select id="commList" resultMap="BaseResultMap">
+        SELECT *
+        FROM tz_prod_comm
+        WHERE order_number in (SELECT order_number FROM tz_order_item WHERE sku_id = #{skuId})
+        <choose>
+            <when test="commStatus == 3">
+                and !ISNULL(pics)
+            </when>
+            <otherwise>
+                and evaluate = #{commStatus}
+            </otherwise>
+        </choose>
+        ORDER BY rec_time desc
+    </select>
+
 </mapper>