package jnpf.portal.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.base.DictionaryDataApi; import jnpf.base.ModuleApi; import jnpf.base.SystemApi; import jnpf.base.entity.DictionaryDataEntity; import jnpf.base.entity.SystemEntity; import jnpf.base.model.VisualFunctionModel; import jnpf.base.model.base.SystemApiListModel; import jnpf.base.model.base.SystemListVO; import jnpf.base.model.module.ModuleNameVO; import jnpf.base.service.SuperServiceImpl; import jnpf.constant.CodeConst; import jnpf.permission.UserApi; import jnpf.permission.entity.UserEntity; import jnpf.permission.util.CodeNumUtil; import jnpf.portal.entity.PortalEntity; import jnpf.portal.mapper.PortalDataMapper; import jnpf.portal.mapper.PortalMapper; import jnpf.portal.model.PortalPagination; import jnpf.portal.model.PortalSelectModel; import jnpf.portal.service.PortalService; import jnpf.util.JsonUtil; import jnpf.util.StringUtil; import jnpf.util.context.RequestContext; import jnpf.util.enums.DictionaryDataEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; /** * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2021/3/16 */ @Service public class PortalServiceImpl extends SuperServiceImpl implements PortalService { @Autowired private UserApi userApi; @Autowired private SystemApi systemApi; @Autowired private ModuleApi moduleApi; @Autowired private DictionaryDataApi dictionaryDataApi; @Autowired private PortalDataMapper portalDataMapper; @Override public List getList(PortalPagination portalPagination) { return this.baseMapper.getList(portalPagination); } public List getList(PortalPagination portalPagination, QueryWrapper queryWrapper) { return this.baseMapper.getList(portalPagination, queryWrapper); } @Override public PortalEntity getInfo(String id) { return this.baseMapper.getInfo(id); } @Override public Boolean isExistByFullName(String fullName, String id, String systemId) { return this.baseMapper.isExistByFullName(fullName, id, systemId); } @Override public Boolean isExistByEnCode(String enCode, String id) { return this.baseMapper.isExistByEnCode(enCode, id); } private Boolean isExistCommon(QueryWrapper queryWrapper, String id) { return this.baseMapper.isExistCommon(queryWrapper, id); } @Override public void setAutoEnCode(PortalEntity entity) { entity.setEnCode(CodeNumUtil.getCodeFunction(CodeConst.MH, code -> this.isExistByEnCode(code, null))); } @Override public void create(PortalEntity entity) { if (StringUtil.isEmpty(entity.getEnCode())) { setAutoEnCode(entity); } this.baseMapper.create(entity); } @Override public Boolean update(String id, PortalEntity entity) { if (StringUtil.isEmpty(entity.getEnCode())) { setAutoEnCode(entity); } return this.baseMapper.update(id, entity); } @Override public void delete(PortalEntity entity) throws Exception { portalDataMapper.deleteAll(entity.getId()); this.removeById(entity.getId()); } @Override public List getModSelectList() { SystemEntity systemEntity = systemApi.getInfoByEnCode(RequestContext.getAppCode()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(PortalEntity::getEnabledMark, 1); if (systemEntity != null) { queryWrapper.lambda().eq(PortalEntity::getSystemId, systemEntity.getId()); } else { return Collections.EMPTY_LIST; } List list = this.list(queryWrapper); return getModelList(list); } private List getModelList(List portalList) { List modelList = JsonUtil.getJsonToList(portalList, PortalSelectModel.class); // 外层菜单排序取数据字典 List dictionaryList = dictionaryDataApi.getListByCode(DictionaryDataEnum.VISUALDEV_PORTAL.getDictionaryTypeId()); for (DictionaryDataEntity dictionary : dictionaryList) { List models = modelList.stream().filter(model -> Objects.equals(model.getParentId(), dictionary.getId())).collect(Collectors.toList()); if (!models.isEmpty()) { PortalSelectModel model = new PortalSelectModel(); model.setId(dictionary.getId()); model.setFullName(dictionary.getFullName()); model.setParentId("0"); if (!modelList.contains(model)) { modelList.add(model); } } } return modelList; } @Override public List getModelList(PortalPagination pagination) { List data = this.getList(pagination); List userId = data.stream().map(t -> t.getCreatorUserId()).collect(Collectors.toList()); List lastUserId = data.stream().map(t -> t.getLastModifyUserId()).collect(Collectors.toList()); List userEntities = userApi.getUserName(userId); List lastUserIdEntities = userApi.getUserName(lastUserId); List dictionList = dictionaryDataApi.getListByCode(DictionaryDataEnum.VISUALDEV_PORTAL.getDictionaryTypeId()); List modelAll = new LinkedList<>(); // 发布判断 for (PortalEntity entity : data) { VisualFunctionModel model = JsonUtil.getJsonToBean(entity, VisualFunctionModel.class); DictionaryDataEntity dataEntity = dictionList.stream().filter(t -> t.getId().equals(entity.getCategory())).findFirst().orElse(null); if (dataEntity != null) { model.setCategory(dataEntity.getFullName()); UserEntity creatorUser = userEntities.stream().filter(t -> t.getId().equals(model.getCreatorUserId())).findFirst().orElse(null); if (creatorUser != null) { model.setCreatorUser(creatorUser.getRealName() + "/" + creatorUser.getAccount()); } else { model.setCreatorUser(""); } UserEntity lastmodifyuser = lastUserIdEntities.stream().filter(t -> t.getId().equals(model.getLastModifyUserId())).findFirst().orElse(null); if (lastmodifyuser != null) { model.setLastModifyUser(lastmodifyuser.getRealName() + "/" + lastmodifyuser.getAccount()); } else { model.setLastModifyUser(""); } if (Objects.isNull(model.getSortCode())) { model.setSortCode(0L); } model.setIsRelease(entity.getState()); modelAll.add(model); } } return modelAll.stream().sorted(Comparator.comparing(VisualFunctionModel::getSortCode)).collect(Collectors.toList()); } /** * 获取发布信息 * * @param id * @return */ public VisualFunctionModel getReleaseInfo(String id) { VisualFunctionModel model = new VisualFunctionModel(); model.setPcIsRelease(0); model.setAppIsRelease(0); model.setPcPortalIsRelease(0); model.setAppPortalIsRelease(0); ModuleNameVO moduleNameVO = moduleApi.getModuleNameList(id); if (moduleNameVO != null) { if (StringUtil.isNotEmpty(moduleNameVO.getPcNames())) { model.setPcIsRelease(1); model.setPcReleaseName(moduleNameVO.getPcNames()); } if (StringUtil.isNotEmpty(moduleNameVO.getAppNames())) { model.setAppIsRelease(1); model.setAppReleaseName(moduleNameVO.getAppNames()); } } return model; } @Override public List systemFilterList(String id, String category) { List list = systemApi.getList(new SystemApiListModel(null, true, true, true, true, new ArrayList<>())); List jsonToList = JsonUtil.getJsonToList(list, SystemListVO.class); return jsonToList; } }