| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | import javax.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | |
| | | @Override |
| | | public R<T> getOrderAuctionBond(OrderAuctionBondDTO orderAuctionBondDTO) { |
| | | |
| | | log.info("getOrderAuctionBond:{}", orderAuctionBondDTO); |
| | | LambdaQueryWrapper<OrderAuctionBond> wrapper = Wrappers.lambdaQuery(); |
| | | if (orderAuctionBondDTO.getUserList().size()>0){ |
| | | wrapper.notIn(OrderAuctionBond::getMemberId, orderAuctionBondDTO.getUserList()); |
| | |
| | | wrapper1.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()); |
| | | wrapper1.last("limit 1"); |
| | | Paylog paylog = iPaylogService.getOne(wrapper1); |
| | | if (paylog.getPayType() == 1) {//支付宝 |
| | | boolean bo = paylogServiceImpl.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), orderAuctionBond.getBond().doubleValue()); |
| | | if (!bo) { |
| | | return R.fail("支付宝退款失败!"); |
| | | log.info("paylog:{}", paylog); |
| | | if (Objects.nonNull(paylog)) { |
| | | if (paylog.getPayType() == 1) {// 支付宝 |
| | | boolean bo = paylogServiceImpl.refundForAlipay(paylog.getOutTradeNo(), |
| | | paylog.getTradeNo(), orderAuctionBond.getBond().doubleValue()); |
| | | if (!bo) { |
| | | return R.fail("支付宝退款失败!"); |
| | | } |
| | | } else {// 微信 |
| | | String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); |
| | | Integer refundFee = Integer.parseInt( |
| | | refundMoney.substring(0, refundMoney.length() - 3)); |
| | | String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); |
| | | Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); |
| | | refundFee = Integer.parseInt(money.substring(0, money.length() - 3)); |
| | | String refundNo = OrderUtil.getOrderNoForPrefix("R"); |
| | | boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(), |
| | | paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "2"); |
| | | if (!bo) { |
| | | return R.fail("微信退款失败!"); |
| | | } |
| | | } |
| | | } else {//微信 |
| | | String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); |
| | | Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3)); |
| | | String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); |
| | | Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); |
| | | refundFee = Integer.parseInt(money.substring(0, money.length() - 3)); |
| | | |
| | | String regEx = "[^0-9]"; |
| | | Pattern p = Pattern.compile(regEx); |
| | | Matcher m = p.matcher(paylog.getOutTradeNo()); |
| | | String ma = m.replaceAll("").trim(); |
| | | boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2"); |
| | | if (!bo) { |
| | | return R.fail("微信退款失败!"); |
| | | } |
| | | orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); |
| | | } |
| | | orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); |
| | | } |
| | | this.updateBatchById(orderAuctionBondList); |
| | | return R.ok(); |