1
zj
2025-09-23 92b9a9452201e3ed77dcebdce918a2597cccb730
src/main/java/com/nq/service/impl/PayServiceImpl.java
@@ -8,6 +8,8 @@
import com.nq.common.CmcPayConfig;
import com.nq.common.ServerResponse;
import com.nq.dao.*;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
import com.nq.pay.PayUtil;
import com.nq.pojo.*;
import com.nq.service.*;
@@ -83,6 +85,9 @@
    @Autowired
    PaymentRechargeService paymentRechargeService;
    @Autowired
    UserAssetsServices userAssetsServices;
    public ServerResponse thirdPartyRecharge(HttpServletRequest request, String tradeAmount, Integer type) throws UnsupportedEncodingException, JsonProcessingException, NoSuchAlgorithmException {
        // 支付1
        String reqUrl = "https://api.watchglb.com/pay/web";
@@ -150,6 +155,19 @@
        paymentRecharge.setNotifyUrl(getOrderTime());
        paymentRecharge.setPayInfo(payResponse.toString());
        paymentRechargeService.save(paymentRecharge);
        UserRecharge userRecharge = new UserRecharge();
        userRecharge.setUserId(user.getId());
        userRecharge.setNickName(user.getRealName());
        userRecharge.setAgentId(user.getAgentId());
        userRecharge.setOrderSn(params.get("out_trade_no"));
        userRecharge.setPayChannel("Payment 1");
        userRecharge.setPayAmt(amount);
        userRecharge.setAddTime(new Date());
        userRecharge.setPayTime(new Date());
        userRecharge.setOrderStatus(Integer.valueOf(0));
        userRecharge.setPayId(1);
        userRechargeMapper.insert(userRecharge);
        return ServerResponse.createBySuccess(payResponse.getData().getUrl());
    }
@@ -724,7 +742,7 @@
            }
            UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class)
                    .eq(UserAssets::getUserId, paymentRecharge.getUserId())
                    .eq(UserAssets::getAccectType, "IN")
                    .eq(UserAssets::getAccectType, "US")
            );
            ServerResponse serverResponse = iUserAssetsServices.updateUserAssets(userAssets.getId(), vo.getOriAmount().toString(), "2");
            if(serverResponse.getStatus() == 0){
@@ -910,19 +928,34 @@
            PrintWriter pw = response.getWriter();
            PaymentRecharge paymentRecharge = paymentRechargeService.getOne(new LambdaQueryWrapper<>(PaymentRecharge.class)
                    .eq(PaymentRecharge::getMchOrderNo, vo.getOut_trade_no())
                    .eq(PaymentRecharge::getOrderNo,vo.getOut_trade_no())
                    .eq(PaymentRecharge::getStatus,1)
                    .last("limit 1")
            );
            if(ObjectUtils.isEmpty(paymentRecharge)){
                log.info("未找到充值订单");
                pw.print("error 未找到充值订单");
                return;
            }
            UserRecharge userRecharge = userRechargeMapper.selectOne(new LambdaQueryWrapper<>(UserRecharge.class)
                    .eq(UserRecharge::getOrderSn, paymentRecharge.getOrderNo())
                    .eq(UserRecharge::getOrderStatus, 0).last(" limit 1"));
            if(ObjectUtils.isEmpty(userRecharge)){
                log.info("未找到充值记录订单");
                pw.print("error 未找到充值订单");
                return;
            }
            if(vo.getStatus().equals("payin_ing")){
                log.error("充值2回调交易中:"+vo.toString());
                return;
            }else if(vo.getStatus().equals("payin_fail")){
                paymentRecharge.setStatus(2);
                paymentRecharge.setAmount(new BigDecimal(vo.getAccount_fee()));
                paymentRecharge.setAmount(new BigDecimal(vo.getTotal_fee()));
                paymentRecharge.setPayInfo(vo.toString());
                paymentRechargeService.updateById(paymentRecharge);
                userRecharge.setOrderStatus(2);
                userRechargeMapper.updateById(userRecharge);
                log.error("充值回调失败:"+vo.toString());
                return;
            }else if(!vo.getStatus().equals("payin_fail") && !vo.getStatus().equals("payin_ing") && !vo.getStatus().equals("payin_success")){
@@ -930,22 +963,22 @@
                return;
            }
            if(ObjectUtils.isEmpty(paymentRecharge)){
                log.info("未找到充值订单");
                pw.print("error 未找到充值订单");
                return;
            }
            UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class)
                    .eq(UserAssets::getUserId, paymentRecharge.getUserId())
                    .eq(UserAssets::getAccectType, "IN")
                    .eq(UserAssets::getAccectType, "US")
            );
            ServerResponse serverResponse = iUserAssetsServices.updateUserAssets(userAssets.getId(), vo.getAccount_fee().toString(), "2");
            if(serverResponse.getStatus() == 0){
                paymentRecharge.setStatus(2);
                paymentRecharge.setAmount(new BigDecimal(vo.getAccount_fee()));
                paymentRecharge.setPayInfo(vo.toString());
                paymentRechargeService.updateById(paymentRecharge);
            }
//            ServerResponse serverResponse = iUserAssetsServices.updateUserAssets(userAssets.getId(), vo.getTotal_fee().toString(), "2");
            userAssetsServices.availablebalanceChange(EStockType.US.getCode(),
                    paymentRecharge.getUserId(), EUserAssets.TOP_UP,new BigDecimal(vo.getTotal_fee().toString()),"","");
            paymentRecharge.setStatus(2);
            paymentRecharge.setAmount(new BigDecimal(vo.getTotal_fee()));
            paymentRecharge.setPayInfo(vo.toString());
            paymentRechargeService.updateById(paymentRecharge);
            userRecharge.setOrderStatus(1);
            userRechargeMapper.updateById(userRecharge);
            log.info("充值回调----完成");
            pw.print("success");
            pw.flush();