From 0b24f5e8f9e6975642d4e065daef6f26afa2fdb8 Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期三, 18 十月 2023 10:42:13 +0800 Subject: [PATCH] 10.18 --- cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 520 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 454 insertions(+), 66 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 6a309f0..5065796 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 @@ -1,5 +1,6 @@ package com.dsh.other.service.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -11,11 +12,15 @@ import com.dsh.other.feignclient.activity.CouponClient; import com.dsh.other.feignclient.activity.UserCouponClient; import com.dsh.other.feignclient.activity.model.Coupon; +import com.dsh.other.feignclient.activity.model.QueryUserCouponByIdAndUserId; import com.dsh.other.feignclient.activity.model.UserCoupon; +import com.dsh.other.feignclient.model.SiteChangeStateVO; import com.dsh.other.mapper.SiteMapper; import com.dsh.other.model.*; import com.dsh.other.service.*; import com.dsh.other.util.*; +import io.swagger.models.auth.In; +import org.aspectj.weaver.ast.Var; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,6 +28,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.time.LocalTime; import java.util.*; /** @@ -55,6 +61,11 @@ @Autowired private PayMoneyUtil payMoneyUtil; + @Autowired + private SiteMapper siteMapper; + + @Autowired + private TBackRecordService backRecordService; @@ -95,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()); @@ -103,7 +115,32 @@ querySiteInfoVo.setStoreLon(store.getLon()); 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()); + } + + querySiteInfoVo.setIntroduce(site.getIntroduce()); + ArrayList<String> nextName = new ArrayList<>(); + ArrayList<String> halfName = new ArrayList<>(); + String nextName1 = site.getNextName(); + String halfName1 = site.getHalfName(); + querySiteInfoVo.setIshalf(site.getIshalf()); + String[] split = nextName1.split(","); + for (String s : split) { + nextName.add(s); + } + String[] split1 = halfName1.split(","); + for (String s : split1) { + halfName.add(s); + } + querySiteInfoVo.setHalfName(halfName); + querySiteInfoVo.setNextName(nextName); if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){ Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); @@ -115,6 +152,13 @@ } + + + + @Autowired + private ISiteBookingService iSiteBookingService; + @Autowired + private ISiteService siteService; /** * 获取场地预约日期数据 * @param id @@ -124,47 +168,151 @@ */ @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())); +// 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); - int minute = e.get(Calendar.MINUTE); - List<QuerySiteTimes> list = new ArrayList<>(); - while (true){ - int s_hour = s.get(Calendar.HOUR_OF_DAY); - int s_minute = s.get(Calendar.MINUTE); - String start = s_hour + ":" + s_minute; + System.out.println("=======date======"+day); - 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 = e_hour + ":" + e_minute; + List<String> strings = new ArrayList<>(); - QuerySiteTimes querySiteTimes = new QuerySiteTimes(); - querySiteTimes.setTime(start + "-" + end); - querySiteTimes.setSelectable(1); +// List<SiteBooking> siteBookings = siteClient.listBooks(id); + List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",day)); + System.out.println("=======siteBookings======"+siteBookings); + for (SiteBooking siteBooking : siteBookings) { + String[] split = siteBooking.getTimes().split(";"); + for (String s : split) { - 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); + String convertedValue = s.substring(11); + strings.add(convertedValue); } - 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); + } + + + 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); + + } @@ -179,12 +327,6 @@ Site site = this.getById(reservationSite.getId()); AppUser appUser = appUserClient.queryAppUser(uid); String[] split = reservationSite.getTimes().split(";"); - if(reservationSite.getPayType() == 3){ - Integer playPaiCoin = site.getPlayPaiCoin() * split.length; - if(appUser.getPlayPaiCoins().compareTo(playPaiCoin) < 0){ - return ResultUtil.error("玩湃币不足"); - } - } for (String s : split) { String day = s.split(" ")[0]; @@ -197,25 +339,35 @@ } } - String s_time = split[0]; String e_time = split[split.length - 1]; - s_time = s_time.substring(s_time.lastIndexOf("-")); + s_time = s_time.substring(0,s_time.lastIndexOf("-")); String[] s1 = e_time.split(" "); e_time = s1[0] + " " + s1[1].split("-")[1]; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 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("玩湃币不足"); + } }else{ payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); } //校验优惠券 Long couponId = reservationSite.getCouponId(); + if (couponId!=null && couponId != 0){ + if(null != couponId && reservationSite.getPayType() != 3){ - UserCoupon userCoupon = userCouponClient.queryUserCouponById(couponId); + UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(reservationSite.getCouponId(),uid)); + + if(userCoupon.getStatus() == 2){ return ResultUtil.error("优惠券已被核销"); } @@ -225,9 +377,10 @@ return ResultUtil.error("优惠券已过期"); } if(coupon.getType() == 1){//满减 +// {"conditionalAmount":50,"deductionAmount":10,"experienceName":""} JSONObject jsonObject = JSON.parseObject(coupon.getContent()); - Double num1 = jsonObject.getDouble("num1"); - Double num2 = jsonObject.getDouble("num2"); + Double num1 = jsonObject.getDouble("conditionalAmount"); + Double num2 = jsonObject.getDouble("deductionAmount"); if(payMoney.compareTo(num1) <= 0){ return ResultUtil.error("该优惠券无法使用"); } @@ -236,7 +389,7 @@ } if(coupon.getType() == 2){//代金券 JSONObject jsonObject = JSON.parseObject(coupon.getContent()); - Double num1 = jsonObject.getDouble("num1"); + Double num1 = jsonObject.getDouble("conditionalAmount"); if(payMoney.compareTo(num1) <= 0){ return ResultUtil.error("该优惠券无法使用"); } @@ -244,6 +397,7 @@ } userCoupon.setStatus(2); userCouponClient.updateUserCoupon(userCoupon); + } } @@ -256,6 +410,7 @@ siteBooking.setStoreId(site.getStoreId()); siteBooking.setSiteId(reservationSite.getId()); siteBooking.setAppUserId(uid); + siteBooking.setTimes(reservationSite.getTimes()); siteBooking.setStartTime(sdf1.parse(s_time)); siteBooking.setEndTime(sdf1.parse(e_time)); siteBooking.setBooker(reservationSite.getBooker()); @@ -266,16 +421,25 @@ siteBooking.setStatus(0); siteBooking.setState(1); siteBooking.setInsertTime(new Date()); + + // 2.0 + siteBooking.setNextName(reservationSite.getNextName()); + siteBooking.setIsHalf(reservationSite.getIsHalf()); + siteBooking.setHalfName(reservationSite.getHalfName()); siteBookingService.save(siteBooking); if(reservationSite.getPayType() == 1){//微信支付 - return weChatPaymentSite(uid, payMoney, siteBooking); + return weChatPaymentSite(payMoney, siteBooking); } if(reservationSite.getPayType() == 2){//支付宝支付 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(); } @@ -283,12 +447,11 @@ /** * 课程微信支付 - * @param uid * @param paymentPrice * @return * @throws Exception */ - public ResultUtil weChatPaymentSite(Integer uid, Double paymentPrice, SiteBooking siteBooking) throws Exception{ + public ResultUtil weChatPaymentSite(Double paymentPrice, SiteBooking siteBooking) throws Exception{ String code = siteBooking.getOrderNo(); Integer id = siteBooking.getId(); ResultUtil weixinpay = payMoneyUtil.weixinpay("预约场地", "", code, paymentPrice.toString(), "/base/site/weChatPaymentSiteCallback", "APP", ""); @@ -322,13 +485,6 @@ String s = data1.get("trade_state"); String transaction_id = data1.get("transaction_id"); if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){ - siteBooking.setState(3); - siteBookingService.updateById(siteBooking); - if(null != siteBooking.getUserCouponId()){ - UserCoupon userCoupon = userCouponClient.queryUserCouponById(siteBooking.getUserCouponId()); - userCoupon.setStatus(1); - userCouponClient.updateUserCoupon(userCoupon); - } break; } if("SUCCESS".equals(s)){ @@ -390,13 +546,6 @@ String s = data1.get("tradeStatus"); String tradeNo = data1.get("tradeNo"); if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){ - siteBooking.setState(3); - siteBookingService.updateById(siteBooking); - if(null != siteBooking.getUserCouponId()){ - UserCoupon userCoupon = userCouponClient.queryUserCouponById(siteBooking.getUserCouponId()); - userCoupon.setStatus(1); - userCouponClient.updateUserCoupon(userCoupon); - } break; } if("TRADE_SUCCESS".equals(s)){ @@ -422,7 +571,7 @@ /** - * 玩湃币支付课程 + * 玩湃币支付 * @param appUser * @param paymentPrice * @return @@ -437,4 +586,243 @@ siteBookingService.updateById(siteBooking); return ResultUtil.success(); } + + + /** + * 获取我的场地预约 + * @param uid + * @param status + * @param pageNo + * @param pageSize + * @return + * @throws Exception + */ + @Override + public List<QueryMySiteVo> queryMySite(Integer uid, Integer status, Integer pageNo, Integer pageSize) throws Exception { + pageNo = (pageNo - 1) * pageSize; + 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){ + + queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length); + } + } + return queryMySiteVos; + } + + + /** + * 取消我的预约场地 + * @param id + * @return + * @throws Exception + */ + @Override + public ResultUtil cancelMySite(Integer uid, Integer id) throws Exception { + SiteBooking siteBooking = siteBookingService.getById(id); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date startTime = siteBooking.getStartTime(); + if(format.format(new Date()).equals(format.format(startTime))){ + return ResultUtil.error("预约当天,不能取消"); + } + if(siteBooking.getStatus() == 0){ + return ResultUtil.error("请先进行支付"); + } + if(siteBooking.getStatus() != 1 && siteBooking.getStatus() != 2){ + return ResultUtil.error("不能进行取消操作"); + } + if(siteBooking.getPayType() == 1){//微信支付 + Map<String, String> map = payMoneyUtil.wxRefund(siteBooking.getPayOrderNo(), siteBooking.getOrderNo(), siteBooking.getPayMoney().toString(), siteBooking.getPayMoney().toString(), "/base/site/cancelMySiteCallback"); + if(null == map){ + return ResultUtil.error("取消退款异常"); + } + String result_code = map.get("result_code"); + if(!"SUCCESS".equals(result_code)){ + return ResultUtil.error(map.get("return_msg")); + } + 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()); + if(null == map){ + return ResultUtil.error("取消退款异常"); + } + String code = map.get("code"); + if(!"10000".equals(code)){ + return ResultUtil.error(map.get("return_msg")); + } + String trade_no = map.get("trade_no"); + siteBooking.setStatus(5); + siteBooking.setCancelUserId(uid); + siteBooking.setCancelTime(new Date()); + siteBooking.setRefundOrderNo(trade_no); + siteBookingService.updateById(siteBooking); + if(null != siteBooking.getUserCouponId()){ + UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),siteBooking.getAppUserId())); + 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){//玩湃币 + AppUser appUser = appUserClient.queryAppUser(siteBooking.getAppUserId()); + appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() + siteBooking.getPayMoney().intValue()); + appUserClient.updateAppUser(appUser); + + siteBooking.setStatus(5); + siteBooking.setCancelUserId(uid); + siteBooking.setCancelTime(new Date()); + siteBookingService.updateById(siteBooking); + if(null != siteBooking.getUserCouponId()){ + UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),appUser.getId())); + userCoupon.setStatus(1); + userCouponClient.updateUserCoupon(userCoupon); + } + } + + return ResultUtil.success(); + } + + + /** + * 继续支付我预约的场地 + * @param id + * @param payType + * @return + * @throws Exception + */ + @Override + public ResultUtil continuePaymentMySite(Integer uid, Integer id, Integer payType) throws Exception { + SiteBooking siteBooking = siteBookingService.getById(id); + if(siteBooking.getStatus() != 0){ + return ResultUtil.error("不能继续支付"); + } + 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("玩湃币不足"); + } + }else{ + payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + } + + //校验优惠券 + Long couponId = siteBooking.getUserCouponId(); + if(null != couponId && payType != 3){ + UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),appUser.getId())); + Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId()); + if(coupon.getType() == 1){//满减 +// {"conditionalAmount":50,"deductionAmount":10,"experienceName":""} + 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(); + } + 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(); + } + userCoupon.setStatus(2); + userCouponClient.updateUserCoupon(userCoupon); + } + if(null != couponId && payType == 3){ + UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),appUser.getId())); + userCoupon.setStatus(1); + userCouponClient.updateUserCoupon(userCoupon); + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + siteBooking.setOrderNo(sdf.format(new Date()) + UUIDUtil.getNumberRandom(3)); + siteBooking.setPayType(payType); + siteBooking.setPayMoney(payMoney); + if(payType == 3){ + siteBooking.setUserCouponId(null); + } + siteBookingService.updateById(siteBooking); + if(payType == 1){//微信支付 + return weChatPaymentSite(payMoney, siteBooking); + } + if(payType == 2){//支付宝支付 + return aliPaymentSite(payMoney, siteBooking); + } + if(payType == 3){//玩湃币支付 + return playPaiCoinPaymentSite(appUser, payMoney, siteBooking); + } + return ResultUtil.success(); + } + + + /** + * 获取继续支付金额 + * @param id + * @return + * @throws Exception + */ + @Override + public ResultUtil<Map<String, Double>> queryContinuePaymentMySitePrice(Integer id) throws Exception { + SiteBooking siteBooking = siteBookingService.getById(id); + if(siteBooking.getStatus() != 0){ + return ResultUtil.error("不能继续支付"); + } + 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(); + map.put("playPaiCoin", payMoney); + payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + + //校验优惠券 + Long couponId = siteBooking.getUserCouponId(); + if(null != couponId){ + UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),siteBooking.getAppUserId())); + Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId()); + if(coupon.getType() == 1){//满减 +// {"conditionalAmount":50,"deductionAmount":10,"experienceName":""} + 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(); + } + 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(); + } + } + map.put("cash", payMoney); + return ResultUtil.success(map); + } + + @Override + public Object changeState(SiteChangeStateVO vo) { + + List<Integer> siteIds = vo.getSiteIds(); + Integer type = vo.getType(); + return siteMapper.changeState(siteIds,type); + + } } -- Gitblit v1.7.1