Esempio n. 1
0
        /// <summary>
        /// 创建解除角色菜单按钮权限的sql
        /// </summary>
        /// <param name="cb"></param>
        /// <param name="v"></param>
        /// <returns></returns>
        private string CreateUnDistributionButtonSql(List <dynamic> cb, string v)
        {
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < cb.Count; i++)
            {
                sb.AppendLine(
                    DBSqlHelper.GetUpdateSQL <EHECD_PrivilegeDTO>(
                        new EHECD_PrivilegeDTO {
                    bIsDeleted = true
                },
                        string.Format(
                            @"WHERE 
                                        sPrivilegeMaster = 'role' --特权分配给角色的
                                        AND sPrivilegeMasterValue = '{0}' --角色ID
                                        AND sBelong = 'menu' --属于菜单的
                                        AND sBelongValue = '{2}' --菜单ID
                                        AND sPrivilegeAccess = 'button' --特权类型是按钮
                                        AND sPrivilegeAccessValue = '{1}'--按钮ID",
                            v, cb[i].id.ToString(), cb[i].menuid.ToString()
                            )
                        )
                    );
            }
            return(sb.ToString());
        }
Esempio n. 2
0
        //删除角色
        public override int DeleteRole(string ID, dynamic p)
        {
            StringBuilder sb = new StringBuilder();

            //1.逻辑删除这个角色的所有特权
            sb.Append(DBSqlHelper.GetUpdateSQL <EHECD_PrivilegeDTO>(new EHECD_PrivilegeDTO {
                bIsDeleted = true
            }, string.Format("WHERE ((sPrivilegeMaster = 'role' AND sPrivilegeMasterValue = '{0}'/*类别是角色*/) OR (sBelong = 'role' AND sBelongValue = '{0}'/*所有者是角色*/) OR (sPrivilegeAccess = 'role' AND sPrivilegeAccessValue = '{0}'/*提供者是角色*/))", ID)));

            //2.逻辑删除这个角色
            sb.Append(DBSqlHelper.GetUpdateSQL <EHECD_RoleDTO>(new EHECD_RoleDTO {
                ID = Guid.Parse(ID), bIsDeleted = true
            }, String.Format("WHERE ID = '{0}'", ID)));

            //3.逻辑删除这个角色绑定的客户
            sb.Append(DBSqlHelper.GetUpdateSQL <EHECD_SystemUser_R_RoleDTO>(new EHECD_SystemUser_R_RoleDTO {
                sRoleID = Guid.Parse(ID), bIsDeleted = true
            }, String.Format("WHERE sRoleID = '{0}'", ID)));

            var ret = excute.ExcuteTransaction(sb.ToString());

            //4.记录系统日志
            InsertSystemLog(
                p.sLoginName.ToString(),
                p.sUserName.ToString(),
                p.IP.ToString(),
                (Int16)(SYSTEM_LOG_TYPE.DELETE | SYSTEM_LOG_TYPE.ROLE),
                "系统用户删除角色" + ID,
                ID,
                ret > 0);

            return(ret);
        }
Esempio n. 3
0
        /// <summary>
        /// 创建解除角色菜单的sql
        /// </summary>
        /// <param name="cm">要解除的菜单集合</param>
        /// <param name="v">要解除的角色</param>
        /// <returns>sql</returns>
        private string CreateUnDistributionMenuSql(List <string> cm, string v)
        {
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < cm.Count; i++)
            {
                sb.AppendLine(
                    DBSqlHelper.GetUpdateSQL <EHECD_PrivilegeDTO>(
                        new EHECD_PrivilegeDTO {
                    bIsDeleted = true
                },
                        string.Format(
                            "WHERE sPrivilegeMaster = 'role' AND sBelong = 'role' AND sPrivilegeMasterValue = '{0}' AND sBelongValue = '{0}' AND sPrivilegeAccess = 'menu' AND sPrivilegeAccessValue = '{1}'",
                            v, cm[i]
                            )
                        )
                    );
            }
            return(sb.ToString());
        }
Esempio n. 4
0
        //删除用户
        public override int DeleteSystemUser(EHECD_SystemUserDTO user, dynamic p)
        {
            StringBuilder sb = new StringBuilder();

            //1.删除用户
            sb.AppendLine(DBSqlHelper.GetUpdateSQL <EHECD_SystemUserDTO>(new EHECD_SystemUserDTO()
            {
                bIsDeleted = true
            }, string.Format("where ID = '{0}'", user.ID)));

            //2.删除用户的特权
            sb.AppendLine(DBSqlHelper.GetUpdateSQL <EHECD_PrivilegeDTO>(new EHECD_PrivilegeDTO()
            {
                bIsDeleted = true
            }, string.Format("where ((sPrivilegeMaster = 'user' AND sPrivilegeMasterValue = '{0}') OR (sBelong = 'user' AND sBelongValue = '{0}'))", user.ID)));

            //3.解除用户权限
            sb.AppendLine(DBSqlHelper.GetUpdateSQL <EHECD_SystemUser_R_RoleDTO>(new EHECD_SystemUser_R_RoleDTO()
            {
                bIsDeleted = true
            }, string.Format("where sUserID = '{0}' AND bIsDeleted = 0", user.ID)));

            var ret = excute.ExcuteTransaction(sb.ToString());

            //3.记录系统日志
            InsertSystemLog(
                p.sLoginName.ToString(),
                p.sUserName.ToString(),
                p.IP.ToString(),
                (Int16)(SYSTEM_LOG_TYPE.DELETE | SYSTEM_LOG_TYPE.SYSTEMUSER),
                "系统用户删除用户" + user.ID,
                user.ID.ToString(),
                ret > 0);

            return(ret);
        }
Esempio n. 5
0
        /// <summary>
        /// 创建分配角色按钮权限的sql
        /// </summary>
        /// <param name="jb"></param>
        /// <param name="v"></param>
        /// <returns></returns>
        private string CreateDistributionButtonSql(List <dynamic> jb, string v)
        {
            StringBuilder sb = new StringBuilder();

            //赋予角色菜单按钮权限的sql
            string dsql =
                @"IF EXISTS (
	                            SELECT
		                            1
	                            FROM
		                            EHECD_Privilege
	                            WHERE
		                            sPrivilegeMaster = 'role'--分配给角色的
                                AND sPrivilegeMasterValue = '{0}'--角色ID
                                AND sPrivilegeAccess = 'button'--特权类型是按钮
                                AND sPrivilegeAccessValue = '{1}'--按钮ID
	                            AND sBelong = 'menu'--属于菜单的	                            
	                            AND sBelongValue = '{4}'--菜单ID
                            )
                            BEGIN
	                            --存在直接更新
                                {2}
                            END
                            ELSE

                            BEGIN
	                            --不存在就插入一条
                                {3}
                            END;";

            for (int i = 0; i < jb.Count; i++)
            {
                sb.AppendFormat(dsql, v, jb[i].id.ToString(),
                                DBSqlHelper.GetUpdateSQL <EHECD_PrivilegeDTO>(
                                    new EHECD_PrivilegeDTO {
                    bIsDeleted = false
                },
                                    string.Format(
                                        @"WHERE 
                                        sPrivilegeMaster = 'role'--分配给角色的
                                        AND sPrivilegeMasterValue = '{0}'--角色ID
                                        AND sPrivilegeAccess = 'button'--特权类型是按钮
                                        AND sPrivilegeAccessValue = '{1}'--按钮ID
                                        AND sBelong = 'menu'--属于菜单的
                                        AND sBelongValue = '{2}'--菜单ID",
                                        v, jb[i].id.ToString(), jb[i].menuid.ToString()
                                        )
                                    ),
                                DBSqlHelper.GetInsertSQL <EHECD_PrivilegeDTO>(
                                    new EHECD_PrivilegeDTO
                {
                    bIsDeleted          = false,
                    bPrivilegeOperation = false,
                    ID                    = GuidHelper.CreateRpcrt4Guid(),
                    sBelong               = "menu",
                    sBelongValue          = Guid.Parse(jb[i].menuid.ToString()),
                    sPrivilegeAccess      = "button",
                    sPrivilegeAccessValue = Guid.Parse(jb[i].id.ToString()),
                    sPrivilegeMaster      = "role",
                    sPrivilegeMasterValue = Guid.Parse(v)
                }
                                    ), jb[i].menuid.ToString()
                                );
            }
            return(sb.ToString());
        }
Esempio n. 6
0
        /// <summary>
        /// 创建分配角色菜单的sql
        /// </summary>
        /// <param name="jm">要分配的菜单集合</param>
        /// <param name="roleId">要分配的角色</param>
        /// <returns>sql</returns>
        private string CreateDistributionMenuSql(List <string> jm, string roleId)
        {
            StringBuilder sb = new StringBuilder();

            //赋予角色菜单权限的sql
            string dsql =
                @"IF EXISTS (
	                            SELECT
		                            1
	                            FROM
		                            EHECD_Privilege
	                            WHERE
		                            sPrivilegeMaster = 'role'
	                            AND sBelong = 'role'
	                            AND sPrivilegeMasterValue = '{0}'--角色ID
	                            AND sBelongValue = '{0}'--角色ID
	                            AND sPrivilegeAccess = 'menu'
	                            AND sPrivilegeAccessValue = '{1}'--菜单ID
                            )
                            BEGIN
	                            --存在直接更新
                                {2}
                            END
                            ELSE

                            BEGIN
	                            --不存在就插入一条
                                {3}
                            END;";

            for (int i = 0; i < jm.Count; i++)
            {
                sb.AppendFormat(dsql, roleId, jm[i],
                                DBSqlHelper.GetUpdateSQL <EHECD_PrivilegeDTO>(
                                    new EHECD_PrivilegeDTO {
                    bIsDeleted = false
                },
                                    string.Format(
                                        "WHERE sPrivilegeMaster = 'role' AND sBelong = 'role' AND sPrivilegeMasterValue = '{0}' AND sBelongValue = '{0}' AND sPrivilegeAccess = 'menu' AND sPrivilegeAccessValue = '{1}'",
                                        roleId, jm[i]
                                        )
                                    ),
                                DBSqlHelper.GetInsertSQL <EHECD_PrivilegeDTO>(
                                    new EHECD_PrivilegeDTO
                {
                    bIsDeleted          = false,
                    bPrivilegeOperation = false,
                    ID                    = GuidHelper.CreateRpcrt4Guid(),
                    sBelong               = "role",
                    sBelongValue          = Guid.Parse(roleId),
                    sPrivilegeAccess      = "menu",
                    sPrivilegeAccessValue = Guid.Parse(jm[i]),
                    sPrivilegeMaster      = "role",
                    sPrivilegeMasterValue = Guid.Parse(roleId)
                }
                                    )
                                );
            }

            return(sb.ToString());
        }
Esempio n. 7
0
        //分配角色
        public override int DistributionRole(EHECD_SystemUserDTO user, dynamic p)
        {
            var ret = 0;

            if (p.data.ids != null)
            {
                string idsStr = p.data.ids.Value.ToString();
                if (!string.IsNullOrWhiteSpace(idsStr))
                {
                    //1.有角色id,表示要给他重新分配角色
                    var ids = idsStr.Split(new char[] { ',' });

                    StringBuilder sb = new StringBuilder();

                    //解除未选中的其他角色
                    sb.AppendFormat("UPDATE EHECD_SystemUser_R_Role SET bIsDeleted =  1 WHERE sRoleID NOT IN ({0}) AND sUserID = '{1}';",
                                    string.Join(",", ids.Select(m => "'" + m + "'")), user.ID);

                    string sql = @"IF EXISTS(SELECT 1 FROM EHECD_SystemUser_R_Role WHERE sRoleID = '{2}' AND sUserID = '{3}')
                                BEGIN                                    
	                                {0}
                                END
                                ELSE
                                BEGIN                                    
	                                {1}
                                END;";

                    for (int i = 0; i < ids.Length; i++)
                    {
                        sb.AppendFormat(sql,
                                        DBSqlHelper.GetUpdateSQL <EHECD_SystemUser_R_RoleDTO>(
                                            new EHECD_SystemUser_R_RoleDTO {
                            bIsDeleted = false
                        },
                                            string.Format("WHERE sRoleID = '{0}' AND sUserID = '{1}'", ids[i], user.ID)),
                                        DBSqlHelper.GetInsertSQL <EHECD_SystemUser_R_RoleDTO>(
                                            new EHECD_SystemUser_R_RoleDTO
                        {
                            ID         = GuidHelper.GetSecuentialGuid(),
                            bIsDeleted = false,
                            sRoleID    = Guid.Parse(ids[i]),
                            sUserID    = user.ID
                        }),
                                        ids[i],
                                        user.ID
                                        );
                    }

                    //2.执行插入和更新
                    ret = excute.ExcuteTransaction(sb.ToString());

                    //3.记录系统日志
                    InsertSystemLog(
                        p.sLoginName.ToString(),
                        p.sUserName.ToString(),
                        p.IP.ToString(),
                        (Int16)(SYSTEM_LOG_TYPE.MODIFY | SYSTEM_LOG_TYPE.ADD | SYSTEM_LOG_TYPE.ROLE | SYSTEM_LOG_TYPE.SYSTEMUSER),
                        "分配系统用户角色" + user.ID,
                        user.ID.ToString(),
                        ret > 0);
                }
                else
                {
                    //1.没有角色id,表示这个用户没有分配角色,解除他以前的所有角色信息
                    ret = excute.UpdateSingle <EHECD_SystemUser_R_RoleDTO>(
                        new EHECD_SystemUser_R_RoleDTO {
                        bIsDeleted = true
                    },
                        string.Format("WHERE sUserID = '{0}'", user.ID));

                    //2.记录系统日志
                    InsertSystemLog(
                        p.sLoginName.ToString(),
                        p.sUserName.ToString(),
                        p.IP.ToString(),
                        (Int16)(SYSTEM_LOG_TYPE.MODIFY | SYSTEM_LOG_TYPE.DELETE | SYSTEM_LOG_TYPE.ROLE | SYSTEM_LOG_TYPE.SYSTEMUSER),
                        "解除系统用户角色" + user.ID,
                        user.ID.ToString(),
                        ret >= 0);
                }
            }
            return(ret);
        }