chengsc
2025-02-28 f9a9a948cd138ad0877c54319857c327c0c0c402
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
using AutoMapper;
using Model.ModelDto.SysDto;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Utility;
using WMS.Entity.Context;
using WMS.Entity.SysEntity;
using WMS.IBLL.ISysServer;
using WMS.IDAL.ISysInterface;
 
namespace WMS.BLL.SysServer
{
    /// <summary>
    /// 角色服务实践
    /// </summary>
    public class RolesServer : IRolesServer
    {
        /// <summary>
        /// 依赖注入
        /// </summary>
        private readonly IMapper _mapper;
        private static readonly SqlSugarScope Db = DataContext.Db;
        private readonly UserManager _userManager;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="roles">角色</param>
        /// <param name="mapper">automapper</param>
        public RolesServer(IMapper mapper, UserManager userManager)
        {
            _mapper = mapper; //automapper
            _userManager = userManager;
        }
 
        /// <summary>
        /// 获取角色数据列表
        /// </summary>
        /// <param name="RoleNo">角色号</param>
        /// <param name="RoleName">角色名称</param>
        /// <returns></returns>
        public async Task<List<RoleDto>> GetRoleList(string RoleNo, string RoleName)
        {
            var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(s => s.Id == _userManager.UserId);
            return await Db.Queryable<SysRoles>()
                            .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                            .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id)
                            //.WhereIF(modUser.UserName.ToUpper() != "ADMIN", a => a.CreateUser == _userManager.UserId)
                            .WhereIF(!string.IsNullOrEmpty(RoleNo), a => a.RoleNo.Contains(RoleNo))
                            .WhereIF(!string.IsNullOrEmpty(RoleName), a => a.RoleName.Contains(RoleName))
                            .Where(a => a.IsDel == "0")
                            .Select<RoleDto>((a, b, c) => new RoleDto()
                            {
                                CreateUserName = b.RealName,
                                UpdateUserName = c.RealName
                            }, true)
                            .ToListAsync();
        }
 
        /// <summary>
        /// 根据编号获取角色信息列表
        /// </summary>
        /// <param name="RoleNo">角色编号</param>
        /// <returns></returns>
        public async Task<int> GetRoleByNo(string RoleNo)
        {
            return await Db.Queryable<SysRoles>().CountAsync(s => s.RoleNo == RoleNo && s.IsDel == "0");
        }
 
        /// <summary>
        /// 新增角色数据信息
        /// </summary>
        /// <param name="roledto">角色dto</param>
        /// <returns></returns>
        /// <exception cref="Exception">捕获异常</exception>
        public async Task<int> InsertRoleInfo(RoleDto roledto)
        {
            //模型映射
            SysRoles roles = _mapper.Map<SysRoles>(roledto);
            //判断角色号是否唯一
            int count = await GetRoleByNo(roledto.RoleNo);
            if (count > 0)
            {
                throw Oops.Bah("角色号必须唯一");
            }
            //新增角色信息
            roles.CreateTime = DateTime.Now;
            roles.CreateUser = _userManager.UserId;
            var i = await Db.Insertable(roles).ExecuteCommandAsync();
            if (i <= 0)
                throw Oops.Bah("新增角色数据信息失败");
            return i;
        }
 
 
        /// <summary>
        /// 删除角色信息(逻辑删除)
        /// </summary>
        /// <param name="roles">角色实体模型</param>
        /// <returns></returns>
        public async Task<int> DeleteRoleInfo(SysRoles roles)
        {
            return await Db.Updateable<SysRoles>()
                           .Where(s => s.Id == roles.Id)
                           .SetColumns(s => s.IsDel == "1")
                           .SetColumns(s => s.UpdateTime == DateTime.Now)
                           .SetColumns(s => s.UpdateUser == _userManager.UserId)
                           .ExecuteCommandAsync();
 
        }
 
        /// <summary>
        /// 编辑角色信息
        /// </summary>
        /// <param name="role">角色实体模型</param>
        /// <returns></returns>
        public async Task<int> UpdateRoleInfo(SysRoles role)
        {
            int count = await Db.Queryable<SysRoles>().CountAsync(s => s.RoleNo == role.RoleNo && s.Id != role.Id && s.IsDel == "0");
            if (count > 0)
                throw Oops.Bah("角色号必须唯一");
            role.UpdateTime = DateTime.Now;
            role.UpdateUser = _userManager.UserId;
            int i = await Db.Updateable(role)
                .UpdateColumns(s => new { s.RoleNo, s.RoleName, s.Demo, s.UpdateUser, s.UpdateTime })
                .ExecuteCommandAsync();
            if (i <= 0)
                throw Oops.Bah("修改角色数据信息失败");
            return i;
        }
 
        /// <summary>
        /// 根据id获取角色信息
        /// </summary>
        /// <param name="roleids">角色id</param>
        /// <returns></returns>
        public async Task<SysRoles> GetRoleInfoById(int roleids)
        {
            return await Db.Queryable<SysRoles>().FirstAsync(s => s.Id == roleids && s.IsDel == "0");
        }
 
    }
}