wlzboy
2025-09-21 7d81ce01560d384f15212edc40ebeaa9924913f9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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;
    }