You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

376 lines
17 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Dapper;
using Estsh.Core.Dapper;
using Estsh.Core.IRepositories;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using System.Collections;
using System.Data;
using System.Text;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:菜单模块数据库访问类
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Repositories
{
/// <summary>
/// 处理菜单模块的业务数据
/// </summary>
public class MenuRepository : BaseRepository<SysWebMenu>, IMenuRepository
{
public MenuRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 成员方法
/// <summary>
/// 根据传入条件获得菜单列表数据
/// </summary>
public List<SysWebMenu> getList(string strWhere, string filedOrder)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder strSql = new StringBuilder();
strSql.Append(" select * from dbo.sys_web_menu ");
if (strWhere != null && !strWhere.Trim().Equals(""))
{
strSql.Append(" where " + strWhere);
}
if (filedOrder != null && !filedOrder.Trim().Equals(""))
{
strSql.Append(" order by " + filedOrder);
}
List<SysWebMenu> result = dbConn.Query<SysWebMenu>(strSql.ToString()).ToList();
return result;
}
}
/// <summary>
/// 根据登录账号获取菜单列表
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public List<SysWebMenu> getListByUser(int empId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT m.* ");
SqlStringBuilder.Append("FROM sys_web_menu m ");
SqlStringBuilder.Append(" JOIN sys_role_privliege rp ON m.menu_id = rp.fun_name AND rp.program = 'web' ");
SqlStringBuilder.Append(" JOIN sys_role_emp re ON rp.role_id = re.role_id ");
SqlStringBuilder.Append("WHERE re.emp_id = @emp_id AND m.enabled = 'Y' ");
Hashtable htParams = new Hashtable();
htParams.Add("@emp_id", empId);
List<SysWebMenu> result = dbConn.Query<SysWebMenu>(SqlStringBuilder.ToString(), htParams).ToList();
return result;
}
}
/// <summary>
/// 根据登录账号获取首页菜单列表
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public Hashtable getHomeMenuListByUser(int empId, string menuId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
Hashtable result = new Hashtable();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT m.*,e.emp_id,e.passwd ");
SqlStringBuilder.Append("FROM sys_web_menu m ");
SqlStringBuilder.Append(" JOIN sys_role_privliege rp ON m.menu_id = rp.fun_name ");
SqlStringBuilder.Append(" AND rp.program = 'web' ");
SqlStringBuilder.Append(" JOIN sys_role_emp re ON rp.role_id = re.role_id ");
SqlStringBuilder.Append(" JOIN sys_emp e ON re.emp_id = e.emp_id ");
SqlStringBuilder.Append("WHERE re.emp_id = @emp_id ");
SqlStringBuilder.Append(" AND m.enabled = 'Y' ");
SqlStringBuilder.Append(" AND m.parent_id = 0 ");
SqlStringBuilder.Append(" AND m.menu_id <> 0 ");
SqlStringBuilder.Append(" AND m.menu_id = @menu_id ");
List<SysWebMenu> menus = dbConn.Query<SysWebMenu>(SqlStringBuilder.ToString(), new { emp_id = empId, menu_id = menuId }).ToList();
result.Add("dataList", menus);
return result;
}
}
/// <summary>
/// 根据登录账号获取Main页主菜单列表
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public List<SysWebMenu> getMainMenuListByUser(int empId, string menuId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT m.* ");
SqlStringBuilder.Append("FROM sys_web_menu m ");
SqlStringBuilder.Append(" JOIN sys_role_privliege rp ON m.menu_id = rp.fun_name ");
SqlStringBuilder.Append(" AND rp.program = 'web' ");
SqlStringBuilder.Append(" JOIN sys_role_emp re ON rp.role_id = re.role_id ");
SqlStringBuilder.Append("WHERE re.emp_id = @emp_id ");
SqlStringBuilder.Append(" AND m.enabled = 'Y' ");
SqlStringBuilder.Append(" AND m.parent_id = @menu_id ");
SqlStringBuilder.Append("ORDER BY m.sort_num ");
Hashtable htParams = new Hashtable();
htParams.Add("@emp_id", empId);
menuId = menuId == null || menuId.Trim().Equals("") ? "-1" : menuId;
List<SysWebMenu> result = dbConn.Query<SysWebMenu>(SqlStringBuilder.ToString(), new { emp_id = empId, menu_id = menuId }).ToList();
return result;
}
}
/// <summary>
/// 更加用户获取和菜单路径获取操作权限
/// </summary>
/// <param name="empId"></param>
/// <param name="url"></param>
/// <returns></returns>
public List<SysProgramFunOp> getOpMenuListByUser(int empId, string url, string opType, string gridName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State!=ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT DISTINCT op.op_name,op_class,op_method,op_params,op_type,op.sort_num ");
SqlStringBuilder.Append("FROM dbo.sys_program_fun_op op ");
SqlStringBuilder.Append(" JOIN dbo.sys_role_op_privliege rop ON op.fun_name = rop.menu_id ");
SqlStringBuilder.Append(" AND op.ruid = rop.op_id ");
SqlStringBuilder.Append(" JOIN dbo.sys_role_emp re ON rop.role_id = re.role_id ");
SqlStringBuilder.Append(" JOIN dbo.sys_web_menu wm ON op.fun_name = wm.menu_id ");
SqlStringBuilder.Append("WHERE re.emp_id = @emp_id ");
SqlStringBuilder.Append(" AND op.enabled = 'Y' ");
SqlStringBuilder.Append(" AND wm.url = @url ");
SqlStringBuilder.Append(" AND op.op_type = @opType ");
if (!String.IsNullOrEmpty(gridName))
{
SqlStringBuilder.Append(" AND op.grid_name = @gridName ");
}
SqlStringBuilder.Append(" ORDER BY op.sort_num ");
DynamicParameters paras = new DynamicParameters();
paras.Add("@emp_id", empId);
paras.Add("@url", url);
paras.Add("@opType", opType);
if (!String.IsNullOrEmpty(gridName))
{
paras.Add("@gridName", gridName);
}
List<SysProgramFunOp> result = dbConn.Query<SysProgramFunOp>(SqlStringBuilder.ToString(), paras).ToList();
return result;
}
}
/// <summary>
/// 根据分页条件获取分页数据列表
/// </summary>
public Hashtable getListByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
Hashtable result = new Hashtable();
DynamicParameters paras = new DynamicParameters();
paras.Add("@Table", typeof(SysWebMenu).GetEntityTableName());
paras.Add("@Column", " * ");
paras.Add("@OrderColumn", OrderBy);
paras.Add("@GroupColumn", "");
paras.Add("@PageSize", PageSize);
paras.Add("@CurrentPage", PageIndex);
paras.Add("@Group", 0);
paras.Add("@Condition", strWhere);
paras.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
paras.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
List<SysWebMenu> menus = dbConn.Query<SysWebMenu>("Com_Pagination", paras, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", menus);
result.Add("totalCount", paras.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 获取下拉框菜单数据
/// </summary>
/// <returns></returns>
public List<KeyValueResult> getSelectMenu()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder strSql = new StringBuilder();
strSql.Append("select menu_id as [value],name as [key] from dbo.sys_web_menu where parent_id < 100 AND enabled = 'Y' ");
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
}
/// <summary>
/// 插入菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int saveMenu(SysWebMenu menu)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO sys_web_menu (name ");
SqlStringBuilder.Append(" , description ");
SqlStringBuilder.Append(" , url ");
SqlStringBuilder.Append(" , parent_id ");
SqlStringBuilder.Append(" , icon_url ");
SqlStringBuilder.Append(" , icon_close_url ");
SqlStringBuilder.Append(" , icon_open_url ");
SqlStringBuilder.Append(" , icon_skin ");
SqlStringBuilder.Append(" , enabled ");
SqlStringBuilder.Append(" , sort_num ");
SqlStringBuilder.Append(" ,create_userid ");
SqlStringBuilder.Append(" ,create_time ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" VALUES(@name ");
SqlStringBuilder.Append(" , @description ");
SqlStringBuilder.Append(" , @url ");
SqlStringBuilder.Append(" , @parentId ");
SqlStringBuilder.Append(" , @iconUrl ");
SqlStringBuilder.Append(" , @iconCloseUrl ");
SqlStringBuilder.Append(" , @iconOpenUrl ");
SqlStringBuilder.Append(" , @iconSkin ");
SqlStringBuilder.Append(" , @enabled ");
SqlStringBuilder.Append(" , @sortNum ");
SqlStringBuilder.Append(" , @createUserid ");
SqlStringBuilder.Append(" , CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append(" ) ");
var result = dbConn.Execute(SqlStringBuilder.ToString(), menu);
return result;
}
}
/// <summary>
/// 更新菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int updateMenu(SysWebMenu menu)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("update sys_web_menu ");
SqlStringBuilder.Append("SET name=@name ");
SqlStringBuilder.Append(" , description=@description ");
SqlStringBuilder.Append(" , url=@url ");
SqlStringBuilder.Append(" , parent_id=@parentId ");
SqlStringBuilder.Append(" , icon_url=@iconUrl ");
SqlStringBuilder.Append(" , icon_close_url=@iconCloseUrl ");
SqlStringBuilder.Append(" , icon_open_url=@iconOpenUrl ");
SqlStringBuilder.Append(" , icon_skin=@iconSkin ");
SqlStringBuilder.Append(" , enabled=@enabled ");
SqlStringBuilder.Append(" , sort_num=@sortNum ");
SqlStringBuilder.Append(" ,update_userid = @updateUserId ");
SqlStringBuilder.Append(" ,update_time = CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append("WHERE menu_id=@menuId ");
var result = dbConn.Execute(SqlStringBuilder.ToString(), menu);
return result;
}
}
/// <summary>
/// 删除菜单数据
/// </summary>
/// <param name="ruid"></param>
/// <returns></returns>
public int deleteMenu(String menuId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
String strQuery = "SELECT * FROM sys_web_menu WHERE parent_id = @menuId";
var exist = dbConn.QuerySingleOrDefault<SysWebMenu>(strQuery, new { menuId = menuId });
if (exist != null && exist.MenuId > 0)
{
return -2;
}
String delStr = "update sys_web_menu set Enabled='N' where menu_id = @menuId";
var result = dbConn.Execute(delStr, new { menuId = menuId });
return result;
}
}
//启用
public int EnableData(String ids)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
String delStr = "update sys_web_menu set Enabled='Y' WHERE menu_id in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
//禁用
public int DisableData(String ids)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
if (dbConn.State != ConnectionState.Open)
{
dbConn.Open();
}
String delStr = "update sys_web_menu set Enabled='N' WHERE menu_id in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
#endregion 成员方法
}
}