This commit is contained in:
Lemon
2025-12-29 09:50:01 +08:00
6 changed files with 133 additions and 49 deletions

View File

@@ -688,22 +688,22 @@ public class TransactionRecordsRequestHandler extends AbstractYkcHandler {
OrderBasicInfo finalOrderBasicInfo = orderBasicInfo;
// TODO 异步推送第三方平台订单信息
CompletableFuture.runAsync(() -> {
try {
commonService.commonPushOrderInfo(finalOrderBasicInfo);
} catch (Exception e) {
log.error("推送第三方平台订单信息error, ", e);
}
}, thirdpartyTaskExecutor);
// TODO 异步推送第三方平台订单信息V2
CompletableFuture.runAsync(() -> {
try {
commonService.commonPushOrderInfoV2(finalOrderBasicInfo);
} catch (Exception e) {
log.error("推送第三方平台订单信息error, ", e);
}
}, thirdpartyTaskExecutor);
// CompletableFuture.runAsync(() -> {
// try {
// commonService.commonPushOrderInfo(finalOrderBasicInfo);
// } catch (Exception e) {
// log.error("推送第三方平台订单信息error, ", e);
// }
// }, thirdpartyTaskExecutor);
//
// // TODO 异步推送第三方平台订单信息V2
// CompletableFuture.runAsync(() -> {
// try {
// commonService.commonPushOrderInfoV2(finalOrderBasicInfo);
// } catch (Exception e) {
// log.error("推送第三方平台订单信息error, ", e);
// }
// }, thirdpartyTaskExecutor);
// TODO 异步推送充电订单算法平台
CompletableFuture.runAsync(() -> {

View File

@@ -80,7 +80,7 @@ public interface MemberGroupMapper {
MemberGroupVO queryByGroupCodeAndMemberId(@Param("groupCode") String groupCode, @Param("memberId") String memberId);
List<MemberVO> queryMemberList(@Param("groupCode") String groupCode);
List<MemberVO> queryMemberList(MemberGroupDTO dto);
MemberGroup selectByGroupCode(String groupCode);

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

@@ -386,7 +386,10 @@ public class MemberGroupServiceImpl implements MemberGroupService {
@Override
public List<MemberVO> queryMemberList(MemberGroupDTO dto) {
List<MemberVO> list = memberGroupMapper.queryMemberList(dto.getGroupCode());
if (dto.getGroupCode().isEmpty()){
return null;
}
List<MemberVO> list = memberGroupMapper.queryMemberList(dto);
return list;
}

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;
}

View File

@@ -19,7 +19,7 @@
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="Base_Column_List">
id, group_name, group_code, merchant_id, station_id, group_level, group_type, discount, create_by, create_time, update_by, update_time, del_flag
</sql>
@@ -165,8 +165,14 @@
FROM
member_basic_info t1
JOIN member_group_relation t2 ON t2.member_id = t1.member_id and t2.del_flag = '0'
where
t2.group_code = #{groupCode,jdbcType=VARCHAR}
WHERE t1.del_flag = '0'
AND t2.group_code = #{groupCode}
<if test="phoneNumber != null and phoneNumber != ''">
AND t1.mobile_number LIKE CONCAT('%', #{phoneNumber}, '%')
</if>
<if test="memberId != null and memberId != ''">
AND t2.member_id = #{memberId}
</if>
</select>
<select id="selectByGroupCode" resultMap="MemberGroupResult">
@@ -247,4 +253,4 @@
WHERE
FIND_IN_SET(t1.id, (SELECT station_id FROM member_group WHERE group_code = #{groupCode,jdbcType=VARCHAR}))
</select>
</mapper>
</mapper>