From 7ab89c134470bd8931901e4aec839cd3a626716f Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 30 十月 2025 17:50:51 +0800
Subject: [PATCH] App预约场地操作
---
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 155 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 105 insertions(+), 50 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 8a573ef..a9a2e52 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
@@ -90,6 +90,7 @@
private ISiteService siteService;
+
/**
* 获取场地列表
*
@@ -137,7 +138,6 @@
querySiteInfoVo.setTargetAudience(3);
}
- querySiteInfoVo.setTargetAudience(3);
querySiteInfoVo.setId(site.getId());
querySiteInfoVo.setTypeName(site.getTypeName());
querySiteInfoVo.setName(site.getName());
@@ -817,17 +817,39 @@
List<QueryMySiteVo> queryMySiteVos = this.baseMapper.queryMySite(uid, status, pageNo, pageSize);
for (QueryMySiteVo queryMySiteVo : queryMySiteVos) {
SiteBooking siteBooking = siteBookingService.getById(queryMySiteVo.getId());
- Site site = this.getById(siteBooking.getSiteId());
String[] split = siteBooking.getTimes().split(";");
- if (site != null) {
- if (queryMySiteVo.getIsHalf() == 1) {
- queryMySiteVo.setPlayPaiCoin((int) (site.getPlayPaiCoinOne() * split.length));
+ // 所选时间段 所需总计金额
+ BigDecimal money = BigDecimal.ZERO;
+ BigDecimal playCoin = BigDecimal.ZERO;
+ for (String s : split) {
- } else {
- queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length);
-
+ String day = s.split(" ")[0];
+ String time = s.split(" ")[1];
+ String bookingStart = day + " " + time.split("-")[0];
+ String bookingEnd = day + " " + time.split("-")[1];
+ List<QuerySiteTimes> querySiteTimes = querySiteTimes(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
+ for (QuerySiteTimes querySiteTime : querySiteTimes) {
+ String timePriceStart = day + " " + querySiteTime.getTime().split("-")[0];
+ String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1];
+// if (!isTimePeriodsIntersect(timePriceStart, timePriceEnd, bookingStart, bookingEnd)) {
+// // 时间不相交
+// } else if (querySiteTime.getSelectable() == 0) {
+// if (querySiteTime.getIsReserve() == 1) {
+// return ResultUtil.error("【" + s + "】" +
+// "时间段已被使用");
+// } else {
+// return ResultUtil.error("【" + s + "】" +
+// "时间段散客人数已满");
+// }
+// }
+ if (querySiteTime.getTime().equals(time)) {
+ money = money.add(querySiteTime.getCashPrice());
+ playCoin = playCoin.add(querySiteTime.getCoinPrice());
+ break;
+ }
}
}
+ queryMySiteVo.setPlayPaiCoin(playCoin.setScale(0, RoundingMode.DOWN).intValue());
}
return queryMySiteVos;
}
@@ -967,23 +989,34 @@
Site site = this.getById(siteBooking.getSiteId());
AppUser appUser = appUserClient.queryAppUser(uid);
String[] split = siteBooking.getTimes().split(";");
- Double payMoney = 0D;
- if (payType == 3) {
-// payMoney = new BigDecimal(site.getPlayPaiCoin()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
- if (appUser.getPlayPaiCoins().compareTo(payMoney.intValue()) < 0) {
- return ResultUtil.error("玩湃币不足");
- }
-
- if (siteBooking.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();
- }
- } else {
- if (siteBooking.getIsHalf() == 2) {
- payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
- } else {
- payMoney = new BigDecimal(site.getCashPriceOne()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ // 所选时间段 所需总计金额
+ BigDecimal money = BigDecimal.ZERO;
+ BigDecimal playCoin = BigDecimal.ZERO;
+ for (String s : split) {
+ String day = s.split(" ")[0];
+ String time = s.split(" ")[1];
+ String bookingStart = day + " " + time.split("-")[0];
+ String bookingEnd = day + " " + time.split("-")[1];
+ List<QuerySiteTimes> querySiteTimes = querySiteTimes(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
+ for (QuerySiteTimes querySiteTime : querySiteTimes) {
+ String timePriceStart = day + " " + querySiteTime.getTime().split("-")[0];
+ String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1];
+ if (!isTimePeriodsIntersect(timePriceStart, timePriceEnd, bookingStart, bookingEnd)) {
+ // 时间不相交
+ } else if (querySiteTime.getSelectable() == 0) {
+ if (querySiteTime.getIsReserve() == 1) {
+ return ResultUtil.error("【" + s + "】" +
+ "时间段已被使用");
+ } else {
+ return ResultUtil.error("【" + s + "】" +
+ "时间段散客人数已满");
+ }
+ }
+ if (querySiteTime.getTime().equals(time)) {
+ money = money.add(querySiteTime.getCashPrice());
+ playCoin = playCoin.add(querySiteTime.getCoinPrice());
+ break;
+ }
}
}
@@ -997,12 +1030,12 @@
JSONObject jsonObject = JSON.parseObject(coupon.getContent());
Double num1 = jsonObject.getDouble("conditionalAmount");
Double num2 = jsonObject.getDouble("deductionAmount");
- payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num2)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ money = money.subtract(new BigDecimal(num2)).setScale(2, RoundingMode.HALF_EVEN);
}
if (coupon.getType() == 2) {//代金券
JSONObject jsonObject = JSON.parseObject(coupon.getContent());
Double num1 = jsonObject.getDouble("conditionalAmount");
- payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ money = money.subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN);
}
userCoupon.setStatus(2);
userCouponClient.updateUserCoupon(userCoupon);
@@ -1016,19 +1049,19 @@
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
siteBooking.setOrderNo(sdf.format(new Date()) + UUIDUtil.getNumberRandom(3));
siteBooking.setPayType(payType);
- siteBooking.setPayMoney(payMoney);
+ siteBooking.setPayMoney(money.doubleValue());
if (payType == 3) {
siteBooking.setUserCouponId(null);
}
siteBookingService.updateById(siteBooking);
if (payType == 1) {//微信支付
- return weChatPaymentSite(payMoney, siteBooking);
+ return weChatPaymentSite(money.doubleValue(), siteBooking);
}
if (payType == 2) {//支付宝支付
- return aliPaymentSite(payMoney, siteBooking);
+ return aliPaymentSite(money.doubleValue(), siteBooking);
}
if (payType == 3) {//玩湃币支付
- return playPaiCoinPaymentSite(appUser, payMoney, siteBooking);
+ return playPaiCoinPaymentSite(appUser, playCoin.doubleValue(), siteBooking);
}
return ResultUtil.success();
}
@@ -1050,22 +1083,35 @@
Site site = this.getById(siteBooking.getSiteId());
String[] split = siteBooking.getTimes().split(";");
Map<String, Double> map = new HashMap<>();
- Double payMoney = new BigDecimal(site.getPlayPaiCoin()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-
-
- if (siteBooking.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();
- }
-
- map.put("playPaiCoin", payMoney);
- payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-
- if (siteBooking.getIsHalf() == 2) {
- payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
- } else {
- payMoney = new BigDecimal(site.getCashPriceOne()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ // 所选时间段 所需总计金额
+ BigDecimal money = BigDecimal.ZERO;
+ BigDecimal playCoin = BigDecimal.ZERO;
+ for (String s : split) {
+ String day = s.split(" ")[0];
+ String time = s.split(" ")[1];
+ String bookingStart = day + " " + time.split("-")[0];
+ String bookingEnd = day + " " + time.split("-")[1];
+ List<QuerySiteTimes> querySiteTimes = querySiteTimes(siteBooking.getId(), day, siteBooking.getHalfName(), siteBooking.getNextName(), siteBooking.getTargetAudience());
+ for (QuerySiteTimes querySiteTime : querySiteTimes) {
+ String timePriceStart = day + " " + querySiteTime.getTime().split("-")[0];
+ String timePriceEnd = day + " " + querySiteTime.getTime().split("-")[1];
+ if (!isTimePeriodsIntersect(timePriceStart, timePriceEnd, bookingStart, bookingEnd)) {
+ // 时间不相交
+ } else if (querySiteTime.getSelectable() == 0) {
+ if (querySiteTime.getIsReserve() == 1) {
+ return ResultUtil.error("【" + s + "】" +
+ "时间段已被使用");
+ } else {
+ return ResultUtil.error("【" + s + "】" +
+ "时间段散客人数已满");
+ }
+ }
+ if (querySiteTime.getTime().equals(time)) {
+ money = money.add(querySiteTime.getCashPrice());
+ playCoin = playCoin.add(querySiteTime.getCoinPrice());
+ break;
+ }
+ }
}
//校验优惠券
@@ -1078,15 +1124,24 @@
JSONObject jsonObject = JSON.parseObject(coupon.getContent());
Double num1 = jsonObject.getDouble("conditionalAmount");
Double num2 = jsonObject.getDouble("deductionAmount");
- payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num2)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ money = money.subtract(new BigDecimal(num2)).setScale(2, RoundingMode.HALF_EVEN);
}
if (coupon.getType() == 2) {//代金券
JSONObject jsonObject = JSON.parseObject(coupon.getContent());
Double num1 = jsonObject.getDouble("conditionalAmount");
- payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ money = money.subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN);
}
}
- map.put("cash", payMoney);
+ switch (siteBooking.getPayType()){
+ case 1:
+ map.put("cash", money.doubleValue());
+ break;
+ case 2:
+ map.put("cash", money.doubleValue());
+ break;
+ case 3:
+ map.put("playPaiCoin", money.doubleValue());
+ }
return ResultUtil.success(map);
}
--
Gitblit v1.7.1