.net core 实例教程(十七)角色管理相关接口实现代码

本文源码下载地址:http://www.80cxy.com/Blog/ResourceView?arId=202403191532545995NAAqJh

系列教程地址:http://www.80cxy.com/Blog/ArticleView?arId=202403191517574161ay3s5V

本文实现用户管理相关模块代码,主要有分页获取用户列表、增加用户、修改用户、删除用户以及批量删除用户接口。下面直接上代码。

一、仓储代码

(一)仓储接口代码

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

/// <summary>

        /// 根据Id获取角色数据

        /// </summary>

        /// <param name="id">角色Id</param>

        /// <returns></returns>

        Task<SysRole?> FindOneRoleById(string id);

        /// <summary>

        /// 分页获取角色数据

        /// </summary>

        /// <param name="pageIndex">第几页</param>

        /// <param name="pageSize">每页条数</param>

        /// <param name="wheres">查询条件</param>

        /// <param name="sort">排序字段</param>

        /// <param name="order">排序分类</param>

        /// <returns></returns>

        Task<(SysRole[], int total)> GetRoleList(int pageIndex, int pageSize, string wheres, string sort, string order);

        /// <summary>

        /// 添加角色

        /// </summary>

        /// <param name="name">角色名称</param>

        /// <param name="remark">备注</param>

        /// <returns></returns>

        Task<SysRole> AddRole(string name, string remark);

        /// <summary>

        /// 编辑角色信息

        /// </summary>

        /// <param name="id">角色Id</param>

        /// <param name="name">角色名称</param>

        /// <param name="remark">备注</param>

        /// <returns></returns>

        Task<SysRole> EditRole(string id, string name, string remark);

        /// <summary>

        /// 根据角色Id删除角色

        /// </summary>

        /// <param name="id">角色Id</param>

        /// <returns></returns>

        void DeleteRole(string id);

        /// <summary>

        /// 批量删除角色

        /// </summary>

        /// <param name="ids">角色Id数组</param>

        /// <returns></returns>

        bool DeleteRoleRange(string[] ids);

        /// <summary>

        /// 根据查询条件获取角色菜单配置项

        /// </summary>

        /// <param name="predicate">查询条件</param>

        /// <returns></returns>

        Task<SysRoleDetails[]> GetRoleAuthList(Expression<Func<SysRoleDetails, bool>> predicate);

        /// <summary>

        /// 添加某一角色菜单项

        /// </summary>

        /// <param name="roleId"></param>

        /// <param name="menuId"></param>

        /// <returns></returns>

        Task<SysRoleDetails> AddRoleDetails(string roleId, string menuId);

        /// <summary>

        /// 删除某一角色下面的所配置的所有菜单项

        /// </summary>

        /// <param name="roleId">角色Id</param>

        /// <returns></returns>

        bool DeleteRoleAuthRange(string roleId);

(二)仓储接口实现代码

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

public async Task<SysRole?> FindOneRoleById(string id)

        {

            return await _dbContext.SysRole.FindAsync(Guid.Parse(id));

        }

        public async Task<(SysRole[], int total)> GetRoleList(int pageIndex, int pageSize, string wheres, string sort, string order)

        {

            //where查询条件

            List<DataFilter> searchParametersList = FormatParameters.GetSearchParameters(wheres);

            //order排序条件

            Dictionary<string, QueryOrderBy> orderBy = FormatParameters.GetOrderParameters(sort, order);

            //构造查询条件

            Expression<Func<SysRole, bool>> expression = DataFilterConvertor<SysRole>.ToExpression(searchParametersList);

            var listAll = _dbContext.SysRole.Where(expression);

            int total = listAll.Count();

            var list = await listAll.OrderConditions(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToArrayAsync();

            return (list, total);

        }

        public async Task<SysRole> AddRole(string name, string remark)

        {

            var model = SysRole.Add(name, remark);

            await _dbContext.SysRole.AddAsync(model);

            return model;

        }

        public async Task<SysRole> EditRole(string id, string name, string remark)

        {

            var model = await FindOneRoleById(id);

            return model.Edit(name, remark);

        }

        public async void DeleteRole(string id)

        {

            _dbContext.SysRole.Remove(await _dbContext.SysRole.FindAsync(Guid.Parse(id)));

        }

        public bool DeleteRoleRange(string[] ids)

        {

            _dbContext.SysRole.RemoveRange(_dbContext.SysRole.Where(x => ids.Contains(x.Id.ToString())).ToArray());

            return true;

        }

        public async Task<SysRoleDetails[]> GetRoleAuthList(Expression<Func<SysRoleDetails, bool>> predicate)

        {

            return await _dbContext.SysRoleDetails.Where(predicate).ToArrayAsync();

        }

        public async Task<SysRoleDetails> AddRoleDetails(string roleId, string menuId)

        {

            var model = SysRoleDetails.Add(roleId, menuId);

            await _dbContext.SysRoleDetails.AddAsync(model);

            return model;

        }

        public bool DeleteRoleAuthRange(string roleId)

        {

            _dbContext.SysRoleDetails.RemoveRange(_dbContext.SysRoleDetails.Where(x => x.RoleId == Guid.Parse(roleId)).ToArray());

            return true;

        }

二、领域服务代码

(一)领域服务接口代码

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

/// <summary>

        /// 分页获取角色数据

        /// </summary>

        /// <param name="pageIndex">第几页</param>

        /// <param name="pageSize">每页条数</param>

        /// <param name="wheres">查询条件</param>

        /// <param name="sort">排序字段</param>

        /// <param name="order">排序分类</param>

        /// <returns></returns>

        Task<ResponseContent> GetRoleList(int pageIndex, int pageSize, string Wheres, string Sort, string Order);

        /// <summary>

        /// 添加角色

        /// </summary>

        /// <param name="name">角色名称</param>

        /// <param name="remark">备注</param>

        /// <returns></returns>

        Task<ResponseContent> AddRole(string name, string remark);

        /// <summary>

        /// 编辑角色

        /// </summary>

        /// <param name="id">角色Id</param>

        /// <param name="name">角色名称</param>

        /// <param name="remark">备注</param>

        /// <returns></returns>

        Task<ResponseContent> EditRole(string id, string name, string remark);

        /// <summary>

        /// 根据角色Id删除角色

        /// </summary>

        /// <param name="id">角色id</param>

        /// <returns></returns>

        ResponseContent DeleteRole(string id);

        /// <summary>

        /// 批量删除角色

        /// </summary>

        /// <param name="ids">角色Id数组</param>

        /// <returns></returns>

        ResponseContent DeleteRoleRange(string[] ids);

        /// <summary>

        /// 获取某一角色下面的菜单项

        /// </summary>

        /// <param name="id">角色Id</param>

        /// <returns></returns>

        Task<ResponseContent> GetRoleAuthTree(string id);

        /// <summary>

        /// 保存角色功能列表

        /// </summary>

        /// <param name="roleId">角色Id</param>

        /// <param name="menuIds">菜单Id</param>

        /// <returns></returns>

        Task<ResponseContent> SaveRoleAuth(string roleId, string[] menuIds);

(二)领域服务接口实现代码

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

public async Task<ResponseContent> GetRoleList(int pageIndex, int pageSize, string wheres, string sort, string order)

        {

            ResponseContent response = new ResponseContent();

            (var list, int total) = await _systemDomainRepostory.GetRoleList(pageIndex, pageSize, wheres, sort, order);

            return response.Ok(new { total = total, rows = list });

        }

        public async Task<ResponseContent> AddRole(string name, string remark)

        {

            ResponseContent response = new ResponseContent();

            await _systemDomainRepostory.AddRole(name, remark);

            return response.Ok();

        }

        public async Task<ResponseContent> EditRole(string id, string name, string remark)

        {

            ResponseContent response = new ResponseContent();

            var model = await _systemDomainRepostory.EditRole(id, name, remark);

            return response.Ok();

        }

        public ResponseContent DeleteRole(string id)

        {

            ResponseContent response = new ResponseContent();

            _systemDomainRepostory.DeleteRole(id);

            return response.Ok();

        }

        public ResponseContent DeleteRoleRange(string[] ids)

        {

            ResponseContent response = new ResponseContent();

            bool result = _systemDomainRepostory.DeleteRoleRange(ids);

            if (result)

                return response.Ok();

            else

                return response.Error(ResponseType.OperError);

        }

        public async Task<ResponseContent> GetRoleAuthTree(string id)

        {

            ResponseContent response = new ResponseContent();

            //获取所有菜单列表

            var menuList = await _systemDomainRepostory.GetMenuTreeList();

            //获取角色已经设置的菜单列表

            Expression<Func<SysRoleDetails, bool>> expression = p => p.RoleId == Guid.Parse(id);

            var authList = await _systemDomainRepostory.GetRoleAuthList(expression);

            return response.Ok(new { rows = menuList, checkedKeys = authList });

        }

        public async Task<ResponseContent> SaveRoleAuth(string roleId, string[] menuIds)

        {

            ResponseContent response = new ResponseContent();

            //删除角色菜单

            bool result = _systemDomainRepostory.DeleteRoleAuthRange(roleId);

            //生成角色菜单

            for (int i = 0; i < menuIds.Length; i++)

            {

                await _systemDomainRepostory.AddRoleDetails(roleId, menuIds[i]);

            }

            if (result)

                return response.Ok();

            else

                return response.Error(ResponseType.OperError);

        }

三、Controller代码

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

/// <summary>

        /// 分页获取角色列表

        /// </summary>

        /// <remarks>

        /// 描述:分页获取角色列表

        /// </remarks>

        /// <param name="req">请求参数</param>

        /// <returns></returns>

        [HttpPost]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        public async Task<ActionResult> GetRoleListByPage(PageGridRequest req)

        {

            return new JsonResult(await _systemDomainService.GetRoleList(req.PageIndex, req.PageSize, req.Wheres, req.Sort, req.Order));

        }

        /// <summary>

        /// 添加角色

        /// </summary>

        /// <remarks>

        /// 描述:添加角色

        /// </remarks>

        /// <param name="req">请求参数</param>

        /// <returns></returns>

        [HttpPost]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        [UnitOfWork(typeof(SignUpDbContext))]

        public async Task<ActionResult> AddRole(AddRoleRequest req)

        {

            return new JsonResult(await _systemDomainService.AddRole(req.Name, req.Remark));

        }

        /// <summary>

        /// 修改角色

        /// </summary>

        /// <remarks>

        /// 描述:修改角色

        /// </remarks>

        /// <param name="req">请求参数</param>

        /// <returns></returns>

        [HttpPut]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        [UnitOfWork(typeof(SignUpDbContext))]

        public async Task<ActionResult> EditRole(EditRoleRequest req)

        {

            return new JsonResult(await _systemDomainService.EditRole(req.Id, req.Name, req.Remark));

        }

        /// <summary>

        /// 根据Id删除角色

        /// </summary>

        /// <remarks>

        /// 描述:删除角色

        /// </remarks>

        /// <param name="id">角色Id</param>

        /// <returns></returns>

        [HttpDelete]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        [UnitOfWork(typeof(SignUpDbContext))]

        public ActionResult DeleteRole(string id)

        {

            return new JsonResult(_systemDomainService.DeleteRole(id));

        }

        /// <summary>

        /// 批量删除角色

        /// </summary>

        /// <remarks>

        /// 描述:根据角色Id数组批量删除角色

        /// </remarks>

        /// <param name="ids">角色Id数组</param>

        /// <returns></returns>

        [HttpDelete]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        [UnitOfWork(typeof(SignUpDbContext))]

        public ActionResult DeleteRoleRange(string[] ids)

        {

            return new JsonResult(_systemDomainService.DeleteRoleRange(ids));

        }

        /// <summary>

        /// 获取某一角色配置的全部菜单项

        /// </summary>

        /// <remarks>

        /// 描述:获取某一角色配置的全部菜单项,将返回所有可配置的菜单项,及本角色已经配置的菜单项

        /// </remarks>

        /// <param name="id">角色Id</param>

        /// <returns></returns>

        [HttpGet]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        public async Task<ActionResult> GetRoleAuthTree(string id)

        {

            return new JsonResult(await _systemDomainService.GetRoleAuthTree(id));

        }

        /// <summary>

        /// 保存角色配置的菜单项

        /// </summary>

        /// <remarks>

        /// 描述:保存角色配置的菜单项

        /// </remarks>

        /// <param name="req">请求参数</param>

        /// <returns></returns>

        [HttpPost]

        [TypeFilter(typeof(ApiAuthorizeFilter))]

        [UnitOfWork(typeof(SignUpDbContext))]

        public async Task<ActionResult> SaveRoleAuth(SaveRoleAuthRequest req)

        {

            return new JsonResult(await _systemDomainService.SaveRoleAuth(req.RoleId, req.MenuIds));

        }

学习交流

附笔者学习 .net core开发时参考相关项目实例源码:asp.net core webapi项目实例源代码锦集下载(72个)

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值