From c914975bffe90f808a05dba2c53d4a750e8403c0 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 06 八月 2025 18:17:08 +0800 Subject: [PATCH] feat:企业开发 --- FlexJobApi.User.Application/FlexJobApi.User.Application.xml | 29 + FlexJobApi.Core/Utils/JsonUtils/JsonSerializerProvider.cs | 63 +++ FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs | 42 ++ FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs | 49 ++ FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs | 2 FlexJobApi.Core/Utils/DbUtils/DbUtils.cs | 27 + /dev/null | 19 - FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterprisesQuery.cs | 101 +---- FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs | 13 FlexJobApi.Core/Models/User/Enterprises/Commands/SaveEnterpriseCommand.cs | 54 ++- FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseQuery.cs | 130 +++++++ FlexJobApi.Core/FlexJobApi.Core.xml | 355 +++++++++++++++----- FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs | 122 ++++++- FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs | 11 14 files changed, 788 insertions(+), 229 deletions(-) diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 17bf11f..b02bf51 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -2165,16 +2165,6 @@ 缂栧彿 </summary> </member> - <member name="T:FlexJobApi.Core.DictionaryDataQueryResult"> - <summary> - 鏁版嵁瀛楀吀鏌ヨ缁撴灉 - </summary> - </member> - <member name="P:FlexJobApi.Core.DictionaryDataQueryResult.Content"> - <summary> - 鍐呭 - </summary> - </member> <member name="T:FlexJobApi.Core.DeleteDictionaryCategoryCommand"> <summary> 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 @@ -2455,11 +2445,6 @@ 绫诲埆鍚嶇О </summary> </member> - <member name="P:FlexJobApi.Core.GetDictionaryDatasQueryResultItem.Category"> - <summary> - 绫诲埆 - </summary> - </member> <member name="P:FlexJobApi.Core.GetDictionaryDatasQueryResultItem.ParentId"> <summary> 涓婄骇Id @@ -2590,6 +2575,26 @@ 淇濆瓨浼佷笟 </summary> </member> + <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.EnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.SocietyCreditCode"> + <summary> + 缁熶竴绀句細淇$敤浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.LegalIdentity"> + <summary> + 娉曚汉韬唤璇佸彿 + </summary> + </member> <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.EnterpriseAuth"> <summary> 浼佷笟璁よ瘉 @@ -2600,29 +2605,14 @@ 鎵�鍦ㄧ渷浠絀d </summary> </member> - <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.Province"> - <summary> - 鎵�鍦ㄧ渷浠� - </summary> - </member> <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.CityId"> <summary> 鎵�鍦ㄥ煄甯侷d </summary> </member> - <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.City"> - <summary> - 鎵�鍦ㄥ煄甯� - </summary> - </member> <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.IndustryTypeId"> <summary> 鎵�灞炶涓欼d - </summary> - </member> - <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.IndustryType"> - <summary> - 鎵�灞炶涓� </summary> </member> <member name="P:FlexJobApi.Core.SaveEnterpriseCommand.MainBusiness"> @@ -2730,6 +2720,181 @@ 鐭俊璐圭敤 </summary> </member> + <member name="T:FlexJobApi.Core.GetEnterpriseElectronSignSettingQuery"> + <summary> + 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseElectronSignSettingQuery.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseElectronSignSettingQueryResult.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseElectronSignSettingQueryResult.RealAccess"> + <summary> + 瀹炲悕閫氶亾 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseElectronSignSettingQueryResult.RealVerifyCost"> + <summary> + 瀹炲悕璐圭敤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseElectronSignSettingQueryResult.SignCost"> + <summary> + 绛剧害璐圭敤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseElectronSignSettingQueryResult.MergeSignCost"> + <summary> + 涓�鍙d环 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseQuery"> + <summary> + 鏌ヨ浼佷笟璇︽儏 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQuery.Id"> + <summary> + Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseQueryResult"> + <summary> + 鏌ヨ浼佷笟璇︽儏-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.EnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.SocietyCreditCode"> + <summary> + 缁熶竴绀句細淇$敤浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.LegalIdentity"> + <summary> + 娉曚汉韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.EnterpriseAuth"> + <summary> + 浼佷笟璁よ瘉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.ProvinceContent"> + <summary> + 鎵�鍦ㄧ渷浠� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.CityContent"> + <summary> + 鎵�鍦ㄥ煄甯� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.IndustryTypeContent"> + <summary> + 鎵�灞炶涓� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.MainBusiness"> + <summary> + 涓昏惀涓氬姟 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.Contacts"> + <summary> + 鑱旂郴浜� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.ContactPhoneNumber"> + <summary> + 鑱旂郴鐢佃瘽 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.ContactEmail"> + <summary> + 鑱旂郴閭 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResult.UserName"> + <summary> + 璐﹀彿 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseQueryResultAuth"> + <summary> + 鏌ヨ浼佷笟璇︽儏-缁撴灉-浼佷笟璁よ瘉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResultAuth.EnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResultAuth.SocietyCreditCode"> + <summary> + 缁熶竴绀句細淇$敤浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResultAuth.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseQueryResultAuth.LegalIdentity"> + <summary> + 娉曚汉韬唤璇佸彿 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseSmsSettingQuery"> + <summary> + 鏌ヨ浼佷笟鐭俊閰嶇疆 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseSmsSettingQuery.Id"> + <summary> + Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseSmsSettingQueryResult"> + <summary> + 鏌ヨ浼佷笟鐭俊閰嶇疆-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseSmsSettingQueryResult.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseSmsSettingQueryResult.SmsAccess"> + <summary> + 鐭俊閫氶亾 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseSmsSettingQueryResult.SmsCost"> + <summary> + 鐭俊璐圭敤 + </summary> + </member> <member name="T:FlexJobApi.Core.GetEnterprisesQuery"> <summary> 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁 @@ -2755,89 +2920,54 @@ Id </summary> </member> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.EnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.SocietyCreditCode"> + <summary> + 缁熶竴绀句細淇$敤浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.IsReal"> + <summary> + 鏄惁瀹炲悕 + </summary> + </member> <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.Contacts"> <summary> 鑱旂郴浜� </summary> </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.ContactNumber"> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.ContactPhoneNumber"> <summary> 鑱旂郴鐢佃瘽 </summary> </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.ProvinceId"> - <summary> - 鎵�鍦ㄧ渷浠絀d - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.Province"> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.ProvinceContent"> <summary> 鎵�鍦ㄧ渷浠� </summary> </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.CityId"> - <summary> - 鎵�鍦ㄥ煄甯侷d - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.City"> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.CityContent"> <summary> 鎵�鍦ㄥ煄甯� </summary> </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.IndustryTypeId"> - <summary> - 鎵�灞炶涓欼d - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.IndustryType"> + <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.IndustryTypeContent"> <summary> 鎵�灞炶涓� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.IsCheckedBankCard"> - <summary> - 鏄惁宸叉牎楠岄摱琛岃处鎴� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.RealAccess"> - <summary> - 瀹炲悕閫氶亾 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.SmsAccess"> - <summary> - 鐭俊閫氶亾 </summary> </member> <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItem.IsConfigured"> <summary> 鏄惁宸查厤缃� - </summary> - </member> - <member name="T:FlexJobApi.Core.GetEnterprisesQueryResultItemAuth"> - <summary> - 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁-缁撴灉-椤�-璁よ瘉 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItemAuth.EnterpriseName"> - <summary> - 浼佷笟鍏ㄧО - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItemAuth.LegalPerson"> - <summary> - 娉曚汉濮撳悕 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItemAuth.SocietyCreditCode"> - <summary> - 缁熶竴绀句細淇$敤浠g爜 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetEnterprisesQueryResultItemAuth.IsReal"> - <summary> - 鏄惁瀹炲悕 </summary> </member> <member name="T:FlexJobApi.Core.DeleteMenuCommand"> @@ -4205,6 +4335,16 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="M:FlexJobApi.Core.DbUtils.GetPagedListAsync``1(FlexJobApi.Core.PagedListQueryPageModel,System.Linq.IQueryable{``0},System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鍒嗛〉鍒楄〃鏁版嵁 + </summary> + <typeparam name="TItem"></typeparam> + <param name="page"></param> + <param name="q"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="M:FlexJobApi.Core.DbUtils.OrderBy``1(System.Linq.IQueryable{``0},System.Collections.Generic.List{FlexJobApi.Core.PagedListQueryPageModelOrderInput})"> <summary> 鎺掑簭 @@ -4633,6 +4773,43 @@ <param name="errors"></param> <returns></returns> </member> + <member name="T:FlexJobApi.Core.Utils.JsonUtils.NewtonsoftJsonSerializerProvider"> + <summary> + Newtonsoft.Json 瀹炵幇 + </summary> + </member> + <member name="M:FlexJobApi.Core.Utils.JsonUtils.NewtonsoftJsonSerializerProvider.Serialize(System.Object,System.Object)"> + <summary> + 搴忓垪鍖栧璞� + </summary> + <param name="value"></param> + <param name="jsonSerializerOptions"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.Core.Utils.JsonUtils.NewtonsoftJsonSerializerProvider.Deserialize``1(System.String,System.Object)"> + <summary> + 鍙嶅簭鍒楀寲瀛楃涓� + </summary> + <typeparam name="T"></typeparam> + <param name="json"></param> + <param name="jsonSerializerOptions"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.Core.Utils.JsonUtils.NewtonsoftJsonSerializerProvider.Deserialize(System.String,System.Type,System.Object)"> + <summary> + 鍙嶅簭鍒楀寲瀛楃涓� + </summary> + <param name="json"></param> + <param name="returnType"></param> + <param name="jsonSerializerOptions"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.Core.Utils.JsonUtils.NewtonsoftJsonSerializerProvider.GetSerializerOptions"> + <summary> + 杩斿洖璇诲彇鍏ㄥ眬閰嶇疆鐨� JSON 閫夐」 + </summary> + <returns></returns> + </member> <member name="P:FlexJobApi.Core.CurrentLogier.UserInfoId"> <summary> 鐢ㄦ埛Id diff --git a/FlexJobApi.Core/Models/Common/DictionaryDataQueryResult.cs b/FlexJobApi.Core/Models/Common/DictionaryDataQueryResult.cs deleted file mode 100644 index 7308fb9..0000000 --- a/FlexJobApi.Core/Models/Common/DictionaryDataQueryResult.cs +++ /dev/null @@ -1,19 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FlexJobApi.Core -{ - /// <summary> - /// 鏁版嵁瀛楀吀鏌ヨ缁撴灉 - /// </summary> - public class DictionaryDataQueryResult - { - /// <summary> - /// 鍐呭 - /// </summary> - public string Content { get; set; } - } -} diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs index 4a7af33..5b3c518 100644 --- a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs +++ b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs @@ -49,19 +49,12 @@ /// <summary> /// 绫诲埆缂栧彿 /// </summary> - [AdaptIgnore] - public string CategoryCode => Category?.Code; + public string CategoryCode { get; set; } /// <summary> /// 绫诲埆鍚嶇О /// </summary> - [AdaptIgnore] - public string CategoryName => Category?.Name; - - /// <summary> - /// 绫诲埆 - /// </summary> - public GetDictionaryDatasQueryResultItemCategory Category { get; set; } + public string CategoryName { get; set; } /// <summary> /// 涓婄骇Id diff --git a/FlexJobApi.Core/Models/User/Enterprises/Commands/SaveEnterpriseCommand.cs b/FlexJobApi.Core/Models/User/Enterprises/Commands/SaveEnterpriseCommand.cs index b32e145..acf59f0 100644 --- a/FlexJobApi.Core/Models/User/Enterprises/Commands/SaveEnterpriseCommand.cs +++ b/FlexJobApi.Core/Models/User/Enterprises/Commands/SaveEnterpriseCommand.cs @@ -1,4 +1,5 @@ -锘縰sing System; +锘縰sing Newtonsoft.Json; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -14,10 +15,42 @@ public class SaveEnterpriseCommand : SaveDataCommand { /// <summary> - /// 浼佷笟璁よ瘉 + /// 浼佷笟鍏ㄧО /// </summary> [Required] - public SaveEnterpriseCommandAuth EnterpriseAuth { get; set; } + [MaxLength(128)] + public string EnterpriseName { get; set; } + + /// <summary> + /// 缁熶竴绀句細淇$敤浠g爜 + /// </summary> + [Required] + [MaxLength(18)] + public string SocietyCreditCode { get; set; } + + /// <summary> + /// 娉曚汉濮撳悕 + /// </summary> + [MaxLength(32)] + public string LegalPerson { get; set; } + + /// <summary> + /// 娉曚汉韬唤璇佸彿 + /// </summary> + [MaxLength(18)] + public string LegalIdentity { get; set; } + + /// <summary> + /// 浼佷笟璁よ瘉 + /// </summary> + [Newtonsoft.Json.JsonIgnore, Swashbuckle.AspNetCore.Annotations.SwaggerIgnore] + public SaveEnterpriseCommandAuth EnterpriseAuth => new SaveEnterpriseCommandAuth + { + EnterpriseName = EnterpriseName, + SocietyCreditCode = SocietyCreditCode, + LegalPerson = LegalPerson, + LegalIdentity = LegalIdentity, + }; /// <summary> /// 鎵�鍦ㄧ渷浠絀d @@ -25,29 +58,14 @@ public Guid? ProvinceId { get; set; } /// <summary> - /// 鎵�鍦ㄧ渷浠� - /// </summary> - public DictionaryData Province { get; set; } - - /// <summary> /// 鎵�鍦ㄥ煄甯侷d /// </summary> public Guid? CityId { get; set; } /// <summary> - /// 鎵�鍦ㄥ煄甯� - /// </summary> - public DictionaryData City { get; set; } - - /// <summary> /// 鎵�灞炶涓欼d /// </summary> public Guid? IndustryTypeId { get; set; } - - /// <summary> - /// 鎵�灞炶涓� - /// </summary> - public DictionaryData IndustryType { get; set; } /// <summary> /// 涓昏惀涓氬姟 diff --git a/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs new file mode 100644 index 0000000..fa62902 --- /dev/null +++ b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs @@ -0,0 +1,49 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃� + /// </summary> + [Resource([EnumResourceController.Enterprise])] + public class GetEnterpriseElectronSignSettingQuery : IRequest<GetEnterpriseElectronSignSettingQueryResult> + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + } + + public class GetEnterpriseElectronSignSettingQueryResult + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 瀹炲悕閫氶亾 + /// </summary> + public EnumRealAccess? RealAccess { get; set; } + + /// <summary> + /// 瀹炲悕璐圭敤 + /// </summary> + public decimal? RealVerifyCost { get; set; } + + /// <summary> + /// 绛剧害璐圭敤 + /// </summary> + public decimal? SignCost { get; set; } + + /// <summary> + /// 涓�鍙d环 + /// </summary> + public decimal? MergeSignCost { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseQuery.cs b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseQuery.cs new file mode 100644 index 0000000..99a05a6 --- /dev/null +++ b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseQuery.cs @@ -0,0 +1,130 @@ +锘縰sing Mapster; +using 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.Enterprise])] + public class GetEnterpriseQuery : IRequest<GetEnterpriseQueryResult> + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + } + + /// <summary> + /// 鏌ヨ浼佷笟璇︽儏-缁撴灉 + /// </summary> + public class GetEnterpriseQueryResult + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 浼佷笟鍏ㄧО + /// </summary> + [AdaptIgnore] + public string EnterpriseName => EnterpriseAuth.EnterpriseName; + + /// <summary> + /// 缁熶竴绀句細淇$敤浠g爜 + /// </summary> + [AdaptIgnore] + public string SocietyCreditCode => EnterpriseAuth.SocietyCreditCode; + + /// <summary> + /// 娉曚汉濮撳悕 + /// </summary> + [AdaptIgnore] + public string LegalPerson => EnterpriseAuth.LegalPerson; + + /// <summary> + /// 娉曚汉韬唤璇佸彿 + /// </summary> + [AdaptIgnore] + public string LegalIdentity => EnterpriseAuth.LegalIdentity; + + /// <summary> + /// 浼佷笟璁よ瘉 + /// </summary> + [Newtonsoft.Json.JsonIgnore, Swashbuckle.AspNetCore.Annotations.SwaggerIgnore] + public SaveEnterpriseCommandAuth EnterpriseAuth { get; set; } + + /// <summary> + /// 鎵�鍦ㄧ渷浠� + /// </summary> + public string ProvinceContent { get; set; } + + /// <summary> + /// 鎵�鍦ㄥ煄甯� + /// </summary> + public string CityContent { get; set; } + + /// <summary> + /// 鎵�灞炶涓� + /// </summary> + public string IndustryTypeContent { get; set; } + + /// <summary> + /// 涓昏惀涓氬姟 + /// </summary> + public string MainBusiness { get; set; } + + /// <summary> + /// 鑱旂郴浜� + /// </summary> + public string Contacts { get; set; } + + /// <summary> + /// 鑱旂郴鐢佃瘽 + /// </summary> + public string ContactPhoneNumber { get; set; } + + /// <summary> + /// 鑱旂郴閭 + /// </summary> + public string ContactEmail { get; set; } + + /// <summary> + /// 璐﹀彿 + /// </summary> + public string UserName { get; set; } + } + + /// <summary> + /// 鏌ヨ浼佷笟璇︽儏-缁撴灉-浼佷笟璁よ瘉 + /// </summary> + public class GetEnterpriseQueryResultAuth + { + /// <summary> + /// 浼佷笟鍏ㄧО + /// </summary> + public string EnterpriseName { get; set; } + + /// <summary> + /// 缁熶竴绀句細淇$敤浠g爜 + /// </summary> + public string SocietyCreditCode { get; set; } + + /// <summary> + /// 娉曚汉濮撳悕 + /// </summary> + public string LegalPerson { get; set; } + + /// <summary> + /// 娉曚汉韬唤璇佸彿 + /// </summary> + public string LegalIdentity { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs new file mode 100644 index 0000000..ba23029 --- /dev/null +++ b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs @@ -0,0 +1,42 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ浼佷笟鐭俊閰嶇疆 + /// </summary> + [Resource([EnumResourceController.Enterprise])] + public class GetEnterpriseSmsSettingQuery : IRequest<GetEnterpriseSmsSettingQueryResult> + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + } + + /// <summary> + /// 鏌ヨ浼佷笟鐭俊閰嶇疆-缁撴灉 + /// </summary> + public class GetEnterpriseSmsSettingQueryResult + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 鐭俊閫氶亾 + /// </summary> + public EnumSmsAccess? SmsAccess { get; set; } + + /// <summary> + /// 鐭俊璐圭敤 + /// </summary> + public decimal SmsCost { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterprisesQuery.cs b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterprisesQuery.cs index 668691b..cb95804 100644 --- a/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterprisesQuery.cs +++ b/FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterprisesQuery.cs @@ -1,6 +1,5 @@ 锘縰sing Mapster; using MediatR; -using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -38,76 +37,6 @@ public Guid Id { get; set; } /// <summary> - /// 鑱旂郴浜� - /// </summary> - public string Contacts { get; set; } - - /// <summary> - /// 鑱旂郴鐢佃瘽 - /// </summary> - public string ContactNumber { get; set; } - - /// <summary> - /// 鎵�鍦ㄧ渷浠絀d - /// </summary> - public Guid? ProvinceId { get; set; } - - /// <summary> - /// 鎵�鍦ㄧ渷浠� - /// </summary> - public DictionaryDataQueryResult Province { get; set; } - - /// <summary> - /// 鎵�鍦ㄥ煄甯侷d - /// </summary> - public Guid? CityId { get; set; } - - /// <summary> - /// 鎵�鍦ㄥ煄甯� - /// </summary> - public DictionaryDataQueryResult City { get; set; } - - /// <summary> - /// 鎵�灞炶涓欼d - /// </summary> - public Guid? IndustryTypeId { get; set; } - - /// <summary> - /// 鎵�灞炶涓� - /// </summary> - public DictionaryDataQueryResult IndustryType { get; set; } - - /// <summary> - /// 鏄惁宸叉牎楠岄摱琛岃处鎴� - /// </summary> - [JsonIgnore] - public bool IsCheckedBankCard { get; set; } - - /// <summary> - /// 瀹炲悕閫氶亾 - /// </summary> - [JsonIgnore] - public EnumRealAccess? RealAccess { get; set; } - - /// <summary> - /// 鐭俊閫氶亾 - /// </summary> - [JsonIgnore] - public EnumSmsAccess? SmsAccess { get; set; } - - /// <summary> - /// 鏄惁宸查厤缃� - /// </summary> - [AdaptIgnore] - public bool IsConfigured => IsCheckedBankCard && RealAccess.HasValue && SmsAccess.HasValue; - } - - /// <summary> - /// 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁-缁撴灉-椤�-璁よ瘉 - /// </summary> - public class GetEnterprisesQueryResultItemAuth - { - /// <summary> /// 浼佷笟鍏ㄧО /// </summary> public string EnterpriseName { get; set; } @@ -126,5 +55,35 @@ /// 鏄惁瀹炲悕 /// </summary> public bool IsReal { get; set; } + + /// <summary> + /// 鑱旂郴浜� + /// </summary> + public string Contacts { get; set; } + + /// <summary> + /// 鑱旂郴鐢佃瘽 + /// </summary> + public string ContactPhoneNumber { get; set; } + + /// <summary> + /// 鎵�鍦ㄧ渷浠� + /// </summary> + public string ProvinceContent { get; set; } + + /// <summary> + /// 鎵�鍦ㄥ煄甯� + /// </summary> + public string CityContent { get; set; } + + /// <summary> + /// 鎵�灞炶涓� + /// </summary> + public string IndustryTypeContent { get; set; } + + /// <summary> + /// 鏄惁宸查厤缃� + /// </summary> + public bool IsConfigured { get; set; } } } diff --git a/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs b/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs index 81a2457..80da9e4 100644 --- a/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs +++ b/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs @@ -75,7 +75,7 @@ /// <summary> /// 鐢ㄦ埛Id /// </summary> - [JsonIgnore] + [Newtonsoft.Json.JsonIgnore, Swashbuckle.AspNetCore.Annotations.SwaggerIgnore] public Guid UserInfoId { get; set; } /// <summary> diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs index 59d0c77..e37e10c 100644 --- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs +++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs @@ -1,4 +1,5 @@ -锘縰sing Furion; +锘縰sing Consul.Filtering; +using Furion; using Furion.DatabaseAccessor; using Furion.DistributedIDGenerator; using Furion.FriendlyException; @@ -160,6 +161,30 @@ } /// <summary> + /// 鏌ヨ鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + /// <typeparam name="TItem"></typeparam> + /// <param name="page"></param> + /// <param name="q"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public static async Task<PagedListQueryResult<TItem>> GetPagedListAsync<TItem>( + this PagedListQueryPageModel page, + IQueryable<TItem> q, + CancellationToken cancellationToken = default) + where TItem : class, new() + { + q = q.OrderBy(page.OrderInput); + var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken); + var result = new PagedListQueryResult<TItem>(); + result.PageModel = page.Adapt<PagedListQueryResultPageModel>(); + result.PageModel.TotalCount = pagedList.TotalCount; + result.PageModel.TotalPage = pagedList.TotalPages; + result.Data = pagedList.Items.ToList(); + return result; + } + + /// <summary> /// 鎺掑簭 /// </summary> /// <typeparam name="T"></typeparam> diff --git a/FlexJobApi.Core/Utils/JsonUtils/JsonSerializerProvider.cs b/FlexJobApi.Core/Utils/JsonUtils/JsonSerializerProvider.cs new file mode 100644 index 0000000..ce964af --- /dev/null +++ b/FlexJobApi.Core/Utils/JsonUtils/JsonSerializerProvider.cs @@ -0,0 +1,63 @@ +锘縰sing Furion; +using Furion.DependencyInjection; +using Furion.JsonSerialization; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core.Utils.JsonUtils +{ + /// <summary> + /// Newtonsoft.Json 瀹炵幇 + /// </summary> + public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton + { + /// <summary> + /// 搴忓垪鍖栧璞� + /// </summary> + /// <param name="value"></param> + /// <param name="jsonSerializerOptions"></param> + /// <returns></returns> + public string Serialize(object value, object jsonSerializerOptions = null) + { + return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings); + } + + /// <summary> + /// 鍙嶅簭鍒楀寲瀛楃涓� + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="json"></param> + /// <param name="jsonSerializerOptions"></param> + /// <returns></returns> + public T Deserialize<T>(string json, object jsonSerializerOptions = null) + { + return JsonConvert.DeserializeObject<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings); + } + + /// <summary> + /// 鍙嶅簭鍒楀寲瀛楃涓� + /// </summary> + /// <param name="json"></param> + /// <param name="returnType"></param> + /// <param name="jsonSerializerOptions"></param> + /// <returns></returns> + public object Deserialize(string json, Type returnType, object jsonSerializerOptions = null) + { + return JsonConvert.DeserializeObject(json, returnType, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings); + } + + /// <summary> + /// 杩斿洖璇诲彇鍏ㄥ眬閰嶇疆鐨� JSON 閫夐」 + /// </summary> + /// <returns></returns> + public object GetSerializerOptions() + { + return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings; + } + } +} diff --git a/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs b/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs index de65441..a151896 100644 --- a/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs +++ b/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs @@ -52,11 +52,18 @@ await rep.UpdateAsync(entity); } + var checkExist = await repUserInfo.AsQueryable() + .AnyAsync(it => + it.Type == EnumUserType.Enterprise + && it.EnterpriseId != entity.Id + && it.UserAuth.UserName == request.UserName); + if (checkExist) throw Oops.Oh(EnumErrorCodeType.s405, "璇ヨ处鍙�"); + var userInfo = await repUserInfo.AsQueryable() .Include(it => it.UserAuth) .FirstOrDefaultAsync(it => it.Type == EnumUserType.Enterprise - && it.UserAuth.UserName == request.UserName); + && it.EnterpriseId == entity.Id); if (userInfo == null) { userInfo = new UserInfo @@ -66,16 +73,16 @@ Status = EnumUserInfoStatus.Normal, UserAuth = new UserAuth { + Name = request.Contacts, UserName = request.UserName, PhoneNumber = request.ContactPhoneNumber, - Password = PBKDF2Encryption.Encrypt(request.Password) + Password = PBKDF2Encryption.Encrypt(MD5Encryption.Encrypt(request.Password)) } }; await repUserInfo.InsertAsync(userInfo); } else { - if (userInfo.EnterpriseId != entity.Id) throw Oops.Oh(EnumErrorCodeType.s405, "璇ヨ处鍙�"); userInfo.UserAuth.PhoneNumber = request.ContactPhoneNumber; await repUserInfo.UpdateAsync(userInfo); } diff --git a/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs b/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs index 4bc19bf..a8917d7 100644 --- a/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs +++ b/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs @@ -1,5 +1,9 @@ 锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; using MediatR; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -11,9 +15,19 @@ /// <summary> /// 浼佷笟鏌ヨ澶勭悊鍣� /// </summary> - public class EnterprisesQueryHandler - : IRequestHandler<GetEnterprisesQuery, PagedListQueryResult<GetEnterprisesQueryResultItem>> + public class EnterprisesQueryHandler( + IRepository<Enterprise> rep, + IRepository<EnterpriseAuth> repEnterpriseAuth, + IRepository<DictionaryData> repDictionaryData + ) : + IRequestHandler<GetEnterprisesQuery, PagedListQueryResult<GetEnterprisesQueryResultItem>>, + IRequestHandler<GetEnterpriseQuery, GetEnterpriseQueryResult>, + IRequestHandler<GetEnterpriseElectronSignSettingQuery, GetEnterpriseElectronSignSettingQueryResult>, + IRequestHandler<GetEnterpriseSmsSettingQuery, GetEnterpriseSmsSettingQueryResult> { + private readonly IRepository<Enterprise> rep = rep; + private readonly IRepository<EnterpriseAuth> repEnterpriseAuth = repEnterpriseAuth; + /// <summary> /// 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁 /// </summary> @@ -22,22 +36,94 @@ /// <returns></returns> public Task<PagedListQueryResult<GetEnterprisesQueryResultItem>> Handle(GetEnterprisesQuery request, CancellationToken cancellationToken) { - return request.PageModel.GetPagedListAsync<Enterprise, GetEnterprisesQueryResultItem>( - q => - { - if (request.Keywords.IsNotNull()) - { - q = q.Where(it => - it.EnterpriseAuth.EnterpriseName.Contains(request.Keywords) - || it.EnterpriseAuth.LegalPerson.Contains(request.Keywords) - || it.Contacts.Contains(request.Keywords)); - } - if (request.IsConfigured.HasValue) - { - q = q.Where(it => (it.IsCheckedBankCard && it.RealAccess.HasValue && it.SmsAccess.HasValue) == request.IsConfigured); - } - return q; - }, cancellationToken: cancellationToken); + var q = rep.AsQueryable().AsNoTracking(); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => + it.EnterpriseAuth.EnterpriseName.Contains(request.Keywords) + || it.EnterpriseAuth.LegalPerson.Contains(request.Keywords) + || it.Contacts.Contains(request.Keywords)); + } + if (request.IsConfigured.HasValue) + { + q = q.Where(it => (it.IsCheckedBankCard && it.RealAccess.HasValue && it.SmsAccess.HasValue) == request.IsConfigured); + } + var s = (from e in q + join a in repEnterpriseAuth.AsQueryable().AsNoTracking() on e.EnterpriseAuthId equals a.Id + join p in repDictionaryData.AsQueryable().AsNoTracking() on e.ProvinceId equals p.Id into pg + from pgi in pg.DefaultIfEmpty() + join c in repDictionaryData.AsQueryable().AsNoTracking() on e.CityId equals c.Id into cg + from cgi in cg.DefaultIfEmpty() + join i in repDictionaryData.AsQueryable().AsNoTracking() on e.IndustryTypeId equals i.Id into ig + from igi in ig.DefaultIfEmpty() + select new GetEnterprisesQueryResultItem + { + Id = e.Id, + EnterpriseName = a.EnterpriseName, + LegalPerson = a.LegalPerson, + SocietyCreditCode = a.SocietyCreditCode, + Contacts = e.Contacts, + ContactPhoneNumber = e.ContactPhoneNumber, + ProvinceContent = pgi.Content, + CityContent = cgi.Content, + IndustryTypeContent = igi.Content, + IsReal = a.IsReal, + IsConfigured = e.IsCheckedBankCard && e.RealAccess.HasValue && e.SmsAccess.HasValue + }); + return request.PageModel.GetPagedListAsync(s, cancellationToken: cancellationToken); + } + + /// <summary> + /// 鏌ヨ浼佷笟璇︽儏 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseQueryResult> Handle(GetEnterpriseQuery request, CancellationToken cancellationToken) + { + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .ProjectToType<GetEnterpriseQueryResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ紒涓�"); + model.UserName = await rep.Change<UserInfo>().AsQueryable().AsNoTracking() + .Include(it => it.UserAuth) + .Where(it => it.EnterpriseId == model.Id) + .Select(it => it.UserAuth.UserName) + .FirstOrDefaultAsync(cancellationToken); + return model; + } + + /// <summary> + /// 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseElectronSignSettingQueryResult> Handle(GetEnterpriseElectronSignSettingQuery request, CancellationToken cancellationToken) + { + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .ProjectToType<GetEnterpriseElectronSignSettingQueryResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ紒涓�"); + return model; + } + + /// <summary> + /// 鏌ヨ浼佷笟鐭俊閰嶇疆 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseSmsSettingQueryResult> Handle(GetEnterpriseSmsSettingQuery request, CancellationToken cancellationToken) + { + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .ProjectToType<GetEnterpriseSmsSettingQueryResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ紒涓�"); + return model; } } } diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml index b9cf80d..c8593b7 100644 --- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml +++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml @@ -98,6 +98,11 @@ 浼佷笟鏌ヨ澶勭悊鍣� </summary> </member> + <member name="M:FlexJobApi.User.Application.EnterprisesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseAuth},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})"> + <summary> + 浼佷笟鏌ヨ澶勭悊鍣� + </summary> + </member> <member name="M:FlexJobApi.User.Application.EnterprisesQueryHandler.Handle(FlexJobApi.Core.GetEnterprisesQuery,System.Threading.CancellationToken)"> <summary> 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁 @@ -106,6 +111,30 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="M:FlexJobApi.User.Application.EnterprisesQueryHandler.Handle(FlexJobApi.Core.GetEnterpriseQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ浼佷笟璇︽儏 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.User.Application.EnterprisesQueryHandler.Handle(FlexJobApi.Core.GetEnterpriseElectronSignSettingQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.User.Application.EnterprisesQueryHandler.Handle(FlexJobApi.Core.GetEnterpriseSmsSettingQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ浼佷笟鐭俊閰嶇疆 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="F:FlexJobApi.User.Application.EnumUserErrorCodeType.u1000"> <summary> 璐﹀彿鎴栧瘑鐮佷笉瀛樺湪 -- Gitblit v1.9.1