Пример #1
0
        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();
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
        /// <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()
            });
        }
Пример #6
0
 public AbpBootstraper_Tester()
 {
     _bootstrapper = AbpBootstrapper.Create <MyTestModule>(LocalIocManager);
 }
Пример #7
0
        private static void Main(string[] args)
        {
            var bootstrapper = AbpBootstrapper.Create <AbpQuartzConsoleAppModule>();

            bootstrapper.Initialize();
        }
Пример #8
0
        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();
        }
Пример #9
0
        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"));
        }
Пример #10
0
        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();
                }
            }
        }
Пример #11
0
        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
        }
Пример #12
0
        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));
        }