#region
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Core.CodeGenerator;
using CSFrameworkV5.Interfaces;
using CSFrameworkV5.Models;
///*************************************************************************/
///*
///* 文件名 :dalUser.cs
///* 程序说明 : 用户数据字典的DAL层
///* 原创作者 :www.csframework.com
///*
///* Copyright 2006-2021 wwww.csframework.com, 保留所有权利.
///*
///**************************************************************************/
#endregion
namespace CSFrameworkV5.DataAccess
{
///
/// 用户数据字典的DAL层
///
[DefaultORM_UpdateMode(typeof(tb_MyUser), true)]
public class dalUser : dalBaseDataDict, IBridge_User
{
public dalUser(Loginer loginer)
: base(loginer)
{
_TableName = tb_MyUser.__TableName; //表名
_KeyName = tb_MyUser.__KeyName; //主键字段
_ModelType = typeof(tb_MyUser);
_Database = DatabaseProvider.SystemDatabase;
}
public bool CopyPermission(string sourceUser, string targetUser)
{
var sp = _Database.CreateSqlProc("usp_CopyPermission");
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
sp.AddParam("AccountFrom", DbType.String, sourceUser);
sp.AddParam("AccountTo", DbType.String, targetUser);
sp.AddParam("OperateUser", DbType.String, _Loginer.Account);
var i = _Database.ExecuteCommand(sp.Command);
return i > 0;
}
///
/// 删除用户
///
/// 帐号
///
public bool DeleteUser(string account)
{
var sp = _Database.CreateSqlProc("usp_DeleteUser");
sp.AddParam("Account", DbType.String, account);
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
var i = _Database.ExecuteCommand(sp.Command);
return i > 0;
}
public bool DeleteUserGroup(string account, string groupCode)
{
var sql =
$"DELETE FROM tb_MyGroupUser WHERE DataSetID={_Database.ParamSymboName}DataSetID AND Account={_Database.ParamSymboName}Account AND GroupCode={_Database.ParamSymboName}GroupCode";
var cmd = _Database.CreateCommand(sql.ToStringEx());
cmd.AddParam("DataSetID", DbType.String, _Loginer.DBID);
cmd.AddParam("Account", DbType.String, account);
cmd.AddParam("GroupCode", DbType.String, groupCode);
var i = _Database.ExecuteCommand(cmd.Command);
return i > 0;
}
public bool DeleteUserRole(string account, string roleID)
{
var sql =
$"DELETE FROM tb_MyUserRoles WHERE DataSetID={_Database.ParamSymboName}DataSetID AND Account={_Database.ParamSymboName}Account AND RoleID={_Database.ParamSymboName}RoleID";
var cmd = _Database.CreateCommand(sql.ToStringEx());
cmd.AddParam("DataSetID", DbType.String, _Loginer.DBID);
cmd.AddParam("Account", DbType.String, account);
cmd.AddParam("RoleID", DbType.String, roleID);
var i = _Database.ExecuteCommand(cmd.Command);
return i > 0;
}
public bool DestroyRights(string account)
{
var p = _Database.ParamSymboName;
var sql1 =
$"DELETE FROM tb_MyUserRoles WHERE DataSetID={p}DataSetID AND Account={p}Account;";
var sql2 =
$"DELETE FROM tb_MyGroupUser WHERE DataSetID={p}DataSetID1 AND Account={p}Account1;";
var cmd = _Database.CreateCommand(sql1 + sql2);
cmd.AddParam("DataSetID", _Loginer.DBID);
cmd.AddParam("DataSetID1", _Loginer.DBID);
cmd.AddParam("Account", account);
cmd.AddParam("Account1", account);
_Database.ExecuteCommand(cmd.Command);
return true;
}
///
/// 检查用户是否存在
///
/// 用户编号
///
public bool ExistsUser(string account)
{
var sql =
$"SELECT COUNT(*) FROM tb_MyUser where Account={_Database.ParamSymboName}Account";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("Account", DbType.String, account);
var o = _Database.ExecuteScalar(cmd.Command);
return int.Parse(o.ToStringEx()) > 0;
}
///
/// 获取用户数据
///
/// 帐号
///
public DataTable GetUser(string account)
{
var sql = "SELECT * FROM tb_MyUser WHERE Account=" +
_Database.ParamSymboName + "Account";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("Account", DbType.String, account);
var dt = _Database.GetTable(cmd.Command, tb_MyUser.__TableName);
return dt;
}
public DataTable GetUserActionsList(string account)
{
var sp = _Database.CreateSqlProc("usp_GetUserActionsList");
sp.AddParam("Account", DbType.String, account);
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
return _Database.GetTable(sp.Command, "usp_GetUserActionsList");
}
public DataTable GetUserGroups(string account)
{
var sql = "SELECT a.GroupCode,b.GroupName FROM tb_MyGroupUser a " +
"LEFT JOIN tb_MyGroup b ON a.GroupCode=b.GroupCode " +
"WHERE a.Account=" + _Database.ParamSymboName +
"Account AND a.DataSetID=" +
_Database.ParamSymboName + "DataSetID ";
var sp = _Database.CreateCommand(sql);
sp.AddParam("Account", DbType.String, account);
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
return _Database.GetTable(sp.Command, tb_MyGroup.__TableName);
}
public DataSet GetUserReportData(DateTime createDateFrom,
DateTime createDateTo)
{
var cmd = _Database.CreateSqlProc("usp_GetUserList");
cmd.AddParam("DateFrom", createDateFrom);
cmd.AddParam("DateTo", createDateTo);
return _Database.GetDataSet(cmd.Command);
}
public DataTable GetUserRoles(string currentUser)
{
var sql =
"SELECT a.*,b.RoleName FROM tb_MyUserRoles a LEFT JOIN tb_MyRole b ON a.RoleID=b.RoleID WHERE a.DataSetID=" +
_Database.ParamSymboName + "DataSetID AND a.Account=" +
_Database.ParamSymboName + "Account";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("DataSetID", DbType.String, _Loginer.DBID);
cmd.AddParam("Account", DbType.String, currentUser);
return _Database.GetTable(cmd.Command, tb_MyUserRoles.__TableName);
}
public DataTable GetUserRoles4Picker(string currentUser, string content)
{
var sp = _Database.CreateSqlProc("usp_GetUserRoles4Picker");
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
sp.AddParam("Account", DbType.String, currentUser);
sp.AddParam("SearchContent", DbType.String, content);
return _Database.GetTable(sp.Command, tb_MyRole.__TableName);
}
///
/// 获取用户的角色(包括临时角色)
///
///
///
public DataTable GetUserRolesAll(string account)
{
var sp = _Database.CreateSqlProc("usp_GetUserRoles");
sp.AddParam("Account", DbType.String, account);
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
return _Database.GetTable(sp.Command, tb_MyUserRoles.__TableName);
}
///
/// 获取所有用户列表,预设表格数据,必须返回图片
///
///
public DataTable GetUsers()
{
var sql = "SELECT * FROM tb_MyUser";
return _Database.GetTable(sql, "tb_MyUser");
}
///
/// 用户登录
///
/// 登录信息
///
public DataTable Login(LoginUser loginUser)
{
var cmd = _Database.CreateSqlProc("sp_sys_Login");
cmd.AddParam("Account", DbType.String, loginUser.Account);
cmd.AddParam("Password", DbType.String, loginUser.Password);
cmd.AddParam("DataSetID", DbType.String, loginUser.DBID);
cmd.AddParam("LoginUserType", DbType.String,
(int)loginUser.LoginAuthType);
cmd.AddParam("IP", DbType.String, loginUser.IP);
cmd.AddParam("MAC", DbType.String, loginUser.MAC);
var ds = _Database.GetDataSet(cmd.Command);
if (ds.Tables.Count == 2)
{
var error = ConvertEx.ToString(ds.Tables[1].Rows[0][0]);
if (error.Trim() != string.Empty)
throw new CustomException(error); //抛出异常
if (ds.Tables[0].Rows.Count >= 1) return ds.Tables[0];
return null;
}
return null;
}
///
/// 登出
///
/// 登录信息
public void Logout(LoginUser loginUser)
{
var cmd = _Database.CreateSqlProc("sp_sys_Logout");
cmd.AddParam("Account", DbType.String, loginUser.Account);
cmd.AddParam("IP", DbType.String, loginUser.IP);
cmd.AddParam("MAC", DbType.String, loginUser.MAC);
_Database.ExecuteCommand(cmd.Command);
}
///
/// 修改用户密码
///
/// 帐号
/// 密码
///
public bool ModifyPassword(string account, string OldPwd, string NewPwd)
{
var sql = "UPDATE tb_MyUser SET Password=" +
_Database.ParamSymboName + "NewPwd WHERE Account=" +
_Database.ParamSymboName + "Account";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("OldPwd", DbType.String, OldPwd);
cmd.AddParam("NewPwd", DbType.String, NewPwd);
cmd.AddParam("Account", DbType.String, account);
object o = _Database.ExecuteCommand(cmd.Command);
return int.Parse(o.ToStringEx()) == 1;
}
///
/// 插入PDA用户表
///
/// 帐号
/// 密码
///
public bool insrer(string account, string OldPwd, string NewPwd)
{
var sql = string.Format(
@"INSERT INTO [dbo].[POWPAA](PAA001,PAA002,PAA003,PAA004,PAA006,PAA008,PAA011)VALUES('{0}','{1}','{2}','IT','normal','9999','MES')",
account, OldPwd, NewPwd);
return _Database.ExecuteSQL(sql) == 1;
}
public DataTable Search(string content)
{
var sql = "SELECT * FROM tb_MyUser ";
var cmd = _Database.CreateCommand("");
if (!string.IsNullOrEmpty(content))
{
sql = sql +
$" WHERE Account LIKE {_Database.ParamSymboName}Account OR UserName LIKE {_Database.ParamSymboName}UserName ";
cmd.AddParam("Account", "%" + content + "%");
cmd.AddParam("UserName", "%" + content + "%");
}
cmd.Command.CommandText = CodeSafeHelper.GetSafeSQL(sql);
var dt = _Database.GetTable(cmd.Command, tb_MyUser.__TableName);
return dt;
}
///
/// 搜索用户资料
///
/// 搜索内容
/// 忽略改组的用户
///
public List SearchEx(string content, string ignoreGroup)
{
var sql = "SELECT Account,UserName FROM tb_MyUser WHERE 1=1 ";
var cmd = _Database.CreateCommand("");
if (!string.IsNullOrEmpty(content))
{
sql = sql +
$" AND (Account LIKE {_Database.ParamSymboName}Account OR UserName LIKE {_Database.ParamSymboName}UserName) ";
cmd.AddParam("Account", "%" + content + "%");
cmd.AddParam("UserName", "%" + content + "%");
}
if (!string.IsNullOrEmpty(ignoreGroup))
{
sql = sql +
$" AND Account NOT IN (SELECT Account FROM tb_MyGroupUser Where GroupCode={_Database.ParamSymboName}GroupCode) ";
cmd.AddParam("GroupCode", ignoreGroup);
}
cmd.Command.CommandText = CodeSafeHelper.GetSafeSQL(sql);
var list = _Database.ExecuteReaderList(cmd.Command);
return list;
}
public bool SetLockState(string account, bool isLock)
{
var sql =
$"UPDATE tb_MyUser SET IsLocked={_Database.ParamSymboName}IsLocked WHERE Account={_Database.ParamSymboName}Account";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("IsLocked", isLock ? "Y" : "N");
cmd.AddParam("Account", account);
var i = _Database.ExecuteCommand(cmd.Command);
return true;
}
///
/// 判断用户名密码是否正确
///
///
///
///
public bool TryLogin(string user, string encodedPwd)
{
var sql = new StringBuilder();
sql.Append(" SELECT COUNT(*) FROM tb_MyUser ");
sql.Append(" WHERE Account=" + _Database.ParamSymboName +
"User AND Password=" + _Database.ParamSymboName +
"Pwd");
var cmd = _Database.CreateCommand(sql.ToStringEx());
cmd.AddParam("User", DbType.String, user);
cmd.AddParam("Pwd", DbType.String, encodedPwd);
return ConvertEx.ToInt(_Database.ExecuteScalar(cmd.Command)) > 0;
}
///
/// 跟据表名创建SQL命令生成器
///
/// 表名
///
protected override IGenerateSqlCommand CreateSqlGenerator(
DataTable table)
{
Type ORM = null;
if (table.TableName == tb_MyUser.__TableName)
ORM = typeof(tb_MyUser);
if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!");
return new GenerateSqlCmdByTableFields(ORM, table,
GeneratorFactory);
}
public override DataTable GetLookupData()
{
var sql =
"SELECT Account,UserName,Password,FlagAdmin,DataSets FROM tb_MyUser ORDER BY UserName";
return _Database.GetTable(sql, tb_MyUser.__TableName);
}
///
/// 获取窗体的可用权限值
///
/// 登录帐号
/// 菜单名称
///
public int GetUserActions(string account, string menuName)
{
var sp = _Database.CreateSqlProc("usp_GetUserActions");
sp.AddParam("Account", DbType.String, account);
sp.AddParam("menuName", DbType.String, menuName);
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
var dt = _Database.GetTable(sp.Command);
if (dt.Rows.Count == 0) return 0;
return ConvertEx.ToInt(dt.Rows[0]["Actions"]);
}
///
/// 跟据Novell网帐号获取系统帐号
///
/// Novell网帐号
///
public DataTable GetUserByNovellID(string novellAccount)
{
var sql =
$"SELECT * FROM tb_MyUser WHERE NovellAccount={_Database.ParamSymboName}NovellAccount";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("NovellAccount", DbType.String, novellAccount);
var dt = _Database.GetTable(cmd.Command, tb_MyUser.__TableName);
return dt;
}
public DataTable GetUserCodeNames()
{
var sql = "SELECT DISTINCT Account,UserName FROM tb_MyUser";
return _Database.GetTable(sql, "tb_MyUser");
}
public DataTable GetUserDirect(string account)
{
var sql = "SELECT * FROM tb_MyUser WHERE Account=" +
_Database.ParamSymboName + "Account";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("Account", DbType.String, account);
var dt = _Database.GetTable(cmd.Command, tb_MyUser.__TableName);
return dt;
}
///
/// 仅返回帐号和密码资料,用于服务端的实时检测
///
///
public static DataTable GetUserList4Cache()
{
var sp =
DatabaseProvider.SystemDatabase.CreateSqlProc(
"usp_GetUserList4Cache");
var dt =
DatabaseProvider.SystemDatabase.GetTable(sp.Command,
tb_MyUser.__TableName);
return dt;
}
}
}