From e93a1ffbe1b01253d7a9808cc7a05b5c69413c8d Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 19 七月 2023 11:12:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java          |   40 ++++
 cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java             |   18 +
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java  |  230 ++++++++++++++++++++--
 cloud-server-other/src/main/resources/mapper/SiteMapper.xml                       |   26 ++
 cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java           |   18 +
 cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java            |    5 
 cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java             |   13 +
 cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java           |   36 +++
 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java     |  139 +++++++++++++
 cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java |   18 +
 10 files changed, 501 insertions(+), 42 deletions(-)

diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
index 8e31457..7324790 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
@@ -256,11 +256,11 @@
      * @throws Exception
      */
     public ResultUtil queryALIOrder(String out_trade_no) throws Exception{
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2");
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8",alipay_public_key,"RSA2");
         AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
         request.setBizContent("{" +
-                "\"out_trade_no\":" + out_trade_no +
-                "  }");
+                "  \"out_trade_no\":\"" + out_trade_no + "\"" +
+                "}");
         AlipayTradeQueryResponse response = alipayClient.execute(request);
         if(response.isSuccess()){
             String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
@@ -1109,8 +1109,16 @@
 
 
     public static void main(String[] ages){
-//        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
-//        payMoneyUtil.weixinpay("测试", "123", "12.5", "");
+        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
+        ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com");
+        System.err.println(ce);
+        ResultUtil resultUtil = null;
+        try {
+            resultUtil = payMoneyUtil.queryALIOrder("121456457");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        System.err.println(resultUtil);
     }
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
index e37ec9b..678a8a7 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
@@ -258,11 +258,11 @@
      * @throws Exception
      */
     public ResultUtil queryALIOrder(String out_trade_no) throws Exception{
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2");
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8",alipay_public_key,"RSA2");
         AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
         request.setBizContent("{" +
-                "\"out_trade_no\":" + out_trade_no +
-                "  }");
+                "  \"out_trade_no\":\"" + out_trade_no + "\"" +
+                "}");
         AlipayTradeQueryResponse response = alipayClient.execute(request);
         if(response.isSuccess()){
             String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
@@ -1111,8 +1111,16 @@
 
 
     public static void main(String[] ages){
-//        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
-//        payMoneyUtil.weixinpay("测试", "123", "12.5", "");
+        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
+        ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com");
+        System.err.println(ce);
+        ResultUtil resultUtil = null;
+        try {
+            resultUtil = payMoneyUtil.queryALIOrder("121456457");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        System.err.println(resultUtil);
     }
 
 
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
index 650f110..2b42da9 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.other.entity.Site;
 import com.dsh.other.entity.SiteBooking;
+import com.dsh.other.feignclient.activity.UserCouponClient;
+import com.dsh.other.feignclient.activity.model.UserCoupon;
 import com.dsh.other.model.*;
 import com.dsh.other.service.ISiteBookingService;
 import com.dsh.other.service.ISiteService;
@@ -16,6 +18,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
@@ -45,6 +48,9 @@
 
     @Autowired
     private ISiteBookingService siteBookingService;
+
+    @Resource
+    private UserCouponClient userCouponClient;
 
 
 
@@ -139,7 +145,12 @@
 
 
 
-
+    @ResponseBody
+    @PostMapping("/api/site/reservationSite")
+    @ApiOperation(value = "预约场地操作", tags = {"用户—预约场地"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
     public ResultUtil reservationSite(ReservationSite reservationSite){
         try {
             Integer uid = tokenUtil.getUserIdFormRedis();
@@ -147,7 +158,6 @@
                 return ResultUtil.tokenErr();
             }
             return siteService.reservationSite(uid, reservationSite);
-
         }catch (Exception e){
             e.printStackTrace();
             return ResultUtil.runErr();
@@ -219,4 +229,129 @@
             e.printStackTrace();
         }
     }
+
+
+
+
+    @ResponseBody
+    @PostMapping("/api/site/queryMySite")
+    @ApiOperation(value = "获取我的预约场地列表", tags = {"用户—预约场地"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "状态(0=待支付,1=待核销,2=已到店,3=已完成,4=已过期,5=已取消)", name = "status", dataType = "int", required = false),
+            @ApiImplicitParam(value = "页码,首页1", name = "pageNo", dataType = "int", required = true),
+            @ApiImplicitParam(value = "页条数", name = "pageSize", dataType = "int", required = true),
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
+    public ResultUtil<List<QueryMySiteVo>> queryMySite(Integer status, Integer pageNo, Integer pageSize){
+        try {
+            Integer uid = tokenUtil.getUserIdFormRedis();
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            List<QueryMySiteVo> queryMySiteVos = siteService.queryMySite(uid, status, pageNo, pageSize);
+            return ResultUtil.success(queryMySiteVos);
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
+
+
+    @ResponseBody
+    @PostMapping("/api/site/cancelMySite")
+    @ApiOperation(value = "取消我的预约场地", tags = {"用户—预约场地"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "预约数据id", name = "id", dataType = "int", required = true),
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
+    public ResultUtil cancelMySite(Integer id){
+        try {
+            Integer uid = tokenUtil.getUserIdFormRedis();
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            return siteService.cancelMySite(uid, id);
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
+
+
+    /**
+     * 微信退款回调
+     * @param request
+     * @param response
+     */
+    @ResponseBody
+    @PostMapping("/base/site/cancelMySiteCallback")
+    public void cancelMySiteCallback(HttpServletRequest request, HttpServletResponse response){
+        try {
+            Map<String, String> map = payMoneyUtil.wxRefundCallback(request);
+            if(null != map){
+                String code = map.get("out_refund_no");
+                String refund_id = map.get("refund_id");
+                String result = map.get("result");
+
+                SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>().eq("orderNo", code).eq("state", 1));
+                siteBooking.setStatus(5);
+                siteBooking.setCancelTime(new Date());
+                siteBooking.setRefundOrderNo(refund_id);
+                siteBookingService.updateById(siteBooking);
+                if(null != siteBooking.getUserCouponId()){
+                    UserCoupon userCoupon = userCouponClient.queryUserCouponById(siteBooking.getUserCouponId());
+                    userCoupon.setStatus(1);
+                    userCouponClient.updateUserCoupon(userCoupon);
+                }
+                PrintWriter out = response.getWriter();
+                out.write(result);
+                out.flush();
+                out.close();
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+
+    @ResponseBody
+    @PostMapping("/api/site/continuePaymentMySite")
+    @ApiOperation(value = "继续支付我预约的场地", tags = {"用户—预约场地"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "预约数据id", name = "id", dataType = "int", required = true),
+            @ApiImplicitParam(value = "支付方式(1=微信,2=支付宝,3=玩湃币)", name = "payType", dataType = "int", required = true),
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
+    public ResultUtil continuePaymentMySite(Integer id, Integer payType){
+        try {
+            Integer uid = tokenUtil.getUserIdFormRedis();
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            return siteService.continuePaymentMySite(uid, id, payType);
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
+
+
+
+    @ResponseBody
+    @PostMapping("/api/site/queryContinuePaymentMySitePrice")
+    @ApiOperation(value = "获取继续支付场地金额", tags = {"用户—预约场地"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "预约数据id", name = "id", dataType = "int", required = true),
+    })
+    public ResultUtil<Map<String, Double>> queryContinuePaymentMySitePrice(Integer id){
+        try {
+            return siteService.queryContinuePaymentMySitePrice(id);
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
+
+
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java b/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
index 42512db..3c977b1 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
@@ -61,6 +61,11 @@
     @TableField("appUserId")
     private Integer appUserId;
     /**
+     * 预约时段
+     */
+    @TableField("times")
+    private String times;
+    /**
      * 预约开始时间
      */
     @TableField("startTime")
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java
index fbd1db9..ff47827 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dsh.other.entity.Site;
+import com.dsh.other.model.QueryMySiteVo;
 import com.dsh.other.model.QuerySiteList;
 import com.dsh.other.model.QuerySiteListVo;
 import org.apache.ibatis.annotations.Param;
@@ -21,4 +22,16 @@
      * @return
      */
     List<QuerySiteListVo> querySiteList(@Param("item") QuerySiteList querySiteList);
+
+
+    /**
+     * 获取我的预约场地列表
+     * @param uid
+     * @param status
+     * @param pageNo
+     * @param pageSize
+     * @return
+     */
+    List<QueryMySiteVo> queryMySite(@Param("uid") Integer uid, @Param("status") Integer status,
+                                    @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java b/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java
new file mode 100644
index 0000000..ef7ea19
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java
@@ -0,0 +1,36 @@
+package com.dsh.other.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/19 9:30
+ */
+@Data
+@ApiModel
+public class QueryMySiteVo {
+    @ApiModelProperty("场地id")
+    private Integer id;
+    @ApiModelProperty("场地名称")
+    private String name;
+    @ApiModelProperty("场地类型名称")
+    private String siteTypeName;
+    @ApiModelProperty("门店名称")
+    private String storeName;
+    @ApiModelProperty("门店地址")
+    private String storeAddress;
+    @ApiModelProperty("门店经度")
+    private String storeLon;
+    @ApiModelProperty("门店纬度")
+    private String storeLat;
+    @ApiModelProperty("支付金额")
+    private Double payMoney;
+    @ApiModelProperty("预约时间")
+    private String appointment;
+    @ApiModelProperty("状态(0=待支付,1=待核销,2=已到店,3=已完成,4=已过期,5=已取消)")
+    private Integer status;
+    @ApiModelProperty("创建时间")
+    private String insertTime;
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java b/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java
index fcb8f90..35db539 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java
@@ -6,6 +6,7 @@
 import com.dsh.other.util.ResultUtil;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author zhibing.pu
@@ -49,4 +50,43 @@
      * @throws Exception
      */
     ResultUtil reservationSite(Integer uid, ReservationSite reservationSite) throws Exception;
+
+
+    /**
+     * 获取我的预约场地列表
+     * @param status
+     * @param pageNo
+     * @param pageSize
+     * @return
+     * @throws Exception
+     */
+    List<QueryMySiteVo> queryMySite(Integer uid, Integer status, Integer pageNo, Integer pageSize) throws Exception;
+
+
+    /**
+     * 取消我的预约场地
+     * @param id
+     * @return
+     * @throws Exception
+     */
+    ResultUtil cancelMySite(Integer uid, Integer id) throws Exception;
+
+
+    /**
+     * 继续支付我预约的场地
+     * @param id
+     * @param payType
+     * @return
+     * @throws Exception
+     */
+    ResultUtil continuePaymentMySite(Integer uid, Integer id, Integer payType) throws Exception;
+
+
+    /**
+     * 获取继续支付金额
+     * @param id
+     * @return
+     * @throws Exception
+     */
+    ResultUtil<Map<String, Double>> queryContinuePaymentMySitePrice(Integer id) throws Exception;
 }
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..403a241 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
@@ -179,12 +179,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,7 +191,6 @@
             }
         }
 
-
         String s_time = split[0];
         String e_time = split[split.length - 1];
         s_time = s_time.substring(s_time.lastIndexOf("-"));
@@ -208,6 +201,9 @@
         Double payMoney = 0D;
         if(reservationSite.getPayType() == 3){
             payMoney = new BigDecimal(site.getCashPrice()).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();
         }
@@ -256,6 +252,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());
@@ -269,7 +266,7 @@
         siteBookingService.save(siteBooking);
 
         if(reservationSite.getPayType() == 1){//微信支付
-            return weChatPaymentSite(uid, payMoney, siteBooking);
+            return weChatPaymentSite(payMoney, siteBooking);
         }
         if(reservationSite.getPayType() == 2){//支付宝支付
             return aliPaymentSite(payMoney, siteBooking);
@@ -283,12 +280,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 +318,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 +379,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 +404,7 @@
 
 
     /**
-     * 玩湃币支付课程
+     * 玩湃币支付
      * @param appUser
      * @param paymentPrice
      * @return
@@ -437,4 +419,202 @@
         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;
+        return this.baseMapper.queryMySite(uid, status, pageNo, pageSize);
+    }
+
+
+    /**
+     * 取消我的预约场地
+     * @param id
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public ResultUtil cancelMySite(Integer uid, Integer id) throws Exception {
+        SiteBooking siteBooking = siteBookingService.getById(id);
+        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);
+        }
+        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(siteBooking.getUserCouponId());
+                userCoupon.setStatus(1);
+                userCouponClient.updateUserCoupon(userCoupon);
+            }
+        }
+
+        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(siteBooking.getUserCouponId());
+                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.getCashPrice()).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(couponId);
+            Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId());
+            if(coupon.getType() == 1){//满减
+                JSONObject jsonObject = JSON.parseObject(coupon.getContent());
+                Double num1 = jsonObject.getDouble("num1");
+                Double num2 = jsonObject.getDouble("num2");
+                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("num1");
+                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(couponId);
+            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(couponId);
+            Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId());
+            if(coupon.getType() == 1){//满减
+                JSONObject jsonObject = JSON.parseObject(coupon.getContent());
+                Double num1 = jsonObject.getDouble("num1");
+                Double num2 = jsonObject.getDouble("num2");
+                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("num1");
+                payMoney = new BigDecimal(payMoney).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+            }
+        }
+        map.put("cash", payMoney);
+        return ResultUtil.success(map);
+    }
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
index ccf2f0f..c53aea3 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
@@ -255,11 +255,11 @@
      * @throws Exception
      */
     public ResultUtil queryALIOrder(String out_trade_no) throws Exception{
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2");
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8",alipay_public_key,"RSA2");
         AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
         request.setBizContent("{" +
-                "\"out_trade_no\":" + out_trade_no +
-                "  }");
+                "  \"out_trade_no\":\"" + out_trade_no + "\"" +
+                "}");
         AlipayTradeQueryResponse response = alipayClient.execute(request);
         if(response.isSuccess()){
             String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
@@ -1108,8 +1108,16 @@
 
 
     public static void main(String[] ages){
-//        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
-//        payMoneyUtil.weixinpay("测试", "123", "12.5", "");
+        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
+        ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com");
+        System.err.println(ce);
+        ResultUtil resultUtil = null;
+        try {
+            resultUtil = payMoneyUtil.queryALIOrder("121456457");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        System.err.println(resultUtil);
     }
 
 
diff --git a/cloud-server-other/src/main/resources/mapper/SiteMapper.xml b/cloud-server-other/src/main/resources/mapper/SiteMapper.xml
index a5628c3..d9c0015 100644
--- a/cloud-server-other/src/main/resources/mapper/SiteMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/SiteMapper.xml
@@ -35,4 +35,30 @@
         </if>
         order by a.insertTime desc limit #{item.pageNum}, #{item.pageSize}
     </select>
+
+
+
+    <select id="queryMySite" resultType="com.dsh.other.model.QueryMySiteVo">
+        select
+        a.id,
+        b.`name` as `name`,
+        d.`name` as siteTypeName,
+        c.`name` as storeName,
+        c.address as storeAddress,
+        c.lon as storeLon,
+        c.lat as storeLat,
+        a.payMoney as payMoney,
+        CONCAT(DATE_FORMAT(a.startTime, '%Y-%m-%d %H:%i'), '-', DATE_FORMAT(a.endTime, '%H:%i')) as appointment,
+        a.`status`,
+        DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as insertTime
+        from t_site_booking a
+        left join t_site b on (a.siteId = b.id)
+        left join t_store c on (b.storeId = c.id)
+        left join t_site_type d on (b.siteTypeId = d.id)
+        where a.state = 1 and a.appUserId = #{uid}
+        <if test="null != status">
+            and a.status = #{status}
+        </if>
+        order by a.insertTime desc limit #{pageNo}, #{pageSize}
+    </select>
 </mapper>

--
Gitblit v1.7.1