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 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 params = JSON.parseObject(callbackLog.getRequestParams(), new TypeReference>() {}); // 转换key的首字母为大写 Map 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; } }