|
|
@@ -503,6 +503,29 @@ public class CommissionService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 批量预取成员汇总(避免 N+1):已完成履约订单总额 + 非cancelled佣金总额,循环内直接取用
|
|
|
+ List<Long> buyerIds = new ArrayList<>(memberMap.keySet());
|
|
|
+ Map<Long, Long> consumptionMap = new HashMap<>();
|
|
|
+ Map<Long, Integer> cfEarnedMap = new HashMap<>();
|
|
|
+ if (!buyerIds.isEmpty()) {
|
|
|
+ LambdaQueryWrapper<ProductOrder> consumptionWrapper = new LambdaQueryWrapper<ProductOrder>()
|
|
|
+ .in(ProductOrder::getBuyerId, buyerIds)
|
|
|
+ .eq(ProductOrder::getFulfillStatus, "completed");
|
|
|
+ for (ProductOrder order : productOrderMapper.selectList(consumptionWrapper)) {
|
|
|
+ if (order.getBuyerId() == null || order.getTotalAmount() == null) continue;
|
|
|
+ consumptionMap.merge(order.getBuyerId(), order.getTotalAmount().longValue(), Long::sum);
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<CommissionRecord> cfWrapper = new LambdaQueryWrapper<CommissionRecord>()
|
|
|
+ .eq(CommissionRecord::getReferrerId, userId)
|
|
|
+ .in(CommissionRecord::getBuyerId, buyerIds)
|
|
|
+ .ne(CommissionRecord::getStatus, "cancelled");
|
|
|
+ for (CommissionRecord record : commissionRecordMapper.selectList(cfWrapper)) {
|
|
|
+ if (record.getBuyerId() == null || record.getCommissionAmount() == null) continue;
|
|
|
+ cfEarnedMap.merge(record.getBuyerId(), record.getCommissionAmount(), Integer::sum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
for (Map.Entry<Long, Map<String, Object>> entry : memberMap.entrySet()) {
|
|
|
Long buyerId = entry.getKey();
|
|
|
Map<String, Object> memberInfo = entry.getValue();
|
|
|
@@ -531,6 +554,9 @@ public class CommissionService {
|
|
|
.mapToInt(r -> r.getCommissionAmount() != null ? r.getCommissionAmount() : 0)
|
|
|
.sum();
|
|
|
memberInfo.put("commissionEarned", commissionEarned);
|
|
|
+
|
|
|
+ memberInfo.put("memberConsumption", consumptionMap.getOrDefault(buyerId, 0L));
|
|
|
+ memberInfo.put("myCfEarnedFromMember", cfEarnedMap.getOrDefault(buyerId, 0));
|
|
|
}
|
|
|
|
|
|
List<Map<String, Object>> allMembers = new ArrayList<>(memberMap.values());
|
|
|
@@ -672,6 +698,30 @@ public class CommissionService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取我的推荐人信息(直推人)
|
|
|
+ */
|
|
|
+ public Map<String, Object> getMyReferrer(Long userId) {
|
|
|
+ Map<String, Object> result = new LinkedHashMap<>();
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
+ if (user == null || user.getReferrerId() == null) {
|
|
|
+ result.put("hasReferrer", false);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ User referrer = userMapper.selectById(user.getReferrerId());
|
|
|
+ if (referrer == null) {
|
|
|
+ result.put("hasReferrer", false);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ result.put("hasReferrer", true);
|
|
|
+ result.put("referrerId", referrer.getId());
|
|
|
+ result.put("nickname", referrer.getNickname());
|
|
|
+ result.put("avatar", referrer.getAvatar());
|
|
|
+ result.put("referralCode", referrer.getReferralCode());
|
|
|
+ result.put("bindTime", user.getCreatedAt()); // 以用户创建时间作为绑定时间近似
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取佣金统计(首页面板数据)
|
|
|
*/
|