wangming 4 weken geleden
bovenliggende
commit
34d5f37774

+ 13 - 3
yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdCommController.java

@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @RestController
@@ -62,8 +63,17 @@ public class ProdCommController {
     }
 
     @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));
+    @ApiOperation(value = "商品详情-查看商品评价(0好评 1中评 2差评 3有图)")
+    public ResponseEntity<IPage<ProdComm>> commList(PageParam<ProdComm> page, Long skuId,Long shopId, Integer commStatus) {
+        return ResponseEntity.ok(prodCommService.commList(page,skuId,shopId,commStatus));
     }
+
+    @GetMapping("/commentCount")
+    @ApiOperation(value = "商品详情-评价数量-好评率")
+    public ResponseEntity<Map<String, Object>> commentCount(Long skuId,Long shopId) {
+        return ResponseEntity.ok(prodCommService.commentCount(skuId,shopId));
+    }
+
+
+
 }

+ 6 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/ProdComm.java

@@ -133,4 +133,10 @@ public class ProdComm implements Serializable{
     @TableField(exist = false)
     private List<OrderItem> orderItems;
 
+    @TableField(exist = false)
+    private String nickName;
+
+    @TableField(exist = false)
+    private String avatar;
+
 }

+ 8 - 1
yami-shop-service/src/main/java/com/yami/shop/dao/ProdCommMapper.java

@@ -29,5 +29,12 @@ public interface ProdCommMapper extends BaseMapper<ProdComm> {
 
     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);
+    IPage<ProdComm> commList(@Param("page") PageParam<ProdComm> page, @Param("skuId") Long skuId,
+                             @Param("shopId") Long shopId,@Param("commStatus") Integer commStatus);
+
+    Integer commentCount(@Param("skuId") Long skuId, @Param("shopId") Long shopId, @Param("evaluate") Integer evaluate);
+
+    Integer picCount(@Param("skuId") Long skuId, @Param("shopId") Long shopId);
+
+    String goodRate(@Param("skuId") Long skuId, @Param("shopId") Long shopId);
 }

+ 6 - 1
yami-shop-service/src/main/java/com/yami/shop/service/ProdCommService.java

@@ -11,6 +11,8 @@ import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.ProdComm;
 import com.yami.shop.common.util.PageParam;
 
+import java.util.Map;
+
 
 /**
  * 商品评论
@@ -29,5 +31,8 @@ public interface ProdCommService extends IService<ProdComm> {
 
     void comm(Order order, ProdCommParam prodCommParam);
 
-    IPage<ProdComm> commList(PageParam<ProdComm> page,Long skuId,Integer commStatus);
+    IPage<ProdComm> commList(PageParam<ProdComm> page,Long skuId,Long shopId,Integer commStatus);
+
+    Map<String, Object> commentCount(Long skuId, Long shopId);
+
 }

+ 16 - 2
yami-shop-service/src/main/java/com/yami/shop/service/impl/ProdCommServiceImpl.java

@@ -16,6 +16,7 @@ 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;
+import com.google.gson.internal.LinkedTreeMap;
 import com.yami.shop.bean.app.dto.ProdCommDataDto;
 import com.yami.shop.bean.app.dto.ProdCommDto;
 import com.yami.shop.bean.app.param.ProdCommParam;
@@ -35,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -127,8 +129,8 @@ public class ProdCommServiceImpl extends ServiceImpl<ProdCommMapper, ProdComm> i
     }
 
     @Override
-    public IPage<ProdComm> commList(PageParam<ProdComm> page, Long skuId,Integer commStatus) {
-        IPage<ProdComm> commList = prodCommMapper.commList(page, skuId,commStatus);
+    public IPage<ProdComm> commList(PageParam<ProdComm> page, Long skuId,Long shopId,Integer commStatus) {
+        IPage<ProdComm> commList = prodCommMapper.commList(page, skuId,shopId,commStatus);
         List<ProdComm> records = commList.getRecords();
         if (!records.isEmpty()){
             records.forEach(c->
@@ -137,4 +139,16 @@ public class ProdCommServiceImpl extends ServiceImpl<ProdCommMapper, ProdComm> i
         }
         return commList;
     }
+
+    @Override
+    public Map<String, Object> commentCount(Long skuId, Long shopId) {
+        Map<String, Object> map = new LinkedTreeMap<>();
+        map.put("all", prodCommMapper.commentCount(skuId, shopId,null));
+        map.put("goodCount", prodCommMapper.commentCount(skuId, shopId,0));
+        map.put("middleCount", prodCommMapper.commentCount(skuId, shopId,1));
+        map.put("badCount", prodCommMapper.commentCount(skuId, shopId,2));
+        map.put("picCount", prodCommMapper.picCount(skuId, shopId));
+        map.put("goodRate", prodCommMapper.goodRate(skuId, shopId));
+        return map;
+    }
 }

+ 37 - 6
yami-shop-service/src/main/resources/mapper/ProdCommMapper.xml

@@ -18,6 +18,9 @@
         <result property="isAnonymous" column="is_anonymous"/>
         <result property="status" column="status"/>
         <result property="evaluate" column="evaluate"/>
+
+        <result property="nickName" column="nick_name"/>
+        <result property="avatar" column="avatar"/>
     </resultMap>
 
 
@@ -152,18 +155,46 @@
 
 
     <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})
+        SELECT b.nick_name,b.pic avatar,a.*
+        FROM tz_prod_comm a
+        LEFT JOIN tz_user b on a.user_id=b.user_id
+        WHERE a.order_number in (SELECT order_number FROM tz_order_item WHERE sku_id = #{skuId} and shop_id=#{shopId}) and a.`status`=1
         <choose>
             <when test="commStatus == 3">
-                and !ISNULL(pics)
+                and !ISNULL(a.pics)
             </when>
             <otherwise>
-                and evaluate = #{commStatus}
+                and a.evaluate = #{commStatus}
             </otherwise>
         </choose>
-        ORDER BY rec_time desc
+        ORDER BY a.rec_time desc
     </select>
 
+    <select id="commentCount" resultType="integer">
+        SELECT COUNT(1)
+        FROM tz_prod_comm
+        WHERE order_number in (SELECT order_number FROM tz_order_item WHERE sku_id = #{skuId} and shop_id = #{shopId})
+          and `status` = 1
+        <if test="evaluate!=null">
+            and evaluate = #{evaluate}
+        </if>
+    </select>
+
+    <select id="picCount" resultType="integer">
+        SELECT COUNT(1)
+        FROM tz_prod_comm
+        WHERE order_number in (SELECT order_number FROM tz_order_item WHERE sku_id = #{skuId} and shop_id = #{shopId})
+          and `status` = 1
+          and TRIM(pics) > ''
+    </select>
+
+    <select id="goodRate" resultType="string">
+        SELECT CONCAT(CAST(SUM(CASE WHEN pc.evaluate = 0 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS DECIMAL(5,2)),'%') AS rate
+        FROM tz_prod_comm pc
+                 JOIN tz_order_item oi ON pc.order_number = oi.order_number
+        WHERE oi.sku_id = #{skuId} and oi.shop_id = #{shopId} AND pc.`status` = 1
+    </select>
+
+
+
 </mapper>