| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public ResultUtil paymentSettlementAmount(Integer driverId, Integer payType, Integer bankCardId, Integer language) throws Exception { |
| | | Driver driver1 = driverService.selectById(driverId); |
| | | QuerySettlementAmount querySettlementAmount = querySettlementAmount(language, driverId); |
| | |
| | | ResultUtil resultUtil = ResultUtil.success(""); |
| | | if(payType == 1){//手机支付 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1; |
| | | String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId(); |
| | | CheckoutRequest checkoutRequest = new CheckoutRequest(); |
| | | checkoutRequest.setMsisdn(Long.valueOf(driver1.getPhone())); |
| | | checkoutRequest.setCustomerEmail(driver1.getEmail()); |
| | |
| | | if(payType == 2){//银行卡支付 |
| | | BankCard bankCard = bankCardService.selectById(bankCardId); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1; |
| | | String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId(); |
| | | CheckoutRequest checkoutRequest = new CheckoutRequest(); |
| | | checkoutRequest.setMsisdn(Long.valueOf(bankCard.getCode())); |
| | | checkoutRequest.setCustomerEmail(driver1.getEmail()); |
| | |
| | | |
| | | Double laveActivityMoney = driver1.getLaveActivityMoney(); |
| | | Double laveBusinessMoney = driver1.getLaveBusinessMoney(); |
| | | //活动余额小于结算金额 |
| | | if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) < 0){ |
| | | driver1.setLaveActivityMoney(0D); |
| | | for (SettlementRecord settlementRecord : settlementRecords) { |
| | | Double payMoney1 = settlementRecord.getPayMoney(); |
| | | if(laveActivityMoney >= payMoney1){ |
| | | settlementRecord.setPayMoney(payMoney1); |
| | | |
| | | for (SettlementRecord settlementRecord : settlementRecords) { |
| | | Double payMoney1 = settlementRecord.getPayMoney(); |
| | | if(laveActivityMoney >= payMoney1){ |
| | | settlementRecord.setPayMoney(payMoney1); |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney1, settlementRecord.getType() + 2); |
| | | laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue(); |
| | | }else{ |
| | | if(laveActivityMoney > 0){ |
| | | settlementRecord.setPayMoney(laveActivityMoney); |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney1, settlementRecord.getType() + 2); |
| | | laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue(); |
| | | }else{ |
| | | Double m = payMoney1; |
| | | if(laveActivityMoney > 0){ |
| | | settlementRecord.setPayMoney(laveActivityMoney); |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, laveActivityMoney, settlementRecord.getType() + 2); |
| | | laveActivityMoney = 0D; |
| | | m = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); |
| | | } |
| | | |
| | | SettlementRecord settlementRecord1 = new SettlementRecord(); |
| | | BeanUtils.copyProperties(settlementRecord, settlementRecord1); |
| | | settlementRecord1.setId(null); |
| | | settlementRecord1.setPayMoney(m.doubleValue()); |
| | | settlementRecord1.setBalanceType(2); |
| | | this.insert(settlementRecord1); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, m.doubleValue(), settlementRecord.getType() + 2); |
| | | laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(m)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, laveActivityMoney, settlementRecord.getType() + 2); |
| | | laveActivityMoney = 0D; |
| | | payMoney1 = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); |
| | | } |
| | | } |
| | | driver1.setLaveBusinessMoney(laveBusinessMoney); |
| | | } |
| | | //活动余额大于结算金额 |
| | | if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) >= 0){ |
| | | driver1.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | for (SettlementRecord settlementRecord : settlementRecords) { |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney, settlementRecord.getType() + 2); |
| | | } |
| | | } |
| | | if(null == laveActivityMoney || 0 == laveActivityMoney){ |
| | | driver1.setLaveActivityMoney(0D); |
| | | driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | for (SettlementRecord settlementRecord : settlementRecords) { |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney, settlementRecord.getType() + 2); |
| | | } |
| | | } |
| | | |
| | | driver1.setBalance(new BigDecimal(driver1.getBalance()).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | |
| | | SettlementRecord settlementRecord1 = new SettlementRecord(); |
| | | BeanUtils.copyProperties(settlementRecord, settlementRecord1); |
| | | settlementRecord1.setId(null); |
| | | settlementRecord1.setPayMoney(payMoney1.doubleValue()); |
| | | settlementRecord1.setBalanceType(2); |
| | | this.insert(settlementRecord1); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney1.doubleValue(), settlementRecord.getType() + 2); |
| | | laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | } |
| | | driver1.setLaveBusinessMoney(laveBusinessMoney); |
| | | driver1.setLaveActivityMoney(laveActivityMoney); |
| | | driver1.setBalance(new BigDecimal(laveBusinessMoney).add(new BigDecimal(laveActivityMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driverService.updateById(driver1); |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(driverId, "支付结算费用", payMoney, 2, 1, 2, null, null); |
| | | driverService.updateById(driver1); |
| | | |
| | | return ResultUtil.success(""); |
| | | } |
| | | return resultUtil; |