From b7ace278c8486eb6299f6668f8d092fb859352ca Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 28 四月 2026 09:12:55 +0800
Subject: [PATCH] p0功能 小程序
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
index b326cff..6fae99a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.other.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
@@ -13,6 +14,7 @@
import com.ruoyi.other.api.dto.ExchangeCodeConsumeDTO;
import com.ruoyi.other.api.dto.ExchangeCodePackageSaveDTO;
import com.ruoyi.other.api.dto.ExchangeCodePackageSpecDTO;
+import com.ruoyi.other.api.dto.ExchangeCodeUseRecordQuery;
import com.ruoyi.other.api.vo.ExchangeCodeBindResultVO;
import com.ruoyi.other.api.vo.ExchangeCodeConsumeResultVO;
import com.ruoyi.other.api.vo.ExchangeCodePackageDetailVO;
@@ -276,6 +278,13 @@
detail.setBindPhone(bindPhone);
detail.setBindTime(LocalDateTime.now());
codeDetailMapper.updateById(detail);
+ BigDecimal amount = getDetailRemainAmount(detail);
+ TExchangeCodeUseRecord record = new TExchangeCodeUseRecord();
+ record.setDetailId(detail.getId());
+ record.setOrderId(0L);
+ record.setUserId(userId);
+ record.setUsedAmount(amount);
+ useRecordMapper.insert(record);
refreshPackageStats(exchangePackage.getId());
ExchangeCodeBindResultVO resultVO = new ExchangeCodeBindResultVO();
resultVO.setDetailId(detail.getId());
@@ -283,6 +292,28 @@
resultVO.setPackageName(exchangePackage.getPackageName());
resultVO.setBindPhone(bindPhone);
return resultVO;
+ }
+
+ @Override
+ public Page<TExchangeCodeUseRecord> useRecordPage(ExchangeCodeUseRecordQuery query) {
+ Page<TExchangeCodeUseRecord> page = useRecordMapper.selectPage(Page.of(query.getPageCurr(), query.getPageSize()),
+ new QueryWrapper<TExchangeCodeUseRecord>()
+ .eq("user_id", query.getUserId())
+ .eq(Objects.equals(query.getChangeType(), 1), "IFNULL(order_id, 0)", 0)
+ .gt(Objects.equals(query.getChangeType(), 2), "order_id", 0)
+ .orderByDesc("create_time"));
+ page.getRecords().forEach(this::fillUseRecordView);
+ return page;
+ }
+
+ @Override
+ public TExchangeCodeUseRecord useRecordDetail(Long id, Long userId) {
+ TExchangeCodeUseRecord record = useRecordMapper.selectOne(new QueryWrapper<TExchangeCodeUseRecord>()
+ .eq("id", id)
+ .eq("user_id", userId)
+ .last("limit 1"));
+ fillUseRecordView(record);
+ return record;
}
@Override
@@ -318,6 +349,7 @@
}
List<TExchangeCodeUseRecord> existingRecords = useRecordMapper.selectList(new QueryWrapper<TExchangeCodeUseRecord>()
.eq("order_id", dto.getOrderId())
+ .gt("order_id", 0)
.eq("del_flag", 0));
if (!existingRecords.isEmpty()) {
BigDecimal deducted = existingRecords.stream()
@@ -530,6 +562,26 @@
return UUID.randomUUID().toString().replace("-", "").substring(0, 8).toUpperCase();
}
+ private void fillUseRecordView(TExchangeCodeUseRecord record) {
+ if (record == null) {
+ return;
+ }
+ record.setUid(String.valueOf(record.getId()));
+ record.setDateTime(record.getCreateTime());
+ record.setChangeAmount(defaultMoney(record.getUsedAmount()));
+ record.setCurrentBalance(defaultMoney(record.getUsedAmount()));
+ record.setChangeType(record.getOrderId() == null || record.getOrderId() == 0 ? 1 : 2);
+ if (record.getDetailId() != null) {
+ TExchangeCodeDetail detail = codeDetailMapper.selectById(record.getDetailId());
+ if (detail != null) {
+ record.setCode(detail.getCode());
+ }
+ }
+ if (record.getOrderId() != null && record.getOrderId() > 0) {
+ record.setOrderCode(String.valueOf(record.getOrderId()));
+ }
+ }
+
private BigDecimal defaultMoney(BigDecimal amount) {
return amount == null ? BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)
: amount.setScale(2, RoundingMode.HALF_UP);
--
Gitblit v1.7.1