@@ -329,157 +329,157 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
}
}
@Override
@Override
public OrderResult getMemberOrderDetailInfo ( Long orderId ) {
public OrderResult getMemberOrderDetailInfo ( Long orderId ) {
UmsMember loginMember = memberService . getCurrentMember ( ) ;
UmsMember loginMember = memberService . getCurrentMember ( ) ;
OrderResult orderResult = new OrderResult ( ) ;
OrderResult orderResult = new OrderResult ( ) ;
OmsOrder order = orderMapper . selectByPrimaryKey ( orderId ) ;
OmsOrder order = orderMapper . selectByPrimaryKey ( orderId ) ;
//删除状态: 0->未删除; 1->已删除
//删除状态: 0->未删除; 1->已删除
if ( order ! = null & & order . getMemberId ( ) . equals ( loginMember . getId ( ) ) & & order . getDeleteStatus ( ) = = 0 ) {
if ( order ! = null & & order . getMemberId ( ) . equals ( loginMember . getId ( ) ) & & order . getDeleteStatus ( ) = = 0 ) {
orderResult . setOrderId ( order . getId ( ) ) ;
orderResult . setOrderId ( order . getId ( ) ) ;
orderResult . setOrderSn ( order . getOrderSn ( ) ) ;
orderResult . setOrderSn ( order . getOrderSn ( ) ) ;
orderResult . setCreateTime ( order . getCreateTime ( ) ) ;
orderResult . setCreateTime ( order . getCreateTime ( ) ) ;
orderResult . setPayAmount ( order . getPayAmount ( ) ) ;
orderResult . setPayAmount ( order . getPayAmount ( ) ) ;
orderResult . setOrderStatus ( order . getStatus ( ) ) ;
orderResult . setOrderStatus ( order . getStatus ( ) ) ;
orderResult . setDeliveryType ( order . getDeliveryType ( ) ) ;
orderResult . setDeliveryType ( order . getDeliveryType ( ) ) ;
if ( order . getStatus ( ) = = 0 ) {
if ( order . getStatus ( ) = = 0 ) {
orderResult . setOrderStatusName ( " 待付款 " ) ;
orderResult . setOrderStatusName ( " 待付款 " ) ;
if ( order . getPayType ( ) ! = null & & order . getPayType ( ) = = 3 ) {
if ( order . getPayType ( ) ! = null & & order . getPayType ( ) = = 3 ) {
orderResult . setOrderStatusName ( " 已付款待审核 " ) ;
orderResult . setOrderStatusName ( " 已付款待审核 " ) ;
}
}
}
}
if ( order . getStatus ( ) = = 1 ) {
if ( order . getStatus ( ) = = 1 ) {
orderResult . setOrderStatusName ( " 待发货 " ) ;
orderResult . setOrderStatusName ( " 待发货 " ) ;
}
}
if ( order . getStatus ( ) = = 2 ) {
if ( order . getStatus ( ) = = 2 ) {
// 提货方式: 0->自提; 1->物流
// 提货方式: 0->自提; 1->物流
if ( order . getDeliveryType ( ) = = 0 ) {
if ( order . getDeliveryType ( ) = = 0 ) {
orderResult . setOrderStatusName ( " 待提货 " ) ;
orderResult . setOrderStatusName ( " 待提货 " ) ;
} else {
} else {
orderResult . setOrderStatusName ( " 待收货 " ) ;
orderResult . setOrderStatusName ( " 待收货 " ) ;
}
}
}
}
if ( order . getStatus ( ) = = 3 ) {
if ( order . getStatus ( ) = = 3 ) {
orderResult . setOrderStatusName ( " 交易完成 " ) ;
orderResult . setOrderStatusName ( " 交易完成 " ) ;
if ( order . getCommentTime ( ) = = null ) {
if ( order . getCommentTime ( ) = = null ) {
orderResult . setCommentStatus ( 0 ) ; //未评价
orderResult . setCommentStatus ( 0 ) ; //未评价
} else {
} else {
orderResult . setCommentStatus ( 1 ) ; //已评价
orderResult . setCommentStatus ( 1 ) ; //已评价
}
}
}
}
if ( order . getStatus ( ) = = 4 ) {
if ( order . getStatus ( ) = = 4 ) {
orderResult . setOrderStatusName ( " 交易关闭 " ) ;
orderResult . setOrderStatusName ( " 交易关闭 " ) ;
orderResult . setOrderStatus ( 4 ) ;
orderResult . setOrderStatus ( 4 ) ;
}
}
orderResult . setFreightAmount ( order . getFreightAmount ( ) ) ;
orderResult . setFreightAmount ( order . getFreightAmount ( ) ) ;
orderResult . setNote ( order . getNote ( ) ) ;
orderResult . setNote ( order . getNote ( ) ) ;
orderResult . setDeliveryCompany ( order . getDeliveryCompany ( ) ) ;
orderResult . setDeliveryCompany ( order . getDeliveryCompany ( ) ) ;
orderResult . setDeliverySn ( order . getDeliverySn ( ) ) ;
orderResult . setDeliverySn ( order . getDeliverySn ( ) ) ;
orderResult . setOrderType ( order . getOrderType ( ) ) ;
orderResult . setOrderType ( order . getOrderType ( ) ) ;
orderResult . setPaymentTime ( new Date ( ) ) ;
orderResult . setPaymentTime ( new Date ( ) ) ;
// 获取商品信息,判断是否是积分专区商品
// 获取商品信息,判断是否是积分专区商品
PmsProduct product = productMapper . getProductByOrderSn ( order . getOrderSn ( ) ) ;
PmsProduct product = productMapper . getProductByOrderSn ( order . getOrderSn ( ) ) ;
System . out . println ( " hello " ) ;
System . out . println ( " hello " ) ;
boolean isPointsExchangeStatus = product ! = null & & product . getPointsExchangeStatus ( ) = = 1 ;
boolean isPointsExchangeStatus = product ! = null & & product . getPointsExchangeStatus ( ) = = 1 ;
//支付类型: 0->未支付; 1->支付宝; 2->微信; 3->线下支付; 4->积分支付
//支付类型: 0->未支付; 1->支付宝; 2->微信; 3->线下支付; 4->积分支付
//判断是否为积分专区商品
//判断是否为积分专区商品
if ( isPointsExchangeStatus ) {
if ( isPointsExchangeStatus ) {
orderResult . setIntergrationPrice ( product . getIntergrationPrice ( ) ) ;
orderResult . setIntergrationPrice ( product . getIntergrationPrice ( ) ) ;
orderResult . setIntergrationExchange ( product . getPointsExchangeStatus ( ) ) ;
orderResult . setIntergrationExchange ( product . getPointsExchangeStatus ( ) ) ;
orderResult . setPayType ( order . getPayType ( ) ) ;
orderResult . setPayType ( order . getPayType ( ) ) ;
if ( order . getPayType ( ) = = 0 ) {
if ( order . getPayType ( ) = = 0 ) {
orderResult . setPayTypeName ( " 未支付 " ) ;
orderResult . setPayTypeName ( " 未支付 " ) ;
}
}
} else {
} else {
// 如果不是积分兑换专区商品,则继续使用其他支付方式
// 如果不是积分兑换专区商品,则继续使用其他支付方式
if ( order . getPayType ( ) ! = null ) {
if ( order . getPayType ( ) ! = null ) {
orderResult . setPayType ( order . getPayType ( ) ) ;
orderResult . setPayType ( order . getPayType ( ) ) ;
if ( order . getPayType ( ) = = 0 ) {
if ( order . getPayType ( ) = = 0 ) {
orderResult . setPayTypeName ( " 未支付 " ) ;
orderResult . setPayTypeName ( " 未支付 " ) ;
} else if ( order . getPayType ( ) = = 1 ) {
} else if ( order . getPayType ( ) = = 1 ) {
orderResult . setPayTypeName ( " 支付宝支付 " ) ;
orderResult . setPayTypeName ( " 支付宝支付 " ) ;
} else if ( order . getPayType ( ) = = 2 ) {
} else if ( order . getPayType ( ) = = 2 ) {
orderResult . setPayTypeName ( " 微信支付 " ) ;
orderResult . setPayTypeName ( " 微信支付 " ) ;
} else if ( order . getPayType ( ) = = 3 ) { //mcoo todo
} else if ( order . getPayType ( ) = = 3 ) { //mcoo todo
orderResult . setPayTypeName ( " 线下支付 " ) ;
orderResult . setPayTypeName ( " 线下支付 " ) ;
DmsOfflinePaymentRecord paymentRecord = offlinePaymentRecordMapper . selectOneByOrderId ( orderId ) ;
DmsOfflinePaymentRecord paymentRecord = offlinePaymentRecordMapper . selectOneByOrderId ( orderId ) ;
DmsSellerBankAccount bankAccount = sellerBankAccountMapper . selectOneById ( paymentRecord . getSellerBankAccountId ( ) ) ;
DmsSellerBankAccount bankAccount = sellerBankAccountMapper . selectOneById ( paymentRecord . getSellerBankAccountId ( ) ) ;
OfflinePaymentRecordResult recordResult = new OfflinePaymentRecordResult ( ) ;
OfflinePaymentRecordResult recordResult = new OfflinePaymentRecordResult ( ) ;
BeanUtils . copyProperties ( paymentRecord , recordResult ) ;
BeanUtils . copyProperties ( paymentRecord , recordResult ) ;
BeanUtils . copyProperties ( bankAccount , recordResult ) ;
BeanUtils . copyProperties ( bankAccount , recordResult ) ;
if ( recordResult . getConfirmStatus ( ) = = 1 ) {
if ( recordResult . getConfirmStatus ( ) = = 1 ) {
recordResult . setConfirmStatusName ( " 已审核 " ) ;
recordResult . setConfirmStatusName ( " 已审核 " ) ;
} else {
} else {
recordResult . setConfirmStatusName ( " 未审核 " ) ;
recordResult . setConfirmStatusName ( " 未审核 " ) ;
}
}
orderResult . setPaymentRecord ( recordResult ) ;
orderResult . setPaymentRecord ( recordResult ) ;
} else {
} else {
orderResult . setPayTypeName ( " 积分支付 " ) ;
orderResult . setPayTypeName ( " 积分支付 " ) ;
}
}
} else {
} else {
orderResult . setPayType ( 0 ) ;
orderResult . setPayType ( 0 ) ;
orderResult . setPayTypeName ( " 未支付 " ) ;
orderResult . setPayTypeName ( " 未支付 " ) ;
}
}
}
}
orderResult . setDeliveryTime ( order . getDeliveryTime ( ) ) ;
orderResult . setDeliveryTime ( order . getDeliveryTime ( ) ) ;
orderResult . setReceiveTime ( order . getReceiveTime ( ) ) ;
orderResult . setReceiveTime ( order . getReceiveTime ( ) ) ;
orderResult . setCommentTime ( order . getCommentTime ( ) ) ;
orderResult . setCommentTime ( order . getCommentTime ( ) ) ;
orderResult . setOrderStatus ( 0 ) ;
orderResult . setOrderStatus ( 0 ) ;
//0->不开发票; 1->电子发票; 2->纸质发票
//0->不开发票; 1->电子发票; 2->纸质发票
if ( order . getBillType ( ) ! = null ) {
if ( order . getBillType ( ) ! = null ) {
orderResult . setBillType ( order . getBillType ( ) ) ;
orderResult . setBillType ( order . getBillType ( ) ) ;
if ( order . getBillType ( ) = = 1 ) {
if ( order . getBillType ( ) = = 1 ) {
orderResult . setBillTypeName ( " 电子发票 " ) ;
orderResult . setBillTypeName ( " 电子发票 " ) ;
} else if ( order . getBillType ( ) = = 2 ) {
} else if ( order . getBillType ( ) = = 2 ) {
orderResult . setBillTypeName ( " 纸质发票 " ) ;
orderResult . setBillTypeName ( " 纸质发票 " ) ;
} else {
} else {
orderResult . setBillTypeName ( " 不开发票 " ) ;
orderResult . setBillTypeName ( " 不开发票 " ) ;
}
}
} else {
} else {
orderResult . setBillType ( 0 ) ;
orderResult . setBillType ( 0 ) ;
orderResult . setBillTypeName ( " 不开发票 " ) ;
orderResult . setBillTypeName ( " 不开发票 " ) ;
}
}
orderResult . setBillHeader ( order . getBillHeader ( ) ) ;
orderResult . setBillHeader ( order . getBillHeader ( ) ) ;
orderResult . setBillContent ( order . getBillContent ( ) ) ;
orderResult . setBillContent ( order . getBillContent ( ) ) ;
orderResult . setReceiverName ( order . getReceiverName ( ) ) ;
orderResult . setReceiverName ( order . getReceiverName ( ) ) ;
orderResult . setReceiverPhone ( order . getReceiverPhone ( ) ) ;
orderResult . setReceiverPhone ( order . getReceiverPhone ( ) ) ;
orderResult . setReceiverProvince ( order . getReceiverProvince ( ) ) ;
orderResult . setReceiverProvince ( order . getReceiverProvince ( ) ) ;
orderResult . setReceiverCity ( order . getReceiverCity ( ) ) ;
orderResult . setReceiverCity ( order . getReceiverCity ( ) ) ;
orderResult . setReceiverRegion ( order . getReceiverRegion ( ) ) ;
orderResult . setReceiverRegion ( order . getReceiverRegion ( ) ) ;
orderResult . setReceiverDetailAddress ( order . getReceiverDetailAddress ( ) ) ;
orderResult . setReceiverDetailAddress ( order . getReceiverDetailAddress ( ) ) ;
OmsOrderItemExample example = new OmsOrderItemExample ( ) ;
OmsOrderItemExample example = new OmsOrderItemExample ( ) ;
example . createCriteria ( ) . andOrderIdEqualTo ( orderId ) ;
example . createCriteria ( ) . andOrderIdEqualTo ( orderId ) ;
List < OmsOrderItem > orderItemList = orderItemMapper . selectByExample ( example ) ;
List < OmsOrderItem > orderItemList = orderItemMapper . selectByExample ( example ) ;
OrderItemResult orderItemResult = null ;
OrderItemResult orderItemResult = null ;
orderResult . setProductsNum ( orderItemList . size ( ) ) ;
orderResult . setProductsNum ( orderItemList . size ( ) ) ;
List < OrderItemResult > orderItemResultList = new ArrayList < > ( ) ;
List < OrderItemResult > orderItemResultList = new ArrayList < > ( ) ;
for ( OmsOrderItem orderItem : orderItemList ) {
for ( OmsOrderItem orderItem : orderItemList ) {
orderItemResult = new OrderItemResult ( ) ;
orderItemResult = new OrderItemResult ( ) ;
orderItemResult . setOrderId ( order . getId ( ) ) ;
orderItemResult . setOrderId ( order . getId ( ) ) ;
orderItemResult . setOrderSn ( order . getOrderSn ( ) ) ;
orderItemResult . setOrderSn ( order . getOrderSn ( ) ) ;
orderItemResult . setProductBrand ( orderItem . getProductBrand ( ) ) ;
orderItemResult . setProductBrand ( orderItem . getProductBrand ( ) ) ;
orderItemResult . setProductId ( orderItem . getProductId ( ) ) ;
orderItemResult . setProductId ( orderItem . getProductId ( ) ) ;
orderItemResult . setProductName ( orderItem . getProductName ( ) ) ;
orderItemResult . setProductName ( orderItem . getProductName ( ) ) ;
orderItemResult . setProductPic ( orderItem . getProductPic ( ) ) ;
orderItemResult . setProductPic ( orderItem . getProductPic ( ) ) ;
orderItemResult . setProductPrice ( orderItem . getProductPrice ( ) ) ;
orderItemResult . setProductPrice ( orderItem . getProductPrice ( ) ) ;
orderItemResult . setProductQuantity ( orderItem . getProductQuantity ( ) ) ;
orderItemResult . setProductQuantity ( orderItem . getProductQuantity ( ) ) ;
orderItemResult . setIntergrationPrice ( product . getIntergrationPrice ( ) ) ;
orderItemResult . setIntergrationPrice ( product . getIntergrationPrice ( ) ) ;
orderItemResult . setIntergrationExchange ( product . getPointsExchangeStatus ( ) ) ;
orderItemResult . setIntergrationExchange ( product . getPointsExchangeStatus ( ) ) ;
orderItemResult . setSp1 ( orderItem . getSp1 ( ) ) ;
orderItemResult . setSp1 ( orderItem . getSp1 ( ) ) ;
orderItemResult . setSp2 ( orderItem . getSp2 ( ) ) ;
orderItemResult . setSp2 ( orderItem . getSp2 ( ) ) ;
orderItemResult . setSp3 ( orderItem . getSp3 ( ) ) ;
orderItemResult . setSp3 ( orderItem . getSp3 ( ) ) ;
orderItemResultList . add ( orderItemResult ) ;
orderItemResultList . add ( orderItemResult ) ;
}
}
orderResult . setOrderItem ( orderItemResultList ) ;
orderResult . setOrderItem ( orderItemResultList ) ;
@@ -745,39 +745,39 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
/**
/**
* 直接购买,根据提交信息生成订单
* 直接购买,根据提交信息生成订单
*/
*/
@Transactional ( rollbackFor = Exception . class )
@Transactional ( rollbackFor = Exception . class )
@Override
@Override
/**
/**
* 创建订单
* 创建订单
*/
*/
public CommonResult createOrder ( OrderParam orderParam ) {
public CommonResult createOrder ( OrderParam orderParam ) {
//orderParam.setSkuId(98L);
//orderParam.setSkuId(98L);
if ( orderParam . getSkuId ( ) = = null ) {
if ( orderParam . getSkuId ( ) = = null ) {
return CommonResult . validateFailed ( " 商品SKU不能为空 " ) ;
return CommonResult . validateFailed ( " 商品SKU不能为空 " ) ;
}
}
if ( orderParam . getDeliveryType ( ) = = null | | ( orderParam . getDeliveryType ( ) ! = 0 & & orderParam . getDeliveryType ( ) ! = 1 ) ) {
if ( orderParam . getDeliveryType ( ) = = null | | ( orderParam . getDeliveryType ( ) ! = 0 & & orderParam . getDeliveryType ( ) ! = 1 ) ) {
return CommonResult . validateFailed ( " 提货方式不能为空 " ) ;
return CommonResult . validateFailed ( " 提货方式不能为空 " ) ;
}
}
if ( orderParam . getMemberReceiveAddressId ( ) = = null ) {
if ( orderParam . getMemberReceiveAddressId ( ) = = null ) {
return CommonResult . validateFailed ( " 会员收货地址不能为空 " ) ;
return CommonResult . validateFailed ( " 会员收货地址不能为空 " ) ;
}
}
UmsMemberReceiveAddress address = memberReceiveAddressMapper . selectOneById ( orderParam . getMemberReceiveAddressId ( ) ) ;
UmsMemberReceiveAddress address = memberReceiveAddressMapper . selectOneById ( orderParam . getMemberReceiveAddressId ( ) ) ;
if ( address = = null ) {
if ( address = = null ) {
return CommonResult . validateFailed ( " 未查询到会员收货地址 " ) ;
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 ( " 未查询到商品信息 " ) ;
}
}
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 = productMapper . getPrimaryKey ( skuStock . getProductId ( ) ) ;
PmsProduct product = productMapper . getPrimaryKey ( skuStock . getProductId ( ) ) ;
@@ -795,190 +795,190 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
totalPointsAmount = pointsPrice . multiply ( new BigDecimal ( orderParam . getQuantity ( ) ) ) ;
totalPointsAmount = pointsPrice . multiply ( new BigDecimal ( orderParam . getQuantity ( ) ) ) ;
}
}
//判断商品是否都有库存 (库存 - 锁定库存 = 真实库存)
//判断商品是否都有库存 (库存 - 锁定库存 = 真实库存)
if ( ( skuStock . getStock ( ) - skuStock . getLockStock ( ) ) < orderParam . getQuantity ( ) ) {
if ( ( skuStock . getStock ( ) - skuStock . getLockStock ( ) ) < orderParam . getQuantity ( ) ) {
return CommonResult . validateFailed ( " 库存不足,无法下单 " ) ;
return CommonResult . validateFailed ( " 库存不足,无法下单 " ) ;
}
}
Map < String , Object > result = new HashMap < > ( ) ;
Map < String , Object > result = new HashMap < > ( ) ;
if ( product ! = null ) {
if ( product ! = null ) {
UmsMember member = memberMapper . selectByPrimaryKey ( memberService . getCurrentMember ( ) . getId ( ) ) ;
UmsMember member = memberMapper . selectByPrimaryKey ( memberService . getCurrentMember ( ) . getId ( ) ) ;
BigDecimal discount = commonService . getDiscount ( member . getId ( ) ) ;
BigDecimal discount = commonService . getDiscount ( member . getId ( ) ) ;
if ( discount ! = null ) {
if ( discount ! = null ) {
price = skuStock . getPrice ( ) . multiply ( discount ) . setScale ( 2 , BigDecimal . ROUND_HALF_UP ) ;
price = skuStock . getPrice ( ) . multiply ( discount ) . setScale ( 2 , BigDecimal . ROUND_HALF_UP ) ;
}
}
BigDecimal totalAmount = new BigDecimal ( 0 ) ;
BigDecimal totalAmount = new BigDecimal ( 0 ) ;
BigDecimal zero = new BigDecimal ( 0 ) ;
BigDecimal zero = new BigDecimal ( 0 ) ;
totalAmount = price . multiply ( new BigDecimal ( orderParam . getQuantity ( ) ) ) ;
totalAmount = price . multiply ( new BigDecimal ( orderParam . getQuantity ( ) ) ) ;
if ( orderParam . getIntegration ( ) = = null ) {
if ( orderParam . getIntegration ( ) = = null ) {
orderParam . setIntegration ( zero ) ;
orderParam . setIntegration ( zero ) ;
}
}
//先判断积分是否大于0, 大于0表示使用了积分支付
//先判断积分是否大于0, 大于0表示使用了积分支付
//flag 等于1表示使用积分支付 判断用户积分是否充足
//flag 等于1表示使用积分支付 判断用户积分是否充足
//flag = -1,表示integration小于0; flag = 0,表示integration等于0; flag = 1,表示integration大于0;
//flag = -1,表示integration小于0; flag = 0,表示integration等于0; flag = 1,表示integration大于0;
//int integerationFlag = orderParam.getIntegration().compareTo(new BigDecimal(0)); //mcoo
//int integerationFlag = orderParam.getIntegration().compareTo(new BigDecimal(0)); //mcoo
int integerationFlag = 0 ;
int integerationFlag = 0 ;
if ( integerationFlag = = 1 ) {
if ( integerationFlag = = 1 ) {
int flag = member . getBalance ( ) . compareTo ( orderParam . getIntegration ( ) ) ;
int flag = member . getBalance ( ) . compareTo ( orderParam . getIntegration ( ) ) ;
//flag = -1,表示balance小于integration; flag = 0,表示balance等于integration; flag = 1,表示balance大于integration;
//flag = -1,表示balance小于integration; flag = 0,表示balance等于integration; flag = 1,表示balance大于integration;
/*if(flag == -1) {
/*if(flag == -1) {
return CommonResult.validateFailed("森态积分不足,无法抵扣");
return CommonResult.validateFailed("森态积分不足,无法抵扣");
}*/
}*/
}
}
while ( true ) {
while ( true ) {
long time = System . currentTimeMillis ( ) + RedisLock . TIMEOUT ;
long time = System . currentTimeMillis ( ) + RedisLock . TIMEOUT ;
if ( redisLock . lock ( String . valueOf ( skuStock . getProductId ( ) ) , String . valueOf ( time ) ) ) {
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 ( ) ) {
if ( ( skuStock . getStock ( ) - skuStock . getLockStock ( ) ) < orderParam . getQuantity ( ) ) {
return CommonResult . validateFailed ( " 库存不足,无法下单 " ) ;
return CommonResult . validateFailed ( " 库存不足,无法下单 " ) ;
}
}
skuStock . setLockStock ( skuStock . getLockStock ( ) + orderParam . getQuantity ( ) ) ;
skuStock . setLockStock ( skuStock . getLockStock ( ) + orderParam . getQuantity ( ) ) ;
skuStockMapper . updateByPrimaryKey ( skuStock ) ;
skuStockMapper . updateByPrimaryKey ( skuStock ) ;
redisLock . unlock ( String . valueOf ( skuStock . getProductId ( ) ) , String . valueOf ( time ) ) ;
redisLock . unlock ( String . valueOf ( skuStock . getProductId ( ) ) , String . valueOf ( time ) ) ;
break ;
break ;
}
}
}
}
//生成订单信息
//生成订单信息
OmsOrder order = new OmsOrder ( ) ;
OmsOrder order = new OmsOrder ( ) ;
order . setTotalAmount ( totalAmount ) ; // 订单总金额
order . setTotalAmount ( totalAmount ) ; // 订单总金额
order . setIntegrationAmount ( zero ) ; // 积分部分金额设为零
order . setIntegrationAmount ( zero ) ; // 积分部分金额设为零
order . setIntegrationAmount ( orderParam . getIntegration ( ) = = null ? zero : orderParam . getIntegration ( ) ) ;
order . setIntegrationAmount ( orderParam . getIntegration ( ) = = null ? zero : orderParam . getIntegration ( ) ) ;
if ( integerationFlag = = 1 ) {
if ( integerationFlag = = 1 ) {
int flag = orderParam . getIntegration ( ) . compareTo ( totalAmount ) ;
int flag = orderParam . getIntegration ( ) . compareTo ( totalAmount ) ;
BigDecimal integeration = new BigDecimal ( 0 ) ;
BigDecimal integeration = new BigDecimal ( 0 ) ;
//flag = -1,表示integration小于totalAmount; flag = 0,表示integration等于totalAmount; flag = 1,表示integration大于totalAmount;
//flag = -1,表示integration小于totalAmount; flag = 0,表示integration等于totalAmount; flag = 1,表示integration大于totalAmount;
//如果传入的积分小于实际支付金额,用实际支付金额减去抵扣积分。
//如果传入的积分小于实际支付金额,用实际支付金额减去抵扣积分。
//如果传入的积分等于或者大于实际支付金额,表示全额抵扣
//如果传入的积分等于或者大于实际支付金额,表示全额抵扣
if ( flag = = - 1 ) {
if ( flag = = - 1 ) {
order . setPayAmount ( totalAmount . subtract ( orderParam . getIntegration ( ) ) ) ; //实际支付金额
order . setPayAmount ( totalAmount . subtract ( orderParam . getIntegration ( ) ) ) ; //实际支付金额
order . setIntegrationAmount ( orderParam . getIntegration ( ) ) ;
order . setIntegrationAmount ( orderParam . getIntegration ( ) ) ;
integeration = orderParam . getIntegration ( ) ;
integeration = orderParam . getIntegration ( ) ;
} else {
} else {
order . setPayAmount ( zero ) ;
order . setPayAmount ( zero ) ;
order . setIntegrationAmount ( totalAmount ) ;
order . setIntegrationAmount ( totalAmount ) ;
integeration = totalAmount ;
integeration = totalAmount ;
}
}
//冻结用户余额
//冻结用户余额
member = memberMapper . selectByPrimaryKey ( member . getId ( ) ) ;
member = memberMapper . selectByPrimaryKey ( member . getId ( ) ) ;
//flag = -1,表示balance小于integeration; flag = 0,表示balance等于integeration; flag = 1,表示balance大于integeration;
//flag = -1,表示balance小于integeration; flag = 0,表示balance等于integeration; flag = 1,表示balance大于integeration;
flag = member . getBalance ( ) . compareTo ( integeration ) ;
flag = member . getBalance ( ) . compareTo ( integeration ) ;
/*if(flag == -1) {
/*if(flag == -1) {
throw new RuntimeException("森态积分不足,无法抵扣");
throw new RuntimeException("森态积分不足,无法抵扣");
}*/
}*/
member . setBalance ( member . getBalance ( ) . subtract ( integeration ) ) ; //修改余额值
member . setBalance ( member . getBalance ( ) . subtract ( integeration ) ) ; //修改余额值
member . setFreeze ( member . getFreeze ( ) . add ( integeration ) ) ; //修改冻结值
member . setFreeze ( member . getFreeze ( ) . add ( integeration ) ) ; //修改冻结值
memberMapper . updateByPrimaryKey ( member ) ;
memberMapper . updateByPrimaryKey ( member ) ;
} else {
} else {
order . setPayAmount ( totalAmount ) ; //实际支付金额
order . setPayAmount ( totalAmount ) ; //实际支付金额
order . setIntegrationAmount ( zero ) ;
order . setIntegrationAmount ( zero ) ;
}
}
Date date = new Date ( ) ;
Date date = new Date ( ) ;
order . setMemberId ( member . getId ( ) ) ;
order . setMemberId ( member . getId ( ) ) ;
order . setCreateTime ( date ) ;
order . setCreateTime ( date ) ;
order . setModifyTime ( date ) ;
order . setModifyTime ( date ) ;
order . setMemberUsername ( member . getUsername ( ) ) ;
order . setMemberUsername ( member . getUsername ( ) ) ;
order . setFreightAmount ( zero ) ; //运费
order . setFreightAmount ( zero ) ; //运费
order . setPayType ( isPointsExchangeStatus ? 4 : 0 ) ; // payType为4代表积分支付
order . setPayType ( isPointsExchangeStatus ? 4 : 0 ) ; // payType为4代表积分支付
order . setPromotionAmount ( zero ) ; //促销优化金额(促销价、满减、阶梯价)
order . setPromotionAmount ( zero ) ; //促销优化金额(促销价、满减、阶梯价)
order . setCouponAmount ( zero ) ;
order . setCouponAmount ( zero ) ;
order . setDiscountAmount ( zero ) ;
order . setDiscountAmount ( zero ) ;
order . setPayType ( 0 ) ; //支付方式: 0->未支付; 1->支付宝; 2->微信
order . setPayType ( 0 ) ; //支付方式: 0->未支付; 1->支付宝; 2->微信
order . setSourceType ( 1 ) ; //订单来源: 0->PC订单; 1->app订单
order . setSourceType ( 1 ) ; //订单来源: 0->PC订单; 1->app订单
order . setDeliveryType ( 1 ) ; //提货方式: 0->自提; 1->物流 默认为1 mcoo
order . setDeliveryType ( 1 ) ; //提货方式: 0->自提; 1->物流 默认为1 mcoo
//生成订单号
//生成订单号
order . setOrderSn ( generateOrderSn ( order ) ) ;
order . setOrderSn ( generateOrderSn ( order ) ) ;
//订单状态: 0->待付款; 1->待发货; 2->已发货; 3->已完成; 4->已关闭; 5->无效订单
//订单状态: 0->待付款; 1->待发货; 2->已发货; 3->已完成; 4->已关闭; 5->无效订单
order . setStatus ( 0 ) ;
order . setStatus ( 0 ) ;
//订单类型: 0->正常订单; 1->秒杀订单 2->5连订单
//订单类型: 0->正常订单; 1->秒杀订单 2->5连订单
order . setOrderType ( 0 ) ;
order . setOrderType ( 0 ) ;
OmsOrderSetting orderSetting = orderSettingMapper . selectByPrimaryKey ( 1L ) ;
OmsOrderSetting orderSetting = orderSettingMapper . selectByPrimaryKey ( 1L ) ;
order . setAutoConfirmDay ( orderSetting . getConfirmOvertime ( ) ) ;
order . setAutoConfirmDay ( orderSetting . getConfirmOvertime ( ) ) ;
order . setIntegration ( 0 ) ;
order . setIntegration ( 0 ) ;
order . setGrowth ( 0 ) ;
order . setGrowth ( 0 ) ;
//收货人信息:姓名、电话、邮编、地址
//收货人信息:姓名、电话、邮编、地址
order . setReceiverName ( address . getName ( ) ) ;
order . setReceiverName ( address . getName ( ) ) ;
order . setReceiverPhone ( address . getPhoneNumber ( ) ) ;
order . setReceiverPhone ( address . getPhoneNumber ( ) ) ;
order . setReceiverPostCode ( address . getPostCode ( ) ) ;
order . setReceiverPostCode ( address . getPostCode ( ) ) ;
order . setReceiverProvince ( address . getProvince ( ) ) ;
order . setReceiverProvince ( address . getProvince ( ) ) ;
order . setReceiverCity ( address . getCity ( ) ) ;
order . setReceiverCity ( address . getCity ( ) ) ;
order . setReceiverRegion ( address . getRegion ( ) ) ;
order . setReceiverRegion ( address . getRegion ( ) ) ;
order . setReceiverDetailAddress ( address . getDetailAddress ( ) ) ;
order . setReceiverDetailAddress ( address . getDetailAddress ( ) ) ;
order . setNote ( orderParam . getNote ( ) = = null ? null : orderParam . getNote ( ) ) ;
order . setNote ( orderParam . getNote ( ) = = null ? null : orderParam . getNote ( ) ) ;
//确认收货状态: 0->未确认; 1->已确认
//确认收货状态: 0->未确认; 1->已确认
order . setConfirmStatus ( 0 ) ;
order . setConfirmStatus ( 0 ) ;
//删除状态: 0->未删除; 1->已删除
//删除状态: 0->未删除; 1->已删除
order . setDeleteStatus ( 0 ) ;
order . setDeleteStatus ( 0 ) ;
order . setUseIntegration ( 0 ) ;
order . setUseIntegration ( 0 ) ;
order . setPromotionInfo ( " 无优惠 " ) ;
order . setPromotionInfo ( " 无优惠 " ) ;
order . setSettlementStatus ( 0 ) ; //分销结算状态( 0->未结算; 1->已结算; 2->不结算)
order . setSettlementStatus ( 0 ) ; //分销结算状态( 0->未结算; 1->已结算; 2->不结算)
orderMapper . insert ( order ) ;
orderMapper . insert ( order ) ;
//生成订单商品信息
//生成订单商品信息
OmsOrderItem orderItem = new OmsOrderItem ( ) ;
OmsOrderItem orderItem = new OmsOrderItem ( ) ;
orderItem . setOrderId ( order . getId ( ) ) ;
orderItem . setOrderId ( order . getId ( ) ) ;
orderItem . setOrderSn ( order . getOrderSn ( ) ) ;
orderItem . setOrderSn ( order . getOrderSn ( ) ) ;
orderItem . setProductId ( product . getId ( ) ) ;
orderItem . setProductId ( product . getId ( ) ) ;
orderItem . setProductPic ( skuStock . getPic ( ) ) ;
orderItem . setProductPic ( skuStock . getPic ( ) ) ;
orderItem . setProductName ( product . getName ( ) ) ;
orderItem . setProductName ( product . getName ( ) ) ;
//orderItem.setProductAttr(cartPromotionItem.getProductAttr());
//orderItem.setProductAttr(cartPromotionItem.getProductAttr());
orderItem . setProductBrand ( product . getBrandName ( ) ) ;
orderItem . setProductBrand ( product . getBrandName ( ) ) ;
orderItem . setProductSn ( product . getProductSn ( ) ) ;
orderItem . setProductSn ( product . getProductSn ( ) ) ;
orderItem . setProductPrice ( price ) ;
orderItem . setProductPrice ( price ) ;
orderItem . setProductQuantity ( orderParam . getQuantity ( ) ) ;
orderItem . setProductQuantity ( orderParam . getQuantity ( ) ) ;
orderItem . setProductSkuId ( skuStock . getId ( ) ) ;
orderItem . setProductSkuId ( skuStock . getId ( ) ) ;
orderItem . setProductSkuCode ( skuStock . getSkuCode ( ) ) ;
orderItem . setProductSkuCode ( skuStock . getSkuCode ( ) ) ;
orderItem . setProductCategoryId ( product . getProductCategoryId ( ) ) ;
orderItem . setProductCategoryId ( product . getProductCategoryId ( ) ) ;
orderItem . setSp1 ( skuStock . getSp1 ( ) ) ;
orderItem . setSp1 ( skuStock . getSp1 ( ) ) ;
orderItem . setSp2 ( skuStock . getSp2 ( ) ) ;
orderItem . setSp2 ( skuStock . getSp2 ( ) ) ;
orderItem . setSp3 ( skuStock . getSp3 ( ) ) ;
orderItem . setSp3 ( skuStock . getSp3 ( ) ) ;
orderItem . setPromotionName ( " 无优惠 " ) ;
orderItem . setPromotionName ( " 无优惠 " ) ;
orderItem . setPromotionAmount ( new BigDecimal ( 0 ) ) ;
orderItem . setPromotionAmount ( new BigDecimal ( 0 ) ) ;
//积分价格
//积分价格
orderItem . setGiftIntegration ( totalPointsAmount ) ;
orderItem . setGiftIntegration ( totalPointsAmount ) ;
orderItem . setGiftGrowth ( 0 ) ;
orderItem . setGiftGrowth ( 0 ) ;
orderItem . setCouponAmount ( new BigDecimal ( 0 ) ) ;
orderItem . setCouponAmount ( new BigDecimal ( 0 ) ) ;
orderItem . setIntegrationAmount ( new BigDecimal ( 0 ) ) ;
orderItem . setIntegrationAmount ( new BigDecimal ( 0 ) ) ;
orderItem . setRealAmount ( new BigDecimal ( 0 ) ) ;
orderItem . setRealAmount ( new BigDecimal ( 0 ) ) ;
orderItemMapper . insert ( orderItem ) ;
orderItemMapper . insert ( orderItem ) ;
//超时未支付,自动取消订单
//超时未支付,自动取消订单
//分钟转换成毫秒
//分钟转换成毫秒
long delayTimes = orderSetting . getNormalOrderOvertime ( ) * 60 * 1000 ;
long delayTimes = orderSetting . getNormalOrderOvertime ( ) * 60 * 1000 ;
cancelOrderSender . sendMessage ( order . getId ( ) , delayTimes ) ;
cancelOrderSender . sendMessage ( order . getId ( ) , delayTimes ) ;
result . put ( " orderId " , order . getId ( ) ) ;
result . put ( " orderId " , order . getId ( ) ) ;
result . put ( " totalAmount " , order . getPayAmount ( ) ) ;
result . put ( " totalAmount " , order . getPayAmount ( ) ) ;
if ( isPointsExchangeStatus ) {
if ( isPointsExchangeStatus ) {
result . put ( " pointsPrice " , totalPointsAmount ) ;
result . put ( " pointsPrice " , totalPointsAmount ) ;
}
}
}
}
return CommonResult . success ( result , " 下单成功 " ) ;
return CommonResult . success ( result , " 下单成功 " ) ;
}
}
/**
/**
@@ -1361,7 +1361,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
// 判断是否使用积分支付
// 判断是否使用积分支付
UmsMember member = memberMapper . selectByPrimaryKey ( currentMember . getId ( ) ) ;
UmsMember member = memberMapper . selectByPrimaryKey ( currentMember . getId ( ) ) ;
if ( product1 . getPointsExchangeStatus ( ) = = 1 ) {
if ( product1 . getPointsExchangeStatus ( ) = = 1 ) {
// 获取积分兑换价格
// 获取积分兑换价格
// 使用订单中的积分字段
// 使用订单中的积分字段
@@ -1411,7 +1411,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
accountTransaction . setTransferPaymentTime ( order . getPaymentTime ( ) ) ;
accountTransaction . setTransferPaymentTime ( order . getPaymentTime ( ) ) ;
accountTransaction . setRevenuePoints ( - totalPointsAmount . intValue ( ) ) ;
accountTransaction . setRevenuePoints ( - totalPointsAmount . intValue ( ) ) ;
PmsProduct pmsProduct = orderMapper . selectAll ( order . getOrderSn ( ) ) ;
PmsProduct pmsProduct = orderMapper . selectAll ( order . getOrderSn ( ) ) ;
accountTransaction . setRemarks ( " 商品名称 " + pmsProduct . getName ( ) ) ;
accountTransaction . setRemarks ( " 商品名称 " + pmsProduct . getName ( ) ) ;
umsMemberAccountTransactionMapper . insert ( accountTransaction ) ;
umsMemberAccountTransactionMapper . insert ( accountTransaction ) ;
// 返还积分金额到前端
// 返还积分金额到前端
@@ -1573,10 +1573,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
accountTransaction . setFlowType ( 1 ) ;
accountTransaction . setFlowType ( 1 ) ;
accountTransaction . setTransferPaymentTime ( orderResult . getPaymentTime ( ) ) ;
accountTransaction . setTransferPaymentTime ( orderResult . getPaymentTime ( ) ) ;
accountTransaction . setRevenueAmount ( payAmount . negate ( ) ) ;
accountTransaction . setRevenueAmount ( payAmount . negate ( ) ) ;
P msProduct pmsProduct = orderMapper . selectAll ( orderResult . getOrderSn ( ) ) ;
O msOrderItem orderItem = orderItem Mapper . getByOrderSn ( orderResult . getOrderSn ( ) ) ;
accountTransaction . setRemarks ( " 商品名称 " + pmsProduct . ge tName( ) ) ;
accountTransaction . setRemarks ( " 商品名称 " + orderItem . getProduc tName( ) ) ;
umsMemberAccountTransactionMapper . insert ( accountTransaction ) ;
umsMemberAccountTransactionMapper . insert ( accountTransaction ) ;
PmsProduct pmsProduct = orderMapper . selectAll ( orderResult . getOrderSn ( ) ) ;
//如果是积分专区的商品则进行积分专区相对应的逻辑
//如果是积分专区的商品则进行积分专区相对应的逻辑
if ( pmsProduct . getPointsAreaStatus ( ) = = 1 ) {
if ( pmsProduct . getPointsAreaStatus ( ) = = 1 ) {
//奖励积分是购买的价格的100%
//奖励积分是购买的价格的100%
@@ -1593,7 +1594,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
// 更新用户积分
// 更新用户积分
memberMapper . updateByPrimaryKey ( member ) ;
memberMapper . updateByPrimaryKey ( member ) ;
//增加基金积分
//增加基金积分
int fundPoints = ( int ) ( rewardPoints * 0 . 05 ) ;
int fundPoints = ( int ) ( rewardPoints * 0 . 05 ) ;
umsDevelopmentFundMapper . updatePoints ( fundPoints ) ;
umsDevelopmentFundMapper . updatePoints ( fundPoints ) ;
//插入流水表积分
//插入流水表积分
UmsMemberAccountTransaction transaction = new UmsMemberAccountTransaction ( ) ;
UmsMemberAccountTransaction transaction = new UmsMemberAccountTransaction ( ) ;
@@ -1602,7 +1603,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
transaction . setFlowType ( 2 ) ;
transaction . setFlowType ( 2 ) ;
transaction . setTransferPaymentTime ( orderResult . getPaymentTime ( ) ) ;
transaction . setTransferPaymentTime ( orderResult . getPaymentTime ( ) ) ;
transaction . setRevenuePoints ( rewardPoints ) ;
transaction . setRevenuePoints ( rewardPoints ) ;
transaction . setRemarks ( " 购买商品返还积分: " + pmsProduct . getName ( ) ) ;
transaction . setRemarks ( " 购买商品返还积分: " + pmsProduct . getName ( ) ) ;
umsMemberAccountTransactionMapper . insert ( transaction ) ;
umsMemberAccountTransactionMapper . insert ( transaction ) ;
}
}
}
}
@@ -1615,8 +1616,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
order . setStatus ( 2 ) ;
order . setStatus ( 2 ) ;
order . setPaymentTime ( new Date ( ) ) ;
order . setPaymentTime ( new Date ( ) ) ;
orderMapper . updateByPrimaryKey ( order ) ;
orderMapper . updateByPrimaryKey ( order ) ;
//积分分润逻辑
if ( pmsProduct . getPointsAreaStatus ( ) = = 1 ) {
memberPointsSplitProfitService . pointsSplit ( order ) ;
//积分分润逻辑
memberPointsSplitProfitService . pointsSplit ( order ) ;
}
// 处理库存、分销等后续操作
// 处理库存、分销等后续操作
executorService . execute ( ( ) - > {
executorService . execute ( ( ) - > {
@@ -1628,7 +1631,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
}
}
/**
/**
*处理库存的逻辑
* 处理库存的逻辑
*/
*/
private void updateStock ( Long orderId ) {
private void updateStock ( Long orderId ) {
// 查询订单商品信息,进行库存更新等操作
// 查询订单商品信息,进行库存更新等操作
@@ -1646,8 +1649,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
}
}
/**
/**
* 微信预支付
* 微信预支付
*
*
@@ -2061,7 +2062,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
// 更新用户积分
// 更新用户积分
memberMapper . updateByPrimaryKey ( member ) ;
memberMapper . updateByPrimaryKey ( member ) ;
//增加基金积分
//增加基金积分
int fundPoints = ( int ) ( rewardPoints * 0 . 05 ) ;
int fundPoints = ( int ) ( rewardPoints * 0 . 05 ) ;
umsDevelopmentFundMapper . updatePoints ( fundPoints ) ;
umsDevelopmentFundMapper . updatePoints ( fundPoints ) ;
//插入流水表积分
//插入流水表积分
@@ -2071,7 +2072,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
accountTransaction . setFlowType ( 2 ) ;
accountTransaction . setFlowType ( 2 ) ;
accountTransaction . setTransferPaymentTime ( order . getPaymentTime ( ) ) ;
accountTransaction . setTransferPaymentTime ( order . getPaymentTime ( ) ) ;
accountTransaction . setRevenuePoints ( rewardPoints ) ;
accountTransaction . setRevenuePoints ( rewardPoints ) ;
accountTransaction . setRemarks ( " 购买商品返还积分: " + pmsProduct . getName ( ) ) ;
accountTransaction . setRemarks ( " 购买商品返还积分: " + pmsProduct . getName ( ) ) ;
umsMemberAccountTransactionMapper . insert ( accountTransaction ) ;
umsMemberAccountTransactionMapper . insert ( accountTransaction ) ;
//积分分润逻辑
//积分分润逻辑