开发订单查询
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package com.yovinchen.xlcs.order.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yovinchen.xlcs.common.result.Result;
|
||||
import com.yovinchen.xlcs.model.order.OrderInfo;
|
||||
import com.yovinchen.xlcs.order.service.OrderInfoService;
|
||||
import com.yovinchen.xlcs.vo.order.OrderQueryVo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* ClassName: OrderInfoAdminController
|
||||
* Package: com.yovinchen.xlcs.order.controller
|
||||
*
|
||||
* @author yovinchen
|
||||
* @since 2024/1/30 10:47
|
||||
*/
|
||||
@Api(value = "订单管理", tags = "订单管理")
|
||||
@RestController
|
||||
@RequestMapping("/admin/order/orderInfo")
|
||||
public class OrderInfoAdminController {
|
||||
@Autowired
|
||||
private OrderInfoService orderInfoService;
|
||||
|
||||
@ApiOperation(value = "获取订单分页列表")
|
||||
@GetMapping("{page}/{limit}")
|
||||
public Result<IPage<OrderInfo>> index(@ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page, @ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit, @ApiParam(name = "OrderQueryVo", value = "查询对象", required = false) OrderQueryVo orderQueryVo) {
|
||||
try {
|
||||
Page<OrderInfo> pageParam = new Page<>(page, limit);
|
||||
IPage<OrderInfo> pageModel = orderInfoService.selectPage(pageParam, orderQueryVo);
|
||||
return Result.ok(pageModel);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("获取sku分页列表异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation("获取订单详情信息")
|
||||
@GetMapping("get/{orderId}")
|
||||
public Result<OrderInfo> show(@ApiParam(name = "orderNo", value = "订单id", readOnly = true) @PathVariable Long orderId) {
|
||||
try {
|
||||
OrderInfo orderInfo = orderInfoService.getOrderInfoById(orderId);
|
||||
return Result.ok(orderInfo);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("获取订单详情信息异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -1,12 +1,13 @@
|
||||
package com.yovinchen.xlcs.order.service;
|
||||
|
||||
import com.yovinchen.xlcs.model.order.OrderInfo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderConfirmVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderSubmitVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderUserQueryVo;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.yovinchen.xlcs.model.order.OrderInfo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderConfirmVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderQueryVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderSubmitVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderUserQueryVo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -57,11 +58,20 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
||||
void orderPay(String orderNo);
|
||||
|
||||
/**
|
||||
* 订单查询
|
||||
* 订单(用户)查询
|
||||
*
|
||||
* @param pageParam
|
||||
* @param orderUserQueryVo
|
||||
* @return
|
||||
*/
|
||||
IPage<OrderInfo> getOrderInfoByUserIdPage(Page<OrderInfo> pageParam, OrderUserQueryVo orderUserQueryVo);
|
||||
|
||||
/**
|
||||
* 订单(后台)查询
|
||||
*
|
||||
* @param pageParam
|
||||
* @param orderQueryVo
|
||||
* @return
|
||||
*/
|
||||
IPage<OrderInfo> selectPage(Page<OrderInfo> pageParam, OrderQueryVo orderQueryVo);
|
||||
}
|
||||
|
@@ -1,5 +1,9 @@
|
||||
package com.yovinchen.xlcs.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.yovinchen.xlcs.client.activity.ActivityFeignClient;
|
||||
import com.yovinchen.xlcs.client.cart.CartFeignClient;
|
||||
import com.yovinchen.xlcs.client.product.ProductFeignClient;
|
||||
@@ -15,23 +19,15 @@ import com.yovinchen.xlcs.model.activity.CouponInfo;
|
||||
import com.yovinchen.xlcs.model.order.CartInfo;
|
||||
import com.yovinchen.xlcs.model.order.OrderInfo;
|
||||
import com.yovinchen.xlcs.model.order.OrderItem;
|
||||
import com.yovinchen.xlcs.enums.*;
|
||||
import com.yovinchen.xlcs.mq.constant.MqConst;
|
||||
import com.yovinchen.xlcs.mq.service.RabbitService;
|
||||
import com.yovinchen.xlcs.order.mapper.OrderInfoMapper;
|
||||
import com.yovinchen.xlcs.order.mapper.OrderItemMapper;
|
||||
import com.yovinchen.xlcs.order.service.OrderInfoService;
|
||||
import com.yovinchen.xlcs.order.service.OrderItemService;
|
||||
import com.yovinchen.xlcs.vo.order.CartInfoVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderConfirmVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderSubmitVo;
|
||||
import com.yovinchen.xlcs.vo.order.OrderUserQueryVo;
|
||||
import com.yovinchen.xlcs.vo.order.*;
|
||||
import com.yovinchen.xlcs.vo.product.SkuStockLockVo;
|
||||
import com.yovinchen.xlcs.vo.user.LeaderAddressVo;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.BoundHashOperations;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
@@ -98,7 +94,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
|
||||
//唯一标识订单
|
||||
String orderNo = System.currentTimeMillis() + "";
|
||||
redisTemplate.opsForValue().set(RedisConst.ORDER_REPEAT + orderNo, orderNo, 24, TimeUnit.HOURS);
|
||||
redisTemplate.opsForValue()
|
||||
.set(RedisConst.ORDER_REPEAT + orderNo, orderNo, 24, TimeUnit.HOURS);
|
||||
|
||||
//获取购物车满足条件活动和优惠卷信息
|
||||
OrderConfirmVo orderConfirmVo = activityFeignClient.findCartActivityAndCoupon(cartInfoList, userId);
|
||||
@@ -147,17 +144,21 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
List<CartInfo> cartInfoList = cartFeignClient.getCartCheckedList(userId);
|
||||
|
||||
//2、购物车有很多商品,商品不同类型,重点处理普通类型商品
|
||||
List<CartInfo> commonSkuList = cartInfoList.stream().filter(cartInfo -> Objects.equals(cartInfo.getSkuType(), SkuType.COMMON.getCode())).collect(Collectors.toList());
|
||||
List<CartInfo> commonSkuList = cartInfoList.stream()
|
||||
.filter(cartInfo -> Objects.equals(cartInfo.getSkuType(), SkuType.COMMON.getCode()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//3、把获取购物车里面普通类型商品list集合,
|
||||
// List<CartInfo>转换List<SkuStockLockVo>
|
||||
if (!CollectionUtils.isEmpty(commonSkuList)) {
|
||||
List<SkuStockLockVo> commonStockLockVoList = commonSkuList.stream().map(item -> {
|
||||
SkuStockLockVo skuStockLockVo = new SkuStockLockVo();
|
||||
skuStockLockVo.setSkuId(item.getSkuId());
|
||||
skuStockLockVo.setSkuNum(item.getSkuNum());
|
||||
return skuStockLockVo;
|
||||
}).collect(Collectors.toList());
|
||||
List<SkuStockLockVo> commonStockLockVoList = commonSkuList.stream()
|
||||
.map(item -> {
|
||||
SkuStockLockVo skuStockLockVo = new SkuStockLockVo();
|
||||
skuStockLockVo.setSkuId(item.getSkuId());
|
||||
skuStockLockVo.setSkuNum(item.getSkuNum());
|
||||
return skuStockLockVo;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//4、远程调用service-product模块实现锁定商品
|
||||
//// 验证库存并锁定库存,保证具备原子性
|
||||
@@ -187,7 +188,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
if (CollectionUtils.isEmpty(cartInfoList)) {
|
||||
throw new xlcsException(ResultCodeEnum.DATA_ERROR);
|
||||
}
|
||||
//查询用户提货点和配送员信息
|
||||
//查询用户配送点和配送员信息
|
||||
Long userId = AuthContextHolder.getUserId();
|
||||
LeaderAddressVo leaderAddressVo = userFeignClient.getUserAddressByUserId(userId);
|
||||
if (leaderAddressVo == null) {
|
||||
@@ -231,9 +232,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
orderItem.setSplitCouponAmount(couponAmount);
|
||||
|
||||
//总金额
|
||||
BigDecimal skuTotalAmount = orderItem.getSkuPrice().multiply(new BigDecimal(orderItem.getSkuNum()));
|
||||
BigDecimal skuTotalAmount = orderItem.getSkuPrice()
|
||||
.multiply(new BigDecimal(orderItem.getSkuNum()));
|
||||
//优惠之后金额
|
||||
BigDecimal splitTotalAmount = skuTotalAmount.subtract(activityAmount).subtract(couponAmount);
|
||||
BigDecimal splitTotalAmount = skuTotalAmount.subtract(activityAmount)
|
||||
.subtract(couponAmount);
|
||||
orderItem.setSplitTotalAmount(splitTotalAmount);
|
||||
orderItemList.add(orderItem);
|
||||
}
|
||||
@@ -247,14 +250,14 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
orderInfo.setLeaderName(leaderAddressVo.getLeaderName());//配送员名称
|
||||
|
||||
orderInfo.setLeaderPhone(leaderAddressVo.getLeaderPhone());
|
||||
orderInfo.setTakeName(leaderAddressVo.getTakeName());
|
||||
orderInfo.setReceiverName(orderParamVo.getReceiverName());
|
||||
orderInfo.setReceiverPhone(orderParamVo.getReceiverPhone());
|
||||
orderInfo.setReceiverProvince(leaderAddressVo.getProvince());
|
||||
orderInfo.setReceiverCity(leaderAddressVo.getCity());
|
||||
orderInfo.setReceiverDistrict(leaderAddressVo.getDistrict());
|
||||
orderInfo.setReceiverAddress(leaderAddressVo.getDetailAddress());
|
||||
orderInfo.setWareId(cartInfoList.get(0).getWareId());
|
||||
orderInfo.setWareId(cartInfoList.get(0)
|
||||
.getWareId());
|
||||
orderInfo.setProcessStatus(ProcessStatus.UNPAID);
|
||||
|
||||
//计算订单金额
|
||||
@@ -265,7 +268,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
BigDecimal couponAmount = couponInfoSplitAmount.get("coupon:total");
|
||||
|
||||
if (null == couponAmount) couponAmount = new BigDecimal(0);
|
||||
BigDecimal totalAmount = originalTotalAmount.subtract(activityAmount).subtract(couponAmount);
|
||||
BigDecimal totalAmount = originalTotalAmount.subtract(activityAmount)
|
||||
.subtract(couponAmount);
|
||||
//计算订单金额
|
||||
orderInfo.setOriginalTotalAmount(originalTotalAmount);
|
||||
orderInfo.setActivityAmount(activityAmount);
|
||||
@@ -274,7 +278,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
|
||||
//计算配送员佣金
|
||||
BigDecimal profitRate = new BigDecimal(0);//orderSetService.getProfitRate();
|
||||
BigDecimal commissionAmount = orderInfo.getTotalAmount().multiply(profitRate);
|
||||
BigDecimal commissionAmount = orderInfo.getTotalAmount()
|
||||
.multiply(profitRate);
|
||||
orderInfo.setCommissionAmount(commissionAmount);
|
||||
|
||||
//添加数据到订单基本信息表
|
||||
@@ -295,9 +300,12 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
String orderSkuKey = RedisConst.ORDER_SKU_MAP + orderParamVo.getUserId();
|
||||
BoundHashOperations<String, String, Integer> hashOperations = redisTemplate.boundHashOps(orderSkuKey);
|
||||
cartInfoList.forEach(cartInfo -> {
|
||||
if (Boolean.TRUE.equals(hashOperations.hasKey(cartInfo.getSkuId().toString()))) {
|
||||
Integer orderSkuNum = hashOperations.get(cartInfo.getSkuId().toString()) + cartInfo.getSkuNum();
|
||||
hashOperations.put(cartInfo.getSkuId().toString(), orderSkuNum);
|
||||
if (Boolean.TRUE.equals(hashOperations.hasKey(cartInfo.getSkuId()
|
||||
.toString()))) {
|
||||
Integer orderSkuNum = hashOperations.get(cartInfo.getSkuId()
|
||||
.toString()) + cartInfo.getSkuNum();
|
||||
hashOperations.put(cartInfo.getSkuId()
|
||||
.toString(), orderSkuNum);
|
||||
}
|
||||
});
|
||||
redisTemplate.expire(orderSkuKey, DateUtil.getCurrentExpireTimes(), TimeUnit.SECONDS);
|
||||
@@ -355,7 +363,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单查询
|
||||
* 订单(用户)查询
|
||||
*
|
||||
* @param pageParam
|
||||
* @param orderUserQueryVo
|
||||
@@ -376,7 +384,57 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
//把订单项集合封装到每个订单里面
|
||||
orderInfo.setOrderItemList(orderItemList);
|
||||
//封装订单状态名称
|
||||
orderInfo.getParam().put("orderStatusName", orderInfo.getOrderStatus().getComment());
|
||||
orderInfo.getParam()
|
||||
.put("orderStatusName", orderInfo.getOrderStatus()
|
||||
.getComment());
|
||||
}
|
||||
return pageModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单(后台)查询
|
||||
*
|
||||
* @param pageParam
|
||||
* @param orderQueryVo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public IPage<OrderInfo> selectPage(Page<OrderInfo> pageParam, OrderQueryVo orderQueryVo) {
|
||||
LambdaQueryWrapper<OrderInfo> wrapper = new LambdaQueryWrapper<>();
|
||||
//获取查询信息
|
||||
String receiver = orderQueryVo.getReceiver();
|
||||
String orderNo = orderQueryVo.getOrderNo();
|
||||
OrderStatus orderStatus = orderQueryVo.getOrderStatus();
|
||||
Long leaderId = orderQueryVo.getLeaderId();
|
||||
Long wareId = orderQueryVo.getWareId();
|
||||
String createTimeBegin = orderQueryVo.getCreateTimeBegin();
|
||||
String createTimeEnd = orderQueryVo.getCreateTimeEnd();
|
||||
//拼接查询信息
|
||||
wrapper.like(!StringUtils.isEmpty(receiver), OrderInfo::getReceiverName, receiver)
|
||||
.or()
|
||||
.like(!StringUtils.isEmpty(receiver), OrderInfo::getReceiverPhone, receiver)
|
||||
.eq(!StringUtils.isEmpty(orderNo), OrderInfo::getOrderNo, orderNo)
|
||||
.eq(!StringUtils.isEmpty(orderStatus), OrderInfo::getOrderStatus, orderStatus)
|
||||
.eq(!StringUtils.isEmpty(leaderId), OrderInfo::getLeaderId, leaderId)
|
||||
.eq(!StringUtils.isEmpty(wareId), OrderInfo::getWareId, wareId)
|
||||
.ge(!StringUtils.isEmpty(createTimeBegin), OrderInfo::getCreateTime, createTimeBegin)
|
||||
.le(!StringUtils.isEmpty(createTimeEnd), OrderInfo::getCreateTime, createTimeEnd);
|
||||
|
||||
|
||||
IPage<OrderInfo> pageModel = baseMapper.selectPage(pageParam, wrapper);
|
||||
|
||||
//获取每个订单,把每个订单里面订单项查询封装
|
||||
List<OrderInfo> orderInfoList = pageModel.getRecords();
|
||||
for (OrderInfo orderInfo : orderInfoList) {
|
||||
//根据订单id查询里面所有订单项列表
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
|
||||
.eq(OrderItem::getOrderId, orderInfo.getId()));
|
||||
//把订单项集合封装到每个订单里面
|
||||
orderInfo.setOrderItemList(orderItemList);
|
||||
//封装订单状态名称
|
||||
orderInfo.getParam()
|
||||
.put("orderStatusName", orderInfo.getOrderStatus()
|
||||
.getComment());
|
||||
}
|
||||
return pageModel;
|
||||
}
|
||||
@@ -393,7 +451,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
private BigDecimal computeTotalAmount(List<CartInfo> cartInfoList) {
|
||||
BigDecimal total = new BigDecimal(0);
|
||||
for (CartInfo cartInfo : cartInfoList) {
|
||||
BigDecimal itemTotal = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
BigDecimal itemTotal = cartInfo.getCartPrice()
|
||||
.multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
total = total.add(itemTotal);
|
||||
}
|
||||
return total;
|
||||
@@ -424,12 +483,14 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
BigDecimal reduceAmount = activityRule.getReduceAmount();
|
||||
activityReduceAmount = activityReduceAmount.add(reduceAmount);
|
||||
if (cartInfoList.size() == 1) {
|
||||
activitySplitAmountMap.put("activity:" + cartInfoList.get(0).getSkuId(), reduceAmount);
|
||||
activitySplitAmountMap.put("activity:" + cartInfoList.get(0)
|
||||
.getSkuId(), reduceAmount);
|
||||
} else {
|
||||
//总金额
|
||||
BigDecimal originalTotalAmount = new BigDecimal(0);
|
||||
for (CartInfo cartInfo : cartInfoList) {
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice()
|
||||
.multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
originalTotalAmount = originalTotalAmount.add(skuTotalAmount);
|
||||
}
|
||||
//记录除最后一项是所有分摊金额, 最后一项=总的 - skuPartReduceAmount
|
||||
@@ -438,9 +499,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
for (int i = 0, len = cartInfoList.size(); i < len; i++) {
|
||||
CartInfo cartInfo = cartInfoList.get(i);
|
||||
if (i < len - 1) {
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice()
|
||||
.multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
//sku分摊金额
|
||||
BigDecimal skuReduceAmount = skuTotalAmount.divide(originalTotalAmount, 2, RoundingMode.HALF_UP).multiply(reduceAmount);
|
||||
BigDecimal skuReduceAmount = skuTotalAmount.divide(originalTotalAmount, 2, RoundingMode.HALF_UP)
|
||||
.multiply(reduceAmount);
|
||||
activitySplitAmountMap.put("activity:" + cartInfo.getSkuId(), skuReduceAmount);
|
||||
|
||||
skuPartReduceAmount = skuPartReduceAmount.add(skuReduceAmount);
|
||||
@@ -453,10 +516,12 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
for (int i = 0, len = cartInfoList.size(); i < len; i++) {
|
||||
CartInfo cartInfo = cartInfoList.get(i);
|
||||
if (i < len - 1) {
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice()
|
||||
.multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
|
||||
//sku分摊金额
|
||||
BigDecimal skuDiscountTotalAmount = skuTotalAmount.multiply(activityRule.getBenefitDiscount().divide(new BigDecimal("10")));
|
||||
BigDecimal skuDiscountTotalAmount = skuTotalAmount.multiply(activityRule.getBenefitDiscount()
|
||||
.divide(new BigDecimal("10")));
|
||||
BigDecimal skuReduceAmount = skuTotalAmount.subtract(skuDiscountTotalAmount);
|
||||
activitySplitAmountMap.put("activity:" + cartInfo.getSkuId(), skuReduceAmount);
|
||||
|
||||
@@ -497,13 +562,15 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
BigDecimal reduceAmount = couponInfo.getAmount();
|
||||
if (skuIdList.size() == 1) {
|
||||
//sku的优化金额
|
||||
couponInfoSplitAmountMap.put("coupon:" + skuIdToCartInfoMap.get(skuIdList.get(0)).getSkuId(), reduceAmount);
|
||||
couponInfoSplitAmountMap.put("coupon:" + skuIdToCartInfoMap.get(skuIdList.get(0))
|
||||
.getSkuId(), reduceAmount);
|
||||
} else {
|
||||
//总金额
|
||||
BigDecimal originalTotalAmount = new BigDecimal(0);
|
||||
for (Long skuId : skuIdList) {
|
||||
CartInfo cartInfo = skuIdToCartInfoMap.get(skuId);
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice()
|
||||
.multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
originalTotalAmount = originalTotalAmount.add(skuTotalAmount);
|
||||
}
|
||||
//记录除最后一项是所有分摊金额, 最后一项=总的 - skuPartReduceAmount
|
||||
@@ -512,9 +579,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
for (int i = 0, len = skuIdList.size(); i < len; i++) {
|
||||
CartInfo cartInfo = skuIdToCartInfoMap.get(skuIdList.get(i));
|
||||
if (i < len - 1) {
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
BigDecimal skuTotalAmount = cartInfo.getCartPrice()
|
||||
.multiply(new BigDecimal(cartInfo.getSkuNum()));
|
||||
//sku分摊金额
|
||||
BigDecimal skuReduceAmount = skuTotalAmount.divide(originalTotalAmount, 2, RoundingMode.HALF_UP).multiply(reduceAmount);
|
||||
BigDecimal skuReduceAmount = skuTotalAmount.divide(originalTotalAmount, 2, RoundingMode.HALF_UP)
|
||||
.multiply(reduceAmount);
|
||||
couponInfoSplitAmountMap.put("coupon:" + cartInfo.getSkuId(), skuReduceAmount);
|
||||
|
||||
skuPartReduceAmount = skuPartReduceAmount.add(skuReduceAmount);
|
||||
|
Reference in New Issue
Block a user