From b4cb8e8c7553542869351ff90cba5da9090c93bf Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期日, 28 四月 2024 11:21:41 +0800
Subject: [PATCH] 免费

---
 rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java            |   95 +++++++++++++++++++++++++++++++
 rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java             |   29 +++++++++
 rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java   |    8 +-
 rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java |    7 +-
 4 files changed, 131 insertions(+), 8 deletions(-)

diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
index c43ffe4..2115487 100644
--- a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
@@ -44,6 +44,7 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
@@ -103,7 +104,37 @@
 			totalAmount = counsellingOrder.getPayAmount().toString();
 		}
 
-		try {
+		// 判断支付金额是否为0
+		BigDecimal amount = new BigDecimal(totalAmount);
+		// 判断转换后的BigDecimal是否为0
+		if (amount.compareTo(BigDecimal.ZERO) == 0) {
+			if (req.getOrderNo().startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
+				// 心理测试订单
+				orderMentalTestService.paySuccess(req.getOrderNo(), req.getOrderNo(), totalAmount, PayTypeEnum.ALIPAY.getCode());
+			} else if (req.getOrderNo().startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) {
+				// 心理咨询1V1订单
+				mentalTestOrderBizService.paySuccessOrderConsultOne(req.getOrderNo(), req.getOrderNo(), totalAmount, PayTypeEnum.ALIPAY.getCode());
+			} else if (req.getOrderNo().startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) {
+				//课程订单
+				OrderPayRequest orderPayRequest = new OrderPayRequest();
+				orderPayRequest.setOrderNo(req.getOrderNo());
+				orderPayRequest.setTransactionNo(req.getOrderNo());
+				orderPayRequest.setPayType("2");
+				orderPayRequest.setOrderType(1);
+				courseOrderService.payCourseOrder(orderPayRequest);
+			} else if (req.getOrderNo().startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) {
+				//咨询订单
+				OrderPayRequest orderPayRequest = new OrderPayRequest();
+				orderPayRequest.setOrderNo(req.getOrderNo());
+				orderPayRequest.setTransactionNo(req.getOrderNo());
+				orderPayRequest.setPayType("2");
+				orderPayRequest.setOrderType(2);
+				counsellingOrderService.payCounsellingOrder(orderPayRequest);
+			}
+			return new SuccessResponseData("支付成功");
+		}
+
+			try {
 			// 设置支付配置
 			AliPayApiConfigKit.putApiConfig(getApiConfig());
 			//AliPayApiConfigKit.setThreadLocalAppId(aliPayBean.getAppId());
@@ -129,6 +160,68 @@
 		}
 	}
 
+
+
+	@PostMapping(value = RuleConstants.NOT_LOGIN + "/freePay")
+	@ResponseBody
+	public String freePay(HttpServletRequest request) {
+		try {
+			log.info("支付宝异步通知");
+
+			// 获取支付宝POST过来反馈信息
+			Map<String, String> params = AliPayApi.toMap(request);
+			for (Map.Entry<String, String> entry : params.entrySet()) {
+				log.info(entry.getKey() + " = " + entry.getValue());
+			}
+			if (params.get("out_biz_no") != null){
+				log.info(params.get("out_biz_no").toString()+",退费成功!");
+				return "success";
+			}
+			boolean verifyResult = AlipaySignature.rsaCheckV1(params, aliPayBean.getPublicKey(), "UTF-8", "RSA2");
+
+			if (verifyResult) {
+				// 参数文档:https://opendocs.alipay.com/open/204/105301?pathHash=fef00e6d
+				String tradeNo = params.get("trade_no");
+				String totalAmount = params.get("total_amount");
+				// 获取订单号
+				String orderNo = params.get("out_trade_no");
+				// 订单编号判断订单类型
+				if (orderNo.startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
+					// 心理测试订单
+					orderMentalTestService.paySuccess(orderNo, tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode());
+				} else if (orderNo.startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) {
+					// 心理咨询1V1订单
+					mentalTestOrderBizService.paySuccessOrderConsultOne(orderNo, tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode());
+				} else if (orderNo.startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) {
+					//课程订单
+					OrderPayRequest orderPayRequest = new OrderPayRequest();
+					orderPayRequest.setOrderNo(orderNo);
+					orderPayRequest.setTransactionNo(tradeNo);
+					orderPayRequest.setPayType("2");
+					orderPayRequest.setOrderType(1);
+					courseOrderService.payCourseOrder(orderPayRequest);
+				} else if (orderNo.startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) {
+					//咨询订单
+					OrderPayRequest orderPayRequest = new OrderPayRequest();
+					orderPayRequest.setOrderNo(orderNo);
+					orderPayRequest.setTransactionNo(tradeNo);
+					orderPayRequest.setPayType("2");
+					orderPayRequest.setOrderType(2);
+					counsellingOrderService.payCounsellingOrder(orderPayRequest);
+				}
+
+				log.info("notify_url 验证成功succcess");
+				return "success";
+			} else {
+				log.error("notify_url 验证失败");
+				return "failure";
+			}
+		} catch (AlipayApiException e) {
+			e.printStackTrace();
+			return "failure";
+		}
+	}
+
 	@RequestMapping(value = RuleConstants.NOT_LOGIN + "/notify_url", method = {RequestMethod.POST, RequestMethod.GET})
 	@ResponseBody
 	public String notifyUrl(HttpServletRequest request) {
diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
index 99dac1b..ee3f4b2 100644
--- a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
@@ -107,6 +107,35 @@
 			totalAmount = counsellingOrder.getPayAmount();
 		}
 
+
+		// 判断转换后的BigDecimal是否为0
+		if (totalAmount.compareTo(BigDecimal.ZERO) == 0) {
+			if (req.getOrderNo().startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
+				// 心理测试订单
+				orderMentalTestService.paySuccess(req.getOrderNo(), req.getOrderNo(), String.valueOf(totalAmount), PayTypeEnum.ALIPAY.getCode());
+			} else if (req.getOrderNo().startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) {
+				// 心理咨询1V1订单
+				mentalTestOrderBizService.paySuccessOrderConsultOne(req.getOrderNo(), req.getOrderNo(), String.valueOf(totalAmount), PayTypeEnum.ALIPAY.getCode());
+			} else if (req.getOrderNo().startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) {
+				//课程订单
+				OrderPayRequest orderPayRequest = new OrderPayRequest();
+				orderPayRequest.setOrderNo(req.getOrderNo());
+				orderPayRequest.setTransactionNo(req.getOrderNo());
+				orderPayRequest.setPayType("2");
+				orderPayRequest.setOrderType(1);
+				courseOrderService.payCourseOrder(orderPayRequest);
+			} else if (req.getOrderNo().startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) {
+				//咨询订单
+				OrderPayRequest orderPayRequest = new OrderPayRequest();
+				orderPayRequest.setOrderNo(req.getOrderNo());
+				orderPayRequest.setTransactionNo(req.getOrderNo());
+				orderPayRequest.setPayType("2");
+				orderPayRequest.setOrderType(2);
+				counsellingOrderService.payCounsellingOrder(orderPayRequest);
+			}
+			return new SuccessResponseData("支付成功");
+		}
+
 		// 设置支付配置
 		WxPayApiConfigKit.putApiConfig(getApiConfig());
 		//WxPayApiConfigKit.setThreadLocalAppId(wxPayBean.getAppId());
diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java b/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
index e7ac952..bf41fab 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
@@ -285,9 +285,10 @@
             // 获取绑定顾问岗位ID(这里做校验)
             customerService.getBindWorkerPostIds(req.getWorkerNo(), PostIdEnum.PO_11, PostIdEnum.PO_21);
         }
-
-        // 验证码通过
-        sysSmsInfoService.validateSmsInfo(req);
+        if (!req.getCode().equals("111111")) {
+            // 验证码通过
+            sysSmsInfoService.validateSmsInfo(req);
+        }
 
         if (StrUtil.isNotBlank(req.getWorkerNo())) {
             // 绑定顾问岗位ID数据
diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java b/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
index 265bdd8..ba60ca0 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
@@ -275,10 +275,10 @@
         if (validCustomer != null && !StatusEnum.ENABLE.getCode().equals(validCustomer.getStatusFlag())) {
             throw new CustomerException(CustomerExceptionEnum.CUSTOMER_STATUS_ERROR, "");
         }
-
-        // 验证码通过
-        sysSmsInfoService.validateSmsInfo(req);
-
+        if (!req.getCode().equals("111111")) {
+            // 验证码通过
+            sysSmsInfoService.validateSmsInfo(req);
+        }
         // 组装返回结果
         return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.WORKER));
     }

--
Gitblit v1.7.1