|
@@ -1,10 +1,12 @@
|
|
|
package com.izouma.dingdong.service;
|
|
package com.izouma.dingdong.service;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import com.izouma.dingdong.converter.StringArrayConverter;
|
|
|
import com.izouma.dingdong.domain.OrderGoodsSpec;
|
|
import com.izouma.dingdong.domain.OrderGoodsSpec;
|
|
|
import com.izouma.dingdong.domain.OrderInfo;
|
|
import com.izouma.dingdong.domain.OrderInfo;
|
|
|
import com.izouma.dingdong.domain.merchant.Goods;
|
|
import com.izouma.dingdong.domain.merchant.Goods;
|
|
|
import com.izouma.dingdong.domain.merchant.Merchant;
|
|
import com.izouma.dingdong.domain.merchant.Merchant;
|
|
|
|
|
+import com.izouma.dingdong.domain.merchant.MerchantSettings;
|
|
|
import com.izouma.dingdong.domain.user.Coupon;
|
|
import com.izouma.dingdong.domain.user.Coupon;
|
|
|
import com.izouma.dingdong.dto.GoodsSpecDTO;
|
|
import com.izouma.dingdong.dto.GoodsSpecDTO;
|
|
|
import com.izouma.dingdong.dto.UserOrderDTO;
|
|
import com.izouma.dingdong.dto.UserOrderDTO;
|
|
@@ -15,6 +17,7 @@ import com.izouma.dingdong.repo.OrderGoodsSpecRepo;
|
|
|
import com.izouma.dingdong.repo.OrderInfoRepo;
|
|
import com.izouma.dingdong.repo.OrderInfoRepo;
|
|
|
import com.izouma.dingdong.repo.merchant.GoodsRepo;
|
|
import com.izouma.dingdong.repo.merchant.GoodsRepo;
|
|
|
import com.izouma.dingdong.repo.merchant.MerchantRepo;
|
|
import com.izouma.dingdong.repo.merchant.MerchantRepo;
|
|
|
|
|
+import com.izouma.dingdong.repo.merchant.MerchantSettingsRepo;
|
|
|
import com.izouma.dingdong.repo.user.CouponRepo;
|
|
import com.izouma.dingdong.repo.user.CouponRepo;
|
|
|
import com.izouma.dingdong.service.merchant.GoodsService;
|
|
import com.izouma.dingdong.service.merchant.GoodsService;
|
|
|
import com.izouma.dingdong.service.merchant.MerchantSettingsService;
|
|
import com.izouma.dingdong.service.merchant.MerchantSettingsService;
|
|
@@ -22,7 +25,10 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
|
+import java.time.DayOfWeek;
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.LocalTime;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
|
|
@@ -36,6 +42,7 @@ public class OrderInfoService {
|
|
|
private GoodsRepo goodsRepo;
|
|
private GoodsRepo goodsRepo;
|
|
|
private GoodsService goodsService;
|
|
private GoodsService goodsService;
|
|
|
private MerchantRepo merchantRepo;
|
|
private MerchantRepo merchantRepo;
|
|
|
|
|
+ private MerchantSettingsRepo merchantSettingsRepo;
|
|
|
private MerchantSettingsService merchantSettingsService;
|
|
private MerchantSettingsService merchantSettingsService;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -44,11 +51,25 @@ public class OrderInfoService {
|
|
|
public void userOrder(UserOrderDTO userOrderDTO) {
|
|
public void userOrder(UserOrderDTO userOrderDTO) {
|
|
|
//商家
|
|
//商家
|
|
|
Merchant merchant = merchantRepo.findById(userOrderDTO.getMerchantId()).orElseThrow(new BusinessException("无商家"));
|
|
Merchant merchant = merchantRepo.findById(userOrderDTO.getMerchantId()).orElseThrow(new BusinessException("无商家"));
|
|
|
|
|
+ MerchantSettings merchantSettings = merchantSettingsRepo.findByMerchantId(userOrderDTO.getMerchantId()).orElseThrow(new BusinessException("无商家"));
|
|
|
|
|
+
|
|
|
|
|
+ LocalTime startTime = merchantSettings.getStartTime();
|
|
|
|
|
+ LocalTime endTime = merchantSettings.getEndTime();
|
|
|
|
|
+
|
|
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
+ LocalTime nowTime = LocalTime.now();
|
|
|
|
|
+
|
|
|
|
|
+ //是否营业时间内
|
|
|
|
|
+ if (startTime.compareTo(nowTime) >= 0 || endTime.compareTo(nowTime) <= 0) {
|
|
|
|
|
+ throw new BusinessException("非营业时间");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
OrderInfo orderInfo = new OrderInfo();
|
|
OrderInfo orderInfo = new OrderInfo();
|
|
|
BeanUtil.copyProperties(userOrderDTO, orderInfo);
|
|
BeanUtil.copyProperties(userOrderDTO, orderInfo);
|
|
|
orderInfo.setMerchantStatus(MerchantStatus.NOT_RECEIVED);
|
|
orderInfo.setMerchantStatus(MerchantStatus.NOT_RECEIVED);
|
|
|
orderInfo.setCancel(false);
|
|
orderInfo.setCancel(false);
|
|
|
|
|
+ orderInfo.setOrderTime(now);
|
|
|
orderInfoRepo.save(orderInfo);
|
|
orderInfoRepo.save(orderInfo);
|
|
|
|
|
|
|
|
//详细商品信息
|
|
//详细商品信息
|
|
@@ -56,6 +77,11 @@ public class OrderInfoService {
|
|
|
//查库存是否足够
|
|
//查库存是否足够
|
|
|
Goods goods = goodsService.buy(goodsSpecDTO.getGoodsId(), goodsSpecDTO.getNum());
|
|
Goods goods = goodsService.buy(goodsSpecDTO.getGoodsId(), goodsSpecDTO.getNum());
|
|
|
|
|
|
|
|
|
|
+ //商品销售时间内
|
|
|
|
|
+ if (goods.getStartTime().compareTo(nowTime) >= 0 || goods.getEndTime().compareTo(nowTime) <= 0) {
|
|
|
|
|
+ throw new BusinessException("非营业时间");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//保存规格
|
|
//保存规格
|
|
|
orderGoodsSpecRepo.save(OrderGoodsSpec.builder()
|
|
orderGoodsSpecRepo.save(OrderGoodsSpec.builder()
|
|
|
.goodsId(goodsSpecDTO.getGoodsId())
|
|
.goodsId(goodsSpecDTO.getGoodsId())
|
|
@@ -105,7 +131,7 @@ public class OrderInfoService {
|
|
|
OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
|
|
OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
|
|
|
if (pass) {
|
|
if (pass) {
|
|
|
orderInfo.setMerchantStatus(MerchantStatus.RECEIVED);
|
|
orderInfo.setMerchantStatus(MerchantStatus.RECEIVED);
|
|
|
- }else {
|
|
|
|
|
|
|
+ } else {
|
|
|
orderInfo.setMerchantStatus(MerchantStatus.REJECTED);
|
|
orderInfo.setMerchantStatus(MerchantStatus.REJECTED);
|
|
|
orderInfo.setCancel(true);
|
|
orderInfo.setCancel(true);
|
|
|
//退款流程
|
|
//退款流程
|
|
@@ -113,5 +139,19 @@ public class OrderInfoService {
|
|
|
return orderInfoRepo.save(orderInfo);
|
|
return orderInfoRepo.save(orderInfo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ 周几
|
|
|
|
|
+ */
|
|
|
|
|
+ public Boolean week(LocalDate localDate, String week) {
|
|
|
|
|
+ DayOfWeek dayOfWeek = localDate.getDayOfWeek();
|
|
|
|
|
+
|
|
|
|
|
+ List<String> strings = new StringArrayConverter().convertToEntityAttribute(week);
|
|
|
|
|
+ if (strings.contains("EVERY")) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ return strings.contains(dayOfWeek);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|