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 UserRepository : BaseRepository, IUserRepository
{
public UserRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 系统登录
///
/// 根据条件获取用户信息
///
public SysEmp getUserInfo(string strWhere)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * from sys_emp ");
if (strWhere.Trim() != "")
{
strSql.Append(" where enabled = 'Y' " + strWhere);
}
var user = dbConn.QueryFirstOrDefault(strSql.ToString());
return user;
}
}
#endregion
#region 用户管理
///
/// 根据分页条件获取用户列表数据
///
///
///
///
///
///
public Hashtable getUserListByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
StringBuilder column = new StringBuilder(1024);
column.Append("emp_id,");
column.Append("emp_no,");
column.Append("emp_name,");
column.Append("(SELECT f.factory_name from sys_factory f WHERE f.factory_id = emp.factory_id) as factory,");
column.Append("(SELECT d.dept_name from sys_dept d WHERE d.dept_id = emp.dept_id) as dept,");
column.Append("(SELECT s.shift_name from sys_shift s WHERE s.shift_id = emp.shift_id) as shift,");
column.Append("enabled ");
DynamicParameters parameters = new DynamicParameters();
parameters.Add( "@TotalCount", 100, DbType.Int32, ParameterDirection.Output);
parameters.Add( "@TotalPage", 100, DbType.Int32, ParameterDirection.Output);
parameters.Add( "@Table", "sys_emp emp");
parameters.Add( "@Column", column.ToString());
parameters.Add( "@OrderColumn", OrderBy);
parameters.Add( "@GroupColumn", "");
parameters.Add( "@PageSize", PageSize);
parameters.Add( "@CurrentPage", PageIndex);
parameters.Add( "@Group", 0);
parameters.Add( "@Condition", strWhere);
List depts = dbConn.Query("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get("@TotalCount"));
return result;
}
}
///
/// 根据用户ID获取用户不拥有的角色数据
///
///
///
public List fromRoleList(String emp_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
if (emp_id != null && !"".Equals(emp_id.Trim()))
{
SqlStringBuilder.Append("SELECT r.role_id AS [value] ");
SqlStringBuilder.Append(" , r.role_name AS [key] ");
SqlStringBuilder.Append("FROM sys_role r ");
SqlStringBuilder.Append(" WHERE ");
SqlStringBuilder.Append(" NOT EXISTS (SELECT 1 FROM sys_role_emp re ");
SqlStringBuilder.Append(" WHERE r.role_id = re.role_id ");
SqlStringBuilder.Append(" AND re.emp_id = " + emp_id.Trim() + ") ");
}
else
{
SqlStringBuilder.Append("SELECT DISTINCT role_id as [value],role_name as [key] from sys_role where enabled = 'Y'");
}
List result = dbConn.Query(SqlStringBuilder.ToString()).ToList();
return result;
}
}
///
/// 根据用户ID,获取用户已经具有的角色数据
///
///
///
public List toRoleList(String emp_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
if (emp_id != null && !"".Equals(emp_id.Trim()))
{
strSql.Append("SELECT DISTINCT r.role_id as [value],r.role_name as [key] ");
strSql.Append(" from sys_role_emp re INNER JOIN sys_role r on re.role_id = r.role_id ");
strSql.Append(" where r.enabled = 'Y' AND re.emp_id = " + emp_id.Trim());
List result = dbConn.Query(strSql.ToString()).ToList();
return result;
}
else
{
return new List();
}
}
}
///
/// 根据用户ID获取用户信息
///
///
///
public List getUserInfoById(String emp_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select emp_id,emp_no,emp_name as emp_name,shift_id as shiftId,factory_id,dept_id,enabled ");
strSql.Append(" from sys_emp where emp_id = @emp_id");
DynamicParameters param = new DynamicParameters();
param.Add("@emp_id", emp_id);
List result = dbConn.Query(strSql.ToString(),param).ToList();
return result;
}
}
//获取工厂信息
public List getSelectFactory(int factoryID)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from sys_factory where factory_id=" + factoryID + " and Enabled = 'Y'");
List result = dbConn.Query(strSql.ToString()).ToList();
return result;
}
}
///
/// 插入用户数据
///
///
///
public int saveUserInfo(SysEmp htParams,string roles)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strQuery = "select emp_id from sys_emp where emp_no = @emp_no";
DynamicParameters htQuery = new DynamicParameters();
htQuery.Add("@emp_no", htParams.EmpNo);
List resultExistUser = dbConn.Query(strQuery, htQuery).ToList();
if (resultExistUser.Count > 0)
{
return 2;
}
else
{
List sqlStrings = new List();
List parameters = new List();
String createUserId = htParams.CreateUserId.ToString();
String[] roleArray = roles.Split(',');
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" INSERT INTO sys_emp(emp_no,emp_name,create_userid,create_time,enabled,shift_id,factory_id,dept_id) ");
SqlStringBuilder.Append(" VALUES(@empNo,@empName,@createUserId,CONVERT(varchar(50), GETDATE(), 21), ");
SqlStringBuilder.Append(" @enabled,@shiftId,@factoryId,@deptId) ");
int insert = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
if (insert > 0)
{
object emp_id = dbConn.ExecuteScalar(strQuery, htQuery);
SqlStringBuilder.Clear();
SqlStringBuilder.Append("INSERT INTO sys_role_emp(role_id,emp_id,enabled,create_userid,create_time) ");
SqlStringBuilder.Append(" VALUES(@roleId,@emp_id,'Y',@createUserId,CONVERT(varchar(50), GETDATE(), 21)) ");
foreach (String roleId in roleArray)
{
DynamicParameters dyParams = new DynamicParameters();
dyParams.Add("@roleId", roleId);
dyParams.Add("@emp_id", emp_id);
dyParams.Add("@createUserId", createUserId);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters.Add(dyParams);
}
int excResult = 0;
for (int i = 0; i < sqlStrings.Count; i++)
{
excResult = dbConn.Execute(sqlStrings[i], parameters[i]);
}
if (excResult==1)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
}
}
///
/// 更新更新数据
///
///
///
public int updateUserInfo(SysEmp htParams,string roles)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
List sqlStrings = new List();
List parameters = new List();
String updateUserId = htParams.UpdateUserId.ToString();
String emp_id = htParams.EmpId.ToString();
String[] roleArray = roles.Split(',');
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE sys_emp ");
SqlStringBuilder.Append("SET ");
SqlStringBuilder.Append(" emp_name = @empName, ");
SqlStringBuilder.Append(" shift_id = @shiftId, ");
SqlStringBuilder.Append(" factory_id = @factoryId, ");
SqlStringBuilder.Append(" dept_id = @deptId, ");
SqlStringBuilder.Append(" enabled = @enabled, ");
SqlStringBuilder.Append(" update_userid = @updateUserId, ");
SqlStringBuilder.Append(" update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append("WHERE ");
SqlStringBuilder.Append(" emp_id = @empId ");
sqlStrings.Add(SqlStringBuilder.ToString());
parameters.Add(htParams);
SqlStringBuilder.Clear();
SqlStringBuilder.Append(" delete from sys_role_emp WHERE emp_id = @empId ");
htParams = new SysEmp();
htParams.EmpId=Convert.ToInt32(emp_id);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters.Add(htParams);
SqlStringBuilder.Clear();
List sqlStringsRole = new List();
List parametersRole = new List();
SqlStringBuilder.Append("INSERT INTO sys_role_emp(role_id,emp_id,enabled,create_userid,create_time) ");
SqlStringBuilder.Append(" VALUES(@roleId,@empId,'Y',@createUserId,CONVERT(varchar(50), GETDATE(), 21)) ");
foreach (String roleId in roleArray)
{
if (roleId != null && !"".Equals(roleId.Trim()))
{
DynamicParameters dyParams = new DynamicParameters();
dyParams.Add("@roleId", roleId);
dyParams.Add("@empId", emp_id);
dyParams.Add("@createUserId", updateUserId);
sqlStringsRole.Add(SqlStringBuilder.ToString());
parametersRole.Add(dyParams);
}
}
int excResult = 0;
for (int i = 0; i < sqlStrings.Count; i++)
{
excResult = dbConn.Execute(sqlStrings[i], parameters[i]);
}
for (int i = 0; i < sqlStringsRole.Count; i++)
{
excResult = dbConn.Execute(sqlStringsRole[i], parametersRole[i]);
}
if (excResult>0)
{
return 1;
}
else
{
return 0;
}
}
}
///
/// 删除用户数据
///
///
///
public int deleteUser(String emp_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder delStr = new StringBuilder();
delStr.Append(" update sys_emp set Enabled='N' WHERE emp_id = @emp_id ");
delStr.Append(" update sys_role_emp set Enabled='N' WHERE emp_id = @emp_id1 ");
DynamicParameters htparams = new DynamicParameters();
htparams.Add("@emp_id", emp_id);
htparams.Add("@emp_id1", emp_id);
int result = dbConn.Execute(delStr.ToString(), htparams);
return result;
}
}
//启用
public int EnableData(String ids)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder delStr = new StringBuilder();
delStr.Append(" update sys_emp set Enabled='Y' WHERE emp_id = @emp_id ");
delStr.Append(" update sys_role_emp set Enabled='Y' WHERE emp_id = @emp_id1 ");
DynamicParameters htparams = new DynamicParameters();
htparams.Add("@emp_id", ids);
htparams.Add("@emp_id1", ids);
int result = dbConn.Execute(delStr.ToString(), htparams);
return result;
}
}
//禁用
public int DisableData(String ids)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder delStr = new StringBuilder();
delStr.Append(" update sys_emp set Enabled='N' WHERE emp_id = @emp_id ");
delStr.Append(" update sys_role_emp set Enabled='N' WHERE emp_id = @emp_id1 ");
DynamicParameters htparams = new DynamicParameters();
htparams.Add("@emp_id", ids);
htparams.Add("@emp_id1", ids);
int result = dbConn.Execute(delStr.ToString(), htparams);
return result;
}
}
public bool UpdatePassword(string emp_id, string password, string updateUserid)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = string.Format("update {0} set passwd = '{1}',update_time=CONVERT(varchar(50), GETDATE(), 21),update_userid='{2}' where emp_id = '{3}'", "sys_emp", password, updateUserid, emp_id);
int count = dbConn.Execute(sql);
if (count > 0)
{
return true;
}
else
{
return false;
}
}
}
public int restPassWord(String userID)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = @"UPDATE dbo.sys_emp
SET passwd = '38b3eff8baf56627478ec76a704e9b52' ,
update_time = CONVERT(varchar(50), GETDATE(), 21)
WHERE emp_no = '" + userID + "'";
int result = dbConn.Execute(strSql);
return result;
}
}
#endregion
}
}