| | |
| | | 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; |
| | | |
| | |
| | | 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) { |
| | |
| | | if (BUSINESS_POINTS_EXCHANGE.equals(value)) { |
| | | return "积分兑换"; |
| | | } |
| | | if (BUSINESS_POINTS_SETTLEMENT.equals(value)) { |
| | | return "活动结算"; |
| | | } |
| | | return "-"; |
| | | } |
| | | |