feat: add Mapster mapping and update network tree request
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m11s

This commit is contained in:
masoodafar-web
2025-12-08 04:10:46 +03:30
parent 69d5ecf0d7
commit aa66ca10c8
5 changed files with 71 additions and 3 deletions

View File

@@ -3,7 +3,7 @@
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>0.0.142</Version>
<Version>0.0.145</Version>
<DebugType>None</DebugType>
<DebugSymbols>False</DebugSymbols>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
@@ -60,7 +60,7 @@
<Target Name="PushToFoursatNuget" AfterTargets="Pack">
<PropertyGroup>
<NugetPackagePath>$(PackageOutputPath)$(PackageId).$(Version).nupkg</NugetPackagePath>
<PushCommand>dotnet nuget push **/*.nupkg --source https://git.afrino.co/api/packages/FourSat/nuget/index.json --api-key 061a5cb15517c6da39c16cfce8556c55ae104d0d --skip-duplicate &amp;&amp; del "$(NugetPackagePath)"</PushCommand>
<PushCommand>dotnet nuget push **/*.nupkg --source https://git.afrino.co/api/packages/FourSat/nuget/index.json --api-key 061a5cb15517c6da39c16cfce8556c55ae104d0d --skip-duplicate </PushCommand>
</PropertyGroup>
<Exec Command="$(PushCommand)" />

View File

@@ -104,7 +104,7 @@ message GetUserNetworkResponse
// GetNetworkTree Query
message GetNetworkTreeRequest
{
int64 root_user_id = 1;
int64 user_id = 1;
google.protobuf.Int32Value max_depth = 2;
google.protobuf.BoolValue only_active = 3;
}

View File

@@ -14,6 +14,7 @@
<PackageReference Include="Grpc.Net.Client" Version="2.54.0" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.22" />
<PackageReference Include="Hangfire.SqlServer" Version="1.8.22" />
<PackageReference Include="Mapster" Version="7.4.0" />
<PackageReference Include="Mapster.DependencyInjection" Version="1.0.0" />
<PackageReference Include="MediatR" Version="11.0.0" />

View File

@@ -0,0 +1,65 @@
using CMSMicroservice.Application.NetworkMembershipCQ.Queries.GetNetworkTree;
using CMSMicroservice.Protobuf.Protos.NetworkMembership;
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.WebApi.Common.Mappings;
public class NetworkMembershipProfile : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
// Request mapping
config.NewConfig<GetNetworkTreeRequest, GetNetworkTreeQuery>()
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.MaxDepth, src => src.MaxDepth != null && src.MaxDepth.Value > 0 ? src.MaxDepth.Value : 3);
// Response mapping: تبدیل درخت به لیست مسطح
config.NewConfig<NetworkTreeDto, GetNetworkTreeResponse>()
.MapWith(src => ConvertTreeToResponse(src));
}
private static GetNetworkTreeResponse ConvertTreeToResponse(NetworkTreeDto? treeDto)
{
var response = new GetNetworkTreeResponse();
if (treeDto == null)
{
return response;
}
// تبدیل درخت به لیست مسطح
FlattenTree(treeDto, response.Nodes, null);
return response;
}
private static void FlattenTree(NetworkTreeDto node, Google.Protobuf.Collections.RepeatedField<NetworkTreeNodeModel> nodesList, long? parentId)
{
var protoNode = new NetworkTreeNodeModel
{
UserId = node.UserId,
UserName = $"{node.FirstName} {node.LastName}".Trim(),
NetworkLeg = (int)(node.LegPosition ?? NetworkLeg.Left),
NetworkLevel = node.CurrentDepth,
IsActive = true
};
if (parentId.HasValue)
{
protoNode.ParentId = parentId.Value;
}
nodesList.Add(protoNode);
// بازگشتی برای فرزندان
if (node.LeftChild != null)
{
FlattenTree(node.LeftChild, nodesList, node.UserId);
}
if (node.RightChild != null)
{
FlattenTree(node.RightChild, nodesList, node.UserId);
}
}
}

View File

@@ -41,6 +41,8 @@ public class NetworkMembershipService : NetworkMembershipContract.NetworkMembers
public override async Task<GetNetworkTreeResponse> GetNetworkTree(GetNetworkTreeRequest request, ServerCallContext context)
{
var x=request.Adapt<GetNetworkTreeQuery>();
return await _dispatchRequestToCQRS.Handle<GetNetworkTreeRequest, GetNetworkTreeQuery, GetNetworkTreeResponse>(request, context);
}