|
@@ -1,12 +1,15 @@
|
|
|
package com.seecoder.BlueWhale.serviceImpl;
|
|
package com.seecoder.BlueWhale.serviceImpl;
|
|
|
|
|
|
|
|
-import com.seecoder.BlueWhale.configure.AlipayTools;
|
|
|
|
|
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.*;
|
|
|
|
|
-import com.seecoder.BlueWhale.repository.*;
|
|
|
|
|
|
|
+import com.seecoder.BlueWhale.po.Order;
|
|
|
|
|
+import com.seecoder.BlueWhale.po.Product;
|
|
|
|
|
+import com.seecoder.BlueWhale.po.Store;
|
|
|
|
|
+import com.seecoder.BlueWhale.po.User;
|
|
|
|
|
+import com.seecoder.BlueWhale.repository.OrderRepository;
|
|
|
|
|
+import com.seecoder.BlueWhale.repository.ProductRepository;
|
|
|
|
|
+import com.seecoder.BlueWhale.repository.StoreRepository;
|
|
|
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.beans.factory.annotation.Autowired;
|
|
@@ -31,15 +34,6 @@ public class OrderServiceImpl implements OrderService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
ProductRepository productRepository;
|
|
ProductRepository productRepository;
|
|
|
|
|
|
|
|
- @Autowired
|
|
|
|
|
- CouponRepository couponRepository;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- CouponGroupRepository couponGroupRepository;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- AlipayTools alipayTools;
|
|
|
|
|
-
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public OrderVO create(OrderVO orderVO) {
|
|
public OrderVO create(OrderVO orderVO) {
|
|
|
Order order = orderVO.toPO();
|
|
Order order = orderVO.toPO();
|
|
@@ -78,7 +72,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public Boolean pay(Integer orderId,Integer couponId) {
|
|
|
|
|
|
|
+ public Boolean pay(Integer orderId) {
|
|
|
User user=securityUtil.getCurrentUser();
|
|
User user=securityUtil.getCurrentUser();
|
|
|
Order order = orderRepository.findById(orderId).orElse(null);
|
|
Order order = orderRepository.findById(orderId).orElse(null);
|
|
|
if(order == null){
|
|
if(order == null){
|
|
@@ -87,20 +81,10 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if(order.getStatus() != OrderStatusEnum.UNPAID){
|
|
if(order.getStatus() != OrderStatusEnum.UNPAID){
|
|
|
throw BlueWhaleException.orderStatusError();
|
|
throw BlueWhaleException.orderStatusError();
|
|
|
}
|
|
}
|
|
|
- order.setPaid(calculate(orderId,couponId));
|
|
|
|
|
|
|
+ Product product=productRepository.findById(order.getProductId()).get();
|
|
|
|
|
+ order.setPaid(product.getPrice()*order.getAmount());
|
|
|
order.setStatus(OrderStatusEnum.UNSEND);
|
|
order.setStatus(OrderStatusEnum.UNSEND);
|
|
|
orderRepository.save(order);
|
|
orderRepository.save(order);
|
|
|
- if (couponId!=0){
|
|
|
|
|
- Coupon coupon = couponRepository.findById(couponId).get();
|
|
|
|
|
- CouponGroup couponGroup=couponGroupRepository.findById(coupon.getGroupId()).get();
|
|
|
|
|
- Product product=productRepository.findById(order.getProductId()).get();
|
|
|
|
|
- if (coupon.getUsed() || !coupon.getUserId().equals(user.getId()) ||
|
|
|
|
|
- couponGroup.getStoreId()>0 && !couponGroup.getStoreId().equals(product.getStoreId())){
|
|
|
|
|
- throw BlueWhaleException.couponNotAllowed();
|
|
|
|
|
- }
|
|
|
|
|
- coupon.setUsed(true);
|
|
|
|
|
- couponRepository.save(coupon);
|
|
|
|
|
- }
|
|
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -168,23 +152,6 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @Override
|
|
|
|
|
- public Double calculate(Integer orderId, Integer couponId) {
|
|
|
|
|
- Order order = orderRepository.findById(orderId).orElse(null);
|
|
|
|
|
- if(order == null){
|
|
|
|
|
- throw BlueWhaleException.orderNotExists();
|
|
|
|
|
- }
|
|
|
|
|
- Product product = productRepository.findById(order.getProductId()).get();
|
|
|
|
|
- Double origin=order.getAmount()*product.getPrice();
|
|
|
|
|
- if (couponId==0){
|
|
|
|
|
- return origin;
|
|
|
|
|
- }
|
|
|
|
|
- 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){
|
|
|
Integer productId=orderVO.getProductId();
|
|
Integer productId=orderVO.getProductId();
|
|
|
Product product=productRepository.findById(productId).get();
|
|
Product product=productRepository.findById(productId).get();
|