package com.ruoyi.system.service.impl;
|
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Date;
|
import java.util.HashMap;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.ruoyi.system.mapper.TbCallbackLogMapper;
|
import com.ruoyi.system.domain.TbCallbackLog;
|
import com.ruoyi.system.service.ITbCallbackLogService;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.TypeReference;
|
import com.ruoyi.common.utils.HttpUtil;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
/**
|
* 回调记录Service业务层处理
|
*
|
*/
|
@Service
|
public class TbCallbackLogServiceImpl implements ITbCallbackLogService
|
{
|
private static final Logger log = LoggerFactory.getLogger(TbCallbackLogServiceImpl.class);
|
|
@Autowired
|
private TbCallbackLogMapper tbCallbackLogMapper;
|
|
/**
|
* 查询回调记录
|
*
|
* @param id 回调记录主键
|
* @return 回调记录
|
*/
|
@Override
|
public TbCallbackLog selectTbCallbackLogById(Long id)
|
{
|
return tbCallbackLogMapper.selectTbCallbackLogById(id);
|
}
|
|
/**
|
* 查询回调记录列表
|
*
|
* @param tbCallbackLog 回调记录
|
* @return 回调记录
|
*/
|
@Override
|
public List<TbCallbackLog> selectTbCallbackLogList(TbCallbackLog tbCallbackLog)
|
{
|
return tbCallbackLogMapper.selectTbCallbackLogList(tbCallbackLog);
|
}
|
|
/**
|
* 新增回调记录
|
*
|
* @param tbCallbackLog 回调记录
|
* @return 结果
|
*/
|
@Override
|
public int insertTbCallbackLog(TbCallbackLog tbCallbackLog)
|
{
|
return tbCallbackLogMapper.insertTbCallbackLog(tbCallbackLog);
|
}
|
|
/**
|
* 修改回调记录
|
*
|
* @param tbCallbackLog 回调记录
|
* @return 结果
|
*/
|
@Override
|
public int updateTbCallbackLog(TbCallbackLog tbCallbackLog)
|
{
|
return tbCallbackLogMapper.updateTbCallbackLog(tbCallbackLog);
|
}
|
|
/**
|
* 批量删除回调记录
|
*
|
* @param ids 需要删除的回调记录主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteTbCallbackLogByIds(Long[] ids)
|
{
|
return tbCallbackLogMapper.deleteTbCallbackLogByIds(ids);
|
}
|
|
/**
|
* 删除回调记录信息
|
*
|
* @param id 回调记录主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteTbCallbackLogById(Long id)
|
{
|
return tbCallbackLogMapper.deleteTbCallbackLogById(id);
|
}
|
|
/**
|
* 重试回调
|
*/
|
@Override
|
public int retryTbCallbackLogByIds(Long[] ids) {
|
int successCount = 0;
|
for (Long id : ids) {
|
TbCallbackLog callbackLog = tbCallbackLogMapper.selectTbCallbackLogById(id);
|
if (callbackLog != null) {
|
try {
|
// 解析原始请求参数
|
Map<String, String> params = JSON.parseObject(callbackLog.getRequestParams(),
|
new TypeReference<Map<String, String>>() {});
|
|
// 转换key的首字母为大写
|
Map<String, String> capitalizedParams = new HashMap<>();
|
params.forEach((key, value) -> {
|
String capitalizedKey = key.substring(0, 1).toUpperCase() + key.substring(1);
|
capitalizedParams.put(capitalizedKey, value);
|
});
|
|
// 重新发送回调
|
String response = HttpUtil.post(callbackLog.getCallbackUrl(), capitalizedParams);
|
if (response != null) {
|
callbackLog.setRetryCount(callbackLog.getRetryCount()+1);
|
callbackLog.setResponseResult(response);
|
callbackLog.setStatus("1"); // 更新状态为成功
|
successCount++;
|
tbCallbackLogMapper.updateTbCallbackLog(callbackLog);
|
}
|
} catch (Exception e) {
|
log.error("重试回调失败,ID: " + id + ", 错误: " + e.getMessage());
|
callbackLog.setErrorMsg(e.getMessage());
|
callbackLog.setStatus("0"); // 更新状态为失败
|
tbCallbackLogMapper.updateTbCallbackLog(callbackLog);
|
}
|
}
|
}
|
return successCount;
|
}
|
|
}
|