From 5d5a187689e51a8a74f16b91d23d32a74b39e803 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期二, 06 五月 2025 18:48:51 +0800
Subject: [PATCH] feat: 新增回调手动重推
---
ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderStatusCallBackVo.java | 3
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 33 ++++++++
ruoyi-ui/src/api/system/callbacklog.js | 8 ++
ruoyi-ui/src/views/system/callbacklog/index.vue | 63 +++++++++++----
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java | 17 +++-
ruoyi-system/src/main/java/com/ruoyi/system/service/ITbCallbackLogService.java | 8 ++
ruoyi-system/src/main/resources/mapper/system/TbCallbackLogMapper.xml | 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbCallbackLogController.java | 11 ++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCallbackLogServiceImpl.java | 52 +++++++++++++
9 files changed, 173 insertions(+), 24 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbCallbackLogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbCallbackLogController.java
index 77886ba..bde35f7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbCallbackLogController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbCallbackLogController.java
@@ -101,4 +101,15 @@
{
return toAjax(tbCallbackLogService.deleteTbCallbackLogByIds(ids));
}
+
+ /**
+ * 閲嶈瘯鍥炶皟
+ */
+ @PreAuthorize("@ss.hasPermi('system:callbacklog:retry')")
+ @Log(title = "鍥炶皟璁板綍", businessType = BusinessType.UPDATE)
+ @PostMapping("/retry/{ids}")
+ public AjaxResult retry(@PathVariable Long[] ids)
+ {
+ return toAjax(tbCallbackLogService.retryTbCallbackLogByIds(ids));
+ }
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java
index 50ab317..2ed5f28 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java
@@ -4,6 +4,7 @@
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.annotation.Anonymous;
@@ -83,8 +84,8 @@
* @param tbOrders
* @return
*/
-// @Anonymous(needSign = true)
- @Anonymous
+ @Anonymous(needSign = true)
+// @Anonymous
// @Log(title = "orders", businessType = BusinessType.INSERT)
@ApiOperation("鏂板璁㈠崟")
@ApiImplicitParams({
@@ -103,17 +104,25 @@
@ApiImplicitParam(name = "bookingPrice", value = "鎶ヤ环", dataType = "BigDecimal")
})
@PostMapping("/add")
- public AjaxResult add(@RequestBody TbOrders tbOrders) {
+ public AjaxResult add(@RequestBody TbOrders tbOrders,String appId) {
try {
if (tbOrders == null || tbOrders.getOrderID() == null) {
return AjaxResult.error("浼犺緭鏁版嵁涓虹┖锛�");
}
+ if(appId ==null|| Objects.equals(appId, ""))
+ {
+ return AjaxResult.error("appid涓嶈兘涓虹┖锛�");
+ }
+
+ tbOrders.setAppId(appId);
tbOrders.setCreateTime(new Date());
tbOrdersService.insertTbOrders(tbOrders);
- SysClientApp scApp = clientAppService.selectSysClientAppByAppId(1L);
+
+ SysClientApp scApp = clientAppService.selectSysClientAppByAppKey(tbOrders.getAppId());
+
ServiceOrderAppVo model = new ServiceOrderAppVo();
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index d4cfcca..2f76290 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -25,6 +25,29 @@
public class RyTask
{
private static final Logger log = LoggerFactory.getLogger(RyTask.class);
+
+ // 娣诲姞鐘舵�佹槧灏勫瓧鍏�
+ private static final Map<String, String> ORDER_STATUS_MAP = new HashMap<String, String>() {{
+ put("-1", "鏃犳晥鍙栨秷");
+ put("1", "鏈姤浠�");
+ put("2", "宸叉姤浠�");
+ put("3", "1 - 瀹屽叏鏈‘璁�");
+ put("4", "2 - 閮ㄥ垎宸茬‘璁�");
+ put("5", "鏈嚭杞�");
+ put("6", "3 - 宸插嚭杞︼紙鍘绘帴鎮h�呴�斾腑锛�");
+ put("7", "宸插嚭杞︼紙绛夊緟鎮h�咃級");
+ put("8", "4 - 宸插嚭杞︼紙鏈嶅姟涓級");
+ put("9", "5 - 宸查�佽揪锛堝洖绋嬩腑锛�");
+ put("10", "宸茶繑鍥�");
+ put("11", "璺戠┖鍗曪紝宸茶繑鍥�");
+ put("12", "鍙栨秷");
+ put("13", "0 - 鏂拌皟搴﹀崟锛堟湭涓嬪彂锛�");
+ put("14", "宸叉彁浜わ紝绛夊緟瀹℃牳");
+ put("15", "瀹℃牳瀹屾垚");
+ put("16", "瀹℃牳涓嶉�氳繃");
+ put("17", "宸茬珯鐐�");
+ }};
+
@Autowired
private IAOrderStatusService orderStatusService;
@@ -54,6 +77,9 @@
{
System.out.println("鎵ц鏃犲弬鏂规硶");
}
+
+
+
/**
* 鍥炶皟鎺ㄩ�佺姸鎬�
@@ -125,7 +151,12 @@
Map<String, String> map = new HashMap<>();
map.put("orderID", tbOrders.getOrderID().toString());
map.put("thirdOrderNo", orderStatus.getServiceOrdID());
- map.put("orderStatus","1");
+ map.put("orderStatus", ORDER_STATUS_MAP.entrySet()
+ .stream()
+ .filter(entry -> entry.getValue().equals(orderStatus.getMsg()))
+ .map(Map.Entry::getKey)
+ .findFirst()
+ .orElse("0"));
map.put("orderRemark", orderStatus.getMsg());
map.put("plateNo",carLicense);
map.put("driverMobile",driverMobiles.toString());
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderStatusCallBackVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderStatusCallBackVo.java
index dc74813..26a8635 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderStatusCallBackVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderStatusCallBackVo.java
@@ -1,8 +1,11 @@
package com.ruoyi.system.domain;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class OrderStatusCallBackVo {
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ITbCallbackLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ITbCallbackLogService.java
index 465bc20..77056b6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ITbCallbackLogService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ITbCallbackLogService.java
@@ -56,4 +56,12 @@
* @return 缁撴灉
*/
public int deleteTbCallbackLogById(Long id);
+
+ /**
+ * 閲嶈瘯鍥炶皟
+ *
+ * @param ids 闇�瑕侀噸璇曠殑鍥炶皟璁板綍涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int retryTbCallbackLogByIds(Long[] ids);
}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCallbackLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCallbackLogServiceImpl.java
index 82e079a..0dbb53b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCallbackLogServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCallbackLogServiceImpl.java
@@ -1,11 +1,19 @@
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涓氬姟灞傚鐞�
@@ -14,6 +22,8 @@
@Service
public class TbCallbackLogServiceImpl implements ITbCallbackLogService
{
+ private static final Logger log = LoggerFactory.getLogger(TbCallbackLogServiceImpl.class);
+
@Autowired
private TbCallbackLogMapper tbCallbackLogMapper;
@@ -88,4 +98,46 @@
{
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 {
+ // 瑙f瀽鍘熷璇锋眰鍙傛暟
+ 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("閲嶈瘯鍥炶皟澶辫触锛孖D: " + id + ", 閿欒: " + e.getMessage());
+ callbackLog.setErrorMsg(e.getMessage());
+ callbackLog.setStatus("0"); // 鏇存柊鐘舵�佷负澶辫触
+ tbCallbackLogMapper.updateTbCallbackLog(callbackLog);
+ }
+ }
+ }
+ return successCount;
+ }
+
}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/TbCallbackLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbCallbackLogMapper.xml
index 24be3d7..158d758 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TbCallbackLogMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TbCallbackLogMapper.xml
@@ -37,7 +37,7 @@
AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
</if>
</where>
- order by create_time,id desc
+ order by id desc
</select>
<select id="selectTbCallbackLogById" parameterType="Long" resultMap="TbCallbackLogResult">
diff --git a/ruoyi-ui/src/api/system/callbacklog.js b/ruoyi-ui/src/api/system/callbacklog.js
index 97e4921..11c1758 100644
--- a/ruoyi-ui/src/api/system/callbacklog.js
+++ b/ruoyi-ui/src/api/system/callbacklog.js
@@ -42,3 +42,11 @@
method: 'delete'
})
}
+
+// 閲嶈瘯鍥炶皟
+export function retryCallbacklog(ids) {
+ return request({
+ url: '/system/callbacklog/retry/' + ids,
+ method: 'post'
+ })
+}
diff --git a/ruoyi-ui/src/views/system/callbacklog/index.vue b/ruoyi-ui/src/views/system/callbacklog/index.vue
index 2e45a89..1a0b084 100644
--- a/ruoyi-ui/src/views/system/callbacklog/index.vue
+++ b/ruoyi-ui/src/views/system/callbacklog/index.vue
@@ -48,8 +48,8 @@
</el-form>
<el-row :gutter="10" class="mb8">
- <!-- <el-col :span="1.5">
- <el-button
+ <el-col :span="1.5">
+ <!-- <el-button
type="primary"
plain
icon="el-icon-plus"
@@ -78,8 +78,9 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:callbacklog:remove']"
- >鍒犻櫎</el-button>
- </el-col> -->
+ >鍒犻櫎</el-button> -->
+
+ </el-col>
<el-col :span="1.5">
<el-button
type="warning"
@@ -89,6 +90,16 @@
@click="handleExport"
v-hasPermi="['system:callbacklog:export']"
>瀵煎嚭</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-s-promotion"
+ size="mini"
+ :disabled="multiple"
+ @click="handleBatchRetry"
+ >鎵归噺閲嶈瘯</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@@ -116,24 +127,17 @@
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
- <!-- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
- icon="el-icon-edit"
- @click="handleUpdate(scope.row)"
- v-hasPermi="['system:callbacklog:edit']"
- >淇敼</el-button>
- <el-button
- size="mini"
- type="text"
- icon="el-icon-delete"
- @click="handleDelete(scope.row)"
- v-hasPermi="['system:callbacklog:remove']"
- >鍒犻櫎</el-button>
+ icon="el-icon-s-promotion"
+ @click="handleRetry(scope.row)"
+ v-hasPermi="['system:callbacklog:retry']"
+ >閲嶈瘯鍥炶皟</el-button>
</template>
- </el-table-column> -->
+ </el-table-column>
</el-table>
<pagination
@@ -181,7 +185,7 @@
</template>
<script>
-import { listCallbacklog, getCallbacklog, delCallbacklog, addCallbacklog, updateCallbacklog } from "@/api/system/callbacklog";
+import { listCallbacklog, getCallbacklog, delCallbacklog, addCallbacklog, updateCallbacklog, retryCallbacklog } from "@/api/system/callbacklog";
export default {
name: "Callbacklog",
@@ -328,6 +332,29 @@
this.download('system/callbacklog/export', {
...this.queryParams
}, `callbacklog_${new Date().getTime()}.xlsx`)
+ },
+ /** 瑙﹀彂鍗曚釜鍥炶皟閲嶈瘯 */
+ handleRetry(row) {
+ const id = row.id;
+ this.$modal.confirm('鏄惁纭閲嶈瘯璇ュ洖璋冭褰曪紵').then(function() {
+ return retryCallbacklog(id);
+ }).then(() => {
+ this.getList();
+ this.$modal.msgSuccess("瑙﹀彂閲嶈瘯鎴愬姛");
+ }).catch(() => {});
+ },
+ /** 鎵归噺瑙﹀彂鍥炶皟閲嶈瘯 */
+ handleBatchRetry() {
+ if (this.ids.length === 0) {
+ this.$modal.msgError("璇烽�夋嫨闇�瑕侀噸璇曠殑璁板綍");
+ return;
+ }
+ this.$modal.confirm('鏄惁纭閲嶈瘯閫変腑鐨�' + this.ids.length + '鏉″洖璋冭褰曪紵').then(() => {
+ return retryCallbacklog(this.ids.join(','));
+ }).then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鎵归噺閲嶈瘯鎴愬姛");
+ }).catch(() => {});
}
}
};
--
Gitblit v1.9.1