package doumeemes.service.system.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.dao.system.SystemRoleMapper; import doumeemes.dao.system.dto.QuerySystemRoleDTO; import doumeemes.dao.system.model.SystemRole; import doumeemes.dao.system.vo.SystemRoleListVO; import doumeemes.service.system.SystemMenuService; import doumeemes.service.system.SystemPermissionService; import doumeemes.service.system.SystemRoleService; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.List; /** * 系统角色Service实现 * @author Eva.Caesar Liu * @date 2022/04/18 18:12 */ @Service public class SystemRoleServiceImpl implements SystemRoleService { @Autowired private SystemRoleMapper systemRoleMapper; @Autowired private SystemMenuService systemMenuService; @Autowired private SystemPermissionService systemPermissionService; @Override public Integer create(SystemRole systemRole) { systemRoleMapper.insert(systemRole); return systemRole.getId(); } @Override public void deleteById(Integer id) { SystemRole systemRole = new SystemRole(); systemRole.setId(id); systemRole.setDeleted(Boolean.TRUE); this.updateById(systemRole); } @Override @Transactional public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) return; for (Integer id : ids) { this.deleteById(id); } } @Override public void updateById(SystemRole systemRole) { systemRoleMapper.updateById(systemRole); } @Override @Transactional public void updateByIdInBatch(List systemRoles) { if (CollectionUtils.isEmpty(systemRoles)) return; for (SystemRole systemRole: systemRoles) { this.updateById(systemRole); } } @Override public SystemRole findById(Integer id) { return systemRoleMapper.selectById(id); } @Override public List findByUserId(Integer userId) { return systemRoleMapper.selectByUserId(userId); } @Override public List findByUserModel(Integer userId,SystemRole role){ return systemRoleMapper.selectByUserModel(userId,role); } @Override public SystemRole findOne(SystemRole systemRole) { QueryWrapper wrapper = new QueryWrapper<>(systemRole); return systemRoleMapper.selectOne(wrapper.last("limit 1")); } @Override public List findList(SystemRole systemRole) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); systemRole.setDeleted(Boolean.FALSE); systemRole.setType(Constants.ROLETYPE.plat); if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ systemRole.setType(Constants.ROLETYPE.com); systemRole.setCompanyId(user.getCompany().getId()); } Wrapper wrapper = new QueryWrapper<>(systemRole); return systemRoleMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(pageWrap.getModel().getType()==null) { pageWrap.getModel().setType(Constants.ROLETYPE.plat); } if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ pageWrap.getModel().setType(Constants.ROLETYPE.com); pageWrap.getModel().setCompanyId(user.getCompany().getId()); } PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); List roleList = systemRoleMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause()); for (SystemRoleListVO role : roleList) { role.setMenus(systemMenuService.findByRoleId(role.getId())); role.setPermissions(systemPermissionService.findByRoleId(role.getId())); } return PageData.from(new PageInfo<>(roleList)); } @Override public long count(SystemRole systemRole) { Wrapper wrapper = new QueryWrapper<>(systemRole); return systemRoleMapper.selectCount(wrapper); } }