|  |  |  | 
|---|
|  |  |  | if (integer >= maxSubscribeNumber){ | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * [{ | 
|---|
|  |  |  | *    "startDate": "2023-01-01 00:00:00", | 
|---|
|  |  |  | *    "endDate": "2023-12-31 23:59:59", | 
|---|
|  |  |  | *    "startTime": "02:00:00", | 
|---|
|  |  |  | *    "endTime": "23:00:00", | 
|---|
|  |  |  | *    "weeks": [1, 2, 7], | 
|---|
|  |  |  | *    "cashPayment": 100 | 
|---|
|  |  |  | * }] | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent()); | 
|---|
|  |  |  | JSONObject jsonObject = jsonArray.getJSONObject(0); | 
|---|
|  |  |  | 
|---|
|  |  |  | distanceVo.setLatitude(lat); | 
|---|
|  |  |  | distanceVo.setLongitude(lon); | 
|---|
|  |  |  | distanceVo.setStoreId(coursePackage.getStoreId()); | 
|---|
|  |  |  | resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); | 
|---|
|  |  |  | String s = sreClient.calculateDistance(distanceVo); | 
|---|
|  |  |  | resde.setStoreDistance(s); | 
|---|
|  |  |  | list.add(resde); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | tCoursePackageDiscountQueryWrapper.eq("type", 4); | 
|---|
|  |  |  | tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); | 
|---|
|  |  |  | if (tCoursePackageDiscounts.size() > 0) { | 
|---|
|  |  |  | for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { | 
|---|
|  |  |  | TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | tCoursePackageDiscountQueryWrapper.eq("type", 4); | 
|---|
|  |  |  | tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); | 
|---|
|  |  |  | if (tCoursePackageDiscounts.size() > 0) { | 
|---|
|  |  |  | for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { | 
|---|
|  |  |  | TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); | 
|---|
|  |  |  | //                    判断预约人数是否已满 | 
|---|
|  |  |  | Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber(); | 
|---|
|  |  |  | Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>() | 
|---|
|  |  |  | .eq("appUserId",appUserId ) | 
|---|
|  |  |  | .eq("status",1)); | 
|---|
|  |  |  | if (integer >= maxSubscribeNumber){ | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                    [{ | 
|---|
|  |  |  | //                        "startDate": "2023-01-01 00:00:00", | 
|---|
|  |  |  | //                        "endDate": "2023-12-31 23:59:59", | 
|---|
|  |  |  | //                        "startTime": "02:00:00", | 
|---|
|  |  |  | //                        "endTime": "23:00:00", | 
|---|
|  |  |  | //                        "weeks": [1, 2, 7], | 
|---|
|  |  |  | //                        "hour": 10 | 
|---|
|  |  |  | //                    }] | 
|---|
|  |  |  | Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber(); | 
|---|
|  |  |  | Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>() | 
|---|
|  |  |  | .eq("appUserId",appUserId ) | 
|---|
|  |  |  | .eq("status",1)); | 
|---|
|  |  |  | if (integer >= maxSubscribeNumber){ | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent()); | 
|---|
|  |  |  | JSONObject jsonObject = jsonArray.getJSONObject(0); | 
|---|
|  |  |  | Date parse1 = null; | 
|---|
|  |  |  | Date parse2 = null; | 
|---|
|  |  |  | String startDate = jsonObject.getString("startDate"); | 
|---|
|  |  |  | String endDate = jsonObject.getString("endDate"); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent()); | 
|---|
|  |  |  | JSONObject jsonObject = jsonArray.getJSONObject(0); | 
|---|
|  |  |  | Date parse1 = null; | 
|---|
|  |  |  | Date parse2 = null; | 
|---|
|  |  |  | String startDate = jsonObject.getString("startDate"); | 
|---|
|  |  |  | String endDate = jsonObject.getString("endDate"); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | parse1 = simpleDateFormat.parse(startDate); | 
|---|
|  |  |  | parse2 = simpleDateFormat.parse(endDate); | 
|---|
|  |  |  | } catch (ParseException e) { | 
|---|
|  |  |  | throw new RuntimeException(e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); | 
|---|
|  |  |  | Integer cashPayment = jsonObject.getInteger("hour"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date tomorrowDate = null; | 
|---|
|  |  |  | if (weekStr != 7) { | 
|---|
|  |  |  | Calendar calendar = Calendar.getInstance(); | 
|---|
|  |  |  | calendar.setTime(localTime); | 
|---|
|  |  |  | calendar.add(Calendar.DAY_OF_WEEK, 1); | 
|---|
|  |  |  | tomorrowDate = calendar.getTime(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | boolean isWithinRange = false; | 
|---|
|  |  |  | if (weeks.contains(weekStr)) { | 
|---|
|  |  |  | isWithinRange = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (isWithinRange) { | 
|---|
|  |  |  | // 判断当前日期是否在开始时间和结束时间范围内 | 
|---|
|  |  |  | if (isDateWithinRange(localTime, parse1, parse2)) { | 
|---|
|  |  |  | Details resde = new Details(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); | 
|---|
|  |  |  | resde.setImage(coursePackage.getCoverDrawing()); | 
|---|
|  |  |  | resde.setCoursePackageName(coursePackage.getName()); | 
|---|
|  |  |  | CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); | 
|---|
|  |  |  | resde.setCourseHours(paymentConfig.getClassHours()); | 
|---|
|  |  |  | resde.setDonateHours(cashPayment); | 
|---|
|  |  |  | resde.setDataTime("今日"); | 
|---|
|  |  |  | resde.setDate(localTime); | 
|---|
|  |  |  | resde.setOriginalPrice(paymentConfig.getCashPayment()); | 
|---|
|  |  |  | resde.setStatus(1); | 
|---|
|  |  |  | GetDistanceVo distanceVo = new GetDistanceVo(); | 
|---|
|  |  |  | distanceVo.setLatitude(lat); | 
|---|
|  |  |  | distanceVo.setLongitude(lon); | 
|---|
|  |  |  | distanceVo.setStoreId(coursePackage.getStoreId()); | 
|---|
|  |  |  | resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); | 
|---|
|  |  |  | list.add(resde); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Calendar tempCalendar = Calendar.getInstance(); | 
|---|
|  |  |  | tempCalendar.setTime(localTime); | 
|---|
|  |  |  | tempCalendar.add(Calendar.DAY_OF_WEEK, 1); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { | 
|---|
|  |  |  | Date tempDate = tempCalendar.getTime(); | 
|---|
|  |  |  | int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); | 
|---|
|  |  |  | if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { | 
|---|
|  |  |  | Details resde = new Details(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); | 
|---|
|  |  |  | resde.setImage(coursePackage.getCoverDrawing()); | 
|---|
|  |  |  | resde.setCoursePackageName(coursePackage.getName()); | 
|---|
|  |  |  | CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); | 
|---|
|  |  |  | resde.setCourseHours(paymentConfig.getClassHours()); | 
|---|
|  |  |  | resde.setDonateHours(cashPayment); | 
|---|
|  |  |  | String weekOfDate = ""; | 
|---|
|  |  |  | if (weekStr != 7 && tempDate.equals(tomorrowDate)) { | 
|---|
|  |  |  | weekOfDate = "明日"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | weekOfDate = DateTimeHelper.getWeekOfDate(tempDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | resde.setDataTime(weekOfDate); | 
|---|
|  |  |  | resde.setDate(tempDate); | 
|---|
|  |  |  | resde.setOriginalPrice(paymentConfig.getCashPayment()); | 
|---|
|  |  |  | resde.setStatus(2); | 
|---|
|  |  |  | GetDistanceVo distanceVo = new GetDistanceVo(); | 
|---|
|  |  |  | distanceVo.setLatitude(lat); | 
|---|
|  |  |  | distanceVo.setLongitude(lon); | 
|---|
|  |  |  | distanceVo.setStoreId(coursePackage.getStoreId()); | 
|---|
|  |  |  | resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); | 
|---|
|  |  |  | list.add(resde); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | tempCalendar.add(Calendar.DAY_OF_WEEK, 1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | parse1 = simpleDateFormat.parse(startDate); | 
|---|
|  |  |  | parse2 = simpleDateFormat.parse(endDate); | 
|---|
|  |  |  | } catch (ParseException e) { | 
|---|
|  |  |  | throw new RuntimeException(e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); | 
|---|
|  |  |  | Integer cashPayment = jsonObject.getInteger("hour"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date tomorrowDate = null; | 
|---|
|  |  |  | if (weekStr != 7) { | 
|---|
|  |  |  | Calendar calendar = Calendar.getInstance(); | 
|---|
|  |  |  | calendar.setTime(localTime); | 
|---|
|  |  |  | calendar.add(Calendar.DAY_OF_WEEK, 1); | 
|---|
|  |  |  | tomorrowDate = calendar.getTime(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | boolean isWithinRange = false; | 
|---|
|  |  |  | if (weeks.contains(weekStr)) { | 
|---|
|  |  |  | isWithinRange = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (isWithinRange) { | 
|---|
|  |  |  | // 判断当前日期是否在开始时间和结束时间范围内 | 
|---|
|  |  |  | if (isDateWithinRange(localTime, parse1, parse2)) { | 
|---|
|  |  |  | Details resde = new Details(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); | 
|---|
|  |  |  | resde.setImage(coursePackage.getCoverDrawing()); | 
|---|
|  |  |  | resde.setCoursePackageName(coursePackage.getName()); | 
|---|
|  |  |  | CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); | 
|---|
|  |  |  | resde.setCourseHours(paymentConfig.getClassHours()); | 
|---|
|  |  |  | resde.setDonateHours(cashPayment); | 
|---|
|  |  |  | resde.setDataTime("今日"); | 
|---|
|  |  |  | resde.setDate(localTime); | 
|---|
|  |  |  | resde.setOriginalPrice(paymentConfig.getCashPayment()); | 
|---|
|  |  |  | resde.setStatus(1); | 
|---|
|  |  |  | GetDistanceVo distanceVo = new GetDistanceVo(); | 
|---|
|  |  |  | distanceVo.setLatitude(lat); | 
|---|
|  |  |  | distanceVo.setLongitude(lon); | 
|---|
|  |  |  | distanceVo.setStoreId(coursePackage.getStoreId()); | 
|---|
|  |  |  | resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); | 
|---|
|  |  |  | list.add(resde); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Calendar tempCalendar = Calendar.getInstance(); | 
|---|
|  |  |  | tempCalendar.setTime(localTime); | 
|---|
|  |  |  | tempCalendar.add(Calendar.DAY_OF_WEEK, 1); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { | 
|---|
|  |  |  | Date tempDate = tempCalendar.getTime(); | 
|---|
|  |  |  | int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); | 
|---|
|  |  |  | if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { | 
|---|
|  |  |  | Details resde = new Details(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); | 
|---|
|  |  |  | resde.setImage(coursePackage.getCoverDrawing()); | 
|---|
|  |  |  | resde.setCoursePackageName(coursePackage.getName()); | 
|---|
|  |  |  | CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); | 
|---|
|  |  |  | resde.setCourseHours(paymentConfig.getClassHours()); | 
|---|
|  |  |  | resde.setDonateHours(cashPayment); | 
|---|
|  |  |  | String weekOfDate = ""; | 
|---|
|  |  |  | if (weekStr != 7 && tempDate.equals(tomorrowDate)) { | 
|---|
|  |  |  | weekOfDate = "明日"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | weekOfDate = DateTimeHelper.getWeekOfDate(tempDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | resde.setDataTime(weekOfDate); | 
|---|
|  |  |  | resde.setDate(tempDate); | 
|---|
|  |  |  | resde.setOriginalPrice(paymentConfig.getCashPayment()); | 
|---|
|  |  |  | resde.setStatus(2); | 
|---|
|  |  |  | GetDistanceVo distanceVo = new GetDistanceVo(); | 
|---|
|  |  |  | distanceVo.setLatitude(lat); | 
|---|
|  |  |  | distanceVo.setLongitude(lon); | 
|---|
|  |  |  | distanceVo.setStoreId(coursePackage.getStoreId()); | 
|---|
|  |  |  | resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); | 
|---|
|  |  |  | list.add(resde); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | tempCalendar.add(Calendar.DAY_OF_WEEK, 1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.out.println("list"+list); | 
|---|
|  |  |  | return list; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | public ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon) { | 
|---|
|  |  |  | ExchangeCoursePackageResponse packageResponse = new ExchangeCoursePackageResponse(); | 
|---|
|  |  |  | TCoursePackageDiscount coursePackageDiscount = this.baseMapper.selectById(coursePackageDiscountId); | 
|---|
|  |  |  | packageResponse.setCoursePackageDiscountId(coursePackageDiscount.getCoursePackageId()); | 
|---|
|  |  |  | Integer coursePackageId = coursePackageDiscount.getCoursePackageId(); | 
|---|
|  |  |  | packageResponse.setCoursePackageDiscountId(coursePackageId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | TCoursePackage coursePackage = tcpMapper.selectById(coursePackageId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | distanceVo.setLatitude(lat); | 
|---|
|  |  |  | distanceVo.setLongitude(lon); | 
|---|
|  |  |  | distanceVo.setStoreId(coursePackage.getStoreId()); | 
|---|
|  |  |  | long l = sreClient.calculateDistance(distanceVo); | 
|---|
|  |  |  | packageResponse.setDistance(l); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String s = sreClient.calculateDistance(distanceVo); | 
|---|
|  |  |  | packageResponse.setDistance(Double.valueOf(s)); | 
|---|
|  |  |  | if (coursePackageDiscount.getType() == 1 || coursePackageDiscount.getType() == 2){ | 
|---|
|  |  |  | return packageResponse; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent()); | 
|---|
|  |  |  | JSONObject jsonObject = jsonArray.getJSONObject(0); | 
|---|
|  |  |  | CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | packageResponse.setDiscountPrice(vipPrice); | 
|---|
|  |  |  | packageResponse.setWanpaiGold(paymentConfig.getPlayPaiCoin()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Integer> weeks = StrUtils.dealStrToList(coursePackage.getClassWeeks()); | 
|---|
|  |  |  | if (weeks.size() > 0){ | 
|---|
|  |  |  | String[] split = coursePackage.getClassWeeks().split(";"); | 
|---|
|  |  |  | if (split.length > 0){ | 
|---|
|  |  |  | StringBuilder courWeeks = new StringBuilder("每"); | 
|---|
|  |  |  | for (Integer integer : weeks) { | 
|---|
|  |  |  | switch (integer){ | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | courWeeks.append("周一、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 2: | 
|---|
|  |  |  | courWeeks.append("周二、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 3: | 
|---|
|  |  |  | courWeeks.append("周三、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 4: | 
|---|
|  |  |  | courWeeks.append("周四、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 5: | 
|---|
|  |  |  | courWeeks.append("周五、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 6: | 
|---|
|  |  |  | courWeeks.append("周六、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 7: | 
|---|
|  |  |  | courWeeks.append("周末、"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (String integer : split) { | 
|---|
|  |  |  | courWeeks.append(integer).append("、"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == ','){ | 
|---|
|  |  |  | if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == '、'){ | 
|---|
|  |  |  | courWeeks.deleteCharAt(courWeeks.length() - 1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | packageResponse.setWeekTime(courWeeks.toString()); | 
|---|