From 783b9ee7a8caa508d123d34bfbbf294716211dd7 Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期三, 18 十月 2023 16:50:16 +0800 Subject: [PATCH] 10.18.2 --- cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 233 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 193 insertions(+), 40 deletions(-) diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java index 5bcce9e..fbb18c6 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java @@ -28,6 +28,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.time.LocalTime; import java.util.*; /** @@ -62,6 +63,9 @@ private PayMoneyUtil payMoneyUtil; @Autowired private SiteMapper siteMapper; + + @Autowired + private TBackRecordService backRecordService; @@ -102,6 +106,7 @@ Store store = storeService.getById(site.getStoreId()); QuerySiteInfoVo querySiteInfoVo = new QuerySiteInfoVo(); querySiteInfoVo.setId(site.getId()); + querySiteInfoVo.setTypeName(site.getTypeName()); querySiteInfoVo.setName(site.getName()); querySiteInfoVo.setSiteTypeName(siteType.getName()); querySiteInfoVo.setStoreName(store.getName()); @@ -111,7 +116,10 @@ querySiteInfoVo.setStoreLat(store.getLat()); querySiteInfoVo.setStorePhone(store.getPhone()); querySiteInfoVo.setImgs(site.getImgs()); + querySiteInfoVo.setDistance(0D); + + querySiteInfoVo.setCashPriceOne(site.getCashPriceOne()); if(site.getPlayPaiCoinOne()!=null){ querySiteInfoVo.setPlayPaiCoinOne(site.getPlayPaiCoinOne().intValue()); @@ -144,6 +152,13 @@ } + + + + @Autowired + private ISiteBookingService iSiteBookingService; + @Autowired + private ISiteService siteService; /** * 获取场地预约日期数据 * @param id @@ -152,57 +167,168 @@ * @throws Exception */ @Override - public List<QuerySiteTimes> querySiteTimes(Integer id, String day) throws Exception { - Site site = this.getById(id); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Calendar s = Calendar.getInstance(); - s.setTime(sdf.parse(day + " " + site.getAppointmentStartTime())); - Calendar e = Calendar.getInstance(); - e.setTime(sdf.parse(day + " " + site.getAppointmentEndTime())); + public List<QuerySiteTimes> querySiteTimes(Integer id, String day,String halfName,String siteName) throws Exception { +// Site site = this.getById(id); +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Calendar s = Calendar.getInstance(); +// s.setTime(sdf.parse(day + " " + site.getAppointmentStartTime())); +// Calendar e = Calendar.getInstance(); +// e.setTime(sdf.parse(day + " " + site.getAppointmentEndTime())); +// +// int hour = e.get(Calendar.HOUR_OF_DAY); +// +// int minute = e.get(Calendar.MINUTE); +// +// List<QuerySiteTimes> list = new ArrayList<>(); +// +// SimpleDateFormat sdfs = new SimpleDateFormat("HH:mm"); +// +// while (true){ +// +// String start = sdfs.format(s.getTime()); +// +// s.set(Calendar.MINUTE, s.get(Calendar.MINUTE) + 30); +// +// int e_hour = s.get(Calendar.HOUR_OF_DAY); +// +// int e_minute = s.get(Calendar.MINUTE); +// +// String end = sdfs.format(s.getTime()); +// +// QuerySiteTimes querySiteTimes = new QuerySiteTimes(); +// +// querySiteTimes.setTime(start + "-" + end); +// +// querySiteTimes.setSelectable(1); +// +// SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("state", 1) +// .in("status", Arrays.asList(3, 4, 5)).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'")); +// if(null != siteBooking){ +// querySiteTimes.setSelectable(0); +// } +// int count = siteLockService.count(new QueryWrapper<SiteLock>().eq("siteId", id).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'")); +// if(count > 0){ +// querySiteTimes.setSelectable(0); +// } +// +// list.add(querySiteTimes); +// +// if(e_hour == hour && minute == e_minute){ +// break; +// } +// } +// return list; - int hour = e.get(Calendar.HOUR_OF_DAY); + System.out.println("=======date======"+day); - int minute = e.get(Calendar.MINUTE); + List<String> strings = new ArrayList<>(); - List<QuerySiteTimes> list = new ArrayList<>(); +// List<SiteBooking> siteBookings = siteClient.listBooks(id); + List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("nextName",siteName).like("times",day)); + System.out.println("=======siteBookings======"+siteBookings); + for (SiteBooking siteBooking : siteBookings) { - SimpleDateFormat sdfs = new SimpleDateFormat("HH:mm"); - while (true){ + String[] split = siteBooking.getTimes().split(";"); - String start = sdfs.format(s.getTime()); + if (siteBooking.getIsHalf() == 2) { + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } + }else { - s.set(Calendar.MINUTE, s.get(Calendar.MINUTE) + 30); + if (siteBooking.getHalfName().equals(halfName)){ + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } - int e_hour = s.get(Calendar.HOUR_OF_DAY); + } - int e_minute = s.get(Calendar.MINUTE); - String end = sdfs.format(s.getTime()); - - QuerySiteTimes querySiteTimes = new QuerySiteTimes(); - - querySiteTimes.setTime(start + "-" + end); - - querySiteTimes.setSelectable(1); - - SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("state", 1) - .in("status", Arrays.asList(3, 4, 5)).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'")); - if(null != siteBooking){ - querySiteTimes.setSelectable(0); - } - int count = siteLockService.count(new QueryWrapper<SiteLock>().eq("siteId", id).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'")); - if(count > 0){ - querySiteTimes.setSelectable(0); } - list.add(querySiteTimes); - if(e_hour == hour && minute == e_minute){ - break; - } } - return list; + System.out.println("======strings======="+strings); + + + List<QuerySiteTimes> timeRanges = new ArrayList<>(); + + + Site site = siteService.getById(id); + System.out.println("================"+site); + String appointmentStartTime = site.getAppointmentStartTime(); + String appointmentEndTime = site.getAppointmentEndTime(); + + String currentTime = appointmentStartTime; + while (currentTime.compareTo(appointmentEndTime) < 0) { + String nextTime = getNextTime(currentTime); + String timeRange = currentTime + "-" + nextTime; + QuerySiteTimes orderDto = new QuerySiteTimes(); + orderDto.setTime(timeRange); + + LocalTime currentTime1 = LocalTime.now(); + LocalTime targetTime = LocalTime.parse(currentTime); + + boolean hasExceeded = currentTime1.isAfter(targetTime); +// if (hasExceeded){ +// orderDto.setSelectable(0); +// } + if (strings.contains(timeRange)){ + orderDto.setSelectable(0); + }else { + orderDto.setSelectable(1); + } + + + timeRanges.add(orderDto); + currentTime = nextTime; + } + System.out.println("-------------"+timeRanges); + + return timeRanges; + + + + + + } + + + public static String getNextTime(String currentTime) { + String[] parts = currentTime.split(":"); + int hour = Integer.parseInt(parts[0]); + int minute = Integer.parseInt(parts[1]); + + if (minute == 30) { + hour++; + minute = 0; + } else { + minute = 30; + } + + return String.format("%02d:%02d", hour, minute); + +// String[] parts = currentTime.split(":"); +// int hour = Integer.parseInt(parts[0]); +// int minute = Integer.parseInt(parts[1]); +// +// if (minute == 45) { +// hour++; +// minute = 0; +// } else if (minute == 0){ +// minute = 15; +// }else if (minute == 15){ +// minute = 30; +// }else if (minute == 30){ +// minute = 45; +// } +// +// return String.format("%02d:%02d", hour, minute); + + } @@ -221,7 +347,7 @@ for (String s : split) { String day = s.split(" ")[0]; String time = s.split(" ")[1]; - List<QuerySiteTimes> querySiteTimes = querySiteTimes(reservationSite.getId(), day); + List<QuerySiteTimes> querySiteTimes = querySiteTimes(reservationSite.getId(), day,reservationSite.getHalfName(),reservationSite.getNextName()); for (QuerySiteTimes querySiteTime : querySiteTimes) { if(querySiteTime.getTime().equals(time) && querySiteTime.getSelectable() == 0){ return ResultUtil.error("【" + s + "】时间段已被使用"); @@ -238,7 +364,11 @@ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); Double payMoney = 0D; if(reservationSite.getPayType() == 3){ - payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + if(reservationSite.getIsHalf()==2){ + payMoney = new BigDecimal(site.getPlayPaiCoin()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + }else { + payMoney = new BigDecimal(site.getPlayPaiCoinOne()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + } if(appUser.getPlayPaiCoins().compareTo(payMoney.intValue()) < 0){ return ResultUtil.error("玩湃币不足"); } @@ -248,8 +378,12 @@ //校验优惠券 Long couponId = reservationSite.getCouponId(); + if (couponId!=null && couponId != 0){ + if(null != couponId && reservationSite.getPayType() != 3){ UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(reservationSite.getCouponId(),uid)); + + if(userCoupon.getStatus() == 2){ return ResultUtil.error("优惠券已被核销"); } @@ -279,6 +413,7 @@ } userCoupon.setStatus(2); userCouponClient.updateUserCoupon(userCoupon); + } } @@ -316,7 +451,11 @@ return aliPaymentSite(payMoney, siteBooking); } if(reservationSite.getPayType() == 3){//玩湃币支付 - return playPaiCoinPaymentSite(appUser, payMoney, siteBooking); + if(reservationSite.getIsHalf()==2){ + return playPaiCoinPaymentSite(appUser, Double.valueOf(site.getPlayPaiCoin()), siteBooking); + }else { + return playPaiCoinPaymentSite(appUser, site.getPlayPaiCoinOne(), siteBooking); + } } return ResultUtil.success(); } @@ -523,6 +662,13 @@ } siteBooking.setCancelUserId(uid); siteBookingService.updateById(siteBooking); + + TBackRecord tBackRecord = new TBackRecord(); + tBackRecord.setMoney(siteBooking.getPayMoney()); + tBackRecord.setUserId(siteBooking.getAppUserId()); + tBackRecord.setTime(new Date()); + backRecordService.save(tBackRecord); + } if(siteBooking.getPayType() == 2){//支付宝 Map<String, String> map = payMoneyUtil.aliRefund(siteBooking.getPayOrderNo(), siteBooking.getPayMoney().toString()); @@ -544,6 +690,13 @@ userCoupon.setStatus(1); userCouponClient.updateUserCoupon(userCoupon); } + + + TBackRecord tBackRecord = new TBackRecord(); + tBackRecord.setMoney(siteBooking.getPayMoney()); + tBackRecord.setUserId(siteBooking.getAppUserId()); + tBackRecord.setTime(new Date()); + backRecordService.save(tBackRecord); } if(siteBooking.getPayType() == 3){//玩湃币 -- Gitblit v1.7.1