v1.0.13 #20
+26
@@ -15,6 +15,8 @@ import com.imyeyu.api.modules.gao.service.GaoPointAccountService;
|
||||
import com.imyeyu.api.modules.gao.service.GaoPointLedgerService;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoPointAdjustRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoPointLedgerPage;
|
||||
import com.imyeyu.api.modules.system.entity.Logger;
|
||||
import com.imyeyu.api.modules.system.service.LoggerService;
|
||||
import com.imyeyu.api.modules.user.service.UserLoginService;
|
||||
import com.imyeyu.java.TimiJava;
|
||||
import com.imyeyu.java.bean.timi.TimiCode;
|
||||
@@ -24,6 +26,7 @@ import com.imyeyu.spring.mapper.BaseMapper;
|
||||
import com.imyeyu.spring.service.AbstractEntityService;
|
||||
import com.imyeyu.utils.Time;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -34,6 +37,7 @@ import java.util.Map;
|
||||
///
|
||||
/// @author Codex
|
||||
/// @since 2026-08-11
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class GaoPointLedgerServiceImplement extends AbstractEntityService<GaoPointLedger, String> implements GaoPointLedgerService {
|
||||
@@ -42,6 +46,7 @@ public class GaoPointLedgerServiceImplement extends AbstractEntityService<GaoPoi
|
||||
private final GaoPointAccountService accountService;
|
||||
private final GaoCustomerService customerService;
|
||||
private final AttachmentService attachmentService;
|
||||
private final LoggerService loggerService;
|
||||
private final UserLoginService userLoginService;
|
||||
|
||||
@Override
|
||||
@@ -128,14 +133,21 @@ public class GaoPointLedgerServiceImplement extends AbstractEntityService<GaoPoi
|
||||
}
|
||||
|
||||
private GaoPointLedger apply(String storeId, String customerId, GaoPointLedger.ChangeType changeType, long pointDelta, String ruleId, String eventId, String eventRecordId, JsonNode sourcePayload, String idempotencyKey, String remark, String operatorUserId, Long occurredAt) {
|
||||
Logger logger = new Logger(Logger.Module.GAO, "GAO_POINT_LEDGER_APPLY");
|
||||
logger.setContent("storeId=%s, customerId=%s, changeType=%s, pointDelta=%d, idempotencyKey=%s, remark=%s".formatted(storeId, customerId, changeType, pointDelta, idempotencyKey, remark));
|
||||
try {
|
||||
GaoPointLedger existing = mapper.selectByIdempotencyKey(idempotencyKey);
|
||||
if (existing != null) {
|
||||
logger.setLevel(Logger.Level.INFO);
|
||||
logger.setResult(existing.getId());
|
||||
return existing;
|
||||
}
|
||||
|
||||
GaoPointAccount account = accountService.getOrCreateForUpdate(storeId, customerId);
|
||||
existing = mapper.selectByIdempotencyKey(idempotencyKey);
|
||||
if (existing != null) {
|
||||
logger.setLevel(Logger.Level.INFO);
|
||||
logger.setResult(existing.getId());
|
||||
return existing;
|
||||
}
|
||||
|
||||
@@ -165,6 +177,20 @@ public class GaoPointLedgerServiceImplement extends AbstractEntityService<GaoPoi
|
||||
create(ledger);
|
||||
int updated = accountService.updateBalance(account.getId(), pointDelta, totalEarnedDelta, totalRevokedDelta, totalAdjustedDelta);
|
||||
TimiException.requiredTrue(0 < updated, "积分余额不足");
|
||||
logger.setLevel(Logger.Level.INFO);
|
||||
logger.setResult(ledger.getId());
|
||||
return ledger;
|
||||
} catch (TimiException e) {
|
||||
logger.setLevel(Logger.Level.WARN);
|
||||
logger.setException(e.getMessage());
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
logger.setLevel(Logger.Level.ERROR);
|
||||
logger.setException(TimiJava.serializeThrowable(e));
|
||||
log.error("应用 GAO 积分流水失败", e);
|
||||
throw new TimiException(TimiCode.ERROR, "应用 GAO 积分流水失败", e);
|
||||
} finally {
|
||||
loggerService.create(logger);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user