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;
|
import com.ruoyi.other.api.domain.IntegralPay;
|
import com.ruoyi.other.api.domain.IntegralRecord;
|
import com.ruoyi.other.api.domain.ServicePay;
|
import com.ruoyi.other.query.ServiceListQuery;
|
import com.ruoyi.other.service.TIntegralPayService;
|
import com.ruoyi.other.service.TIntegralRecordService;
|
import com.ruoyi.other.service.TIntegralRuleService;
|
import com.ruoyi.other.service.TServicePayService;
|
import com.ruoyi.other.util.UUIDUtil;
|
import com.ruoyi.other.util.payment.wx.PayResult;
|
import com.ruoyi.other.util.payment.wx.WechatPayService;
|
import com.ruoyi.other.vo.ServiceListVO;
|
import com.ruoyi.other.vo.ServiceVO;
|
import com.ruoyi.system.api.domain.SysUser;
|
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 无关风月
|
* @since 2024-08-06
|
*/
|
@RestController
|
@RequestMapping("/wx")
|
public class WXCallBackController {
|
|
@Autowired
|
private TIntegralRuleService integralRuleService;
|
@Autowired
|
private TIntegralRecordService integralRecordService;
|
@Autowired
|
private TIntegralPayService integralPayService;
|
|
@Autowired
|
private TokenService tokenService;
|
@Resource
|
private SysUserClient sysUserClient;
|
@Resource
|
private WechatPayService wechatPayService;
|
@Resource
|
private TServicePayService servicePayService;
|
|
@ResponseBody
|
@PostMapping("/integralCallback")
|
public R integralCallback(HttpServletRequest request) throws IOException {
|
System.err.println("积分充值回调");
|
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);
|
}
|
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(hf_seq_id);
|
integralPayService.updateById(integralPay);
|
IntegralRecord integralRecord = new IntegralRecord();
|
integralRecord.setPayId(integralPay.getId());
|
integralRecord.setSiteId(data.getSiteId());
|
integralRecord.setAppUserId(integralPay.getUserId());
|
integralRecord.setIntegralType(1);
|
integralRecord.setIntegralCount(integralPay.getIntegralCount());
|
integralRecord.setDelFlag(0);
|
integralRecord.setCreateTime(LocalDateTime.now());
|
integralRecordService.save(integralRecord);
|
data.setIntegral(data.getIntegral()!=null?data.getIntegral() + integralPay.getIntegralCount():integralPay.getIntegralCount());
|
sysUserClient.updateSysUser(data);
|
return R.ok(null, "success");
|
}
|
return R.ok(null, "error");
|
}
|
|
@ResponseBody
|
@PostMapping("/serviceCallback")
|
public void serviceCallback(HttpServletRequest request, HttpServletResponse response) {
|
System.err.println("服务费缴纳回调");
|
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) {
|
servicePay.setPayStatus(2);
|
ServicePay servicePayBefore = servicePayService.lambdaQuery()
|
.eq(ServicePay::getUserId, servicePay.getUserId())
|
.eq(ServicePay::getPayStatus, 2)
|
.orderByDesc(ServicePay::getCreateTime)
|
.last("limit 1")
|
.one();
|
if (servicePayBefore != null) {
|
servicePay.setEndTime(servicePayBefore.getEndTime().plusDays(365));
|
} else {
|
servicePay.setEndTime(LocalDateTime.now().plusDays(365));
|
|
}
|
|
servicePay.setPayType(1);
|
servicePay.setPayTime(LocalDateTime.now());
|
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();
|
}
|
|
|
}
|