package com.stylefeng.guns.modular.huifu.controller;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.huifu.bspay.sdk.opps.core.utils.RsaUtils;
|
import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
|
import com.stylefeng.guns.modular.system.model.Driver;
|
import com.stylefeng.guns.modular.system.model.Withdrawal;
|
import com.stylefeng.guns.modular.system.service.IDriverService;
|
import com.stylefeng.guns.modular.system.service.IUserService;
|
import com.stylefeng.guns.modular.system.service.IWithdrawalService;
|
import lombok.extern.slf4j.Slf4j;
|
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.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.util.Objects;
|
|
/**
|
* @author mitao
|
* @date 2025/11/21
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("/base/dougong")
|
public class DouGongNotifyController {
|
@Autowired
|
private HuiFuProperties huiFuProperties;
|
@Autowired
|
private IWithdrawalService withdrawalService;
|
@Autowired
|
private IUserService userService;
|
@Autowired
|
private IDriverService driverService;
|
|
/**
|
* 斗拱主动取现接口回调
|
* @param request
|
* @param response
|
*/
|
@PostMapping("/user/encashment")
|
public void userEncashment(HttpServletRequest request, HttpServletResponse response) {
|
String sign =request.getParameter("sign");
|
String resp_data = request.getParameter("resp_data");
|
log.info("斗拱用户提现回调响应内容:{}", resp_data);
|
// 使用汇付公钥验签
|
resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
|
boolean verify = RsaUtils.verify(resp_data, huiFuProperties.getRsaPublicKey(), sign);
|
if(verify){
|
JSONObject respDataJson = JSONObject.parseObject(resp_data);
|
String reqSeqId = respDataJson.getString("req_seq_id");
|
String hfSeqId = respDataJson.getString("hf_seq_id");
|
String transStat = respDataJson.getString("trans_stat");//S:成功 F:失败 P:处理中;示例值:S
|
Withdrawal pubWithdrawal = withdrawalService.selectOne(new EntityWrapper<Withdrawal>().eq("reqSeqId", reqSeqId).or().eq("hfSeqId", hfSeqId).last("limit 1"));
|
if (Objects.isNull(pubWithdrawal)) {
|
return;
|
}
|
if ("S".equalsIgnoreCase(transStat)) {
|
pubWithdrawal.setState(2);
|
} else if ("F".equalsIgnoreCase(transStat)) {
|
pubWithdrawal.setState(3);
|
if (pubWithdrawal.getUserType() == 2) {
|
Driver driver = driverService.selectById(pubWithdrawal.getUserId());
|
driver.setLaveBusinessMoney(BigDecimal.valueOf(driver.getLaveBusinessMoney()).add(BigDecimal.valueOf(pubWithdrawal.getMoney())).doubleValue());
|
driverService.updateById(driver);
|
}
|
}
|
withdrawalService.updateById(pubWithdrawal);
|
log.info("更新用户/司机提现记录成功,更新内容“{}", JSONObject.toJSON(pubWithdrawal));
|
PrintWriter writer = null;
|
try {
|
writer = response.getWriter();
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
writer.print("200");
|
writer.close();
|
}
|
}
|
|
}
|