fix(network): update network statistics and tree documentation
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 10m15s
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 10m15s
- Updated README to reflect the new documentation location. - Refactored GetNetworkStatisticsQueryHandler to improve method naming and logic for loading package holder counts. - Enhanced GetNetworkStatisticsResponseDto and NetworkTreeDto to clarify the purpose of leg total properties. - Updated Protobuf definitions to align with the new response structure for network statistics. - Removed obsolete SQL scripts related to user package purchases and DayaLoan contracts cleanup.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
-- =============================================
|
||||
-- Diagnose: Package holder counts per leg (read-only)
|
||||
-- Compares OLD source (NetworkWeeklyBalances) vs NEW (active members + current cycle)
|
||||
-- Usage: SET @RootUserId to the tree owner UserId
|
||||
-- =============================================
|
||||
|
||||
DECLARE @RootUserId BIGINT = 1; -- ← change to target user
|
||||
|
||||
DECLARE @GoldPackageId BIGINT = (
|
||||
SELECT TOP 1 Id FROM CMS.Packages
|
||||
WHERE IsDeleted = 0 AND IsActive = 1 AND IsBasePackage = 1
|
||||
ORDER BY Id
|
||||
);
|
||||
DECLARE @SilverPackageId BIGINT = (
|
||||
SELECT TOP 1 Id FROM CMS.Packages
|
||||
WHERE IsDeleted = 0 AND IsActive = 1 AND IsBasePackage = 0
|
||||
AND (Title LIKE N'%نقر%' OR MaxBalancesPerLeg <= 30)
|
||||
ORDER BY Id
|
||||
);
|
||||
|
||||
DECLARE @LeftChildId BIGINT = (
|
||||
SELECT Id FROM CMS.Users
|
||||
WHERE NetworkParentId = @RootUserId AND LegPosition = 0 AND IsDeleted = 0
|
||||
);
|
||||
DECLARE @RightChildId BIGINT = (
|
||||
SELECT Id FROM CMS.Users
|
||||
WHERE NetworkParentId = @RootUserId AND LegPosition = 1 AND IsDeleted = 0
|
||||
);
|
||||
|
||||
;WITH LegUsers AS (
|
||||
SELECT @LeftChildId AS RootLegUserId, 0 AS LegSide
|
||||
WHERE @LeftChildId IS NOT NULL
|
||||
UNION ALL
|
||||
SELECT @RightChildId, 1
|
||||
WHERE @RightChildId IS NOT NULL
|
||||
),
|
||||
Subtree AS (
|
||||
SELECT lu.RootLegUserId, lu.LegSide, lu.RootLegUserId AS UserId
|
||||
FROM LegUsers lu
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT s.RootLegUserId, s.LegSide, u.Id
|
||||
FROM Subtree s
|
||||
INNER JOIN CMS.Users u ON u.NetworkParentId = s.UserId AND u.IsDeleted = 0
|
||||
),
|
||||
ActivePackageHolders AS (
|
||||
SELECT
|
||||
s.LegSide,
|
||||
cc.PackageId,
|
||||
COUNT(DISTINCT s.UserId) AS HolderCount
|
||||
FROM Subtree s
|
||||
INNER JOIN CMS.ClubMemberships cm ON cm.UserId = s.UserId AND cm.IsActive = 1 AND cm.IsDeleted = 0
|
||||
INNER JOIN CMS.ClubMembershipCycles cc ON cc.UserId = s.UserId AND cc.IsCurrentCycle = 1
|
||||
GROUP BY s.LegSide, cc.PackageId
|
||||
),
|
||||
LatestNwb AS (
|
||||
SELECT PackageId, LeftLegTotal, RightLegTotal, WeekDefinitionId,
|
||||
ROW_NUMBER() OVER (PARTITION BY PackageId ORDER BY WeekDefinitionId DESC) AS rn
|
||||
FROM CMS.NetworkWeeklyBalances
|
||||
WHERE UserId = @RootUserId
|
||||
AND PackageId IN (@GoldPackageId, @SilverPackageId)
|
||||
)
|
||||
SELECT
|
||||
@RootUserId AS RootUserId,
|
||||
@GoldPackageId AS GoldPackageId,
|
||||
@SilverPackageId AS SilverPackageId,
|
||||
-- NEW: real holder counts
|
||||
ISNULL((SELECT HolderCount FROM ActivePackageHolders WHERE LegSide = 0 AND PackageId = @GoldPackageId), 0) AS New_GoldLeft,
|
||||
ISNULL((SELECT HolderCount FROM ActivePackageHolders WHERE LegSide = 1 AND PackageId = @GoldPackageId), 0) AS New_GoldRight,
|
||||
ISNULL((SELECT HolderCount FROM ActivePackageHolders WHERE LegSide = 0 AND PackageId = @SilverPackageId), 0) AS New_SilverLeft,
|
||||
ISNULL((SELECT HolderCount FROM ActivePackageHolders WHERE LegSide = 1 AND PackageId = @SilverPackageId), 0) AS New_SilverRight,
|
||||
-- OLD: weekly balance scores (previous wrong source)
|
||||
ISNULL((SELECT LeftLegTotal FROM LatestNwb WHERE PackageId = @GoldPackageId AND rn = 1), 0) AS Old_Nwb_GoldLeft,
|
||||
ISNULL((SELECT RightLegTotal FROM LatestNwb WHERE PackageId = @GoldPackageId AND rn = 1), 0) AS Old_Nwb_GoldRight,
|
||||
ISNULL((SELECT LeftLegTotal FROM LatestNwb WHERE PackageId = @SilverPackageId AND rn = 1), 0) AS Old_Nwb_SilverLeft,
|
||||
ISNULL((SELECT RightLegTotal FROM LatestNwb WHERE PackageId = @SilverPackageId AND rn = 1), 0) AS Old_Nwb_SilverRight;
|
||||
Reference in New Issue
Block a user