|
@@ -379,7 +379,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
FsUserAddress address= userAddressMapper.selectFsUserAddressByDefaultAddress(uid);
|
|
|
List<FsStoreCartQueryVO> carts=cartMapper.selectFsStoreCartListByIds(cartParam.getCartIds());
|
|
|
for (FsStoreCartQueryVO cart : carts) {
|
|
|
- if (cart.getChangePrice() != null && BigDecimal.ZERO.compareTo(cart.getChangePrice())<0){
|
|
|
+ if (cart.getChangePrice() != null && BigDecimal.ZERO.compareTo(cart.getChangePrice())<=0){
|
|
|
cart.setPrice(cart.getChangePrice());
|
|
|
//删除改价
|
|
|
FsStoreCart fsStoreCart = new FsStoreCart();
|
|
@@ -391,7 +391,25 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
String uuid = IdUtil.randomUUID();
|
|
|
redisCache.setCacheObject("orderKey:"+uuid, cartParam.getCartIds(), 300, TimeUnit.SECONDS);
|
|
|
redisCache.setCacheObject("orderCarts:"+uuid, carts, 300, TimeUnit.SECONDS);
|
|
|
- return R.ok().put("orderKey",uuid).put("address",address).put("carts",carts);
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotBlank(cartParam.getGiftCartIds())){
|
|
|
+ giftCarts=cartMapper.selectFsStoreCartListByIds(cartParam.getGiftCartIds());
|
|
|
+ if (giftCarts != null){
|
|
|
+ for (FsStoreCartQueryVO cart : giftCarts) {
|
|
|
+ if (cart.getChangePrice() != null && BigDecimal.ZERO.compareTo(cart.getChangePrice())<=0){
|
|
|
+ cart.setPrice(cart.getChangePrice());
|
|
|
+ //删除改价
|
|
|
+ FsStoreCart fsStoreCart = new FsStoreCart();
|
|
|
+ fsStoreCart.setId(cart.getId());
|
|
|
+ fsStoreCart.setChangePrice(BigDecimal.ZERO);
|
|
|
+ cartMapper.updateFsStoreCart(fsStoreCart);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisCache.setCacheObject("orderGiftCarts:"+uuid, giftCarts, 300, TimeUnit.SECONDS);
|
|
|
+ redisCache.setCacheObject("orderGiftKey:"+uuid, cartParam.getGiftCartIds(), 300, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.ok().put("orderKey",uuid).put("address",address).put("carts",carts).put("giftCarts",giftCarts);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -402,6 +420,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
throw new CustomException("订单已过期",501);
|
|
|
}
|
|
|
List<FsStoreCartQueryVO> carts = redisCache.getCacheObject("orderCarts:" + param.getOrderKey());
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = redisCache.getCacheObject("orderGiftCarts:" + param.getOrderKey());
|
|
|
+ if (giftCarts != null) {
|
|
|
+ carts.addAll(giftCarts);
|
|
|
+ }
|
|
|
BigDecimal payPrice=getOrderSumPrice(carts,"truePrice");
|
|
|
if(StringUtils.isNotEmpty(param.getCreateOrderKey()))
|
|
|
{
|
|
@@ -502,6 +524,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
if(cartIds!=null){
|
|
|
//获取购物车列表
|
|
|
List<FsStoreCartQueryVO> carts = redisCache.getCacheObject("orderCarts:" + param.getOrderKey());
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = redisCache.getCacheObject("orderGiftCarts:" + param.getOrderKey());
|
|
|
+ if (giftCarts != null){
|
|
|
+ carts.addAll(giftCarts);
|
|
|
+ }
|
|
|
//获取地址
|
|
|
FsUserAddress address=userAddressMapper.selectFsUserAddressById(param.getAddressId());
|
|
|
//生成分布式唯一值
|
|
@@ -687,6 +713,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
else{
|
|
|
fsStoreCartDTO.setImage(vo.getProductAttrImage());
|
|
|
}
|
|
|
+ fsStoreCartDTO.setIsGift(vo.getIsGift());
|
|
|
|
|
|
FsStoreOrderItem item=new FsStoreOrderItem();
|
|
|
item.setOrderId(storeOrder.getId());
|
|
@@ -713,7 +740,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
|
|
|
//删除缓存
|
|
|
redisCache.deleteObject("orderKey:" + param.getOrderKey());
|
|
|
+ redisCache.deleteObject("orderGiftKey:" + param.getOrderKey());
|
|
|
redisCache.deleteObject("orderCarts:" + param.getOrderKey());
|
|
|
+ redisCache.deleteObject("orderGiftCarts:" + param.getOrderKey());
|
|
|
|
|
|
//添加记录
|
|
|
orderStatusService.create(storeOrder.getId(), OrderLogEnum.CREATE_ORDER.getValue(),
|
|
@@ -743,6 +772,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
if(StringUtils.isNotEmpty(createOrderKey)){
|
|
|
redisCache.deleteObject("createOrderKey:"+ createOrderKey);
|
|
|
redisCache.deleteObject("orderCarts:" + createOrderKey);
|
|
|
+ redisCache.deleteObject("orderGiftCarts:" + createOrderKey);
|
|
|
redisCache.deleteObject("createOrderMoney:" + createOrderKey);
|
|
|
//货到付款自定义金额 key改为id存储
|
|
|
BigDecimal amount=redisCache.getCacheObject("createOrderAmount:"+createOrderKey);
|
|
@@ -1290,6 +1320,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
}
|
|
|
//删除缓存
|
|
|
redisCache.deleteObject("orderKey:" + param.getOrderKey());
|
|
|
+ redisCache.deleteObject("orderGiftKey:" + param.getOrderKey());
|
|
|
//添加记录
|
|
|
orderStatusService.create(storeOrder.getId(), OrderLogEnum.CREATE_ORDER.getValue(),
|
|
|
OrderLogEnum.CREATE_ORDER.getDesc());
|
|
@@ -2019,11 +2050,19 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public R createSalesOrder(CompanyUser companyUser, String cateIds,Integer orderType,Integer orderMedium) {
|
|
|
+ public R createSalesOrder(CompanyUser companyUser, String cateIds,String giftCateIds,Integer orderType,Integer orderMedium) {
|
|
|
List<FsStoreCartQueryVO> carts=cartMapper.selectFsStoreCartListByIds(cateIds);
|
|
|
+
|
|
|
+
|
|
|
String uuid = IdUtil.randomUUID();
|
|
|
redisCache.setCacheObject("createOrderKey:"+uuid, companyUser.getCompanyId()+"-"+companyUser.getUserId(), 24, TimeUnit.HOURS);
|
|
|
redisCache.setCacheObject("orderCarts:"+uuid, carts, 24, TimeUnit.HOURS);
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = new ArrayList<>();
|
|
|
+ //赠品
|
|
|
+ if (giftCateIds != null){
|
|
|
+ giftCarts=cartMapper.selectFsStoreCartListByIds(giftCateIds);
|
|
|
+ redisCache.setCacheObject("orderGiftCarts:"+uuid, giftCarts, 24, TimeUnit.HOURS);
|
|
|
+ }
|
|
|
|
|
|
//2025.7.23 倍力优需求 制单添加订单类型,媒体来源(非必填)
|
|
|
if (orderType != null || orderMedium != null) {
|
|
@@ -2038,19 +2077,38 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
for(FsStoreCartQueryVO vo:carts){
|
|
|
totalMoney=totalMoney.add(vo.getPrice().multiply(new BigDecimal(vo.getCartNum().toString())));
|
|
|
}
|
|
|
+ if (giftCateIds != null){
|
|
|
+ for(FsStoreCartQueryVO vo:giftCarts){
|
|
|
+ totalMoney=totalMoney.add(vo.getPrice().multiply(new BigDecimal(vo.getCartNum().toString())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
redisCache.setCacheObject("createOrderMoney:"+uuid, totalMoney, 24, TimeUnit.HOURS);
|
|
|
- return R.ok().put("orderKey",uuid).put("carts",carts);
|
|
|
+ return R.ok().put("orderKey",uuid).put("carts",carts).put("giftCarts",giftCarts);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public R getSalesOrder(String createOrderKey) {
|
|
|
+ public R getSalesOrder(String createOrderKey,Long userId) {
|
|
|
String key=redisCache.getCacheObject("createOrderKey:"+createOrderKey);
|
|
|
List<FsStoreCartQueryVO> carts = redisCache.getCacheObject("orderCarts:" + createOrderKey);
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = redisCache.getCacheObject("orderGiftCarts:" + createOrderKey);
|
|
|
BigDecimal money=redisCache.getCacheObject("createOrderMoney:"+createOrderKey);
|
|
|
if (StringUtils.isEmpty(key)) {
|
|
|
throw new CustomException("订单已过期",501);
|
|
|
}
|
|
|
- return R.ok().put("carts",carts).put("totalMoney",money);
|
|
|
+ if(giftCarts == null){
|
|
|
+ giftCarts=cartMapper.selectFsStoreGiftCartList(userId);
|
|
|
+ if (giftCarts != null && !giftCarts.isEmpty()){
|
|
|
+ //计算总价
|
|
|
+ for(FsStoreCartQueryVO vo:giftCarts){
|
|
|
+ money=money.add(vo.getPrice().multiply(new BigDecimal(vo.getCartNum().toString())));
|
|
|
+ }
|
|
|
+// redisCache.setCacheObject("orderGiftCarts:"+createOrderKey, giftCarts, 24, TimeUnit.HOURS);
|
|
|
+// redisCache.setCacheObject("createOrderMoney:"+createOrderKey, money, 24, TimeUnit.HOURS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok().put("carts",carts).put("totalMoney",money).put("giftCarts",giftCarts);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -2077,11 +2135,32 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
cartMapper.insertFsStoreCart(storeCart);
|
|
|
ids.add(storeCart.getId());
|
|
|
}
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = redisCache.getCacheObject("orderGiftCarts:" + createOrderKey);
|
|
|
+ List<Long> giftIds=new ArrayList<>();
|
|
|
+ if(giftCarts != null){
|
|
|
+ for(FsStoreCartQueryVO vo : giftCarts){
|
|
|
+ FsStoreCart storeCart = FsStoreCart.builder()
|
|
|
+ .cartNum(vo.getCartNum())
|
|
|
+ .productAttrValueId(vo.getProductAttrValueId())
|
|
|
+ .productId(vo.getProductId())
|
|
|
+ .userId(userId)
|
|
|
+ .isPay(0)
|
|
|
+ .isDel(0)
|
|
|
+ .isBuy(1)
|
|
|
+ .changePrice(vo.getPrice())
|
|
|
+ .isGift(1)
|
|
|
+ .build();
|
|
|
+ storeCart.setCreateTime(new Date());
|
|
|
+ cartMapper.insertFsStoreCart(storeCart);
|
|
|
+ giftIds.add(storeCart.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//删除REDIS
|
|
|
// redisCache.deleteObject("createOrderKey:"+createOrderKey);
|
|
|
// redisCache.deleteObject("orderCarts:" + createOrderKey);
|
|
|
String[] idArr=key.split("-");
|
|
|
- return R.ok().put("cartIds",ids).put("companyId",idArr[0]).put("companyUserId",idArr[1]);
|
|
|
+ return R.ok().put("cartIds",ids).put("companyId",idArr[0]).put("companyUserId",idArr[1]).put("giftCartIds",giftIds);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -2784,7 +2863,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
BigDecimal totalMoney= BigDecimal.ZERO;
|
|
|
//新购物车明细
|
|
|
for(FsStoreCartQueryVO vo:carts){
|
|
|
- //单个价格不能为0
|
|
|
BigDecimal price = vo.getPrice();
|
|
|
if (price==null || price.compareTo(BigDecimal.ZERO)<0){
|
|
|
return R.error("商品单价不能小于0");
|
|
@@ -2797,10 +2875,28 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
//计算总价
|
|
|
totalMoney=totalMoney.add(price.multiply(new BigDecimal(vo.getCartNum().toString())));
|
|
|
}
|
|
|
+ List<FsStoreCartQueryVO> giftCarts = param.getGiftCarts();
|
|
|
+ if (giftCarts != null && !giftCarts.isEmpty()) {
|
|
|
+ for(FsStoreCartQueryVO vo:giftCarts){
|
|
|
+ BigDecimal price = vo.getPrice();
|
|
|
+ if (price==null || price.compareTo(BigDecimal.ZERO)<0){
|
|
|
+ return R.error("商品单价不能小于0");
|
|
|
+ }
|
|
|
+ //更新购物车表
|
|
|
+ FsStoreCart storeCart = new FsStoreCart();
|
|
|
+ storeCart.setId(vo.getId());
|
|
|
+ storeCart.setChangePrice(price);
|
|
|
+ cartMapper.updateFsStoreCart(storeCart);
|
|
|
+ //计算总价
|
|
|
+ totalMoney=totalMoney.add(price.multiply(new BigDecimal(vo.getCartNum().toString())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
redisCache.setCacheObject("createOrderMoney:"+createOrderKey, totalMoney, 24, TimeUnit.HOURS);
|
|
|
//更新redis的购物车明细
|
|
|
redisCache.setCacheObject("orderCarts:" + createOrderKey,carts,24, TimeUnit.HOURS);
|
|
|
+ redisCache.setCacheObject("orderGiftCarts:" + createOrderKey,giftCarts,24, TimeUnit.HOURS);
|
|
|
|
|
|
return R.ok();
|
|
|
}
|