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

Optimized coupons

上级 3799d742
......@@ -35,6 +35,7 @@ import static org.springframework.data.domain.Sort.Order.desc;
@RestController
@RequestMapping("/order")
public class OrderController extends Controller {
private final TbCfToicouponRepository couponRepository;
private final TbCfOrderRepository repository;
private final TbCfCartRecordRRepository cartRepository;
private final TbCfAddressRepository addressRepository;
......@@ -47,7 +48,8 @@ public class OrderController extends Controller {
private final AuthenticationUser user;
private static Logger logger = LoggerFactory.getLogger(OrderController.class);
public OrderController(TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemSkuRepository itemSkuRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) {
public OrderController(TbCfToicouponRepository couponRepository, TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemSkuRepository itemSkuRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) {
this.couponRepository = couponRepository;
this.repository = repository;
this.cartRepository = cartRepository;
this.addressRepository = addressRepository;
......@@ -60,7 +62,7 @@ public class OrderController extends Controller {
this.user = user;
}
private TbCfCartRecordR getCart(TbCfStationItem item, String itemSku, Integer itemNum, BigDecimal price,String itemSkuId,String image) {
private TbCfCartRecordR getCart(TbCfStationItem item, String itemSku, Integer itemNum, BigDecimal price, String itemSkuId, String image) {
TbCfCartRecordR record = new TbCfCartRecordR();
......@@ -73,7 +75,7 @@ public class OrderController extends Controller {
record.setTemplate(item.getExpress());
record.setItemTitle(item.getItemName());
record.setItemPrice(price);
record.setItemImg( image == null ? item.catchSingleImage() : image );
record.setItemImg(image == null ? item.catchSingleImage() : image);
return record;
}
......@@ -99,6 +101,7 @@ public class OrderController extends Controller {
@RequestParam(value = "toitableId", required = false) String toitableId) {
TbCfOrder order = new TbCfOrder();
Optional<TbCfExpressTemplate> templateOptional = templateRepository.findFirstByIsDefault(1);
templateOptional.ifPresent(order::setDefaultTemplate);
......@@ -119,10 +122,11 @@ public class OrderController extends Controller {
TbCfStationItem item = byId.get();
List<TbCfCartRecordR> list = new ArrayList<>();
TbCfItemSkus itemSkus = skuOptional.get();
list.add(getCart(item, itemSku, itemNum, itemSkus.getSkuPrice(),itemSkuId,itemSkus.getSkuImg()));
BigDecimal orderPrice = itemSkus.getSkuPrice().multiply(new BigDecimal(itemNum));
Map<String, Object> map = queryUserAvailableCoupons(orderPrice);
list.add(getCart(item, itemSku, itemNum, itemSkus.getSkuPrice(), itemSkuId, itemSkus.getSkuImg()));
order.setCouponId(toitableId);
if (toitableId != null && !toitableId.isEmpty()) {
......@@ -135,7 +139,7 @@ public class OrderController extends Controller {
}
}
order.setCouponMap(map);
order.getItemOrderListFromCartList(list, itemRepository);
return new Result<>(order);
......@@ -145,13 +149,19 @@ public class OrderController extends Controller {
public Result<TbCfOrder> settleAccount(@RequestBody String[] ids, @RequestParam(value = "toitableId", required = false) String toitableId) {
//String userId = user.userId();
List<TbCfCartRecordR> allByUserId = cartRepository.findAllByCartRecordIdIn(ids);
BigDecimal orderPrice = BigDecimal.ZERO;
for (TbCfCartRecordR cart : allByUserId) {
orderPrice = orderPrice.add(cart.getItemPrice().multiply(new BigDecimal(cart.getItemNum())));
}
Map<String, Object> couponMap = queryUserAvailableCoupons(orderPrice);
if (allByUserId.isEmpty()) {
return new Result<>(ResultCodeEnum.VALIDATE_ERROR.getCode(), "There are no items in the shopping cart");
}
TbCfOrder order = new TbCfOrder();
order.setCouponMap(couponMap);
Optional<TbCfExpressTemplate> templateOptional = templateRepository.findFirstByIsDefault(1);
templateOptional.ifPresent(order::setDefaultTemplate);
......@@ -208,6 +218,7 @@ public class OrderController extends Controller {
boolean payNow = !noPayNow;
// BigDecimal orderPrice=BigDecimal.ZERO;
if (payNow) {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
......@@ -229,8 +240,8 @@ public class OrderController extends Controller {
// }
TbCfItemSkus skuObj = skuOptional.get();
allByUserId.add(getCart(stationItem, itemSku, itemNum, skuObj.getSkuPrice(),itemSkuId,skuObj.getSkuImg()));
// orderPrice=skuObj.getSkuPrice().multiply(new BigDecimal(itemNum));
allByUserId.add(getCart(stationItem, itemSku, itemNum, skuObj.getSkuPrice(), itemSkuId, skuObj.getSkuImg()));
} else {
System.out.println(Arrays.toString(tbCfOrder.getIds()));
......@@ -242,8 +253,12 @@ public class OrderController extends Controller {
// if (!success) {
// return new Result<>(v_code, "Goods in short stock!");
// }
// }
// for (TbCfCartRecordR cart : allByUserId) {
// orderPrice = orderPrice.add(cart.getItemPrice().multiply(new BigDecimal(cart.getItemNum())));
// }
}
// Map<String, Object> map = queryUserAvailableCoupons(orderPrice);
String addressId = tbCfOrder.getDeliveryAddressId();
......@@ -260,7 +275,7 @@ public class OrderController extends Controller {
TbCfOrder order = new TbCfOrder();
// order.setCouponMap(map);
order.setUserName(user.display());
TbCfAddress address = addressOptional.get();
......@@ -305,7 +320,6 @@ public class OrderController extends Controller {
TbCfOrder save = repository.save(order);
if (tbCfToicoupon != null) {
tbCfToicoupon.setEnableFlag(0);
toicouponRepository.save(tbCfToicoupon);
......@@ -317,10 +331,10 @@ public class OrderController extends Controller {
String[] strings = collect.toArray(new String[]{});
if(payNow){
cartRepository.updateItemQuantity_(itemId,itemNum);
cartRepository.updateSkuQuantity_(itemSkuId,itemNum);
}else {
if (payNow) {
cartRepository.updateItemQuantity_(itemId, itemNum);
cartRepository.updateSkuQuantity_(itemSkuId, itemNum);
} else {
cartRepository.updateSkuQuantity(strings);
cartRepository.updateItemQuantity(strings);
}
......@@ -365,9 +379,9 @@ public class OrderController extends Controller {
Page<OrderCount> list;
PageRequest of = PageRequest.of(pageNum, pageSize, sort(sort));
String userId = user.getUserId();
if(orderStatus != null){
list = repository.findAllByUserIdWithStatus(userId,user,orderStatus,of);
}else
if (orderStatus != null) {
list = repository.findAllByUserIdWithStatus(userId, user, orderStatus, of);
} else
list = repository.findAllByUserId(userId, user, of);
list.forEach(v -> v.getOrder().setCommentCount(v.getCommented()));
......@@ -472,7 +486,7 @@ public class OrderController extends Controller {
String minutes = "160";
Date current = new Date();
if( !optionalTbCfOrder.isPresent() ){
if (!optionalTbCfOrder.isPresent()) {
return new Result<>(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order not found");
}
......@@ -483,13 +497,13 @@ public class OrderController extends Controller {
Calendar instance = Calendar.getInstance();
instance.setTime(orderTime);
instance.add(Calendar.DATE,1);
instance.add(Calendar.DATE, 1);
long time = instance.getTime().getTime();
long difference = time - current.getTime();
if( difference > 0 ) {
if (difference > 0) {
Duration duration = Duration.ofMillis(difference);
......@@ -506,4 +520,25 @@ public class OrderController extends Controller {
return new Result<>(tbCfOrder, "Order found !");
}
public Map<String, Object> queryUserAvailableCoupons(BigDecimal orderPrice) {
Map<String, Object> couponMap = new HashMap<>();
//可使用的优惠券
LinkedList<TbCfToicoupon> availableCoupon = new LinkedList();
//不可使用的优惠券
LinkedList<TbCfToicoupon> unAvailableCoupon = new LinkedList();
List<TbCfToicoupon> couponList = couponRepository.queryUserAvailableCoupon(user.userId());
couponList.forEach(coupon -> {
boolean available = orderPrice.compareTo(coupon.withAmount()) >= 0;
if (available) {
availableCoupon.add(coupon);
} else {
unAvailableCoupon.add(coupon);
}
});
couponMap.put("availableCoupon", availableCoupon);
couponMap.put("unAvailableCoupon", unAvailableCoupon);
return couponMap;
}
}
......@@ -155,7 +155,18 @@ public class TbCfOrder {
*/
private String remarkInfo;
// @JsonIgnore
@Transient
private Map<String,Object> couponMap;
public Map<String, Object> getCouponMap() {
return couponMap;
}
public void setCouponMap(Map<String, Object> couponMap) {
this.couponMap = couponMap;
}
// @JsonIgnore
// @JoinColumn(columnDefinition = "user_id",name = "user_id")
// @ManyToOne(fetch = FetchType.LAZY)
// private TbCfUserInfo userInfo;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论