Пример #1
0
    public void AddExp(int exp)
    {
        if (exp <= 0)
        {
            return;
        }
        XRole role     = DataManager.Instance.GetCurRole();
        int   maxLevel = ZTConfig.Instance.DictHeroLevel.Count;

        if (role.Level >= maxLevel)
        {
            return;
        }
        role.CurExp += exp;
        DBHeroLevel levelDB = ZTConfig.Instance.GetDBHeroLevel(role.Level);

        while (role.CurExp >= levelDB.RequireExp)
        {
            role.CurExp -= levelDB.RequireExp;
            role.Level++;
            if (role.Level >= maxLevel)
            {
                role.CurExp = 0;
                break;
            }
            levelDB = ZTConfig.Instance.GetDBHeroLevel(role.Level);
        }
        DataManager.Instance.DataRole.Update(role.Id, role);
    }
Пример #2
0
    private void TestAvatar()
    {
        role = XEntityMgr.singleton.CreateTestRole();
        role.EntityObject.AddComponent <XRotation>();

        //时装
        TempEquipSuit fashions = new TempEquipSuit();

        m_FashionList = new List <EquipPart>();
        var fashionsuit = XTableMgr.GetTable <FashionSuit>();

        for (int i = 0, max = fashionsuit.length; i < max; ++i)
        {
            FashionSuit.RowData row = fashionsuit[i];
            if (row.FashionID != null)
            {
                XEquipUtil.MakeEquip(row.SuitName, row.FashionID, m_FashionList, fashions, (int)row.SuitID);
            }
        }

        //装备
        m_EquipList = new List <EquipPart>();
        var equipsuit = XTableMgr.GetTable <EquipSuit>();

        for (int i = 0, max = equipsuit.length; i < max; ++i)
        {
            EquipSuit.RowData row = equipsuit[i];
            if (row.EquipID != null)
            {
                XEquipUtil.MakeEquip(row.SuitName, row.EquipID, m_EquipList, fashions, -1);
            }
        }
    }
Пример #3
0
    public XRole GetCurRole()
    {
        XRole role = null;

        Roles.TryGetValue(mCurRoleID, out role);
        return(role);
    }
Пример #4
0
    public bool SetMount(int mountID)
    {
        XRole role = DataManager.Instance.GetCurRole();

        if (role == null)
        {
            return(false);
        }
        role.MountID = mountID;
        DataRole.Update(role.Id, role);
        return(true);
    }
Пример #5
0
    public bool AddRole(int roleId, string name)
    {
        if (Roles.ContainsKey(roleId))
        {
            return(false);
        }
        XRole role = new XRole();

        role.Id       = roleId;
        role.Level    = 1;
        role.Name     = name;
        role.VipLevel = 0;
        role.CurExp   = 0;
        role.Position = Vector3.zero;
        role.Rotation = Vector3.zero;
        DataRole.Insert(roleId, role);
        return(true);
    }
Пример #6
0
        //[Rework(Complete = false, Tested = false, Coverage = "0")]
        //internal bool Kill(Guid id)
        //{
        //    return base.ExecuteSql(StoredProcs.Role_Kill, new List<SqlParameter>() { new SqlParameter("@RoleId", id) });
        //}

        public bool Save(XRole role, Guid userId)
        {
            List <SqlParameter> paramList = new List <SqlParameter>();

            paramList.Add(new SqlParameter("@Id", role.Id));
            paramList.Add(new SqlParameter("@Name", role.Name));
            paramList.Add(new SqlParameter("@Description", role.Description));
            paramList.Add(new SqlParameter("@IsSystem", role.IsSystem));
            paramList.Add(new SqlParameter("@IsActive", role.IsActive));
            paramList.Add(new SqlParameter("@Created", role.Created));
            paramList.Add(new SqlParameter("@CreatedBy", role.CreatedBy));
            paramList.Add(new SqlParameter("@LastModified", role.LastModified));
            paramList.Add(new SqlParameter("@LastModifiedBy", role.LastModifiedBy));
            paramList.Add(new SqlParameter("@Deleted", role.Deleted));
            paramList.Add(new SqlParameter("@DeletedBy", role.DeletedBy));
            paramList.Add(new SqlParameter()
            {
                ParameterName = "@RoleLead", Value = role.RoleLead.HasValue ? role.RoleLead : null
            });

            if (base.ExecuteSql(StoredProcs.Role_Save, paramList))
            {
                //StringBuilder sql = new StringBuilder();

                // save the role members
                //foreach (RoleMember member in role.Members) { this.RoleMember_Save(member, role.Id); }

                // save the reports for this role
                //foreach (RoleReport rp in role.Reports) { this.RoleReport_Save(rp, role.Id); }

                // save the assetTypes
                //foreach (RoleAssetType rat in role.AssetTypes) { this.RoleAssetType_Save(rat, role.Id); }
            }

            return(true);
        }
Пример #7
0
        /// <summary>
        /// Конструирует описание пользователя по наименованию.
        /// Если пользователя с таким наименованием не найдено, то возвращает null
        /// </summary>
        /// <param name="sUserName">Наименование пользователя</param>
        /// <returns></returns>
        public XUser CreateUser(string sUserName)
        {
            ITUser user;

            using (XStorageConnection con = getConnection())
            {
                con.Open();
                XDbCommand cmd = con.CreateCommand();
                cmd.CommandText =

                    /* Получим описание пользователя (который может быть сотрудником),
                     * системные привилегии (как выданные явно, так и полученные через роли).
                     * Примечания:	- пользователь приложения может не быть сотрудником.
                     *				- для пользователя приложения могут быть не заданы роли
                     *				- GetWorkdayDuration возвращает количество минут
                     *  */
                    @"SELECT su.ObjectID AS SysUserID, su.IsAdmin, su.IsServiceAccount,
	emp.ObjectID AS EmpID, emp.LastName, emp.FirstName, emp.EMail, 
	su.SystemPrivileges, 
	sr.Name as RoleName, 
	sr.Description as RoleDescription, 
	sr.Priviliges as RolePrivileges,
	dbo.GetWorkdayGlobalDuration() as WorkingMinutesInDay,
	CASE WHEN emp.WorkEndDate < getDate() THEN 0 ELSE 1 END as AccessPermitted
FROM SystemUser su WITH (nolock)
	LEFT JOIN Employee emp WITH (nolock) ON emp.SystemUser = su.ObjectID
	LEFT JOIN (SystemUser_SystemRoles su_sr WITH (nolock)
		JOIN SystemRole sr WITH (nolock) ON su_sr.Value = sr.ObjectID
	) ON su.ObjectID = su_sr.ObjectID
WHERE su.Login = @UserLogin";
                cmd.Parameters.Add("UserLogin", DbType.String, ParameterDirection.Input, false, sUserName);
                using (IDataReader reader = cmd.ExecuteReader())
                {
                    XRole[] roles;                                      // массив системных ролей
                    Guid    SystemUserID;                               // идентификатор пользователя
                    Guid    EmployeeID = Guid.Empty;                    // идентификатор сотрудника
                    string  sLastName  = null;                          // фамилия сотрудника
                    string  sFirstName = null;                          // имя сотрудника
                    string  sEMail     = null;                          // email сотрудника
                    bool    bIsAdmin;                                   // признак админа (необграниченного пользователя)
                    bool    bIsServiceAccount;                          // признак сервисного аккаунта
                    int     nIndex;                                     // временная - индекс колонки
                    int     nPrivileges;                                // числовая маска привилегий (в БД привилегии лежат как флаги)
                    int     nWorkingMinutesInDay;                       // количество рабочих часов в сутках
                    bool    bAccesssPermitted = true;

                    if (reader.Read())
                    {
                        // получим маску привилегий, выданных пользователю явно
                        nPrivileges          = reader.GetInt32(reader.GetOrdinal("SystemPrivileges"));                          // поле SystemPrivileges - not null
                        SystemUserID         = reader.GetGuid(reader.GetOrdinal("SysUserID"));
                        bIsAdmin             = reader.GetBoolean(reader.GetOrdinal("IsAdmin"));
                        bIsServiceAccount    = reader.GetBoolean(reader.GetOrdinal("IsServiceAccount"));
                        nWorkingMinutesInDay = reader.GetInt32(reader.GetOrdinal("WorkingMinutesInDay"));
                        nIndex = reader.GetOrdinal("EmpID");
                        if (!reader.IsDBNull(nIndex))
                        {
                            // если пользователь является сотрудником
                            EmployeeID        = reader.GetGuid(nIndex);
                            sLastName         = reader.GetString(reader.GetOrdinal("LastName"));
                            sFirstName        = reader.GetString(reader.GetOrdinal("FirstName"));
                            bAccesssPermitted = reader.GetInt32(reader.GetOrdinal("AccessPermitted")) == 1;
                            nIndex            = reader.GetOrdinal("EMail");
                            if (!reader.IsDBNull(nIndex))
                            {
                                sEMail = reader.GetString(nIndex);
                            }
                        }
                    }
                    else
                    {
                        // не нашли пользователя
                        return(CreateAnonymousUser());
                    }

                    // зачитаем все роли текущего юзера
                    ArrayList aRoles                 = new ArrayList();                 // список объектов XRole - роли пользователя
                    int       nIndex_RoleName        = reader.GetOrdinal("RoleName");
                    int       nIndex_RoleDescription = reader.GetOrdinal("RoleDescription");
                    int       nIndex_RolePrivileges  = reader.GetOrdinal("RolePrivileges");
                    if (!reader.IsDBNull(nIndex_RoleName))
                    {
                        // по всем ролям пользователя
                        do
                        {
                            string sDescription = String.Empty;
                            if (!reader.IsDBNull(nIndex_RoleDescription))
                            {
                                sDescription = reader.GetString(nIndex_RoleDescription);
                            }
                            // объединим маску привилегий с привилегиями текущей роли
                            nPrivileges = nPrivileges | reader.GetInt32(nIndex_RolePrivileges);
                            aRoles.Add(new XRole(reader.GetString(nIndex_RoleName), sDescription));
                        } while(reader.Read());
                    }
                    roles = new XRole[aRoles.Count];
                    aRoles.CopyTo(roles);
                    // превратим маску привилегий в массив объектов
                    XPrivilegeSet privilege_set = PrivilegesHelper.CreatePrivilegeSet((SystemPrivileges)nPrivileges);

                    // создадим описание пользователя и дополним атрибуты, специфичные для нашего приложения
                    user = new ITUser(sUserName, roles, privilege_set);
                    user.SystemUserID     = SystemUserID;
                    user.IsUnrestricted   = bIsAdmin;
                    user.IsServiceAccount = bIsServiceAccount;
                    user.AccessPermitted  = bAccesssPermitted;
                    if (EmployeeID != Guid.Empty)
                    {
                        // если пользователь - сотрудник
                        user.EmployeeID      = EmployeeID;
                        user.LastName        = sLastName;
                        user.FirstName       = sFirstName;
                        user.EMail           = sEMail;
                        user.WorkdayDuration = nWorkingMinutesInDay;
                    }
                }
                readUserActivityTypes(user, con);
                readUserManagedOrganizations(user, con);
            }
            return(user);
        }
Пример #8
0
        public XRole Get(Guid Id)
        {
            XRole role = null;

            using (SqlDataReader rdr = base.OpenDataReader(StoredProcs.Role_Get, new List <SqlParameter>()
            {
                new SqlParameter("@Id", Id)
            }))
            {
                if ((rdr == null) || (!rdr.HasRows))
                {
                    return(null);
                }

                #region get the role object

                role    = new XRole();
                role.Id = Id;

                rdr.Read();
                role.Name        = rdr.IsDBNull(0) ? string.Empty : rdr.GetString(0);
                role.Description = rdr.IsDBNull(1) ? string.Empty : rdr.GetString(1);
                role.IsSystem    = rdr.IsDBNull(2) ? false : (bool)rdr.GetValue(2);
                role.IsActive    = rdr.IsDBNull(3) ? false : (bool)rdr.GetValue(3);
                if (!rdr.IsDBNull(4))
                {
                    role.RoleLead = rdr.GetGuid(4);
                }
                role.Created   = rdr.GetDateTime(5);
                role.CreatedBy = rdr.GetGuid(6);
                if (!rdr.IsDBNull(7))
                {
                    role.LastModified = rdr.GetDateTime(7);
                }
                if (!rdr.IsDBNull(8))
                {
                    role.LastModifiedBy = rdr.GetGuid(8);
                }
                if (!rdr.IsDBNull(9))
                {
                    role.Deleted = rdr.GetDateTime(9);
                }
                if (!rdr.IsDBNull(10))
                {
                    role.DeletedBy = rdr.GetGuid(10);
                }

                bool     lastModifiedHadValue = role.LastModified.HasValue;
                DateTime?lastModifiedValue    = null;
                if (lastModifiedHadValue)
                {
                    lastModifiedValue = role.LastModified.Value;
                }

                #endregion

                #region get the role members

                //rdr.NextResult();

                //if ((rdr != null) && (rdr.HasRows))
                //{
                //    while (rdr.Read())
                //    {
                //        role.Members.Add(new RoleMember(rdr.GetGuid(0), rdr.GetGuid(1), rdr.GetString(2), rdr.GetDateTime(3), rdr.GetGuid(4), false, false));
                //    }
                //}

                #endregion

                #region get the reports available to this role

                //rdr.NextResult();

                //if ((rdr != null) && (rdr.HasRows))
                //{
                //    while (rdr.Read())
                //    {
                //        role.Reports.Add(new RoleReport(rdr.GetGuid(0), rdr.GetGuid(1), rdr.GetString(2), rdr.GetDateTime(3), rdr.GetGuid(4), false, false));
                //    }
                //}

                #endregion

                #region get the asset types for this role (and their permissions)

                //rdr.NextResult();

                //if ((rdr != null) && (rdr.HasRows))
                //{
                //    while (rdr.Read())
                //    {

                //        Guid ratId = rdr.GetGuid(0);

                //        RoleAssetType rat = role.AssetType(ratId);

                //        if (rat == null)
                //        {
                //            // load the RoleAssetType
                //            rat = new RoleAssetType();
                //            rat.Id = ratId;
                //            rat.AssetTypeId = rdr.GetGuid(1);
                //            rat.IsInstance = (bool)rdr.GetValue(2);
                //            rat.IncludeChildren = (bool)rdr.GetValue(3);
                //            rat.IsDirty = false;
                //            rat.IsNew = false;
                //            rat.IsDeleted = false;
                //            role.AssetTypes.Add(rat);
                //        }

                //        // get the permission portion
                //        Guid rolePermissionId = rdr.GetGuid(4);

                //        RolePermission perm = rat.Permission(rolePermissionId);

                //        if (perm == null)
                //        {
                //            // load the RolePermission
                //            perm = new RolePermission();
                //            perm.Id = rolePermissionId;
                //            perm.PermissionId = rdr.GetInt32(5);
                //            perm.IsIncludesPermission = (bool)rdr.GetValue(6);
                //            perm.FilterExpression = rdr.IsDBNull(7) ? string.Empty : rdr.GetString(7);
                //            perm.IsDirty = false;
                //            perm.IsNew = false;
                //            perm.IsDeleted = false;
                //            rat.Permissions.Add(perm);
                //        }

                //        // get the filter portion
                //        if (rdr.IsDBNull(8)) { continue; }

                //        Filter f = new Filter();
                //        f.Id = rdr.GetGuid(8);
                //        f.Order = rdr.GetInt32(9);
                //        f.PropertyId = rdr.GetGuid(10);
                //        f.Property = rdr.GetString(11);
                //        f.OperatorId = Core.Enumerations.EnumerationOps.EFilterOperatorFromValue(rdr.GetInt32(12));
                //        f.Operator = rdr.GetString(13);
                //        f.Value = rdr.IsDBNull(14) ? string.Empty : rdr.GetString(14);
                //        f.DisplayValue = rdr.IsDBNull(15) ? string.Empty : rdr.GetString(15);

                //        perm.Filters.Add(f);
                //    }
                //}

                #endregion

                if (lastModifiedHadValue)
                {
                    role.LastModified = lastModifiedValue.Value;
                }
                else
                {
                    role.LastModified = null;
                }

                role.IsNew   = false;
                role.IsDirty = false;
            }

            return(role);
        }