From 643d431548ddb65a904a45d024fe04ea3ec49276 Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期二, 11 七月 2023 17:58:45 +0800 Subject: [PATCH] 开始上课的支付功能 --- cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java | 2 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java | 196 +++++++++++++++++++++-- cloud-server-course/src/main/java/com/dsh/course/model/vo/request/PlayPaiGoldCoursePackage.java | 22 ++ cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java | 20 ++ cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PlayPaiGoldCoursePackage.java | 22 ++ cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java | 10 + cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/CoursePackage.java | 2 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 75 ++++++++- cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java | 2 cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java | 58 ++++++ cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java | 16 ++ 11 files changed, 385 insertions(+), 40 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java index fad5bff..0338221 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java @@ -1,9 +1,18 @@ package com.dsh.account.controller; +import com.dsh.account.service.TStudentService; +import com.dsh.account.util.PayMoneyUtil; +import com.dsh.account.util.ResultUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.util.Map; /** * 支付回调控制器 @@ -15,21 +24,58 @@ public class PaymentCallbackController { + @Autowired + private PayMoneyUtil payMoneyUtil; + + @Autowired + private TStudentService tstuService; + /** * 支付宝支付回调接口 */ - @PostMapping("/v1") - public void alipayCallback(){ - + @PostMapping("/base/coursePackage/alipayPaymentCallback") + 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 = tstuService.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("/v2") - public void weChatCallback(){ - + @PostMapping("/base/coursePackage/wechatPaymentCallback") + 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 = tstuService.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(); + } } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java index 55af25f..9030b72 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java @@ -33,4 +33,20 @@ @PostMapping("/base/coursePack/allPaymentCourseList") public List<TCoursePackagePayment> getAppuserCourseList(@RequestBody Integer appUserId); + + @PostMapping("/coursePackagePayment/courseRenewPlayPaiPay") + public int paymentWanpaiRenewCourse(@RequestBody PlayPaiGoldCoursePackage coursePackage); + + @PostMapping("/base/coursePack/getPaymentCoursePackage") + public TCoursePackagePayment getCoursePackagePaymentByCode(@RequestBody String code); + + @PostMapping("/base/coursePack/delPaymentCoursePackage") + public boolean delPaymentCoursePackage(@RequestBody Integer payId); + + @PostMapping("/base/coursePack/updatePaymentCoursePackage") + void updatePaymentCoursePackage(TCoursePackagePayment coursePackagePayment); + + @PostMapping("/base/coursePack/savePaymentCoursePackage") + public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PlayPaiGoldCoursePackage.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PlayPaiGoldCoursePackage.java new file mode 100644 index 0000000..d1ff02a --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PlayPaiGoldCoursePackage.java @@ -0,0 +1,22 @@ +package com.dsh.account.feignclient.course.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PlayPaiGoldCoursePackage { + + @ApiModelProperty(value = "支付配置id") + Integer coursePayConfigId; + + @ApiModelProperty(value = "学员id") + Integer stuId; + + @ApiModelProperty(value = "课包id") + Integer coursePackageId; + + @ApiModelProperty(value = "code") + String code; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java index f0dfe8e..4c867d1 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java @@ -25,7 +25,7 @@ */ private Integer coursePackageId; /** - * 支付方式(1=现金,2=玩湃币) + * 支付方式(1=微信 2=支付宝 3=玩湃币) */ private Integer payType; /** @@ -88,5 +88,13 @@ * 添加时间 */ private Date insertTime; + /** + * 业务编号 + */ + private String code; + /** + * 原价 + */ + private Double originalPrice; } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java index 5604edd..12d69b7 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java @@ -25,7 +25,7 @@ private Integer conponId; @ApiModelProperty(value = "课时id") - private Long courseConfigId; + private Integer courseConfigId; @ApiModelProperty(value = "支付金额") private BigDecimal payAmount; diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java index dcd9be9..d8cc797 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java @@ -73,4 +73,6 @@ ResultUtil renewClassPayment(Integer userIdFormRedis, ClasspaymentRequest request); + ResultUtil insertVipPaymentCallback(String outTradeNo, String transactionId); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java index 4ab69ac..e55dcac 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java @@ -37,10 +37,8 @@ import com.dsh.account.model.vo.sourceDetail.CourseDetailsOfContinuationResp; import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest; import com.dsh.account.service.TStudentService; -import com.dsh.account.util.DateTimeHelper; -import com.dsh.account.util.DateUtil; -import com.dsh.account.util.ResultUtil; -import com.dsh.account.util.ToolUtil; +import com.dsh.account.util.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -99,6 +97,10 @@ @Resource private ParticipantClient participantClient; + + + @Autowired + private PayMoneyUtil payMoneyUtil; @@ -374,35 +376,183 @@ @Override public ResultUtil renewClassPayment(Integer userIdFormRedis, ClasspaymentRequest request) { - // TODO: 2023/7/5 续课支付 - switch (request.getPayType()){ - case 1: - WeChatPayment(); - break; - case 2: - AlipayPayment(); - break; - case 3: - PlaypaiGoldPayment(); - break; - default: - break; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + + TCoursePackagePayment packagePayment = new TCoursePackagePayment(); + packagePayment.setCode(code); + packagePayment.setAppUserId(userIdFormRedis); + packagePayment.setStudentId(request.getStuId()); + packagePayment.setCoursePackageId(request.getLessonId()); + packagePayment.setPayType(request.getPayType()); + packagePayment.setAbsencesNumber(0); + packagePayment.setPayUserType(1); + packagePayment.setPayStatus(1); + packagePayment.setPayUserId(userIdFormRedis); + packagePayment.setStatus(1); + packagePayment.setState(1); + packagePayment.setInsertTime(new Date()); + couPayClient.savePaymentCoursePackage(packagePayment); + + try { + switch (request.getPayType()) { + case 1: + return WeChatPayment(code,request.getPayAmount()); + case 2: + return AlipayPayment(code,request.getPayAmount()); + case 3: + int i = PlaypaiGoldPayment(code,request); + switch (i){ + case 1: + return ResultUtil.success(); + case 2: + return ResultUtil.error("用户未登录!"); + case 3: + return ResultUtil.error("续课失败,玩湃币不足,请充值"); + case 4: + return ResultUtil.error("续课失败,请联系管理员"); + } + default: + break; + } + }catch (Exception e){ + ResultUtil.runErr(); } return ResultUtil.success(); } - public void WeChatPayment(){ - + public ResultUtil WeChatPayment(String code,BigDecimal amount) throws Exception { + ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, amount.toString(), + "/base/coursePackage/wechatPaymentCallback", "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 = couPayClient.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); + couPayClient.delPaymentCoursePackage(coursePackagePayment.getId()); + break; + } + if("SUCCESS".equals(s)){ + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setOrderNumber(transaction_id); + couPayClient.updatePaymentCoursePackage(coursePackagePayment); + break; + } + if("USERPAYING".equals(s)){ + num++; + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } + return weixinpay; } - public void AlipayPayment(){ - + public ResultUtil AlipayPayment(String code,BigDecimal amount){ + ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, amount.toString(), + "/base/coursePackage/alipayPaymentCallback"); + 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 int PlaypaiGoldPayment(String code,ClasspaymentRequest request){ + PlayPaiGoldCoursePackage paiGoldCoursePackage = new PlayPaiGoldCoursePackage(); + paiGoldCoursePackage.setCoursePackageId(request.getLessonId()); + paiGoldCoursePackage.setStuId(request.getStuId()); + paiGoldCoursePackage.setCoursePayConfigId(request.getCourseConfigId()); + paiGoldCoursePackage.setCode(code); + return couPayClient.paymentWanpaiRenewCourse(paiGoldCoursePackage); } + @Override + public ResultUtil insertVipPaymentCallback(String code, String orderNumber) { + TCoursePackagePayment coursePackagePayment = couPayClient.getCoursePackagePaymentByCode(code); + if(coursePackagePayment.getPayStatus() != 1){ + return ResultUtil.success(); + } + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setOrderNumber(orderNumber); + couPayClient.updatePaymentCoursePackage(coursePackagePayment); + return ResultUtil.success(); + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/CoursePackage.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/CoursePackage.java index 3d6097c..1b31933 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/CoursePackage.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/CoursePackage.java @@ -81,7 +81,7 @@ */ private Integer sort; /** - * 支付方式(1=现金,2=玩湃币) + * 支付方式(1=微信 2=支付宝 3=玩湃币) */ private Integer payType; /** 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 795f430..39fbb54 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 @@ -3,23 +3,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.entity.*; +import com.dsh.course.feignclient.account.AppUserClient; +import com.dsh.course.feignclient.account.model.AppUser; import com.dsh.course.feignclient.model.*; import com.dsh.course.model.BaseVo; import com.dsh.course.model.dto.DiscountJsonDto; import com.dsh.course.model.vo.CourseDetailRequest; import com.dsh.course.model.vo.RegisterCourseVo; -import com.dsh.course.model.vo.request.ClasspaymentRequest; -import com.dsh.course.model.vo.request.CourseOfAfterRequest; -import com.dsh.course.model.vo.request.CourseWithDetailsRequest; -import com.dsh.course.model.vo.request.UpdateCourseVideoStatusRequest; +import com.dsh.course.model.vo.request.*; import com.dsh.course.model.vo.response.AppUserVideoResponse; import com.dsh.course.model.vo.response.CourseDetailsResponse; import com.dsh.course.model.vo.response.CourseOfVideoResponse; import com.dsh.course.service.*; -import com.dsh.course.util.DateUtil; -import com.dsh.course.util.ResultUtil; -import com.dsh.course.util.StrUtils; -import com.dsh.course.util.TokenUtil; +import com.dsh.course.util.*; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; @@ -67,6 +63,9 @@ private CancelledClassesService cacService; @Autowired + private ICoursePackagePaymentConfigService icppcService; + + @Autowired private UserVideoDetailsService uvdsService; @Autowired @@ -82,6 +81,9 @@ @Autowired private CancelledClassesService cancelledClassesService; + + @Autowired + private AppUserClient appuClient; private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); @@ -620,4 +622,61 @@ e.printStackTrace(); } } + + + /** + * 课包续费玩湃币支付 + * @param + */ + @PostMapping("/coursePackagePayment/courseRenewPlayPaiPay") + public int paymentWanpaiRenewCourse(@RequestBody PlayPaiGoldCoursePackage coursePackage){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); + if (null == userIdFormRedis){ + return 2; + } + CoursePackagePaymentConfig paymentConfig = icppcService.getById(coursePackage.getCoursePayConfigId()); + AppUser appUser = appuClient.queryAppUser(userIdFormRedis); + if (appUser.getPlayPaiCoins() < paymentConfig.getPlayPaiCoin()){ + return 3; + } + TCoursePackagePayment packagePayment = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>() + .eq("code",coursePackage.getCode() )); + packagePayment.setPayStatus(2); + packagePayment.setPayUserId(userIdFormRedis); + packagePayment.setClassHours(paymentConfig.getClassHours()); + packagePayment.setPlayPaiCoin(paymentConfig.getPlayPaiCoin()); + packagePayment.setTotalClassHours(paymentConfig.getClassHours()); + packagePayment.setLaveClassHours(paymentConfig.getClassHours()); + packagePaymentService.updateById(packagePayment); + + appUser.setPlayPaiCoins(appUser.getPlayPaiCoins()-paymentConfig.getPlayPaiCoin()); + appuClient.updateAppUser(appUser); + } catch (Exception e) { + return 4; + } + return 1; + } + + @PostMapping("/base/coursePack/getPaymentCoursePackage") + public TCoursePackagePayment getCoursePackagePaymentByCode(@RequestBody String code){ + return packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>() + .eq("code",code)); + } + + @PostMapping("/base/coursePack/delPaymentCoursePackage") + public boolean delPaymentCoursePackage(@RequestBody Integer payId){ + return packagePaymentService.removeById(payId); + } + @PostMapping("/base/coursePack/updatePaymentCoursePackage") + public boolean updatePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment){ + return packagePaymentService.update(packagePayment,new QueryWrapper<TCoursePackagePayment>() + .eq("id",packagePayment.getId())); + } + + @PostMapping("/base/coursePack/savePaymentCoursePackage") + public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment){ + return packagePaymentService.save(packagePayment); + } + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java index 68b1d06..3c6311a 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java @@ -3,6 +3,7 @@ import com.dsh.course.entity.TCoursePackagePayment; import com.dsh.course.feignclient.model.*; +import com.dsh.course.model.vo.request.PlayPaiGoldCoursePackage; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -35,4 +36,23 @@ @PostMapping("/base/coursePack/allPaymentCourseList") public List<TCoursePackagePayment> getAppuserCourseList(@RequestBody Integer appUserId); + + + @PostMapping("/coursePackagePayment/courseRenewPlayPaiPay") + public int paymentWanpaiRenewCourse(@RequestBody PlayPaiGoldCoursePackage coursePackage); + + @PostMapping("/base/coursePack/getPaymentCoursePackage") + public TCoursePackagePayment getCoursePackagePaymentByCode(@RequestBody String payId); + + + @PostMapping("/base/coursePack/delPaymentCoursePackage") + public boolean delPaymentCoursePackage(@RequestBody Integer payId); + + @PostMapping("/base/coursePack/updatePaymentCoursePackage") + public boolean updatePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment); + + + @PostMapping("/base/coursePack/savePaymentCoursePackage") + public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/PlayPaiGoldCoursePackage.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/PlayPaiGoldCoursePackage.java new file mode 100644 index 0000000..37cd6cc --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/PlayPaiGoldCoursePackage.java @@ -0,0 +1,22 @@ +package com.dsh.course.model.vo.request; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PlayPaiGoldCoursePackage { + + @ApiModelProperty(value = "支付配置id") + Integer coursePayConfigId; + + @ApiModelProperty(value = "学员id") + Integer stuId; + + @ApiModelProperty(value = "课包id") + Integer coursePackageId; + + @ApiModelProperty(value = "课包id") + String code; + +} -- Gitblit v1.7.1