From 0c877ca6f32edb146d15c4593a90b613a650eaed Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 19 七月 2023 11:08:25 +0800 Subject: [PATCH] 更新预约场地部分接口 --- cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 205 insertions(+), 25 deletions(-) diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java index 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); + } } -- Gitblit v1.7.1