|
|
|
@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.github.pagehelper.PageHelper; |
|
|
|
import com.github.pagehelper.PageInfo; |
|
|
|
@@ -1006,86 +1007,102 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
if (coupon.getType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) { |
|
|
|
isCard = true; |
|
|
|
} |
|
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
|
|
|
|
|
WxCouponOrder couponOrder = new WxCouponOrder(); |
|
|
|
couponOrder.setId(idWorker.nextId()); |
|
|
|
couponOrder.updateTenantInfo(order); |
|
|
|
couponOrder.setCouponId(order.getProductId()); |
|
|
|
couponOrder.setCouponType(coupon.getType()); |
|
|
|
couponOrder.setCUserId(user.getId()); |
|
|
|
couponOrder.setOwnerId(user.getId()); |
|
|
|
couponOrder.setAutoRefund(coupon.getAutoRefund()); |
|
|
|
couponOrder.setOrderId(order.getOrderNumber()); |
|
|
|
couponOrder.setExpiredTime(valid_date); |
|
|
|
if (!isCard) { |
|
|
|
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); |
|
|
|
} else { |
|
|
|
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_USING.getCode()); |
|
|
|
|
|
|
|
//TODO 如果orderId已经存在,则不再添加 |
|
|
|
WxCouponOrder couponOrderQ = new WxCouponOrder(); |
|
|
|
couponOrderQ.setOrderId(order.getId()); |
|
|
|
WxCouponOrder couponOrder = null; |
|
|
|
List<WxCouponOrder> couponorderlist = wxCouponOrderMapper.findList(couponOrderQ); |
|
|
|
if (null != couponorderlist && couponorderlist.size() > 0 ) { |
|
|
|
couponOrder = couponorderlist.get(0); |
|
|
|
}else { |
|
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
|
couponOrder = new WxCouponOrder(); |
|
|
|
couponOrder.setId(idWorker.nextId()); |
|
|
|
couponOrder.updateTenantInfo(order); |
|
|
|
couponOrder.setCouponId(order.getProductId()); |
|
|
|
couponOrder.setCouponType(coupon.getType()); |
|
|
|
couponOrder.setCUserId(user.getId()); |
|
|
|
couponOrder.setOwnerId(user.getId()); |
|
|
|
couponOrder.setAutoRefund(coupon.getAutoRefund()); |
|
|
|
couponOrder.setOrderId(order.getOrderNumber()); |
|
|
|
couponOrder.setExpiredTime(valid_date); |
|
|
|
if (!isCard) { |
|
|
|
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); |
|
|
|
} else { |
|
|
|
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_USING.getCode()); |
|
|
|
} |
|
|
|
couponOrder.setCreateDate(curr); |
|
|
|
couponOrder.setUpdateDate(curr); |
|
|
|
couponOrder.setCouponPrice(order.getPayment()); |
|
|
|
wxCouponOrderMapper.insert(couponOrder); |
|
|
|
} |
|
|
|
couponOrder.setCreateDate(curr); |
|
|
|
couponOrder.setUpdateDate(curr); |
|
|
|
couponOrder.setCouponPrice(order.getPayment()); |
|
|
|
|
|
|
|
wxCouponOrderMapper.insert(couponOrder); |
|
|
|
|
|
|
|
/// 储值卡信息添加 |
|
|
|
if (isCard) { |
|
|
|
Integer fee = 0; |
|
|
|
WxCardInfo cardInfo = new WxCardInfo(); |
|
|
|
cardInfo.setId(couponOrder.getId()); |
|
|
|
cardInfo.updateTenantInfo(order); |
|
|
|
cardInfo.setCouponId(order.getProductId()); |
|
|
|
cardInfo.setAmount(coupon.getPrice()); |
|
|
|
cardInfo.setSaleAmount(coupon.getSalePrice()); |
|
|
|
cardInfo.setRemainingAmount(coupon.getPrice()); |
|
|
|
if (!coupon.checkIsFree()) { |
|
|
|
// 有价卡 |
|
|
|
cardInfo.setTransactionId(payOrder.getTransactionId()); |
|
|
|
if (payOrder.getShareAmount() != null) { |
|
|
|
// 开启分账 |
|
|
|
fee = payOrder.getPayAmount() - payOrder.getShareAmount(); |
|
|
|
cardInfo.setShareFeeAmount(payOrder.getShareAmount()); |
|
|
|
cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); |
|
|
|
cardInfo.setRateAmount(payOrder.getRateAmount()); |
|
|
|
} else { |
|
|
|
// 未开启分账 |
|
|
|
fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false); |
|
|
|
Integer shareAmount = payOrder.getPayAmount() - fee; |
|
|
|
cardInfo.setShareFeeAmount(shareAmount); |
|
|
|
cardInfo.setRemainingShareFeeAmount(shareAmount); |
|
|
|
if (payAccount.getRealRate() != null) { |
|
|
|
int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); |
|
|
|
if (fee > iRealChargeFee) { |
|
|
|
cardInfo.setRateAmount(fee - iRealChargeFee); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 免费卡 |
|
|
|
cardInfo.setShareFeeAmount(0); |
|
|
|
cardInfo.setRemainingShareFeeAmount(0); |
|
|
|
cardInfo.setRateAmount(0); |
|
|
|
if (coupon.getPasswordSupport().equals(EnumCouponPasswordSupport.SUPPORTED.getCode())) { |
|
|
|
WxCouponPassword updateCPwd = new WxCouponPassword(); |
|
|
|
updateCPwd.setId(couponPasswordId); |
|
|
|
updateCPwd.setCardId(cardInfo.getId()); |
|
|
|
updateCPwd.setStatus(EnumCouponPasswordStatus.USED.getCode()); |
|
|
|
couponPasswordMapper.updateById(updateCPwd); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
cardInfo.setServiceFeeAmount(fee); |
|
|
|
cardInfo.setCreateDate(curr); |
|
|
|
cardInfo.setUpdateDate(curr); |
|
|
|
cardInfo.setSupportTransfer(coupon.getSupportTransfer()); |
|
|
|
|
|
|
|
//检查卡是否下架,如果是,不可转赠 |
|
|
|
WxCouponChannel wxCouponChannel = wxCouponChannelMapper.selectById(order.getCouponChannelId()); |
|
|
|
if (wxCouponChannel != null && wxCouponChannel.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode())) { |
|
|
|
cardInfo.setSupportTransfer(EnumCouponTransfer.NO.getCode()); |
|
|
|
} |
|
|
|
wxCardInfoMapper.insert(cardInfo); |
|
|
|
//判断该transctionId是否已经存在,如果存在,则不添加 |
|
|
|
WxCardInfo cardInfoq = new WxCardInfo(); |
|
|
|
cardInfoq.setTransactionId(payOrder.getTransactionId()); |
|
|
|
List<WxCardInfo> cardInfoList = wxCardInfoMapper.findList(cardInfoq); |
|
|
|
if (null != cardInfoList && cardInfoList.size() > 0) { |
|
|
|
//do nothing |
|
|
|
}else { |
|
|
|
Integer fee = 0; |
|
|
|
WxCardInfo cardInfo = new WxCardInfo(); |
|
|
|
cardInfo.setId(couponOrder.getId()); |
|
|
|
cardInfo.updateTenantInfo(order); |
|
|
|
cardInfo.setCouponId(order.getProductId()); |
|
|
|
cardInfo.setAmount(coupon.getPrice()); |
|
|
|
cardInfo.setSaleAmount(coupon.getSalePrice()); |
|
|
|
cardInfo.setRemainingAmount(coupon.getPrice()); |
|
|
|
if (!coupon.checkIsFree()) { |
|
|
|
// 有价卡 |
|
|
|
cardInfo.setTransactionId(payOrder.getTransactionId()); |
|
|
|
if (payOrder.getShareAmount() != null) { |
|
|
|
// 开启分账 |
|
|
|
fee = payOrder.getPayAmount() - payOrder.getShareAmount(); |
|
|
|
cardInfo.setShareFeeAmount(payOrder.getShareAmount()); |
|
|
|
cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); |
|
|
|
cardInfo.setRateAmount(payOrder.getRateAmount()); |
|
|
|
} else { |
|
|
|
// 未开启分账 |
|
|
|
fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false); |
|
|
|
Integer shareAmount = payOrder.getPayAmount() - fee; |
|
|
|
cardInfo.setShareFeeAmount(shareAmount); |
|
|
|
cardInfo.setRemainingShareFeeAmount(shareAmount); |
|
|
|
if (payAccount.getRealRate() != null) { |
|
|
|
int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); |
|
|
|
if (fee > iRealChargeFee) { |
|
|
|
cardInfo.setRateAmount(fee - iRealChargeFee); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 免费卡 |
|
|
|
cardInfo.setShareFeeAmount(0); |
|
|
|
cardInfo.setRemainingShareFeeAmount(0); |
|
|
|
cardInfo.setRateAmount(0); |
|
|
|
if (coupon.getPasswordSupport().equals(EnumCouponPasswordSupport.SUPPORTED.getCode())) { |
|
|
|
WxCouponPassword updateCPwd = new WxCouponPassword(); |
|
|
|
updateCPwd.setId(couponPasswordId); |
|
|
|
updateCPwd.setCardId(cardInfo.getId()); |
|
|
|
updateCPwd.setStatus(EnumCouponPasswordStatus.USED.getCode()); |
|
|
|
couponPasswordMapper.updateById(updateCPwd); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
cardInfo.setServiceFeeAmount(fee); |
|
|
|
cardInfo.setCreateDate(curr); |
|
|
|
cardInfo.setUpdateDate(curr); |
|
|
|
cardInfo.setSupportTransfer(coupon.getSupportTransfer()); |
|
|
|
|
|
|
|
//检查卡是否下架,如果是,不可转赠 |
|
|
|
WxCouponChannel wxCouponChannel = wxCouponChannelMapper.selectById(order.getCouponChannelId()); |
|
|
|
if (wxCouponChannel != null && wxCouponChannel.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode())) { |
|
|
|
cardInfo.setSupportTransfer(EnumCouponTransfer.NO.getCode()); |
|
|
|
} |
|
|
|
wxCardInfoMapper.insert(cardInfo); |
|
|
|
} |
|
|
|
} |
|
|
|
return couponOrder; |
|
|
|
} |
|
|
|
@@ -2261,5 +2278,18 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
return orderGroupId != null && !orderGroupId.equals(0L); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public int countGroupOrder(Long groupId) { |
|
|
|
WxOrder query = new WxOrder(); |
|
|
|
query.setOrderGroupId(groupId); |
|
|
|
List<Integer> statusS = new ArrayList<Integer>(); |
|
|
|
statusS.add(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); |
|
|
|
statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode()); |
|
|
|
statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode()); |
|
|
|
//statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); |
|
|
|
query.setStatusS(statusS); |
|
|
|
return wxOrderMapper.countList(query); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |