From 0e36bac3643e7b44c5c316f736c6a37cab2d57fc Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期二, 11 七月 2023 19:59:41 +0800 Subject: [PATCH] 开始上课的课包购买支付 --- cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java | 3 + cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java | 4 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 5 + cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 115 ++++++++++++++++++++++++++++++++++---- cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java | 4 cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java | 2 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java | 3 + 7 files changed, 116 insertions(+), 20 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java index 02c1576..eb4abaf 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java @@ -63,7 +63,7 @@ RechargeDetailsVo vo = new RechargeDetailsVo(); List<RechargeDetailsVo.RechargesDetail> details = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); - + // TODO: 2023/7/11 充值明细查询 Date monthStart = null; Date monthEnd = null; if (StringUtils.hasText(yearMonth)) { 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 39fbb54..c18ed93 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 @@ -495,14 +495,15 @@ @ApiOperation(value = "已报名课程详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "coursePayId" ,value = "课包记录id",dataType = "long"), }) - public ResultUtil<CourseDetailsResponse> getRegisteredData( Integer coursePackageId){ + public ResultUtil<CourseDetailsResponse> getRegisteredData( Integer coursePayId){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } - return ResultUtil.success(packagePaymentService.queryRegisteredCourseDetails(coursePackageId,appUserId)); + return ResultUtil.success(packagePaymentService.queryRegisteredCourseDetails(coursePayId,appUserId)); }catch (Exception e){ return ResultUtil.runErr(); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java index c9dc4d5..6ad8055 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java @@ -10,6 +10,9 @@ @ApiModelProperty(value = "课包id") private Integer coursePackageId; + @ApiModelProperty(value = "课包记录id") + private Long coursePayId; + @ApiModelProperty(value = "课包封面图") private String packageImg; 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 e8cada9..f56ccc1 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 @@ -22,8 +22,8 @@ @ApiModelProperty(value = "优惠券Id") private Integer conponId; - @ApiModelProperty(value = "课时id") - private Long courseConfigId; + @ApiModelProperty(value = "支付记录id") + private Long coursePayId; } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java index 820d95d..d98b2db 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java @@ -10,6 +10,9 @@ @ApiModelProperty(value = "课包id") private Integer coursePackageId; + @ApiModelProperty(value = "支付记录id") + private Long coursePayId; + @ApiModelProperty(value = "课包封面图") private String coverDrawing; 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 35a855e..8d57092 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 @@ -67,11 +67,11 @@ /** * 获取已报名课包详情 - * @param coursePackageId + * @param coursePayId * @param appUserId * @return */ - CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId); + CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePayId, Integer appUserId); 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 e147946..93feb54 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 @@ -6,7 +6,9 @@ import com.dsh.course.feignclient.account.CoachClient; import com.dsh.course.feignclient.account.model.Coach; import com.dsh.course.feignclient.activity.BenefitVideoClient; +import com.dsh.course.feignclient.activity.CouponClient; import com.dsh.course.feignclient.activity.model.BenefitsVideos; +import com.dsh.course.feignclient.activity.model.Coupon; import com.dsh.course.feignclient.other.StoreClient; import com.dsh.course.feignclient.other.model.Store; import com.dsh.course.mapper.*; @@ -20,8 +22,10 @@ import com.dsh.course.model.vo.response.CourseDetailsResponse; import com.dsh.course.model.vo.response.CourseOfVideoResponse; import com.dsh.course.service.TCoursePackagePaymentService; +import com.dsh.course.util.PayMoneyUtil; import com.dsh.course.util.ResultUtil; import com.dsh.course.util.StrUtils; +import com.dsh.course.util.UUIDUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +33,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -74,6 +79,11 @@ @Resource private TCoursePackageDiscountMapper tcpdMapper; + @Resource + private CouponClient client; + + @Autowired + private PayMoneyUtil payMoneyUtil; /** @@ -178,6 +188,7 @@ TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId()); Store store = stoClient.queryStoreById(coursePackage.getStoreId()); RegisterCourseVo registerCourseVo = new RegisterCourseVo(); + registerCourseVo.setCoursePayId(tCoursePackagePayment.getId()); registerCourseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); registerCourseVo.setPackageImg(coursePackage.getCoverDrawing()); String storeAndCourse = coursePackage.getName()+"("+ store.getName() +")"; @@ -197,18 +208,16 @@ } @Override - public CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId) { + public CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePayId, Integer appUserId) { CourseDetailsResponse response = new CourseDetailsResponse(); - List<TCoursePackagePayment> tCoursePackagePayments = this.list(new QueryWrapper<TCoursePackagePayment>() - .eq("coursePackageId",coursePackageId ) - .eq("appUserId",appUserId)); + TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(coursePayId); - if (tCoursePackagePayments.size() > 0){ - TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0); + if (null != tCoursePackagePayment){ TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId()); response.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); response.setCoverDrawing(coursePackage.getCoverDrawing()); response.setCoursePackageName(coursePackage.getName()); + response.setCoursePayId(tCoursePackagePayment.getId()); List<Integer> integers = StrUtils.dealStrToList(coursePackage.getClassWeeks()); if (integers.size() > 0){ StringBuilder courWeeks = new StringBuilder("每"); @@ -282,16 +291,39 @@ @Override public ResultUtil ContinuationOrpaymentCourse(Integer userIdFormRedis, ClasspaymentRequest request) { - // TODO: 2023/7/5 报名课程支付 + TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(request.getCoursePayId()); + String code = ""; + if (tCoursePackagePayment.getPayStatus() == 1){ + code = tCoursePackagePayment.getCode(); + }else { + TCoursePackagePayment newPayment = new TCoursePackagePayment(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + newPayment.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5)); + newPayment.setAppUserId(userIdFormRedis); + newPayment.setStudentId(request.getStuId()); + newPayment.setCoursePackageId(request.getLessonId()); + newPayment.setClassHours(tCoursePackagePayment.getClassHours()); + newPayment.setOriginalPrice(tCoursePackagePayment.getOriginalPrice()); + newPayment.setTotalClassHours(tCoursePackagePayment.getTotalClassHours()); + newPayment.setLaveClassHours(tCoursePackagePayment.getTotalClassHours()); + newPayment.setAbsencesNumber(0); + newPayment.setPayUserType(1); + newPayment.setPayStatus(1); + newPayment.setStatus(1); + newPayment.setState(1); + newPayment.setInsertTime(new Date()); + this.baseMapper.insert(newPayment); + code = newPayment.getCode(); + } switch (request.getPayType()){ case 1: - WeChatPayment(); + WeChatPayment(code,request); break; case 2: - AlipayPayment(); + AlipayPayment(code,request); break; case 3: - PlaypaiGoldPayment(); + PlaypaiGoldPayment(code,request); break; default: break; @@ -300,15 +332,72 @@ } - public void WeChatPayment(){ + public void WeChatPayment(String code, ClasspaymentRequest request){ } - public void AlipayPayment(){ + 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(); +// } + return alipay; } - public void PlaypaiGoldPayment(){ + public void PlaypaiGoldPayment(String code, ClasspaymentRequest request){ } -- Gitblit v1.7.1