licailing 5 سال پیش
والد
کامیت
75b38c74ff

+ 13 - 6
src/main/java/com/izouma/dingdong/domain/Appraisal.java

@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
 @ApiModel(value = "评价表", description = "评价表")
 public class Appraisal extends BaseEntity {
     @ApiModelProperty(value = "订单号", name = "orderId")
-    private Long orderId;
+    private Long orderInfoId;
 
     @ApiModelProperty(value = "商户ID", name = "merchantId")
     private Long merchantId;
@@ -27,11 +27,15 @@ public class Appraisal extends BaseEntity {
     @ApiModelProperty(value = "图片", name = "img")
     private String img;
 
+    @Builder.Default
+    @Column(nullable = false)
     @ApiModelProperty(value = "商品评分", name = "goodsScore")
-    private Boolean goodsLike;
+    private Boolean goodsLike = false;
 
+    @Builder.Default
+    @Column(nullable = false)
     @ApiModelProperty(value = "商品评分", name = "goodsScore")
-    private Boolean goodsBad;
+    private Boolean goodsBad = false;
 
     @ApiModelProperty(value = "商品评价", name = "goodsAppraise")
     private String goodsAppraise;
@@ -45,13 +49,16 @@ public class Appraisal extends BaseEntity {
     @ApiModelProperty(value = "骑手评价", name = "riderAppraise")
     private String riderAppraise;
 
-    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
-    @JoinColumn(name = "orderId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
-    private OrderInfo order;
+/*    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
+    @JoinColumn(name = "orderInfoId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private OrderInfo order;*/
 
     @ApiModelProperty(value = "商家回复评价", name = "merchantReply")
     private String merchantReply;
 
     @ApiModelProperty(value = "评价日期", name = "appreiseTime")
     private LocalDateTime appraiseTime;
+
+    @ApiModelProperty(value = "点赞数")
+    private Integer likes;
 }

+ 1 - 1
src/main/java/com/izouma/dingdong/domain/OrderGoodsSpec.java

@@ -25,7 +25,7 @@ public class OrderGoodsSpec extends BaseEntity implements Serializable {
 //    private Long userId;
 
     @ApiModelProperty(value = "订单ID", name = "orderId")
-    private Long orderId;
+    private Long orderInfoId;
 
     @ApiModelProperty(value = "购物车ID", name = "cartId")
     private Long shoppingCartId;

+ 1 - 1
src/main/java/com/izouma/dingdong/domain/OrderInfo.java

@@ -131,7 +131,7 @@ public class OrderInfo extends BaseEntity {
     private Boolean enabled;
 
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
-    @JoinColumn(name = "orderId")
+    @JoinColumn(name = "orderInfoId")
     List<OrderGoodsSpec> orderGoodsSpecs;
 
     @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.DETACH)

+ 4 - 1
src/main/java/com/izouma/dingdong/dto/AppraisalMerDTO.java

@@ -25,6 +25,8 @@ public class AppraisalMerDTO {
     @ApiModelProperty(value = "商品评价", name = "goodsAppraise")
     private String goodsAppraise;
 
+    @ApiModelProperty(value = "图片", name = "img")
+    private String img;
 
     @ApiModelProperty(value = "商品名称", name = "goodsName")
     private String goodsName;
@@ -38,5 +40,6 @@ public class AppraisalMerDTO {
     @ApiModelProperty(value = "商品评分", name = "goodsScore")
     private Boolean goodsBad;
 
-
+    @ApiModelProperty(value = "点赞数")
+    private Integer likes;
 }

+ 1 - 1
src/main/java/com/izouma/dingdong/repo/AppraisalRepo.java

@@ -9,7 +9,7 @@ import java.util.Optional;
 
 public interface AppraisalRepo extends JpaRepository<Appraisal, Long>, JpaSpecificationExecutor<Appraisal> {
 
-    Optional<Appraisal> findByOrderId(Long orderId);
+    Optional<Appraisal> findByOrderInfoId(Long orderId);
 
     List<Appraisal> findAllByMerchantId(Long merchantId);
 

+ 1 - 1
src/main/java/com/izouma/dingdong/repo/OrderGoodsSpecRepo.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 public interface OrderGoodsSpecRepo extends JpaRepository<OrderGoodsSpec, Long>, JpaSpecificationExecutor<OrderGoodsSpec> {
 
-    List<OrderGoodsSpec> findAllByOrderId(Long orderId);
+    List<OrderGoodsSpec> findAllByOrderInfoId(Long orderId);
 
     List<OrderGoodsSpec> findAllByGoodsId(Long goodsId);
 

+ 15 - 7
src/main/java/com/izouma/dingdong/service/AppraisalService.java

@@ -18,6 +18,7 @@ import com.izouma.dingdong.service.merchant.SalesService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import javax.transaction.Transactional;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -33,9 +34,11 @@ public class AppraisalService {
     /*
     客户评价
      */
+    @Transactional
     public Appraisal userAppraisal(Appraisal appraisal) {
 
-        OrderInfo order = appraisal.getOrder();
+        OrderInfo order = orderInfoRepo.findById(appraisal.getOrderInfoId()).orElseThrow(new BusinessException("无订单"));
+        //OrderInfo order = appraisal.getOrder();
         if (OrderStatus.RATED.equals(order.getStatus())) {
 
             order.setRated(true);
@@ -44,11 +47,14 @@ public class AppraisalService {
 
             appraisal.setMerchantId(order.getMerchantId());
             appraisal.setRiderId(order.getRiderId());
+            appraisal.setLikes(0);
 
-            Appraisal save = appraisalRepo.save(appraisal);
+             appraisal = appraisalRepo.save(appraisal);
             //更新销量数据
-            salesService.addLike(save.getId());
-            return save;
+            salesService.addLike(appraisal);
+            return appraisal;
+        } else if (OrderStatus.COMPLETED.equals(order.getStatus())) {
+            throw new BusinessException("订单已评价");
         } else {
             throw new BusinessException("订单未完成");
         }
@@ -65,7 +71,7 @@ public class AppraisalService {
 //        List<Appraisal> appraisals = CollUtil.newArrayList();
         List<AppraisalMerDTO> appraisals = CollUtil.newArrayList();
         specs.forEach(s -> {
-            Appraisal appraisal = appraisalRepo.findByOrderId(s.getOrderId()).orElseThrow(new BusinessException("无订单"));
+            Appraisal appraisal = appraisalRepo.findByOrderInfoId(s.getOrderInfoId()).orElseThrow(new BusinessException("无订单"));
             if (ObjectUtil.isNotNull(appraisal)) {
                 appraisals.add(this.toDTO(appraisal));
 //                appraisals.add(appraisal);
@@ -76,9 +82,10 @@ public class AppraisalService {
 
 
     public AppraisalMerDTO toDTO(Appraisal appraisal) {
-        List<Goods> collect = appraisal.getOrder().getOrderGoodsSpecs().stream().map(OrderGoodsSpec::getGoods).collect(Collectors.toList());
+        OrderInfo order = orderInfoRepo.findById(appraisal.getOrderInfoId()).orElseThrow(new BusinessException("无订单"));
+        List<Goods> collect = order.getOrderGoodsSpecs().stream().map(OrderGoodsSpec::getGoods).collect(Collectors.toList());
         String goodsName = collect.stream().map(Goods::getName).collect(Collectors.joining(","));
-        User user = appraisal.getOrder().getUser();
+        User user = order.getUser();
         return AppraisalMerDTO.builder()
                 .appraiseTime(appraisal.getAppraiseTime())
                 .avatar(user.getAvatar())
@@ -88,6 +95,7 @@ public class AppraisalService {
                 .goodsName(goodsName)
                 .merchantReply(appraisal.getMerchantReply())
                 .nickname(user.getNickname())
+                .img(appraisal.getImg())
                 .build();
     }
 

+ 2 - 2
src/main/java/com/izouma/dingdong/service/OrderInfoService.java

@@ -143,7 +143,7 @@ public class OrderInfoService {
                     goods.setTotalSales(goods.getTotalSales() + s.getNum());
                     goodsRepo.save(goods);
 
-                    s.setOrderId(save.getId());
+                    //s.setOrderInfoId(save.getId());
                     orderGoodsSpecRepo.save(s);
                 }
         );
@@ -327,7 +327,7 @@ public class OrderInfoService {
         dto.setMerchantName(merchant.getShowName());
         dto.setLogo(merchant.getLogo());
 
-        List<OrderGoodsSpec> specs = orderGoodsSpecRepo.findAllByOrderId(orderInfo.getId());
+        List<OrderGoodsSpec> specs = orderGoodsSpecRepo.findAllByOrderInfoId(orderInfo.getId());
         dto.setOrderGoodsSpecs(specs);
 
         return dto;

+ 44 - 9
src/main/java/com/izouma/dingdong/service/merchant/SalesService.java

@@ -38,14 +38,15 @@ public class SalesService {
     下订单时插入销量
      */
     public void addSale(OrderInfo orderInfo) {
-        LocalDate localDate = LocalDate.now();
 
         //订单规格
-        List<OrderGoodsSpec> orderGoodsSpecs = orderGoodsSpecRepo.findAllByOrderId(orderInfo.getId());
+        List<OrderGoodsSpec> orderGoodsSpecs = orderGoodsSpecRepo.findAllByOrderInfoId(orderInfo.getId());
+
         orderGoodsSpecs.forEach(
                 spec -> {
                     //查商品销量表的销量数据
-                    Sales daySales = salesRepo.findByGoodsIdAndDay(spec.getGoodsId(), localDate);
+                    Sales daySales = this.newSales(spec.getGoodsId(), LocalDate.now());
+/*                    Sales daySales = salesRepo.findByGoodsIdAndDay(spec.getGoodsId(), localDate);
                     if (daySales == null) {
                         daySales = Sales.builder()
                                 .goodsId(spec.getGoodsId())
@@ -56,7 +57,7 @@ public class SalesService {
                                 .praise(0)
                                 .daySales(0)
                                 .build();
-                    }
+                    }*/
 
                     //有订单,销量 + 购买数量
                     daySales.setDaySales(daySales.getDaySales() + spec.getNum());
@@ -86,11 +87,25 @@ public class SalesService {
     /*
     评价时加入销量
      */
-    public void addLike(Long appraisalId){
-        Appraisal appraisal = appraisalRepo.findByOrderId(appraisalId).orElseThrow(new BusinessException("评价不存在"));
-        List<OrderGoodsSpec> specs = orderGoodsSpecRepo.findAllByOrderId(appraisal.getOrderId());
-        specs.forEach(spec->{
-            Sales daySales = salesRepo.findByGoodsIdAndDay(spec.getGoodsId(), LocalDate.now());
+    public void addLike(Appraisal appraisal) {
+        //ppraisal appraisal = appraisalRepo.findByOrderInfoId(appraisalId).orElseThrow(new BusinessException("评价不存在"));
+       List<OrderGoodsSpec> specs = orderGoodsSpecRepo.findAllByOrderInfoId(appraisal.getOrderInfoId());
+
+        specs.forEach(spec -> {
+            //Sales daySales = salesRepo.findByGoodsIdAndDay(spec.getGoodsId(), LocalDate.now());
+            Sales daySales = this.newSales(spec.getGoodsId(), LocalDate.now());
+/*            if (daySales == null) {
+                daySales = Sales.builder()
+                        .goodsId(spec.getGoodsId())
+                        .day(LocalDate.now())
+                        .dayLikes(0)
+                        .dayBad(0)
+                        .popularity(0)
+                        .praise(0)
+                        .daySales(0)
+                        .build();
+            }*/
+
             if (appraisal.getGoodsLike()) {
                 daySales.setDayLikes(daySales.getDayLikes() + 1);
                 //查商品数据,加好评数
@@ -176,4 +191,24 @@ public class SalesService {
 //        merchantClass.setGoodsIds(goodsId);
     }
 
+
+    /*
+    新建销量
+     */
+    public Sales newSales(Long goodsId, LocalDate localDate) {
+        Sales daySales = salesRepo.findByGoodsIdAndDay(goodsId, localDate);
+        if (daySales == null) {
+            daySales = Sales.builder()
+                    .goodsId(goodsId)
+                    .day(localDate)
+                    .dayLikes(0)
+                    .dayBad(0)
+                    .popularity(0)
+                    .praise(0)
+                    .daySales(0)
+                    .build();
+        }
+        return daySales;
+    }
+
 }

+ 1 - 1
src/main/java/com/izouma/dingdong/web/AppraisalController.java

@@ -90,7 +90,7 @@ public class AppraisalController extends BaseController {
     @GetMapping("/order")
     @ApiOperation("订单评价")
     public Appraisal order(Long orderId) {
-        return appraisalRepo.findByOrderId(orderId).orElseThrow(new BusinessException("无评价"));
+        return appraisalRepo.findByOrderInfoId(orderId).orElseThrow(new BusinessException("无评价"));
     }
 
     @GetMapping("/goods")

+ 1 - 1
src/main/java/com/izouma/dingdong/web/OrderGoodsSpecController.java

@@ -61,7 +61,7 @@ public class OrderGoodsSpecController extends BaseController {
     @GetMapping("/byOrder")
     @ApiOperation("按订单号查出规格")
     public List<OrderGoodsSpec> byOrder(Long orderId){
-        return orderGoodsSpecRepo.findAllByOrderId(orderId);
+        return orderGoodsSpecRepo.findAllByOrderInfoId(orderId);
     }
 }
 

+ 1 - 7
src/test/java/com/izouma/dingdong/Contorller/OrderInfoController.java → src/test/java/com/izouma/dingdong/contorller/OrderInfoController.java

@@ -1,23 +1,17 @@
-package com.izouma.dingdong.Contorller;
+package com.izouma.dingdong.contorller;
 
 import com.izouma.dingdong.domain.backstage.Category;
-import com.izouma.dingdong.domain.backstage.MerchantNature;
 import com.izouma.dingdong.domain.merchant.Goods;
-import com.izouma.dingdong.domain.merchant.MerchantClassification;
 import com.izouma.dingdong.dto.MerchantDTO;
-import com.izouma.dingdong.dto.PageQuery;
 import com.izouma.dingdong.repo.merchant.MerchantRepo;
 import com.izouma.dingdong.web.AuthenticationController;
 import com.izouma.dingdong.web.backstage.CategoryController;
-import com.izouma.dingdong.web.backstage.MerchantNatureController;
 import com.izouma.dingdong.web.merchant.GoodsController;
 import com.izouma.dingdong.web.merchant.MerchantClassificationController;
-import io.swagger.annotations.ApiModelProperty;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.data.domain.Page;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.math.BigDecimal;

+ 51 - 0
src/test/java/com/izouma/dingdong/service/AppraisalServiceTest.java

@@ -0,0 +1,51 @@
+package com.izouma.dingdong.service;
+
+import com.izouma.dingdong.domain.Appraisal;
+import com.izouma.dingdong.repo.AppraisalRepo;
+import com.izouma.dingdong.repo.OrderInfoRepo;
+import com.izouma.dingdong.repo.user.ShoppingCartRepo;
+import com.izouma.dingdong.web.AppraisalController;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class AppraisalServiceTest {
+
+    @Autowired
+    private AppraisalService appraisalService;
+
+    @Autowired
+    private AppraisalRepo appraisalRepo;
+
+    @Autowired
+    private AppraisalController appraisalController;
+
+    @Test
+    public void test() {
+
+//        System.out.println(shoppingCartRepo.findById(322L).orElse(null));
+        Appraisal appraisal = Appraisal.builder()
+                .goodsLike(true)
+                .orderInfoId(386L)
+                .goodsAppraise("东西很好,棒!!!")
+                .riderLike(5)
+                .riderAppraise("外卖员送的很快")
+                .build();
+        System.out.println(appraisalService.userAppraisal(appraisal));
+    }
+
+    @Test
+    public void testMy() {
+        // System.out.println(orderInfoRepo.findById(386L).orElse(null));
+        System.out.println(appraisalRepo.findAllByMerchantId(356L));
+    }
+
+    @Test
+    public void testReply() {
+        appraisalController.merchantApply(418L,"谢谢@!!!");
+    }
+}