diff --git a/Src/Dlhis.Basic/ObfuscateProviderJsonConverter.cs b/Src/Dlhis.Basic/ObfuscateProviderJsonConverter.cs index 59d1ec5d..116b01bd 100644 --- a/Src/Dlhis.Basic/ObfuscateProviderJsonConverter.cs +++ b/Src/Dlhis.Basic/ObfuscateProviderJsonConverter.cs @@ -23,6 +23,7 @@ public class ObfuscateProviderJsonConverter : ObfuscateJsonConverter var sp = App.GetServiceProvider(true); var cache = sp.GetService(); var currentUser = sp.GetService(); + var range = cache.ListRange("datapermission:role"); if (range.Contains(currentUser.GetUserClaim(ClaimTypes.Role))) { @@ -44,6 +45,47 @@ public class ObfuscateProviderJsonConverter : ObfuscateJsonConverter vc.Reverse(); v = string.Join("", vc); + writer.WriteValue(v); + } + } +} + +public class ObfuscateProviderOnlyAdminJsonConverter : ObfuscateJsonConverter +{ + private readonly int _last; + + /// + public ObfuscateProviderOnlyAdminJsonConverter(int last) : base(last) + { + _last = last; + } + + /// + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + var sp = App.GetServiceProvider(true); + var currentUser = sp.GetService(); + + if (currentUser.GetRole() == "admin") + { + writer.WriteValue(value); + } + else + { + var v = value?.ToString() ?? string.Empty; + var vc = v.ToCharArray().Reverse().ToList(); + + for (int i = 0; i < vc.Count; i++) + { + if (i + 1 > _last) + { + vc[i] = '*'; + } + } + + vc.Reverse(); + v = string.Join("", vc); + writer.WriteValue(v); } } diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs index bd3d30b8..59bbc99e 100644 --- a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs +++ b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs @@ -45,7 +45,7 @@ public class GainfoDetailResponse /// /// 身份证号 /// - [JsonConverter(typeof(ObfuscateProviderJsonConverter), 0)] + [JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter), 0)] public string IdNo { get; set; } /// @@ -74,7 +74,7 @@ public class GainfoDetailResponse /// /// 出生日期 /// - [JsonConverter(typeof(ObfuscateProviderJsonConverter), 0)] + [JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter), 0)] public string Birthday { get @@ -86,7 +86,7 @@ public class GainfoDetailResponse /// /// 手机号码 /// - [JsonConverter(typeof(ObfuscateProviderJsonConverter), 0)] + [JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter), 0)] public string Phone { get; set; } /// diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs index efbb53fa..867630c8 100644 --- a/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs +++ b/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs @@ -44,13 +44,13 @@ public class GainfoPageResponse /// /// 身份证号 /// - [JsonConverter(typeof(ObfuscateProviderJsonConverter), 6)] + [JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter))] public string IdNo { get; set; } /// /// 手机号码 /// - [JsonConverter(typeof(ObfuscateProviderJsonConverter), 4)] + [JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter))] public string Phone { get; set; } /// @@ -65,11 +65,11 @@ public class GainfoPageResponse public string GenderDesc => Gender.GetDescription(); - /// - /// 生日 - /// - [JsonConverter(typeof(ToDateJsonConverter))] - public DateTime Birthday { get; set; } + // /// + // /// 生日 + // /// + // [JsonConverter(typeof(ToDateJsonConverter))] + // public DateTime Birthday { get; set; } /// /// 身份证地址