优化记录日志功能

This commit is contained in:
wuweihua
2026-09-11 16:12:01 +08:00
parent 06211adaac
commit 719d8c7208
13 changed files with 346 additions and 161 deletions
@@ -0,0 +1,61 @@
package com.ruoyi.web.controller.api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.validation.BindException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.price.domain.vo.TmsPriceBillRequest;
import com.ruoyi.price.domain.vo.TmsPriceQuoteRequest;
import com.ruoyi.price.search.EsBizLogSupport;
import com.ruoyi.price.search.EsLogType;
import com.ruoyi.price.search.IBillSearchStore;
import com.ruoyi.web.controller.price.BillingController;
/**
* Persist validation failures of quote/bill APIs to Elasticsearch.
*/
@Order(0)
@RestControllerAdvice(assignableTypes = { TmsPriceController.class, BillingController.class })
public class PriceSyncEsLogAdvice
{
@Autowired
private IBillSearchStore billSearchStore;
@ExceptionHandler(MethodArgumentNotValidException.class)
public AjaxResult handleValid(MethodArgumentNotValidException e)
{
String message = e.getBindingResult().getFieldError() == null
? e.getMessage()
: e.getBindingResult().getFieldError().getDefaultMessage();
saveFail(e.getBindingResult().getTarget(), message);
return AjaxResult.error(message);
}
@ExceptionHandler(BindException.class)
public AjaxResult handleBind(BindException e)
{
String message = e.getAllErrors().isEmpty() ? e.getMessage() : e.getAllErrors().get(0).getDefaultMessage();
saveFail(e.getTarget(), message);
return AjaxResult.error(message);
}
private void saveFail(Object target, String message)
{
if (target instanceof TmsPriceBillRequest)
{
TmsPriceBillRequest request = (TmsPriceBillRequest) target;
EsBizLogSupport.saveFail(billSearchStore, EsLogType.BILL, EsBizLogSupport.billFailBizId(request), request,
message);
return;
}
if (target instanceof TmsPriceQuoteRequest)
{
TmsPriceQuoteRequest request = (TmsPriceQuoteRequest) target;
EsBizLogSupport.saveFail(billSearchStore, EsLogType.QUOTE, EsBizLogSupport.quoteFailBizId(request),
request, message);
}
}
}
@@ -19,6 +19,9 @@ import com.ruoyi.framework.config.properties.TmsApiProperties;
import com.ruoyi.price.domain.vo.TmsPriceBillRequest;
import com.ruoyi.price.domain.vo.TmsPriceQuoteRequest;
import com.ruoyi.price.domain.vo.TmsPriceQuoteResult;
import com.ruoyi.price.search.EsBizLogSupport;
import com.ruoyi.price.search.EsLogType;
import com.ruoyi.price.search.IBillSearchStore;
import com.ruoyi.price.service.IPrcBillService;
import com.ruoyi.price.service.ITmsPriceQuoteService;
@@ -46,6 +49,9 @@ public class TmsPriceController extends BaseController
@Autowired
private TmsApiProperties tmsApiProperties;
@Autowired
private IBillSearchStore billSearchStore;
/**
* Quote by customerId + productCode + country + weight.
* Match: customer package FIXED > DISCOUNT > product default.
@@ -55,7 +61,16 @@ public class TmsPriceController extends BaseController
@RequestHeader(value = HEADER_API_CODE, required = false) String headerApiCode,
@Validated @RequestBody TmsPriceQuoteRequest request)
{
assertApiCode(headerApiCode, request == null ? null : request.getApiCode());
try
{
assertApiCode(headerApiCode, request == null ? null : request.getApiCode());
}
catch (ServiceException e)
{
EsBizLogSupport.saveFail(billSearchStore, EsLogType.QUOTE, EsBizLogSupport.quoteFailBizId(request),
request, e);
throw e;
}
TmsPriceQuoteResult result = tmsPriceQuoteService.quote(request);
return success(result);
}
@@ -69,7 +84,15 @@ public class TmsPriceController extends BaseController
@RequestHeader(value = HEADER_API_CODE, required = false) String headerApiCode,
@Validated @RequestBody TmsPriceBillRequest request)
{
assertApiCode(headerApiCode, request == null ? null : request.getApiCode());
try
{
assertApiCode(headerApiCode, request == null ? null : request.getApiCode());
}
catch (ServiceException e)
{
EsBizLogSupport.saveFail(billSearchStore, EsLogType.BILL, EsBizLogSupport.billFailBizId(request), request, e);
throw e;
}
TmsPriceQuoteResult result = prcBillService.bill(request);
return success(result);
}
@@ -30,12 +30,13 @@ public class EsLogController extends BaseController
@GetMapping("/list")
public TableDataInfo list(
@RequestParam(value = "logType", required = false) String logType,
@RequestParam(value = "bizId", required = false) String bizId)
@RequestParam(value = "bizId", required = false) String bizId,
@RequestParam(value = "status", required = false) String status)
{
PageDomain pageDomain = TableSupport.buildPageRequest();
int pageNum = pageDomain.getPageNum() == null ? 1 : pageDomain.getPageNum().intValue();
int pageSize = pageDomain.getPageSize() == null ? 10 : pageDomain.getPageSize().intValue();
BillSearchPage page = billSearchStore.search(logType, bizId, pageNum, pageSize);
BillSearchPage page = billSearchStore.search(logType, bizId, status, pageNum, pageSize);
TableDataInfo rsp = new TableDataInfo();
rsp.setCode(HttpStatus.SUCCESS);
rsp.setMsg("\u67e5\u8be2\u6210\u529f");