| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- package com.cyksj.service.mange.cms;
- import cn.dev33.satoken.annotation.SaCheckLogin;
- import cn.hutool.core.util.StrUtil;
- import org.elsa.mxx.api.controller.cms.AbstractCmsRole;
- import org.elsa.mxx.api.request.CmsRoleReq;
- import org.elsa.mxx.api.response.latest.Callback;
- import org.elsa.mxx.api.response.latest.ListOut;
- import org.elsa.mxx.common.exception.NoteException;
- import org.elsa.mxx.core.entity.CmsRole;
- import org.elsa.mxx.core.entity.CmsRoleMenu;
- import org.elsa.mxx.core.entity.CmsUser;
- import org.springframework.beans.BeanUtils;
- import org.springframework.dao.DuplicateKeyException;
- import org.springframework.stereotype.Service;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestParam;
- import java.util.Arrays;
- import java.util.List;
- /*
- *项目名: yicang-admin
- *文件名: AbstractCmsRoleService
- *创建者: JavaZou
- *创建时间:2022/9/30 16:11
- */
- @Service
- public class AbstractCmsRoleService extends AbstractCmsRole {
- @Override
- public Callback<String> addRole(@RequestBody CmsRoleReq cmsRoleReq) {
- try {
- if (StrUtil.isEmpty(cmsRoleReq.getRoleName())) {
- throw new NoteException("必填项不能为空");
- }
- if (StrUtil.isEmpty(cmsRoleReq.getMenuIds())) {
- throw new NoteException("请选择对应的菜单");
- }
- CmsRole cmsRole = new CmsRole();
- BeanUtils.copyProperties(cmsRoleReq, cmsRole);
- super.baseDao2.save(cmsRole);
- cmsRoleReq.setId(cmsRole.getId());
- if (StrUtil.isNotEmpty(cmsRoleReq.getMenuIds())) {
- saveRoleMenuRelation(cmsRoleReq);
- }
- } catch (DuplicateKeyException keyEx) {
- throw new NoteException("角色名重复");
- }
- return Callback.<String>success().setMsg("新增角色成功");
- }
- @Override
- public Callback<String> putRole(@RequestBody CmsRoleReq cmsRoleReq) throws Exception {
- if (cmsRoleReq.getId() == null || cmsRoleReq.getId() < 0) {
- throw new NoteException("角色不存在");
- }
- if (StrUtil.isEmpty(cmsRoleReq.getMenuIds())) {
- throw new NoteException("请选择对应的菜单");
- }
- CmsRole cmsRole = super.baseDao2.selectOneById(CmsRole.class, cmsRoleReq.getId());
- Boolean isFlag = false;
- if (StrUtil.isNotBlank(cmsRoleReq.getRoleName())) {
- cmsRole.setRoleName(cmsRoleReq.getRoleName());
- isFlag = true;
- }
- if (StrUtil.isNotBlank(cmsRoleReq.getRemark())) {
- cmsRole.setRemark(cmsRoleReq.getRemark());
- isFlag = true;
- }
- if (isFlag) {
- super.baseDao2.save(cmsRole);
- }
- cmsRoleMapper.deleteMenuRoleRelation(cmsRoleReq.getId());
- if (StrUtil.isNotBlank(cmsRoleReq.getMenuIds())) {
- this.saveRoleMenuRelation(cmsRoleReq);
- }
- //查出所关联该角色的所有用户
- List<CmsUser> cmsUserList = cmsRoleMapper.getAllCmsUserByRoleId(cmsRoleReq.getId());
- if (cmsUserList != null) {
- for (CmsUser cmsUser : cmsUserList) {
- //更新缓存
- cmsUserManager.loadUserRedisCache(cmsUser);
- }
- }
- return Callback.<String>success().setMsg("更新角色成功");
- }
- @Override
- public Callback<String> delRoleById(@PathVariable("id") Integer id) {
- if (id == null || id < 0) {
- throw new NoteException("角色不存在");
- }
- List<CmsUser> cmsUserList = cmsRoleMapper.getAllCmsUserByRoleId(id);
- if (null != cmsUserList && !cmsUserList.isEmpty()) {
- throw new NoteException("请先删除该角色关联下的用户");
- }
- cmsRoleMapper.deleteMenuRoleRelation(id);
- super.baseDao2.deleteById(CmsRole.class, id);
- return Callback.<String>success().setMsg("删除角色成功");
- }
- @Override
- public Callback<ListOut<CmsRole>> getRoleList(@RequestParam(required = false, defaultValue = "1") Integer start, @RequestParam(required = false, defaultValue = "5") Integer limit) {
- List<CmsRole> list = cmsRoleMapper.getCmsRoleList((start - 1) * limit, limit);
- Integer size = cmsRoleMapper.countCmsRole();
- return Callback.<ListOut<CmsRole>>success().setData(ListOut.<CmsRole>create().setList(list).setTotal(size));
- }
- @Override
- @SaCheckLogin
- public Callback<List<String>> getMenuByRoleId(String roleId) {
- if (StrUtil.isEmpty(roleId)) {
- throw new NoteException("角色不存在");
- }
- //目前是单个角色
- List<String> menus = cmsRoleMapper.getAllMenusByRoleIds(roleId.split(","));
- return Callback.<List<String>>success().setData(menus);
- }
- @Override
- @SaCheckLogin
- public Callback<CmsRole> getDetailByRoleId(@PathVariable("roleId") Integer roleId) {
- return Callback.<CmsRole>success().setData(baseDao2.selectOneById(CmsRole.class, roleId));
- }
- private void saveRoleMenuRelation(CmsRoleReq cmsRoleReq) {
- Arrays.stream(cmsRoleReq.getMenuIds().split(",")).forEach(menuId -> {
- super.baseDao2.save(new CmsRoleMenu(cmsRoleReq.getId(), Integer.valueOf(menuId)));
- });
- }
- }
|