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>