|
|
@ -29,10 +29,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.ZoneOffset; |
|
|
import java.time.ZoneOffset; |
|
|
import java.util.Arrays; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Objects; |
|
|
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -611,8 +608,61 @@ public class CashCollectionServiceImpl implements CashCollectionService { |
|
|
// 根据精网号和地区查询用户的所有钱包 ID 和金币数量(包含用户名和地区)(分页) |
|
|
// 根据精网号和地区查询用户的所有钱包 ID 和金币数量(包含用户名和地区)(分页) |
|
|
@Override |
|
|
@Override |
|
|
public PageInfo<UserWalletVO> selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize) { |
|
|
public PageInfo<UserWalletVO> selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize) { |
|
|
|
|
|
// 第一步:先查询符合条件的精网号列表(分页) |
|
|
PageHelper.startPage(pageNum, pageSize); |
|
|
PageHelper.startPage(pageNum, pageSize); |
|
|
List<UserWalletVO> wallets = cashCollectionMapper.selectUserWallets(jwcode, market); |
|
|
|
|
|
return new PageInfo<>(wallets); |
|
|
|
|
|
|
|
|
List<Integer> jwcodeList = cashCollectionMapper.selectDistinctJwcodes(jwcode, market); |
|
|
|
|
|
PageInfo<Integer> jwcodePageInfo = new PageInfo<>(jwcodeList); |
|
|
|
|
|
|
|
|
|
|
|
// 如果没有符合条件的记录,直接返回空结果 |
|
|
|
|
|
if (jwcodeList == null || jwcodeList.isEmpty()) { |
|
|
|
|
|
PageInfo<UserWalletVO> emptyResult = new PageInfo<>(); |
|
|
|
|
|
emptyResult.setList(new ArrayList<>()); |
|
|
|
|
|
emptyResult.setTotal(0); |
|
|
|
|
|
emptyResult.setPages(0); |
|
|
|
|
|
emptyResult.setPageNum(pageNum); |
|
|
|
|
|
emptyResult.setPageSize(pageSize); |
|
|
|
|
|
return emptyResult; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 第二步:根据精网号列表查询用户的钱包信息(不分页,返回这些精网号的所有钱包) |
|
|
|
|
|
List<UserWalletVO> allWallets = cashCollectionMapper.selectUserWalletsByJwcodes(jwcodeList, market); |
|
|
|
|
|
|
|
|
|
|
|
// 第三步:将钱包信息按精网号分组组装 |
|
|
|
|
|
Map<Integer, UserWalletVO> userWalletMap = new LinkedHashMap<>(); |
|
|
|
|
|
for (UserWalletVO wallet : allWallets) { |
|
|
|
|
|
Integer key = wallet.getJwcode(); |
|
|
|
|
|
if (!userWalletMap.containsKey(key)) { |
|
|
|
|
|
UserWalletVO userWallet = new UserWalletVO(); |
|
|
|
|
|
userWallet.setJwcode(wallet.getJwcode()); |
|
|
|
|
|
userWallet.setUserName(wallet.getUserName()); |
|
|
|
|
|
userWallet.setMarket(wallet.getMarket()); |
|
|
|
|
|
userWallet.setMarketName(wallet.getMarketName()); |
|
|
|
|
|
userWallet.setWalletList(new ArrayList<>()); |
|
|
|
|
|
userWalletMap.put(key, userWallet); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 添加钱包明细 |
|
|
|
|
|
if (wallet.getWalletList() != null) { |
|
|
|
|
|
userWalletMap.get(key).getWalletList().addAll(wallet.getWalletList()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 第四步:按照精网号列表的顺序构建最终结果 |
|
|
|
|
|
List<UserWalletVO> result = new ArrayList<>(); |
|
|
|
|
|
for (Integer jwc : jwcodeList) { |
|
|
|
|
|
UserWalletVO userWallet = userWalletMap.get(jwc); |
|
|
|
|
|
if (userWallet != null) { |
|
|
|
|
|
result.add(userWallet); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 第五步:构建并返回 PageInfo |
|
|
|
|
|
PageInfo<UserWalletVO> resultPageInfo = new PageInfo<>(result); |
|
|
|
|
|
resultPageInfo.setTotal(jwcodePageInfo.getTotal()); |
|
|
|
|
|
resultPageInfo.setPages(jwcodePageInfo.getPages()); |
|
|
|
|
|
resultPageInfo.setPageNum(pageNum); |
|
|
|
|
|
resultPageInfo.setPageSize(pageSize); |
|
|
|
|
|
|
|
|
|
|
|
return resultPageInfo; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |