积分专区的实现
This commit is contained in:
@@ -38,5 +38,9 @@ public interface PmsProductMapper {
|
||||
|
||||
PmsProduct getProductInfoById(Long id);
|
||||
|
||||
PmsProduct getProductByOrderSn(String orderSn);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -921,4 +921,14 @@
|
||||
where ppfr.product_id=#{id,jdbcType=BIGINT} limit 1
|
||||
</select>
|
||||
|
||||
<select id="getProductByOrderSn" resultMap="BaseResultMap">
|
||||
SELECT p.*
|
||||
FROM pms_product p
|
||||
WHERE p.product_sn = (
|
||||
SELECT oi.product_sn
|
||||
FROM oms_order_item oi
|
||||
WHERE oi.order_sn = #{orderSn}
|
||||
LIMIT 1
|
||||
)
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -308,136 +308,148 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderResult getMemberOrderDetailInfo(Long orderId) {
|
||||
UmsMember loginMember = memberService.getCurrentMember();
|
||||
@Override
|
||||
public OrderResult getMemberOrderDetailInfo(Long orderId) {
|
||||
UmsMember loginMember = memberService.getCurrentMember();
|
||||
|
||||
OrderResult orderResult = new OrderResult();
|
||||
OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
||||
//删除状态:0->未删除;1->已删除
|
||||
if (order != null && order.getMemberId().equals(loginMember.getId()) && order.getDeleteStatus() == 0) {
|
||||
orderResult.setOrderId(order.getId());
|
||||
orderResult.setOrderSn(order.getOrderSn());
|
||||
orderResult.setCreateTime(order.getCreateTime());
|
||||
orderResult.setPayAmount(order.getPayAmount());
|
||||
orderResult.setOrderStatus(order.getStatus());
|
||||
orderResult.setDeliveryType(order.getDeliveryType());
|
||||
if (order.getStatus() == 0) {
|
||||
orderResult.setOrderStatusName("待付款");
|
||||
if (order.getPayType() != null && order.getPayType() == 3) {
|
||||
orderResult.setOrderStatusName("已付款待审核");
|
||||
}
|
||||
}
|
||||
if (order.getStatus() == 1) {
|
||||
orderResult.setOrderStatusName("待发货");
|
||||
}
|
||||
if (order.getStatus() == 2) {
|
||||
// 提货方式:0->自提;1->物流
|
||||
if (order.getDeliveryType() == 0) {
|
||||
orderResult.setOrderStatusName("待提货");
|
||||
} else {
|
||||
orderResult.setOrderStatusName("待收货");
|
||||
}
|
||||
}
|
||||
if (order.getStatus() == 3) {
|
||||
orderResult.setOrderStatusName("交易完成");
|
||||
if (order.getCommentTime() == null) {
|
||||
orderResult.setCommentStatus(0); //未评价
|
||||
} else {
|
||||
orderResult.setCommentStatus(1); //已评价
|
||||
}
|
||||
}
|
||||
if (order.getStatus() == 4) {
|
||||
orderResult.setOrderStatusName("交易关闭");
|
||||
orderResult.setOrderStatus(4);
|
||||
}
|
||||
OrderResult orderResult = new OrderResult();
|
||||
OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
||||
//删除状态:0->未删除;1->已删除
|
||||
if(order != null && order.getMemberId().equals(loginMember.getId()) && order.getDeleteStatus() == 0) {
|
||||
orderResult.setOrderId(order.getId());
|
||||
orderResult.setOrderSn(order.getOrderSn());
|
||||
orderResult.setCreateTime(order.getCreateTime());
|
||||
orderResult.setPayAmount(order.getPayAmount());
|
||||
orderResult.setOrderStatus(order.getStatus());
|
||||
orderResult.setDeliveryType(order.getDeliveryType());
|
||||
if(order.getStatus() == 0) {
|
||||
orderResult.setOrderStatusName("待付款");
|
||||
if(order.getPayType() != null && order.getPayType() == 3) {
|
||||
orderResult.setOrderStatusName("已付款待审核");
|
||||
}
|
||||
}
|
||||
if(order.getStatus() == 1) {
|
||||
orderResult.setOrderStatusName("待发货");
|
||||
}
|
||||
if(order.getStatus() == 2) {
|
||||
// 提货方式:0->自提;1->物流
|
||||
if(order.getDeliveryType() == 0) {
|
||||
orderResult.setOrderStatusName("待提货");
|
||||
} else {
|
||||
orderResult.setOrderStatusName("待收货");
|
||||
}
|
||||
}
|
||||
if(order.getStatus() == 3) {
|
||||
orderResult.setOrderStatusName("交易完成");
|
||||
if(order.getCommentTime() == null) {
|
||||
orderResult.setCommentStatus(0); //未评价
|
||||
} else {
|
||||
orderResult.setCommentStatus(1); //已评价
|
||||
}
|
||||
}
|
||||
if(order.getStatus() == 4) {
|
||||
orderResult.setOrderStatusName("交易关闭");
|
||||
orderResult.setOrderStatus(4);
|
||||
}
|
||||
|
||||
orderResult.setFreightAmount(order.getFreightAmount());
|
||||
orderResult.setNote(order.getNote());
|
||||
orderResult.setDeliveryCompany(order.getDeliveryCompany());
|
||||
orderResult.setDeliverySn(order.getDeliverySn());
|
||||
orderResult.setPaymentTime(order.getPaymentTime());
|
||||
//支付类型: 0->未支付;1->支付宝;2->微信; 3->线下支付; 4->积分支付
|
||||
if (order.getPayType() != null) {
|
||||
orderResult.setPayType(order.getPayType());
|
||||
if (order.getPayType() == 0) {
|
||||
orderResult.setPayTypeName("未支付");
|
||||
} else if (order.getPayType() == 1) {
|
||||
orderResult.setPayTypeName("支付宝支付");
|
||||
} else if (order.getPayType() == 2) {
|
||||
orderResult.setPayTypeName("微信支付");
|
||||
} else if (order.getPayType() == 3) { //mcoo todo
|
||||
orderResult.setPayTypeName("线下支付");
|
||||
DmsOfflinePaymentRecord paymentRecord = offlinePaymentRecordMapper.selectOneByOrderId(orderId);
|
||||
DmsSellerBankAccount bankAccount = sellerBankAccountMapper.selectOneById(paymentRecord.getSellerBankAccountId());
|
||||
OfflinePaymentRecordResult recordResult = new OfflinePaymentRecordResult();
|
||||
BeanUtils.copyProperties(paymentRecord, recordResult);
|
||||
BeanUtils.copyProperties(bankAccount, recordResult);
|
||||
orderResult.setFreightAmount(order.getFreightAmount());
|
||||
orderResult.setNote(order.getNote());
|
||||
orderResult.setDeliveryCompany(order.getDeliveryCompany());
|
||||
orderResult.setDeliverySn(order.getDeliverySn());
|
||||
orderResult.setPaymentTime(order.getPaymentTime());
|
||||
|
||||
if (recordResult.getConfirmStatus() == 1) {
|
||||
recordResult.setConfirmStatusName("已审核");
|
||||
} else {
|
||||
recordResult.setConfirmStatusName("未审核");
|
||||
}
|
||||
orderResult.setPaymentRecord(recordResult);
|
||||
} else {
|
||||
orderResult.setPayTypeName("积分支付");
|
||||
}
|
||||
} else {
|
||||
orderResult.setPayType(0);
|
||||
orderResult.setPayTypeName("未支付");
|
||||
}
|
||||
// 获取商品信息,判断是否是积分专区商品
|
||||
PmsProduct product = productMapper.getProductByOrderSn((order.getOrderSn()));
|
||||
boolean isPointsExchangeStatus = product != null && product.getPointsExchangeStatus() == 1;
|
||||
|
||||
orderResult.setDeliveryTime(order.getDeliveryTime());
|
||||
orderResult.setReceiveTime(order.getReceiveTime());
|
||||
orderResult.setCommentTime(order.getCommentTime());
|
||||
//支付类型: 0->未支付;1->支付宝;2->微信; 3->线下支付; 4->积分支付
|
||||
//判断是否为积分专区商品
|
||||
if(isPointsExchangeStatus) {
|
||||
orderResult.setPayType(4); // 设置为积分支付
|
||||
orderResult.setPayTypeName("积分支付");
|
||||
}else {
|
||||
// 如果不是积分兑换专区商品,则继续使用其他支付方式
|
||||
if (order.getPayType() != null) {
|
||||
orderResult.setPayType(order.getPayType());
|
||||
if (order.getPayType() == 0) {
|
||||
orderResult.setPayTypeName("未支付");
|
||||
} else if (order.getPayType() == 1) {
|
||||
orderResult.setPayTypeName("支付宝支付");
|
||||
} else if (order.getPayType() == 2) {
|
||||
orderResult.setPayTypeName("微信支付");
|
||||
} else if (order.getPayType() == 3) { //mcoo todo
|
||||
orderResult.setPayTypeName("线下支付");
|
||||
DmsOfflinePaymentRecord paymentRecord = offlinePaymentRecordMapper.selectOneByOrderId(orderId);
|
||||
DmsSellerBankAccount bankAccount = sellerBankAccountMapper.selectOneById(paymentRecord.getSellerBankAccountId());
|
||||
OfflinePaymentRecordResult recordResult = new OfflinePaymentRecordResult();
|
||||
BeanUtils.copyProperties(paymentRecord, recordResult);
|
||||
BeanUtils.copyProperties(bankAccount, recordResult);
|
||||
|
||||
//0->不开发票;1->电子发票;2->纸质发票
|
||||
if (order.getBillType() != null) {
|
||||
orderResult.setBillType(order.getBillType());
|
||||
if (order.getBillType() == 1) {
|
||||
orderResult.setBillTypeName("电子发票");
|
||||
} else if (order.getBillType() == 2) {
|
||||
orderResult.setBillTypeName("纸质发票");
|
||||
} else {
|
||||
orderResult.setBillTypeName("不开发票");
|
||||
}
|
||||
} else {
|
||||
orderResult.setBillType(0);
|
||||
orderResult.setBillTypeName("不开发票");
|
||||
}
|
||||
if (recordResult.getConfirmStatus() == 1) {
|
||||
recordResult.setConfirmStatusName("已审核");
|
||||
} else {
|
||||
recordResult.setConfirmStatusName("未审核");
|
||||
}
|
||||
orderResult.setPaymentRecord(recordResult);
|
||||
} else {
|
||||
orderResult.setPayTypeName("积分支付");
|
||||
}
|
||||
} else {
|
||||
orderResult.setPayType(0);
|
||||
orderResult.setPayTypeName("未支付");
|
||||
}
|
||||
}
|
||||
|
||||
orderResult.setBillHeader(order.getBillHeader());
|
||||
orderResult.setBillContent(order.getBillContent());
|
||||
orderResult.setReceiverName(order.getReceiverName());
|
||||
orderResult.setReceiverPhone(order.getReceiverPhone());
|
||||
orderResult.setReceiverProvince(order.getReceiverProvince());
|
||||
orderResult.setReceiverCity(order.getReceiverCity());
|
||||
orderResult.setReceiverRegion(order.getReceiverRegion());
|
||||
orderResult.setReceiverDetailAddress(order.getReceiverDetailAddress());
|
||||
orderResult.setDeliveryTime(order.getDeliveryTime());
|
||||
orderResult.setReceiveTime(order.getReceiveTime());
|
||||
orderResult.setCommentTime(order.getCommentTime());
|
||||
|
||||
OmsOrderItemExample example = new OmsOrderItemExample();
|
||||
example.createCriteria().andOrderIdEqualTo(orderId);
|
||||
List<OmsOrderItem> orderItemList = orderItemMapper.selectByExample(example);
|
||||
//0->不开发票;1->电子发票;2->纸质发票
|
||||
if(order.getBillType() != null) {
|
||||
orderResult.setBillType(order.getBillType());
|
||||
if(order.getBillType() == 1) {
|
||||
orderResult.setBillTypeName("电子发票");
|
||||
} else if(order.getBillType() == 2) {
|
||||
orderResult.setBillTypeName("纸质发票");
|
||||
} else {
|
||||
orderResult.setBillTypeName("不开发票");
|
||||
}
|
||||
} else {
|
||||
orderResult.setBillType(0);
|
||||
orderResult.setBillTypeName("不开发票");
|
||||
}
|
||||
|
||||
OrderItemResult orderItemResult = null;
|
||||
orderResult.setProductsNum(orderItemList.size());
|
||||
List<OrderItemResult> orderItemResultList = new ArrayList<>();
|
||||
for (OmsOrderItem orderItem : orderItemList) {
|
||||
orderItemResult = new OrderItemResult();
|
||||
orderItemResult.setOrderId(order.getId());
|
||||
orderItemResult.setOrderSn(order.getOrderSn());
|
||||
orderItemResult.setProductBrand(orderItem.getProductBrand());
|
||||
orderItemResult.setProductId(orderItem.getProductId());
|
||||
orderItemResult.setProductName(orderItem.getProductName());
|
||||
orderItemResult.setProductPic(orderItem.getProductPic());
|
||||
orderItemResult.setProductPrice(orderItem.getProductPrice());
|
||||
orderItemResult.setProductQuantity(orderItem.getProductQuantity());
|
||||
orderItemResult.setSp1(orderItem.getSp1());
|
||||
orderItemResult.setSp2(orderItem.getSp2());
|
||||
orderItemResult.setSp3(orderItem.getSp3());
|
||||
orderItemResultList.add(orderItemResult);
|
||||
}
|
||||
orderResult.setBillHeader(order.getBillHeader());
|
||||
orderResult.setBillContent(order.getBillContent());
|
||||
orderResult.setReceiverName(order.getReceiverName());
|
||||
orderResult.setReceiverPhone(order.getReceiverPhone());
|
||||
orderResult.setReceiverProvince(order.getReceiverProvince());
|
||||
orderResult.setReceiverCity(order.getReceiverCity());
|
||||
orderResult.setReceiverRegion(order.getReceiverRegion());
|
||||
orderResult.setReceiverDetailAddress(order.getReceiverDetailAddress());
|
||||
|
||||
OmsOrderItemExample example = new OmsOrderItemExample();
|
||||
example.createCriteria().andOrderIdEqualTo(orderId);
|
||||
List<OmsOrderItem> orderItemList = orderItemMapper.selectByExample(example);
|
||||
|
||||
OrderItemResult orderItemResult = null;
|
||||
orderResult.setProductsNum(orderItemList.size());
|
||||
List<OrderItemResult> orderItemResultList = new ArrayList<>();
|
||||
for(OmsOrderItem orderItem : orderItemList) {
|
||||
orderItemResult = new OrderItemResult();
|
||||
orderItemResult.setOrderId(order.getId());
|
||||
orderItemResult.setOrderSn(order.getOrderSn());
|
||||
orderItemResult.setProductBrand(orderItem.getProductBrand());
|
||||
orderItemResult.setProductId(orderItem.getProductId());
|
||||
orderItemResult.setProductName(orderItem.getProductName());
|
||||
orderItemResult.setProductPic(orderItem.getProductPic());
|
||||
orderItemResult.setProductPrice(orderItem.getProductPrice());
|
||||
orderItemResult.setProductQuantity(orderItem.getProductQuantity());
|
||||
orderItemResult.setSp1(orderItem.getSp1());
|
||||
orderItemResult.setSp2(orderItem.getSp2());
|
||||
orderItemResult.setSp3(orderItem.getSp3());
|
||||
orderItemResultList.add(orderItemResult);
|
||||
}
|
||||
|
||||
orderResult.setOrderItem(orderItemResultList);
|
||||
|
||||
@@ -702,220 +714,243 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
/**
|
||||
* 直接购买,根据提交信息生成订单
|
||||
*/
|
||||
@Transactional
|
||||
@Override
|
||||
/**
|
||||
* 创建订单
|
||||
*/
|
||||
public CommonResult createOrder(OrderParam orderParam) {
|
||||
//orderParam.setSkuId(98L);
|
||||
if (orderParam.getSkuId() == null) {
|
||||
return CommonResult.validateFailed("商品SKU不能为空");
|
||||
}
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
/**
|
||||
* 创建订单
|
||||
*/
|
||||
public CommonResult createOrder(OrderParam orderParam) {
|
||||
//orderParam.setSkuId(98L);
|
||||
if(orderParam.getSkuId() == null) {
|
||||
return CommonResult.validateFailed("商品SKU不能为空");
|
||||
}
|
||||
|
||||
if (orderParam.getDeliveryType() == null || (orderParam.getDeliveryType() != 0 && orderParam.getDeliveryType() != 1)) {
|
||||
return CommonResult.validateFailed("提货方式不能为空");
|
||||
}
|
||||
if(orderParam.getDeliveryType() == null || (orderParam.getDeliveryType() != 0 && orderParam.getDeliveryType() != 1) ) {
|
||||
return CommonResult.validateFailed("提货方式不能为空");
|
||||
}
|
||||
|
||||
if (orderParam.getMemberReceiveAddressId() == null) {
|
||||
return CommonResult.validateFailed("会员收货地址不能为空");
|
||||
}
|
||||
if(orderParam.getMemberReceiveAddressId() == null) {
|
||||
return CommonResult.validateFailed("会员收货地址不能为空");
|
||||
}
|
||||
|
||||
UmsMemberReceiveAddress address = memberReceiveAddressMapper.selectOneById(orderParam.getMemberReceiveAddressId());
|
||||
if (address == null) {
|
||||
return CommonResult.validateFailed("未查询到会员收货地址");
|
||||
}
|
||||
if (orderParam.getQuantity() == null) {
|
||||
return CommonResult.validateFailed("商品数量不能为空");
|
||||
}
|
||||
if (orderParam.getQuantity() <= 0) {
|
||||
return CommonResult.validateFailed("商品数量错误");
|
||||
}
|
||||
PmsSkuStock skuStock = skuStockMapper.selectByPrimaryKey(orderParam.getSkuId());
|
||||
if (skuStock == null) {
|
||||
return CommonResult.validateFailed("未查询到商品信息");
|
||||
UmsMemberReceiveAddress address = memberReceiveAddressMapper.selectOneById(orderParam.getMemberReceiveAddressId());
|
||||
if(address == null) {
|
||||
return CommonResult.validateFailed("未查询到会员收货地址");
|
||||
}
|
||||
if(orderParam.getQuantity() == null) {
|
||||
return CommonResult.validateFailed("商品数量不能为空");
|
||||
}
|
||||
if(orderParam.getQuantity() <= 0) {
|
||||
return CommonResult.validateFailed("商品数量错误");
|
||||
}
|
||||
PmsSkuStock skuStock = skuStockMapper.selectByPrimaryKey(orderParam.getSkuId());
|
||||
if(skuStock == null) {
|
||||
return CommonResult.validateFailed("未查询到商品信息");
|
||||
}
|
||||
|
||||
//判断商品是否都有库存 (库存 - 锁定库存 = 真实库存)
|
||||
PmsProduct product = new PmsProduct();
|
||||
|
||||
// 判断商品是否属于积分兑换区
|
||||
boolean isPointsExchangeStatus = product.getPointsExchangeStatus() == 1;
|
||||
|
||||
//判断商品是否都有库存 (库存 - 锁定库存 = 真实库存)
|
||||
if ((skuStock.getStock() - skuStock.getLockStock()) < orderParam.getQuantity()) {
|
||||
return CommonResult.validateFailed("库存不足,无法下单");
|
||||
}
|
||||
|
||||
//根据商品id查询商品信息
|
||||
PmsProduct product = productMapper.selectByPrimaryKey(skuStock.getProductId());
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
if (product != null) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
if(product != null) {
|
||||
|
||||
UmsMember member = memberMapper.selectByPrimaryKey(memberService.getCurrentMember().getId());
|
||||
UmsMember member = memberMapper.selectByPrimaryKey(memberService.getCurrentMember().getId());
|
||||
|
||||
BigDecimal discount = commonService.getDiscount(member.getId());
|
||||
BigDecimal price = new BigDecimal(skuStock.getPrice().doubleValue());
|
||||
if (discount != null) {
|
||||
price = skuStock.getPrice().multiply(discount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
}
|
||||
BigDecimal discount = commonService.getDiscount(member.getId());
|
||||
BigDecimal price = new BigDecimal(skuStock.getPrice().doubleValue());
|
||||
if(discount != null) {
|
||||
price = skuStock.getPrice().multiply(discount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
}
|
||||
|
||||
BigDecimal totalAmount = new BigDecimal(0);
|
||||
BigDecimal zero = new BigDecimal(0);
|
||||
totalAmount = price.multiply(new BigDecimal(orderParam.getQuantity()));
|
||||
BigDecimal totalAmount = new BigDecimal(0);
|
||||
BigDecimal zero = new BigDecimal(0);
|
||||
totalAmount = price.multiply(new BigDecimal(orderParam.getQuantity()));
|
||||
|
||||
if (orderParam.getIntegration() == null) {
|
||||
orderParam.setIntegration(zero);
|
||||
}
|
||||
// 如果是积分兑换区商品
|
||||
if (isPointsExchangeStatus) {
|
||||
// 直接使用积分支付,不进行实际支付金额的处理
|
||||
BigDecimal integrationAmount = totalAmount;
|
||||
// 确保会员有足够的积分
|
||||
if (member.getIntegration() < integrationAmount.intValue()) {
|
||||
return CommonResult.validateFailed("积分不足,无法兑换");
|
||||
}
|
||||
|
||||
//先判断积分是否大于0,大于0表示使用了积分支付
|
||||
//flag 等于1表示使用积分支付 判断用户积分是否充足
|
||||
//flag = -1,表示integration小于0;flag = 0,表示integration等于0;flag = 1,表示integration大于0;
|
||||
//int integerationFlag = orderParam.getIntegration().compareTo(new BigDecimal(0)); //mcoo
|
||||
int integerationFlag = 0;
|
||||
if (integerationFlag == 1) {
|
||||
int flag = member.getBalance().compareTo(orderParam.getIntegration());
|
||||
//flag = -1,表示balance小于integration;flag = 0,表示balance等于integration;flag = 1,表示balance大于integration;
|
||||
// 冻结会员积分
|
||||
member.setIntegration(member.getIntegration() - integrationAmount.intValue()); // 扣除积分
|
||||
member.setFreeze(member.getFreeze().add(new BigDecimal(integrationAmount.intValue()))); // 冻结积分
|
||||
memberMapper.updateByPrimaryKey(member);
|
||||
|
||||
totalAmount = zero; // 设置支付金额为零
|
||||
orderParam.setIntegration(integrationAmount); // 设置积分金额
|
||||
}
|
||||
|
||||
if(orderParam.getIntegration() == null) {
|
||||
orderParam.setIntegration(zero);
|
||||
}
|
||||
|
||||
//先判断积分是否大于0,大于0表示使用了积分支付
|
||||
//flag 等于1表示使用积分支付 判断用户积分是否充足
|
||||
//flag = -1,表示integration小于0;flag = 0,表示integration等于0;flag = 1,表示integration大于0;
|
||||
//int integerationFlag = orderParam.getIntegration().compareTo(new BigDecimal(0)); //mcoo
|
||||
int integerationFlag = 0;
|
||||
if(integerationFlag == 1) {
|
||||
int flag = member.getBalance().compareTo(orderParam.getIntegration());
|
||||
//flag = -1,表示balance小于integration;flag = 0,表示balance等于integration;flag = 1,表示balance大于integration;
|
||||
/*if(flag == -1) {
|
||||
return CommonResult.validateFailed("森态积分不足,无法抵扣");
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
while (true) {
|
||||
long time = System.currentTimeMillis() + RedisLock.TIMEOUT;
|
||||
if (redisLock.lock(String.valueOf(skuStock.getProductId()), String.valueOf(time))) {
|
||||
while(true) {
|
||||
long time = System.currentTimeMillis() + RedisLock.TIMEOUT;
|
||||
if(redisLock.lock(String.valueOf(skuStock.getProductId()), String.valueOf(time))) {
|
||||
|
||||
//重新查询获取最新的数据
|
||||
skuStock = skuStockMapper.selectByPrimaryKey(orderParam.getSkuId());
|
||||
//重新查询获取最新的数据
|
||||
skuStock = skuStockMapper.selectByPrimaryKey(orderParam.getSkuId());
|
||||
|
||||
//判断购物车中商品是否都有库存 (库存 - 锁定库存 = 真实库存)
|
||||
if ((skuStock.getStock() - skuStock.getLockStock()) < orderParam.getQuantity()) {
|
||||
return CommonResult.validateFailed("库存不足,无法下单");
|
||||
}
|
||||
//判断购物车中商品是否都有库存 (库存 - 锁定库存 = 真实库存)
|
||||
if ((skuStock.getStock() - skuStock.getLockStock()) < orderParam.getQuantity()) {
|
||||
return CommonResult.validateFailed("库存不足,无法下单");
|
||||
}
|
||||
|
||||
skuStock.setLockStock(skuStock.getLockStock() + orderParam.getQuantity());
|
||||
skuStockMapper.updateByPrimaryKey(skuStock);
|
||||
redisLock.unlock(String.valueOf(skuStock.getProductId()), String.valueOf(time));
|
||||
break;
|
||||
}
|
||||
}
|
||||
skuStock.setLockStock(skuStock.getLockStock() + orderParam.getQuantity());
|
||||
skuStockMapper.updateByPrimaryKey(skuStock);
|
||||
redisLock.unlock(String.valueOf(skuStock.getProductId()), String.valueOf(time));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//生成订单信息
|
||||
OmsOrder order = new OmsOrder();
|
||||
order.setTotalAmount(totalAmount); // 订单总金额
|
||||
if (integerationFlag == 1) {
|
||||
int flag = orderParam.getIntegration().compareTo(totalAmount);
|
||||
BigDecimal integeration = new BigDecimal(0);
|
||||
//flag = -1,表示integration小于totalAmount;flag = 0,表示integration等于totalAmount;flag = 1,表示integration大于totalAmount;
|
||||
//如果传入的积分小于实际支付金额,用实际支付金额减去抵扣积分。
|
||||
//如果传入的积分等于或者大于实际支付金额,表示全额抵扣
|
||||
if (flag == -1) {
|
||||
order.setPayAmount(totalAmount.subtract(orderParam.getIntegration())); //实际支付金额
|
||||
order.setIntegrationAmount(orderParam.getIntegration());
|
||||
integeration = orderParam.getIntegration();
|
||||
} else {
|
||||
order.setPayAmount(zero);
|
||||
order.setIntegrationAmount(totalAmount);
|
||||
integeration = totalAmount;
|
||||
}
|
||||
//生成订单信息
|
||||
OmsOrder order = new OmsOrder();
|
||||
order.setTotalAmount(totalAmount); // 订单总金额
|
||||
order.setIntegrationAmount(orderParam.getIntegration() == null ? zero : orderParam.getIntegration());
|
||||
if(integerationFlag == 1) {
|
||||
int flag = orderParam.getIntegration().compareTo(totalAmount);
|
||||
BigDecimal integeration = new BigDecimal(0);
|
||||
//flag = -1,表示integration小于totalAmount;flag = 0,表示integration等于totalAmount;flag = 1,表示integration大于totalAmount;
|
||||
//如果传入的积分小于实际支付金额,用实际支付金额减去抵扣积分。
|
||||
//如果传入的积分等于或者大于实际支付金额,表示全额抵扣
|
||||
if(flag == -1) {
|
||||
order.setPayAmount(totalAmount.subtract(orderParam.getIntegration())); //实际支付金额
|
||||
order.setIntegrationAmount(orderParam.getIntegration());
|
||||
integeration = orderParam.getIntegration();
|
||||
} else {
|
||||
order.setPayAmount(zero);
|
||||
order.setIntegrationAmount(totalAmount);
|
||||
integeration = totalAmount;
|
||||
}
|
||||
|
||||
//冻结用户余额
|
||||
member = memberMapper.selectByPrimaryKey(member.getId());
|
||||
//flag = -1,表示balance小于integeration;flag = 0,表示balance等于integeration;flag = 1,表示balance大于integeration;
|
||||
flag = member.getBalance().compareTo(integeration);
|
||||
//冻结用户余额
|
||||
member = memberMapper.selectByPrimaryKey(member.getId());
|
||||
//flag = -1,表示balance小于integeration;flag = 0,表示balance等于integeration;flag = 1,表示balance大于integeration;
|
||||
flag = member.getBalance().compareTo(integeration);
|
||||
/*if(flag == -1) {
|
||||
throw new RuntimeException("森态积分不足,无法抵扣");
|
||||
}*/
|
||||
member.setBalance(member.getBalance().subtract(integeration)); //修改余额值
|
||||
member.setFreeze(member.getFreeze().add(integeration)); //修改冻结值
|
||||
memberMapper.updateByPrimaryKey(member);
|
||||
member.setBalance(member.getBalance().subtract(integeration)); //修改余额值
|
||||
member.setFreeze(member.getFreeze().add(integeration)); //修改冻结值
|
||||
memberMapper.updateByPrimaryKey(member);
|
||||
|
||||
|
||||
} else {
|
||||
order.setPayAmount(totalAmount); //实际支付金额
|
||||
order.setIntegrationAmount(zero);
|
||||
}
|
||||
} else {
|
||||
order.setPayAmount(totalAmount); //实际支付金额
|
||||
order.setIntegrationAmount(zero);
|
||||
}
|
||||
|
||||
Date date = new Date();
|
||||
order.setMemberId(member.getId());
|
||||
order.setCreateTime(date);
|
||||
order.setModifyTime(date);
|
||||
order.setMemberUsername(member.getUsername());
|
||||
order.setFreightAmount(zero); //运费
|
||||
order.setPromotionAmount(zero); //促销优化金额(促销价、满减、阶梯价)
|
||||
order.setCouponAmount(zero);
|
||||
order.setDiscountAmount(zero);
|
||||
order.setPayType(0); //支付方式:0->未支付;1->支付宝;2->微信
|
||||
order.setSourceType(1); //订单来源:0->PC订单;1->app订单
|
||||
order.setDeliveryType(1); //提货方式:0->自提;1->物流 默认为1 mcoo
|
||||
Date date = new Date();
|
||||
order.setMemberId(member.getId());
|
||||
order.setCreateTime(date);
|
||||
order.setModifyTime(date);
|
||||
order.setMemberUsername(member.getUsername());
|
||||
order.setFreightAmount(zero); //运费
|
||||
order.setPayType(isPointsExchangeStatus ? 4 : 0); // payType为4代表积分支付
|
||||
order.setPromotionAmount(zero); //促销优化金额(促销价、满减、阶梯价)
|
||||
order.setCouponAmount(zero);
|
||||
order.setDiscountAmount(zero);
|
||||
order.setPayType(0); //支付方式:0->未支付;1->支付宝;2->微信
|
||||
order.setSourceType(1); //订单来源:0->PC订单;1->app订单
|
||||
order.setDeliveryType(1); //提货方式:0->自提;1->物流 默认为1 mcoo
|
||||
|
||||
//生成订单号
|
||||
order.setOrderSn(generateOrderSn(order));
|
||||
//订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单
|
||||
order.setStatus(0);
|
||||
//订单类型:0->正常订单;1->秒杀订单 2->5连订单
|
||||
order.setOrderType(0);
|
||||
//生成订单号
|
||||
order.setOrderSn(generateOrderSn(order));
|
||||
//订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单
|
||||
order.setStatus(0);
|
||||
//订单类型:0->正常订单;1->秒杀订单 2->5连订单
|
||||
order.setOrderType(0);
|
||||
|
||||
OmsOrderSetting orderSetting = orderSettingMapper.selectByPrimaryKey(1L);
|
||||
order.setAutoConfirmDay(orderSetting.getConfirmOvertime());
|
||||
order.setIntegration(0);
|
||||
order.setGrowth(0);
|
||||
OmsOrderSetting orderSetting = orderSettingMapper.selectByPrimaryKey(1L);
|
||||
order.setAutoConfirmDay(orderSetting.getConfirmOvertime());
|
||||
order.setIntegration(0);
|
||||
order.setGrowth(0);
|
||||
|
||||
//收货人信息:姓名、电话、邮编、地址
|
||||
order.setReceiverName(address.getName());
|
||||
order.setReceiverPhone(address.getPhoneNumber());
|
||||
order.setReceiverPostCode(address.getPostCode());
|
||||
order.setReceiverProvince(address.getProvince());
|
||||
order.setReceiverCity(address.getCity());
|
||||
order.setReceiverRegion(address.getRegion());
|
||||
order.setReceiverDetailAddress(address.getDetailAddress());
|
||||
//收货人信息:姓名、电话、邮编、地址
|
||||
order.setReceiverName(address.getName());
|
||||
order.setReceiverPhone(address.getPhoneNumber());
|
||||
order.setReceiverPostCode(address.getPostCode());
|
||||
order.setReceiverProvince(address.getProvince());
|
||||
order.setReceiverCity(address.getCity());
|
||||
order.setReceiverRegion(address.getRegion());
|
||||
order.setReceiverDetailAddress(address.getDetailAddress());
|
||||
|
||||
order.setNote(orderParam.getNote() == null ? null : orderParam.getNote());
|
||||
order.setNote(orderParam.getNote() == null ? null : orderParam.getNote());
|
||||
|
||||
//确认收货状态:0->未确认;1->已确认
|
||||
order.setConfirmStatus(0);
|
||||
//删除状态:0->未删除;1->已删除
|
||||
order.setDeleteStatus(0);
|
||||
order.setUseIntegration(0);
|
||||
order.setPromotionInfo("无优惠");
|
||||
order.setSettlementStatus(0); //分销结算状态(0->未结算;1->已结算;2->不结算)
|
||||
//确认收货状态:0->未确认;1->已确认
|
||||
order.setConfirmStatus(0);
|
||||
//删除状态:0->未删除;1->已删除
|
||||
order.setDeleteStatus(0);
|
||||
order.setUseIntegration(0);
|
||||
order.setPromotionInfo("无优惠");
|
||||
order.setSettlementStatus(0); //分销结算状态(0->未结算;1->已结算;2->不结算)
|
||||
|
||||
orderMapper.insert(order);
|
||||
orderMapper.insert(order);
|
||||
|
||||
//生成订单商品信息
|
||||
OmsOrderItem orderItem = new OmsOrderItem();
|
||||
orderItem.setOrderId(order.getId());
|
||||
orderItem.setOrderSn(order.getOrderSn());
|
||||
orderItem.setProductId(product.getId());
|
||||
orderItem.setProductPic(skuStock.getPic());
|
||||
orderItem.setProductName(product.getName());
|
||||
//orderItem.setProductAttr(cartPromotionItem.getProductAttr());
|
||||
orderItem.setProductBrand(product.getBrandName());
|
||||
orderItem.setProductSn(product.getProductSn());
|
||||
orderItem.setProductPrice(price);
|
||||
orderItem.setProductQuantity(orderParam.getQuantity());
|
||||
orderItem.setProductSkuId(skuStock.getId());
|
||||
orderItem.setProductSkuCode(skuStock.getSkuCode());
|
||||
orderItem.setProductCategoryId(product.getProductCategoryId());
|
||||
orderItem.setSp1(skuStock.getSp1());
|
||||
orderItem.setSp2(skuStock.getSp2());
|
||||
orderItem.setSp3(skuStock.getSp3());
|
||||
orderItem.setPromotionName("无优惠");
|
||||
orderItem.setPromotionAmount(new BigDecimal(0));
|
||||
orderItem.setGiftIntegration(0);
|
||||
orderItem.setGiftGrowth(0);
|
||||
orderItem.setCouponAmount(new BigDecimal(0));
|
||||
orderItem.setIntegrationAmount(new BigDecimal(0));
|
||||
orderItem.setRealAmount(new BigDecimal(0));
|
||||
//生成订单商品信息
|
||||
OmsOrderItem orderItem = new OmsOrderItem();
|
||||
orderItem.setOrderId(order.getId());
|
||||
orderItem.setOrderSn(order.getOrderSn());
|
||||
orderItem.setProductId(product.getId());
|
||||
orderItem.setProductPic(skuStock.getPic());
|
||||
orderItem.setProductName(product.getName());
|
||||
//orderItem.setProductAttr(cartPromotionItem.getProductAttr());
|
||||
orderItem.setProductBrand(product.getBrandName());
|
||||
orderItem.setProductSn(product.getProductSn());
|
||||
orderItem.setProductPrice(price);
|
||||
orderItem.setProductQuantity(orderParam.getQuantity());
|
||||
orderItem.setProductSkuId(skuStock.getId());
|
||||
orderItem.setProductSkuCode(skuStock.getSkuCode());
|
||||
orderItem.setProductCategoryId(product.getProductCategoryId());
|
||||
orderItem.setSp1(skuStock.getSp1());
|
||||
orderItem.setSp2(skuStock.getSp2());
|
||||
orderItem.setSp3(skuStock.getSp3());
|
||||
orderItem.setPromotionName("无优惠");
|
||||
orderItem.setPromotionAmount(new BigDecimal(0));
|
||||
orderItem.setGiftIntegration(0);
|
||||
orderItem.setGiftGrowth(0);
|
||||
orderItem.setCouponAmount(new BigDecimal(0));
|
||||
orderItem.setIntegrationAmount(new BigDecimal(0));
|
||||
orderItem.setRealAmount(new BigDecimal(0));
|
||||
|
||||
orderItemMapper.insert(orderItem);
|
||||
orderItemMapper.insert(orderItem);
|
||||
|
||||
//超时未支付,自动取消订单
|
||||
//分钟转换成毫秒
|
||||
long delayTimes = orderSetting.getNormalOrderOvertime() * 60 * 1000;
|
||||
cancelOrderSender.sendMessage(order.getId(), delayTimes);
|
||||
//超时未支付,自动取消订单
|
||||
//分钟转换成毫秒
|
||||
long delayTimes = orderSetting.getNormalOrderOvertime() * 60 * 1000;
|
||||
cancelOrderSender.sendMessage(order.getId(), delayTimes);
|
||||
|
||||
result.put("orderId", order.getId());
|
||||
result.put("totalAmount", order.getPayAmount());
|
||||
}
|
||||
result.put("orderId", order.getId());
|
||||
result.put("totalAmount", order.getPayAmount());
|
||||
}
|
||||
|
||||
return CommonResult.success(result, "下单成功");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user