예제 #1
0
        /// <summary>
        /// 导出应用的所有数据
        /// </summary>
        /// <param name="applicationId"></param>
        /// <returns></returns>
        public RightApplicationDataModel ExportApplicationData(string applicationId)
        {
            var appData = new RightApplicationDataModel();

            appData.Application = GetApplication(applicationId);
            if (appData.Application == null)
            {
                throw new InfoException("应用不存在");
            }
            appData.ObjectList = GetObjectList(applicationId);
            if (appData.ObjectList != null)
            {
                appData.OperationList = new List <RightObjectOperation>();
                foreach (var obj in appData.ObjectList)
                {
                    appData.OperationList.AddRange(GetObjectOperationList(obj.Id));
                }
            }
            appData.RoleList = GetRoleList(applicationId);
            if (appData.RoleList != null)
            {
                appData.RoleUserList = new List <RightRoleUser>();
                foreach (var role in appData.RoleList)
                {
                    appData.RoleUserList.AddRange(GetRoleUserList(role.Id));
                }
            }
            appData.RoleOperationList = db.Fetch <RightRoleOperation>(@"
                                        SELECT t1.Id,
											t1.RoleId,
											t1.OperationId
                                        FROM RM_T_RightRoleOperation t1
                                        JOIN RM_T_RightRole t2
                                            ON t2.Id = t1.RoleId
                                        JOIN RM_T_RightObjectOperation t3
                                            ON t3.Id = t1.OperationId
                                        JOIN RM_T_RightObject t4
                                            ON t4.Id = t3.ObjectId
                                            AND t4.ApplicationId = t2.ApplicationId
                                        WHERE t2.ApplicationId = @0", applicationId);

            return(appData);
        }
예제 #2
0
        /// <summary>
        /// 导入应用数据
        /// </summary>
        public void ImportApplicationData(KeyValuePair <string, string> user, RightApplicationDataModel appData)
        {
            db.BeginTransaction();
            try
            {
                if (db.Exists <RightApplication>("ApplicationId = @0 OR ApplicationName = @1", appData.Application.ApplicationId, appData.Application.ApplicationName))
                {
                    throw new InfoException("应用已存在");
                }
                appData.Application.Id = 0;
                db.Insert(appData.Application);
                logService.WriteInsertOperateLog(user, appData.Application.ApplicationId, appData.Application.Id, appData.Application);

                // 新增对象和对象操作
                if (appData.ObjectList != null)
                {
                    foreach (var obj in appData.ObjectList)
                    {
                        var oldObjId = obj.Id;
                        obj.Id = 0;
                        db.Insert(obj);
                        logService.WriteInsertOperateLog(user, appData.Application.ApplicationId, obj.Id, obj);
                        if (appData.OperationList != null)
                        {
                            var operationList = appData.OperationList.FindAll(a => a.ObjectId == oldObjId);
                            foreach (var operation in operationList)
                            {
                                var oldOperationId = operation.Id;
                                operation.Id       = 0;
                                operation.ObjectId = obj.Id;
                                db.Insert(operation);
                                logService.WriteInsertOperateLog(user, appData.Application.ApplicationId, operation.Id, operation);
                                if (appData.RoleOperationList != null)
                                {
                                    var roleOperationList = appData.RoleOperationList.FindAll(a => a.OperationId == oldOperationId);
                                    foreach (var roleOperation in roleOperationList)
                                    {
                                        roleOperation.OperationId = operation.Id;
                                    }
                                }
                            }
                        }
                    }
                }

                // 新增角色和角色用户
                if (appData.RoleList != null)
                {
                    foreach (var role in appData.RoleList)
                    {
                        var oldRoleId = role.Id;
                        role.Id = 0;
                        db.Insert(role);
                        logService.WriteInsertOperateLog(user, appData.Application.ApplicationId, role.Id, role);
                        if (appData.RoleUserList != null)
                        {
                            var userList = appData.RoleUserList.FindAll(a => a.RoleId == oldRoleId);
                            foreach (var rolUser in userList)
                            {
                                rolUser.Id     = 0;
                                rolUser.RoleId = role.Id;
                                db.Insert(rolUser);
                                logService.WriteInsertOperateLog(user, appData.Application.ApplicationId, rolUser.Id, rolUser);
                            }
                        }
                        if (appData.RoleOperationList != null)
                        {
                            var roleOperationList = appData.RoleOperationList.FindAll(a => a.RoleId == oldRoleId);
                            foreach (var roleOperation in roleOperationList)
                            {
                                roleOperation.Id     = 0;
                                roleOperation.RoleId = role.Id;
                                db.Insert(roleOperation);
                                logService.WriteInsertOperateLog(user, appData.Application.ApplicationId, roleOperation.Id, roleOperation);
                            }
                        }
                    }
                }

                db.CompleteTransaction();
            }
            catch (Exception e)
            {
                db.AbortTransaction();
                throw e;
            }
        }