|
@@ -1,27 +1,19 @@
|
|
|
package com.seecoder.BlueWhale.serviceImpl;
|
|
package com.seecoder.BlueWhale.serviceImpl;
|
|
|
|
|
|
|
|
-import java.util.Date;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
-
|
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
|
-
|
|
|
|
|
import com.seecoder.BlueWhale.enums.OrderStatusEnum;
|
|
import com.seecoder.BlueWhale.enums.OrderStatusEnum;
|
|
|
import com.seecoder.BlueWhale.exception.BlueWhaleException;
|
|
import com.seecoder.BlueWhale.exception.BlueWhaleException;
|
|
|
-import com.seecoder.BlueWhale.po.Coupon;
|
|
|
|
|
-import com.seecoder.BlueWhale.po.CouponGroup;
|
|
|
|
|
-import com.seecoder.BlueWhale.po.Order;
|
|
|
|
|
-import com.seecoder.BlueWhale.po.Product;
|
|
|
|
|
-import com.seecoder.BlueWhale.po.Store;
|
|
|
|
|
-import com.seecoder.BlueWhale.repository.CouponGroupRepository;
|
|
|
|
|
-import com.seecoder.BlueWhale.repository.CouponRepository;
|
|
|
|
|
-import com.seecoder.BlueWhale.repository.OrderRepository;
|
|
|
|
|
-import com.seecoder.BlueWhale.repository.ProductRepository;
|
|
|
|
|
-import com.seecoder.BlueWhale.repository.StoreRepository;
|
|
|
|
|
|
|
+import com.seecoder.BlueWhale.po.*;
|
|
|
|
|
+import com.seecoder.BlueWhale.repository.*;
|
|
|
import com.seecoder.BlueWhale.service.OrderService;
|
|
import com.seecoder.BlueWhale.service.OrderService;
|
|
|
|
|
+import com.seecoder.BlueWhale.serviceImpl.strategy.Context;
|
|
|
import com.seecoder.BlueWhale.util.SecurityUtil;
|
|
import com.seecoder.BlueWhale.util.SecurityUtil;
|
|
|
import com.seecoder.BlueWhale.vo.OrderVO;
|
|
import com.seecoder.BlueWhale.vo.OrderVO;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
public class OrderServiceImpl implements OrderService {
|
|
public class OrderServiceImpl implements OrderService {
|
|
@@ -75,21 +67,16 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if(order.getStatus() != OrderStatusEnum.UNPAID){
|
|
if(order.getStatus() != OrderStatusEnum.UNPAID){
|
|
|
throw BlueWhaleException.orderStatusError();
|
|
throw BlueWhaleException.orderStatusError();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- Coupon coupon = couponRepository.findById(couponId).orElse(null);
|
|
|
|
|
- CouponGroup couponGroup = couponGroupRepository.findById(coupon.getGroupId()).orElse(null);
|
|
|
|
|
- Product product = productRepository.findById(order.getProductId()).orElse(null);
|
|
|
|
|
- if(coupon == null || coupon.getUserId() != securityUtil.getCurrentUser().getId() || couponGroup == null || couponGroup.getStoreId() != product.getStoreId()){
|
|
|
|
|
- throw BlueWhaleException.couponNotAllowed();
|
|
|
|
|
|
|
+ if (couponId!=0){
|
|
|
|
|
+ Coupon coupon = couponRepository.findById(couponId).get();
|
|
|
|
|
+ if (coupon.getUsed()){
|
|
|
|
|
+ throw BlueWhaleException.couponNotAllowed();
|
|
|
|
|
+ }
|
|
|
|
|
+ coupon.setUsed(true);
|
|
|
|
|
+ couponRepository.save(coupon);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
order.setStatus(OrderStatusEnum.UNSEND);
|
|
order.setStatus(OrderStatusEnum.UNSEND);
|
|
|
- //double price=productRepository.findById(order.getProductId()).get().getPrice();
|
|
|
|
|
- //order.setPaid(price*order.getAmount());
|
|
|
|
|
order.setPaid(calculate(orderId,couponId));
|
|
order.setPaid(calculate(orderId,couponId));
|
|
|
- orderRepository.save(order);
|
|
|
|
|
- coupon.setUsed(true);
|
|
|
|
|
- couponRepository.save(coupon);
|
|
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -162,27 +149,15 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if(order == null){
|
|
if(order == null){
|
|
|
throw BlueWhaleException.orderNotExists();
|
|
throw BlueWhaleException.orderNotExists();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- Coupon coupon = couponRepository.findById(couponId).orElse(null);
|
|
|
|
|
- CouponGroup couponGroup = couponGroupRepository.findById(coupon.getGroupId()).orElse(null);
|
|
|
|
|
- Product product = productRepository.findById(order.getProductId()).orElse(null);
|
|
|
|
|
- if(coupon == null || coupon.getUserId() != securityUtil.getCurrentUser().getId() || couponGroup == null || couponGroup.getStoreId() != product.getStoreId()){
|
|
|
|
|
- throw BlueWhaleException.couponNotAllowed();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- Double originalPrice = product.getPrice()*order.getAmount();
|
|
|
|
|
- if(couponGroup.getSatisfaction()>originalPrice){
|
|
|
|
|
- throw BlueWhaleException.couponNotAllowed();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- switch (couponGroup.getType()){
|
|
|
|
|
- case FULL_REDUCTION:
|
|
|
|
|
- return originalPrice - couponGroup.getMinus();
|
|
|
|
|
- case SPECIAL:
|
|
|
|
|
- // 待完善
|
|
|
|
|
- return originalPrice;
|
|
|
|
|
|
|
+ Product product = productRepository.findById(order.getProductId()).get();
|
|
|
|
|
+ Double origin=order.getAmount()*product.getPrice();
|
|
|
|
|
+ if (couponId==0){
|
|
|
|
|
+ return origin;
|
|
|
}
|
|
}
|
|
|
- throw BlueWhaleException.couponNotAllowed();
|
|
|
|
|
|
|
+ Coupon coupon = couponRepository.findById(couponId).get();
|
|
|
|
|
+ CouponGroup couponGroup = couponGroupRepository.findById(coupon.getGroupId()).get();
|
|
|
|
|
+ Context context=new Context(origin,couponGroup.getType(),couponGroup.getSatisfaction(),couponGroup.getMinus());
|
|
|
|
|
+ return context.calculate();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private OrderVO wrapWithProductId(OrderVO orderVO){
|
|
private OrderVO wrapWithProductId(OrderVO orderVO){
|