AbstractCmsRoleService.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.cyksj.service.mange.cms;
  2. import cn.dev33.satoken.annotation.SaCheckLogin;
  3. import cn.hutool.core.util.StrUtil;
  4. import org.elsa.mxx.api.controller.cms.AbstractCmsRole;
  5. import org.elsa.mxx.api.request.CmsRoleReq;
  6. import org.elsa.mxx.api.response.latest.Callback;
  7. import org.elsa.mxx.api.response.latest.ListOut;
  8. import org.elsa.mxx.common.exception.NoteException;
  9. import org.elsa.mxx.core.entity.CmsRole;
  10. import org.elsa.mxx.core.entity.CmsRoleMenu;
  11. import org.elsa.mxx.core.entity.CmsUser;
  12. import org.springframework.beans.BeanUtils;
  13. import org.springframework.dao.DuplicateKeyException;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.web.bind.annotation.PathVariable;
  16. import org.springframework.web.bind.annotation.RequestBody;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import java.util.Arrays;
  19. import java.util.List;
  20. /*
  21. *项目名: yicang-admin
  22. *文件名: AbstractCmsRoleService
  23. *创建者: JavaZou
  24. *创建时间:2022/9/30 16:11
  25. */
  26. @Service
  27. public class AbstractCmsRoleService extends AbstractCmsRole {
  28. @Override
  29. public Callback<String> addRole(@RequestBody CmsRoleReq cmsRoleReq) {
  30. try {
  31. if (StrUtil.isEmpty(cmsRoleReq.getRoleName())) {
  32. throw new NoteException("必填项不能为空");
  33. }
  34. if (StrUtil.isEmpty(cmsRoleReq.getMenuIds())) {
  35. throw new NoteException("请选择对应的菜单");
  36. }
  37. CmsRole cmsRole = new CmsRole();
  38. BeanUtils.copyProperties(cmsRoleReq, cmsRole);
  39. super.baseDao2.save(cmsRole);
  40. cmsRoleReq.setId(cmsRole.getId());
  41. if (StrUtil.isNotEmpty(cmsRoleReq.getMenuIds())) {
  42. saveRoleMenuRelation(cmsRoleReq);
  43. }
  44. } catch (DuplicateKeyException keyEx) {
  45. throw new NoteException("角色名重复");
  46. }
  47. return Callback.<String>success().setMsg("新增角色成功");
  48. }
  49. @Override
  50. public Callback<String> putRole(@RequestBody CmsRoleReq cmsRoleReq) throws Exception {
  51. if (cmsRoleReq.getId() == null || cmsRoleReq.getId() < 0) {
  52. throw new NoteException("角色不存在");
  53. }
  54. if (StrUtil.isEmpty(cmsRoleReq.getMenuIds())) {
  55. throw new NoteException("请选择对应的菜单");
  56. }
  57. CmsRole cmsRole = super.baseDao2.selectOneById(CmsRole.class, cmsRoleReq.getId());
  58. Boolean isFlag = false;
  59. if (StrUtil.isNotBlank(cmsRoleReq.getRoleName())) {
  60. cmsRole.setRoleName(cmsRoleReq.getRoleName());
  61. isFlag = true;
  62. }
  63. if (StrUtil.isNotBlank(cmsRoleReq.getRemark())) {
  64. cmsRole.setRemark(cmsRoleReq.getRemark());
  65. isFlag = true;
  66. }
  67. if (isFlag) {
  68. super.baseDao2.save(cmsRole);
  69. }
  70. cmsRoleMapper.deleteMenuRoleRelation(cmsRoleReq.getId());
  71. if (StrUtil.isNotBlank(cmsRoleReq.getMenuIds())) {
  72. this.saveRoleMenuRelation(cmsRoleReq);
  73. }
  74. //查出所关联该角色的所有用户
  75. List<CmsUser> cmsUserList = cmsRoleMapper.getAllCmsUserByRoleId(cmsRoleReq.getId());
  76. if (cmsUserList != null) {
  77. for (CmsUser cmsUser : cmsUserList) {
  78. //更新缓存
  79. cmsUserManager.loadUserRedisCache(cmsUser);
  80. }
  81. }
  82. return Callback.<String>success().setMsg("更新角色成功");
  83. }
  84. @Override
  85. public Callback<String> delRoleById(@PathVariable("id") Integer id) {
  86. if (id == null || id < 0) {
  87. throw new NoteException("角色不存在");
  88. }
  89. List<CmsUser> cmsUserList = cmsRoleMapper.getAllCmsUserByRoleId(id);
  90. if (null != cmsUserList && !cmsUserList.isEmpty()) {
  91. throw new NoteException("请先删除该角色关联下的用户");
  92. }
  93. cmsRoleMapper.deleteMenuRoleRelation(id);
  94. super.baseDao2.deleteById(CmsRole.class, id);
  95. return Callback.<String>success().setMsg("删除角色成功");
  96. }
  97. @Override
  98. public Callback<ListOut<CmsRole>> getRoleList(@RequestParam(required = false, defaultValue = "1") Integer start, @RequestParam(required = false, defaultValue = "5") Integer limit) {
  99. List<CmsRole> list = cmsRoleMapper.getCmsRoleList((start - 1) * limit, limit);
  100. Integer size = cmsRoleMapper.countCmsRole();
  101. return Callback.<ListOut<CmsRole>>success().setData(ListOut.<CmsRole>create().setList(list).setTotal(size));
  102. }
  103. @Override
  104. @SaCheckLogin
  105. public Callback<List<String>> getMenuByRoleId(String roleId) {
  106. if (StrUtil.isEmpty(roleId)) {
  107. throw new NoteException("角色不存在");
  108. }
  109. //目前是单个角色
  110. List<String> menus = cmsRoleMapper.getAllMenusByRoleIds(roleId.split(","));
  111. return Callback.<List<String>>success().setData(menus);
  112. }
  113. @Override
  114. @SaCheckLogin
  115. public Callback<CmsRole> getDetailByRoleId(@PathVariable("roleId") Integer roleId) {
  116. return Callback.<CmsRole>success().setData(baseDao2.selectOneById(CmsRole.class, roleId));
  117. }
  118. private void saveRoleMenuRelation(CmsRoleReq cmsRoleReq) {
  119. Arrays.stream(cmsRoleReq.getMenuIds().split(",")).forEach(menuId -> {
  120. super.baseDao2.save(new CmsRoleMenu(cmsRoleReq.getId(), Integer.valueOf(menuId)));
  121. });
  122. }
  123. }