Пример #1
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());
        }
Пример #2
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());
        }