From eb6b6dbb35a9f029e0b7d269773685c19fd40976 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 11 七月 2024 10:47:51 +0800
Subject: [PATCH] 玩湃微信商户认证代码

---
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java |  519 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 318 insertions(+), 201 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 3a8bbfe..32d7cd9 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
@@ -4,10 +4,16 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipayTradeOrderSettleRequest;
+import com.alipay.api.response.AlipayTradeOrderSettleResponse;
+import com.alipay.api.response.AlipayTradeQueryResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.other.entity.*;
+import com.dsh.other.feignclient.StoreClient;
 import com.dsh.other.feignclient.account.AppUserClient;
 import com.dsh.other.feignclient.account.model.AppUser;
 import com.dsh.other.feignclient.activity.CouponClient;
@@ -28,6 +34,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalTime;
 import java.util.*;
@@ -69,21 +76,19 @@
     private TBackRecordService backRecordService;
 
 
-
-
-
     /**
      * 获取场地列表
+     *
      * @param querySiteList
      * @return
      * @throws Exception
      */
     @Override
     public List<QuerySiteListVo> querySiteList(QuerySiteList querySiteList) throws Exception {
-        querySiteList.setPageNum((querySiteList.getPageNum() - 1) *querySiteList.getPageSize());
+        querySiteList.setPageNum((querySiteList.getPageNum() - 1) * querySiteList.getPageSize());
         List<QuerySiteListVo> querySiteListVos = this.baseMapper.querySiteList(querySiteList);
         for (QuerySiteListVo querySiteListVo : querySiteListVos) {
-            if(ToolUtil.isEmpty(querySiteList.getLon())){
+            if (ToolUtil.isEmpty(querySiteList.getLon())) {
                 querySiteListVo.setDistance(0D);
                 continue;
             }
@@ -97,6 +102,7 @@
 
     /**
      * 获取场地详情
+     *
      * @param id
      * @return
      * @throws Exception
@@ -123,7 +129,7 @@
 
 
         querySiteInfoVo.setCashPriceOne(site.getCashPriceOne());
-        if(site.getPlayPaiCoinOne()!=null){
+        if (site.getPlayPaiCoinOne() != null) {
             querySiteInfoVo.setPlayPaiCoinOne(site.getPlayPaiCoinOne().intValue());
         }
 
@@ -143,7 +149,7 @@
         }
         querySiteInfoVo.setHalfName(halfName);
         querySiteInfoVo.setNextName(nextName);
-        if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){
+        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();
             querySiteInfoVo.setDistance(wgs84);
@@ -154,84 +160,33 @@
     }
 
 
-
-
-
     @Autowired
     private ISiteBookingService iSiteBookingService;
     @Autowired
     private ISiteService siteService;
+
     /**
      * 获取场地预约日期数据
+     *
      * @param id
      * @param day
      * @return
      * @throws Exception
      */
     @Override
-    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;
+    public List<QuerySiteTimes> querySiteTimes(Integer id, String day, String halfName, String siteName) throws Exception {
 
-        System.out.println("=======date======"+day);
-
+        System.out.println("=======date======" + day);
         List<String> strings = 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));
-        if (siteName==null|| siteName.equals("")){
-            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",day));
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", day));
+
+        if (siteName == null || siteName.equals("")) {
+            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", day));
         }
 
-        System.out.println("=======siteBookings======"+siteBookings);
+
+        System.out.println("=======siteBookings======" + siteBookings);
         for (SiteBooking siteBooking : siteBookings) {
 
 
@@ -242,9 +197,15 @@
                     String convertedValue = s.substring(11);
                     strings.add(convertedValue);
                 }
-            }else {
+            } else {
+                if (halfName == null) {
+                    for (String s : split) {
+                        String convertedValue = s.substring(11);
+                        strings.add(convertedValue);
+                    }
+                }
 
-                if (siteBooking.getHalfName().equals(halfName)){
+                if (siteBooking.getHalfName().equals(halfName)) {
                     for (String s : split) {
                         String convertedValue = s.substring(11);
                         strings.add(convertedValue);
@@ -253,24 +214,24 @@
                 }
             }
         }
-        System.out.println("======strings======="+strings);
+        System.out.println("======strings=======" + strings);
 
 
         List<QuerySiteTimes> timeRanges = new ArrayList<>();
 
 
-        Site site =  siteService.getById(id);
-        System.out.println("================"+site);
+        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=null;
-            if("智慧场地".equals(site.getTypeName())){
-                nextTime=getNextTimeOne(currentTime);
-            }else {
-                nextTime= getNextTime(currentTime);
+            String nextTime = null;
+            if ("智慧场地".equals(site.getTypeName())) {
+                nextTime = getNextTimeOne(currentTime);
+            } else {
+                nextTime = getNextTime(currentTime);
             }
 
 
@@ -285,21 +246,28 @@
 //            if (hasExceeded){
 //                orderDto.setSelectable(0);
 //            }
-            if (strings.contains(timeRange)){
+            if (strings.contains(timeRange)) {
 
                 orderDto.setSelectable(0);
-            }else {
+            } else {
 
-                String stime = day+" "+currentTime;
-                String etime = day+" "+nextTime;
+                String stime = day + " " + currentTime;
+                String etime = day + " " + nextTime;
                 orderDto.setSelectable(1);
                 // 查出lock
                 List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id));
                 for (SiteLock siteLock : list) {
                     boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime());
-                    if(stringDateBetween){
+                    if (stringDateBetween) {
                         orderDto.setSelectable(0);
                     }
+                    if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) {
+                        orderDto.setSelectable(0);
+                    }
+                    if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) {
+                        orderDto.setSelectable(0);
+                    }
+
                 }
 
 
@@ -309,10 +277,9 @@
             timeRanges.add(orderDto);
             currentTime = nextTime;
         }
-        System.out.println("-------------"+timeRanges);
+        System.out.println("-------------" + timeRanges);
 
         return timeRanges;
-
 
 
     }
@@ -333,6 +300,7 @@
         return String.format("%02d:%02d", hour, minute);
 
     }
+
     public static String getNextTimeOne(String currentTime) {
 
         String[] parts = currentTime.split(":");
@@ -342,11 +310,11 @@
         if (minute == 45) {
             hour++;
             minute = 0;
-        } else if (minute == 0){
+        } else if (minute == 0) {
             minute = 15;
-        }else if (minute == 15){
+        } else if (minute == 15) {
             minute = 30;
-        }else if (minute == 30){
+        } else if (minute == 30) {
             minute = 45;
         }
 
@@ -357,86 +325,94 @@
 
     /**
      * 预约场地
+     *
      * @param reservationSite
      * @return
      * @throws Exception
      */
     @Override
     public ResultUtil reservationSite(Integer uid, ReservationSite reservationSite) throws Exception {
+
         Site site = this.getById(reservationSite.getId());
         AppUser appUser = appUserClient.queryAppUser(uid);
         String[] split = reservationSite.getTimes().split(";");
-
         for (String s : split) {
             String day = s.split(" ")[0];
             String time = s.split(" ")[1];
-            List<QuerySiteTimes> querySiteTimes = querySiteTimes(reservationSite.getId(), day,reservationSite.getHalfName(),reservationSite.getNextName());
+            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 + "】时间段已被使用");
+                if (querySiteTime.getTime().equals(time) && querySiteTime.getSelectable() == 0) {
+                    return ResultUtil.error("【" + s + "】" +
+                            "时间段已被使用");
                 }
             }
         }
 
         String s_time = split[0];
         String e_time = split[split.length - 1];
-        s_time = s_time.substring(0,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){
-            if(reservationSite.getIsHalf()==2){
+        if (reservationSite.getPayType() == 3) {
+            if (reservationSite.getIsHalf() == 2) {
                 payMoney = new BigDecimal(site.getPlayPaiCoin()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-            }else {
+            } 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("玩湃币不足");
+            if (appUser.getPlayPaiCoins().compareTo(payMoney.intValue()) < 0) {
+
+                return new ResultUtil(3, "玩湃币不足");
             }
-        }else{
-            payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+        } else {
+            if (reservationSite.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();
+
+            }
         }
 
         //校验优惠券
         Long couponId = reservationSite.getCouponId();
-        if (couponId!=null && couponId != 0){
+        if (couponId != null && couponId != 0) {
 
-        if(null != couponId && reservationSite.getPayType() != 3){
-            UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(reservationSite.getCouponId(),uid));
+            if (null != couponId && reservationSite.getPayType() != 3) {
+                UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(reservationSite.getCouponId(), uid));
 
 
-            if(userCoupon.getStatus() == 2){
-                return ResultUtil.error("优惠券已被核销");
-            }
-            Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId());
-            long time = coupon.getEndTime().getTime();
-            if(System.currentTimeMillis() >= time){
-                return ResultUtil.error("优惠券已过期");
-            }
-            if(coupon.getType() == 1){//满减
+                if (userCoupon != null && userCoupon.getStatus() == 2) {
+                    return ResultUtil.error("优惠券已被核销");
+                }
+                Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId());
+                long time = coupon.getEndTime().getTime();
+                if (System.currentTimeMillis() >= time) {
+                    return ResultUtil.error("优惠券已过期");
+                }
+                if (userCoupon != null && coupon.getType() == 1) {//满减
 //                {"conditionalAmount":50,"deductionAmount":10,"experienceName":""}
-                JSONObject jsonObject = JSON.parseObject(coupon.getContent());
-                Double num1 = jsonObject.getDouble("conditionalAmount");
-                Double num2 = jsonObject.getDouble("deductionAmount");
-                if(payMoney.compareTo(num1) <= 0){
-                    return ResultUtil.error("该优惠券无法使用");
-                }
+                    JSONObject jsonObject = JSON.parseObject(coupon.getContent());
+                    Double num1 = jsonObject.getDouble("conditionalAmount");
+                    Double num2 = jsonObject.getDouble("deductionAmount");
+                    if (payMoney.compareTo(num1) < 0) {
+                        return ResultUtil.error("该优惠券无法使用");
+                    }
 
-                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");
-                if(payMoney.compareTo(num1) <= 0){
-                    return ResultUtil.error("该优惠券无法使用");
+                    payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num2)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                 }
-                payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                if (userCoupon != null && coupon.getType() == 2) {//代金券
+                    JSONObject jsonObject = JSON.parseObject(coupon.getContent());
+                    Double num1 = jsonObject.getDouble("conditionalAmount");
+                    if (payMoney.compareTo(num1) <= 0) {
+                        return ResultUtil.error("该优惠券无法使用");
+                    }
+                    payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                }
+                userCoupon.setStatus(2);
+                userCouponClient.updateUserCoupon(userCoupon);
             }
-            userCoupon.setStatus(2);
-            userCouponClient.updateUserCoupon(userCoupon);
-        }
         }
 
 
@@ -467,16 +443,19 @@
         siteBooking.setHalfName(reservationSite.getHalfName());
         siteBookingService.save(siteBooking);
 
-        if(reservationSite.getPayType() == 1){//微信支付
-            return weChatPaymentSite(payMoney, siteBooking);
+
+        if (reservationSite.getPayType() == 1) {//微信支付
+            ResultUtil resultUtil = weChatPaymentSite(payMoney, siteBooking);
+
+            return resultUtil;
         }
-        if(reservationSite.getPayType() == 2){//支付宝支付
+        if (reservationSite.getPayType() == 2) {//支付宝支付
             return aliPaymentSite(payMoney, siteBooking);
         }
-        if(reservationSite.getPayType() == 3){//玩湃币支付
-            if(reservationSite.getIsHalf()==2){
+        if (reservationSite.getPayType() == 3) {//玩湃币支付
+            if (reservationSite.getIsHalf() == 2) {
                 return playPaiCoinPaymentSite(appUser, Double.valueOf(site.getPlayPaiCoin()), siteBooking);
-            }else {
+            } else {
                 return playPaiCoinPaymentSite(appUser, site.getPlayPaiCoinOne(), siteBooking);
             }
         }
@@ -486,31 +465,32 @@
 
     /**
      * 课程微信支付
+     *
      * @param paymentPrice
      * @return
      * @throws Exception
      */
-    public ResultUtil weChatPaymentSite(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", "");
-        if(weixinpay.getCode() == 200){
+        ResultUtil weixinpay = payMoneyUtil.weixinpay("预约场地", id.toString(), code, paymentPrice.toString(), "/base/site/weChatPaymentSiteCallback", "APP", "");
+        if (weixinpay.getCode() == 200) {
             new Thread(new Runnable() {
                 @Override
                 public void run() {
                     try {
                         int num = 1;
                         int wait = 0;
-                        while (num <= 10){
+                        while (num <= 10) {
                             int min = 5000;
                             wait += (min * num);
                             Thread.sleep(wait);
                             SiteBooking siteBooking = siteBookingService.getById(id);
-                            if(siteBooking.getStatus() != 0){
+                            if (siteBooking.getStatus() != 0) {
                                 break;
                             }
                             ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(siteBooking.getOrderNo(), "");
-                            if(resultUtil.getCode() == 200 && siteBooking.getStatus() == 0){
+                            if (resultUtil.getCode() == 200 && siteBooking.getStatus() == 0) {
                                 /**
                                  * SUCCESS—支付成功,
                                  * REFUND—转入退款,
@@ -523,22 +503,22 @@
                                 Map<String, String> data1 = resultUtil.getData();
                                 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){
+                                if ("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) {
                                     break;
                                 }
-                                if("SUCCESS".equals(s)){
+                                if ("SUCCESS".equals(s)) {
                                     siteBooking.setPayTime(new Date());
                                     siteBooking.setStatus(1);
                                     siteBooking.setPayOrderNo(transaction_id);
                                     siteBookingService.updateById(siteBooking);
                                     break;
                                 }
-                                if("USERPAYING".equals(s)){
+                                if ("USERPAYING".equals(s)) {
                                     num++;
                                 }
                             }
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                 }
@@ -547,59 +527,97 @@
         return weixinpay;
     }
 
-
+    private String smid = "2088330203191220";//平台支付宝商户号
+    @Autowired
+    private IOperatorUserService operatorUserService;
+    @Autowired
+    private StoreClient storeClient;
     /**
      * 课程支付宝支付
+     *
      * @param paymentPrice
      * @return
      * @throws Exception
      */
-    public ResultUtil aliPaymentSite(Double paymentPrice, SiteBooking siteBooking) throws Exception{
+    public ResultUtil aliPaymentSite(Double paymentPrice, SiteBooking siteBooking) throws Exception {
         String code = siteBooking.getOrderNo();
         Integer id = siteBooking.getId();
-        ResultUtil alipay = payMoneyUtil.alipay("预约场地", "预约场地", "", code, paymentPrice.toString(), "/base/site/aliPaymentSiteCallback");
-        if(alipay.getCode() == 200){
+        // 判断预约的门店 属于哪个运营商
+        Integer storeId = siteBooking.getStoreId();
+        Store byId = storeService.getById(storeId);
+        Integer operatorId = byId.getOperatorId();
+        String smid1 = "";
+        if (operatorId == null ){
+            // 平台的门店
+            smid1 = smid;
+        }else if (operatorId == 0){
+            smid1 = smid;
+        }else{
+            smid1 = siteService.getSMIDByOperatorId(operatorId);
+
+        }
+        ResultUtil alipay = payMoneyUtil.alipay(smid1,"预约场地", "预约场地", id.toString(), code, paymentPrice.toString(), "/base/site/aliPaymentSiteCallback");
+        System.out.println("预约场地----" + alipay.getCode());
+        if (alipay.getCode() == 200) {
             new Thread(new Runnable() {
                 @Override
                 public void run() {
                     try {
                         int num = 1;
                         int wait = 0;
-                        while (num <= 10){
+                        while (num <= 10) {
                             int min = 5000;
                             wait += (min * num);
                             Thread.sleep(wait);
                             SiteBooking siteBooking = siteBookingService.getById(id);
-                            if(siteBooking.getStatus() != 0){
+                            if (siteBooking.getStatus() != 0) {
                                 break;
                             }
-                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
-                            if(resultUtil.getCode() == 200 && siteBooking.getStatus() == 0){
+                            AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
+                            if (resultUtil.getCode().equals("10000") && siteBooking.getStatus() == 0) {
                                 /**
                                  * WAIT_BUYER_PAY(交易创建,等待买家付款)、
                                  * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
                                  * TRADE_SUCCESS(交易支付成功)、
                                  * TRADE_FINISHED(交易结束,不可退款)
                                  */
-                                Map<String, String> data1 = resultUtil.getData();
-                                String s = data1.get("tradeStatus");
-                                String tradeNo = data1.get("tradeNo");
-                                if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
+//                                Map<String, String> data1 = resultUtil.getData();
+//                                String s = data1.get("tradeStatus");
+                                String tradeNo = resultUtil.getTradeNo();
+                                String s = resultUtil.getTradeStatus();
+                                System.out.println("ssssss" + s);
+                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
                                     break;
                                 }
-                                if("TRADE_SUCCESS".equals(s)){
+                                if ("TRADE_SUCCESS".equals(s)) {
                                     siteBooking.setPayTime(new Date());
                                     siteBooking.setStatus(1);
                                     siteBooking.setPayOrderNo(tradeNo);
                                     siteBookingService.updateById(siteBooking);
+                                    System.err.println("======完成支付");
+                                    // 判断预约的门店 属于哪个运营商
+                                    Integer storeId = siteBooking.getStoreId();
+                                    Store byId = storeService.getById(storeId);
+                                    Integer operatorId = byId.getOperatorId();
+                                    String smid1 = "";
+                                    if (operatorId == null || operatorId == 0){
+                                        // 平台的门店 不冻结资金不做分账处理
+                                        payMoneyUtil.confirm1(smid1,code,tradeNo,paymentPrice.toString());
+                                    }else{
+                                        smid1 = siteService.getSMIDByOperatorId(operatorId);
+                                        payMoneyUtil.confirm(smid1,code,tradeNo,paymentPrice.toString());
+                                        // 分账
+                                        extracted(operatorId, new BigDecimal(paymentPrice.toString()), tradeNo);
+                                    }
+
                                     break;
                                 }
-                                if("WAIT_BUYER_PAY".equals(s)){
+                                if ("WAIT_BUYER_PAY".equals(s)) {
                                     num++;
                                 }
                             }
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                 }
@@ -608,27 +626,77 @@
         return alipay;
     }
 
+    private void extracted(Integer operatorId, BigDecimal coursePackageOrder1, String tradeNo) throws Exception {
+        // 分账
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
+                "2021004105665036",
+                "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==",
+                "json", "GBK",
+                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB",
+                "RSA2");
+        AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
+        String randomCode = UUIDUtil.getRandomCode(16);
 
+        String proportionByOperatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+                .eq("operatorId",operatorId)).getAlipayProportion();
+        // 支付宝分账比例
+        String s1 = proportionByOperatorId.split(",")[1];
+        double i = Double.parseDouble(s1);
+        double v = i * 0.01;
+        BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(v));
+        // 分账金额
+        BigDecimal bigDecimal2 = coursePackageOrder1.multiply(bigDecimal1).setScale(2, RoundingMode.DOWN);
+        request.setBizContent("{" +
+                "  \"out_request_no\":\"" + randomCode + "\"," +
+                "  \"trade_no\":\"" + tradeNo + "\"," +
+                "  \"royalty_parameters\":[" +
+                "    {" +
+                "      \"royalty_type\":\"transfer\"," +
+                "      \"trans_out\":\"" + storeClient.getSMIDByOperatorId(operatorId)+ "\"," +
+                "      \"trans_out_type\":\"userId\"," +
+                "      \"trans_in_type\":\"userId\"," +
+                "      \"trans_in\":\"" + smid + "\"," +
+                "      \"amount\":" + bigDecimal2 + "," +
+                "      \"desc\":\"平台服务费\"," +
+                "      \"royalty_scene\":\"平台服务费\"," +
+                "    }" +
+                "  ]," +
+                "  \"extend_params\":{" +
+                "    \"royalty_finish\":\"true\"" +
+                "  }," +
+                "  \"royalty_mode\":\"async\"" +
+                "}");
+        AlipayTradeOrderSettleResponse response = alipayClient.execute(request);
+        if (response.isSuccess()) {
+            System.out.println("调用成功");
+        } else {
+            System.out.println("调用失败");
+        }
+    }
     /**
      * 玩湃币支付
+     *
      * @param appUser
      * @param paymentPrice
      * @return
      * @throws Exception
      */
-    public ResultUtil playPaiCoinPaymentSite(AppUser appUser, Double paymentPrice, SiteBooking siteBooking) throws Exception{
+    public ResultUtil playPaiCoinPaymentSite(AppUser appUser, Double paymentPrice, SiteBooking siteBooking) throws Exception {
         Integer playPaiCoins = appUser.getPlayPaiCoins();
         appUser.setPlayPaiCoins(playPaiCoins - paymentPrice.intValue());
         appUserClient.updateAppUser(appUser);
         siteBooking.setPayTime(new Date());
         siteBooking.setStatus(1);
         siteBookingService.updateById(siteBooking);
-        return ResultUtil.success();
+        HashMap<String, String> map = new HashMap<>();
+        map.put("siteBooking", siteBooking.getId().toString());
+        return ResultUtil.success(map);
     }
 
 
     /**
      * 获取我的场地预约
+     *
      * @param uid
      * @param status
      * @param pageNo
@@ -644,9 +712,14 @@
             SiteBooking siteBooking = siteBookingService.getById(queryMySiteVo.getId());
             Site site = this.getById(siteBooking.getSiteId());
             String[] split = siteBooking.getTimes().split(";");
-            if(site!=null){
+            if (site != null) {
+                if (queryMySiteVo.getIsHalf() == 1) {
+                    queryMySiteVo.setPlayPaiCoin((int) (site.getPlayPaiCoinOne() * split.length));
 
-                queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length);
+                } else {
+                    queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length);
+
+                }
             }
         }
         return queryMySiteVos;
@@ -655,6 +728,7 @@
 
     /**
      * 取消我的预约场地
+     *
      * @param id
      * @return
      * @throws Exception
@@ -665,22 +739,34 @@
 
         SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
         Date startTime = siteBooking.getStartTime();
-        if(format.format(new Date()).equals(format.format(startTime))){
+        if (format.format(new Date()).equals(format.format(startTime)) && siteBooking.getStatus() != 0) {
             return ResultUtil.error("预约当天,不能取消");
         }
-        if(siteBooking.getStatus() == 0){
-            return ResultUtil.error("请先进行支付");
+
+        if (siteBooking.getStatus() == 0) {
+//            return ResultUtil.error("请先进行支付");
+            siteBooking.setStatus(5);
+            siteBookingService.updateById(siteBooking);
+            AppUser appUser = appUserClient.queryAppUser(siteBooking.getAppUserId());
+
+            if (null != siteBooking.getUserCouponId() && siteBooking.getUserCouponId() != 0) {
+                UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(), appUser.getId()));
+                userCoupon.setStatus(1);
+                userCouponClient.updateUserCoupon(userCoupon);
+            }
+
+            return ResultUtil.success();
         }
-        if(siteBooking.getStatus() != 1 && siteBooking.getStatus() != 2){
+        if (siteBooking.getStatus() != 1 && siteBooking.getStatus() != 2) {
             return ResultUtil.error("不能进行取消操作");
         }
-        if(siteBooking.getPayType() == 1){//微信支付
+        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){
+            if (null == map) {
                 return ResultUtil.error("取消退款异常");
             }
             String result_code = map.get("result_code");
-            if(!"SUCCESS".equals(result_code)){
+            if (!"SUCCESS".equals(result_code)) {
                 return ResultUtil.error(map.get("return_msg"));
             }
             siteBooking.setCancelUserId(uid);
@@ -693,13 +779,13 @@
             backRecordService.save(tBackRecord);
 
         }
-        if(siteBooking.getPayType() == 2){//支付宝
+        if (siteBooking.getPayType() == 2) {//支付宝
             Map<String, String> map = payMoneyUtil.aliRefund(siteBooking.getPayOrderNo(), siteBooking.getPayMoney().toString());
-            if(null == map){
+            if (null == map) {
                 return ResultUtil.error("取消退款异常");
             }
             String code = map.get("code");
-            if(!"10000".equals(code)){
+            if (!"10000".equals(code)) {
                 return ResultUtil.error(map.get("return_msg"));
             }
             String trade_no = map.get("trade_no");
@@ -708,8 +794,8 @@
             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()));
+            if (null != siteBooking.getUserCouponId() && siteBooking.getUserCouponId() != 0) {
+                UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(), siteBooking.getAppUserId()));
                 userCoupon.setStatus(1);
                 userCouponClient.updateUserCoupon(userCoupon);
             }
@@ -722,7 +808,7 @@
             backRecordService.save(tBackRecord);
         }
 
-        if(siteBooking.getPayType() == 3){//玩湃币
+        if (siteBooking.getPayType() == 3) {//玩湃币
             AppUser appUser = appUserClient.queryAppUser(siteBooking.getAppUserId());
             appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() + siteBooking.getPayMoney().intValue());
             appUserClient.updateAppUser(appUser);
@@ -731,8 +817,8 @@
             siteBooking.setCancelUserId(uid);
             siteBooking.setCancelTime(new Date());
             siteBookingService.updateById(siteBooking);
-            if(null != siteBooking.getUserCouponId()){
-                UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),appUser.getId()));
+            if (null != siteBooking.getUserCouponId() && siteBooking.getUserCouponId() != 0) {
+                UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(), appUser.getId()));
                 userCoupon.setStatus(1);
                 userCouponClient.updateUserCoupon(userCoupon);
             }
@@ -744,6 +830,7 @@
 
     /**
      * 继续支付我预约的场地
+     *
      * @param id
      * @param payType
      * @return
@@ -752,35 +839,45 @@
     @Override
     public ResultUtil continuePaymentMySite(Integer uid, Integer id, Integer payType) throws Exception {
         SiteBooking siteBooking = siteBookingService.getById(id);
-        if(siteBooking.getStatus() != 0){
+        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){
+        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();
+
+            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();
+            }
         }
 
         //校验优惠券
         Long couponId = siteBooking.getUserCouponId();
-        if(null != couponId && payType != 3){
-            UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),appUser.getId()));
+        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){//满减
+            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){//代金券
+            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();
@@ -788,8 +885,8 @@
             userCoupon.setStatus(2);
             userCouponClient.updateUserCoupon(userCoupon);
         }
-        if(null != couponId && payType == 3){
-            UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),appUser.getId()));
+        if (null != couponId && payType == 3) {
+            UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(), appUser.getId()));
             userCoupon.setStatus(1);
             userCouponClient.updateUserCoupon(userCoupon);
         }
@@ -798,17 +895,17 @@
         siteBooking.setOrderNo(sdf.format(new Date()) + UUIDUtil.getNumberRandom(3));
         siteBooking.setPayType(payType);
         siteBooking.setPayMoney(payMoney);
-        if(payType == 3){
+        if (payType == 3) {
             siteBooking.setUserCouponId(null);
         }
         siteBookingService.updateById(siteBooking);
-        if(payType == 1){//微信支付
+        if (payType == 1) {//微信支付
             return weChatPaymentSite(payMoney, siteBooking);
         }
-        if(payType == 2){//支付宝支付
+        if (payType == 2) {//支付宝支付
             return aliPaymentSite(payMoney, siteBooking);
         }
-        if(payType == 3){//玩湃币支付
+        if (payType == 3) {//玩湃币支付
             return playPaiCoinPaymentSite(appUser, payMoney, siteBooking);
         }
         return ResultUtil.success();
@@ -817,6 +914,7 @@
 
     /**
      * 获取继续支付金额
+     *
      * @param id
      * @return
      * @throws Exception
@@ -824,29 +922,43 @@
     @Override
     public ResultUtil<Map<String, Double>> queryContinuePaymentMySitePrice(Integer id) throws Exception {
         SiteBooking siteBooking = siteBookingService.getById(id);
-        if(siteBooking.getStatus() != 0){
+        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();
+
+
+        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();
+        }
+
         //校验优惠券
         Long couponId = siteBooking.getUserCouponId();
-        if(null != couponId){
-            UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(),siteBooking.getAppUserId()));
+        if (null != couponId && couponId != 0) {
+            UserCoupon userCoupon = userCouponClient.queryUserCouponById(new QueryUserCouponByIdAndUserId(siteBooking.getUserCouponId(), siteBooking.getAppUserId()));
             Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId());
-            if(coupon.getType() == 1){//满减
+            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){//代金券
+            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();
@@ -861,7 +973,12 @@
 
         List<Integer> siteIds = vo.getSiteIds();
         Integer type = vo.getType();
-        return siteMapper.changeState(siteIds,type);
+        return siteMapper.changeState(siteIds, type);
 
     }
+
+    @Override
+    public String getSMIDByOperatorId(Integer id) {
+        return siteMapper.getSMIDByOperatorId(id);
+    }
 }

--
Gitblit v1.7.1