xuhy
2025-08-10 055ca3590436e8b078955faddfa9ef9fec8b0181
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java
@@ -1,5 +1,6 @@
package com.ruoyi.other.controller;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
@@ -20,21 +21,24 @@
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * <p>
 *  微信回调
 * 微信回调
 * </p>
 *
 * @author 无关风月
@@ -59,22 +63,37 @@
    private WechatPayService wechatPayService;
    @Resource
    private TServicePayService servicePayService;
    @ResponseBody
    @PostMapping("/integralCallback")
    public void integralCallback(HttpServletRequest request, HttpServletResponse response){
    public R integralCallback(HttpServletRequest request) throws IOException {
        System.err.println("积分充值回调");
        PayResult payResult= null;
        try {
            payResult = wechatPayService.processNotify(request);
        } catch (Exception e) {
            throw new RuntimeException(e);
        Map<String, String> params = new HashMap<String, String>();
        System.err.println("请求"+request);
        BufferedReader reader = request.getReader();
        String string1 = reader.toString();
        System.err.println("请求reader"+string1);
        StringBuilder requestBody = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            requestBody.append(line);
        }
        IntegralPay integralPay = integralPayService.lambdaQuery().eq(IntegralPay::getCode, payResult.getOrderNumber()).one();
        if (integralPay != null && integralPay.getPayStatus() == 1){
        System.err.println("全部请求体"+requestBody);
        JSONObject jsonObject = JSONObject.parseObject(requestBody.toString());
        JSONObject resp_data = jsonObject.getJSONObject("resp_data");
        String string = resp_data.getString("trans_stat");
        if (!string.equals("S")){
            return R.ok();
        }
        String req_seq_id = resp_data.getString("req_seq_id");
        String hf_seq_id = resp_data.getString("hf_seq_id");
        IntegralPay integralPay = integralPayService.lambdaQuery().eq(IntegralPay::getCode, req_seq_id).one();
        if (integralPay != null && integralPay.getPayStatus() == 1) {
            SysUser data = sysUserClient.getSysUser(integralPay.getUserId()).getData();
            integralPay.setPayStatus(2);
            integralPay.setPayTime(LocalDateTime.now());
            integralPay.setOrderNumber(payResult.getTransactionId());
            integralPay.setOrderNumber(hf_seq_id);
            integralPayService.updateById(integralPay);
            IntegralRecord integralRecord = new IntegralRecord();
            integralRecord.setPayId(integralPay.getId());
@@ -85,42 +104,35 @@
            integralRecord.setDelFlag(0);
            integralRecord.setCreateTime(LocalDateTime.now());
            integralRecordService.save(integralRecord);
            data.setIntegral(data.getIntegral()+integralPay.getIntegralCount());
            data.setIntegral(data.getIntegral()!=null?data.getIntegral() + integralPay.getIntegralCount():integralPay.getIntegralCount());
            sysUserClient.updateSysUser(data);
            return R.ok(null, "success");
        }
            response.setStatus(200);
            PrintWriter out = null;
            try {
                out = response.getWriter();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            out.println("success");
            out.flush();
            out.close();
        return R.ok(null, "error");
    }
    @ResponseBody
    @PostMapping("/serviceCallback")
    public void serviceCallback(HttpServletRequest request, HttpServletResponse response){
    public void serviceCallback(HttpServletRequest request, HttpServletResponse response) {
        System.err.println("服务费缴纳回调");
        PayResult payResult= null;
        PayResult payResult = null;
        try {
            payResult = wechatPayService.processNotify(request);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        ServicePay servicePay = servicePayService.lambdaQuery().eq(ServicePay::getCode, payResult.getOrderNumber()).one();
        if (servicePay != null && servicePay.getPayStatus() == 1){
        if (servicePay != null && servicePay.getPayStatus() == 1) {
            servicePay.setPayStatus(2);
            ServicePay servicePayBefore = servicePayService.lambdaQuery()
                    .eq(ServicePay::getUserId, servicePay.getUserId())
                    .eq(ServicePay::getPayStatus,2)
                    .eq(ServicePay::getPayStatus, 2)
                    .orderByDesc(ServicePay::getCreateTime)
                    .last("limit 1")
                    .one();
            if (servicePayBefore!=null){
            if (servicePayBefore != null) {
                servicePay.setEndTime(servicePayBefore.getEndTime().plusDays(365));
            }else{
            } else {
                servicePay.setEndTime(LocalDateTime.now().plusDays(365));
            }
@@ -130,18 +142,17 @@
            servicePay.setOrderNumber(payResult.getTransactionId());
            servicePayService.updateById(servicePay);
        }
            response.setStatus(200);
            PrintWriter out = null;
            try {
                out = response.getWriter();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            out.println("success");
            out.flush();
            out.close();
        response.setStatus(200);
        PrintWriter out = null;
        try {
            out = response.getWriter();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        out.println("success");
        out.flush();
        out.close();
    }
}