v1.0.13 #20

Merged
timi merged 2 commits from dev into master 2026-08-13 09:52:26 +00:00
Showing only changes of commit 348f7396a1 - Show all commits
@@ -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);
}
}
}