licailing 5 лет назад
Родитель
Сommit
7dacef37ea

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

@@ -211,6 +211,7 @@ public class OrderInfoService {
     public Boolean week(LocalDate localDate, String week) {
         DayOfWeek dayOfWeek = localDate.getDayOfWeek();
 
+        System.out.println(dayOfWeek);
         List<String> strings = new StringArrayConverter().convertToEntityAttribute(week);
         if (strings.contains("EVERY")) {
             return true;

+ 46 - 7
src/main/java/com/izouma/dingdong/service/merchant/GoodsService.java

@@ -3,19 +3,21 @@ package com.izouma.dingdong.service.merchant;
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.converter.LongArrayConverter;
+import com.izouma.dingdong.converter.StringArrayConverter;
 import com.izouma.dingdong.domain.merchant.Goods;
+import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.MerchantClassification;
+import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.enums.ApplyStatus;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.UserRepo;
-import com.izouma.dingdong.repo.merchant.GoodsRepo;
-import com.izouma.dingdong.repo.merchant.MerchantClassificationRepo;
-import com.izouma.dingdong.repo.merchant.MerchantRepo;
-import com.izouma.dingdong.repo.merchant.SalesRepo;
+import com.izouma.dingdong.repo.merchant.*;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.util.List;
 
 
@@ -25,7 +27,7 @@ public class GoodsService {
 
     private GoodsRepo goodsRepo;
 
-    private MerchantRepo merchantRepo;
+    private MerchantSettingsRepo merchantSettingsRepo;
 
     private MerchantService merchantService;
 
@@ -46,13 +48,18 @@ public class GoodsService {
         if (ObjectUtil.isNull(goods.getMerchantId())) {
             throw new BusinessException("缺少商家");
         }
-        merchantRepo.findById(goods.getMerchantId()).orElseThrow(new BusinessException("商家不存在"));
-        if (goods.getInventory() < 1) {
+        MerchantSettings merchantSettings = merchantSettingsRepo.findByMerchantId(goods.getMerchantId()).orElseThrow(new BusinessException("商家不存在"));
+        if (ObjectUtil.isNull(goods.getInventory()) || goods.getInventory() < 1) {
             throw new BusinessException("商品供应数量不足");
         }
         if (BigDecimal.ZERO.compareTo(goods.getAmount()) >= 0) {
             throw new BusinessException("价格不得小于等于0");
         }
+
+        if (ObjectUtil.isNull(goods.getDiscountAmount())) {
+            goods.setDiscountAmount(goods.getAmount());
+        }
+
         if (BigDecimal.ZERO.compareTo(goods.getDiscountAmount()) >= 0) {
             throw new BusinessException("折扣价不得小于等于0");
         }
@@ -62,6 +69,14 @@ public class GoodsService {
             throw new BusinessException("折扣价不得大于原价");
         }
 
+        if (goods.getStartTime().isBefore(merchantSettings.getStartTime()) || goods.getEndTime().isAfter(merchantSettings.getEndTime())) {
+            throw new BusinessException("商品销售时间不得早于/晚于营业时间");
+        }
+
+        if (containsWeek(goods.getWeek(),merchantSettings.getWeek())){
+            throw new BusinessException("商品销售日期不在营业日期内");
+        }
+
         if (goods.getId() == null) {
             goods.setLikes(0);
             goods.setBad(0);
@@ -164,4 +179,28 @@ public class GoodsService {
         }
         goodsRepo.save(goods);
     }
+
+
+    /*
+       周几
+    */
+    public Boolean containsWeek(String goodsWeek, String merWeek) {
+
+
+        List<String> merWeeks = new StringArrayConverter().convertToEntityAttribute(merWeek);
+        List<String> goodsWeeks = new StringArrayConverter().convertToEntityAttribute(goodsWeek);
+
+        if (merWeeks.contains("EVERY")) {
+            return true;
+        }
+
+        for (String g:goodsWeeks ){
+            if (!merWeeks.contains(g)){
+                return false;
+            }
+        }
+
+        return true;
+
+    }
 }

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

@@ -35,7 +35,7 @@ public class GoodsController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     @ApiOperation("添加修改商品")
-    public Goods save(/*@RequestBody*/ Goods record) {
+    public Goods save(@RequestBody Goods record) {
         if (record.getId() != null) {
             Goods orig = goodsRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             //如果修改商品名称和图片就重新审核

+ 90 - 0
src/test/java/com/izouma/dingdong/Contorller/OrderInfoController.java

@@ -0,0 +1,90 @@
+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.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 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;
+import java.time.LocalTime;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class OrderInfoController {
+    @Autowired
+    private AuthenticationController auth;
+    @Autowired
+    private CategoryController categoryController;
+    @Autowired
+    private GoodsController goodsController;
+    @Autowired
+    private MerchantClassificationController classificationController;
+
+    //商家注册
+    @Test
+    public void testMerReg(){
+        Set<Category> categories=new HashSet<>();
+        List<Category> tree = categoryController.tree(137L);
+        //System.out.println(tree);
+        categories.add(tree.get(0));
+
+        MerchantDTO merchantDTO = MerchantDTO.builder()
+                .address("测试测试")
+                .aliAccount("11111")
+                .aliName("测试")
+                .logo("https://idingdong.oss-cn-hangzhou.aliyuncs.com/image/2020-05-14-10-01-57oAziBRXO.jpg")
+                .category(categories)
+                .endTime(LocalTime.parse("16:00:00"))
+                .startTime(LocalTime.parse("14:00:00"))
+                .merchantNatureId(1L)
+                .phone("11111")
+                .password("11111")
+                .week("WED,THU")
+                .build();
+
+        System.out.println(auth.registerMerchant(merchantDTO));
+    }
+
+    //注册添加商品
+    @Test
+    public void testGoods(){
+        Goods goods = Goods.builder()
+                .amount(BigDecimal.valueOf(111))
+                .discountAmount(BigDecimal.valueOf(111))
+                .endTime(LocalTime.parse("16:00:00"))
+                .startTime(LocalTime.parse("14:00:00"))
+                .merchantId(298L)
+                .name("111")
+                .packingPrice(BigDecimal.valueOf(10))
+                .inventory(1)
+                .week("MON,THU")
+                .img("https://idingdong.oss-cn-hangzhou.aliyuncs.com/image/2020-05-18-13-44-55zltwyJVa.png")
+                //.discountAmount(BigDecimal.valueOf(188))
+                .build();
+        System.out.println(goodsController.save(goods));
+    }
+
+    @Test
+    public void testClass(){
+/*        MerchantClassification.builder()
+
+                .build();
+        classificationController.save()*/
+    }
+}