fix(hjmCar): 调整无坐标分页查询默认限制及状态

- 将无纬度或经度时的分页限制由2000缩减到500
- 设置无坐标查询时默认状态为1,优化数据筛选
- 删除了历史退款订单修复相关的控制器与服务代码
- 移除多个环境配置文件,清理无用资源
- 删除多项测试代码,去除无用单元测试与集成测试代码
This commit is contained in:
2026-04-29 22:14:07 +08:00
parent 4ec637d7f8
commit 01101d422f
31 changed files with 2 additions and 3078 deletions

View File

@@ -336,7 +336,8 @@ public class HjmCarController extends BaseController {
if (param.getLatitude() == null || param.getLatitude().isEmpty() ||
param.getLongitude() == null || param.getLongitude().isEmpty()) {
// 如果坐标为空,直接返回分页结果
param.setLimit(2000L);
param.setLimit(500L);
param.setStatus(1);
return success(hjmCarService.pageRel(param));
}

View File

@@ -1,72 +0,0 @@
package com.gxwebsoft.shop.controller;
import cn.hutool.core.util.ObjectUtil;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.shop.dto.RefundedOrderGltRepairRequest;
import com.gxwebsoft.shop.service.ShopOrderGltRepairService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* 历史订单修复:用于对“已退款的旧订单”补偿撤销水票相关数据。
*/
@Tag(name = "订单修复")
@RestController
@RequestMapping("/api/shop/shop-order/repair")
public class ShopOrderGltRepairController extends BaseController {
@Resource
private ShopOrderGltRepairService shopOrderGltRepairService;
@PreAuthorize("hasAuthority('shop:shopOrder:manage')")
@Operation(summary = "修复:已退款旧订单补偿撤销水票/释放计划/送水单支持dryRun预览")
@PostMapping("/revoke-glt-after-refund")
public ApiResult<?> revokeGltAfterRefund(@RequestBody RefundedOrderGltRepairRequest req) {
if (req == null) {
return fail("请求体不能为空");
}
Integer tenantId = ObjectUtil.defaultIfNull(req.getTenantId(), getTenantId());
if (tenantId == null) {
return fail("tenantId不能为空");
}
boolean dryRun = req.getDryRun() == null || req.getDryRun();
// 防误操作:既未指定订单,也未指定时间窗口时,只允许 dryRun
boolean noTargets = (req.getOrderIds() == null || req.getOrderIds().isEmpty())
&& (req.getOrderNos() == null || req.getOrderNos().isEmpty())
&& req.getRefundTimeStart() == null
&& req.getRefundTimeEnd() == null;
if (noTargets && !dryRun) {
return fail("请指定 orderIds/orderNos 或 refundTimeStart/refundTimeEnd否则仅允许 dryRun=true 预览");
}
ShopOrderGltRepairService.RepairResult r = shopOrderGltRepairService.revokeTicketsForRefundedOrders(
tenantId,
req.getOrderIds(),
req.getOrderNos(),
req.getRefundTimeStart(),
req.getRefundTimeEnd(),
req.getBatchSize(),
dryRun
);
Map<String, Object> data = new HashMap<>();
data.put("tenantId", tenantId);
data.put("dryRun", r.dryRun());
data.put("scannedOrders", r.scannedOrders());
data.put("ordersWithTicketsRevoked", r.ordersWithTicketsRevoked());
data.put("revokedTicketCount", r.revokedTicketCount());
data.put("processedOrderIds", r.processedOrderIds());
return success(data);
}
}

View File

@@ -1,109 +0,0 @@
package com.gxwebsoft.shop.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gxwebsoft.glt.service.GltTicketRevokeService;
import com.gxwebsoft.shop.entity.ShopOrder;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* 历史订单修复:对已退款订单补偿撤销水票相关数据。
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class ShopOrderGltRepairService {
/** shop_order.order_status退款成功 */
private static final int ORDER_STATUS_REFUND_SUCCESS = 6;
private final ShopOrderService shopOrderService;
private final GltTicketRevokeService gltTicketRevokeService;
public RepairResult revokeTicketsForRefundedOrders(Integer tenantId,
List<Integer> orderIds,
List<String> orderNos,
LocalDateTime refundTimeStart,
LocalDateTime refundTimeEnd,
Integer batchSize,
boolean dryRun) {
if (tenantId == null) {
throw new IllegalArgumentException("tenantId不能为空");
}
int limit = batchSize == null ? 200 : Math.max(1, Math.min(batchSize, 2000));
List<ShopOrder> orders = new ArrayList<>();
// 1) 精准修复:指定 orderIds / orderNos
if (orderIds != null && !orderIds.isEmpty()) {
orders = shopOrderService.list(new LambdaQueryWrapper<ShopOrder>()
.eq(ShopOrder::getTenantId, tenantId)
.eq(ShopOrder::getDeleted, 0)
.eq(ShopOrder::getOrderStatus, ORDER_STATUS_REFUND_SUCCESS)
.in(ShopOrder::getOrderId, orderIds)
.last("limit " + limit));
} else if (orderNos != null && !orderNos.isEmpty()) {
orders = shopOrderService.list(new LambdaQueryWrapper<ShopOrder>()
.eq(ShopOrder::getTenantId, tenantId)
.eq(ShopOrder::getDeleted, 0)
.eq(ShopOrder::getOrderStatus, ORDER_STATUS_REFUND_SUCCESS)
.in(ShopOrder::getOrderNo, orderNos)
.last("limit " + limit));
} else {
// 2) 扫描修复:按 refundTime 窗口分页处理
LambdaQueryWrapper<ShopOrder> qw = new LambdaQueryWrapper<ShopOrder>()
.eq(ShopOrder::getTenantId, tenantId)
.eq(ShopOrder::getDeleted, 0)
.eq(ShopOrder::getOrderStatus, ORDER_STATUS_REFUND_SUCCESS);
if (refundTimeStart != null) {
qw.ge(ShopOrder::getRefundTime, refundTimeStart);
}
if (refundTimeEnd != null) {
qw.le(ShopOrder::getRefundTime, refundTimeEnd);
}
orders = shopOrderService.list(qw.orderByAsc(ShopOrder::getRefundTime).orderByAsc(ShopOrder::getOrderId).last("limit " + limit));
}
int scanned = orders == null ? 0 : orders.size();
int revokedTickets = 0;
int revokedOrders = 0;
List<Integer> processedOrderIds = new ArrayList<>();
if (orders != null) {
for (ShopOrder o : orders) {
if (o == null || o.getOrderId() == null) {
continue;
}
processedOrderIds.add(o.getOrderId());
if (dryRun) {
continue;
}
int revoked = gltTicketRevokeService.revokeByShopOrder(
tenantId,
o.getOrderId(),
o.getOrderNo(),
"历史退款订单补偿撤销水票"
);
if (revoked > 0) {
revokedTickets += revoked;
revokedOrders++;
}
}
}
return new RepairResult(scanned, revokedOrders, revokedTickets, processedOrderIds, dryRun);
}
public record RepairResult(int scannedOrders,
int ordersWithTicketsRevoked,
int revokedTicketCount,
List<Integer> processedOrderIds,
boolean dryRun) {
}
}