1
yhj
2024-07-24 5e5d945e91568b973faa27d8ab0bcef99fc4a6c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#region
 
using System;
using System.Data;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Core.CodeGenerator;
using CSFrameworkV5.Models;
 
#endregion
 
namespace CSFrameworkV5.DataAccess
{
    /// <summary>
    ///     角色资料的DAL层
    /// </summary>
    [DefaultORM_UpdateMode(typeof(tb_MyRole), true)]
    public class dalRole : dalBaseDataDict
    {
        public dalRole(Loginer loginer)
            : base(loginer)
        {
            _KeyName = tb_MyRole.__KeyName;
            _TableName = tb_MyRole.__TableName;
            _ModelType = typeof(tb_MyRole);
            _Database = DatabaseProvider.SystemDatabase;
        }
 
        /// <summary>
        ///     根据表名获取该表的SQL命令生成器
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <returns></returns>
        protected override IGenerateSqlCommand CreateSqlGenerator(
            DataTable table)
        {
            Type ORM = null;
 
            if (table.TableName == tb_MyRole.__TableName)
                ORM = typeof(tb_MyRole);
 
            if (table.TableName == tb_MyRoleActions.__TableName)
                ORM = typeof(tb_MyRoleActions);
 
            if (table.TableName == tb_MyUserRoles.__TableName)
                ORM = typeof(tb_MyUserRoles);
 
            if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!");
 
            //支持两种SQL命令生成器
            return new GenerateSqlCmdByTableFields(ORM, table,
                GeneratorFactory);
        }
 
        /// <summary>
        ///     删除角色
        /// </summary>
        /// <param name="keyValue">角色编号</param>
        /// <returns></returns>
        public override bool Delete(string keyValue)
        {
            var sp = _Database.CreateSqlProc("usp_DeleteRole");
            sp.AddParam("RoleID", DbType.String, keyValue);
            sp.AddParam("DataSetID", DbType.String, _Loginer.DBID); //增加帐套参数
            var i = _Database.ExecuteCommand(sp.Command);
            return true;
        }
 
        public override DataTable GetLookupData()
        {
            var sql =
                $"SELECT DataSetID,RoleID,RoleName FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID ORDER BY RoleName";
            var cmd = _Database.CreateCommand(sql);
            cmd.AddParam("DataSetID", _Loginer.DBID);
            return _Database.GetTable(cmd.Command, TableName);
        }
 
        public DataTable GetRoleAction(string roleID)
        {
            var sql =
                $"SELECT * FROM tb_MyRoleActions WHERE RoleID={_Database.ParamSymboName}RoleID AND DataSetID={_Database.ParamSymboName}DataSetID";
            var cmd = _Database.CreateCommand(sql);
            cmd.AddParam("DataSetID", _Loginer.DBID);
            cmd.AddParam("RoleID", roleID);
            return _Database.GetTable(cmd.Command,
                tb_MyRoleActions.__TableName);
        }
 
        public DataTable GetRoleData()
        {
            var sql =
                $"SELECT * FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID ORDER BY RoleName";
            var cmd = _Database.CreateCommand(sql);
            cmd.AddParam("DataSetID", _Loginer.DBID);
            return _Database.GetTable(cmd.Command, TableName);
        }
 
        public DataSet GetRoleOwners(string roleID)
        {
            var sp = _Database.CreateSqlProc("usp_GetRoleOwners");
            sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
            sp.AddParam("RoleID", DbType.String, roleID);
            var ds = _Database.GetDataSet(sp.Command);
            ds.Tables[0].TableName = tb_MyGroup.__TableName;
            ds.Tables[1].TableName = tb_MyUser.__TableName;
            ds.Tables[2].TableName = tb_MyUserRoles.__TableName;
            return ds;
        }
 
        public override DataTable GetSummaryData()
        {
            AssertTableName();
 
            var sql =
                $"SELECT * FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID ORDER BY RoleName";
            var cmd = _Database.CreateCommand(sql);
            cmd.AddParam("DataSetID", _Loginer.DBID);
            return _Database.GetTable(cmd.Command, TableName);
        }
 
        public bool IsExistsRole(string roleID)
        {
            var sql =
                $"SELECT COUNT(*) FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID AND RoleID={_Database.ParamSymboName}RoleID";
            var cmd = _Database.CreateCommand(sql);
            cmd.AddParam("DataSetID", _Loginer.DBID);
            cmd.AddParam("RoleID", roleID);
            var o = _Database.ExecuteScalar(cmd.Command);
            return ConvertEx.ToInt(o) > 0;
        }
    }
}