liujie
2023-10-26 e030255c23c7ba3e2cbad1036a810d6d72fa864f
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -9,7 +9,10 @@
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.*;
import com.alipay.api.request.AlipayTradeOrderSettleRequest;
import com.alipay.api.request.AlipayTradeRoyaltyRelationBindRequest;
import com.alipay.api.response.AlipayTradeOrderSettleResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeRoyaltyRelationBindResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -135,7 +138,7 @@
            List<Store> stores = storeClient.queryStoreListByName(coursePackageList.getSearch());
            List<Integer> collect = stores.stream().map(Store::getId).collect(Collectors.toList());
            if(collect.size() > 0){
                wrapper.or().in("id", collect);
                wrapper.or().in("storeId", collect);
            }
        }
        List<TCoursePackage> list = this.list(wrapper.last(" order by sort, insertTime desc"));
@@ -169,9 +172,22 @@
            coursePackageListVo.setApplicantsNumber(integer);
            coursePackageListVo.setPayType(coursePackage.getPayType());
            coursePackageListVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin());
            Double cashPayment1 = coursePackagePaymentConfig.getCashPayment();
            Integer playPaiCoin = coursePackagePaymentConfig.getPlayPaiCoin();
            if(ToolUtil.isNotEmpty(cashPayment1) && cashPayment1>0 && ToolUtil.isNotEmpty(playPaiCoin) && playPaiCoin>0){
                coursePackageListVo.setPayType(3);
            }else if(ToolUtil.isNotEmpty(cashPayment1) && cashPayment1>0){
                coursePackageListVo.setPayType(1);
            }else if(ToolUtil.isNotEmpty(playPaiCoin) && playPaiCoin>0){
                coursePackageListVo.setPayType(2);
            }
            if (coursePackagePaymentConfig!=null) {
                coursePackageListVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin());
            }
            //会员显示原价和会员价(最低)。非会员显示会员价和支付价(最低)
            if(appUser.getIsVip() == 0){//非会员
                List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId())
@@ -508,6 +524,7 @@
            coursePackageInfo.setTime(format.format(coursePackage.getStartTime())+"-"+format.format(coursePackage.getEndTime()));
        }
            coursePackageInfo.setCoverDrawing(coursePackage.getCoverDrawing());
            coursePackageInfo.setName(coursePackage.getName());
            Store store = storeClient.queryStoreById(coursePackage.getStoreId());
            coursePackageInfo.setStoreName(store.getName());
@@ -548,8 +565,17 @@
                CoursePackagePaymentConfigVo coursePackagePaymentConfigVo = new CoursePackagePaymentConfigVo();
                coursePackagePaymentConfigVo.setId(coursePackagePaymentConfig.getId());
                coursePackagePaymentConfigVo.setClassHours(coursePackagePaymentConfig.getClassHours());
                coursePackagePaymentConfigVo.setPayType(coursePackage.getPayType());
                coursePackagePaymentConfigVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin());
                if(ToolUtil.isNotEmpty(coursePackagePaymentConfig.getCashPayment()) && coursePackagePaymentConfig.getCashPayment()>0 && ToolUtil.isNotEmpty(coursePackagePaymentConfig.getPlayPaiCoin()) && coursePackagePaymentConfig.getPlayPaiCoin()>0 ){
                    coursePackagePaymentConfigVo.setPayType(3);
                }else if(ToolUtil.isNotEmpty(coursePackagePaymentConfig.getCashPayment()) && coursePackagePaymentConfig.getCashPayment()>0){
                    coursePackagePaymentConfigVo.setPayType(1);
                }else if( ToolUtil.isNotEmpty(coursePackagePaymentConfig.getPlayPaiCoin()) && coursePackagePaymentConfig.getPlayPaiCoin()>0 ){
                    coursePackagePaymentConfigVo.setPayType(2);
                }
//                coursePackagePaymentConfigVo.setPayType(coursePackage.getPayType());
                //会员显示原价和支付价(会员价)。非会员显示会员价和支付价(最低)
                if(appUser.getIsVip() == 0){//非会员
                    List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId())
@@ -944,17 +970,17 @@
                            if(one.getPayStatus() == 2){
                                break;
                            }
                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
                            if(resultUtil.getCode() == 200 && one.getPayStatus() == 1){
                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code);
                            if( one.getPayStatus() == 1){
                                /**
                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
                                 * TRADE_SUCCESS(交易支付成功)、
                                 * TRADE_FINISHED(交易结束,不可退款)
                                 */
                                Map<String, String> data1 = resultUtil.getData();
                                String s = data1.get("tradeStatus");
                                String tradeNo = data1.get("tradeNo");
                                String s = alipayTradeQueryResponse.getTradeStatus();
                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
                                if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
                                    for (TCoursePackagePayment coursePackagePayment : list) {
                                        coursePackagePayment.setStatus(3);
@@ -966,6 +992,7 @@
                                    for (TCoursePackagePayment coursePackagePayment : list) {
                                        coursePackagePayment.setPayStatus(2);
                                        coursePackagePayment.setOrderNumber(tradeNo);
                                        coursePackagePayment.setAppUserId(null);
                                    }
                                    coursePackagePaymentService.updateBatchById(list);
                                System.out.println("===========到达支付");
@@ -1005,6 +1032,8 @@
    }
    @Autowired
    private TCoursePackageService coursePackageService;
    public void moneyOut(String outNum,String tradeNo) throws AlipayApiException {
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
        AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
@@ -1012,23 +1041,74 @@
        model.setOutRequestNo(outNum);
        model.setTradeNo(tradeNo);
        List<RoyaltyDetailInfos> royaltyDetailInfos = new ArrayList<>();
//
        AlipayTradeRoyaltyRelationBindRequest request1 = new AlipayTradeRoyaltyRelationBindRequest();
        RoyaltyDetailInfos royaltyDetailInfos1 = new RoyaltyDetailInfos();
        royaltyDetailInfos1.setTransOutType("userId");
        royaltyDetailInfos1.setTransOut("2021004105665036");
        royaltyDetailInfos1.setTransInType("loginName");
        royaltyDetailInfos1.setTransIn("18398968484");
        royaltyDetailInfos1.setAmount("0.1");
        request1.setBizContent("{" +
                "  \"receiver_list\":[" +
                "    {" +
                "      \"type\":\"loginName\"," +
                "      \"account\":\"19522115070\"," +
                "      \"name\":\"罗易胜\"," +
                "      \"memo\":\"分账给测试商户\"," +
                "    }" +
                "  ]," +
                "  \"out_request_no\":\""+tradeNo+"\"" +
                "}");
        AlipayTradeRoyaltyRelationBindResponse response = alipayClient.execute(request1);
        if(response.isSuccess()){
            System.out.println("绑定调用成功");
        } else {
            System.out.println("调用失败");
        }
        royaltyDetailInfos.add(royaltyDetailInfos1);
//        RoyaltyDetailInfos royaltyDetailInfos1 = new RoyaltyDetailInfos();
//        royaltyDetailInfos1.setTransOutType("loginName");
//        royaltyDetailInfos1.setTransOut("happysports@weparklife.com");
//        royaltyDetailInfos1.setTransInType("loginName");
//        royaltyDetailInfos1.setTransIn("19522115070");
////        royaltyDetailInfos1.setAmount("0.01");
//        royaltyDetailInfos1.setAmountPercentage("100");
//        royaltyDetailInfos.add(royaltyDetailInfos1);
        TCoursePackagePayment one = coursePackagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("code", outNum));
        TCoursePackage byId = coursePackageService.getById(one.getCoursePackageId());
        OperatorUser operatorUser =  storeClient.queryByStoreId(byId.getStoreId());
//        Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo);
//        Integer siteBookings = siteClient.queryByCode(outTradeNo);
//        List<Integer> stores = new ArrayList<>();
//        stores.add(coursePackagePayments);
//        stores.add(paymentCompetitions);
//        stores.add(siteBookings);
//        OperatorUser operatorUser = siteClient.queryOperator(stores);
        OpenApiRoyaltyDetailInfoPojo op = new OpenApiRoyaltyDetailInfoPojo();
        op.setTransOutType("loginName");
        op.setTransOut("happysports@weparklife.com");
        op.setTransInType("userId");
        op.setTransIn(operatorUser.getAlipayNum());
        op.setAmountPercentage(Long.valueOf(operatorUser.getAlipayProportion()));
        List<OpenApiRoyaltyDetailInfoPojo> ops = new ArrayList<>();
        ops.add(op);
        model.setRoyaltyParameters(ops);
        request.setBizModel(model);
        AlipayTradeOrderSettleResponse response = alipayClient.execute(request);
        if(response.isSuccess()){
        AlipayTradeOrderSettleResponse response1 = alipayClient.execute(request);
        if(response1.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
@@ -1037,6 +1117,7 @@
    /**
     * 玩湃币支付课程
     * @param appUser