فهرست منبع

Merge branch 'feature/snapshot' into test

qinchaoyue 3 هفته پیش
والد
کامیت
79f299c3ff

+ 62 - 0
src/Hotline.Api/Filter/UserNameSessionContextFilter.cs

@@ -0,0 +1,62 @@
+using Hotline.Identity.Accounts;
+using Hotline.Settings;
+using Hotline.Share.Dtos.CallCenter;
+using Hotline.Share.Tools;
+using Hotline.Users;
+using IdentityModel;
+using Microsoft.AspNetCore.Mvc.Filters;
+using System.Security.Claims;
+using XF.Domain.Authentications;
+using XF.Domain.Repository;
+using static Hotline.AppDefaults;
+
+namespace Hotline.Api.Filter;
+
+public class UserNameSessionContextFilter : ActionFilterAttribute
+{
+    private IAccountRepository _accountRepository;
+    private IRepository<User> _userRepository;
+    private readonly string Name;  
+
+    public UserNameSessionContextFilter(string name)
+    {
+        Name = name;
+    }
+
+    public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
+    {
+        await ReloadUser(context);
+        await next();
+    }
+
+    private async Task ReloadUser(ActionExecutingContext context)
+    {
+        try
+        {
+            _accountRepository = context.HttpContext.RequestServices.GetRequiredService<IAccountRepository>();
+            _userRepository = context.HttpContext.RequestServices.GetRequiredService<IRepository<User>>();
+            var user = _userRepository.Queryable().Where(m => m.Name == Name).First();
+            if (user == null) return;
+            var account = await _accountRepository.GetExtAsync(m => m.Id == user.Id, m => m.Includes(x => x.Roles));
+
+            List<Claim> userClaims = [
+                new(JwtClaimTypes.Subject, account.Id),
+                new(JwtClaimTypes.PhoneNumber, account.PhoneNo ?? string.Empty),
+                new(ClaimTypes.NameIdentifier, user.Id),
+                new(AppClaimTypes.UserDisplayName, account.Name),
+                new(AppClaimTypes.DepartmentId, user.OrgId ?? string.Empty),
+                new(AppClaimTypes.DepartmentIsCenter, user.Organization?.IsCenter.ToString() ?? string.Empty),
+                new(AppClaimTypes.DepartmentName, user.Organization?.Name ?? string.Empty),
+                new(AppClaimTypes.DepartmentAreaCode, user.Organization?.AreaCode ?? string.Empty),
+                new(AppClaimTypes.DepartmentAreaName, user.Organization?.AreaName ?? string.Empty),
+                new(AppClaimTypes.DepartmentLevel, user.Organization?.Level.ToString() ?? string.Empty),
+                new(AppClaimTypes.AreaId, user.OrgId?.GetHigherOrgId() ?? string.Empty),
+            ];
+            userClaims.AddRange(account.Roles.Select(d => new Claim(JwtClaimTypes.Role, d.Name)));
+            context.HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity(userClaims));
+        }
+        catch
+        {
+        }
+    }
+}

+ 0 - 1
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -4082,7 +4082,6 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             OrgId = startStep.HandlerOrgId,
             OrgName = startStep.HandlerOrgName,
         };
-        //_sessionContext.ChangeSession(startStep.HandlerId);
         await _sessionContextManager.ChangeSessionContextByUserIdAsync(startStep.HandlerId, cancellationToken);
         var isAutoFillSummaryOpinion = _systemSettingCacheManager.IsAutoFillSummaryOpinion;
 

+ 22 - 2
src/Hotline.Share/Dtos/Article/BulletinDto.cs

@@ -545,6 +545,27 @@ namespace Hotline.Share.Dtos.Article
         public string IndustryId { get; set; }
     }
 
+    public class BulletinListOutDto
+    { 
+        /// <summary>
+        /// 公告ID
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string Title { get; set; }
+
+        private string content;
+        /// <summary>
+        /// 内容
+        /// </summary>
+        public string Content { get { return content.RemoveHtmlTags(); } set { content = value; } }
+
+        public DateTime CreationTime { get; set; }
+    }
+
     /// <summary>
     /// 微信小程序获取宣传学习列表出参
     /// </summary>
@@ -560,11 +581,10 @@ namespace Hotline.Share.Dtos.Article
         /// </summary>
         public string Title { get; set; }
 
-        private string content;
         /// <summary>
         /// 内容
         /// </summary>
-        public string Content { get { return content.RemoveHtmlTags(); } set { content = value; } }
+        public string Content { get; set; }
 
         public DateTime CreationTime { get; set; }
     }