优化查询会员信息接口

This commit is contained in:
Guoqs
2025-12-26 11:38:48 +08:00
parent da6056b299
commit bc3e8091de
2 changed files with 102 additions and 27 deletions

View File

@@ -25,6 +25,7 @@ import com.jsowell.pile.service.*;
import com.jsowell.pile.util.MerchantUtils;
import com.jsowell.pile.util.UserUtils;
import com.jsowell.pile.vo.base.ConfirmStartChargingMemberVO;
import com.jsowell.pile.vo.base.MemberWalletVO;
import com.jsowell.pile.vo.base.MerchantInfoVO;
import com.jsowell.pile.vo.uniapp.customer.*;
import com.jsowell.pile.vo.web.MemberDetailsVO;
@@ -37,6 +38,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@@ -449,11 +451,53 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
merchantId = MerchantUtils.XIXIAO_MERCHANT_ID;
}
// 计算用户注册天数
String days = DateUtils.getPoorDays(new Date(), vo.getCreateTime());
vo.setRegistrationDays(days);
final String finalMerchantId = merchantId;
// 使用 CompletableFuture 并行查询
// 1. 查询单个钱包信息
CompletableFuture<MemberWalletInfo> walletInfoFuture = CompletableFuture.supplyAsync(() -> {
try {
return memberWalletInfoService.selectByMemberId(memberId, finalMerchantId);
} catch (Exception e) {
log.error("查询用户余额异常 memberId:{}, merchantId:{}", memberId, finalMerchantId, e);
return null;
}
});
// 2. 查询车牌号列表
CompletableFuture<List<MemberPlateNumberRelation>> plateNumberFuture = CompletableFuture.supplyAsync(() -> {
MemberPlateNumberRelation query = new MemberPlateNumberRelation();
query.setMemberId(memberId);
return memberPlateNumberRelationMapper.selectMemberPlateNumberRelationList(query);
});
// 3. 查询收藏站点列表
CompletableFuture<List<String>> stationIdsFuture = CompletableFuture.supplyAsync(() ->
memberStationRelationService.getStationIdListByMemberId(memberId)
);
// 4. 查询钱包列表
CompletableFuture<List<MemberWalletVO>> walletListFuture = CompletableFuture.supplyAsync(() -> {
try {
return memberWalletInfoService.selectByMemberWalletList(memberId);
} catch (Exception e) {
log.error("查询会员钱包列表异常 memberId:{}", memberId, e);
return Lists.newArrayList();
}
});
// 等待所有异步任务完成
CompletableFuture.allOf(walletInfoFuture, plateNumberFuture, stationIdsFuture, walletListFuture).join();
// 处理钱包信息结果
try {
// BigDecimal totalAccountAmount = BigDecimal.ZERO;
MemberWalletInfo memberWalletInfo = walletInfoFuture.get();
BigDecimal principalBalance = BigDecimal.ZERO;
BigDecimal giftBalance = BigDecimal.ZERO;
MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByMemberId(memberId, merchantId);
if (memberWalletInfo != null) {
if (memberWalletInfo.getPrincipalBalance() != null) {
principalBalance = memberWalletInfo.getPrincipalBalance();
@@ -461,42 +505,60 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
if (memberWalletInfo.getGiftBalance() != null) {
giftBalance = memberWalletInfo.getGiftBalance();
}
// totalAccountAmount = memberWalletInfo.getPrincipalBalance();
vo.setMerchantId(memberWalletInfo.getMerchantId());
}
// 计算用户注册天数
String days = DateUtils.getPoorDays(new Date(), vo.getCreateTime());
vo.setRegistrationDays(days);
vo.setPrincipalBalance(principalBalance);
vo.setGiftBalance(giftBalance);
vo.setTotalBalance(vo.getPrincipalBalance().add(vo.getGiftBalance()));
vo.setTotalBalance(principalBalance.add(giftBalance));
} catch (Exception e) {
log.error("查询用户余额异常 memberId:{}, merchantId:{}", memberId, merchantId, e);
log.error("获取钱包信息结果异常 memberId:{}", memberId, e);
vo.setPrincipalBalance(BigDecimal.ZERO);
vo.setGiftBalance(BigDecimal.ZERO);
vo.setTotalBalance(BigDecimal.ZERO);
}
// 查询用户车牌号
MemberPlateNumberRelation memberPlateNumberRelation = new MemberPlateNumberRelation();
memberPlateNumberRelation.setMemberId(memberId);
List<MemberPlateNumberRelation> list = memberPlateNumberRelationMapper.selectMemberPlateNumberRelationList(memberPlateNumberRelation);
List<String> plateNumberList = new ArrayList<>();
List<String> vinCodeList = new ArrayList<>();
for (MemberPlateNumberRelation relation : list) {
if (StringUtils.isNotBlank(relation.getLicensePlateNumber())) {
plateNumberList.add(relation.getLicensePlateNumber());
}
if (StringUtils.isNotBlank(relation.getVinCode())) {
vinCodeList.add(relation.getVinCode());
// 处理车牌号结果
try {
List<MemberPlateNumberRelation> list = plateNumberFuture.get();
List<String> plateNumberList = new ArrayList<>();
List<String> vinCodeList = new ArrayList<>();
for (MemberPlateNumberRelation relation : list) {
if (StringUtils.isNotBlank(relation.getLicensePlateNumber())) {
plateNumberList.add(relation.getLicensePlateNumber());
}
if (StringUtils.isNotBlank(relation.getVinCode())) {
vinCodeList.add(relation.getVinCode());
}
}
vo.setPlateNumberList(plateNumberList);
vo.setVinCodeList(vinCodeList);
vo.setVehicleList(list);
} catch (Exception e) {
log.error("获取车牌号结果异常 memberId:{}", memberId, e);
vo.setPlateNumberList(Lists.newArrayList());
vo.setVinCodeList(Lists.newArrayList());
vo.setVehicleList(Lists.newArrayList());
}
vo.setPlateNumberList(plateNumberList);
vo.setVinCodeList(vinCodeList);
// 查询用户收藏站点
List<String> stationIds = memberStationRelationService.getStationIdListByMemberId(memberId);
if (CollectionUtils.isEmpty(stationIds)) {
// 处理收藏站点结果
try {
List<String> stationIds = stationIdsFuture.get();
if (CollectionUtils.isEmpty(stationIds)) {
vo.setCollectedStationIdList(Lists.newArrayList());
} else {
vo.setCollectedStationIdList(stationIds);
}
} catch (Exception e) {
log.error("获取收藏站点结果异常 memberId:{}", memberId, e);
vo.setCollectedStationIdList(Lists.newArrayList());
}else {
vo.setCollectedStationIdList(stationIds);
}
// 处理钱包列表结果
try {
vo.setWalletList(walletListFuture.get());
} catch (Exception e) {
log.error("获取钱包列表结果异常 memberId:{}", memberId, e);
vo.setWalletList(Lists.newArrayList());
}
return vo;

View File

@@ -9,6 +9,9 @@ import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.jsowell.pile.domain.MemberPlateNumberRelation;
import com.jsowell.pile.vo.base.MemberWalletVO;
/**
* 用户信息VO
*
@@ -110,4 +113,14 @@ public class MemberVO {
* 车牌号
*/
private String plateNumber;
/**
* 会员钱包列表(不同运营商)
*/
private List<MemberWalletVO> walletList;
/**
* 车辆信息列表车牌与VIN一一对应
*/
private List<MemberPlateNumberRelation> vehicleList;
}