package jnpf.base.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.base.entity.ModuleEntity; import jnpf.base.entity.SystemEntity; import jnpf.base.mapper.ModuleMapper; import jnpf.base.mapper.SystemMapper; import jnpf.base.model.AppAuthorizationModel; import jnpf.base.service.SuperServiceImpl; import jnpf.base.service.SystemService; import jnpf.constant.CodeConst; import jnpf.constant.JnpfConst; import jnpf.constant.PermissionConst; import jnpf.permission.RoleApi; import jnpf.permission.UserApi; import jnpf.permission.entity.RoleEntity; import jnpf.permission.entity.UserEntity; import jnpf.permission.model.user.WorkHandoverModel; import jnpf.permission.util.CodeNumUtil; import jnpf.util.RandomUtil; import jnpf.util.StringUtil; import jnpf.util.UserProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; /** * 系统 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司 * @date 2019年9月27日 上午9:18 */ @Service public class SystemServiceImpl extends SuperServiceImpl implements SystemService { @Autowired private RoleApi roleApi; @Autowired private UserApi userApi; @Autowired private ModuleMapper moduleMapper; @Override public List getList() { return this.baseMapper.getList(); } @Override public List getList(String keyword, Boolean filterEnableMark, boolean verifyAuth, Boolean filterMain, boolean isList, List moduleAuthorize) { return this.baseMapper.getList(keyword, filterEnableMark, verifyAuth, filterMain, isList, moduleAuthorize); } @Override public List getListByIdsKey(List ids, String keyword) { return this.baseMapper.getListByIdsKey(ids, keyword); } @Override public SystemEntity getInfo(String id) { return this.baseMapper.getInfo(id); } @Override public Boolean isExistFullName(String id, String fullName) { return this.baseMapper.isExistFullName(id, fullName); } @Override public Boolean isExistEnCode(String id, String enCode) { return this.baseMapper.isExistEnCode(id, enCode); } @Override @Transactional public Boolean create(SystemEntity entity) { if (StringUtil.isEmpty(entity.getEnCode())) { entity.setEnCode(CodeNumUtil.getCodeFunction(CodeConst.YY, code -> this.isExistEnCode(null, code))); } this.baseMapper.create(entity); //创建审批中心菜单 this.createWorkMenu(entity.getId()); return true; } private void createWorkMenu(String systemId) { SystemEntity workFlowSys = this.baseMapper.getInfoByEnCode(JnpfConst.WORK_FLOW_CODE); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(ModuleEntity::getEnCode, JnpfConst.MODULE_CODE); queryWrapper.lambda().eq(ModuleEntity::getSystemId, workFlowSys.getId()); List list = moduleMapper.selectList(queryWrapper); String parentId; //审批中心 目录id String workId = RandomUtil.uuId(); for (ModuleEntity item : list) { String id = RandomUtil.uuId(); ModuleEntity moduleEntity = BeanUtil.copyProperties(item, ModuleEntity.class); if (JnpfConst.WORK_FLOW_CODE.equals(moduleEntity.getEnCode())) { parentId = "-1"; id = workId; moduleEntity.setSortCode(0l); } else { parentId = workId; } moduleEntity.setId(id); moduleEntity.setSystemId(systemId); moduleEntity.setParentId(parentId); moduleMapper.insert(moduleEntity); } String appParentId; //APP审批中心 目录id String appWorkId = RandomUtil.uuId(); for (ModuleEntity item : list) { if (JnpfConst.WORK_FLOWQUICKLAUNCH.equalsIgnoreCase(item.getEnCode())) continue; String appId = RandomUtil.uuId(); ModuleEntity moduleEntity = BeanUtil.copyProperties(item, ModuleEntity.class); if (JnpfConst.WORK_FLOW_CODE.equals(moduleEntity.getEnCode())) { appParentId = "-1"; appId = appWorkId; moduleEntity.setSortCode(0l); } else { appParentId = appWorkId; } moduleEntity.setId(appId); moduleEntity.setCategory(JnpfConst.APP); moduleEntity.setSystemId(systemId); moduleEntity.setParentId(appParentId); moduleMapper.insert(moduleEntity); } } @Override @Transactional public Boolean update(String id, SystemEntity entity) { if (StringUtil.isEmpty(entity.getEnCode())) { entity.setEnCode(CodeNumUtil.getCodeFunction(CodeConst.YY, code -> this.isExistEnCode(id, code))); } return this.baseMapper.update(id, entity); } @Override @Transactional public Boolean delete(String id) { moduleMapper.deleteBySystemId(id); return this.removeById(id); } @Override public List getListByIds(List list, List moduleAuthorize) { return this.baseMapper.getListByIds(list, moduleAuthorize); } @Override public SystemEntity getInfoByEnCode(String enCode) { return this.baseMapper.getInfoByEnCode(enCode); } @Override public List findSystemAdmin(List moduleAuthorize) { return this.baseMapper.findSystemAdmin(moduleAuthorize); } @Override public boolean saveSystemAuthorizion(AppAuthorizationModel model) { return this.baseMapper.saveSystemAuthorizion(model); } @Override public List getAuthListByUser(String userId, Boolean isStand) { UserEntity user = userApi.getInfoById(userId); List userRoles = roleApi.getUserRoles(userId); boolean isDevRole = userRoles.stream().anyMatch(t -> PermissionConst.DEVELOPER_CODE.equals(t.getEnCode())); if (isStand) { isDevRole = UserProvider.getUser().getIsDevRole(); } boolean isAdmin = Objects.equals(user.getIsAdministrator(), 1); QueryWrapper queryWrapper = new QueryWrapper<>(); //开发人员才有编辑权限 if (isDevRole || isAdmin) { //判断权限列表 if (!isAdmin) { queryWrapper.lambda().eq(SystemEntity::getUserId, userId).or(); queryWrapper.lambda().like(SystemEntity::getAuthorizeId, userId).or(); queryWrapper.lambda().eq(SystemEntity::getAuthorizeId, PermissionConst.ALL_DEV_USER); } } else { queryWrapper.lambda().eq(SystemEntity::getUserId, userId); } return list(queryWrapper); } @Override public void workHandover(WorkHandoverModel workHandoverModel) { this.baseMapper.workHandover(workHandoverModel); } @Override public void changeSystemAuthorizion(AppAuthorizationModel model) { this.baseMapper.changeSystemAuthorizion(model); } @Override public List getListByIds(List list, List moduleAuthorize, int type) { return this.baseMapper.getListByIds(list, moduleAuthorize, type); } @Override public List getListByCreUser(String userId) { return this.baseMapper.getListByCreUser(userId); } }