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
{
///
/// 处理菜单模块的业务数据
///
public class MenuRepository : BaseRepository, IMenuRepository
{
public MenuRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 成员方法
///
/// 根据传入条件获得菜单列表数据
///
public List 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 result = dbConn.Query(strSql.ToString()).ToList();
return result;
}
}
///
/// 根据登录账号获取菜单列表
///
///
///
public List 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 result = dbConn.Query(SqlStringBuilder.ToString(), htParams).ToList();
return result;
}
}
///
/// 根据登录账号获取首页菜单列表
///
///
///
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 menus = dbConn.Query(SqlStringBuilder.ToString(), new { emp_id = empId, menu_id = menuId }).ToList();
result.Add("dataList", menus);
return result;
}
}
///
/// 根据登录账号获取Main页主菜单列表
///
///
///
public List 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 result = dbConn.Query(SqlStringBuilder.ToString(), new { emp_id = empId, menu_id = menuId }).ToList();
return result;
}
}
///
/// 更加用户获取和菜单路径获取操作权限
///
///
///
///
public List 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 result = dbConn.Query(SqlStringBuilder.ToString(), paras).ToList();
return result;
}
}
///
/// 根据分页条件获取分页数据列表
///
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 menus = dbConn.Query("Com_Pagination", paras, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", menus);
result.Add("totalCount", paras.Get("@TotalCount"));
return result;
}
}
///
/// 获取下拉框菜单数据
///
///
public List 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 result = dbConn.Query(strSql.ToString()).ToList();
return result;
}
}
///
/// 插入菜单数据
///
///
///
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;
}
}
///
/// 更新菜单数据
///
///
///
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;
}
}
///
/// 删除菜单数据
///
///
///
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(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 成员方法
}
}