|
|
|
@@ -285,11 +285,55 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { |
|
|
|
record.setPayStatus(EnumCardSpendStatus.MANUAL_PAY.getCode()); |
|
|
|
record.setUpdateDate(new Date()); |
|
|
|
int num = wxCardSpendMapper.updateByCond(record); |
|
|
|
// 3. 分账完结 |
|
|
|
shareFinishForCardPay(record.getTenantId(), record.getCardId()); |
|
|
|
return num; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public int finishCard(String tenantId, Long cardId) { |
|
|
|
// admin用户手动帮已用卡消费用户退卡, 此卡需要分账完结, 买卡的钱进商场账户 |
|
|
|
WxCardInfo cardInfo = null; |
|
|
|
try { |
|
|
|
cardInfo = wxCardInfoMapper.selectByPrimaryKey(cardId); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("微信分账: " + e.getMessage()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), e.getMessage()); |
|
|
|
} |
|
|
|
if(cardInfo != null) { |
|
|
|
if (cardInfo.getRemainingAmount().equals(cardInfo.getAmount())){ |
|
|
|
logger.error("请用订单退款接口: "); |
|
|
|
throw new MallinkException(ErrorCode.CARD_IS_NOT_COST); |
|
|
|
} else if(cardInfo.getRemainingAmount() > 0){ |
|
|
|
// 卡已消费, 余额不为0 |
|
|
|
int remainShareFeeAmount = cardInfo.getRemainingShareFeeAmount(); |
|
|
|
try { |
|
|
|
WxCouponOrder couponOrder = wxCouponOrderMapper.selectByPrimaryKey(cardInfo.getId()); |
|
|
|
// 更新 coupon order状态 |
|
|
|
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_RETURNED.getCode()); |
|
|
|
couponOrder.setUpdateDate(new Date()); |
|
|
|
wxCouponOrderMapper.updateByPrimaryKeySelective(couponOrder); |
|
|
|
// 卡余额 |
|
|
|
WxCardInfo cardInfo1 = new WxCardInfo(); |
|
|
|
cardInfo1.setId(cardInfo.getId()); |
|
|
|
cardInfo1.setRemainingAmount(0); |
|
|
|
cardInfo1.setUpdateDate(new Date()); |
|
|
|
wxCardInfoMapper.updateByPrimaryKeySelective(cardInfo1); |
|
|
|
|
|
|
|
// 分账完结 |
|
|
|
WxSharingOrderDto shareOrder = new WxSharingOrderDto(); |
|
|
|
shareOrder.setcUserId(couponOrder.getOwnerId()); |
|
|
|
shareOrder.setTenantId(tenantId); |
|
|
|
shareOrder.setTransactionId(cardInfo.getTransactionId()); |
|
|
|
cardShareFinished(cardInfo, shareOrder); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("微信分账: " + e.getMessage()); |
|
|
|
throw new MallinkException(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
return remainShareFeeAmount; |
|
|
|
} |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void deleteById(Long id) { |
|
|
|
wxCardSpendMapper.deleteByPrimaryKey(id); |
|
|
|
@@ -375,34 +419,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void shareFinishForCardPay(String tenantId, Long cardId) { |
|
|
|
// admin用户手动帮已用卡消费用户退卡, 此卡需要分账完结, 买卡的钱进商场账户 |
|
|
|
WxCardInfo cardInfo = null; |
|
|
|
try { |
|
|
|
cardInfo = wxCardInfoMapper.selectByPrimaryKey(cardId); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("微信分账: " + e.getMessage()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), e.getMessage()); |
|
|
|
} |
|
|
|
if(cardInfo != null) { |
|
|
|
if (cardInfo.getRemainingAmount().equals(cardInfo.getAmount())){ |
|
|
|
logger.error("请用订单退款接口: "); |
|
|
|
throw new MallinkException(ErrorCode.CARD_IS_NOT_COST); |
|
|
|
} else { |
|
|
|
try { |
|
|
|
WxCouponOrder couponOrder = wxCouponOrderMapper.selectByPrimaryKey(cardInfo.getId()); |
|
|
|
WxSharingOrderDto shareOrder = new WxSharingOrderDto(); |
|
|
|
shareOrder.setcUserId(couponOrder.getOwnerId()); |
|
|
|
shareOrder.setTenantId(tenantId); |
|
|
|
shareOrder.setTransactionId(cardInfo.getTransactionId()); |
|
|
|
cardShareFinished(cardInfo, shareOrder); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("微信分账: " + e.getMessage()); |
|
|
|
throw new MallinkException(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 卡分账完结 |
|
|
|
@@ -433,7 +450,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { |
|
|
|
logger.error("card spend insert error"); |
|
|
|
return; |
|
|
|
} |
|
|
|
// card info 更新 余额 |
|
|
|
// card info 更新 分账 余额 |
|
|
|
WxCardInfo cardInfo1 = new WxCardInfo(); |
|
|
|
cardInfo1.setId(cardInfo.getId()); |
|
|
|
cardInfo1.setRemainingShareFeeAmount(0); |
|
|
|
|