private static void Main(string[] args) { Console.WriteLine("Create AbpBootstrapper."); using (var booter = AbpBootstrapper.Create <ConsoleAppModule>()) { var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PlugIns"); Console.WriteLine("path is " + path); booter.PlugInSources.AddFolder(path); Console.WriteLine("Added PlugIns Directory is completed."); booter.Initialize(); Console.WriteLine("Initialize DI is completed."); var test = booter.IocManager.Resolve <TestDI>(); test.Run(); var test2 = booter.IocManager.Resolve <TestDI>(); test2.Run(); } Console.WriteLine("Dispose AbpBootstrapper."); Console.ReadKey(); }
public static void Main(string[] args) { ParseArgs(args); using (var bootstrapper = AbpBootstrapper.Create <ProjectMigratorModule>()) { bootstrapper.IocManager.IocContainer .AddFacility <LoggingFacility>(f => f.UseAbpLog4Net() .WithConfig("log4net.config") ); bootstrapper.Initialize(); using (var migrateExecuter = bootstrapper.IocManager.ResolveAsDisposable <MultiTenantMigrateExecuter>()) { migrateExecuter.Object.Run(_skipConnVerification); } Console.WriteLine("Press ENTER to exit..."); Console.ReadLine(); } }
public override async Task Delete(EntityDto <long> input) { var user = await _userManager.GetUserByIdAsync(input.Id); await _userManager.DeleteAsync(user); #region 除IM用户 try { var im_Service = AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IM_UserManager>(); im_Service.DeleteIMUser(input.Id.ToString()); } catch (Exception) { } #endregion #region 除组织架构领导 var org = _workflowOrganizationUnitsRepository.GetAll().Where(ite => ite.ChargeLeader.Contains($"u_{user.Id}")).ToList(); foreach (var r in org) { var users = r.ChargeLeader.Split(",").ToList(); users.Remove($"u_{user.Id}"); r.ChargeLeader = string.Join(",", users); _workflowOrganizationUnitsRepository.Update(r); } var org2 = _workflowOrganizationUnitsRepository.GetAll().Where(ite => ite.Leader.Contains($"u_{user.Id}")).ToList(); foreach (var r in org2) { var users = r.Leader.Split(",").ToList(); users.Remove($"u_{user.Id}"); r.Leader = string.Join(",", users); _workflowOrganizationUnitsRepository.Update(r); } #endregion }
static void Main(string[] args) { //Bootstrapping ABP system using (var bootstrapper = AbpBootstrapper.Create <PTEImporterModule>()) { var config = string.Format(@"{0}\log4net.config", AppDomain.CurrentDomain.BaseDirectory); bootstrapper.IocManager .IocContainer .AddFacility <LoggingFacility>(f => f.LogUsing <Log4NetLoggerFactory>().WithConfig(config)); bootstrapper.Initialize(); //Getting a worker object from DI and running it using (var worker = bootstrapper.IocManager.ResolveAsDisposable <Worker>()) { worker.Object.Run(); } //Disposes worker and all it's dependencies Console.WriteLine("Background job is running please do not press enter to exit..."); Console.ReadLine(); } }
/// <summary> /// 添加一个CWGLBorrowMoney /// </summary> /// <param name="input">实体</param> /// <returns></returns> public async Task <InitWorkFlowOutput> CreateTest() { var input = new CreateCWGLBorrowMoneyInput() { BankName = "1", BankOpenName = "2", CardNumber = "3", FlowId = Guid.Parse("384c41b8-9d13-429b-ab62-fcc22e8639ee"), FlowTitle = "查询效率测试", Mode = MoneyMode.现金, Money = 12312, Note = "测试", Nummber = 1, TypeId = BorrowMoney.普通借款, }; var service = AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IWorkFlowOrganizationUnitsAppService>(); var userOrgModel = await service.GetUserPostInfo(new NullableIdDto <long>() { Id = AbpSession.UserId.Value, }, new NullableIdDto <long>() { Id = null }); var id = Guid.NewGuid(); var newmodel = new CWGLBorrowMoney() { Id = id, UserId = AbpSession.UserId.Value, OrgId = userOrgModel.OrgId, TypeId = input.TypeId, Money = input.Money, Mode = input.Mode, IsPayBack = false, BankName = input.BankName, CardNumber = input.CardNumber, BankOpenName = input.BankOpenName, Note = input.Note, Nummber = input.Nummber }; newmodel.Status = 0; await _repository.InsertAsync(newmodel); if (input.FileList != null) { var fileList = new List <AbpFileListInput>(); foreach (var item in input.FileList) { fileList.Add(new AbpFileListInput() { Id = item.Id, Sort = item.Sort }); } await _abpFileRelationAppService.CreateAsync(new CreateFileRelationsInput() { BusinessId = id.ToString(), BusinessType = (int)AbpFileBusinessType.借款申请, Files = fileList }); } var service1 = AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IWorkFlowWorkTaskAppService>(); service1.InitWorkFlowInstance(new InitWorkFlowInput() { FlowId = input.FlowId, FlowTitle = input.FlowTitle, InStanceId = newmodel.Id.ToString() }); return(new InitWorkFlowOutput() { InStanceId = newmodel.Id.ToString() }); }
public AbpBootstraper_Tester() { _bootstrapper = AbpBootstrapper.Create <MyTestModule>(LocalIocManager); }
private static void Main(string[] args) { var bootstrapper = AbpBootstrapper.Create <AbpQuartzConsoleAppModule>(); bootstrapper.Initialize(); }
static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("See https://github.com/aspnetboilerplate/aspnetboilerplate-samples/tree/master/ConsoleRemoteWebApiCall to know how to use this demo application."); Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Gray; try { using (var bootstrapper = AbpBootstrapper.Create <MyModule>()) { bootstrapper.Initialize(); using (var testClient = bootstrapper.IocManager.ResolveAsDisposable <MyTestClient>()) { Console.Write("Enter tenancy (demo) name: "); testClient.Object.TenancyName = Console.ReadLine(); if (testClient.Object.TenancyName.IsNullOrWhiteSpace()) { return; } Console.Write("Enter username: "******"Enter password: "******"Cookie based (C) or Token based (T) auth (default: C)?"); var authType = Console.ReadLine() ?? "C"; if (authType.ToUpperInvariant() == "T") { Console.WriteLine("Logging in with TOKEN based auth..."); testClient.Object.TokenBasedAuth(); } else { Console.WriteLine("Logging in with COOKIE based auth..."); testClient.Object.CookieBasedAuth(); } Console.WriteLine("Getting roles..."); var roles = AsyncHelper.RunSync(() => testClient.Object.GetRolesAsync()); Console.WriteLine(roles.Items.Count + " roles found:"); foreach (var role in roles.Items) { Console.WriteLine("Role: Id=" + role.Id + ", DisplayName=" + role.DisplayName + ", IsDefault=" + role.IsDefault); } } } } catch (AbpRemoteCallException ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine(); Console.WriteLine("Press ENTER to exit..."); Console.ReadLine(); }
public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); services.AddControllers(); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme). AddJwtBearer(options => { options.Authority = Configuration["Authentication:Authority"]; options.Audience = Configuration["Authentication:Audience"]; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = Convert.ToBoolean(Configuration["Authentication:ValidateIssuer"]), ValidateIssuerSigningKey = Convert.ToBoolean(Configuration["Authentication:ValidateIssuerSigningKey"]), ValidateAudience = Convert.ToBoolean(Configuration["Authentication:ValidateAudience"]), }; }); services.AddTransient <WebhooksSqlConnection>(); services.AddTransient <WebhooksSqlConnectionString>((serviceProvider) => Configuration["ConnectionStrings:Webhooks"]); services.AddTransient <IEventTypesRepository, FixedEventTypesRepository>(); services.AddTransient <IWebhooksRepository, AbpWebhookRepository>(); services.AddTransient <ITenantRepository, TenantRepository>(); services.AddTransient <ITenant, TenantFromHttpContext>(); services.AddTransient <IProductRepository, ProductRepository>(); services.AddTransient <TenantIdClaimType>(); // Add framework services. services .AddMvc(options => { options.InputFormatters.RemoveType <Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter>(); options.OutputFormatters.RemoveType <Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter>(); }) .AddNewtonsoftJson(opts => { opts.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); opts.SerializerSettings.Converters.Add(new StringEnumConverter(new CamelCaseNamingStrategy())); }) .AddXmlSerializerFormatters(); services .AddSwaggerGen(c => { c.SwaggerDoc("1.0.0", new OpenApiInfo { Version = "1.0.0", Title = "SEM API", Description = "SEM API - Reliable and near real time integration", Contact = new OpenApiContact() { Name = "Stichting Educatieve Marktpartijen", Url = new Uri("https://stichtingsem.stoplight.io/docs/sem-technology-prototype"), //Email = "*****@*****.**" } //, //TermsOfService = new Uri("") }); c.CustomSchemaIds(type => type.FullName); c.IncludeXmlComments($"{AppContext.BaseDirectory}{Path.DirectorySeparatorChar}{_hostingEnv.ApplicationName}.xml"); // Sets the basePath property in the Swagger document generated c.DocumentFilter <BasePathFilter>("/api"); // Include DataAnnotation attributes on Controller Action parameters as Swagger validation rules (e.g required, pattern, ..) // Use [ValidateModelState] on Actions to actually validate it in C# as well! c.OperationFilter <GeneratePathParamsValidationFilter>(); }); var bootStrapper = AbpBootstrapper.Create <MyAppModule>(); bootStrapper.Initialize(); IocManager.Instance.Register <IWebhookEventStore, WebhookEventStore>(); IocManager.Instance.Register <IWebhookSendAttemptStore, WebhookSendAttemptStore>(); IocManager.Instance.Register <IWebhookSubscriptionsStore, WebhookSubscriptionsStore>(); Console.WriteLine("create definition"); var definitionMngr = IocManager.Instance.Resolve <IWebhookDefinitionManager>(); definitionMngr.Add(new WebhookDefinition("catalog.added")); definitionMngr.Add(new WebhookDefinition("catalog.updated")); }
private static void Main(string[] args) { var client = new HttpClient(); var regionWebResponseMessage = AsyncHelper.RunSync(() => client .GetAsync("http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/20180708230813.html")); var regionResult = regionWebResponseMessage.Content.ReadAsStringAsync().Result; var regionCodes = Regex.Matches(regionResult, @"<td class=[0-9a-zA-Z]{1,10}>.*?(\d{6})<"); var regionNames = Regex.Matches(regionResult, @"<td class=[0-9a-zA-Z]{1,10}>([^0-9a-zA-Z<>]+)<"); if (regionCodes.Count != regionNames.Count) { throw new ApplicationException("获取的到地区数据不一致!"); } var region = new List <Region>(); for (var i = 0; i < regionCodes.Count; i++) { var code = regionCodes[i].Groups[1].Value; var name = regionNames[i].Groups[1].Value; region.Add(new Region { Name = name, RegionCode = code }); } var root = new Region { Name = "中国" }; var lastRoot = root; region.ForEach(r => { var curr = new Region { Name = r.Name, RegionCode = r.RegionCode }; if (r.RegionCode.Is2Root()) { if (lastRoot.Parent == null) { if (lastRoot.Children == null) { lastRoot.Children = new List <Region>(); } lastRoot.Children.Add(curr); curr.Parent = lastRoot; lastRoot = curr; } else { lastRoot = lastRoot.RegionCode.Is3Root() ? lastRoot.Parent.Parent : lastRoot.Parent; curr.Parent = lastRoot; if (curr.Parent.Children == null) { curr.Parent.Children = new List <Region>(); } curr.Parent.Children.Add(curr); lastRoot = curr; } } else if (r.RegionCode.Is3Root()) { curr.Parent = lastRoot.RegionCode.Is3Root() ? lastRoot.Parent : lastRoot; if (curr.Parent.Children == null) { curr.Parent.Children = new List <Region>(); } curr.Parent.Children.Add(curr); lastRoot = curr; } else { curr.Parent = lastRoot; if (curr.Parent.Children == null) { curr.Parent.Children = new List <Region>(); } curr.Parent.Children.Add(curr); } }); using (var abpBootstrapper = AbpBootstrapper.Create <RegionModule>()) { abpBootstrapper.Initialize(); var unitOfWorkManager = abpBootstrapper.IocManager.Resolve <IUnitOfWorkManager>(); var dbContext = abpBootstrapper.IocManager.Resolve <RegionDbContext>(); dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated(); using (var uow = unitOfWorkManager.Begin()) { var regionRepository = abpBootstrapper.IocManager.Resolve <IRepository <Region, int> >(); var regionTreeManager = abpBootstrapper.IocManager.Resolve <GeneralTreeManager <Region, int> >(); root.Children.ForEach(x => { x.Parent = null; AsyncHelper.RunSync(() => regionTreeManager.BulkCreateAsync(x)); unitOfWorkManager.Current.SaveChanges(); }); unitOfWorkManager.Current.SaveChanges(); var regionTree = regionRepository.GetAll().ProjectTo <RegionDto>().ToList(); File.WriteAllText("region.json", JsonConvert.SerializeObject(regionTree.ToTreeDto <RegionDto, int>(), Formatting.Indented)); uow.Complete(); } } }
public async Task UpdateUserAsyn(UpdateUserInput input) { Debug.Assert(input.User.Id != null, "input.User.Id should be set."); var user = await _userManager.GetUserByIdAsync(input.User.Id.Value); var oldName = user.Name; //Update user properties //input.User.MapTo(user); //Passwords is not mapped (see mapping configuration) user.Name = input.User.Name; user.UserName = input.User.UserName; user.EmailAddress = input.User.EmailAddress; user.PhoneNumber = input.User.PhoneNumber; user.Sex = input.User.Sex; user.EnterTime = input.User.EnterTime; user.IdCard = input.User.IdCard; if (!string.IsNullOrWhiteSpace(input.User.Password)) { CheckErrors(await _userManager.ChangePasswordAsync(user, input.User.Password)); } CheckErrors(await _userManager.UpdateAsync(user)); //Update roles 改为不能直接设置角色,而通过岗位继承角色 //if (input.AssignedRoleNames != null && input.AssignedRoleNames.Length != 0) //{ // var ret = await SetRoles(user, input.AssignedRoleNames); // CheckErrors(ret); //} //if (input.SetRandomPassword) //{ // input.User.Password = User.CreateRandomPassword(); //} if (input.PostIds != null && input.PostIds.Count == 0) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "请选择至少一个岗位"); } if (input.PostIds.Count != input.PostIds.Distinct().Count()) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "请不要重复选择同一岗位"); } if (input.MainPostId == Guid.Empty || input.PostIds.Contains(input.MainPostId) == false) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "主岗位不在所选岗位中,请重新选择。"); } var exit_post = _userPostsRepository.GetAll().Where(r => r.UserId == user.Id); foreach (var item in exit_post) { await _userPostsRepository.DeleteAsync(item); } var orgids = new List <long>();//所在部门集合 long mainorg = 0; foreach (var item in input.PostIds) { var orgPostModel = await _organizationUnitPostsRepository.GetAsync(item); if (orgids.Exists(ite => ite == orgPostModel.OrganizationUnitId) == false) { orgids.Add(orgPostModel.OrganizationUnitId); } var userPost = new UserPosts() { Id = Guid.NewGuid(), UserId = user.Id, PostId = orgPostModel.PostId, OrgPostId = orgPostModel.Id, OrgId = orgPostModel.OrganizationUnitId }; if (item == input.MainPostId) { userPost.IsMain = true;// 设置主岗位 mainorg = orgPostModel.OrganizationUnitId; } await _userPostsRepository.InsertAsync(userPost); } //部门更新 var oldorgs = _userOrganizationUnitsRepository.GetAll().Where(ite => ite.UserId == input.User.Id).ToList(); var oldids = oldorgs.Select(ite => ite.OrganizationUnitId).ToList(); var addorg = orgids.Except(oldids).ToList(); var updateorg = orgids.Intersect(oldids).ToList(); var delorg = oldids.Except(orgids).ToList(); foreach (var x in addorg) { _userOrganizationUnitsRepository.Insert(new WorkFlowUserOrganizationUnits() { IsMain = mainorg == x, OrganizationUnitId = x, UserId = user.Id, }); } foreach (var x in updateorg) { var t = oldorgs.First(ite => ite.OrganizationUnitId == x); if (x == mainorg) { t.IsMain = true; } } foreach (var x in delorg) { var t = oldorgs.First(ite => ite.OrganizationUnitId == x); _userOrganizationUnitsRepository.Delete(ite => ite.Id == t.Id); } CurrentUnitOfWork.SaveChanges(); foreach (var item in input.PostIds) { var orgPostModel = await _organizationUnitPostsRepository.GetAsync(item); var org = _workflowOrganizationUnitsRepository.Get(orgPostModel.OrganizationUnitId); var tmp = new List <string>(); if (orgPostModel.Level == Level.分管领导) { var users = _userPostsRepository.GetAll().Where(ite => ite.OrgPostId == item).ToList(); var us = new List <User>(); foreach (var u in users) { var us1 = _userRepository.FirstOrDefault(u.UserId); if (us1 != null) { us.Add(us1); } } tmp = us.Select(ite => $"u_{ite.Id}").ToList(); org.ChargeLeader = string.Join(",", tmp); } if (orgPostModel.Level == Level.部门领导) { var users = _userPostsRepository.GetAll().Where(ite => ite.OrgPostId == item).ToList(); var us = new List <User>(); foreach (var u in users) { var us1 = _userRepository.FirstOrDefault(u.UserId); if (us1 != null) { us.Add(us1); } } tmp = us.Select(ite => $"u_{ite.Id}").ToList(); org.Leader = string.Join(",", tmp); } _workflowOrganizationUnitsRepository.Update(org); } //调整岗位后 更新角色 var newroles = _organizationUnitPostsRoleRepository.GetAll().Where(ite => input.PostIds.Contains(ite.OrgPostId)).Select(ite => ite.RoleName).Distinct().ToArray(); CheckUserRole(newroles.ToList()); await _userManager.SetRoles(user, newroles); //联系人关联系统 var exit_sys_realtion = _contractWithSystemRepository.GetAll().Where(r => r.UserId == user.Id); foreach (var item in exit_sys_realtion) { await _contractWithSystemRepository.DeleteAsync(item); } if (input.RealtionSystemIds != null) { foreach (var item in input.RealtionSystemIds) { var entity = new ContractWithSystem() { Id = Guid.NewGuid(), SystemId = item, UserId = user.Id }; await _contractWithSystemRepository.InsertAsync(entity); } } CurrentUnitOfWork.SaveChanges(); #region 更新im用户信息 try { var im_Service = AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IM_UserManager>(); if (!string.IsNullOrWhiteSpace(input.User.Password)) { im_Service.UpdateIMUserPassword(input.User.Id.ToString(), input.User.Password); } if (input.User.Name != oldName) { im_Service.UpdateIMUserNickname(input.User.Id.ToString(), input.User.Name); } } catch (Exception) { } #endregion }
public override async Task <UserDto> Create(CreateUserDto input) { CheckCreatePermission(); var user = ObjectMapper.Map <User>(input); user.TenantId = AbpSession.TenantId; user.Password = _passwordHasher.HashPassword(user, input.Password); user.IsEmailConfirmed = true; user.WorkNumber = user.WorkNumber.Trim(); //验证工号是否唯一 var has = _userRepository.GetAll().FirstOrDefault(ite => ite.WorkNumber == user.WorkNumber); if (has != null) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "工号重复,请换一个工号"); } CheckErrors(await _userManager.CreateAsync(user)); //改为由岗位继承角色 //if (input.RoleNames != null) //{ // CheckErrors(await _userManager.SetRoles(user, input.RoleNames)); //} if (input.OrganizationUnitId == 0) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "请至少指定一个部门。"); } if (input.OrgPostIds == null || input.OrgPostIds.Count == 0) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "请至少指定一个岗位。"); } //设置所在部门 await _abpOrganizationUnitsManager.AddToOrganizationUnitAsync(user.Id, input.OrganizationUnitId); //角色 var roles = new List <string>(); foreach (var item in input.OrgPostIds) { var orgPostModel = await _organizationUnitPostsRepository.GetAsync(item); var userPost = new UserPosts() { Id = Guid.NewGuid(), UserId = user.Id, PostId = orgPostModel.PostId, OrgPostId = orgPostModel.Id, OrgId = orgPostModel.OrganizationUnitId }; if (item == input.MainPostId) { userPost.IsMain = true;// 设置主岗位 } var rs = _organizationUnitPostsRoleRepository.GetAll().Where(ite => ite.OrgPostId == item).Select(ite => ite.RoleName).ToList(); foreach (var r in rs) { var existrole = await _roleManager.GetRoleByNameAsync(r); if (existrole != null) { roles.Add(r); } } await _userPostsRepository.InsertAsync(userPost); if (orgPostModel.Level == Level.分管领导) //如果是领导岗位 则更新部门领导 { var org = _workflowOrganizationUnitsRepository.Get(orgPostModel.OrganizationUnitId); var tmp = new List <string>(); var users = _userPostsRepository.GetAll().Where(ite => ite.OrgPostId == item).ToList(); var us = new List <User>(); foreach (var u in users) { var us1 = _userRepository.FirstOrDefault(u.UserId); if (us1 != null) { us.Add(us1); } } us.Add(user); tmp = us.Select(ite => $"u_{ite.Id}").ToList(); org.ChargeLeader = string.Join(",", tmp); } if (orgPostModel.Level == Level.部门领导)//如果是领导岗位 则更新部门领导 { var org = _workflowOrganizationUnitsRepository.Get(orgPostModel.OrganizationUnitId); var tmp = new List <string>(); var users = _userPostsRepository.GetAll().Where(ite => ite.OrgPostId == item).ToList(); var us = new List <User>(); foreach (var u in users) { var us1 = _userRepository.FirstOrDefault(u.UserId); if (us1 != null) { us.Add(us1); } } us.Add(user); tmp = us.Select(ite => $"u_{ite.Id}").ToList(); org.Leader = string.Join(",", tmp); } } if (roles == null) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "所选岗位角色为空,请先为岗位指定角色。"); } CheckUserRole(roles); CheckErrors(await _userManager.SetRoles(user, roles.ToArray())); foreach (var item in input.RelationSystemIds) { var r_s = new ContractWithSystem() { Id = Guid.NewGuid(), UserId = user.Id, SystemId = item }; await _contractWithSystemRepository.InsertAsync(r_s); } #region 创建IM账号 try { var im_Service = AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IM_UserManager>(); var exit_UserCount = _userRepository.GetAll().Count(); if (exit_UserCount == 0) { var firesOrg = _workflowOrganizationUnitsRepository.FirstOrDefault(r => !r.ParentId.HasValue); var companyName = "公司全体"; if (firesOrg != null) { companyName = firesOrg.DisplayName; } im_Service.CreateIMUsers(new List <CreateIMUserInput>() { new CreateIMUserInput() { nickname = input.Name, password = input.Password, username = user.Id.ToString() } }, true, companyName); } else { im_Service.CreateIMUsers(new List <CreateIMUserInput>() { new CreateIMUserInput() { nickname = input.Name, password = input.Password, username = user.Id.ToString() } }); } } catch (Exception ex) { //处理im报错 } #endregion CurrentUnitOfWork.SaveChanges(); return(MapToEntityDto(user)); }