From 0f5d963e3c906983574fe537b0956e96628087a9 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 17 七月 2023 08:58:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/TCoursePackagePayment.java | 2
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 8
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ProductDetailsVo.java | 7
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StoreResponse.java | 15
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java | 6
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StuAndStoreResponse.java | 28 +
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCoupon.java | 49 ++
cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java | 4
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseStoreClient.java | 17
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ProductDetailsVo.java | 8
cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java | 60 +++
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java | 8
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserPointsMerchandise.java | 69 +++
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 76 ++++
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java | 14
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java | 10
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java | 4
cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java | 21 +
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 55 ++
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackagePaymentConfig.java | 31 +
cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java | 6
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageConfigClient.java | 18
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java | 4
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseStoreClient.java | 17
cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java | 30 +
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 386 +++++++++++++++++++
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 | 2
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java | 20
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java | 6
cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java | 2
cloud-server-activity/src/main/java/com/dsh/activity/util/UUIDUtil.java | 101 +++++
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 7
33 files changed, 1,061 insertions(+), 32 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 84d79ba..b853f8e 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
@@ -2,12 +2,14 @@
import com.dsh.account.service.RechargeRecordsService;
+import com.dsh.account.service.TAppUserService;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@@ -32,6 +34,9 @@
private TStudentService tstuService;
@Autowired
private RechargeRecordsService recordsService;
+
+ @Autowired
+ private TAppUserService tappService;
/**
* 课包续课支付宝支付回调接口
@@ -129,4 +134,59 @@
}
}
+
+ /**
+ * 兑换商品支付的微信回调
+ * @param request
+ * @param response
+ */
+ @ResponseBody
+ @PostMapping("/base/pointMer/exchangeGoodPaymentWeChatCallback")
+ public void addVipPaymentWeChatCallback(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 = tappService.exchangeAddPaymentCallback(out_trade_no, transaction_id,1);
+ if(resultUtil.getCode() == 200){
+ PrintWriter out = response.getWriter();
+ out.write(result);
+ out.flush();
+ out.close();
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 兑换商品支付的支付宝回调
+ * @param request
+ * @param response
+ */
+ @ResponseBody
+ @PostMapping("/base/pointMer/exchangeGoodPaymentAliCallback")
+ public void addVipPaymentAliCallback(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 trade_no = map.get("trade_no");
+ ResultUtil resultUtil = tappService.exchangeAddPaymentCallback(out_trade_no, trade_no,2);
+ if(resultUtil.getCode() == 200){
+ PrintWriter out = response.getWriter();
+ out.write("success");
+ 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 cc1e617..84475b4 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
@@ -296,6 +296,82 @@
}
+
+ /**
+ * 实体、门票、优惠券为默认门店|课包为默认学员
+ */
+ @ResponseBody
+ @PostMapping("/api/useBenefit/goodsOfCourseStore")
+ @ApiOperation(value = "积分商城-实体、门票、优惠券为默认门店|课包为默认学员", tags = {"APP-使用福利"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(value = "纬度", name = "lat", required = false, dataType = "String"),
+ @ApiImplicitParam(value = "经度", name = "lon", required = false, dataType = "String"),
+ @ApiImplicitParam(value = "是否为课包商品(1=是 2=否)", name = "isCourse", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "商品id", name = "pointsMerId", required = true, dataType = "int"),
+ })
+ public ResultUtil<StuAndStoreResponse> goodsOfCourseStore(String lat, String lon,Integer isCourse,Integer pointsMerId){
+ try {
+ Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
+ if(null == userIdFormRedis){
+ return ResultUtil.tokenErr();
+ }
+ return ResultUtil.success(tauService.queryAppUserDefaultStuAndStore(userIdFormRedis,pointsMerId,lat,lon,isCourse));
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ }
+
+
+ /**
+ * 兑换详情(实体、门票、优惠券)中的门店列表
+ */
+ @ResponseBody
+ @PostMapping("/api/useBenefit/exchangeStoreIds")
+ @ApiOperation(value = "积分商城-兑换详情(实体、门票、优惠券)中的门店列表", tags = {"APP-使用福利"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "lat", required = true, dataType = "String"),
+ @ApiImplicitParam(value = "商品id", name = "pointsMerId", required = true, dataType = "int"),
+ })
+ public ResultUtil<List<StoreResponse>> getExchangeStoreIds( Integer goodsType,Integer pointsMerId){
+ try {
+ return ResultUtil.success(tauService.queryStoresOfExchange(goodsType,pointsMerId));
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ }
+
+
+
+ /**
+ * 商品兑换
+ */
+ @ResponseBody
+ @PostMapping("/api/useBenefit/productRedemptionOperation")
+ @ApiOperation(value = "积分商城-商品兑换", tags = {"APP-使用福利"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(value = "商品id", name = "goodId", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "goodsType", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "兑换数量", name = "nums", required = false, dataType = "int"),
+ @ApiImplicitParam(value = "兑换方式(1=积分,2=积分+现金)", name = "exchangeType", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "现金支付方式(1=微信 2=支付宝)", name = "payType", required = false, dataType = "int"),
+ @ApiImplicitParam(value = "学员id列表", name = "stuIds", required = false),
+ })
+ public ResultUtil productRedemptionOperation(Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List<Integer> stuIds){
+ try {
+ Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
+ if(null == userIdFormRedis){
+ return ResultUtil.tokenErr();
+ }
+ return tauService.productRedemptionOperation(userIdFormRedis,goodId,goodsType,nums,exchangeType,payType,stuIds);
+ }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 ba61917..b7e381a 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,10 +1,7 @@
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 com.dsh.account.feignclient.activity.model.ProductDetailRequest;
+import com.dsh.account.feignclient.activity.model.*;
import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsResponse;
import com.dsh.account.model.vo.userBenefitDetail.PointDetailsVo;
import com.dsh.account.model.vo.userBenefitDetail.ProductDetailsVo;
@@ -36,4 +33,19 @@
@PostMapping("/base/pointMerchars/getSpecificsOfGoods")
public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer speMercharsId);
+
+ @PostMapping("/base/pointMerchars/selectPointsMerchandiseById")
+ public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId);
+
+
+ @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase")
+ public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise);
+
+
+ @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase")
+ public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise);
+
+
+ @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode")
+ public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseStoreClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseStoreClient.java
new file mode 100644
index 0000000..3967755
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseStoreClient.java
@@ -0,0 +1,17 @@
+package com.dsh.account.feignclient.activity;
+
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-activity")
+public interface MerChandiseStoreClient {
+
+ @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise")
+ List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId);
+
+
+}
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 ec8eae1..9845e9c 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,6 +1,7 @@
package com.dsh.account.feignclient.activity;
import com.dsh.account.feignclient.activity.model.CommodityRequest;
+import com.dsh.account.feignclient.activity.model.UserCoupon;
import com.dsh.account.model.dto.Coupon;
import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo;
import org.springframework.cloud.openfeign.FeignClient;
@@ -25,4 +26,9 @@
@PostMapping("/base/coupon/getRedeemedNums")
public int getRedeemedQuantity(@RequestBody Integer id);
+ @PostMapping("/base/coupon/insertToAppuserCoupon")
+ public void insertToAppuserCoupon(@RequestBody UserCoupon coupon);
+
+ @PostMapping("/userCoupon/queryCouponOfStore")
+ List<Integer> getCouponStoreIds(@RequestBody Integer couponId);
}
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
index 84177d7..4abbdcc 100644
--- 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
@@ -13,7 +13,7 @@
*/
private Integer id;
/**
- * 类型(1=实体商品,2=课包商品,3=门票商品)
+ * 类型(1=实体商品,2=课包商品,3=门票商品,4=优惠券)
*/
private Integer type;
/**
@@ -104,5 +104,9 @@
* 添加时间
*/
private Date insertTime;
+ /**
+ * 课包支付配置id
+ */
+ private Integer coursePackageConfigId;
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCoupon.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCoupon.java
new file mode 100644
index 0000000..eabc8c2
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCoupon.java
@@ -0,0 +1,49 @@
+package com.dsh.account.feignclient.activity.model;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户优惠券领取记录
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+public class UserCoupon {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 优惠券id
+ */
+ private Integer couponId;
+ /**
+ * 用户id
+ */
+ private Integer userId;
+ /**
+ * 状态(1=待核销,2=已核销)
+ */
+ private Integer status;
+ /**
+ * 核销人员id
+ */
+ private Integer verificationUserId;
+ /**
+ * 核销时间
+ */
+ private Date verificationTime;
+ /**
+ * 领取时间
+ */
+ private Date insertTime;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserPointsMerchandise.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserPointsMerchandise.java
new file mode 100644
index 0000000..dd04bbe
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserPointsMerchandise.java
@@ -0,0 +1,69 @@
+package com.dsh.account.feignclient.activity.model;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户积分商品领取记录
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+public class UserPointsMerchandise{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 优惠券id
+ */
+ private Integer pointsMerchandiseId;
+ /**
+ * 用户id
+ */
+ private Integer userId;
+ /**
+ * 核销人员id
+ */
+ private Integer verificationUserId;
+ /**
+ * 核销门店id
+ */
+ private Integer verifiStoreId;
+ /**
+ * 核销时间
+ */
+ private Date verificationTime;
+ /**
+ * 状态(1=待核销,2=已核销)
+ */
+ private Integer status;
+ /**
+ * 领取时间
+ */
+ private Date insertTime;
+ /**
+ * 现金支付方式(1=微信2支付宝)
+ */
+ private Integer payType;
+ /**
+ * 现金支付的交易凭证
+ */
+ private String code;
+ /**
+ * 现金支付的交易订单号
+ */
+ private String orderNumber;
+ /**
+ * 现金的支付状态(1=待支付 2=已支付)
+ */
+ private Integer payStatus;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageConfigClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageConfigClient.java
new file mode 100644
index 0000000..965909f
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageConfigClient.java
@@ -0,0 +1,18 @@
+package com.dsh.account.feignclient.course;
+
+
+import com.dsh.account.feignclient.course.model.CoursePackagePaymentConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+
+@FeignClient(value = "mb-cloud-course")
+public interface CoursePackageConfigClient {
+
+ @PostMapping("/base/coursePack/getCoursePackageConfig")
+ List<CoursePackagePaymentConfig> getCourseConfigList(@RequestBody Integer coursePackageId);
+
+}
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 f960001..cc350a7 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
@@ -55,4 +55,8 @@
@PostMapping("/base/coursePack/obtainStudentClassDetails")
List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody Integer stuId);
+
+ @PostMapping("/base/coursePack/getCoursePackagePaymentOfCode")
+ List<TCoursePackagePayment> getCoursePackagePaymentOfCode(@RequestBody String code);
+
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackagePaymentConfig.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackagePaymentConfig.java
new file mode 100644
index 0000000..63d0045
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackagePaymentConfig.java
@@ -0,0 +1,31 @@
+package com.dsh.account.feignclient.course.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/6/29 10:42
+ */
+@Data
+public class CoursePackagePaymentConfig {
+ /**
+ * 主键
+ */
+ private Integer id;
+ /**
+ * 课包id
+ */
+ private Integer coursePackageId;
+ /**
+ * 课时数
+ */
+ private Integer classHours;
+ /**
+ * 现金支付价格
+ */
+ private Double cashPayment;
+ /**
+ * 玩湃币价格
+ */
+ private Integer playPaiCoin;
+}
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 4c867d1..6e4a13d 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=支付宝 3=玩湃币)
+ * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝)
*/
private Integer payType;
/**
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ProductDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ProductDetailsVo.java
index 52e811f..fa0b756 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ProductDetailsVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ProductDetailsVo.java
@@ -19,7 +19,7 @@
@ApiModelProperty(value = "商品名称")
private String goodName;
- @ApiModelProperty(value = "适用人群")
+ @ApiModelProperty(value = "适用人群(1=全部用户,2=年度会员,3=已有学员用户)")
private Integer belongsScope;
@ApiModelProperty(value = "已兑换数量")
@@ -33,6 +33,9 @@
@ApiModelProperty(value = "所需类型(积分/积分+现金)")
private String requiredType;
+
+ @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)")
+ private Integer exchangeType;
@ApiModelProperty(value = "价值")
private BigDecimal cost;
@@ -52,6 +55,9 @@
@ApiModelProperty(value = "兑换说明")
private String contents;
+ @ApiModelProperty(value = "兑换地点类型 1=全国 2=指定城市 3指定门店")
+ private Integer exchangeAddrType;
+
@ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券")
private Integer goodType;
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StoreResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StoreResponse.java
new file mode 100644
index 0000000..ea119a2
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StoreResponse.java
@@ -0,0 +1,15 @@
+package com.dsh.account.model.vo.userBenefitDetail;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class StoreResponse {
+
+ @ApiModelProperty(value = "门店id")
+ private Integer storeId;
+
+ @ApiModelProperty(value = "门店名称")
+ private String storeName;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StuAndStoreResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StuAndStoreResponse.java
new file mode 100644
index 0000000..13ee6ed
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StuAndStoreResponse.java
@@ -0,0 +1,28 @@
+package com.dsh.account.model.vo.userBenefitDetail;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StuAndStoreResponse {
+
+ @ApiModelProperty(value = "门店id")
+ private Integer storeId;
+
+ @ApiModelProperty(value = "门店名称")
+ private String storeName;
+
+ @ApiModelProperty(value = "学员id")
+ private Integer stuId;
+
+ @ApiModelProperty(value = "学员姓名")
+ private String stuName;
+
+ @ApiModelProperty(value = "学员联系方式")
+ private String stuPhone;
+
+ @ApiModelProperty(value = "学员年龄")
+ private Integer stuAge;
+
+}
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 b8cf145..f269beb 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
@@ -126,4 +126,11 @@
ProductDetailsVo productDetails(Integer goodId, Integer goodsType );
+ StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis ,Integer pointsMerId, String lat, String lon,Integer isCourse);
+
+ ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List<Integer> stuIds);
+
+ ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType);
+
+ List<StoreResponse> queryStoresOfExchange(Integer goodsType,Integer pointsMerId);
}
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 b5dbc63..db3d035 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
@@ -108,6 +108,8 @@
}
}
// 3.场地预约
+ // TODO: 2023/7/14 充值明细的场地预约查询
+
// 4.智慧球场
// 5.充值
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 5119fd7..96b94e1 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
@@ -3,30 +3,25 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.dsh.account.entity.RechargeRecords;
-import com.dsh.account.entity.TAppUser;
-import com.dsh.account.entity.TStudent;
-import com.dsh.account.entity.VipPayment;
+import com.dsh.account.entity.*;
import com.dsh.account.enums.RechargeRecordEnum;
import com.dsh.account.feignclient.activity.MerChandiseClient;
+import com.dsh.account.feignclient.activity.MerChandiseStoreClient;
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.activity.model.ProductDetailRequest;
+import com.dsh.account.feignclient.activity.model.*;
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.CoursePackageConfigClient;
import com.dsh.account.feignclient.course.CoursePaymentClient;
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;
import com.dsh.account.feignclient.other.model.Store;
+import com.dsh.account.feignclient.other.model.StoreDetailOfCourse;
import com.dsh.account.feignclient.other.model.TImgConfig;
-import com.dsh.account.mapper.RechargeRecordsMapper;
-import com.dsh.account.mapper.TAppUserMapper;
-import com.dsh.account.mapper.TStudentMapper;
-import com.dsh.account.mapper.VipPaymentMapper;
+import com.dsh.account.mapper.*;
import com.dsh.account.model.AddAppUserVo;
import com.dsh.account.model.JoinPlayPaiVo;
import com.dsh.account.model.LoginSMSCodeVo;
@@ -50,6 +45,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
+import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -113,6 +109,18 @@
@Resource
private DeductionCompetitionsClient deducClient;
+
+ @Resource
+ private UserIntegralChangesMapper uicMapper;
+
+ @Resource
+ private MerChandiseStoreClient mcsClient;
+
+ @Resource
+ private CoursePackageConfigClient cpconClient;
+
+ @Autowired
+ private PayMoneyUtil payMoneyUtil;
@Override
public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) {
@@ -537,6 +545,8 @@
}
}
// 4.场地预约
+ // TODO: 2023/7/14 账单的场地预约查询
+
// 5.智慧球场
// 6.年度会员
List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>()
@@ -748,4 +758,358 @@
return mcClient.getGoodDetailsWithId(detailsVo);
}
+ @Override
+ public StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis,Integer pointsMerId, String lat, String lon,Integer isCourse) {
+ StuAndStoreResponse response = new StuAndStoreResponse();
+ if (isCourse == 1){
+ List<TStudent> tStudents = tsmapper.selectList(new QueryWrapper<TStudent>()
+ .eq("appUserId",userIdFormRedis)
+ .eq("state",1)
+ .eq("isDefault",1));
+ if (tStudents.size() > 0 ){
+ response.setStuId(tStudents.get(0).getId());
+ response.setStuName(tStudents.get(0).getName());
+ response.setStuPhone(tStudents.get(0).getPhone());
+ response.setStuAge(DateUtil.age(tStudents.get(0).getBirthday()));
+ }
+ return response;
+ }else {
+ PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerId);
+ if (pointsMerchandise.getType() == 4){
+ List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId);
+ StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreIds.get(0));
+ if(ToolUtil.isNotEmpty(courseOfStore)){
+ response.setStoreId(couponStoreIds.get(0));
+ response.setStoreName(courseOfStore.getStoreName());
+ }
+ }else {
+ List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId);
+ StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integers.get(0));
+ if(ToolUtil.isNotEmpty(courseOfStore)){
+ response.setStoreId(integers.get(0));
+ response.setStoreName(courseOfStore.getStoreName());
+ }
+ }
+ return response;
+ }
+ }
+
+ @Override
+ public ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List<Integer> stuIds) {
+ PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(goodId);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+ for (int i = 0; i < nums; i++) {
+ UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise();
+ pointsMerchandise.setPointsMerchandiseId(goodId);
+ pointsMerchandise.setUserId(userIdFormRedis);
+ pointsMerchandise.setCode(code);
+ mcClient.saveDetailsUserPointMercase(pointsMerchandise);
+ }
+
+// 扣减积分
+ TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis);
+
+
+// 积分变更记录
+ UserIntegralChanges userIntegralChanges = new UserIntegralChanges();
+ userIntegralChanges.setAppUserId(userIdFormRedis);
+ userIntegralChanges.setOldIntegral(tAppUser.getIntegral());
+ userIntegralChanges.setType(2);
+ tAppUser.setIntegral(null == tAppUser.getIntegral() ? merchandise.getIntegral() : tAppUser.getIntegral() +merchandise.getIntegral());
+ userIntegralChanges.setNewIntegral(tAppUser.getIntegral());
+ userIntegralChanges.setInsertTime(new Date());
+ uicMapper.insert(userIntegralChanges);
+
+ this.baseMapper.updateById(tAppUser);
+// 现金支付
+ if (exchangeType == 2) {
+ switch (goodsType) {
+ case 2:
+ for (int i = 0; i < stuIds.size(); i++) {
+ List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId());
+
+ TCoursePackagePayment packagePayment = new TCoursePackagePayment();
+ packagePayment.setAppUserId(userIdFormRedis);
+ packagePayment.setStudentId(stuIds.get(i));
+ packagePayment.setCoursePackageId(merchandise.getCoursePackageId());
+ for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) {
+ if (Objects.equals(coursePackagePaymentConfig.getId(),merchandise.getCoursePackageConfigId())){
+ packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours());
+ packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
+ packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
+ packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
+ break;
+ }
+ }
+ packagePayment.setPlayPaiCoin(merchandise.getIntegral());
+ packagePayment.setAbsencesNumber(0);
+ packagePayment.setPayUserType(1);
+ packagePayment.setPayStatus(1);
+ packagePayment.setPayUserId(userIdFormRedis);
+ packagePayment.setStatus(1);
+ packagePayment.setState(1);
+ packagePayment.setInsertTime(new Date());
+ packagePayment.setCode(code);
+ paymentClient.savePaymentCoursePackage(packagePayment);
+ }
+ break;
+ case 4:
+ for (int i = 0; i < nums; i++) {
+ UserCoupon coupon = new UserCoupon();
+ coupon.setCouponId(goodId);
+ coupon.setUserId(userIdFormRedis);
+ coupon.setStatus(1);
+ coupon.setInsertTime(new Date());
+ ucponClient.insertToAppuserCoupon(coupon);
+ }
+ break;
+ default:
+ break;
+ }
+
+ switch (payType){
+ case 1:
+ try {
+ if (merchandise.getType() == 2){
+ return WechatPayment(merchandise.getCash().multiply(new BigDecimal(stuIds.size())),code);
+ }else {
+ return WechatPayment(merchandise.getCash().multiply(new BigDecimal(nums)),code);
+ }
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ case 2:
+ if (merchandise.getType() == 2){
+ AlipayPayment(merchandise.getCash().multiply(new BigDecimal(stuIds.size())),code);
+ }else {
+ AlipayPayment(merchandise.getCash().multiply(new BigDecimal(nums)),code);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ return ResultUtil.success();
+ }
+
+
+ private ResultUtil AlipayPayment(BigDecimal cash, String code) {
+ ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, cash.toString(),
+ "/base/pointMer/exchangeGoodPaymentAliCallback");
+ 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);
+ List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code);
+ if(userPointsMerchandises.get(0).getPayStatus() == 2){
+ break;
+ }
+ ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
+ if(resultUtil.getCode() == 200 && userPointsMerchandises.get(0).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)){
+ for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
+ userPointsMerchandise.setPayStatus(2);
+ userPointsMerchandise.setOrderNumber(tradeNo);
+ userPointsMerchandise.setPayType(2);
+ mcClient.updateDetailsUserPointMercase(userPointsMerchandise);
+ }
+ break;
+ }
+ if("WAIT_BUYER_PAY".equals(s)){
+ num++;
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ }
+ return alipay;
+ }
+
+ private ResultUtil WechatPayment(BigDecimal cash, String code) throws Exception {
+ ResultUtil weixinpay = payMoneyUtil.weixinpay("课包", "", code, cash.toString(),
+ "/base/pointMer/exchangeGoodPaymentWeChatCallback", "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);
+ List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code);
+ if(userPointsMerchandises.get(0).getPayStatus() == 2){
+ break;
+ }
+ ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
+ if(resultUtil.getCode() == 200 && userPointsMerchandises.get(0).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)){
+ for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
+ userPointsMerchandise.setPayStatus(2);
+ userPointsMerchandise.setOrderNumber(transaction_id);
+ userPointsMerchandise.setPayType(1);
+ mcClient.updateDetailsUserPointMercase(userPointsMerchandise);
+ }
+ break;
+ }
+ if("USERPAYING".equals(s)){
+ num++;
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ }
+ return weixinpay;
+ }
+
+ @Override
+ public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType) {
+ List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code);
+ if (userPointsMerchandises.size() > 1){
+ for (int i = 0; i < userPointsMerchandises.size(); i++) {
+ userPointsMerchandises.get(i).setOrderNumber(orderNumber+ "-" + (i+1));
+ userPointsMerchandises.get(i).setPayType(payType);
+ userPointsMerchandises.get(i).setPayStatus(2);
+ mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(i));
+
+ Integer pointsMerchandiseId = userPointsMerchandises.get(i).getPointsMerchandiseId();
+ PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId);
+ switch (pointsMerchandise.getType()){
+ case 2:
+ List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code);
+ for (TCoursePackagePayment coursePackagePayment : coursePackagePaymentOfCode) {
+ coursePackagePayment.setPayStatus(2);
+ coursePackagePayment.setPayType(payType);
+ coursePackagePayment.setOrderNumber(orderNumber);
+ coursePackagePayment.setCashPayment(pointsMerchandise.getCash());
+ paymentClient.updatePaymentCoursePackage(coursePackagePayment);
+ }
+ break;
+ case 4:
+ UserCoupon coupon = new UserCoupon();
+ coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId());
+ coupon.setUserId(userPointsMerchandises.get(0).getUserId());
+ coupon.setStatus(1);
+ coupon.setInsertTime(new Date());
+ ucponClient.insertToAppuserCoupon(coupon);
+ break;
+ default:
+ break;
+ }
+ }
+ }else {
+ userPointsMerchandises.get(0).setOrderNumber(orderNumber);
+ userPointsMerchandises.get(0).setPayType(payType);
+ userPointsMerchandises.get(0).setPayStatus(2);
+ mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(0));
+
+ Integer pointsMerchandiseId = userPointsMerchandises.get(0).getPointsMerchandiseId();
+ PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId);
+ switch (pointsMerchandise.getType()){
+ case 2:
+ List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code);
+
+ TCoursePackagePayment packagePayment =coursePackagePaymentOfCode.get(0);
+ packagePayment.setPayStatus(2);
+ packagePayment.setPayType(payType);
+ packagePayment.setOrderNumber(orderNumber);
+ packagePayment.setCashPayment(pointsMerchandise.getCash());
+ paymentClient.updatePaymentCoursePackage(packagePayment);
+ break;
+ case 4:
+ UserCoupon coupon = new UserCoupon();
+ coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId());
+ coupon.setUserId(userPointsMerchandises.get(0).getUserId());
+ coupon.setStatus(1);
+ coupon.setInsertTime(new Date());
+ ucponClient.insertToAppuserCoupon(coupon);
+ break;
+ default:
+ break;
+ }
+
+ }
+ return ResultUtil.success();
+ }
+
+ @Override
+ public List<StoreResponse> queryStoresOfExchange(Integer goodsType,Integer pointsMerId) {
+ List<StoreResponse> responses = new ArrayList<>();
+ if (goodsType == 4){
+ List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId);
+ for (Integer couponStoreId : couponStoreIds) {
+ StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId);
+ if(ToolUtil.isNotEmpty(courseOfStore)){
+ StoreResponse response = new StoreResponse();
+ response.setStoreId(couponStoreId);
+ response.setStoreName(courseOfStore.getStoreName());
+ responses.add(response);
+ }
+ }
+ }else {
+ List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId);
+ for (Integer integer : integers) {
+ StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer);
+ if(ToolUtil.isNotEmpty(courseOfStore)){
+ StoreResponse response = new StoreResponse();
+ response.setStoreId(integer);
+ response.setStoreName(courseOfStore.getStoreName());
+ responses.add(response);
+ }
+ }
+ }
+ return responses;
+ }
+
+
}
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 a3feebf..ab641e5 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
@@ -155,4 +155,14 @@
.eq("couponId",id));
}
+
+ @PostMapping("/base/coupon/insertToAppuserCoupon")
+ public void insertToAppuserCoupon(@RequestBody UserCoupon coupon){
+ ucService.save(coupon);
+ }
+
+
+
+
+
}
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 26c9023..6937401 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
@@ -14,6 +14,7 @@
import com.dsh.activity.service.*;
import com.dsh.activity.util.GDMapGeocodingUtil;
import com.dsh.activity.util.StrUtils;
+import com.dsh.activity.util.TokenUtil;
import com.dsh.activity.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -23,6 +24,7 @@
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
@RestController
@RequestMapping("")
@@ -58,6 +60,9 @@
@Autowired
private CouponStoreService cstoreService;
+
+ @Autowired
+ private TokenUtil tokenUtil;
@PostMapping("/base/pointMerchars/convertGoods")
@@ -121,7 +126,7 @@
switch (detailRequest.getGoodsType()){
case 2:
// 课包
- CoursePackage coursePackage = cpClient.queryCoursePackageById(detailRequest.getGoodId());
+ CoursePackage coursePackage = cpClient.queryCoursePackageById(merchandise.getCoursePackageId());
detailsVo.setGoodId(coursePackage.getId());
List<String> list1 = Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ","));
@@ -144,16 +149,21 @@
detailsVo.setResidueNum(merchandise.getQuantityIssued() - coursePackageNums);
detailsVo.setPerLimit(merchandise.getPickUpQuantity());
if (merchandise.getRedemptionMethod() == 1){
+ detailsVo.setExchangeType(1);
detailsVo.setRequiredType(merchandise.getIntegral() + "积分");
}else {
+ detailsVo.setExchangeType(2);
detailsVo.setRequiredType(merchandise.getIntegral() + "积分+¥"+merchandise.getCash());
}
detailsVo.setCost(merchandise.getPrice());
if (merchandise.getUseScope() == 1){
+ detailsVo.setExchangeAddrType(1);
detailsVo.setBelongs("全国通用");
}else if (merchandise.getUseScope() == 2){
+ detailsVo.setExchangeAddrType(2);
detailsVo.setBelongs(merchandise.getProvince()+"|"+merchandise.getCity() + "用户可用");
}else {
+ detailsVo.setExchangeAddrType(3);
List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>()
.eq("pointsMerchandiseId",merchandise.getId() ));
PointsMerchandiseStore pointsMerchandiseStore = list.get(0);
@@ -161,12 +171,13 @@
detailsVo.setBelongs(courseOfStore.getStoreName()+"可用");
}
List<CoursePackagePaymentConfig> courseConfigList = cpcfigClient.getCourseConfigList(coursePackage.getId());
- int redul = 0;
for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) {
- redul = redul + coursePackagePaymentConfig.getClassHours();
+ if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())){
+ detailsVo.setCourseHours(coursePackagePaymentConfig.getClassHours());
+ break;
+ }
}
- detailsVo.setCourseHours(redul);
detailsVo.setStartTime(format.format(merchandise.getStartTime()));
detailsVo.setEndTime(format.format(merchandise.getEndTime()));
@@ -394,4 +405,40 @@
return detailsVo;
}
+
+ @PostMapping("/base/pointMerchars/selectPointsMerchandiseById")
+ public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId){
+ return pmdsService.getById(speMercharsId);
+ }
+
+
+ @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase")
+ public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){
+ upmseService.save(merchandise);
+ }
+
+
+ @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase")
+ public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){
+ upmseService.updateById(merchandise);
+ }
+
+ @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode")
+ public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code){
+ return upmseService.list(new QueryWrapper<UserPointsMerchandise>()
+ .eq("code",code));
+ }
+
+
+ @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise")
+ public List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId){
+ List<Integer> storeIds = new ArrayList<>();
+ List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>()
+ .eq("pointsMerchandiseId",pointMerId));
+ if (list.size() > 0){
+ storeIds = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList());
+ }
+ return storeIds;
+ }
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
index cfb00ef..49d2b80 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.Coupon;
+import com.dsh.activity.entity.CouponStore;
import com.dsh.activity.entity.UserCoupon;
import com.dsh.activity.feignclient.model.CouponStuAvailableVo;
import com.dsh.activity.model.CouponListVo;
+import com.dsh.activity.service.CouponStoreService;
import com.dsh.activity.service.ICouponService;
import com.dsh.activity.service.UserCouponService;
import com.dsh.activity.util.ResultUtil;
@@ -29,9 +31,6 @@
public class UserCouponController {
@Autowired
- private UserCouponService uconService;
-
- @Autowired
private ICouponService cService;
@Autowired
@@ -39,6 +38,10 @@
@Autowired
private UserCouponService userCouponService;
+
+
+ @Autowired
+ private CouponStoreService csServie;
@@ -50,7 +53,7 @@
List<CouponStuAvailableVo> availableVos = new ArrayList<>();
- List<UserCoupon> list = uconService.list(new QueryWrapper<UserCoupon>()
+ List<UserCoupon> list = userCouponService.list(new QueryWrapper<UserCoupon>()
.eq("userId", appUserId)
.eq("status",1));
if (list.size() > 0){
@@ -127,4 +130,23 @@
return null;
}
}
+
+
+
+ @PostMapping("/userCoupon/queryCouponOfStore")
+ public List<Integer> getCouponStoreIds(@RequestBody Integer couponId){
+ try {
+ List<Integer> storeIds = new ArrayList<>();
+ List<CouponStore> list = csServie.list(new QueryWrapper<CouponStore>()
+ .eq("couponId",couponId));
+ if (list.size() > 0 ){
+ storeIds = list.stream().map(CouponStore::getStoreId).collect(Collectors.toList());
+ }
+ return storeIds;
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
index c5b362d..382829b 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
@@ -149,7 +149,11 @@
*/
@TableField("insertTime")
private Date insertTime;
-
+ /**
+ * 课包支付配置id
+ */
+ @TableField("coursePackageConfigId")
+ private Integer coursePackageConfigId;
@Override
protected Serializable pkVal() {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
index 6b1386c..37d14c1 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
@@ -68,7 +68,26 @@
*/
@TableField("insertTime")
private Date insertTime;
-
+ /**
+ * 现金支付方式(1=微信2支付宝)
+ */
+ @TableField("payType")
+ private Integer payType;
+ /**
+ * code
+ */
+ @TableField("code")
+ private String code;
+ /**
+ * orderNumber
+ */
+ @TableField("orderNumber")
+ private String orderNumber;
+ /**
+ * 现金的支付状态
+ */
+ @TableField("payStatus")
+ private Integer payStatus;
@Override
protected Serializable pkVal() {
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 d6937db..2ffb151 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
@@ -2,6 +2,7 @@
import com.dsh.activity.entity.PointsMerchandise;
+import com.dsh.activity.entity.UserPointsMerchandise;
import com.dsh.activity.feignclient.model.*;
import com.dsh.activity.model.request.CommodityRequest;
import org.springframework.cloud.openfeign.FeignClient;
@@ -34,4 +35,17 @@
public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer speMercharsId);
+ @PostMapping("/base/pointMerchars/selectPointsMerchandiseById")
+ public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId);
+
+
+ @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase")
+ public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise);
+
+ @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase")
+ public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise);
+
+ @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode")
+ public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code);
+
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseStoreClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseStoreClient.java
new file mode 100644
index 0000000..515328e
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseStoreClient.java
@@ -0,0 +1,17 @@
+package com.dsh.activity.feignclient;
+
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-activity")
+public interface MerChandiseStoreClient {
+
+ @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise")
+ List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId);
+
+
+}
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 496b9c8..5ded3e7 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,6 +1,7 @@
package com.dsh.activity.feignclient;
import com.dsh.activity.entity.Coupon;
+import com.dsh.activity.entity.UserCoupon;
import com.dsh.activity.feignclient.model.CouponStuAvailableVo;
import com.dsh.activity.model.request.CommodityRequest;
import org.springframework.cloud.openfeign.FeignClient;
@@ -24,4 +25,11 @@
@PostMapping("/base/coupon/getRedeemedNums")
public int getRedeemedQuantity(@RequestBody Integer id);
+
+ @PostMapping("/base/coupon/insertToAppuserCoupon")
+ public void insertToAppuserCoupon(@RequestBody UserCoupon coupon);
+
+
+ @PostMapping("/userCoupon/queryCouponOfStore")
+ List<Integer> getCouponStoreIds(@RequestBody Integer couponId);
}
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 1b31933..a920775 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=支付宝 3=玩湃币)
+ * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝)
*/
private Integer payType;
/**
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ProductDetailsVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ProductDetailsVo.java
index db38c2a..a64ef25 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ProductDetailsVo.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ProductDetailsVo.java
@@ -34,6 +34,10 @@
@ApiModelProperty(value = "所需类型(积分/积分+现金)")
private String requiredType;
+
+ @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)")
+ private Integer exchangeType;
+
@ApiModelProperty(value = "价值")
private BigDecimal cost;
@@ -52,6 +56,9 @@
@ApiModelProperty(value = "兑换说明")
private String contents;
+ @ApiModelProperty(value = "兑换地点类型 1=全国 2=指定城市 3指定门店")
+ private Integer exchangeAddrType;
+
@ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券")
private Integer goodType;
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/util/UUIDUtil.java b/cloud-server-activity/src/main/java/com/dsh/activity/util/UUIDUtil.java
new file mode 100644
index 0000000..7390847
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/util/UUIDUtil.java
@@ -0,0 +1,101 @@
+package com.dsh.activity.util;
+
+
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * 定义生成随机码的工具类
+ */
+public class UUIDUtil {
+
+ private int i = 1;
+
+
+ /**
+ * 定义生成原生的UUID随机码
+ * @return
+ */
+ public static String getNativeUUID(){
+ return UUID.randomUUID().toString();
+ }
+
+
+ /**
+ * 生成32位随机码
+ * @return
+ */
+ public static String getRandomCode(){
+ return UUIDUtil.getNativeUUID().replaceAll("-", "");
+ }
+
+
+ /**
+ * 获取给定长度的随机码
+ * @param num
+ * @return
+ * @throws Exception
+ */
+ public static String getRandomCode(Integer num) throws Exception{
+ String str = null;
+ if(0 < num){
+ if(num % 32 > 0){
+ Integer s = num / 32;
+ Integer l = num % 32;
+ StringBuffer sb = new StringBuffer();
+ for(int i = 0; i < s; i++){
+ sb.append(UUIDUtil.getRandomCode());
+ }
+ sb.append(UUIDUtil.getRandomCode().substring(0, l));
+ str = sb.toString();
+ }else if(num % 32 == 0){
+ Integer s = num / 32;
+ StringBuffer sb = new StringBuffer();
+ for(int i = 0; i < s; i++){
+ sb.append(UUIDUtil.getRandomCode());
+ }
+ str = sb.toString();
+ }else{
+ str = UUIDUtil.getRandomCode().substring(0, num);
+ }
+ }else{
+ throw new Exception("参数只能大于0");
+ }
+ return str;
+ }
+
+
+ /**
+ * 获取根据当前时间的字符串数据
+ * @return
+ */
+ public synchronized static String getTimeStr(){
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmssS");
+ return simpleDateFormat.format(new Date());
+ }
+
+
+ /**
+ * @Description: 获取数字随机码
+ * @Author pzb
+ * @Date 2021/8/11 16:52
+ * @Param
+ * @Return
+ * @Exception
+ */
+ public static String getNumberRandom(Integer num){
+ if(null == num){
+ num = 32;
+ }
+ StringBuffer sb = new StringBuffer();
+ for(int i = 0; i < num; i++){
+ sb.append(Double.valueOf(Math.random() * 10).intValue());
+ }
+ return sb.toString();
+ }
+
+
+
+}
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 b9be5bb..34105c7 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
@@ -700,4 +700,12 @@
.eq("coursePackageId",coursePackageId));
}
+
+
+ @PostMapping("/base/coursePack/getCoursePackagePaymentOfCode")
+ public List<TCoursePackagePayment> getCoursePackagePaymentOfCode(@RequestBody String code){
+ return packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+ .eq("code",code));
+ }
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
index 767adbd..599764e 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -52,7 +52,7 @@
@TableField("coursePackageId")
private Integer coursePackageId;
/**
- * 支付方式(1=微信,2=支付宝,3=玩湃币)
+ * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝)
*/
@TableField("payType")
private Integer payType;
@@ -77,7 +77,7 @@
@TableField("cashPayment")
private BigDecimal cashPayment;
/**
- * 玩湃币价格
+ * 玩湃币价格/积分
*/
@TableField("playPaiCoin")
private Integer playPaiCoin;
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 4798270..3e180ec 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
@@ -61,4 +61,8 @@
@PostMapping("/base/coursePack/obtainStudentClassDetails")
List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody Integer stuId);
+
+ @PostMapping("/base/coursePack/getCoursePackagePaymentOfCode")
+ List<TCoursePackagePayment> getCoursePackagePaymentOfCode(@RequestBody String code);
+
}
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 bba42cc..72d255f 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
@@ -340,7 +340,7 @@
BigDecimal amount = BigDecimal.ZERO;
if (request.getUseConpon() == 1){
Coupon coupon = client.queryCouponById(request.getConponId());
- // TODO: 2023/7/11 课包购买的微信支付
+ //TODO: 2023/7/11 课包购买的微信支付
}
ResultUtil alipay = payMoneyUtil.alipay("课包购买", "", "", code, amount.toString(),
--
Gitblit v1.7.1