提交 a33b827a authored 作者: 吴德鹏's avatar 吴德鹏

减库存

上级 debc129e
...@@ -10,6 +10,8 @@ import com.example.afrishop_v3.repository.*; ...@@ -10,6 +10,8 @@ import com.example.afrishop_v3.repository.*;
import com.example.afrishop_v3.security.services.AuthenticationUser; import com.example.afrishop_v3.security.services.AuthenticationUser;
import com.example.afrishop_v3.util.IdUtil; import com.example.afrishop_v3.util.IdUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
...@@ -40,6 +42,7 @@ public class OrderController extends Controller { ...@@ -40,6 +42,7 @@ public class OrderController extends Controller {
private final TbCfExpressTemplateRepository templateRepository; private final TbCfExpressTemplateRepository templateRepository;
private final TbCfExchangeRepository exchangeRepository; private final TbCfExchangeRepository exchangeRepository;
private final AuthenticationUser user; private final AuthenticationUser user;
private static Logger logger = LoggerFactory.getLogger(OrderController.class);
public OrderController(TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) { public OrderController(TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) {
this.repository = repository; this.repository = repository;
...@@ -53,7 +56,7 @@ public class OrderController extends Controller { ...@@ -53,7 +56,7 @@ public class OrderController extends Controller {
this.user = user; this.user = user;
} }
private TbCfCartRecordR getCart(TbCfStationItem item, String itemSku, Integer itemNum,Double price) { private TbCfCartRecordR getCart(TbCfStationItem item, String itemSku, Integer itemNum, Double price) {
TbCfCartRecordR record = new TbCfCartRecordR(); TbCfCartRecordR record = new TbCfCartRecordR();
...@@ -72,10 +75,10 @@ public class OrderController extends Controller { ...@@ -72,10 +75,10 @@ public class OrderController extends Controller {
@GetMapping("currencyConversion") @GetMapping("currencyConversion")
public Result convert(@RequestParam("price") BigDecimal price,@RequestParam("currency") String currency){ public Result convert(@RequestParam("price") BigDecimal price, @RequestParam("currency") String currency) {
TbCfExchange exchangeEntity = exchangeRepository.findByExchangeCurrency(currency.toUpperCase()); TbCfExchange exchangeEntity = exchangeRepository.findByExchangeCurrency(currency.toUpperCase());
if( exchangeEntity == null){ if (exchangeEntity == null) {
return new Result(ResultCodeEnum.ILLEGAL_ARGUMENT.getCode(),"Currency Not Found"); return new Result(ResultCodeEnum.ILLEGAL_ARGUMENT.getCode(), "Currency Not Found");
} }
BigDecimal rate = exchangeEntity.getExchangeRate(); BigDecimal rate = exchangeEntity.getExchangeRate();
BigDecimal resultPrice = price.multiply(rate); BigDecimal resultPrice = price.multiply(rate);
...@@ -86,7 +89,7 @@ public class OrderController extends Controller { ...@@ -86,7 +89,7 @@ public class OrderController extends Controller {
@GetMapping("/payNow") @GetMapping("/payNow")
public Result<TbCfOrder> payNow(@RequestParam("itemId") String itemId, public Result<TbCfOrder> payNow(@RequestParam("itemId") String itemId,
@RequestParam("itemNum") Integer itemNum, @RequestParam("itemNum") Integer itemNum,
@RequestParam(value = "itemSku",defaultValue = "") String itemSku, @RequestParam(value = "itemSku", defaultValue = "") String itemSku,
@RequestParam(value = "itemPrice") Double itemPrice, @RequestParam(value = "itemPrice") Double itemPrice,
@RequestParam(value = "toitableId", required = false) String toitableId) { @RequestParam(value = "toitableId", required = false) String toitableId) {
TbCfOrder order = new TbCfOrder(); TbCfOrder order = new TbCfOrder();
...@@ -106,21 +109,21 @@ public class OrderController extends Controller { ...@@ -106,21 +109,21 @@ public class OrderController extends Controller {
List<TbCfCartRecordR> list = new ArrayList<>(); List<TbCfCartRecordR> list = new ArrayList<>();
list.add(getCart(item, itemSku, itemNum,itemPrice)); list.add(getCart(item, itemSku, itemNum, itemPrice));
order.setCouponId(toitableId); order.setCouponId(toitableId);
if (toitableId != null && !toitableId.isEmpty()) { if (toitableId != null && !toitableId.isEmpty()) {
Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(toitableId); Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(toitableId);
if( couponOptional.isPresent() ){ if (couponOptional.isPresent()) {
TbCfCoupon coupon = couponOptional.get().getCoupon(); TbCfCoupon coupon = couponOptional.get().getCoupon();
order.setCoupon(coupon); order.setCoupon(coupon);
} }
} }
order.getItemOrderListFromCartList(list,itemRepository); order.getItemOrderListFromCartList(list, itemRepository);
return new Result<>(order); return new Result<>(order);
} }
...@@ -145,21 +148,21 @@ public class OrderController extends Controller { ...@@ -145,21 +148,21 @@ public class OrderController extends Controller {
Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(toitableId); Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(toitableId);
if( couponOptional.isPresent() ){ if (couponOptional.isPresent()) {
TbCfCoupon coupon = couponOptional.get().getCoupon(); TbCfCoupon coupon = couponOptional.get().getCoupon();
order.setCoupon(coupon); order.setCoupon(coupon);
} }
} }
order.getItemOrderListFromCartList(allByUserId,itemRepository); order.getItemOrderListFromCartList(allByUserId, itemRepository);
return new Result<>(order); return new Result<>(order);
} }
@GetMapping(value = "currentTime") @GetMapping(value = "currentTime")
public Result<Date> getTime(){ public Result<Date> getTime() {
return new Result<>(new Date()); return new Result<>(new Date());
} }
...@@ -168,9 +171,9 @@ public class OrderController extends Controller { ...@@ -168,9 +171,9 @@ public class OrderController extends Controller {
public Result<TbCfOrder> placeOrder(@RequestBody OrderRequest tbCfOrder, public Result<TbCfOrder> placeOrder(@RequestBody OrderRequest tbCfOrder,
@RequestParam(value = "toitableId", required = false) String toitableId, @RequestParam(value = "toitableId", required = false) String toitableId,
@RequestParam(value = "itemId", required = false) String itemId, @RequestParam(value = "itemId", required = false) String itemId,
@RequestParam(value = "itemNum",required = false) Integer itemNum, @RequestParam(value = "itemNum", required = false) Integer itemNum,
@RequestParam(value = "itemSku",required = false) String itemSku, @RequestParam(value = "itemSku", required = false) String itemSku,
@RequestParam(value = "itemPrice",required = false) Double itemPrice, @RequestParam(value = "itemPrice", required = false) Double itemPrice,
@RequestParam(value = "web", required = false) String web) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException { @RequestParam(value = "web", required = false) String web) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException {
TbCfUserInfo user = this.user.user(); TbCfUserInfo user = this.user.user();
String userId = user.getUserId(); String userId = user.getUserId();
...@@ -188,21 +191,29 @@ public class OrderController extends Controller { ...@@ -188,21 +191,29 @@ public class OrderController extends Controller {
return new Result<>(v_code, "Empty body"); return new Result<>(v_code, "Empty body");
List<TbCfCartRecordR> allByUserId = new ArrayList<>(); List<TbCfCartRecordR> allByUserId = new ArrayList<>();
if (!noPayNow) { if (!noPayNow) {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId); Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
if (!byId.isPresent()) if (!byId.isPresent())
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Missing information !"); return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Missing information !");
TbCfStationItem stationItem = byId.get(); TbCfStationItem stationItem = byId.get();
//减库存 Inventory reduction
allByUserId.add(getCart(stationItem, itemSku,itemNum,itemPrice)); subCount(itemId, itemNum);
allByUserId.add(getCart(stationItem, itemSku, itemNum, itemPrice));
} else { } else {
System.out.println(Arrays.toString(tbCfOrder.getIds())); System.out.println(Arrays.toString(tbCfOrder.getIds()));
allByUserId = cartRepository.findAllByCartRecordIdIn(tbCfOrder.getIds()); allByUserId = cartRepository.findAllByCartRecordIdIn(tbCfOrder.getIds());
allByUserId.forEach(cart -> {
String id = cart.getItemId();
Integer num = cart.getItemNum();
subCount(id, num);
});
} }
String addressId = tbCfOrder.getDeliveryAddressId(); String addressId = tbCfOrder.getDeliveryAddressId();
if (addressId == null || addressId.isEmpty()) return new Result<>(v_code, "Address id is required"); if (addressId == null || addressId.isEmpty()) return new Result<>(v_code, "Address id is required");
...@@ -241,7 +252,7 @@ public class OrderController extends Controller { ...@@ -241,7 +252,7 @@ public class OrderController extends Controller {
Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(toitableId); Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(toitableId);
if( couponOptional.isPresent() ){ if (couponOptional.isPresent()) {
tbCfToicoupon = couponOptional.get(); tbCfToicoupon = couponOptional.get();
TbCfCoupon coupon = tbCfToicoupon.getCoupon(); TbCfCoupon coupon = tbCfToicoupon.getCoupon();
order.setCoupon(coupon); order.setCoupon(coupon);
...@@ -258,11 +269,11 @@ public class OrderController extends Controller { ...@@ -258,11 +269,11 @@ public class OrderController extends Controller {
} }
order.getItemOrderListFromCartList(allByUserId,itemRepository); order.getItemOrderListFromCartList(allByUserId, itemRepository);
TbCfOrder save = repository.save(order); TbCfOrder save = repository.save(order);
if( tbCfToicoupon != null ){ if (tbCfToicoupon != null) {
tbCfToicoupon.setEnableFlag(0); tbCfToicoupon.setEnableFlag(0);
toicouponRepository.save(tbCfToicoupon); toicouponRepository.save(tbCfToicoupon);
} }
...@@ -278,13 +289,24 @@ public class OrderController extends Controller { ...@@ -278,13 +289,24 @@ public class OrderController extends Controller {
// implementation of coupon use // implementation of coupon use
if( user.hasFcm() ){ if (user.hasFcm()) {
sendNotification(user.getFcm(),"Order alert !!","Order of $"+order.getRealityPay()+" has been created , proceed with payment"); sendNotification(user.getFcm(), "Order alert !!", "Order of $" + order.getRealityPay() + " has been created , proceed with payment");
} }
return new Result<>(save); return new Result<>(save);
} }
//减库存 Inventory reduction
public void subCount(String itemId, Integer num) {
logger.info("减库存操作开始...");
Optional<TbCfStationItem> itemOptional = itemRepository.findById(itemId);
if (itemOptional.isPresent()) {
TbCfStationItem item = itemOptional.get();
logger.info("商品[" + item.getItemId() + "]原库存:" + item.getItemCount() + ",购买数量:" + num + ",现库存:" + (item.getItemCount() - num));
item.setItemCount(item.getItemCount() - num);
}
}
@GetMapping @GetMapping
public Result getUserOrderList(@RequestParam(value = "num", defaultValue = "0") Integer pageNum, public Result getUserOrderList(@RequestParam(value = "num", defaultValue = "0") Integer pageNum,
@RequestParam(value = "size", defaultValue = "20") Integer pageSize, @RequestParam(value = "size", defaultValue = "20") Integer pageSize,
...@@ -294,7 +316,7 @@ public class OrderController extends Controller { ...@@ -294,7 +316,7 @@ public class OrderController extends Controller {
) { ) {
TbCfUserInfo user = this.user.user(); TbCfUserInfo user = this.user.user();
Page<OrderCount> list = repository.findAllByUserId(user.getUserId(), user, PageRequest.of(pageNum, pageSize, sort(sort))); Page<OrderCount> list = repository.findAllByUserId(user.getUserId(), user, PageRequest.of(pageNum, pageSize, sort(sort)));
list.forEach(v->v.getOrder().setCommentCount(v.getCommented())); list.forEach(v -> v.getOrder().setCommentCount(v.getCommented()));
Page<TbCfOrder> map = list.map(OrderCount::getOrder); Page<TbCfOrder> map = list.map(OrderCount::getOrder);
return new Result<>(map); return new Result<>(map);
} }
...@@ -310,9 +332,9 @@ public class OrderController extends Controller { ...@@ -310,9 +332,9 @@ public class OrderController extends Controller {
order.setOrderStatus(OrderStatusEnum.CLOSE.getValue()); order.setOrderStatus(OrderStatusEnum.CLOSE.getValue());
order.setRemarkInfo(reason); order.setRemarkInfo(reason);
if( order.getCouponId() != null ){ if (order.getCouponId() != null) {
Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(order.getCouponId()); Optional<TbCfToicoupon> couponOptional = toicouponRepository.findById(order.getCouponId());
if ( couponOptional.isPresent() ){ if (couponOptional.isPresent()) {
TbCfToicoupon toicoupon = couponOptional.get(); TbCfToicoupon toicoupon = couponOptional.get();
toicoupon.setEnableFlag(1); toicoupon.setEnableFlag(1);
toicouponRepository.save(toicoupon); toicouponRepository.save(toicoupon);
...@@ -360,8 +382,8 @@ public class OrderController extends Controller { ...@@ -360,8 +382,8 @@ public class OrderController extends Controller {
boolean exists = commentRepository.existsByUserUserIdAndItemId(userId, itemId); boolean exists = commentRepository.existsByUserUserIdAndItemId(userId, itemId);
if( exists ){ if (exists) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Already reviewed this product!"); return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Already reviewed this product!");
} }
comment.setItemId(itemId); comment.setItemId(itemId);
...@@ -377,7 +399,7 @@ public class OrderController extends Controller { ...@@ -377,7 +399,7 @@ public class OrderController extends Controller {
} }
TbCfItemComment save = commentRepository.save(comment); TbCfItemComment save = commentRepository.save(comment);
return new Result<>(save,"Comment on success!"); return new Result<>(save, "Comment on success!");
} }
private Sort sort(String order) { private Sort sort(String order) {
...@@ -387,7 +409,7 @@ public class OrderController extends Controller { ...@@ -387,7 +409,7 @@ public class OrderController extends Controller {
@GetMapping("/details/{orderId}") @GetMapping("/details/{orderId}")
public Result getOrderDetails(@PathVariable("orderId") String orderId){ public Result getOrderDetails(@PathVariable("orderId") String orderId) {
Optional<TbCfOrder> optionalTbCfOrder = repository.findById(orderId); Optional<TbCfOrder> optionalTbCfOrder = repository.findById(orderId);
return optionalTbCfOrder.map(order -> new Result<>(order, "Order found !")).orElseGet(() -> new Result<>(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order not found")); return optionalTbCfOrder.map(order -> new Result<>(order, "Order found !")).orElseGet(() -> new Result<>(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order not found"));
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论