From a2efd6c3bdbea77ef13205f4102cae774a233041 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 05 九月 2025 13:06:02 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs                  |   43 +++++++++++++
 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs |    1 
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserBankCardQuery.cs             |   49 ++++++++++++++++
 FlexJobApi.Core/Models/UserServer/Users/Commands/SavePersonalUserBankCardCommand.cs         |   44 ++++++++++++++
 FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs         |   24 +++++++
 FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs                                   |   15 +---
 6 files changed, 162 insertions(+), 14 deletions(-)

diff --git a/FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs b/FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs
index 346dd77..990ceb9 100644
--- a/FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs
@@ -23,6 +23,11 @@
         public User User { get; set; }
 
         /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+
+        /// <summary>
         /// 閾惰鍗″彿
         /// </summary>
         [MaxLength(32)]
@@ -37,16 +42,6 @@
         /// 鎵�灞炴敮琛�
         /// </summary>
         public string BankBranch { get; set; }
-
-        /// <summary>
-        /// 濮撳悕
-        /// </summary>
-        public string Name { get; set; }
-
-        /// <summary>
-        /// 韬唤璇�
-        /// </summary>
-        public string Identity { get; set; }
 
         /// <summary>
         /// 閾惰棰勭暀鎵嬫満鍙�
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs
index 48051cf..a8dd6a2 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs
@@ -17,6 +17,7 @@
         /// 浼佷笟Id
         /// </summary>
         public Guid? EnterpriseId { get; set; }
+
         /// <summary>
         /// 閫氶亾
         /// </summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SavePersonalUserBankCardCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SavePersonalUserBankCardCommand.cs
new file mode 100644
index 0000000..cdd1d7f
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SavePersonalUserBankCardCommand.cs
@@ -0,0 +1,44 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 淇濆瓨鐢ㄦ埛閾惰鍗′俊鎭�
+    /// </summary>
+    [Resource([EnumResourceController.UserServerUser])]
+    public class SavePersonalUserBankCardCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+
+        /// <summary>
+        /// 閾惰鍗″彿
+        /// </summary>
+        [MaxLength(32)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎵�灞為摱琛�
+        /// </summary>
+        public string Bank { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炴敮琛�
+        /// </summary>
+        public string BankBranch { get; set; }
+
+        /// <summary>
+        /// 閾惰棰勭暀鎵嬫満鍙�
+        /// </summary>
+        [MaxLength(11)]
+        public string PhoneNumber { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserBankCardQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserBankCardQuery.cs
new file mode 100644
index 0000000..c14a3b8
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserBankCardQuery.cs
@@ -0,0 +1,49 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏌ヨ涓汉鐢ㄦ埛閾惰鍗′俊鎭�
+    /// </summary>
+    [Resource([EnumResourceController.UserServerUser])]
+    public class GetPersonalUserBankCardQuery : IRequest<GetPersonalUserBankCardQueryResult>
+    {
+    }
+
+    /// <summary>
+    /// 鏌ヨ涓汉鐢ㄦ埛閾惰鍗′俊鎭粨鏋�
+    /// </summary>
+    public class GetPersonalUserBankCardQueryResult
+    {
+        /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+
+        /// <summary>
+        /// 閾惰鍗″彿
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎵�灞為摱琛�
+        /// </summary>
+        public string Bank { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炴敮琛�
+        /// </summary>
+        public string BankBranch { get; set; }
+
+        /// <summary>
+        /// 閾惰棰勭暀鎵嬫満鍙�
+        /// </summary>
+        public string PhoneNumber { get; set; }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
index f2c78f9..2a88cfc 100644
--- a/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
@@ -1,6 +1,7 @@
 锘縰sing FlexJobApi.Core;
 using Furion.DatabaseAccessor;
 using Furion.FriendlyException;
+using Mapster;
 using MediatR;
 using Microsoft.EntityFrameworkCore;
 using System;
@@ -15,12 +16,15 @@
     /// 鐢ㄦ埛淇℃伅鍛戒护澶勭悊鍣�
     /// </summary>
     public class UserInfoCommandHandler(
-            IRepository<User> rep
+            IRepository<User> rep,
+            IRepository<UserBankCard> repUserBankCard
         ) :
         IRequestHandler<SetUserInfoStatusCommand, int>,
-        IRequestHandler<SetUserInfoRolesCommand, int>
+        IRequestHandler<SetUserInfoRolesCommand, int>,
+        IRequestHandler<SavePersonalUserBankCardCommand, Guid>
     {
         private readonly IRepository<User> rep = rep;
+        private readonly IRepository<UserBankCard> repUserBankCard = repUserBankCard;
 
         /// <summary>
         /// 璁剧疆鐢ㄦ埛淇℃伅鐘舵��
@@ -63,5 +67,40 @@
             return entity.UserRoles.Count;
         }
 
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛閾惰鍗′俊鎭�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<Guid> Handle(SavePersonalUserBankCardCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var entity = await repUserBankCard.AsQueryable()
+                .Where(it => it.UserId == logier.Id)
+                .FirstOrDefaultAsync();
+            var add = false;
+            if (entity == null)
+            {
+                entity = new UserBankCard();
+                entity.UserId = logier.Id;
+                add = true;
+            }
+            request.Adapt(entity);
+            if (entity.Access == EnumEnterpriseWalletAccess.Alipay)
+            {
+                entity.Bank = "鏀粯瀹�";
+                entity.BankBranch = null;
+            }
+            if (add)
+            {
+                await repUserBankCard.InsertAsync(entity);
+            }
+            else
+            {
+                await repUserBankCard.UpdateAsync(entity);
+            }
+            return entity.Id;
+        }
     }
 }
diff --git a/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs b/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
index 394dde3..24fe715 100644
--- a/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
@@ -1,5 +1,6 @@
 锘縰sing FlexJobApi.Core;
 using Furion.DatabaseAccessor;
+using Mapster;
 using MediatR;
 using Microsoft.EntityFrameworkCore;
 using System;
@@ -14,12 +15,15 @@
     /// C绔汉鍛樻煡璇㈠鐞嗗櫒
     /// </summary>
     public class GetPersonalUserInfosQueryHandler(
-            IRepository<User> rep
+            IRepository<User> rep,
+            IRepository<UserBankCard> repUserBankCard
         ) :
         IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult>,
-        IRequestHandler<GetPersonalUserInfoSignContractsQuery, GetPersonalUserInfoSignContractsQueryResult>
+        IRequestHandler<GetPersonalUserInfoSignContractsQuery, GetPersonalUserInfoSignContractsQueryResult>,
+        IRequestHandler<GetPersonalUserBankCardQuery, GetPersonalUserBankCardQueryResult>
     {
         private readonly IRepository<User> rep = rep;
+        private readonly IRepository<UserBankCard> repUserBankCard = repUserBankCard;
 
         /// <summary>
         /// 鏌ヨC绔汉鍛樺垎椤靛垪琛ㄦ暟鎹�
@@ -130,5 +134,21 @@
                 });
             return request.PageModel.GetPagedListAsync<GetPersonalUserInfoSignContractsQueryResult, GetPersonalUserInfoSignContractsQueryResultItem>(q, cancellationToken);
         }
+
+        /// <summary>
+        /// 鏌ヨ涓汉鐢ㄦ埛閾惰鍗′俊鎭�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetPersonalUserBankCardQueryResult> Handle(GetPersonalUserBankCardQuery request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var model = repUserBankCard.AsQueryable().AsNoTracking()
+                .Where(it => it.UserId == logier.Id)
+                .ProjectToType<GetPersonalUserBankCardQueryResult>()
+                .FirstOrDefaultAsync();
+            return model;
+        }
     }
 }

--
Gitblit v1.9.1