fix(hjmCar): 调整无坐标分页查询默认限制及状态
- 将无纬度或经度时的分页限制由2000缩减到500 - 设置无坐标查询时默认状态为1,优化数据筛选 - 删除了历史退款订单修复相关的控制器与服务代码 - 移除多个环境配置文件,清理无用资源 - 删除多项测试代码,去除无用单元测试与集成测试代码
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user