From df3f042b2c1675b346cb3fa7e26cb261dfb62c1e Mon Sep 17 00:00:00 2001
From: axindata <1851789500@qq.com>
Date: Tue, 18 Feb 2025 13:58:16 +0800
Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E4=B8=93=E5=8C=BA=E7=9A=84?=
=?UTF-8?q?=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../buy507/mall/mapper/PmsProductMapper.java | 8 +-
.../buy507/mall/mapper/PmsProductMapper.xml | 10 +
.../impl/OmsPortalOrderServiceImpl.java | 623 +++++++++---------
3 files changed, 345 insertions(+), 296 deletions(-)
diff --git a/mall-dao/src/main/java/com/buy507/mall/mapper/PmsProductMapper.java b/mall-dao/src/main/java/com/buy507/mall/mapper/PmsProductMapper.java
index 180c192..d86dc19 100644
--- a/mall-dao/src/main/java/com/buy507/mall/mapper/PmsProductMapper.java
+++ b/mall-dao/src/main/java/com/buy507/mall/mapper/PmsProductMapper.java
@@ -37,6 +37,10 @@ public interface PmsProductMapper {
int updateByPrimaryKey(PmsProduct record);
PmsProduct getProductInfoById(Long id);
-
-
+
+ PmsProduct getProductByOrderSn(String orderSn);
+
+
+
+
}
\ No newline at end of file
diff --git a/mall-dao/src/main/resources/com/buy507/mall/mapper/PmsProductMapper.xml b/mall-dao/src/main/resources/com/buy507/mall/mapper/PmsProductMapper.xml
index 5d3559e..1f1b926 100644
--- a/mall-dao/src/main/resources/com/buy507/mall/mapper/PmsProductMapper.xml
+++ b/mall-dao/src/main/resources/com/buy507/mall/mapper/PmsProductMapper.xml
@@ -921,4 +921,14 @@
where ppfr.product_id=#{id,jdbcType=BIGINT} limit 1
+
\ No newline at end of file
diff --git a/mall-portal/src/main/java/com/buy507/mall/portal/service/impl/OmsPortalOrderServiceImpl.java b/mall-portal/src/main/java/com/buy507/mall/portal/service/impl/OmsPortalOrderServiceImpl.java
index 7b99908..e198271 100644
--- a/mall-portal/src/main/java/com/buy507/mall/portal/service/impl/OmsPortalOrderServiceImpl.java
+++ b/mall-portal/src/main/java/com/buy507/mall/portal/service/impl/OmsPortalOrderServiceImpl.java
@@ -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 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 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 orderItemList = orderItemMapper.selectByExample(example);
+
+ OrderItemResult orderItemResult = null;
+ orderResult.setProductsNum(orderItemList.size());
+ List 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 result = new HashMap<>();
- if (product != null) {
+ Map 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, "下单成功");
- }
+ }
/**
--
2.36.6