| | |
| | | private ISiteService siteService; |
| | | |
| | | |
| | | |
| | | // public static void main(String[] args) { |
| | | // String now = DateUtil.now().substring(11, 19); |
| | | // System.err.println(now); |
| | | // if ("17:00:00".compareTo(now) <= 0 && "19:00:00".compareTo(now) >= 0) { |
| | | // System.err.println("yes"); |
| | | // } |
| | | // |
| | | // } |
| | | |
| | | /** |
| | | * 获取场地列表 |
| | |
| | | querySiteList.setPageNum((querySiteList.getPageNum() - 1) * querySiteList.getPageSize()); |
| | | DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek(); |
| | | Map<Integer, List<TSitePrice>> priceMap = sitePriceService.lambdaQuery().eq(TSitePrice::getDayOfWeek, dayOfWeek.getValue()) |
| | | .eq(querySiteList.getTargetAudience()!=null,TSitePrice::getTargetAudience, querySiteList.getTargetAudience()) |
| | | .eq(querySiteList.getTargetAudience() != null, TSitePrice::getTargetAudience, querySiteList.getTargetAudience()) |
| | | .list() |
| | | .stream().collect(Collectors.groupingBy(TSitePrice::getSiteId)); |
| | | List<QuerySiteListVo> querySiteListVos = this.baseMapper.querySiteList(querySiteList); |
| | | // 获取当前时间 只需要时分秒 格式hh:mm:ss |
| | | String now = DateUtil.now().substring(11, 19); |
| | | for (QuerySiteListVo querySiteListVo : querySiteListVos) { |
| | | querySiteListVo.setPrice(0.0); |
| | | querySiteListVo.setTimes(""); |
| | |
| | | continue; |
| | | } |
| | | List<TSitePrice> tSitePrices = priceMap.get(querySiteListVo.getId()); |
| | | if (tSitePrices!=null&& !tSitePrices.isEmpty()){ |
| | | BigDecimal bigDecimal = tSitePrices.get(0).getCashPrice(); |
| | | if (tSitePrices != null && !tSitePrices.isEmpty()) { |
| | | BigDecimal bigDecimal = BigDecimal.ZERO; |
| | | // 遍历 查询最小的价格 |
| | | for (TSitePrice tSitePrice : tSitePrices) { |
| | | if (bigDecimal.compareTo(tSitePrice.getCashPrice()) > 0) { |
| | | bigDecimal = tSitePrice.getCashPrice(); |
| | | // 当前时间再范围之内 |
| | | if (tSitePrice.getStartTime().compareTo(now) <= 0 && tSitePrice.getEndTime().compareTo(now) >= 0) { |
| | | if (tSitePrice.getCashPrice().compareTo(bigDecimal) > 0) { |
| | | bigDecimal = tSitePrice.getCashPrice(); |
| | | } |
| | | } |
| | | } |
| | | querySiteListVo.setPrice(bigDecimal.doubleValue()); |
| | | querySiteListVo.setTimes(tSitePrices.get(0).getStartTime() + "-" + tSitePrices.get(tSitePrices.size()-1).getEndTime()); |
| | | querySiteListVo.setTimes(tSitePrices.get(0).getStartTime() + "-" + tSitePrices.get(tSitePrices.size() - 1).getEndTime()); |
| | | } |
| | | Map<String, Double> distance = GeodesyUtil.getDistance(querySiteList.getLon() + "," + querySiteList.getLat(), querySiteListVo.getStoreLon() + "," + querySiteListVo.getStoreLat()); |
| | | double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); |
| | |
| | | count++; |
| | | } |
| | | } |
| | | if (querySiteTimes.getSelectable() == 1&&end.before(now)){ |
| | | if (querySiteTimes.getSelectable() == 1 && end.before(now)) { |
| | | querySiteTimes.setSelectable(0); |
| | | } |
| | | if (end.before(now)){ |
| | | if (end.before(now)) { |
| | | querySiteTimes.setSelectable(0); |
| | | } |
| | | querySiteTimes.setSelectCount(count); |
| | | if (flag == 0 && querySiteTimes.getSelectable() == 1) { |
| | | if (flag == 0 && querySiteTimes.getSelectable() == 1) { |
| | | // 当前时间段还没有预约 |
| | | Integer walkinCapacity = site.getWalkinCapacity(); |
| | | // 计算散客预约人数和最大散客容纳数 |
| | | System.err.println("预约人数" + count); |
| | | System.err.println("最大散客容纳数" + walkinCapacity); |
| | | if (walkinCapacity <= count) { |
| | | if (targetAudience==1 && walkinCapacity!=0){ |
| | | if (targetAudience == 1 && walkinCapacity != 0) { |
| | | // 不可预约 |
| | | System.err.println("不可预约 也不能散客"); |
| | | querySiteTimes.setSelectable(0); |
| | | querySiteTimes.setIsReserve(0); |
| | | }else if (targetAudience==2){ |
| | | } else if (targetAudience == 2) { |
| | | // 不能散客 |
| | | System.err.println("不可预约 也不能散客"); |
| | | querySiteTimes.setSelectable(0); |
| | | querySiteTimes.setIsReserve(0); |
| | | }else{ |
| | | } else { |
| | | querySiteTimes.setSelectable(1); |
| | | } |
| | | }else{ |
| | | if (targetAudience==2){ |
| | | } else { |
| | | if (targetAudience == 2) { |
| | | // 散客只能预约当前时间段 |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String nowStr = simpleDateFormat.format(now); |
| | | // 判断当前时间有没有在timePriceStart和timePriceEnd之间 |
| | | if (DateComparisonExample.isStringWithinTimeRange(nowStr, simpleDateFormat.parse(timePriceStart), simpleDateFormat.parse(timePriceEnd))) { |
| | | if (DateComparisonExample.isStringWithinTimeRange(nowStr, simpleDateFormat.parse(timePriceStart), simpleDateFormat.parse(timePriceEnd))) { |
| | | querySiteTimes.setSelectable(1); |
| | | }else{ |
| | | } else { |
| | | querySiteTimes.setSelectable(0); |
| | | } |
| | | } |
| | |
| | | count++; |
| | | } |
| | | } |
| | | if (querySiteTimes.getSelectable() == 1&&end.before(now)){ |
| | | if (querySiteTimes.getSelectable() == 1 && end.before(now)) { |
| | | querySiteTimes.setSelectable(0); |
| | | } |
| | | if (end.before(now)){ |
| | | if (end.before(now)) { |
| | | querySiteTimes.setSelectable(0); |
| | | } |
| | | querySiteTimes.setSelectCount(count); |
| | | if (flag == 0 && querySiteTimes.getSelectable() == 1) { |
| | | if (flag == 0 && querySiteTimes.getSelectable() == 1) { |
| | | // 当前时间段还没有预约 |
| | | Integer walkinCapacity = site.getWalkinCapacity(); |
| | | // 计算散客预约人数和最大散客容纳数 |
| | | System.err.println("预约人数" + count); |
| | | System.err.println("最大散客容纳数" + walkinCapacity); |
| | | if (walkinCapacity <= count) { |
| | | if (targetAudience==1 && walkinCapacity!=0){ |
| | | if (targetAudience == 1 && walkinCapacity != 0) { |
| | | // 不可预约 |
| | | System.err.println("不可预约 也不能散客"); |
| | | querySiteTimes.setSelectable(0); |
| | | querySiteTimes.setIsReserve(0); |
| | | }else if (targetAudience==2){ |
| | | } else if (targetAudience == 2) { |
| | | // 不能散客 |
| | | System.err.println("不可预约 也不能散客"); |
| | | querySiteTimes.setSelectable(0); |
| | | querySiteTimes.setIsReserve(0); |
| | | }else{ |
| | | } else { |
| | | querySiteTimes.setSelectable(1); |
| | | } |
| | | }else{ |
| | | if (targetAudience==2){ |
| | | } else { |
| | | if (targetAudience == 2) { |
| | | // 散客只能预约当前时间段 |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String nowStr = simpleDateFormat.format(now); |
| | | // 判断当前时间有没有在timePriceStart和timePriceEnd之间 |
| | | if (DateComparisonExample.isStringWithinTimeRange(nowStr, simpleDateFormat.parse(timePriceStart), simpleDateFormat.parse(timePriceEnd))) { |
| | | if (DateComparisonExample.isStringWithinTimeRange(nowStr, simpleDateFormat.parse(timePriceStart), simpleDateFormat.parse(timePriceEnd))) { |
| | | querySiteTimes.setSelectable(1); |
| | | }else{ |
| | | } else { |
| | | querySiteTimes.setSelectable(0); |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 判断两个时间段是否有交集 |
| | | * |
| | | * @param start1 第一个时间段开始时间 |
| | | * @param end1 第一个时间段结束时间 |
| | | * @param end1 第一个时间段结束时间 |
| | | * @param start2 第二个时间段开始时间 |
| | | * @param end2 第二个时间段结束时间 |
| | | * @param end2 第二个时间段结束时间 |
| | | * @return 如果有交集返回true,否则返回false |
| | | */ |
| | | private boolean isTimePeriodsIntersect(String start1, String end1, String start2, String end2) { |
| | |
| | | } |
| | | if (querySiteTime.getTime().equals(time)) { |
| | | money = money.add(querySiteTime.getCashPrice()); |
| | | playCoin = playCoin+querySiteTime.getCoinPrice(); |
| | | playCoin = playCoin + querySiteTime.getCoinPrice(); |
| | | break; |
| | | } |
| | | } |
| | |
| | | siteBooking.setBooker(reservationSite.getBooker()); |
| | | siteBooking.setPhone(reservationSite.getPhone()); |
| | | siteBooking.setPayType(reservationSite.getPayType()); |
| | | if (reservationSite.getPayType()==3){ |
| | | if (reservationSite.getPayType() == 3) { |
| | | siteBooking.setPayMoney(playCoin.doubleValue()); |
| | | }else{ |
| | | } else { |
| | | siteBooking.setPayMoney(money.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); |
| | | } |
| | | siteBooking.setUserCouponId(reservationSite.getCouponId()); |
| | |
| | | siteBooking.setState(1); |
| | | siteBooking.setTargetAudience(reservationSite.getTargetAudience()); |
| | | siteBooking.setInsertTime(new Date()); |
| | | siteBooking.setMoney(money+","+playCoin); |
| | | siteBooking.setMoney(money + "," + playCoin); |
| | | siteBooking.setNextName(reservationSite.getNextName()); |
| | | siteBooking.setIsHalf(reservationSite.getIsHalf()); |
| | | siteBooking.setHalfName(reservationSite.getHalfName()); |
| | |
| | | pageNo = (pageNo - 1) * pageSize; |
| | | List<QueryMySiteVo> queryMySiteVos = this.baseMapper.queryMySite(uid, status, pageNo, pageSize); |
| | | for (QueryMySiteVo queryMySiteVo : queryMySiteVos) { |
| | | if (queryMySiteVo.getTargetAudience()==null){ |
| | | if (queryMySiteVo.getTargetAudience() == null) { |
| | | queryMySiteVo.setTargetAudience(1); |
| | | } |
| | | SiteBooking siteBooking = siteBookingService.getById(queryMySiteVo.getId()); |
| | |
| | | // } |
| | | if (querySiteTime.getTime().equals(time)) { |
| | | money = money.add(querySiteTime.getCashPrice()); |
| | | playCoin = playCoin+querySiteTime.getCoinPrice(); |
| | | playCoin = playCoin + querySiteTime.getCoinPrice(); |
| | | break; |
| | | } |
| | | } |
| | |
| | | if (siteBooking.getTargetAudience() == 1 && format.format(new Date()).equals(format.format(startTime)) && siteBooking.getStatus() != 0) { |
| | | return ResultUtil.error("预约当天,不能取消"); |
| | | } |
| | | if (siteBooking.getTargetAudience() == 2){ |
| | | if (siteBooking.getTargetAudience() == 2) { |
| | | Date date = new Date(); |
| | | if (siteBooking.getEndTime().before( date)){ |
| | | if (siteBooking.getEndTime().before(date)) { |
| | | return ResultUtil.error("已过期,不能取消"); |
| | | } |
| | | } |
| | |
| | | String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1]; |
| | | if (querySiteTime.getTime().equals(time)) { |
| | | money = money.add(querySiteTime.getCashPrice()); |
| | | playCoin = playCoin+querySiteTime.getCoinPrice(); |
| | | playCoin = playCoin + querySiteTime.getCoinPrice(); |
| | | break; |
| | | } |
| | | } |
| | |
| | | siteBooking.setOrderNo(sdf.format(new Date()) + UUIDUtil.getNumberRandom(3)); |
| | | |
| | | siteBooking.setPayType(payType); |
| | | if (payType==3){ |
| | | if (payType == 3) { |
| | | siteBooking.setPayMoney(playCoin.doubleValue()); |
| | | }else{ |
| | | } else { |
| | | siteBooking.setPayMoney(money.doubleValue()); |
| | | } |
| | | if (payType == 3) { |
| | |
| | | String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1]; |
| | | if (querySiteTime.getTime().equals(time)) { |
| | | money = money.add(querySiteTime.getCashPrice()); |
| | | playCoin = playCoin+querySiteTime.getCoinPrice(); |
| | | playCoin = playCoin + querySiteTime.getCoinPrice(); |
| | | break; |
| | | } |
| | | } |
| | |
| | | money = money.subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN); |
| | | } |
| | | } |
| | | switch (siteBooking.getPayType()){ |
| | | switch (siteBooking.getPayType()) { |
| | | case 1: |
| | | map.put("cash", money.doubleValue()); |
| | | break; |