diff --git a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java
index 9ab3848..4a62b92 100644
--- a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java
+++ b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/controller/PayController.java
@@ -1,14 +1,11 @@
package com.ruoyi.app.controller;
-import com.ruoyi.app.domain.AppDynamicComment;
-import com.ruoyi.app.domain.AppOrder;
-import com.ruoyi.app.domain.AppOrderArg;
-import com.ruoyi.app.domain.dto.KeyUtil;
-import com.ruoyi.app.domain.dto.PayConfig;
-import com.ruoyi.app.domain.dto.PayUtils;
-import com.ruoyi.app.domain.dto.WeChatPrepayResult;
+import com.ruoyi.app.domain.*;
+import com.ruoyi.app.domain.dto.*;
import com.ruoyi.app.domain.vo.AppDynamicCommentVo;
import com.ruoyi.app.mapper.AppOrderMapper;
+import com.ruoyi.app.mapper.AppOrderPayMapper;
+import com.ruoyi.app.mapper.AppUserMapper;
import com.ruoyi.app.service.IAppDynamicCommentService;
import com.ruoyi.app.service.IPayService;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
@@ -21,10 +18,15 @@ import com.ruoyi.common.security.annotation.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.*;
import java.util.Date;
import java.util.List;
import java.util.SortedMap;
@@ -48,12 +50,18 @@ public class PayController extends BaseController
@Autowired
private AppOrderMapper appOrderMapper;
+ @Autowired
+ private AppOrderPayMapper appOrderPayMapper;
+
+ @Autowired
+ private AppUserMapper appUserMapper;
+
/**
* 查询动态评论列表
*/
@PostMapping("/wechatPrePay")
@ApiOperation(value = "微信支付", notes = "微信支付", httpMethod = "POST")
- public AjaxResult wechatPrePay(AppOrderArg appOrderArg) {
+ public AjaxResult wechatPrePay(@RequestBody AppOrderArg appOrderArg) {
Integer price = appOrderArg.getPrice();
PayConfig payConfig = getPayConfigByAppid();
@@ -112,6 +120,108 @@ public class PayController extends BaseController
return AjaxResult.success(prePayResult);
}
+ @RequestMapping(value = "/wechatNotify")
+ public void wechatNotify(HttpServletRequest request, HttpServletResponse response) {
+ log.info("=======>>>开始获取微信支付返回信息");
+ StringBuilder sb = new StringBuilder();
+ InputStream in;
+ try {
+ in = request.getInputStream();
+ InputStreamReader reader = new InputStreamReader(in);
+ BufferedReader br = new BufferedReader(reader);
+ String s = "";
+ while ((s = br.readLine()) != null) {
+ sb.append(s);
+ }
+ br.close();
+ reader.close();
+ in.close();
+ } catch (IOException e) {
+ log.info("获取返回信息失败");
+ }
+ log.info("微信返回来的字符串" + sb.toString());
+ WeChatPayResult wexinResult = getResultByXml(sb.toString());
+ PrintWriter out;
+ try {
+ out = response.getWriter();
+ if (!("SUCCESS".equals(wexinResult.getResultCode()))) {
+ out.println("fail");
+ }
+
+ String outTradeNo = wexinResult.getOutTradeNo();
+ AppOrder appOrder = appOrderMapper.selectOneByOutTradeNo(outTradeNo);
+
+ AppOrder entity = new AppOrder();
+ entity.setId(appOrder.getId());
+ entity.setTradeNo(wexinResult.getTransactionId());
+ entity.setPayStatus(2);
+ entity.setPayTime(new Date());
+ appOrderMapper.updateAppOrder(entity);
+
+ AppOrderPay miniOrderWechatPay = new AppOrderPay();
+ miniOrderWechatPay.setAppid(wexinResult.getAppid());
+ miniOrderWechatPay.setNoncestr(wexinResult.getNonceStr());
+ miniOrderWechatPay.setOuttradeno(wexinResult.getOutTradeNo());
+ miniOrderWechatPay.setResultcode(wexinResult.getResultCode());
+ miniOrderWechatPay.setTimeend(wexinResult.getTimeEnd());
+ miniOrderWechatPay.setTotalfee(wexinResult.getTotalFee());
+ miniOrderWechatPay.setTransactionid(wexinResult.getTransactionId());
+ appOrderPayMapper.insertAppOrderPay(miniOrderWechatPay);
+
+ // 修改用户信息
+ AppUser appUser = appUserMapper.selectAppUserById(appOrder.getUserId());
+ AppUser userEntity = new AppUser();
+ userEntity.setId(appUser.getId());
+ userEntity.setIsMember(0);
+ userEntity.setOrderId(appOrder.getId());
+ // 开始时间,结束时间
+ Date startDate = appUser.getOrderStartTime();
+ if (null == startDate) {
+ startDate = new Date();
+ }
+ Date endDate = appUser.getEndTime();
+ if (null == endDate) {
+ endDate = startDate;
+ }
+
+
+
+ out.println("success");
+ } catch (Exception e) {
+ log.info("异常订单:" + wexinResult.toString());
+ log.info("========>PrintWriter fail");
+ }
+ }
+
+ public WeChatPayResult getResultByXml(String response) {
+ WeChatPayResult wexinResult = new WeChatPayResult();
+ Document document;
+ try {
+ document = DocumentHelper.parseText(response);
+ Element root = document.getRootElement();
+ String cashFee = root.element("cash_fee").getText();
+ String totalFee = root.element("total_fee").getText();
+ wexinResult.setAppid(root.element("appid").getText());
+ wexinResult.setBankType(root.element("bank_type").getText());
+ wexinResult.setCashFee(cashFee);
+ wexinResult.setMchId(root.element("mch_id").getText());
+ wexinResult.setNonceStr(root.element("nonce_str").getText());
+ wexinResult.setOpenid(root.element("openid").getText());
+ wexinResult.setOutTradeNo(root.element("out_trade_no").getText());
+ wexinResult.setResultCode(root.element("result_code").getText());
+ wexinResult.setReturnCode(root.element("return_code").getText());
+ wexinResult.setSign(root.element("sign").getText());
+ wexinResult.setTimeEnd(root.element("time_end").getText());
+ wexinResult.setTotalFee(totalFee);
+ wexinResult.setTradeType(root.element("trade_type").getText());
+ wexinResult.setTransactionId(root.element("transaction_id").getText());
+ return wexinResult;
+ } catch (Exception ex) {
+ log.info("解析失败");
+ }
+ return null;
+ }
+
public PayConfig getPayConfigByAppid() {
PayConfig payConfig = new PayConfig();
payConfig.setAPPID(payConfig.getAPPID());
diff --git a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/domain/AppUser.java b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/domain/AppUser.java
index 3e34aca..6855ecb 100644
--- a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/domain/AppUser.java
+++ b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/domain/AppUser.java
@@ -4,6 +4,7 @@ import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
@@ -15,6 +16,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
* @author wyh
* @date 2024-04-23
*/
+@Data
public class AppUser extends BaseEntity
{
private static final long serialVersionUID = 1L;
@@ -151,6 +153,20 @@ public class AppUser extends BaseEntity
private int isMember;
+ /** 订单记录 */
+ @Excel(name = "订单记录")
+ private Long orderId;
+
+ /** 开始时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date orderStartTime;
+
+ /** 结束时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date orderEndTime;
+
public void setId(Long id)
{
this.id = id;
diff --git a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/mapper/AppOrderMapper.java b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/mapper/AppOrderMapper.java
index 378a217..74f6c69 100644
--- a/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/mapper/AppOrderMapper.java
+++ b/gan-modules/ruoyi-gan/src/main/java/com/ruoyi/app/mapper/AppOrderMapper.java
@@ -18,6 +18,7 @@ public interface AppOrderMapper
* @return 订单
*/
public AppOrder selectAppOrderById(Long id);
+ public AppOrder selectOneByOutTradeNo(String tradeNo);
/**
* 查询订单列表
diff --git a/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppOrderMapper.xml b/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppOrderMapper.xml
index 3b0bfe6..3f642a3 100644
--- a/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppOrderMapper.xml
+++ b/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppOrderMapper.xml
@@ -42,6 +42,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
+
+
insert into app_order
diff --git a/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppUserMapper.xml b/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppUserMapper.xml
index 2516561..cdf38f9 100644
--- a/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppUserMapper.xml
+++ b/gan-modules/ruoyi-gan/src/main/resources/mapper/app/AppUserMapper.xml
@@ -39,6 +39,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
a.id as "id",
@@ -77,7 +80,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- select id, username, password, nickname, email, phone, address, create_time, update_time, avatar_url, education, school, major, start_time, end_time, experience, company_name, industry, job_time, job_name, job_type, skill_id, job_content, type,is_member from app_user
+ select id, username, password, nickname, email, phone, address, create_time, update_time, avatar_url, education, school, major, start_time, end_time, experience, company_name, industry, job_time, job_name, job_type, skill_id, job_content, type,is_member,
+ order_id, order_start_time, order_end_time from app_user
@@ -160,6 +168,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
hobby,
city,
other,
+ is_member,
+ order_id,
+ order_start_time,
+ order_end_time,
#{username},
@@ -194,6 +206,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{hobby},
#{city},
#{other},
+ #{isMember},
+ #{orderId},
+ #{orderStartTime},
+ #{orderEndTime},
@@ -232,6 +248,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
hobby = #{hobby},
city = #{city},
other = #{other},
+ is_member = #{isMember},
+ order_id = #{orderId},
+ order_start_time = #{orderStartTime},
+ order_end_time = #{orderEndTime},
where id = #{id}