From a0dd7e4a251536f9622fe47d35c0f6c8506f5b95 Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期三, 19 七月 2023 17:01:49 +0800 Subject: [PATCH] course:开始上课的已报名课程支付功能完善 --- cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java | 2 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java | 2 cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java | 5 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java | 2 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java | 25 --- cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 71 ++++++++ cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml | 8 + cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 292 +++++++++++++++++++++++++++-------- cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java | 3 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java | 6 cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/CouponClient.java | 6 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java | 5 12 files changed, 319 insertions(+), 108 deletions(-) diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java index 665f569..be425d3 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java @@ -87,6 +87,11 @@ return availableVos; } + @PostMapping("/base/userConpon/queryCouponRules") + public Map<String,Object> getCouponRules(@RequestBody Integer couponId){ + return cService.queryConponRuleOfJson(couponId); + } + @ResponseBody diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java index 5ded3e7..5b9d00b 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import java.util.Map; @FeignClient(value = "mb-cloud-activity") public interface UserConponClient { @@ -32,4 +33,8 @@ @PostMapping("/userCoupon/queryCouponOfStore") List<Integer> getCouponStoreIds(@RequestBody Integer couponId); + + + @PostMapping("/base/userConpon/queryCouponRules") + Map<String,Object> getCouponRules(@RequestBody Integer couponId); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java index e3ebf20..8fb6b20 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java @@ -96,29 +96,4 @@ } } - - /** - * 折扣课包支付 - */ - @ResponseBody - @PostMapping("/api/useBenefit/paymentOfDiscountCoursePack") - @ApiOperation(value = "本周福利-折扣课包支付", tags = {"APP-使用福利"}) - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), - @ApiImplicitParam(name = "coursePackageDiscountId",value = "限时折扣配置id/赠送课时配置id",dataType = "int"), - @ApiImplicitParam(name = "lon",value = "经度",dataType = "String"), - @ApiImplicitParam(name = "lat",value = "纬度",dataType = "String"), - }) - public ResultUtil paymentWeeksFreeCourse(Integer coursePackageDiscountId){ - try { - Integer appuserId = tokenUtil.getUserIdFormRedis(); - if(null == appuserId){ - return ResultUtil.tokenErr(); - } - return tcpdService.paymentDiscountCoursePack(coursePackageDiscountId,appuserId); - }catch (Exception e){ - return ResultUtil.runErr(); - } - } - } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java index 34105c7..346ebf8 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -28,11 +28,16 @@ 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; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Api @@ -75,7 +80,9 @@ private CancelledClassesService cancelledClassesService; @Autowired - private AppUserClient appuClient; + private PayMoneyUtil payMoneyUtil; + @Resource + private AppUserClient auClitn; private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); @@ -342,7 +349,7 @@ @ResponseBody @PostMapping("/api/course/queryArrangeCourseList") - @ApiOperation(value = "获取布置课程列表", tags = {"APP-课程列表"}) + @ApiOperation(value = "课后练习-获取布置课程列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ }) public ResultUtil<List<BaseVo>> queryArrangePackageType(){ @@ -374,7 +381,7 @@ */ @ResponseBody @PostMapping("/api/startCource/afterSourceList") - @ApiOperation(value = "课后视频课表", tags = {"APP-开始上课"}) + @ApiOperation(value = "课后练习-课后视频列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @@ -403,7 +410,7 @@ */ @ResponseBody @PostMapping("/api/startCource/afterSourceDetail") - @ApiOperation(value = "课后视频详情", tags = {"APP-开始上课"}) + @ApiOperation(value = "课后练习-课后视频详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @@ -534,6 +541,58 @@ } + + /** + * 课包续课支付宝支付回调接口 + */ + @PostMapping("/base/coursePackage/alipayRegisteredCoursesCallback") + public void alipayCallback(HttpServletRequest request, HttpServletResponse response){ + try { + Map<String, String> map = payMoneyUtil.alipayCallback(request); + if(null != map){ + String out_trade_no = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + ResultUtil resultUtil = packagePaymentService.insertVipPaymentCallback(out_trade_no, transaction_id); + if(resultUtil.getCode() == 200){ + PrintWriter out = response.getWriter(); + out.write("success"); + out.flush(); + out.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 课包续课微信支付回调接口 + */ + @PostMapping("/base/coursePackage/wechatRegisteredCoursesCallback") + public void weChatCallback(HttpServletRequest request, HttpServletResponse response){ + try { + Map<String, String> map = payMoneyUtil.weixinpayCallback(request); + if(null != map){ + String out_trade_no = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + String result = map.get("result"); + ResultUtil resultUtil = packagePaymentService.insertVipPaymentCallback(out_trade_no, transaction_id); + if(resultUtil.getCode() == 200){ + PrintWriter out = response.getWriter(); + out.write(result); + out.flush(); + out.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + + /** * 获取学员剩余课时 * @param id @@ -638,7 +697,7 @@ return 2; } CoursePackagePaymentConfig paymentConfig = icppcService.getById(coursePackage.getCoursePayConfigId()); - AppUser appUser = appuClient.queryAppUser(userIdFormRedis); + AppUser appUser = auClitn.queryAppUser(userIdFormRedis); if (appUser.getPlayPaiCoins() < paymentConfig.getPlayPaiCoin()){ return 3; } @@ -653,7 +712,7 @@ packagePaymentService.updateById(packagePayment); appUser.setPlayPaiCoins(appUser.getPlayPaiCoins()-paymentConfig.getPlayPaiCoin()); - appuClient.updateAppUser(appUser); + auClitn.updateAppUser(appUser); } catch (Exception e) { return 4; } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/CouponClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/CouponClient.java index 8b18450..14d78a6 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/CouponClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/CouponClient.java @@ -3,6 +3,9 @@ import com.dsh.course.feignclient.activity.model.Coupon; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; /** * @author zhibing.pu @@ -19,4 +22,7 @@ */ @PostMapping("/coupon/queryCouponById") Coupon queryCouponById(Integer id); + + @PostMapping("/base/userConpon/queryCouponRules") + Map<String,Object> getCouponRules(@RequestBody Integer couponId); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java index 63917a7..ad694c5 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java @@ -23,4 +23,6 @@ */ Integer queryCountNumber(@Param("coursePackageId") Integer coursePackageId); + TCoursePackagePayment getCoursePackagePaymentByCode(@Param("code") String code); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java index f56ccc1..9f2495d 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java @@ -25,5 +25,8 @@ @ApiModelProperty(value = "支付记录id") private Long coursePayId; + @ApiModelProperty(value = "课时数") + private Integer courseHoursNum; + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java index 6af20df..cd02a1a 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java @@ -4,7 +4,6 @@ import com.dsh.course.entity.TCoursePackageDiscount; import com.dsh.course.model.vo.response.Details; import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; -import com.dsh.course.util.ResultUtil; import java.util.List; @@ -23,6 +22,5 @@ ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon); - ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java index d41eb94..763ec2b 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java @@ -86,4 +86,6 @@ */ List<RecordAppoint> obtainStuClassDetails(Integer stuId, Integer appUserId); + ResultUtil insertVipPaymentCallback(String code, String orderNumber); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java index 218bcba..e0f8400 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java @@ -21,7 +21,6 @@ import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.util.DateTimeHelper; import com.dsh.course.util.LocalDateTimeUtils; -import com.dsh.course.util.ResultUtil; import com.dsh.course.util.StrUtils; import org.springframework.stereotype.Service; @@ -391,11 +390,6 @@ return packageResponse; } - @Override - public ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId) { - // TODO: 2023/7/13 折扣课包支付 - return null; - } private static boolean isDateWithinRange(Date date, Date startTime, Date endTime) { diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index 72d255f..7ac9917 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java @@ -1,9 +1,13 @@ package com.dsh.course.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.course.entity.*; +import com.dsh.course.feignclient.account.AppUserClient; import com.dsh.course.feignclient.account.CoachClient; +import com.dsh.course.feignclient.account.model.AppUser; import com.dsh.course.feignclient.account.model.Coach; import com.dsh.course.feignclient.activity.BenefitVideoClient; import com.dsh.course.feignclient.activity.CouponClient; @@ -26,7 +30,6 @@ import com.dsh.course.util.*; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -78,11 +81,18 @@ @Resource private TCoursePackageDiscountMapper tcpdMapper; + + @Resource + private CoursePackagePaymentConfigMapper cpConfigMapper; + @Resource private CouponClient client; - @Autowired + @Resource private PayMoneyUtil payMoneyUtil; + + @Resource + private AppUserClient appuClient; /** @@ -174,7 +184,7 @@ uvdmapper.updateById(userVideoDetails); return "SUCCESS"; } - return null; + return "ERROR"; } @Override @@ -289,26 +299,61 @@ } @Override - public ResultUtil ContinuationOrpaymentCourse(Integer userIdFormRedis, ClasspaymentRequest request) { + public ResultUtil ContinuationOrpaymentCourse(Integer ids, ClasspaymentRequest request) { + AppUser userIdFormRedis = appuClient.queryAppUser(ids); TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(request.getCoursePayId()); String code = ""; + BigDecimal money = tCoursePackagePayment.getCashPayment(); + Integer wpGold = tCoursePackagePayment.getPlayPaiCoin(); if (tCoursePackagePayment.getPayStatus() == 1){ +// 待支付的订单 code = tCoursePackagePayment.getCode(); + tCoursePackagePayment.setPayType(request.getPayType()); + if (request.getUseConpon() == 1){ + tCoursePackagePayment.setUserCouponId(Long.valueOf(request.getUseConpon())); + } + this.baseMapper.updateById(tCoursePackagePayment); }else { +// 续课的订单 +// 查询是否续课优惠 + + CoursePackagePaymentConfig paymentConfig = cpConfigMapper.selectOne(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId", request.getLessonId()) + .eq("classHours", request.getCourseHoursNum())); + TCoursePackageDiscount coursePackageDiscount = tcpdMapper.selectOne(new QueryWrapper<TCoursePackageDiscount>() + .eq("coursePackageId", request.getLessonId()) + .eq("type", 2) + .eq("auditStatus", 1) + .eq("coursePackagePaymentConfigId", paymentConfig.getCoursePackageId())); + if (ToolUtil.isNotEmpty(coursePackageDiscount)){ + String content = coursePackageDiscount.getContent(); + JSONObject jsonObject = JSON.parseObject(content); + if (userIdFormRedis.getIsVip() == 1){ + Double jsonObjectDouble = jsonObject.getDouble("num1"); + money = BigDecimal.valueOf(jsonObjectDouble); + }else { + Double jsonObjectDouble = jsonObject.getDouble("num2"); + money = BigDecimal.valueOf(jsonObjectDouble); + } + } TCoursePackagePayment newPayment = new TCoursePackagePayment(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); newPayment.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5)); - newPayment.setAppUserId(userIdFormRedis); + newPayment.setAppUserId(userIdFormRedis.getId()); newPayment.setStudentId(request.getStuId()); newPayment.setCoursePackageId(request.getLessonId()); newPayment.setClassHours(tCoursePackagePayment.getClassHours()); newPayment.setOriginalPrice(tCoursePackagePayment.getOriginalPrice()); newPayment.setTotalClassHours(tCoursePackagePayment.getTotalClassHours()); newPayment.setLaveClassHours(tCoursePackagePayment.getTotalClassHours()); + if (request.getUseConpon() == 1){ + newPayment.setUserCouponId(Long.valueOf(request.getUseConpon())); + } newPayment.setAbsencesNumber(0); newPayment.setPayUserType(1); newPayment.setPayStatus(1); newPayment.setStatus(1); + newPayment.setPayType(request.getPayType()); newPayment.setState(1); newPayment.setInsertTime(new Date()); this.baseMapper.insert(newPayment); @@ -316,13 +361,47 @@ } switch (request.getPayType()){ case 1: - WeChatPayment(code,request); - break; + if (request.getUseConpon() == 1){ + Coupon coupon = client.queryCouponById(request.getConponId()); + if (coupon.getType() == 1){ + Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); + Double conditionalAmount = (Double) couponRules.get("conditionalAmount"); + Double deductionAmount = (Double) couponRules.get("deductionAmount"); + if (money.compareTo(BigDecimal.valueOf(conditionalAmount)) >= 0){ + money = BigDecimal.valueOf(deductionAmount); + } + } + if (coupon.getType() == 2){ + Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); + Object amount = couponRules.get("deductionAmount"); + money = BigDecimal.valueOf((Double) amount); + } + } + try { + return WeChatPayment(code,money); + }catch (Exception e){ + return ResultUtil.runErr(); + } case 2: - AlipayPayment(code,request); - break; + if (request.getUseConpon() == 1){ + Coupon coupon = client.queryCouponById(request.getConponId()); + if (coupon.getType() == 1){ + Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); + Double conditionalAmount = (Double) couponRules.get("conditionalAmount"); + Double deductionAmount = (Double) couponRules.get("deductionAmount"); + if (money.compareTo(BigDecimal.valueOf(conditionalAmount)) >= 0){ + money = BigDecimal.valueOf(deductionAmount); + } + } + if (coupon.getType() == 2){ + Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); + Object amount = couponRules.get("deductionAmount"); + money = BigDecimal.valueOf((Double) amount); + } + } + return AlipayPayment(code,money); case 3: - PlaypaiGoldPayment(code,request); + PlaypaiGoldPayment(userIdFormRedis,code,wpGold); break; default: break; @@ -331,73 +410,135 @@ } - public void WeChatPayment(String code, ClasspaymentRequest request){ - + public ResultUtil WeChatPayment(String code, BigDecimal request) throws Exception { + TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; + ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, request.toString(), + "/base/coursePackage/wechatRegisteredCoursesCallback", "APP", ""); + if(weixinpay.getCode() == 200){ + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10){ + int min = 5000; + wait += (min * num); + Thread.sleep(wait); + TCoursePackagePayment coursePackagePayment = baseMapper1.getCoursePackagePaymentByCode(code); + if(coursePackagePayment.getPayStatus() == 2){ + break; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); + if(resultUtil.getCode() == 200 && coursePackagePayment.getPayStatus() == 1){ + /** + * SUCCESS—支付成功, + * REFUND—转入退款, + * NOTPAY—未支付, + * CLOSED—已关闭, + * REVOKED—已撤销(刷卡支付), + * USERPAYING--用户支付中, + * PAYERROR--支付失败(其他原因,如银行返回失败) + */ + Map<String, String> data1 = resultUtil.getData(); + 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){ + coursePackagePayment.setState(3); + baseMapper1.deleteById(coursePackagePayment.getId()); + break; + } + if("SUCCESS".equals(s)){ + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setOrderNumber(transaction_id); + baseMapper1.updateById(coursePackagePayment); + break; + } + if("USERPAYING".equals(s)){ + num++; + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } + return weixinpay; } - public ResultUtil AlipayPayment(String code, ClasspaymentRequest request){ - BigDecimal amount = BigDecimal.ZERO; - if (request.getUseConpon() == 1){ - Coupon coupon = client.queryCouponById(request.getConponId()); - //TODO: 2023/7/11 课包购买的微信支付 - } - ResultUtil alipay = payMoneyUtil.alipay("课包购买", "", "", code, amount.toString(), - "/base/coursePackage/alipayNewPaymentCallback"); -// if(alipay.getCode() == 200){ -// new Thread(new Runnable() { -// @Override -// public void run() { -// try { -// int num = 1; -// int wait = 0; -// while (num <= 10){ -// int min = 5000; -// wait += (min * num); -// Thread.sleep(wait); -// TCoursePackagePayment coursePackagePayment = couPayClient.getCoursePackagePaymentByCode(code); -// if(coursePackagePayment.getPayStatus() == 2){ -// break; -// } -// ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); -// if(resultUtil.getCode() == 200 && coursePackagePayment.getPayStatus() == 1){ -// /** -// * WAIT_BUYER_PAY(交易创建,等待买家付款)、 -// * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 -// * TRADE_SUCCESS(交易支付成功)、 -// * TRADE_FINISHED(交易结束,不可退款) -// */ -// Map<String, String> data1 = resultUtil.getData(); -// String s = data1.get("tradeStatus"); -// String tradeNo = data1.get("tradeNo"); -// if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){ -// coursePackagePayment.setState(3); -// couPayClient.delPaymentCoursePackage(coursePackagePayment.getId()); -// break; -// } -// if("TRADE_SUCCESS".equals(s)){ -// coursePackagePayment.setPayStatus(2); -// coursePackagePayment.setOrderNumber(tradeNo); -// couPayClient.updatePaymentCoursePackage(coursePackagePayment); -// break; -// } -// if("WAIT_BUYER_PAY".equals(s)){ -// num++; -// } -// } -// } -// }catch (Exception e){ -// e.printStackTrace(); -// } -// } -// }).start(); -// } + public ResultUtil AlipayPayment(String code, BigDecimal request){ + TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; + ResultUtil alipay = payMoneyUtil.alipay("课包购买", "", "", code, request.toString(), + "/base/coursePackage/alipayRegisteredCoursesCallback"); + if(alipay.getCode() == 200){ + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10){ + int min = 5000; + wait += (min * num); + Thread.sleep(wait); + TCoursePackagePayment coursePackagePayment = baseMapper1.getCoursePackagePaymentByCode(code); + if(coursePackagePayment.getPayStatus() == 2){ + break; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); + if(resultUtil.getCode() == 200 && coursePackagePayment.getPayStatus() == 1){ + /** + * WAIT_BUYER_PAY(交易创建,等待买家付款)、 + * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 + * TRADE_SUCCESS(交易支付成功)、 + * TRADE_FINISHED(交易结束,不可退款) + */ + Map<String, String> data1 = resultUtil.getData(); + String s = data1.get("tradeStatus"); + String tradeNo = data1.get("tradeNo"); + if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){ + coursePackagePayment.setState(3); + baseMapper1.deleteById(coursePackagePayment.getId()); + break; + } + if("TRADE_SUCCESS".equals(s)){ + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setOrderNumber(tradeNo); + baseMapper1.updateById(coursePackagePayment); + break; + } + if("WAIT_BUYER_PAY".equals(s)){ + num++; + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } return alipay; } - public void PlaypaiGoldPayment(String code, ClasspaymentRequest request){ + public ResultUtil PlaypaiGoldPayment(AppUser appUser,String code, Integer wpGold){ + TCoursePackagePayment packagePayment = this.baseMapper.selectOne(new QueryWrapper<TCoursePackagePayment>() + .eq("code",code )); + if (appUser.getPlayPaiCoins() < wpGold){ + return ResultUtil.error("玩牌币不足!"); + } + packagePayment.setPayStatus(2); + packagePayment.setPayUserId(appUser.getId()); + packagePayment.setPlayPaiCoin(wpGold); + this.baseMapper.updateById(packagePayment); + appUser.setPlayPaiCoins(ToolUtil.isNotEmpty(appUser.getPlayPaiCoins()) ? appUser.getPlayPaiCoins()-wpGold : wpGold); + appuClient.updateAppUser(appUser); + return ResultUtil.success(); } @@ -476,4 +617,17 @@ return recordVoList; } + @Override + public ResultUtil insertVipPaymentCallback(String code, String orderNumber) { + TCoursePackagePayment coursePackagePayment = this.baseMapper.getCoursePackagePaymentByCode(code); + if(coursePackagePayment.getPayStatus() != 1){ + return ResultUtil.success(); + } + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setOrderNumber(orderNumber); + this.baseMapper.updateById(coursePackagePayment); + return ResultUtil.success(); + } + + } diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml index 67802be..6df7fb4 100644 --- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml @@ -34,4 +34,12 @@ SELECT appUserId FROM t_course_package_payment WHERE payStatus = 2 AND state = 1 and coursePackageId = #{coursePackageId} GROUP BY appUserId ) AS aa </select> + + + <select id="getCoursePackagePaymentByCode" resultType="com.dsh.course.entity.TCoursePackagePayment"> + select * from t_course_package_payment where 1=1 + <if test="code != null"> + and `code` = #{code} + </if> + </select> </mapper> -- Gitblit v1.7.1