diff --git a/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/CommissionDto.cs b/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/CommissionDto.cs index 11e9c55..f17cc92 100644 --- a/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/CommissionDto.cs +++ b/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/CommissionDto.cs @@ -20,6 +20,11 @@ public class CommissionDto /// public string? UserNickname { get; set; } + /// + /// 获得佣金的用户UID + /// + public string? UserUid { get; set; } + /// /// 来源用户ID /// @@ -30,6 +35,11 @@ public class CommissionDto /// public string? FromUserNickname { get; set; } + /// + /// 来源用户UID + /// + public string? FromUserUid { get; set; } + /// /// 关联订单ID /// diff --git a/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/InviteCodeDto.cs b/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/InviteCodeDto.cs index 2b5975a..dadf2ed 100644 --- a/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/InviteCodeDto.cs +++ b/server/MiAssessment/src/MiAssessment.Admin.Business/Models/Distribution/InviteCodeDto.cs @@ -30,6 +30,11 @@ public class InviteCodeDto /// public string? AssignUserNickname { get; set; } + /// + /// 分配给的用户UID + /// + public string? AssignUserUid { get; set; } + /// /// 分配时间 /// @@ -45,6 +50,11 @@ public class InviteCodeDto /// public string? UseUserNickname { get; set; } + /// + /// 使用者用户UID + /// + public string? UseUserUid { get; set; } + /// /// 使用的订单ID /// diff --git a/server/MiAssessment/src/MiAssessment.Admin.Business/Services/DistributionService.cs b/server/MiAssessment/src/MiAssessment.Admin.Business/Services/DistributionService.cs index 97dde0f..153a1b7 100644 --- a/server/MiAssessment/src/MiAssessment.Admin.Business/Services/DistributionService.cs +++ b/server/MiAssessment/src/MiAssessment.Admin.Business/Services/DistributionService.cs @@ -128,9 +128,11 @@ public class DistributionService : IDistributionService BatchNo = c.BatchNo, AssignUserId = c.AssignUserId, AssignUserNickname = c.AssignUser != null ? c.AssignUser.Nickname : null, + AssignUserUid = c.AssignUser != null ? c.AssignUser.Uid : null, AssignTime = c.AssignTime, UseUserId = c.UseUserId, UseUserNickname = c.UseUser != null ? c.UseUser.Nickname : null, + UseUserUid = c.UseUser != null ? c.UseUser.Uid : null, UseOrderId = c.UseOrderId, UseTime = c.UseTime, Status = c.Status, @@ -264,9 +266,11 @@ public class DistributionService : IDistributionService BatchNo = c.BatchNo, AssignUserId = c.AssignUserId, AssignUserNickname = c.AssignUser != null ? c.AssignUser.Nickname : null, + AssignUserUid = c.AssignUser != null ? c.AssignUser.Uid : null, AssignTime = c.AssignTime, UseUserId = c.UseUserId, UseUserNickname = c.UseUser != null ? c.UseUser.Nickname : null, + UseUserUid = c.UseUser != null ? c.UseUser.Uid : null, UseOrderId = c.UseOrderId, UseTime = c.UseTime, Status = c.Status, @@ -311,8 +315,10 @@ public class DistributionService : IDistributionService Id = c.Id, UserId = c.UserId, UserNickname = c.User != null ? c.User.Nickname : null, + UserUid = c.User != null ? c.User.Uid : null, FromUserId = c.FromUserId, FromUserNickname = c.FromUser != null ? c.FromUser.Nickname : null, + FromUserUid = c.FromUser != null ? c.FromUser.Uid : null, OrderId = c.OrderId, OrderNo = c.Order != null ? c.Order.OrderNo : null, OrderAmount = c.OrderAmount, @@ -434,8 +440,10 @@ public class DistributionService : IDistributionService Id = c.Id, UserId = c.UserId, UserNickname = c.User != null ? c.User.Nickname : null, + UserUid = c.User != null ? c.User.Uid : null, FromUserId = c.FromUserId, FromUserNickname = c.FromUser != null ? c.FromUser.Nickname : null, + FromUserUid = c.FromUser != null ? c.FromUser.Uid : null, OrderId = c.OrderId, OrderNo = c.Order != null ? c.Order.OrderNo : null, OrderAmount = c.OrderAmount, diff --git a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/commission/index.vue b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/commission/index.vue index 569ed84..dd57d5e 100644 --- a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/commission/index.vue +++ b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/commission/index.vue @@ -68,13 +68,13 @@ {{ row.userNickname }} - ID: {{ row.userId }} + UID: {{ row.userUid }} {{ row.fromUserNickname }} - ID: {{ row.fromUserId }} + UID: {{ row.fromUserUid }} @@ -84,7 +84,7 @@ - {{ (row.commissionRate * 100).toFixed(1) }}% + {{ row.commissionRate.toFixed(0) }}% @@ -124,11 +124,11 @@ {{ detailData.id }} - {{ detailData.userNickname }} (ID: {{ detailData.userId }}) - {{ detailData.fromUserNickname }} (ID: {{ detailData.fromUserId }}) + {{ detailData.userNickname }} (UID: {{ detailData.userUid }}) + {{ detailData.fromUserNickname }} (UID: {{ detailData.fromUserUid }}) {{ detailData.orderNo }} ¥{{ detailData.orderAmount.toFixed(2) }} - {{ (detailData.commissionRate * 100).toFixed(1) }}% + {{ detailData.commissionRate.toFixed(0) }}% ¥{{ detailData.commissionAmount.toFixed(2) }} {{ detailData.levelName }} {{ detailData.statusName }} diff --git a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/invite-code/index.vue b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/invite-code/index.vue index 42cb77d..ef0ad53 100644 --- a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/invite-code/index.vue +++ b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/distribution/invite-code/index.vue @@ -26,7 +26,7 @@ - + 搜索 @@ -49,7 +49,7 @@ {{ row.assignUserNickname }} - ID: {{ row.assignUserId }} + UID: {{ row.assignUserUid }} - @@ -61,7 +61,7 @@ {{ row.useUserNickname }} - ID: {{ row.useUserId }} + UID: {{ row.useUserUid }} - diff --git a/server/MiAssessment/src/MiAssessment.Api/wwwroot/css/pages/learning-abilities.css b/server/MiAssessment/src/MiAssessment.Api/wwwroot/css/pages/learning-abilities.css index b734c63..cede66f 100644 --- a/server/MiAssessment/src/MiAssessment.Api/wwwroot/css/pages/learning-abilities.css +++ b/server/MiAssessment/src/MiAssessment.Api/wwwroot/css/pages/learning-abilities.css @@ -43,27 +43,34 @@ text-align: center; } -/* ---- 结论区域 ---- */ +/* ---- 结论区域(与其他结论页统一样式) ---- */ .la-conclusion { - background: #FFF5F5; + border: 3px solid #C0392B; border-radius: 12px; - padding: 16px 20px; - margin-top: 8px; + padding: 34px 20px 14px; + position: relative; + background: #FFF5F5; } .la-conclusion-badge { - display: inline-block; - background: #E67E73; + position: absolute; + top: 0px; + left: 50%; + transform: translateX(-50%) translateY(-1px); + padding: 5px 24px; + border-radius: 0 0 8px 8px; + font-size: 16px; + font-weight: 700; color: #fff; - font-size: 14px; - font-weight: 600; - padding: 4px 16px; - border-radius: 20px; - margin-bottom: 10px; + background: #C0392B; + white-space: nowrap; + letter-spacing: 2px; } .la-conclusion-content { font-size: 13px; - line-height: 1.8; - color: #444; + line-height: 1.7; + color: #555; + font-weight: 600; + overflow: hidden; } diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/InviteService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/InviteService.cs index e3f3e8b..1018d18 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/InviteService.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/InviteService.cs @@ -248,7 +248,7 @@ public class InviteService : IInviteService var userIds = invitedUsers.Select(u => u.Id).ToList(); var commissions = await _dbContext.Commissions .AsNoTracking() - .Where(c => c.UserId == userId && userIds.Contains((int)c.FromUserId) && !c.IsDeleted) + .Where(c => c.UserId == userId && userIds.Contains(c.FromUserId) && !c.IsDeleted) .GroupBy(c => c.FromUserId) .Select(g => new { diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs index ca9f735..197ca8b 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs @@ -378,10 +378,12 @@ public class OrderService : IOrderService } // 读取佣金比例配置 + var level1RateStr = await _configService.GetConfigValueAsync("commission_rate_level1"); + var level2RateStr = await _configService.GetConfigValueAsync("commission_rate_level2"); var directRateStr = await _configService.GetConfigValueAsync("commission_rate_direct"); - var indirectRateStr = await _configService.GetConfigValueAsync("commission_rate_indirect"); - var directRate = decimal.TryParse(directRateStr, out var dr) ? dr : 0.30m; - var indirectRate = decimal.TryParse(indirectRateStr, out var ir) ? ir : 0.10m; + var level1Rate = decimal.TryParse(level1RateStr, out var l1) ? l1 : 0.30m; // 一级佣金30% + var level2Rate = decimal.TryParse(level2RateStr, out var l2) ? l2 : 0.10m; // 二级佣金10% + var directRate = decimal.TryParse(directRateStr, out var dr) ? dr : 0.40m; // 无上级时直接佣金40% // 查找直接上级 var parentUser = await _dbContext.Users @@ -405,9 +407,9 @@ public class OrderService : IOrderService if (grandParentUser != null) { - // 有间接上级:直接上级30%,间接上级10% - var directCommission = Math.Round(order.PayAmount * directRate, 2); - var indirectCommission = Math.Round(order.PayAmount * indirectRate, 2); + // 有间接上级:直接上级30%(level1),间接上级10%(level2) + var directCommission = Math.Round(order.PayAmount * level1Rate, 2); + var indirectCommission = Math.Round(order.PayAmount * level2Rate, 2); // 直接上级佣金 _dbContext.Commissions.Add(new MiAssessment.Model.Entities.Commission @@ -416,7 +418,7 @@ public class OrderService : IOrderService FromUserId = user.Id, OrderId = order.Id, OrderAmount = order.PayAmount, - CommissionRate = directRate * 100, + CommissionRate = level1Rate * 100, CommissionAmount = directCommission, Level = 1, Status = 1, @@ -434,7 +436,7 @@ public class OrderService : IOrderService FromUserId = user.Id, OrderId = order.Id, OrderAmount = order.PayAmount, - CommissionRate = indirectRate * 100, + CommissionRate = level2Rate * 100, CommissionAmount = indirectCommission, Level = 2, Status = 1, @@ -445,14 +447,13 @@ public class OrderService : IOrderService grandParentUser.TotalIncome += indirectCommission; grandParentUser.UpdateTime = now; - _logger.LogInformation("佣金分配完成:直接上级{ParentId}获得{DirectAmount},间接上级{GrandParentId}获得{IndirectAmount},orderId: {OrderId}", + _logger.LogInformation("佣金分配完成:直接上级{ParentId}获得{DirectAmount}(30%),间接上级{GrandParentId}获得{IndirectAmount}(10%),orderId: {OrderId}", parentUser.Id, directCommission, grandParentUser.Id, indirectCommission, order.Id); } else { - // 无间接上级:直接上级获得 directRate + indirectRate - var totalRate = directRate + indirectRate; - var commission = Math.Round(order.PayAmount * totalRate, 2); + // 无间接上级:直接上级获得 directRate(40%) + var commission = Math.Round(order.PayAmount * directRate, 2); _dbContext.Commissions.Add(new MiAssessment.Model.Entities.Commission { @@ -460,7 +461,7 @@ public class OrderService : IOrderService FromUserId = user.Id, OrderId = order.Id, OrderAmount = order.PayAmount, - CommissionRate = totalRate * 100, + CommissionRate = directRate * 100, CommissionAmount = commission, Level = 1, Status = 1, @@ -471,7 +472,7 @@ public class OrderService : IOrderService parentUser.TotalIncome += commission; parentUser.UpdateTime = now; - _logger.LogInformation("佣金分配完成:直接上级{ParentId}获得{Amount}(无间接上级),orderId: {OrderId}", + _logger.LogInformation("佣金分配完成:直接上级{ParentId}获得{Amount}(40%,无间接上级),orderId: {OrderId}", parentUser.Id, commission, order.Id); }