refactor(cabinet): 在查询中增加按cell_id分组以优化数据展示

在SearchCabinetCellWithOrdersQuery中增加groupBy语句,确保查询结果按cell_id分组,避免重复数据展示。同时,将CabinetCellController和CabinetCellApplicationService中的查询类型统一为SearchCabinetCellWithOrdersQuery,以保持一致性。
This commit is contained in:
dzq 2025-04-26 16:09:43 +08:00
parent f33f74b20a
commit 3994d99321
4 changed files with 21 additions and 5 deletions

View File

@ -11,6 +11,7 @@ import com.agileboot.domain.cabinet.cell.command.UpdateCabinetCellCommand;
import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
import com.agileboot.domain.cabinet.cell.dto.CabinetCellDTO;
import com.agileboot.domain.cabinet.cell.query.SearchCabinetCellQuery;
import com.agileboot.domain.cabinet.cell.query.SearchCabinetCellWithOrdersQuery;
import com.agileboot.domain.common.command.BulkOperationCommand;
import io.swagger.v3.oas.annotations.Operation;
import java.util.List;
@ -38,7 +39,7 @@ public class CabinetCellController extends BaseController {
@Operation(summary = "格口列表")
@GetMapping
public ResponseDTO<PageDTO<CabinetCellDTO>> list(SearchCabinetCellQuery<CabinetCellEntity> query) {
public ResponseDTO<PageDTO<CabinetCellDTO>> list(SearchCabinetCellWithOrdersQuery<CabinetCellEntity> query) {
PageDTO<CabinetCellDTO> page = cabinetCellApplicationService.getCabinetCellList(query);
return ResponseDTO.ok(page);
}

View File

@ -2,6 +2,7 @@ package com.agileboot.domain.cabinet.cell;
import com.agileboot.common.core.page.PageDTO;
import com.agileboot.domain.cabinet.cell.dto.CabinetCellWithOrderCountDTO;
import com.agileboot.domain.cabinet.cell.query.SearchCabinetCellWithOrdersQuery;
import com.agileboot.domain.common.command.BulkOperationCommand;
import com.agileboot.domain.cabinet.cell.command.AddCabinetCellCommand;
import com.agileboot.domain.cabinet.cell.command.UpdateCabinetCellCommand;
@ -29,7 +30,7 @@ public class CabinetCellApplicationService {
private final CabinetCellModelFactory cabinetCellModelFactory;
private final ShopGoodsService shopGoodsService;
public PageDTO<CabinetCellDTO> getCabinetCellList(SearchCabinetCellQuery<CabinetCellEntity> query) {
public PageDTO<CabinetCellDTO> getCabinetCellList(SearchCabinetCellWithOrdersQuery<CabinetCellEntity> query) {
// Page<CabinetCellEntity> page = cabinetCellService.getCellList(query);
Page<CabinetCellWithOrderCountDTO> page = cabinetCellService.getCellListWithOrders(query);
List<ShopGoodsEntity> goodsList = shopGoodsService.selectAll();

View File

@ -31,7 +31,8 @@ public class SearchCabinetCellWithOrdersQuery<T> extends AbstractPageQuery<T> {
.eq(usageStatus != null, "cc.usage_status", usageStatus)
.eq(availableStatus != null, "cc.available_status", availableStatus)
.eq("cc.deleted", false)
.between(startTime != null && endTime != null, "cc.create_time", startTime, endTime);
.between(startTime != null && endTime != null, "cc.create_time", startTime, endTime)
.groupBy("cc.cell_id");
this.timeRangeColumn = "create_time";

View File

@ -15,10 +15,13 @@ import com.agileboot.common.utils.OpenSignUtil;
import com.agileboot.domain.shop.order.model.OrderModel;
import com.agileboot.domain.shop.order.model.OrderModelFactory;
import com.agileboot.domain.shop.payment.dto.*;
import com.agileboot.domain.shop.paymentOperationLog.PaymentOperationLogApplicationService;
import com.agileboot.domain.shop.paymentOperationLog.command.AddPaymentOperationLogCommand;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.stereotype.Service;
import java.net.URLEncoder;
@ -32,13 +35,16 @@ import java.util.UUID;
@RequiredArgsConstructor
public class PaymentApplicationService {
private final OrderModelFactory orderModelFactory;
private final PaymentOperationLogApplicationService paymentOperationLogApplicationService;
private static final Object LOCKER = new Object();
public WxJsApiPreCreateResponse callJsApiPreCreate(WxJsApiPreCreateRequest request) {
String gatewayUrl = PayApiConstants.pay_url;
String result = "";
String jsonBody = "";
try {
String jsonBody = JSONUtil.toJsonStr(request);
jsonBody = JSONUtil.toJsonStr(request);
log.info("callJsApiPreCreate 请求body{}", jsonBody);
// 使用try-with-resources自动关闭连接
@ -50,7 +56,7 @@ public class PaymentApplicationService {
// 获取HTTP状态码和响应体
int status = httpResponse.getStatus();
String result = httpResponse.body();
result = httpResponse.body();
log.info("callJsApiPreCreate 响应body{}", result);
// 先校验HTTP状态码
@ -74,6 +80,13 @@ public class PaymentApplicationService {
}
} catch (Exception e) {
AddPaymentOperationLogCommand paymentOperationLogCommand = new AddPaymentOperationLogCommand();
paymentOperationLogCommand.setParams("body" + jsonBody + " result" + result);
paymentOperationLogCommand.setOperationType("submitOrder");
paymentOperationLogCommand.setStatus(2);
paymentOperationLogCommand.setRemark(ExceptionUtils.getStackTrace(e));
paymentOperationLogCommand.initBaseEntity();
paymentOperationLogApplicationService.addPaymentOperationLog(paymentOperationLogCommand);
throw new RuntimeException("支付网关调用失败:" + e.getLocalizedMessage(), e);
}
}