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; OrderBasicInfo finalOrderBasicInfo = orderBasicInfo;
// TODO 异步推送第三方平台订单信息 // TODO 异步推送第三方平台订单信息
CompletableFuture.runAsync(() -> { // CompletableFuture.runAsync(() -> {
try { // try {
commonService.commonPushOrderInfo(finalOrderBasicInfo); // commonService.commonPushOrderInfo(finalOrderBasicInfo);
} catch (Exception e) { // } catch (Exception e) {
log.error("推送第三方平台订单信息error, ", e); // log.error("推送第三方平台订单信息error, ", e);
} // }
}, thirdpartyTaskExecutor); // }, thirdpartyTaskExecutor);
//
// TODO 异步推送第三方平台订单信息V2 // // TODO 异步推送第三方平台订单信息V2
CompletableFuture.runAsync(() -> { // CompletableFuture.runAsync(() -> {
try { // try {
commonService.commonPushOrderInfoV2(finalOrderBasicInfo); // commonService.commonPushOrderInfoV2(finalOrderBasicInfo);
} catch (Exception e) { // } catch (Exception e) {
log.error("推送第三方平台订单信息error, ", e); // log.error("推送第三方平台订单信息error, ", e);
} // }
}, thirdpartyTaskExecutor); // }, thirdpartyTaskExecutor);
// TODO 异步推送充电订单算法平台 // TODO 异步推送充电订单算法平台
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {

View File

@@ -80,7 +80,7 @@ public interface MemberGroupMapper {
MemberGroupVO queryByGroupCodeAndMemberId(@Param("groupCode") String groupCode, @Param("memberId") String memberId); 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); 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.MerchantUtils;
import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.util.UserUtils;
import com.jsowell.pile.vo.base.ConfirmStartChargingMemberVO; 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.base.MerchantInfoVO;
import com.jsowell.pile.vo.uniapp.customer.*; import com.jsowell.pile.vo.uniapp.customer.*;
import com.jsowell.pile.vo.web.MemberDetailsVO; import com.jsowell.pile.vo.web.MemberDetailsVO;
@@ -37,6 +38,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -449,11 +451,53 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
merchantId = MerchantUtils.XIXIAO_MERCHANT_ID; 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 { try {
// BigDecimal totalAccountAmount = BigDecimal.ZERO; MemberWalletInfo memberWalletInfo = walletInfoFuture.get();
BigDecimal principalBalance = BigDecimal.ZERO; BigDecimal principalBalance = BigDecimal.ZERO;
BigDecimal giftBalance = BigDecimal.ZERO; BigDecimal giftBalance = BigDecimal.ZERO;
MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByMemberId(memberId, merchantId);
if (memberWalletInfo != null) { if (memberWalletInfo != null) {
if (memberWalletInfo.getPrincipalBalance() != null) { if (memberWalletInfo.getPrincipalBalance() != null) {
principalBalance = memberWalletInfo.getPrincipalBalance(); principalBalance = memberWalletInfo.getPrincipalBalance();
@@ -461,42 +505,60 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
if (memberWalletInfo.getGiftBalance() != null) { if (memberWalletInfo.getGiftBalance() != null) {
giftBalance = memberWalletInfo.getGiftBalance(); giftBalance = memberWalletInfo.getGiftBalance();
} }
// totalAccountAmount = memberWalletInfo.getPrincipalBalance();
vo.setMerchantId(memberWalletInfo.getMerchantId()); vo.setMerchantId(memberWalletInfo.getMerchantId());
} }
// 计算用户注册天数
String days = DateUtils.getPoorDays(new Date(), vo.getCreateTime());
vo.setRegistrationDays(days);
vo.setPrincipalBalance(principalBalance); vo.setPrincipalBalance(principalBalance);
vo.setGiftBalance(giftBalance); vo.setGiftBalance(giftBalance);
vo.setTotalBalance(vo.getPrincipalBalance().add(vo.getGiftBalance())); vo.setTotalBalance(principalBalance.add(giftBalance));
} catch (Exception e) { } 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(); try {
memberPlateNumberRelation.setMemberId(memberId); List<MemberPlateNumberRelation> list = plateNumberFuture.get();
List<MemberPlateNumberRelation> list = memberPlateNumberRelationMapper.selectMemberPlateNumberRelationList(memberPlateNumberRelation); List<String> plateNumberList = new ArrayList<>();
List<String> plateNumberList = new ArrayList<>(); List<String> vinCodeList = new ArrayList<>();
List<String> vinCodeList = new ArrayList<>(); for (MemberPlateNumberRelation relation : list) {
for (MemberPlateNumberRelation relation : list) { if (StringUtils.isNotBlank(relation.getLicensePlateNumber())) {
if (StringUtils.isNotBlank(relation.getLicensePlateNumber())) { plateNumberList.add(relation.getLicensePlateNumber());
plateNumberList.add(relation.getLicensePlateNumber()); }
} if (StringUtils.isNotBlank(relation.getVinCode())) {
if (StringUtils.isNotBlank(relation.getVinCode())) { vinCodeList.add(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); try {
if (CollectionUtils.isEmpty(stationIds)) { 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()); 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; return vo;

View File

@@ -386,7 +386,10 @@ public class MemberGroupServiceImpl implements MemberGroupService {
@Override @Override
public List<MemberVO> queryMemberList(MemberGroupDTO dto) { 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; return list;
} }

View File

@@ -9,6 +9,9 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.jsowell.pile.domain.MemberPlateNumberRelation;
import com.jsowell.pile.vo.base.MemberWalletVO;
/** /**
* 用户信息VO * 用户信息VO
* *
@@ -110,4 +113,14 @@ public class MemberVO {
* 车牌号 * 车牌号
*/ */
private String plateNumber; 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="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" /> <result property="delFlag" column="del_flag" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <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 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> </sql>
@@ -165,8 +165,14 @@
FROM FROM
member_basic_info t1 member_basic_info t1
JOIN member_group_relation t2 ON t2.member_id = t1.member_id and t2.del_flag = '0' JOIN member_group_relation t2 ON t2.member_id = t1.member_id and t2.del_flag = '0'
where WHERE t1.del_flag = '0'
t2.group_code = #{groupCode,jdbcType=VARCHAR} 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>
<select id="selectByGroupCode" resultMap="MemberGroupResult"> <select id="selectByGroupCode" resultMap="MemberGroupResult">
@@ -247,4 +253,4 @@
WHERE WHERE
FIND_IN_SET(t1.id, (SELECT station_id FROM member_group WHERE group_code = #{groupCode,jdbcType=VARCHAR})) FIND_IN_SET(t1.id, (SELECT station_id FROM member_group WHERE group_code = #{groupCode,jdbcType=VARCHAR}))
</select> </select>
</mapper> </mapper>