puzhibing
2023-07-19 0c877ca6f32edb146d15c4593a90b613a650eaed
更新预约场地部分接口
9个文件已修改
1个文件已添加
545 ■■■■■ 已修改文件
cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java 230 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/SiteMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
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);
    }
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,15 +145,19 @@
    @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();
            if(null == uid){
                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();
        }
    }
}
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")
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);
}
cloud-server-other/src/main/java/com/dsh/other/model/QueryMySiteVo.java
New file
@@ -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;
}
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;
}
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);
    }
}
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);
    }
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>