/// <summary>
        /// 从证件单元集合里获取用户数据
        /// </summary>
        /// <typeparam name="IdT">ID类型</typeparam>
        /// <typeparam name="UserT">用户类型</typeparam>
        /// <param name="claims">证件单元集合</param>
        /// <param name="authUserData">身份授权用户数据</param>
        /// <returns>用户</returns>
        public static UserT GetUserDataFromClaims <IdT, UserT>(IEnumerable <Claim> claims, IAuthUserData <IdT, UserT> authUserData)
            where UserT : BasicUserInfo <IdT>
        {
            if (authUserData == null)
            {
                throw new NullReferenceException("身份用户数据(authUserData)不能为null");
            }

            var user     = authUserData.CreateUser();
            var identity = AutofacTool.Resolve <IIdentity <IdT> >();

            user.Id       = identity.ConvertTo(claims.Get(ClaimTypes.NameIdentifier));
            user.Name     = claims.Get(ClaimTypes.Name);
            user.Code     = claims.Get("code");
            user.LoginId  = claims.Get("loginId");
            user.TenantId = identity.ConvertTo(claims.Get("tenantId"));

            var loginTimeStr = claims.Get("loginTime");

            if (!string.IsNullOrWhiteSpace(loginTimeStr))
            {
                DateTime loginTime;
                if (DateTime.TryParse(loginTimeStr, out loginTime))
                {
                    user.LoginTime = loginTime;
                }
            }

            authUserData.SetExtraToUserData(user, claims);

            return(user);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 注册组件
        /// </summary>
        public static void RegisterComponents()
        {
            AssemblyConfigLocalMember assemblyConfigLocalMember = new AssemblyConfigLocalMember();

            assemblyConfigLocalMember.ProtoAssemblyConfigReader = new AssemblyConfigXml();
            AssemblyConfigInfo assemblyConfig = assemblyConfigLocalMember.Reader();

            //实例化一个autofac的创建容器
            var        builder   = new ContainerBuilder();
            IContainer container = builder.UnifiedRegisterAssemblysForWebApi2(GlobalConfiguration.Configuration, new WebBuilderParam()
            {
                AssemblyControllers      = assemblyConfig.Entrances,
                AssemblyServices         = assemblyConfig.Services,
                RegisteringServiceAction = () =>
                {
                    builder.RegisterType <IdentityHttpFormAuth>().As <IIdentityAuthVali>().AsSelf().PropertiesAutowired();
                    builder.RegisterType <IdentityHttpFormAuth>().As <IIdentityExit>().AsSelf().PropertiesAutowired();
                    builder.RegisterType <IdentityHttpFormAuth>().AsSelf().PropertiesAutowired();
                }
            });

            AttachmentService          attachmentService          = AutofacTool.Resolve <AttachmentService>();
            AttachmentOwnerLocalMember attachmentOwnerLocalMember = AutofacTool.Resolve <AttachmentOwnerLocalMember>();

            attachmentOwnerLocalMember.ProtoAttachmentOwnerReader = AutofacTool.Resolve <AttachmentOwnerXml>();

            attachmentService.AttachmentOwnerReader = attachmentOwnerLocalMember;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 点击测试连接
        /// </summary>
        /// <param name="sender">引发对象</param>
        /// <param name="e">事件参数</param>
        private void btnTestConn_Click(object sender, EventArgs e)
        {
            try
            {
                var connStr = GetDbConnectionString();
                if (string.IsNullOrWhiteSpace(connStr))
                {
                    return;
                }
                var factory      = AutofacTool.Resolve <ISimpleFactory <string, IDbConnection> >();
                var dbConnection = factory.Create(cbxDataSourceType.SelectedItem.ToString());

                dbConnection.ConnectionString = connStr;
                dbConnection.Open();
                if (dbConnection.State == ConnectionState.Open)
                {
                    dbConnection.Close();
                    dbConnection.Dispose();

                    MessageBox.Show("连接成功");
                }
                else
                {
                    MessageBox.Show("连接失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// 点击加载
 /// </summary>
 /// <param name="sender">引发对象</param>
 /// <param name="e">事件参数</param>
 private void btnLoad_Click(object sender, EventArgs e)
 {
     try
     {
         var connStr = GetDbConnectionString();
         if (string.IsNullOrWhiteSpace(connStr))
         {
             return;
         }
         var dbInfoService = AutofacTool.Resolve <IDbInfoService>();
         var returnInfo    = dbInfoService.Query(txtDb.Text, connStr, cbxDataSourceType.SelectedItem.ToString());
         if (returnInfo.Success())
         {
             dgvTable.Tag        = cbxDataSourceType.SelectedItem.ToString();
             dgvTable.DataSource = returnInfo.Data;
         }
         else
         {
             MessageBox.Show(returnInfo.Msg);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// 点击测试连接
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTestConn_Click(object sender, EventArgs e)
        {
            ISimpleFactory <string, IDbConnection> factory = AutofacTool.Resolve <ISimpleFactory <string, IDbConnection> >();
            IDbConnection dbConnection = factory.Create(cbxDataSourceType.SelectedItem.ToString());

            try
            {
                dbConnection.ConnectionString = GetDbConnectionString();
                dbConnection.Open();
                if (dbConnection.State == ConnectionState.Open)
                {
                    dbConnection.Close();
                    dbConnection.Dispose();

                    MessageBox.Show("连接成功");
                }
                else
                {
                    MessageBox.Show("连接失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        /// <summary>
        /// 初始化
        /// </summary>
        public static void Init()
        {
            if (PlatformCodeTool.Config["Page:MaxPageSize"] != null)
            {
                UtilTool.MaxPageSize = Convert.ToInt32(PlatformCodeTool.Config["Page:MaxPageSize"]);
            }

            IHttpContextAccessor httpContext = AutofacTool.Resolve <IHttpContextAccessor>();

            LanguageUtil.GetCurrentCultureName = () =>
            {
                return(httpContext != null?httpContext.HttpContext.Session.GetString("cultureName") : null);
            };

            UtilTool.GetCurrEnvironmentTypeFunc = () =>
            {
                if (httpContext != null)
                {
                    int?type = httpContext.HttpContext.Session.GetInt32("CurrEnvironmentType");
                    if (type == null)
                    {
                        return(EnvironmentType.PRODUCTION);
                    }

                    return((EnvironmentType)type);
                }

                return(EnvironmentType.TEST);
            };
        }
Exemplo n.º 7
0
        /// <summary>
        /// 根据用户ID移除前事件
        /// </summary>
        /// <param name="arg1">返回信息</param>
        /// <param name="arg2">用户ID</param>
        /// <param name="arg3">连接ID</param>
        /// <param name="arg4">当前用户</param>
        private static void UserService_RemoveByIdsing(ReturnInfo <bool> arg1, int[] arg2, string arg3, BasicUserInfo <int> arg4)
        {
            IWorkflowHandleService workflowHandleService = AutofacTool.Resolve <IWorkflowHandleService>();
            ReturnInfo <bool[]>    handleReturnInfo      = workflowHandleService.ExistsAuditAndUnhandleByHandleIds(arg2, arg3, arg4);

            if (handleReturnInfo.Failure())
            {
                arg1.FromBasic(handleReturnInfo);
                return;
            }

            if (handleReturnInfo.Data.IsNullOrLength0())
            {
                return;
            }

            for (var i = 0; i < handleReturnInfo.Data.Length; i++)
            {
                if (handleReturnInfo.Data[i])
                {
                    arg1.SetFailureMsg($"第{i + 1}行:用户尚有未处理的审核流程,故不能移除");
                    return;
                }
            }
        }
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.json");

            PlatformCodeTool.Config = builder.Build();

            DependencyInjection.RegisterComponents();

            //var server = SingleConnectionTool.Connection.CreateRpcServer("RpcServiceQueue");

            //server.Receive(inData =>
            //{
            //    var msg = Encoding.UTF8.GetString(inData);

            //    var re = Encoding.UTF8.GetBytes("这是一个回复");

            //    return re;
            //});

            IRpcServerListen listen = AutofacTool.Resolve <IRpcServerListen>();

            listen.ListenAsync();

            System.Console.WriteLine("start MessageQueue RPC Server Service...");
            System.Console.ReadLine();
        }
Exemplo n.º 9
0
        /// <summary>
        /// 初始化用户处理验证
        /// 注册用户删除前判断是否有处理的事件
        /// </summary>
        public static void InitValiUserHandleVali()
        {
            IUserService userService = AutofacTool.Resolve <IUserService>();

            userService.RemoveByIding  += UserService_RemoveByIding;
            userService.RemoveByIdsing += UserService_RemoveByIdsing;
        }
Exemplo n.º 10
0
        /// <summary>
        /// 注册组件
        /// </summary>
        public static void RegisterComponents()
        {
            AssemblyConfigLocalMember assemblyConfigLocalMember = new AssemblyConfigLocalMember();

            assemblyConfigLocalMember.ProtoAssemblyConfigReader = new AssemblyConfigJson();
            AssemblyConfigInfo assemblyConfig = assemblyConfigLocalMember.Reader();

            var builder = new ContainerBuilder();

            builder.UnifiedRegisterAssemblys(new BuilderParam()
            {
                AssemblyServices         = assemblyConfig.Services,
                RegisteringServiceAction = () =>
                {
                    builder.RegisterType <AutofacInstance>().As <IInstance>().AsSelf().PropertiesAutowired().SingleInstance();
                    builder.RegisterType <MessagePackBytesSerialization>().As <IBytesSerialization>().AsSelf().PropertiesAutowired().SingleInstance();
                    builder.RegisterType <MessagePackConvertTypeValue>().As <IConvertTypeValue>().AsSelf().PropertiesAutowired().SingleInstance();
                }
            });
            PlatformTool.AppConfig = AutofacTool.Resolve <IAppConfiguration>();

            var implCache = AutofacTool.Resolve <InterfaceMapImplCache>();

            implCache.Set(new DictionaryJson($"{AppContext.BaseDirectory}/Config/interfaceAssemblyMapImplAssemblyConfig.json"));
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.json");

            PlatformCodeTool.Config = builder.Build();

            DependencyInjection.RegisterComponents();

            var proxy        = AutofacTool.Resolve <IBusinessDispatchProxy>();
            var conTypeValue = AutofacTool.Resolve <IConvertTypeValue>();
            var stuService   = proxy.Create <IStudentService>();

            var a0 = stuService.TestTask5Async();

            a0.Wait();
            var data = conTypeValue.To(a0.Result, typeof(IList <StudentInfo>)) as IList <StudentInfo>;


            var a1 = stuService.TestTask1Async();

            a1.Wait();
            //var a3 = stuService.TestTask3Async();
            //a3.Wait();
            //var a2 = stuService.TestTask2Async();
            //var a4 = stuService.TestTask4Async();

            //Task.WhenAll(a1, a2, a3, a4);


            var r1 = stuService.Get(10);
            var r2 = stuService.Query();

            var r3 = stuService.Get2(11);
            var r4 = stuService.Query2();

            var reInfo = stuService.Add(new StudentInfo()
            {
                Id   = 1,
                Name = "黄振东"
            });
            var reInfo2 = stuService.Adds(new List <StudentInfo>()
            {
                new StudentInfo()
                {
                    Id   = 1,
                    Name = "黄振东"
                },
                new StudentInfo()
                {
                    Id   = 2,
                    Name = "黄振东2"
                }
            });

            System.Console.WriteLine("start MessageQueue RPC Client...");
            System.Console.ReadLine();
        }
Exemplo n.º 12
0
        /// <summary>
        /// 拦截
        /// </summary>
        /// <param name="basicReturn">基本返回</param>
        /// <param name="invocation">拦截参数</param>
        /// <param name="attr">特性</param>
        /// <param name="isExecProceeded">是否已执行</param>
        protected override void Intercept(BasicReturnInfo basicReturn, IInvocation invocation, FunctionAttribute attr, out bool isExecProceeded)
        {
            isExecProceeded = false;
            var ignorePerAttr = invocation.Method.GetAttribute <IgnorePermissionAttribute>();

            if (ignorePerAttr != null)
            {
                return;
            }
            if (attr.Codes.IsNullOrCount0())
            {
                basicReturn.SetFailureMsg("功能编码不能为空");
                return;
            }
            MenuAttribute menuAttr = invocation.TargetType.GetAttribute <MenuAttribute>();

            if (menuAttr == null)
            {
                return;
            }
            if (string.IsNullOrWhiteSpace(menuAttr.Code))
            {
                basicReturn.SetFailureMsg("菜单编码不能为空");
                return;
            }

            // 这里执行权限验证
            IUserService userService = AutofacTool.Resolve <IUserService>();

            if (userService == null)
            {
                basicReturn.SetFailureMsg("找不到用户服务");
                return;
            }
            ReturnInfo <bool> perReInfo = userService.IsCurrUserPermission(menuAttr.Code, attr.Codes);

            if (perReInfo.Failure())
            {
                basicReturn.FromBasic(perReInfo);
                return;
            }
            if (perReInfo.Data)
            {
                return;
            }
            else
            {
                basicReturn.SetCodeMsg(ErrCodeDefine.NOT_PERMISSION, "Sorry,您没有访问此功能权限");
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// 点击加载按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLoad_Click(object sender, EventArgs e)
        {
            IDbInfoService dbInfoService = AutofacTool.Resolve <IDbInfoService>();
            ReturnInfo <IList <TableInfo> > returnInfo = dbInfoService.Query(txtDataBase.Text, GetDbConnectionString(), cbxDataSourceType.SelectedItem.ToString());

            if (returnInfo.Success())
            {
                dgvTable.Tag        = cbxDataSourceType.SelectedItem.ToString();
                dgvTable.DataSource = returnInfo.Data;
            }
            else
            {
                MessageBox.Show(returnInfo.Msg);
            }
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.json");

            PlatformCodeTool.Config = builder.Build();

            DependencyInjection.RegisterComponents();

            IRpcServerListen listen = AutofacTool.Resolve <IRpcServerListen>();

            listen.ListenAsync();

            System.Console.WriteLine("start MessageQueue RPC Server Service...");
            System.Console.ReadLine();
        }
Exemplo n.º 15
0
        /// <summary>
        /// 根据用户ID移除前事件
        /// </summary>
        /// <param name="arg1">返回信息</param>
        /// <param name="arg2">用户ID</param>
        /// <param name="arg3">连接ID</param>
        /// <param name="arg4">当前用户</param>
        private static void UserService_RemoveByIding(ReturnInfo <bool> arg1, int arg2, string arg3, BasicUserInfo <int> arg4)
        {
            IWorkflowHandleService workflowHandleService = AutofacTool.Resolve <IWorkflowHandleService>();
            ReturnInfo <bool>      handleReturnInfo      = workflowHandleService.ExistsAuditAndUnhandleByHandleId(arg2, arg3, arg4);

            if (handleReturnInfo.Failure())
            {
                arg1.FromBasic(handleReturnInfo);
                return;
            }

            if (handleReturnInfo.Data)
            {
                arg1.SetFailureMsg("用户尚有未处理的审核流程,故不能移除");
            }
        }
        /// <summary>
        /// 注册组件
        /// </summary>
        /// <param name="services">服务</param>
        /// <returns>服务提供者</returns>
        public static IServiceProvider RegisterComponents(IServiceCollection services)
        {
            AssemblyConfigLocalMember assemblyConfigLocalMember = new AssemblyConfigLocalMember();

            assemblyConfigLocalMember.ProtoAssemblyConfigReader = new AssemblyConfigJson();
            AssemblyConfigInfo assemblyConfig = assemblyConfigLocalMember.Reader();

            //实例化一个autofac的创建容器
            var builder = new ContainerBuilder();

            IServiceProvider serviceProvider;

            builder.UnifiedRegisterAssemblys(services, new BuilderParam()
            {
                AssemblyServices         = assemblyConfig.Services,
                RegisteringServiceAction = () =>
                {
                    builder.RegisterType <HttpContextAccessor>().As <IHttpContextAccessor>().AsSelf().PropertiesAutowired();

                    builder.RegisterType <IdentityCookieAuth>().As <IIdentityAuthVali>().AsSelf().PropertiesAutowired();
                    builder.RegisterType <IdentityCookieAuth>().As <IIdentityExit>().AsSelf().PropertiesAutowired();

                    builder.RegisterType <WorkflowConfigCache>().As <IWorkflowConfigReader>().AsSelf().PropertiesAutowired();
                    builder.RegisterType <WorkflowInitSequenceService>().As <IWorkflowFormService>().AsSelf().PropertiesAutowired();

                    //builder.RegisterInstance()
                    builder.RegisterType <LanguageLibraryCache>().As <ILanguageLibrary>().AsSelf().PropertiesAutowired();
                    builder.RegisterType <LanguageLibraryConfigJson>().As <IReaderAll <LanguageInfo> >().AsSelf().PropertiesAutowired();
                }
            }, out serviceProvider);

            AttachmentService          attachmentService          = AutofacTool.Resolve <AttachmentService>();
            AttachmentOwnerLocalMember attachmentOwnerLocalMember = AutofacTool.Resolve <AttachmentOwnerLocalMember>();

            attachmentOwnerLocalMember.ProtoAttachmentOwnerReader = AutofacTool.Resolve <AttachmentOwnerJson>();

            attachmentService.AttachmentOwnerReader = attachmentOwnerLocalMember;

            var languageCache = AutofacTool.Resolve <LanguageLibraryCache>();

            // var languageJson = AutofacTool.Resolve<LanguageLibraryJson>();
            //languageJson.JsonFile = @"F:\MyWorks\net\Hzdtf.FoundationFramework\WebDemoCore\Hzdtf.WebDemo.Core\Config\LanguageLibrary\test.min.json";
            /// languageCache.ProtoLanguageLibraryReader = languageJson;
            LanguageUtil.LanguageLibrary = languageCache;

            return(serviceProvider);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 绑定数据源类型
        /// </summary>
        private void BindDataSourceType()
        {
            IReader <IDictionary <string, string> > reader = AutofacTool.Resolve <IReader <IDictionary <string, string> > >();

            dataSourceTypes = reader.Reader();
            if (dataSourceTypes.IsNullOrCount0())
            {
                return;
            }

            foreach (KeyValuePair <string, string> item in dataSourceTypes)
            {
                cbxDataSourceType.Items.Add(item.Key);
            }

            cbxDataSourceType.SelectedIndex = 0;
        }
Exemplo n.º 18
0
        /// <summary>
        /// 点击生成按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGenerator_Click(object sender, EventArgs e)
        {
            IList <TableInfo> tables = new List <TableInfo>();

            foreach (DataGridViewRow row in dgvTable.Rows)
            {
                DataGridViewCheckBoxCell checkCell = row.Cells[2] as DataGridViewCheckBoxCell;
                if (checkCell.Value != null && Convert.ToBoolean(checkCell.Value))
                {
                    tables.Add(row.DataBoundItem as TableInfo);
                }
            }

            if (tables.Count == 0)
            {
                MessageBox.Show("请勾选要生成的表");
                return;
            }

            FunctionType[] functionTypes = GetFunctionTypes();
            if (functionTypes.Length == 0)
            {
                MessageBox.Show("请勾选要生成的功能项");
                return;
            }

            if (string.IsNullOrWhiteSpace(txtNamespacePfx.Text))
            {
                MessageBox.Show("命名空间前辍不能为空");
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            ICodeGeneratorService generatorService = AutofacTool.Resolve <ICodeGeneratorService>();
            ReturnInfo <bool>     returnInfo       = generatorService.Generator(tables, functionTypes, txtNamespacePfx.Text, dgvTable.Tag.ToString());

            Cursor.Current = Cursors.Default;
            if (returnInfo.Success())
            {
                MessageBox.Show("生成成功");
            }
            else
            {
                MessageBox.Show(returnInfo.Msg);
            }
        }
        /// <summary>
        /// 初始化
        /// </summary>
        public static void Init()
        {
            UserTool.GetCurrUserFunc = () =>
            {
                ReturnInfo <BasicUserInfo> returnInfo = AutofacTool.Resolve <IdentityHttpFormAuth>().Reader();
                if (returnInfo.Success() && returnInfo.Data != null)
                {
                    return(returnInfo.Data);
                }

                if (ConfigurationManager.AppSettings["User:AllowTest"] != null && Convert.ToBoolean(ConfigurationManager.AppSettings["User:AllowTest"]))
                {
                    return(UserTool.TestUser);
                }

                return(null);
            };
        }
        /// <summary>
        /// 初始化
        /// </summary>
        public static void Init()
        {
            UserTool.GetCurrUserFunc = () =>
            {
                ReturnInfo <BasicUserInfo> returnInfo = AutofacTool.Resolve <IdentityCookieAuth>().Reader();
                if (returnInfo.Success() && returnInfo.Data != null)
                {
                    return(returnInfo.Data);
                }

                if (PlatformCodeTool.Config["User:AllowTest"] != null && Convert.ToBoolean(PlatformCodeTool.Config["User:AllowTest"]))
                {
                    return(UserTool.TestUser);
                }

                return(null);
            };

            UserWorkflowUtil.InitValiUserHandleVali();
        }
Exemplo n.º 21
0
        /// <summary>
        /// 注册组件
        /// </summary>
        public static void RegisterComponents()
        {
            AssemblyConfigLocalMember assemblyConfigLocalMember = new AssemblyConfigLocalMember();

            assemblyConfigLocalMember.ProtoAssemblyConfigReader = new AssemblyConfigJson();
            AssemblyConfigInfo assemblyConfig = assemblyConfigLocalMember.Reader();

            var builder = new ContainerBuilder();

            builder.UnifiedRegisterAssemblys(new BuilderParam()
            {
                AssemblyServices         = assemblyConfig.Services,
                RegisteringServiceAction = () =>
                {
                    builder.RegisterType <MessagePackBytesSerialization>().As <IBytesSerialization>().AsSelf().PropertiesAutowired().SingleInstance();
                    builder.RegisterType <MessagePackConvertTypeValue>().As <IConvertTypeValue>().AsSelf().PropertiesAutowired().SingleInstance();
                }
            });
            PlatformTool.AppConfig = AutofacTool.Resolve <IAppConfiguration>();
        }
Exemplo n.º 22
0
        /// <summary>
        /// 点击生成按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGenerator_Click(object sender, EventArgs e)
        {
            var param = new CodeGeneratorParamInfo();

            try
            {
                param.Tables = new List <TableInfo>();
                foreach (DataGridViewRow row in dgvTable.Rows)
                {
                    DataGridViewCheckBoxCell checkCell = row.Cells[2] as DataGridViewCheckBoxCell;
                    if (checkCell.Value != null && Convert.ToBoolean(checkCell.Value))
                    {
                        param.Tables.Add(row.DataBoundItem as TableInfo);
                    }
                }

                if (param.Tables.Count == 0)
                {
                    MessageBox.Show("请勾选要生成的表");
                    return;
                }

                param.FunctionTypes = GetFunctionTypes();
                if (param.FunctionTypes.Length == 0)
                {
                    MessageBox.Show("请勾选要生成的功能项");
                    return;
                }

                if (string.IsNullOrWhiteSpace(txtNamespacePfx.Text))
                {
                    MessageBox.Show("命名空间前辍不能为空");
                    return;
                }
                param.NamespacePfx = txtNamespacePfx.Text;

                switch (cbxPKType.SelectedItem.ToString())
                {
                case "字符串":
                    param.PkType = PrimaryKeyType.STRING;

                    break;

                case "Guid":
                    param.PkType = PrimaryKeyType.GUID;

                    break;

                case "雪花算法":
                    param.PkType = PrimaryKeyType.SNOWFLAKE;

                    break;
                }
                param.Type     = dgvTable.Tag.ToString();
                param.IsTenant = cbxIsTenant.Checked;

                Cursor.Current = Cursors.WaitCursor;
                ICodeGeneratorService generatorService = AutofacTool.Resolve <ICodeGeneratorService>();
                ReturnInfo <bool>     returnInfo       = generatorService.Generator(param);
                Cursor.Current = Cursors.Default;
                if (returnInfo.Success())
                {
                    MessageBox.Show("生成成功");
                }
                else
                {
                    MessageBox.Show(returnInfo.Msg);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 23
0
        /// <summary>
        /// 拦截
        /// </summary>
        /// <param name="basicReturn">基本返回</param>
        /// <param name="invocation">拦截参数</param>
        /// <param name="attr">特性</param>
        /// <param name="isExecProceeded">是否已执行</param>
        protected override void Intercept(BasicReturnInfo basicReturn, IInvocation invocation, TransactionAttribute attr, out bool isExecProceeded)
        {
            isExecProceeded = true;
            BasicReturnInfo returnInfo = new BasicReturnInfo();
            object          connId     = null;

            if (attr.ConnectionIdIndex == -1)
            {
                connId = invocation.GetArgumentValue(attr.ConnectionIdIndex);
            }
            IGetObject <IPersistenceConnection> getPerConn = AutofacTool.Resolve(invocation.TargetType) as IGetObject <IPersistenceConnection>;

            if (getPerConn == null)
            {
                basicReturn.SetFailureMsg("未实现IGetObject<IPersistenceConnection>接口");
                return;
            }

            IPersistenceConnection perConn = getPerConn.Get();
            string connectionId            = null;

            // 当有连接ID传过来,判断是否存在该连接事务,存在则不开启新事务
            if (connId != null)
            {
                string connIdStr = connId.ToString();
                if (perConn.GetDbTransaction(connIdStr) != null)
                {
                    invocation.Proceed();
                    return;
                }

                connectionId = connIdStr;
            }
            else
            {
                connectionId = perConn.NewConnectionId();
            }
            IDbTransaction dbTransaction = null;

            try
            {
                dbTransaction = perConn.BeginTransaction(connectionId, attr);

                invocation.SetArgumentValue(attr.ConnectionIdIndex, connectionId);

                invocation.Proceed();

                // 如果返回值为失败标识,也回滚
                Type returnType = invocation.Method.ReturnType;
                if (invocation.Method.ReturnType.IsReturnType())
                {
                    BasicReturnInfo basicReturnInfo = invocation.ReturnValue as BasicReturnInfo;
                    if (basicReturnInfo.Failure())
                    {
                        dbTransaction.Rollback();

                        return;
                    }
                }

                dbTransaction.Commit();
            }
            catch (Exception ex)
            {
                if (dbTransaction != null)
                {
                    dbTransaction.Rollback();
                }
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                perConn.Release(connectionId);
            }
        }