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.

429 lines
18 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 UserRepository : BaseRepository<SysEmp>, IUserRepository
{
public UserRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 系统登录
/// <summary>
/// 根据条件获取用户信息
/// </summary>
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<SysEmp>(strSql.ToString());
return user;
}
}
#endregion
#region 用户管理
/// <summary>
/// 根据分页条件获取用户列表数据
/// </summary>
/// <param name="PageSize"></param>
/// <param name="PageIndex"></param>
/// <param name="strWhere"></param>
/// <param name="OrderBy"></param>
/// <returns></returns>
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<SysEmp> depts = dbConn.Query<SysEmp>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 根据用户ID获取用户不拥有的角色数据
/// </summary>
/// <param name="emp_id"></param>
/// <returns></returns>
public List<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
/// <summary>
/// 根据用户ID获取用户已经具有的角色数据
/// </summary>
/// <param name="emp_id"></param>
/// <returns></returns>
public List<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
else
{
return new List<KeyValueResult>();
}
}
}
/// <summary>
/// 根据用户ID获取用户信息
/// </summary>
/// <param name="emp_id"></param>
/// <returns></returns>
public List<SysEmp> 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<SysEmp> result = dbConn.Query<SysEmp>(strSql.ToString(),param).ToList();
return result;
}
}
//获取工厂信息
public List<SysFactory> 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<SysFactory> result = dbConn.Query<SysFactory>(strSql.ToString()).ToList();
return result;
}
}
/// <summary>
/// 插入用户数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
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<SysEmp> resultExistUser = dbConn.Query<SysEmp>(strQuery, htQuery).ToList();
if (resultExistUser.Count > 0)
{
return 2;
}
else
{
List<string> sqlStrings = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
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;
}
}
}
}
/// <summary>
/// 更新更新数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int updateUserInfo(SysEmp htParams,string roles)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
List<string> sqlStrings = new List<string>();
List<SysEmp> parameters = new List<SysEmp>();
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<string> sqlStringsRole = new List<string>();
List<DynamicParameters> parametersRole = new List<DynamicParameters>();
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;
}
}
}
/// <summary>
/// 删除用户数据
/// </summary>
/// <param name="ruid"></param>
/// <returns></returns>
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
}
}