|
|
@@ -5,7 +5,10 @@ import com.seecoder.BlueWhale.enums.OrderStatusEnum;
|
|
|
import com.seecoder.BlueWhale.exception.BlueWhaleException;
|
|
|
import com.seecoder.BlueWhale.po.*;
|
|
|
import com.seecoder.BlueWhale.repository.*;
|
|
|
+import com.seecoder.BlueWhale.service.CouponService;
|
|
|
import com.seecoder.BlueWhale.service.OrderService;
|
|
|
+import com.seecoder.BlueWhale.service.ProductService;
|
|
|
+import com.seecoder.BlueWhale.service.StoreService;
|
|
|
import com.seecoder.BlueWhale.serviceImpl.strategy.Context;
|
|
|
import com.seecoder.BlueWhale.util.SecurityUtil;
|
|
|
import com.seecoder.BlueWhale.vo.OrderVO;
|
|
|
@@ -26,16 +29,13 @@ public class OrderServiceImpl implements OrderService {
|
|
|
SecurityUtil securityUtil;
|
|
|
|
|
|
@Autowired
|
|
|
- StoreRepository storeRepository;
|
|
|
+ StoreService storeService;
|
|
|
|
|
|
@Autowired
|
|
|
- ProductRepository productRepository;
|
|
|
+ ProductService productService;
|
|
|
|
|
|
@Autowired
|
|
|
- CouponRepository couponRepository;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- CouponGroupRepository couponGroupRepository;
|
|
|
+ CouponService couponService;
|
|
|
|
|
|
@Autowired
|
|
|
AlipayTools alipayTools;
|
|
|
@@ -61,7 +61,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
case STAFF:
|
|
|
Integer storeId=user.getStoreId();
|
|
|
orders = orderRepository.findAll().stream()
|
|
|
- .filter(x-> storeId.equals(productRepository.findById(x.getProductId()).get().getStoreId()))
|
|
|
+ .filter(x-> storeId.equals(productService.getProduct(x.getProductId()).getStoreId()))
|
|
|
.collect(Collectors.toList());
|
|
|
break;
|
|
|
case MANAGER:
|
|
|
@@ -91,15 +91,15 @@ public class OrderServiceImpl implements OrderService {
|
|
|
order.setStatus(OrderStatusEnum.UNSEND);
|
|
|
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();
|
|
|
+ Coupon coupon = couponService.getCoupon(couponId);
|
|
|
+ CouponGroup couponGroup=couponService.getCouponGroup(coupon.getGroupId());
|
|
|
+ Product product=productService.getProduct(order.getProductId()).toPO();
|
|
|
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);
|
|
|
+ couponService.update(coupon.toVO());
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -113,7 +113,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if(order.getStatus() != OrderStatusEnum.UNSEND){
|
|
|
throw BlueWhaleException.orderStatusError();
|
|
|
}
|
|
|
- Product product = productRepository.findById(order.getProductId()).get();
|
|
|
+ Product product=productService.getProduct(order.getProductId()).toPO();
|
|
|
if (product.getStock()<order.getAmount()){
|
|
|
throw BlueWhaleException.stockNotEnough();
|
|
|
}
|
|
|
@@ -121,7 +121,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
orderRepository.save(order);
|
|
|
product.setSalesAmount(product.getSalesAmount()+order.getAmount());
|
|
|
product.setStock(product.getStock()-order.getAmount());
|
|
|
- productRepository.save(product);
|
|
|
+ productService.update(product.toVO());
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -154,17 +154,17 @@ public class OrderServiceImpl implements OrderService {
|
|
|
order.setFinishTime(new Date());
|
|
|
orderRepository.save(order);
|
|
|
|
|
|
- Product product = productRepository.findById(order.getProductId()).get();
|
|
|
+ Product product = productService.getProduct(order.getProductId()).toPO();
|
|
|
Double currentProductRating = product.getRating();
|
|
|
product.setRating((currentProductRating*product.getNumber()+rating)/(product.getNumber()+1));
|
|
|
product.setNumber(product.getNumber()+1);
|
|
|
- productRepository.save(product);
|
|
|
+ productService.update(product.toVO());
|
|
|
|
|
|
- Store store = storeRepository.findById(product.getStoreId()).get();
|
|
|
+ Store store = storeService.getStore(product.getStoreId()).toPO();
|
|
|
Double currentStoreRating = store.getRating();
|
|
|
store.setRating((currentStoreRating*store.getNumber()+rating)/(store.getNumber()+1));
|
|
|
store.setNumber(store.getNumber()+1);
|
|
|
- storeRepository.save(store);
|
|
|
+ storeService.update(store.toVO());
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -174,23 +174,28 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if(order == null){
|
|
|
throw BlueWhaleException.orderNotExists();
|
|
|
}
|
|
|
- Product product = productRepository.findById(order.getProductId()).get();
|
|
|
+ Product product = productService.getProduct(order.getProductId()).toPO();
|
|
|
Double origin=order.getAmount()*product.getPrice();
|
|
|
if (couponId==0){
|
|
|
return origin;
|
|
|
}
|
|
|
- Coupon coupon = couponRepository.findById(couponId).get();
|
|
|
- CouponGroup couponGroup = couponGroupRepository.findById(coupon.getGroupId()).get();
|
|
|
+ Coupon coupon = couponService.getCoupon(couponId);
|
|
|
+ CouponGroup couponGroup = couponService.getCouponGroup(coupon.getGroupId());
|
|
|
Context context=new Context(origin,couponGroup.getType(),couponGroup.getSatisfaction(),couponGroup.getMinus());
|
|
|
return context.calculate();
|
|
|
}
|
|
|
|
|
|
private OrderVO wrapWithProductId(OrderVO orderVO){
|
|
|
Integer productId=orderVO.getProductId();
|
|
|
- Product product=productRepository.findById(productId).get();
|
|
|
+ Product product = productService.getProduct(productId).toPO();
|
|
|
orderVO.setProductName(product.getName());
|
|
|
orderVO.setPrice(product.getPrice());
|
|
|
orderVO.setStoreId(product.getStoreId());
|
|
|
return orderVO;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Order> getByProductIdAndFinishTimeNotNull(Integer storeId) {
|
|
|
+ return orderRepository.findByProductIdAndFinishTimeNotNull(storeId);
|
|
|
+ }
|
|
|
}
|