puzhibing
2024-02-05 640ff18d2d7f4be02ddb7f8f75e899f05545eb98
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -143,12 +143,6 @@
    @Override
    public List<CoursePackageListVo> queryCourseList(Integer uid, CoursePackageList coursePackageList) throws Exception {
        AppUser appUser = appUserClient.queryAppUser(uid);
//        Map<String, String> geocode = gdMapGeocodingUtil.geocode(coursePackageList.getLon(), coursePackageList.getLat());
//        String provinceCode = geocode.get("provinceCode");
//        String cityCode = geocode.get("cityCode");
//        QueryWrapper<TCoursePackage> wrapper = new QueryWrapper<TCoursePackage>().in("status", Arrays.asList(1, 2))
//                .eq("auditStatus", 2).eq("state", 1).eq("provinceCode", provinceCode).eq("cityCode", cityCode);
        QueryWrapper<TCoursePackage> wrapper = new QueryWrapper<TCoursePackage>().in("status", Arrays.asList(1, 2))
                .eq("auditStatus", 2).eq("state", 1);
        if (null != coursePackageList.getCoursePackageTypeId()) {
@@ -171,7 +165,6 @@
        List<TCoursePackage> list1 = this.list(wrapper.last(" order by sort desc, insertTime desc"));
        Date currentTime = new Date();
// Filter the list based on the conditions
        List<TCoursePackage> list = list1.stream()
                .filter(coursePackage -> coursePackage.getType() != 2 || currentTime.before(coursePackage.getEndTime()))
                .collect(Collectors.toList());
@@ -311,35 +304,8 @@
            }
            coursePackageListVo.setPaymentPrice(paymentPrice);
            double vipPrice1 = coursePackageListVo.getVipPrice();
            double originalPrice1 = coursePackageListVo.getOriginalPrice();
            double paymentPrice1 = coursePackageListVo.getPaymentPrice();
//            double minPrice = Math.min(vipPrice1, Math.min(originalPrice1, paymentPrice1));
//            double maxPrice = Math.max(vipPrice1, Math.max(originalPrice1, paymentPrice1));
//            coursePackageListVo.setPaymentPrice(minPrice);
//            coursePackageListVo.setOriginalPrice(maxPrice);
//            System.out.println("Minimum price: " + minPrice);
//            }
//            else{
//                List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId())
//                        .eq("type", 1).eq("auditStatus", 2).eq("status",1));
//                Double vipPrice = coursePackagePaymentConfig.getCashPayment();
//                for (TCoursePackageDiscount coursePackageDiscount : list2) {
//                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember");
//                    if(vipPrice.compareTo(num1) > 0){
//                        vipPrice = num1;
//                    }
//                }
//                coursePackageListVo.setPaymentPrice(vipPrice);
//                coursePackageListVo.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
//            }
            if (coursePackageListVo.getPaymentPrice() < coursePackageListVo.getVipPrice()) {
                coursePackageListVo.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
//                coursePackageListVo.setVipPrice(null);
            }
            if (appUser.getIsVip() == 1) {
@@ -947,27 +913,40 @@
        CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        //生成支付订单
        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
        coursePackageOrder.setCode(code);
        coursePackageOrder.setAppUserId(uid);
        coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
        coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
        coursePackageOrder.setPayType(paymentCourseVo.getPayType());
        coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
        coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
        coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
        coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
        coursePackageOrder.setPayUserType(1);
        coursePackageOrder.setPayStatus(1);
        coursePackageOrder.setPayUserId(uid);
        coursePackageOrder.setStatus(1);
        coursePackageOrder.setState(1);
        coursePackageOrder.setInsertTime(new Date());
        coursePackageOrderService.save(coursePackageOrder);
        Long orderId = paymentCourseVo.getOrderId();
        if(null == orderId){
            //生成支付订单
            CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
            coursePackageOrder.setCode(code);
            coursePackageOrder.setAppUserId(uid);
            coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
            coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
            coursePackageOrder.setPayType(paymentCourseVo.getPayType());
            coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
            coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
            coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
            coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
            coursePackageOrder.setPayUserType(1);
            coursePackageOrder.setPayStatus(1);
            coursePackageOrder.setPayUserId(uid);
            coursePackageOrder.setStatus(1);
            coursePackageOrder.setState(1);
            coursePackageOrder.setInsertTime(new Date());
            coursePackageOrderService.save(coursePackageOrder);
            orderId = coursePackageOrder.getId();
        }else{
            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(orderId);
            code = coursePackageOrder.getCode();
            coursePackageOrder.setPayType(1);
            coursePackageOrder.setAppUserId(null);
            coursePackageOrder.setPayUserType(1);
            coursePackageOrder.setPayUserId(uid);
            coursePackageOrderService.updateById(coursePackageOrder);
        }
        ResultUtil weixinpay = payMoneyUtil.weixinpay("购买课程", coursePackagePaymentConfig.getId().toString(), code, paymentPrice.toString(), "/base/course/weChatPaymentCourseCallback", "APP", "");
        if (weixinpay.getCode() == 200) {
            String finalCode = code;
            new Thread(new Runnable() {
                @Override
                public void run() {
@@ -979,11 +958,11 @@
                            wait += (min * num);
                            Thread.sleep(wait);
                            CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
                                    .eq("code", code).eq("state", 1));
                                    .eq("code", finalCode).eq("state", 1));
                            if (coursePackageOrder1.getPayStatus() == 2) {
                                break;
                            }
                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(finalCode, "");
                            if (resultUtil.getCode() == 200 && coursePackageOrder1.getPayStatus() == 1) {
                                /**
                                 * SUCCESS—支付成功,
@@ -1028,7 +1007,7 @@
        return weixinpay;
    }
    private String smid = "2088330203191220";//平台支付宝商户号
    /**
     * 课程支付宝支付
     *
@@ -1042,9 +1021,10 @@
        CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        String smid1="";
        //生成支付订单
        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
        if (paymentCourseVo.getOrderId()==null){
            CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
            coursePackageOrder.setCode(code);
            coursePackageOrder.setAppUserId(uid);
            coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
@@ -1062,10 +1042,30 @@
            coursePackageOrder.setInsertTime(new Date());
            coursePackageOrderService.save(coursePackageOrder);
        }else {
            code = coursePackageOrderService.getById(paymentCourseVo.getOrderId()).getCode();
            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(paymentCourseVo.getOrderId());
            code = coursePackageOrder.getCode();
            coursePackageOrder.setPayType(2);
            coursePackageOrder.setAppUserId(null);
            coursePackageOrder.setPayUserType(1);
            coursePackageOrder.setPayUserId(uid);
            coursePackageOrderService.updateById(coursePackageOrder);
        }
        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", coursePackagePaymentConfig.getId().toString(), code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
        // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号
        Integer coursePackageId = paymentCourseVo.getId();
        TCoursePackage byId = coursePackageService.getById(coursePackageId);
        Store store = storeClient.queryStoreById(byId.getStoreId());
        if (store.getOperatorId() == null){
            smid1 = smid;
        }else{
            if (store.getOperatorId()==0){
                smid1 = smid;
            }else{
                smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId());
            }
        }
        ResultUtil alipay = payMoneyUtil.alipay(smid1,"购买课程", "购买课程",
                coursePackagePaymentConfig.getId().toString(),
                code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
        if (alipay.getCode() == 200) {
            String finalCode = code;
            new Thread(new Runnable() {
@@ -1073,7 +1073,6 @@
                public void run() {
                    try {
                        Thread.sleep(1000);
                        int num = 1;
                        int wait = 0;
                        while (num <= 10) {
@@ -1109,7 +1108,28 @@
                                    coursePackageOrderService.updateById(coursePackageOrder1);
                                    addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
                                    moneyOut(tradeNo,tradeNo,finalCode);
                                    break;
                                    // 根据课程id 查询这个课程属于哪个门店 属于哪个运营商
                                    Integer id = paymentCourseVo.getId();
                                    TCoursePackage byId = coursePackageService.getById(id);
                                    Integer storeId = byId.getStoreId();
                                    Store store = storeClient.queryStoreById(storeId);
                                    Integer operatorId = store.getOperatorId();
                                    if (operatorId==null){
                                        String smid ="2088330203191220";
                                            // 说明是平台的
                                            payMoneyUtil.confirm(smid,finalCode,tradeNo,paymentPrice.toString());
                                        break;
                                    }else if (operatorId==0){
                                        String smid ="2088330203191220";
                                        // 说明是平台的
                                        payMoneyUtil.confirm(smid,finalCode,tradeNo,paymentPrice.toString());
                                        break;
                                    }else{
                                        // 当前课程不属于门店 查询这个课程属于哪个门店 属于哪个运营商
                                        String smidByOperatorId = storeClient.getSMIDByOperatorId(operatorId);
                                        payMoneyUtil.confirm(smidByOperatorId,finalCode,tradeNo,paymentPrice.toString());
                                        break;
                                    }
                                }
                                if ("WAIT_BUYER_PAY".equals(s)) {
                                    num++;
@@ -1213,27 +1233,39 @@
        CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        //生成支付订单
        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
        coursePackageOrder.setCode(code);
        coursePackageOrder.setAppUserId(appUser.getId());
        coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
        coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
        coursePackageOrder.setPayType(paymentCourseVo.getPayType());
        coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
        coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
        coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
        coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
        coursePackageOrder.setPlayPaiCoin(paymentCourseVo.getPrice().intValue());
        coursePackageOrder.setPayUserType(1);
        coursePackageOrder.setPayStatus(2);
        coursePackageOrder.setPayUserId(appUser.getId());
        coursePackageOrder.setStatus(1);
        coursePackageOrder.setState(1);
        coursePackageOrder.setInsertTime(new Date());
        coursePackageOrderService.save(coursePackageOrder);
        Long orderId = paymentCourseVo.getOrderId();
        if(null == orderId){
            //生成支付订单
            CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
            coursePackageOrder.setCode(code);
            coursePackageOrder.setAppUserId(appUser.getId());
            coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
            coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
            coursePackageOrder.setPayType(paymentCourseVo.getPayType());
            coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
            coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
            coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
            coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
            coursePackageOrder.setPlayPaiCoin(paymentCourseVo.getPrice().intValue());
            coursePackageOrder.setPayUserType(1);
            coursePackageOrder.setPayStatus(2);
            coursePackageOrder.setPayUserId(appUser.getId());
            coursePackageOrder.setStatus(1);
            coursePackageOrder.setState(1);
            coursePackageOrder.setInsertTime(new Date());
            coursePackageOrderService.save(coursePackageOrder);
            orderId = coursePackageOrder.getId();
        }else{
            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(orderId);
            coursePackageOrder.setPayType(3);
            coursePackageOrder.setAppUserId(null);
            coursePackageOrder.setPayUserId(appUser.getId());
            coursePackageOrder.setPayUserType(1);
            coursePackageOrder.setPayStatus(2);
            coursePackageOrderService.updateById(coursePackageOrder);
        }
        addCoursePackageOrderStudent(coursePackageOrder.getId(), coursePackagePaymentConfig);
        addCoursePackageOrderStudent(orderId, coursePackagePaymentConfig);
        return ResultUtil.success();
    }
@@ -1269,6 +1301,7 @@
     *
     * @param coursePackagePaymentConfig
     */
    @Override
    public void addCoursePackageOrderStudent(Long coursePackageOrderId, CoursePackagePaymentConfig coursePackagePaymentConfig) {
        CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePackageOrderId);
        // 发放优惠券
@@ -1316,8 +1349,6 @@
                    //开始排课
                    addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
                    //课时记录
                    CourseCounsum courseCounsum = new CourseCounsum();
                    courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
@@ -1336,8 +1367,6 @@
                        courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId());
                        courseCounsumService.save(courseCounsum1);
                    }
                } else {
                    Date useTime = coursePackageOrderStudent.getUseTime();
                    coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + coursePackagePaymentConfig.getClassHours());
@@ -1383,12 +1412,7 @@
                        courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId());
                        courseCounsumService.save(courseCounsum1);
                    }
                }
            }
            if(coursePackage.getType() == 2){
                addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null, null);