@@ -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 . s etConfirmStatusName ( " 已审核 " ) ;
} else {
recordResult . setConfirmStatusName ( " 未审核 " ) ;
}
orderResult . setPaymentRecord ( recordResult ) ;
} else {
orderResult . setPayTypeName ( " 积分支付 " ) ;
}
} else {
orderResult . setPayType ( 0 ) ;
orderResult . setPayTypeName ( " 未支付 " ) ;
}
// 获取商品信息,判断是否是积分专区商品
PmsProduct product = productMapper . g etProductByOrderSn ( ( 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 . g etBillType ( ) ! = null ) {
orderResult . setBillType ( order . getBillType ( ) ) ;
if ( order . g etBillType ( ) = = 1 ) {
orderResult . setBillTypeName ( " 电子发票 " ) ;
} else if ( order . g etBillType ( ) = = 2 ) {
orderResult . setBillTypeName ( " 纸质发票 " ) ;
} else {
orderResult . setBillTypeName ( " 不开发票 " ) ;
}
} else {
orderResult . setBillType ( 0 ) ;
orderResult . setBillTypeName ( " 不开发票 " ) ;
}
if ( recordResult . getConfirmStatus ( ) = = 1 ) {
recordResult . s etConfirmStatusName ( " 已审核 " ) ;
} else {
recordResult . s etConfirmStatusName ( " 未审核 " ) ;
}
orderResult . s etPaymentRecord ( recordResult ) ;
} else {
orderResult . setPayTypeName ( " 积分支付 " ) ;
}
} else {
orderResult . setPayType ( 0 ) ;
orderResult . setPayTypeName ( " 未支付 " ) ;
}
}
orderResult . setBillHeader ( order . getBillHeader ( ) ) ;
orderResult . setBillContent ( order . getBillContent ( ) ) ;
orderResult . setReceiverNa me ( order . getReceiverNa me ( ) ) ;
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 . setCommentTi me ( order . getCommentTi me ( ) ) ;
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 ( " 不开发票 " ) ;
}
O rderItem Result orderItemResult = null ;
orderResult . setProductsNum ( orderItemList . size ( ) ) ;
List < O rderItem Result> orderItemResultList = new ArrayList < > ( ) ;
for ( OmsOrderItem orderItem : orderItemList ) {
orderItem Result = new O rderItemResult ( ) ;
orderItem Result . setOrderId ( order . getId ( ) ) ;
orderItem Result . setOrderS n ( order . getOrderS n ( ) ) ;
orderItem Result . setProductBrand ( orderItem . getProductBrand ( ) ) ;
orderItemResult . setProductId ( orderItem . getProductId ( ) ) ;
orderItemResult . setProductName ( orderItem . getProductNam e( ) ) ;
orderItemResult . setProductPic ( orderItem . getProductPic ( ) ) ;
orderItemResult . setProductPrice ( orderItem . getProductPrice ( ) ) ;
orderItemResult . setProductQuantity ( orderItem . getProductQuantity ( ) ) ;
o rderItemResult. setSp1 ( orderItem . getSp1 ( ) ) ;
orderItem Result . setSp2 ( orderItem . getSp2 ( ) ) ;
orderItemResult . setSp3 ( orderItem . getSp3 ( ) ) ;
orderItemResultList . add ( orderItemResult ) ;
}
o rderResult. setBillHeader ( order . getBillHeader ( ) ) ;
orderResult . setBillContent ( order . getBillContent ( ) ) ;
o rderResult. setReceiverName ( order . getReceiverName ( ) ) ;
orderResult . setReceiverPhone ( order . getReceiverPhone ( ) ) ;
orderResult . setReceiverProvince ( o rder. getReceiverProvince ( ) ) ;
orderResult . setReceiverCity ( order . getReceiverCity ( ) ) ;
orderResult . setReceiverRegio n ( order . getReceiverRegio n ( ) ) ;
orderResult . setReceiverDetailAddress ( order . getReceiverDetailAddress ( ) ) ;
OmsOrderItemExample example = new OmsOrderItemExampl e( ) ;
example . createCriteria ( ) . andOrderIdEqualTo ( orderId ) ;
List < OmsOrderItem > orderItemList = orderItemMapper . selectByExample ( example ) ;
O rderItemResult 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 . g etIntegration( ) ) ;
//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 . s etIntegration( 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 ( i ntege rationFlag = = 1 ) {
int flag = orderParam . getI ntegration( ) . 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 . setIntegrationAmoun t( orderParam . getIntegration ( ) ) ;
i ntege ration = orderParam . getIntegration ( ) ;
} else {
order . setPayAmount ( zero ) ;
order . setIntegrationAmount ( totalAmount ) ;
i ntege ration = totalAmount ;
}
//生成订单信息
OmsOrder order = new OmsOrder ( ) ;
order . setTotalAmount ( totalAmount ) ; // 订单总金额
order . setIntegrationAmount ( orderParam . getI ntegration( ) = = null ? zero : orderParam . getIntegration ( ) ) ;
if ( i ntege rationFlag = = 1 ) {
int flag = orderParam . getIntegration ( ) . compareTo ( totalAmount ) ;
BigDecimal intege ration = new BigDecimal ( 0 ) ;
//flag = -1,表示integration小于totalAmount; flag = 0,表示integration等于totalAmount; flag = 1,表示integration大于totalAmount;
//如果传入的积分小 于实际支付金额,用实际支付金额减去抵扣积分。
//如果传入的积分等于或者大于实际支付金额,表示全额抵扣
if ( flag = = - 1 ) {
order . setPayAmount ( totalAmount . subtrac t( orderParam . getIntegration ( ) ) ) ; //实际支付金额
order . setI ntegrationAmount ( orderParam . getIntegration ( ) ) ;
integeration = orderParam . getIntegration ( ) ;
} else {
order . setPayAmount ( zero ) ;
order . setI ntegrationAmount ( 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 . setCoup onAmount ( zero ) ;
order . setDiscount Amount ( zero ) ;
order . setPayType ( 0 ) ; //支付方式: 0->未支付; 1->支付宝; 2->微信
order . setSource Type ( 1 ) ; //订单来源: 0->PC订单; 1->app订单
order . setDelivery Type ( 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 . setPromoti onAmount ( zero ) ; //促销优化金额(促销价、满减、阶梯价)
order . setCoupon Amount ( zero ) ;
order . setDiscountAmount ( zero ) ;
order . setPay Type ( 0 ) ; //支付方式: 0->未支付; 1->支付宝; 2->微信
order . setSource Type ( 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 , " 下单成功 " ) ;
}
}
/**