mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
优化查询会员信息接口
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user