From 134d13688e4b6677133ba2d362d2978d8bda2b87 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 12 七月 2023 11:46:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java | 10
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java | 4
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java | 10
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 124 +++
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java | 8
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java | 108 +++
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java | 3
cloud-server-account/src/main/java/com/dsh/account/util/OssUploadUtil.java | 39 +
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/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/feignclient/CoursePaymentClient.java | 23
cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java | 18
cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java | 1
cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java | 114 +++
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java | 10
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 25
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java | 8
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java | 52 +
cloud-server-course/src/main/java/com/dsh/course/model/vo/request/PlayPaiGoldCoursePackage.java | 22
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java | 22
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java | 128 ++++
cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PaymentCompetition.java | 65 ++
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 48 +
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java | 2
cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java | 119 +++
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java | 19
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java | 16
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IndexOfUserBenefirVo.java | 2
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 217 ++++++
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java | 10
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PlayPaiGoldCoursePackage.java | 22
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/CoursePackage.java | 2
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 115 +++
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java | 9
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java | 11
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 | 206 ++++++
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 13
cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java | 9
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 30
42 files changed, 1,736 insertions(+), 117 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..84d79ba 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,19 @@
package com.dsh.account.controller;
+import com.dsh.account.service.RechargeRecordsService;
+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,22 +25,108 @@
public class PaymentCallbackController {
- /**
- * 支付宝支付回调接口
- */
- @PostMapping("/v1")
- public void alipayCallback(){
+ @Autowired
+ private PayMoneyUtil payMoneyUtil;
+ @Autowired
+ private TStudentService tstuService;
+ @Autowired
+ private RechargeRecordsService recordsService;
+
+ /**
+ * 课包续课支付宝支付回调接口
+ */
+ @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();
+ }
}
+ /**
+ * 充值玩湃币支付宝支付回调接口
+ */
+ @PostMapping("/base/recharge/alipayRechargeCallback")
+ public void alipayRechargeCallback(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 = recordsService.addRechargeCallbackPay(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/recharge/wechatRechargeCallback")
+ public void wechatRechargeCallback(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 = recordsService.addRechargeCallbackPay(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/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
index 73175a8..c5fa489 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -17,8 +17,10 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.List;
@@ -92,6 +94,26 @@
detailsVo.setMemberLifespan(format1.format(tAppUser.getVipEndTime()));
}
return ResultUtil.success(detailsVo);
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ }
+
+
+ @ResponseBody
+ @PostMapping("/api/useBenefit/uploadImage")
+ @ApiOperation(value = "上传用户头像", tags = {"APP-使用福利"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(name = "file",value = "图片字节",dataType = "MultipartFile")
+ })
+ public ResultUtil uploadAppUserProfile(MultipartFile file, HttpServletRequest request){
+ try {
+ Integer appUserId = tokenUtil.getUserIdFormRedis();
+ if(null == appUserId){
+ return ResultUtil.tokenErr();
+ }
+ return ResultUtil.success(tauService.uploadAppUserHeadImg(appUserId,file,request));
}catch (Exception e){
return ResultUtil.runErr();
}
@@ -247,8 +269,7 @@
if(null == userIdFormRedis){
return ResultUtil.tokenErr();
}
- // TODO: 2023/7/10 积分商品列表查询
- return ResultUtil.success();
+ return ResultUtil.success(tauService.queryAppUserIntegral(request,userIdFormRedis));
}catch (Exception e){
return ResultUtil.runErr();
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
index bdcab0b..7d045a8 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
@@ -1,9 +1,12 @@
package com.dsh.account.feignclient.activity;
+import com.dsh.account.feignclient.activity.model.CommodityRequest;
import com.dsh.account.feignclient.activity.model.IntegralCommodity;
+import com.dsh.account.feignclient.activity.model.PointsMerchandise;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -14,4 +17,10 @@
public List<IntegralCommodity> getConvertibleGoods();
+ @PostMapping("/base/pointMerchars/getCommoditys")
+ public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request);
+
+ @PostMapping("/base/pointMerchars/getRedeemedNums")
+ public int getRedeemedQuantity(@RequestBody Integer goodId);
+
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
index f336961..ec8eae1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
@@ -1,8 +1,11 @@
package com.dsh.account.feignclient.activity;
+import com.dsh.account.feignclient.activity.model.CommodityRequest;
+import com.dsh.account.model.dto.Coupon;
import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -14,4 +17,12 @@
@PostMapping("/base/userConpon/getStuOfConpons")
public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId);
+
+ @PostMapping("/base/coupon/getAllCoupons")
+ public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request);
+
+
+ @PostMapping("/base/coupon/getRedeemedNums")
+ public int getRedeemedQuantity(@RequestBody Integer id);
+
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java
new file mode 100644
index 0000000..f7f8958
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java
@@ -0,0 +1,16 @@
+package com.dsh.account.feignclient.activity.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class CommodityRequest {
+
+ @ApiModelProperty(value = "经度")
+ private String lon;
+
+ @ApiModelProperty(value = "纬度")
+ private String lat;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java
new file mode 100644
index 0000000..69d9377
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java
@@ -0,0 +1,108 @@
+package com.dsh.account.feignclient.activity.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class PointsMerchandise {
+
+ /**
+ * 主键
+ */
+ private Integer id;
+ /**
+ * 类型(1=实体商品,2=课包商品,3=门票商品)
+ */
+ private Integer type;
+ /**
+ * 商品名称
+ */
+ private String name;
+ /**
+ * 课包id
+ */
+ private Integer coursePackageId;
+ /**
+ * 原价
+ */
+ private BigDecimal price;
+ /**
+ * 兑换方式(1=积分,2=现金+积分)
+ */
+ private Integer redemptionMethod;
+ /**
+ * 所需现金
+ */
+ private BigDecimal cash;
+ /**
+ * 所属积分
+ */
+ private BigDecimal integral;
+ /**
+ * 商品封面
+ */
+ private String cover;
+ /**
+ * 商品图片
+ */
+ private String productImages;
+ /**
+ * 用户人群(1=全部用户,2=年度会员,3=已有学员用户)
+ */
+ private Integer userPopulation;
+ /**
+ * 发放数量
+ */
+ private Integer quantityIssued;
+ /**
+ * 限领数量
+ */
+ private Integer pickUpQuantity;
+ /**
+ * 开始时间
+ */
+ private Date startTime;
+ /**
+ * 结束时间
+ */
+ private Date endTime;
+ /**
+ * 使用范围(1=全国,2=指定城市,3=指定门店)
+ */
+ private Integer useScope;
+ /**
+ * 省
+ */
+ private String province;
+ /**
+ * 省编号
+ */
+ private String provinceCode;
+ /**
+ * 市
+ */
+ private String city;
+ /**
+ * 市编号
+ */
+ private String cityCode;
+ /**
+ * 兑换说明
+ */
+ private String redemptionInstructions;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
index a88b8de..fc6962a 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
@@ -2,6 +2,7 @@
import com.dsh.account.feignclient.competition.model.GetStuSourseList;
+import com.dsh.account.feignclient.competition.model.PaymentCompetition;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -14,4 +15,12 @@
@PostMapping("/base/competition/getCompetitionsDetails")
List<PurchaseRecordVo> getStuSourseList(@RequestBody GetStuSourseList getStuSourseList);
+ @PostMapping("/base/competition/getPayedCompetitions")
+ List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody Integer appUserId);
+
+ @PostMapping("/base/competition/getCancelOrderOfUserPay")
+ public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody Integer appUserId);
+
+ @PostMapping("/base/competition/getPlayPaiFGoldPayRecord")
+ List<PaymentCompetition> getPlayPaiFGoldPayRecord(@RequestBody Integer appUserId);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PaymentCompetition.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PaymentCompetition.java
new file mode 100644
index 0000000..359de61
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PaymentCompetition.java
@@ -0,0 +1,65 @@
+package com.dsh.account.feignclient.competition.model;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/6 16:30
+ */
+@Data
+public class PaymentCompetition {
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 业务流水号
+ */
+ private String code;
+ /**
+ * 赛事id
+ */
+ private Integer competitionId;
+ /**
+ * 用户id
+ */
+ private Integer appUserId;
+ /**
+ * 支付方式(1=微信,2=支付宝,3=玩湃币,4=课时)
+ */
+ private Integer payType;
+ /**
+ * 支付金额
+ */
+ private Double amount;
+ /**
+ * 支付状态(1=待支付,2=已支付,3=已退款)
+ */
+ private Integer payStatus;
+ /**
+ * 支付时间
+ */
+ private Date payTime;
+ /**
+ * 第三方支付流水号
+ */
+ private String payOrderNo;
+ /**
+ * 退款时间
+ */
+ private Date refundTime;
+ /**
+ * 第三方退款流水
+ */
+ private String refundOrderNo;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java
new file mode 100644
index 0000000..c788428
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java
@@ -0,0 +1,22 @@
+package com.dsh.account.feignclient.course;
+
+import com.dsh.account.feignclient.course.model.CoursePackage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/5 9:55
+ */
+@FeignClient("mb-cloud-course")
+public interface CoursePackageClient {
+
+
+ /**
+ * 根据id获取课包
+ * @param id
+ * @return
+ */
+ @PostMapping("/coursePackage/queryCoursePackageById")
+ CoursePackage queryCoursePackageById(Integer id);
+}
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..2e0b74f 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,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 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);
+
+ @PostMapping("/base/coursePack/allAmountPayRecordOfUser")
+ public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody Integer appUserId);
+
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java
new file mode 100644
index 0000000..4f54cd2
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java
@@ -0,0 +1,128 @@
+package com.dsh.account.feignclient.course.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/5 9:56
+ */
+@Data
+public class CoursePackage {
+ private Integer id;
+ /**
+ * 省
+ */
+ private String province;
+ /**
+ * 省编号
+ */
+ private String provinceCode;
+ /**
+ * 市
+ */
+ private String city;
+ /**
+ * 市编号
+ */
+ private String cityCode;
+ /**
+ * 门店id
+ */
+ private Integer storeId;
+ /**
+ * 课包类型id
+ */
+ private Integer coursePackageTypeId;
+ /**
+ * 课包名称
+ */
+ private String name;
+ /**
+ * 上课场地id
+ */
+ private Integer siteId;
+ /**
+ * 教练id
+ */
+ private Integer coachId;
+ /**
+ * 最多预约人数
+ */
+ private Integer maxSubscribeNumber;
+ /**
+ * 上课开始时间
+ */
+ private String classStartTime;
+ /**
+ * 上课结束时段
+ */
+ private String classEndTime;
+ /**
+ * 上课周,多个分号分隔
+ */
+ private String classWeeks;
+ /**
+ * 封面图
+ */
+ private String coverDrawing;
+ /**
+ * 详情图
+ */
+ private String detailDrawing;
+ /**
+ * 介绍图
+ */
+ private String introduceDrawing;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 支付方式(1=现金,2=玩湃币)
+ */
+ private Integer payType;
+ /**
+ * 有效天数
+ */
+ private Integer validDays;
+ /**
+ * 课后练习课程id
+ */
+ private Integer courseId;
+ /**
+ * 课后练习视频介绍
+ */
+ private String introduce;
+ /**
+ * 完成课后练习获取积分
+ */
+ private Integer integral;
+ /**
+ * 课程状态(1=未开始,2=进行中,3=已结束,4=已取消)
+ */
+ private Integer status;
+ /**
+ * 审核状态(1=待审核,2=已同意,3=已拒绝)
+ */
+ private Integer auditStatus;
+ /**
+ * 审核人id
+ */
+ private Integer auditUserId;
+ /**
+ * 审核备注
+ */
+ private String authRemark;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date insertTime;
+}
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/dto/Coupon.java b/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java
new file mode 100644
index 0000000..81fecae
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java
@@ -0,0 +1,119 @@
+package com.dsh.account.model.dto;
+
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class Coupon {
+ /**
+ * 主键
+ */
+ private Integer id;
+ /**
+ * 优惠券名称
+ */
+ private String name;
+ /**
+ * 优惠券类型(1=满减券,2=代金券,3=体验券)
+ */
+ private Integer type;
+ /**
+ * 优惠券规则JSON
+ */
+ private String content;
+ /**
+ * 优惠券说明
+ */
+ private String illustrate;
+ /**
+ * 发放方式(1=积分购买,2=注册赠送,3=自动发券)
+ */
+ private Integer distributionMethod;
+ /**
+ * 兑换方式(1=积分,2=积分+现金)
+ */
+ private Integer redemptionMethod;
+ /**
+ * 所需现金
+ */
+ private BigDecimal cash;
+ /**
+ * 所属积分
+ */
+ private BigDecimal integral;
+ /**
+ * 用户人群(1=全部用户,2=年度会员,3=已有学员用户)
+ */
+ private Integer userPopulation;
+ /**
+ * 发放数量
+ */
+ private Integer quantityIssued;
+ /**
+ * 限领数量
+ */
+ private Integer pickUpQuantity;
+ /**
+ * 开始时间
+ */
+ private Date startTime;
+ /**
+ * 结束时间
+ */
+ private Date endTime;
+ /**
+ * 使用范围(1=全国,2=指定城市,3=指定门店)
+ */
+ private Integer useScope;
+ /**
+ * 省
+ */
+ private String province;
+ /**
+ * 省编号
+ */
+ private String provinceCode;
+ /**
+ * 市
+ */
+ private String city;
+ /**
+ * 市编号
+ */
+ private String cityCode;
+ /**
+ * 审核状态(1=待审核,2=已通过,3=已拒绝)
+ */
+ private Integer auditStatus;
+ /**
+ * 审核人id
+ */
+ private Integer auditUserId;
+ /**
+ * 审核备注
+ */
+ private String auditRemark;
+ /**
+ * 状态(1=未开始,2=已开始,3=已结束,4=已取消)
+ */
+ private Integer status;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+ /**
+ * 封面图
+ */
+ private String cover;
+ /**
+ * 图片
+ */
+ private String productImages;
+}
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/model/vo/userBenefitDetail/IndexOfUserBenefirVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IndexOfUserBenefirVo.java
index a766f2f..c2abae4 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IndexOfUserBenefirVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IndexOfUserBenefirVo.java
@@ -16,7 +16,7 @@
@ApiModelProperty(value = "用户名称")
private String userName;
- @ApiModelProperty(value = "是否年度会员")
+ @ApiModelProperty(value = "是否年度会员(字符:年度会员 或者 普通用户)")
private String isMember;
@ApiModelProperty(value = "玩湃币")
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java
index 287f537..68cc3f3 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java
@@ -35,18 +35,24 @@
@ApiModelProperty(value = "商品名称")
private String goodName;
+ @ApiModelProperty(value = "1积分 2现金+积分")
+ private Integer condition;
+
@ApiModelProperty(value = "金额")
private BigDecimal amount;
@ApiModelProperty(value = "积分")
private Integer integral;
- @ApiModelProperty(value = "适用范围: 1 仅限会员 2仅限学员 3全部用户")
+ @ApiModelProperty(value = "适用范围: 1全部用户 2仅限会员 3仅限学员")
private Integer belongsType;
@ApiModelProperty(value = "商品类型: 1实物 2课包 3门票 4优惠券")
private Integer goodsType;
+ @ApiModelProperty(value = "已兑换数量")
+ private Integer nums;
+
}
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java b/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java
index 3c920de..c1e0f4d 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java
@@ -20,4 +20,5 @@
ResultUtil rechargeCenPayment(Integer userIdFormRedis, RechargePayRequest request);
+ ResultUtil addRechargeCallbackPay(String code, String orderNumber);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
index 5b897dc..e63f6f4 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -7,11 +7,11 @@
import com.dsh.account.model.LoginSMSCodeVo;
import com.dsh.account.model.LoginWeChatVo;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
-import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo;
-import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo;
-import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo;
+import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.util.ResultUtil;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@@ -107,7 +107,7 @@
/**
* 获取用户账单列表
* @param yearMonth 年月
- * @param recordId 记录id
+ * @param recordId 记录
* @return
*/
BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId,Integer appUserId);
@@ -119,4 +119,9 @@
void cancellation(Integer appUserId);
List<RechargeCentVo> getSysRechargeConfig(Integer appUserId);
+
+ PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis);
+
+ ResultUtil uploadAppUserHeadImg(Integer appUserId, MultipartFile file, HttpServletRequest request);
+
}
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/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
index 511f7f2..0c946de 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
@@ -5,15 +5,20 @@
import com.dsh.account.entity.RechargeRecords;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.enums.RechargeRecordEnum;
+import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
+import com.dsh.account.feignclient.competition.model.PaymentCompetition;
import com.dsh.account.feignclient.course.CoursePaymentClient;
import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
+import com.dsh.account.feignclient.other.RechargeConfigClient;
import com.dsh.account.mapper.RechargeRecordsMapper;
import com.dsh.account.mapper.TAppUserMapper;
import com.dsh.account.model.vo.userBenefitDetail.RechargeDetailsVo;
import com.dsh.account.model.vo.userBenefitDetail.RechargePayRequest;
import com.dsh.account.service.RechargeRecordsService;
import com.dsh.account.util.DateTimeHelper;
+import com.dsh.account.util.PayMoneyUtil;
import com.dsh.account.util.ResultUtil;
+import com.dsh.account.util.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -24,6 +29,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -45,6 +51,16 @@
@Autowired
private CoursePaymentClient cpClient;
+
+ @Autowired
+ private DeductionCompetitionsClient deducClient;
+
+ @Autowired
+ private PayMoneyUtil payMoneyUtil;
+
+
+ @Resource
+ private RechargeConfigClient reconMapper;
@Override
@@ -70,7 +86,16 @@
vo.setWpGold(0);
}
// 1.赛事报名
-
+ List<PaymentCompetition> playPaiFGoldPayRecord = deducClient.getPlayPaiFGoldPayRecord(appUserId);
+ if (playPaiFGoldPayRecord.size() > 0 ){
+ for (PaymentCompetition competition : playPaiFGoldPayRecord) {
+ RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail();
+ consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg() );
+ consumeDetail.setConsumeTime(simpleDateFormat.format(competition.getInsertTime()));
+ consumeDetail.setConsumeAmount("-" + competition.getAmount());
+ details.add(consumeDetail);
+ }
+ }
// 2.课包购买
List<TCoursePackagePayment> appuserCourseList = cpClient.getAppuserCourseList(appUserId);
if (appuserCourseList.size() > 0){
@@ -86,7 +111,7 @@
// 4.智慧球场
// 5.充值
- List<RechargeRecords> rechargeRecords = rereMapper.selectList(new QueryWrapper<RechargeRecords>()
+ List<RechargeRecords> rechargeRecords = this.baseMapper.selectList(new QueryWrapper<RechargeRecords>()
.eq("payStatus", 2)
.eq("appUserId", appUserId)
.between("insertTime", monthStart, monthEnd));
@@ -105,27 +130,178 @@
@Override
public ResultUtil rechargeCenPayment(Integer userIdFormRedis, RechargePayRequest request) {
- // TODO: 2023/7/10 充值支付
- switch (request.getPayType()){
- case 1:
- WeChatPayment(request.getPayAmount());
- break;
- case 2:
- AlipayPayment(request.getPayAmount());
- break;
- default:
- break;
+ TAppUser tAppUser = tappMapper.selectById(userIdFormRedis);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+ RechargeRecords rechargeRecords = new RechargeRecords();
+ rechargeRecords.setCode(code);
+ rechargeRecords.setAppUserId(userIdFormRedis);
+ rechargeRecords.setAmount(request.getPayAmount());
+ List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig();
+ if (rechargeConfig.size() > 0){
+ for (Map<String, Object> stringObjectMap : rechargeConfig) {
+ Object o = stringObjectMap.get("money");
+ if (o.equals(request.getPayAmount())){
+ if (tAppUser.getIsVip() == 1){
+ rechargeRecords.setPlayPaiCoins((Integer) stringObjectMap.get("MemberCoins"));
+ }else {
+ rechargeRecords.setPlayPaiCoins((Integer) stringObjectMap.get("usersCoins"));
+ }
+ }
+ }
+ }
+ rechargeRecords.setPayStatus(1);
+ rechargeRecords.setState(1);
+ rechargeRecords.setInsertTime(new Date());
+ this.baseMapper.insert(rechargeRecords);
+ try {
+ switch (request.getPayType()){
+ case 1:
+ return WeChatPayment(code,request.getPayAmount());
+ case 2:
+ return AlipayPayment(code,request.getPayAmount());
+ default:
+ break;
+ }
+ }catch (Exception e){
+ ResultUtil.runErr();
}
return ResultUtil.success();
}
- private void AlipayPayment(BigDecimal payAmount) {
+
+ private ResultUtil AlipayPayment(String code,BigDecimal amount) {
+ ResultUtil alipay = payMoneyUtil.alipay("玩湃币充值", "", "", code, amount.toString(),
+ "/base/recharge/alipayRechargeCallback");
+ 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);
+
+ RechargeRecords records = rereMapper.selectOne(new QueryWrapper<RechargeRecords>()
+ .eq("code",code));
+ if(records.getPayStatus() == 2){
+ break;
+ }
+ ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
+ if(resultUtil.getCode() == 200 && records.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){
+ records.setState(3);
+ rereMapper.deleteById(records.getId());
+ break;
+ }
+ if("TRADE_SUCCESS".equals(s)){
+ records.setPayStatus(2);
+ records.setOrderNumber(tradeNo);
+ rereMapper.updateById(records);
+ break;
+ }
+ if("WAIT_BUYER_PAY".equals(s)){
+ num++;
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ }
+ return alipay;
+ }
+
+ private ResultUtil WeChatPayment(String code,BigDecimal amount) throws Exception {
+ ResultUtil weixinpay = payMoneyUtil.weixinpay("玩湃币充值", "", code, amount.toString(),
+ "/base/recharge/wechatRechargeCallback", "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);
+ RechargeRecords records = rereMapper.selectOne(new QueryWrapper<RechargeRecords>()
+ .eq("code",code));
+ if(records.getPayStatus() == 2){
+ break;
+ }
+ ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
+ if(resultUtil.getCode() == 200 && records.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){
+ records.setState(3);
+ rereMapper.deleteById(records.getId());
+ break;
+ }
+ if("SUCCESS".equals(s)){
+ records.setPayStatus(2);
+ records.setOrderNumber(transaction_id);
+ rereMapper.updateById(records);
+ break;
+ }
+ if("USERPAYING".equals(s)){
+ num++;
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ }
+ return weixinpay;
}
- private void WeChatPayment(BigDecimal payAmount) {
+ @Override
+ public ResultUtil addRechargeCallbackPay(String code, String orderNumber) {
+ RechargeRecords rechargeRecords = this.baseMapper.selectOne(new QueryWrapper<RechargeRecords>()
+ .eq("code", code));
+ if (rechargeRecords.getPayStatus() == 2){
+ return ResultUtil.success();
+ }
+ rechargeRecords.setPayStatus(2);
+ rechargeRecords.setPayTime(new Date());
+ rechargeRecords.setOrderNumber(orderNumber);
+ this.baseMapper.updateById(rechargeRecords);
-
+ TAppUser tAppUser = tappMapper.selectById(rechargeRecords.getAppUserId());
+ tAppUser.setPlayPaiCoins(null == tAppUser.getPlayPaiCoins()? rechargeRecords.getPlayPaiCoins(): tAppUser.getPlayPaiCoins() +rechargeRecords.getPlayPaiCoins() );
+ tappMapper.updateById(tAppUser);
+ return null;
}
+
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 4e6c0fb..80663ea 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -9,10 +9,14 @@
import com.dsh.account.entity.VipPayment;
import com.dsh.account.enums.RechargeRecordEnum;
import com.dsh.account.feignclient.activity.MerChandiseClient;
+import com.dsh.account.feignclient.activity.UserConponClient;
+import com.dsh.account.feignclient.activity.model.CommodityRequest;
+import com.dsh.account.feignclient.activity.model.PointsMerchandise;
+import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
+import com.dsh.account.feignclient.competition.model.PaymentCompetition;
+import com.dsh.account.feignclient.course.CoursePackageClient;
import com.dsh.account.feignclient.course.CoursePaymentClient;
-import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
-import com.dsh.account.feignclient.course.model.QueryStoreList;
-import com.dsh.account.feignclient.course.model.StuCourseResp;
+import com.dsh.account.feignclient.course.model.*;
import com.dsh.account.feignclient.other.ImgConfigClient;
import com.dsh.account.feignclient.other.RechargeConfigClient;
import com.dsh.account.feignclient.other.StoreClient;
@@ -26,14 +30,13 @@
import com.dsh.account.model.JoinPlayPaiVo;
import com.dsh.account.model.LoginSMSCodeVo;
import com.dsh.account.model.LoginWeChatVo;
+import com.dsh.account.model.dto.Coupon;
import com.dsh.account.model.vo.classDetails.CourseVenue;
import com.dsh.account.model.vo.classDetails.ExerciseVideo;
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
import com.dsh.account.model.vo.classDetails.WeekedCourse;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
-import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo;
-import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo;
-import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo;
+import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.util.*;
import com.dsh.account.util.akeylogin.Md5Util;
@@ -41,13 +44,13 @@
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -100,6 +103,15 @@
@Resource
private RechargeConfigClient reconMapper;
+
+ @Resource
+ private UserConponClient ucponClient;
+
+ @Resource
+ private CoursePackageClient cpageClient;
+
+ @Resource
+ private DeductionCompetitionsClient deducClient;
@Override
public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) {
@@ -490,11 +502,41 @@
monthEnd = DateTimeHelper.getCurrentMouthEnd();
}
// 1.赛事报名
-// 2.课包购买
-
-// 3.场地预约
-// 4.智慧球场
-// 5.年度会员
+ List<PaymentCompetition> allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(appUserId);
+ if (allCompetitionPayRecord.size() > 0 ){
+ for (PaymentCompetition paymentCompetition : allCompetitionPayRecord) {
+ BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
+ consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg());
+ consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime()));
+ consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount());
+ details.add(consumeDetail);
+ }
+ }
+// 2.取消赛事报名
+ List<PaymentCompetition> cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(appUserId);
+ if (cancelOrderOfUserPayRecord.size() > 0 ){
+ for (PaymentCompetition paymentCompetition : cancelOrderOfUserPayRecord) {
+ BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
+ consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg());
+ consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime()));
+ consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount());
+ details.add(consumeDetail);
+ }
+ }
+// 3.课包购买
+ List<TCoursePackagePayment> amountPayRecord = paymentClient.getAmountPayRecord(appUserId);
+ if (amountPayRecord.size() > 0 ){
+ for (TCoursePackagePayment coursePackagePayment : amountPayRecord) {
+ BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
+ consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg());
+ consumeDetail.setConsumeTime(simpleDateFormat.format(coursePackagePayment.getInsertTime()));
+ consumeDetail.setConsumeAmount("-" + coursePackagePayment.getCashPayment());
+ details.add(consumeDetail);
+ }
+ }
+// 4.场地预约
+// 5.智慧球场
+// 6.年度会员
List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>()
.eq("payStatus", 2)
.eq("appUserId", appUserId)
@@ -504,11 +546,10 @@
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.getMsg());
consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime()));
- consumeDetail.setConsumeAmount("+" + vipPayment.getAmount());
+ consumeDetail.setConsumeAmount("-" + vipPayment.getAmount());
details.add(consumeDetail);
}
}
-// 6.续课
// 7.充值
List<RechargeRecords> rechargeRecords = rrMapper.selectList(new QueryWrapper<RechargeRecords>()
.eq("payStatus", 2)
@@ -519,7 +560,7 @@
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins());
consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime()));
- consumeDetail.setConsumeAmount("+" + rechargeRecord.getAmount());
+ consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount());
details.add(consumeDetail);
}
}
@@ -557,4 +598,144 @@
return centVos;
}
+ @Override
+ public PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis) {
+ PointMallDetailsResponse detailsResponse = new PointMallDetailsResponse();
+ List<PointMallDetailsResponse.Goods> goods = new ArrayList<>();
+
+ TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis);
+ detailsResponse.setName(tAppUser.getName());
+ detailsResponse.setIntegral(tAppUser.getIntegral());
+ detailsResponse.setHeadImg(tAppUser.getHeadImg());
+
+ CommodityRequest commodityRequest = new CommodityRequest();
+ commodityRequest.setLon(request.getLon());
+ commodityRequest.setLat(request.getLat());
+ List<PointsMerchandise> vicinityGoods = mcClient.getVicinityGoods(commodityRequest);
+ if (vicinityGoods.size() > 0) {
+ for (PointsMerchandise vicinityGood : vicinityGoods) {
+ PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods();
+ switch (vicinityGood.getType()) {
+ case 1:
+ commodity.setGoodId(vicinityGood.getId());
+ commodity.setGoodName(vicinityGood.getName());
+ commodity.setGoodImg(vicinityGood.getCover());
+ commodity.setCondition(vicinityGood.getRedemptionMethod());
+ if (vicinityGood.getRedemptionMethod() == 1) {
+ commodity.setIntegral(vicinityGood.getIntegral().intValue());
+ } else {
+ commodity.setIntegral(vicinityGood.getIntegral().intValue());
+ commodity.setAmount(vicinityGood.getCash());
+ }
+ commodity.setBelongsType(vicinityGood.getUserPopulation());
+ commodity.setGoodsType(1);
+ commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
+ break;
+ case 2:
+ commodity.setGoodId(vicinityGood.getCoursePackageId());
+ CoursePackage coursePackage = cpageClient.queryCoursePackageById(vicinityGood.getCoursePackageId());
+ commodity.setGoodImg(coursePackage.getCoverDrawing());
+ commodity.setGoodName(coursePackage.getName());
+ commodity.setCondition(vicinityGood.getRedemptionMethod());
+ if (vicinityGood.getRedemptionMethod() == 1) {
+ commodity.setIntegral(vicinityGood.getIntegral().intValue());
+ } else {
+ commodity.setIntegral(vicinityGood.getIntegral().intValue());
+ commodity.setAmount(vicinityGood.getCash());
+ }
+ commodity.setBelongsType(vicinityGood.getUserPopulation());
+ commodity.setGoodsType(2);
+ commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
+ break;
+ case 3:
+ commodity.setGoodId(vicinityGood.getId());
+ commodity.setGoodName(vicinityGood.getName());
+ commodity.setGoodImg(vicinityGood.getCover());
+ commodity.setCondition(vicinityGood.getRedemptionMethod());
+ if (vicinityGood.getRedemptionMethod() == 1) {
+ commodity.setIntegral(vicinityGood.getIntegral().intValue());
+ } else {
+ commodity.setIntegral(vicinityGood.getIntegral().intValue());
+ commodity.setAmount(vicinityGood.getCash());
+ }
+ commodity.setBelongsType(vicinityGood.getUserPopulation());
+ commodity.setGoodsType(3);
+ commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
+ break;
+ default:
+ break;
+ }
+ goods.add(commodity);
+ }
+ }
+ List<Coupon> allCoupons = ucponClient.getAllCoupons(commodityRequest);
+ if (allCoupons.size() > 0) {
+ for (Coupon allCoupon : allCoupons) {
+ PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods();
+ commodity.setGoodId(allCoupon.getId());
+ commodity.setGoodName(allCoupon.getName());
+ commodity.setCondition(allCoupon.getRedemptionMethod());
+ commodity.setGoodImg(allCoupon.getCover());
+ if (allCoupon.getRedemptionMethod() == 1) {
+ commodity.setIntegral(allCoupon.getIntegral().intValue());
+ } else {
+ commodity.setIntegral(allCoupon.getIntegral().intValue());
+ commodity.setAmount(allCoupon.getCash());
+ }
+ commodity.setBelongsType(allCoupon.getUserPopulation());
+ commodity.setGoodsType(4);
+ commodity.setNums(ucponClient.getRedeemedQuantity(allCoupon.getId()));
+ goods.add(commodity);
+ }
+ }
+ if (StringUtils.hasText(request.getSearch())){
+ goods = goods.stream()
+ .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch()))
+ .collect(Collectors.toList());
+ }
+ if (null != request.getRank()){
+ switch (request.getRank()){
+ case 1:
+ goods = goods.stream()
+ .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral).reversed())
+ .collect(Collectors.toList());
+ break;
+ case 2:
+ goods = goods.stream()
+ .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral))
+ .collect(Collectors.toList());
+ break;
+ case 3:
+ goods = goods.stream()
+ .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getNums).reversed())
+ .collect(Collectors.toList());
+ break;
+ default:
+ break;
+ }
+
+ }
+ if (null != request.getGoodsType()){
+ goods = goods.stream()
+ .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType()))
+ .collect(Collectors.toList());
+ }
+ detailsResponse.setGoods(goods);
+ return detailsResponse;
+ }
+
+ @Override
+ public ResultUtil uploadAppUserHeadImg(Integer appUserId, MultipartFile file, HttpServletRequest request) {
+ try {
+ String filePath = OssUploadUtil.ossUpload(request,file);
+ TAppUser tAppUser = this.baseMapper.selectById(appUserId);
+ tAppUser.setHeadImg(filePath);
+ this.baseMapper.updateById(tAppUser);
+ } catch (IOException e) {
+ ResultUtil.error("头像上传失败!");
+ }
+
+ return ResultUtil.success();
+ }
+
}
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-account/src/main/java/com/dsh/account/util/OssUploadUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/OssUploadUtil.java
new file mode 100644
index 0000000..5d7b3a7
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/OssUploadUtil.java
@@ -0,0 +1,39 @@
+package com.dsh.account.util;
+
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.ObjectMetadata;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.UUID;
+
+public class OssUploadUtil {
+ //OSS图片访问域名
+ public static String oss_domain = "https://newok.oss-cn-shenzhen.aliyuncs.com/";
+ public static String accessKeyId = "LTAI4G9Zez9H4B36vakPXGy4";
+ public static String accessKeySecret = "BOVPUeZndKVbrPOq6Ef5j6oiydB3XZ";
+ public static String bucketName="newok";
+ public static String endpoint = "oss-cn-shenzhen.aliyuncs.com";
+
+ public static OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
+
+ public static String ossUpload(HttpServletRequest request, MultipartFile file) throws IOException{
+ //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile;
+ String fileName = "";
+ if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){
+ InputStream content = file.getInputStream();//获得指定文件的输入流
+ ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
+ meta.setContentLength(file.getSize()); // 必须设置ContentLength
+ String originalFilename = file.getOriginalFilename();
+ fileName = UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length());
+ ossClient.putObject(bucketName,"img/"+fileName,content,meta);// 上传Object.
+ if(fileName != null && !"".equals(fileName)){
+ System.out.println(fileName);
+ fileName = oss_domain+"img/"+fileName;
+ }
+ }
+ return fileName;
+ }
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
index c1fceaf..a3feebf 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -1,11 +1,15 @@
package com.dsh.activity.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.Coupon;
+import com.dsh.activity.entity.UserCoupon;
import com.dsh.activity.model.CouponListVo;
+import com.dsh.activity.model.request.CommodityRequest;
import com.dsh.activity.model.request.CouponPackageReq;
import com.dsh.activity.model.response.CouponPackageResp;
import com.dsh.activity.service.ICouponService;
import com.dsh.activity.service.UserCouponService;
+import com.dsh.activity.util.GDMapGeocodingUtil;
import com.dsh.activity.util.ResultUtil;
import com.dsh.activity.util.TokenUtil;
import io.swagger.annotations.ApiImplicitParam;
@@ -14,7 +18,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
/**
* @author zhibing.pu
@@ -32,6 +39,9 @@
@Autowired
private UserCouponService ucService;
+
+ @Autowired
+ private GDMapGeocodingUtil gdMapGeocodingUtil;
@@ -103,4 +113,46 @@
}
}
+
+ @PostMapping("/base/coupon/getAllCoupons")
+ public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request){
+ String provinceCode = "";
+ String cityCode = "";
+ try {
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
+ provinceCode = geocode.get("provinceCode");
+ cityCode = geocode.get("cityCode");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ try {
+ Integer userAppId = tokenUtil.getUserIdFormRedis();
+ List<UserCoupon> list = ucService.list(new QueryWrapper<UserCoupon>()
+ .eq("userId",userAppId ));
+ List<Coupon> couponList = couponService.list(new QueryWrapper<Coupon>()
+ .eq("auditStatus",2)
+ .eq("state",1)
+ .eq("status",2));
+ if (couponList.size() > 0 ){
+ Iterator<Coupon> iterator = couponList.iterator();
+ while (iterator.hasNext()) {
+ Coupon merchandise = iterator.next();
+ if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) {
+ iterator.remove(); // 移除符合条件的商品
+ }
+ }
+ }
+ return couponList;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ @PostMapping("/base/coupon/getRedeemedNums")
+ public int getRedeemedQuantity(@RequestBody Integer id){
+ return ucService.count(new QueryWrapper<UserCoupon>()
+ .eq("couponId",id));
+ }
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index 9e61d1e..e326ec9 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -3,16 +3,19 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.PointsMerchandise;
+import com.dsh.activity.entity.UserPointsMerchandise;
import com.dsh.activity.feignclient.model.IntegralCommodity;
+import com.dsh.activity.model.request.CommodityRequest;
import com.dsh.activity.service.PointsMerchandiseService;
+import com.dsh.activity.service.UserPointsMerchandiseService;
+import com.dsh.activity.util.GDMapGeocodingUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
@RestController
@RequestMapping("")
@@ -21,6 +24,12 @@
@Autowired
private PointsMerchandiseService pmdsService;
+
+ @Autowired
+ private GDMapGeocodingUtil gdMapGeocodingUtil;
+
+ @Autowired
+ private UserPointsMerchandiseService upmseService;
@@ -43,4 +52,37 @@
return commodity;
}
+
+ @PostMapping("/base/pointMerchars/getCommoditys")
+ public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request){
+ String provinceCode = "";
+ String cityCode = "";
+ try {
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
+ provinceCode = geocode.get("provinceCode");
+ cityCode = geocode.get("cityCode");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ List<PointsMerchandise> list = pmdsService.list(new QueryWrapper<PointsMerchandise>()
+ .eq("state", 1));
+ if (list.size() > 0 ){
+ Iterator<PointsMerchandise> iterator = list.iterator();
+ while (iterator.hasNext()) {
+ PointsMerchandise merchandise = iterator.next();
+ if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) {
+ iterator.remove(); // 移除符合条件的商品
+ }
+ }
+ }
+ return list;
+ }
+
+ @PostMapping("/base/pointMerchars/getRedeemedNums")
+ public int getRedeemedQuantity(@RequestBody Integer goodId){
+ return upmseService.count(new QueryWrapper<UserPointsMerchandise>()
+ .eq("pointsMerchandiseId",goodId));
+ }
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
index fe57f32..02e3e18 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
@@ -158,6 +158,16 @@
@TableField("insertTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date insertTime;
+ /**
+ * 封面图
+ */
+ @TableField("cover")
+ private String cover;
+ /**
+ * 图片
+ */
+ @TableField("productImages")
+ private String productImages;
@Override
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java
index 41d7f40..fe612bd 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java
@@ -1,9 +1,12 @@
package com.dsh.activity.feignclient;
+import com.dsh.activity.entity.PointsMerchandise;
import com.dsh.activity.feignclient.model.IntegralCommodity;
+import com.dsh.activity.model.request.CommodityRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -13,5 +16,10 @@
@PostMapping("/base/pointMerchars/convertGoods")
public List<IntegralCommodity> getConvertibleGoods();
+ @PostMapping("/base/pointMerchars/getCommoditys")
+ public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request);
+
+ @PostMapping("/base/pointMerchars/getRedeemedNums")
+ public int getRedeemedQuantity(@RequestBody Integer goodId);
}
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 c13d4af..496b9c8 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
@@ -1,8 +1,11 @@
package com.dsh.activity.feignclient;
+import com.dsh.activity.entity.Coupon;
import com.dsh.activity.feignclient.model.CouponStuAvailableVo;
+import com.dsh.activity.model.request.CommodityRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -14,4 +17,11 @@
@PostMapping("/base/userConpon/getStuOfConpons")
public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId);
+ @PostMapping("/base/coupon/getAllCoupons")
+ public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request);
+
+
+ @PostMapping("/base/coupon/getRedeemedNums")
+ public int getRedeemedQuantity(@RequestBody Integer id);
+
}
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-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java
new file mode 100644
index 0000000..e98eb6d
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java
@@ -0,0 +1,18 @@
+package com.dsh.activity.model.request;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CommodityRequest {
+
+ @ApiModelProperty(value = "经度")
+ private String lon;
+
+ @ApiModelProperty(value = "纬度")
+ private String lat;
+
+
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
index dfbb732..2ba5aa7 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -63,8 +63,38 @@
private IPaymentCompetitionService paymentCompetitionService;
+ @PostMapping("/base/competition/getPayedCompetitions")
+ public List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody Integer appUserId){
+ List<Integer> integers = new ArrayList<>();
+ integers.add(1);
+ integers.add(2);
+ return paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>()
+ .in("payType",integers)
+ .eq("appUserId",appUserId)
+ .eq("payStatus",2));
+ }
+ @PostMapping("/base/competition/getCancelOrderOfUserPay")
+ public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody Integer appUserId){
+ List<Integer> integers = new ArrayList<>();
+ integers.add(1);
+ integers.add(2);
+ return paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>()
+ .in("payType",integers)
+ .eq("appUserId",appUserId)
+ .eq("payStatus",3));
+ }
+
+
+ @PostMapping("/base/competition/getPlayPaiFGoldPayRecord")
+ public List<PaymentCompetition> getPlayPaiFGoldPayRecord(@RequestBody Integer appUserId){
+ return paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>()
+ .eq("payType",3)
+ .eq("appUserId",appUserId)
+ .eq("payStatus",3));
+ }
+
@PostMapping("/base/competition/getCompetitionsDetails")
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
index e23d5b5..c7292bb 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
@@ -1,6 +1,7 @@
package com.dsh.competition.feignclient;
+import com.dsh.competition.entity.PaymentCompetition;
import com.dsh.competition.feignclient.model.GetStuSourseList;
import com.dsh.competition.feignclient.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
@@ -15,4 +16,13 @@
@PostMapping("/base/competition/getCompetitionsDetails")
public List<PurchaseRecordVo> getStuSourseList(@RequestBody GetStuSourseList sourseList);
+ @PostMapping("/base/competition/getPayedCompetitions")
+ List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody Integer appUserId);
+
+ @PostMapping("/base/competition/getCancelOrderOfUserPay")
+ public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody Integer appUserId);
+
+ @PostMapping("/base/competition/getPlayPaiFGoldPayRecord")
+ List<PaymentCompetition> getPlayPaiFGoldPayRecord(@RequestBody Integer appUserId);
+
}
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 90843b4..2159d03 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
@@ -56,7 +56,9 @@
@ApiOperation(value = "本周福利-限时折扣列表", tags = {"APP-使用福利"})
@ApiImplicitParams({
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
- @ApiImplicitParam(name = "discountType",value = "默认显示 限时折扣 (1限时折扣 2赠送课时)")
+ @ApiImplicitParam(name = "discountType",value = "默认显示 限时折扣 (1限时折扣 2赠送课时)",dataType = "int"),
+ @ApiImplicitParam(name = "lon",value = "经度",dataType = "String"),
+ @ApiImplicitParam(name = "lat",value = "纬度",dataType = "String"),
})
public ResultUtil<WeekLimitedResponse> thisWeeksBenefitList(Integer discountType,String lon,String lat){
try {
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 1b0d7a6..574528c 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
@@ -2,29 +2,20 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.dsh.course.entity.TCoursePackage;
-import com.dsh.course.entity.TCoursePackageDiscount;
-import com.dsh.course.entity.TCoursePackagePayment;
-import com.dsh.course.entity.TCoursePackageType;
import com.dsh.course.entity.*;
-import com.dsh.course.feignclient.account.StudentClient;
+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;
@@ -72,6 +63,17 @@
private CancelledClassesService cacService;
@Autowired
+ private ICoursePackagePaymentConfigService icppcService;
+
+ @Autowired
+ private UserVideoDetailsService uvdsService;
+
+ @Autowired
+ private TCourseService tcService;
+
+
+
+ @Autowired
private TCoursePackageTypeService coursePackageTypeService;
@Autowired
@@ -79,6 +81,9 @@
@Autowired
private CancelledClassesService cancelledClassesService;
+
+ @Autowired
+ private AppUserClient appuClient;
private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
@@ -304,11 +309,23 @@
@PostMapping("/base/coursePack/afterCourseTwos")
public List<AfterVideoVo> getAfterCourseTwos(@RequestParam("appUserId") Integer appUserId){
List<AfterVideoVo> videoVos = new ArrayList<>();
- List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
- .eq("appUserId", appUserId));
- List<Integer> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
-// List<PostCourseVideo> videoList = pcvService.queryAllVideoNoneShow(coursePackageIds);
- // TODO: 2023/7/6 两个课后视频
+ List<UserVideoDetails> list = uvdsService.list(new QueryWrapper<UserVideoDetails>()
+ .eq("appUserId",appUserId)
+ .eq("state",1));
+ if (list.size() > 0 ){
+ List<Integer> courseIds = list.stream().map(UserVideoDetails::getCourseId).collect(Collectors.toList());
+ List<TCourse> courseList = tcService.list(new QueryWrapper<TCourse>()
+ .in("id",courseIds)
+ .eq("type",1)
+ .eq("state",1)
+ .last("ORDER BY insertTime desc LIMIT 2"));
+ for (TCourse tCourse : courseList) {
+ AfterVideoVo videoVo = new AfterVideoVo();
+ videoVo.setCourseId(tCourse.getId());
+ videoVo.setCourseUrl(tCourse.getCourseVideo());
+ videoVos.add(videoVo);
+ }
+ }
return videoVos;
}
@@ -317,6 +334,15 @@
return packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
.eq("appUserId",appUserId)
.eq("payType",3)
+ .eq("payStatus",2)
+ .eq("state",1));
+ }
+
+ @PostMapping("/base/coursePack/allAmountPayRecordOfUser")
+ public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody Integer appUserId){
+ return packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+ .eq("appUserId",appUserId)
+ .notIn("payType",3)
.eq("payStatus",2)
.eq("state",1));
}
@@ -478,14 +504,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();
}
@@ -605,4 +632,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..d081599 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,26 @@
@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);
+
+ @PostMapping("/base/coursePack/allAmountPayRecordOfUser")
+ public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody Integer appUserId);
+
}
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/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;
+
+}
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