package com.takai.system.service.impl; import com.takai.common.core.domain.entity.SysUser; import com.takai.common.enums.AppTypeEnum; import com.takai.common.enums.ProjectTypeEnum; import com.takai.common.utils.DateUtils; import com.takai.common.utils.SecurityUtils; import com.takai.common.utils.SnowflakeDigitGenerator; import com.takai.common.utils.StringUtils; import com.takai.system.domain.ProjectApplication; import com.takai.system.domain.SysProject; import com.takai.system.domain.SysProjectApp; import com.takai.system.domain.SysProjectStaff; import com.takai.system.mapper.SysProjectAppMapper; import com.takai.system.mapper.SysProjectMapper; import com.takai.system.mapper.SysProjectStaffMapper; import com.takai.system.service.ISysProjectService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; /** * 【请填写功能名称】Service业务层处理 * * @author takai * @date 2025-05-28 */ @Slf4j @Service public class SysProjectServiceImpl implements ISysProjectService { @Autowired private SysProjectMapper sysProjectMapper; @Autowired private SysProjectAppMapper sysProjectAppMapper; @Autowired private SysProjectStaffMapper sysProjectStaffMapper; /** * 查询【请填写功能名称】 * * @param projectId 【请填写功能名称】主键 * @return 【请填写功能名称】 */ @Override public SysProject selectSysProjectByProjectId(String projectId) { SysProject vo = sysProjectMapper.selectSysProjectByProjectId(projectId); if(vo!= null){ SysProjectApp params = new SysProjectApp(); params.setProjectId(projectId); List sysProjectApps = sysProjectAppMapper.selectSysProjectAppList(params); List appIds = new ArrayList<>(); for (SysProjectApp sysProjectApp : sysProjectApps){ appIds.add(sysProjectApp.getAppId()); } vo.setAppId(appIds.toArray(new String[appIds.size()])); } return vo; } /** * 查询【请填写功能名称】 * * @param projectPid 【请填写功能名称】主键 * @return 【请填写功能名称】 */ @Override public SysProject selectSysProjectByProjectPid(String projectPid) { return sysProjectMapper.selectSysProjectByProjectPid(projectPid); } /** * 查询【请填写功能名称】列表 * * @param sysProject 【请填写功能名称】 * @return 【请填写功能名称】 */ @Override public List selectSysProjectList(SysProject sysProject) { //管理员 获取所有项目 log.info("selectSysProjectList:SecurityUtils.getLoginUser()",SecurityUtils.getLoginUser()); SysUser loginUser = SecurityUtils.getLoginUser().getUser(); Map userParams = new HashMap<>(); userParams.put("userId",loginUser.getUserId()); log.info("selectSysProjectList:userId",loginUser.getUserId()); if(loginUser.getRoles().stream().anyMatch(role -> role.getRoleId() == 1)) { log.info("selectSysProjectList:isAdmin",true); userParams.put("isAdmin", true); } else { log.info("selectSysProjectList:isAdmin",false); userParams.put("isAdmin", false); } if(sysProject == null){ sysProject = new SysProject(); } sysProject.setParams(userParams); List list = sysProjectMapper.selectSysProjectList(sysProject); for (SysProject sysProjects : list){ if(sysProjects.getSourceFrom() != null) { if(ProjectTypeEnum.HJL.getClientId().equals(sysProjects.getSourceFrom())) { sysProjects.setSourceFromName(ProjectTypeEnum.HJL.getInfo()); } else if (ProjectTypeEnum.HXG.getClientId().equals(sysProjects.getSourceFrom())) { sysProjects.setSourceFromName(ProjectTypeEnum.HXG.getInfo()); } } SysProjectApp params = new SysProjectApp(); params.setProjectId(String.valueOf(sysProjects.getProjectId())); List sysProjectApps = sysProjectAppMapper.selectSysProjectApplicationList(params); List names = new ArrayList<>(); for (ProjectApplication sysProjectApp : sysProjectApps){ if(sysProjectApp != null) { names.add(sysProjectApp.getAppName()); } } sysProjects.setName(names.toArray(new String[names.size()])); sysProjects.setApplications(sysProjectApps); } return list; } /** * 新增【请填写功能名称】 * * @param sysProject 【请填写功能名称】 * @return 结果 */ @Override public int insertSysProject(SysProject sysProject) { if(StringUtils.isEmpty(sysProject.getProjectPid())) { SnowflakeDigitGenerator snowflakeDigitGenerator = new SnowflakeDigitGenerator(1, 1); long projectPId = snowflakeDigitGenerator.nextId(); sysProject.setProjectPid(String.valueOf(projectPId)); } sysProject.setCreateTime(DateUtils.getNowDate()); int i = sysProjectMapper.insertSysProject(sysProject); if(i > 0 && sysProject.getAppId() != null){ for (String appId : sysProject.getAppId()){ SysProjectApp sysProjectApp = new SysProjectApp(); sysProjectApp.setProjectId(String.valueOf(sysProject.getProjectId())); sysProjectApp.setAppId(appId); sysProjectAppMapper.insertSysProjectApp(sysProjectApp); } } return i; } /** * 修改【请填写功能名称】 * * @param sysProject 【请填写功能名称】 * @return 结果 */ @Override public int updateSysProject(SysProject sysProject) { sysProject.setUpdateTime(DateUtils.getNowDate()); int i = sysProjectMapper.updateSysProject(sysProject); if(i > 0){ int successI = sysProjectAppMapper.deleteSysProjectAppByProjectId(String.valueOf(sysProject.getProjectId())); if(successI > 0){ for (String appId : sysProject.getAppId()){ SysProjectApp sysProjectApp = new SysProjectApp(); sysProjectApp.setProjectId(String.valueOf(sysProject.getProjectId())); sysProjectApp.setAppId(appId); sysProjectAppMapper.insertSysProjectApp(sysProjectApp); } } } return i; } /** * 批量删除【请填写功能名称】 * * @param projectIds 需要删除的【请填写功能名称】主键 * @return 结果 */ @Override public int deleteSysProjectByProjectIds(String[] projectIds) { List projects = new ArrayList<>(); for(String projectId:projectIds) { SysProject sysProject = sysProjectMapper.selectSysProjectByProjectId(projectId); projects.add(sysProject); } List projectPids = projects.stream() .filter(Objects::nonNull) .map(SysProject::getProjectPid) .collect(Collectors.toList()); int i = sysProjectMapper.deleteSysProjectByProjectIds(projectIds); if(i > 0){ sysProjectAppMapper.deleteSysProjectAppByProjectIds(projectIds); sysProjectStaffMapper.deleteSysProjectStaffByProjectPids(projectPids); } return i; } /** * 删除【请填写功能名称】信息 * * @param projectId 【请填写功能名称】主键 * @return 结果 */ @Override public int deleteSysProjectByProjectId(String projectId, String appId) { return sysProjectMapper.deleteSysProjectByProjectId(projectId); } }