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