From d699da385dda6257677ee93bef47388c0635f64e Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 17 四月 2026 08:57:41 +0800
Subject: [PATCH] feat:APP个人中心
---
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/points/service/PointsLedgerAppService.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/points/service/PointsLedgerAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/points/service/PointsLedgerAppService.java
index dedfde0..907dab0 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/points/service/PointsLedgerAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/points/service/PointsLedgerAppService.java
@@ -35,10 +35,13 @@
public static final String TYPE_EXPENSE = "EXPENSE";
public static final String BUSINESS_LIVE_WATCH = "LIVE_WATCH";
public static final String BUSINESS_POINTS_EXCHANGE = "POINTS_EXCHANGE";
+ public static final String BUSINESS_POINTS_SETTLEMENT = "POINTS_SETTLEMENT";
public static final String SOURCE_LIVE_QUIZ = "LIVE_QUIZ";
public static final String SOURCE_EXCHANGE_ITEM = "EXCHANGE_ITEM";
+ public static final String SOURCE_POINTS_SETTLEMENT = "POINTS_SETTLEMENT";
public static final String REF_LIVE_COURSE = "LIVE_COURSE";
public static final String REF_EXCHANGE_ITEM = "EXCHANGE_ITEM";
+ public static final String REF_POINTS_CONFIG = "POINTS_CONFIG";
private final PointsLedgerMapper pointsLedgerMapper;
@@ -186,6 +189,53 @@
pointsLedgerMapper.insert(ledger);
}
+ /**
+ * 记录积分活动结束后未达标用户被系统清零的支出流水。
+ */
+ @Transactional
+ public void createSettlementClearLedger(Long sourceId,
+ Long appUserId,
+ String userNickname,
+ String userPhone,
+ Long clinicId,
+ String clinicName,
+ String provinceCode,
+ String provinceName,
+ String cityCode,
+ String cityName,
+ String districtCode,
+ String districtName,
+ String contentName,
+ Long referenceId,
+ String referenceNo,
+ Integer pointsDelta,
+ LocalDateTime operatedAt) {
+ if (sourceId == null) {
+ return;
+ }
+ PointsLedger exists = pointsLedgerMapper.selectOne(new LambdaQueryWrapper<PointsLedger>()
+ .eq(PointsLedger::getDeleted, 0)
+ .eq(PointsLedger::getSourceType, SOURCE_POINTS_SETTLEMENT)
+ .eq(PointsLedger::getSourceId, sourceId)
+ .last("limit 1"));
+ if (exists != null) {
+ return;
+ }
+ PointsLedger ledger = buildBaseLedger(appUserId, userNickname, userPhone, clinicId, clinicName,
+ provinceCode, provinceName, cityCode, cityName, districtCode, districtName);
+ ledger.setIncomeExpenseType(TYPE_EXPENSE);
+ ledger.setBusinessType(BUSINESS_POINTS_SETTLEMENT);
+ ledger.setContentName(contentName);
+ ledger.setReferenceType(REF_POINTS_CONFIG);
+ ledger.setReferenceId(referenceId);
+ ledger.setReferenceNo(referenceNo);
+ ledger.setPointsDelta(pointsDelta == null ? 0 : -Math.abs(pointsDelta));
+ ledger.setOperatedAt(operatedAt == null ? LocalDateTime.now() : operatedAt);
+ ledger.setSourceType(SOURCE_POINTS_SETTLEMENT);
+ ledger.setSourceId(sourceId);
+ pointsLedgerMapper.insert(ledger);
+ }
+
private void syncQuizLedgers() {
List<PointsLedgerSyncQuizRow> rows = pointsLedgerMapper.selectMissingQuizLedgerRows();
for (PointsLedgerSyncQuizRow row : rows) {
@@ -324,6 +374,9 @@
if (BUSINESS_POINTS_EXCHANGE.equals(value)) {
return "积分兑换";
}
+ if (BUSINESS_POINTS_SETTLEMENT.equals(value)) {
+ return "活动结算";
+ }
return "-";
}
--
Gitblit v1.7.1