Rick Cheng
1 year ago
committed by
GitHub
13 changed files with 766 additions and 3 deletions
@ -0,0 +1,169 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.api.controller; |
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.CREATE_PROJECT_PARAMETER_ERROR; |
||||
import static org.apache.dolphinscheduler.api.enums.Status.DELETE_PROJECT_PARAMETER_ERROR; |
||||
import static org.apache.dolphinscheduler.api.enums.Status.QUERY_PROJECT_PARAMETER_ERROR; |
||||
import static org.apache.dolphinscheduler.api.enums.Status.UPDATE_PROJECT_PARAMETER_ERROR; |
||||
|
||||
import org.apache.dolphinscheduler.api.aspect.AccessLogAnnotation; |
||||
import org.apache.dolphinscheduler.api.exceptions.ApiException; |
||||
import org.apache.dolphinscheduler.api.service.ProjectParameterService; |
||||
import org.apache.dolphinscheduler.api.utils.Result; |
||||
import org.apache.dolphinscheduler.common.constants.Constants; |
||||
import org.apache.dolphinscheduler.dao.entity.User; |
||||
import org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils; |
||||
|
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.http.HttpStatus; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.PathVariable; |
||||
import org.springframework.web.bind.annotation.PostMapping; |
||||
import org.springframework.web.bind.annotation.PutMapping; |
||||
import org.springframework.web.bind.annotation.RequestAttribute; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RequestParam; |
||||
import org.springframework.web.bind.annotation.ResponseStatus; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
import io.swagger.v3.oas.annotations.Parameter; |
||||
import io.swagger.v3.oas.annotations.Parameters; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
|
||||
@Tag(name = "PROJECT_PARAMETER_TAG") |
||||
@RestController |
||||
@RequestMapping("projects/{projectCode}/project-parameter") |
||||
@Slf4j |
||||
public class ProjectParameterController extends BaseController { |
||||
|
||||
@Autowired |
||||
private ProjectParameterService projectParameterService; |
||||
|
||||
@Operation(summary = "createProjectParameter", description = "CREATE_PROJECT_PARAMETER_NOTES") |
||||
@Parameters({ |
||||
@Parameter(name = "projectParameterName", description = "PROJECT_PARAMETER_NAME", schema = @Schema(implementation = String.class)), |
||||
@Parameter(name = "projectParameterValue", description = "PROJECT_PARAMETER_VALUE", schema = @Schema(implementation = String.class)) |
||||
}) |
||||
@PostMapping() |
||||
@ResponseStatus(HttpStatus.CREATED) |
||||
@ApiException(CREATE_PROJECT_PARAMETER_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result createProjectParameter(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode, |
||||
@RequestParam("projectParameterName") String projectParameterName, |
||||
@RequestParam(value = "projectParameterValue") String projectParameterValue) { |
||||
return projectParameterService.createProjectParameter(loginUser, projectCode, projectParameterName, |
||||
projectParameterValue); |
||||
} |
||||
|
||||
@Operation(summary = "updateProjectParameter", description = "UPDATE_PROJECT_PARAMETER_NOTES") |
||||
@Parameters({ |
||||
@Parameter(name = "code", description = "PROJECT_PARAMETER_CODE", schema = @Schema(implementation = long.class, example = "123456")), |
||||
@Parameter(name = "projectParameterName", description = "PROJECT_PARAMETER_NAME", schema = @Schema(implementation = String.class)), |
||||
@Parameter(name = "projectParameterValue", description = "PROJECT_PARAMETER_VALUE", schema = @Schema(implementation = String.class)), |
||||
}) |
||||
@PutMapping(value = "/{code}") |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(UPDATE_PROJECT_PARAMETER_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result updateProjectParameter(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode, |
||||
@PathVariable("code") Long code, |
||||
@RequestParam("projectParameterName") String projectParameterName, |
||||
@RequestParam(value = "projectParameterValue") String projectParameterValue) { |
||||
return projectParameterService.updateProjectParameter(loginUser, projectCode, code, projectParameterName, |
||||
projectParameterValue); |
||||
} |
||||
|
||||
@Operation(summary = "deleteProjectParametersByCode", description = "DELETE_PROJECT_PARAMETER_NOTES") |
||||
@Parameters({ |
||||
@Parameter(name = "code", description = "PROJECT_PARAMETER_CODE", required = true, schema = @Schema(implementation = String.class)) |
||||
}) |
||||
@PostMapping(value = "/delete") |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(DELETE_PROJECT_PARAMETER_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result deleteProjectParametersByCode(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode, |
||||
@RequestParam("code") long code) { |
||||
|
||||
return projectParameterService.deleteProjectParametersByCode(loginUser, projectCode, code); |
||||
} |
||||
|
||||
@Operation(summary = "batchDeleteProjectParametersByCodes", description = "DELETE_PROJECT_PARAMETER_NOTES") |
||||
@Parameters({ |
||||
@Parameter(name = "codes", description = "PROJECT_PARAMETER_CODE", required = true, schema = @Schema(implementation = String.class)) |
||||
}) |
||||
@PostMapping(value = "/batch-delete") |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(DELETE_PROJECT_PARAMETER_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result batchDeleteProjectParametersByCodes(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode, |
||||
@RequestParam("codes") String codes) { |
||||
|
||||
return projectParameterService.batchDeleteProjectParametersByCodes(loginUser, projectCode, codes); |
||||
} |
||||
|
||||
@Operation(summary = "queryProjectParameterListPaging", description = "QUERY_PROJECT_PARAMETER_LIST_PAGING_NOTES") |
||||
@Parameters({ |
||||
@Parameter(name = "searchVal", description = "SEARCH_VAL", required = false, schema = @Schema(implementation = String.class)), |
||||
@Parameter(name = "pageNo", description = "PAGE_NO", required = true, schema = @Schema(implementation = int.class, example = "1")), |
||||
@Parameter(name = "pageSize", description = "PAGE_SIZE", required = true, schema = @Schema(implementation = int.class, example = "10")) |
||||
}) |
||||
@GetMapping() |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(QUERY_PROJECT_PARAMETER_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result queryProjectParameterListPaging( |
||||
@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode, |
||||
@RequestParam(value = "searchVal", required = false) String searchVal, |
||||
@RequestParam("pageNo") Integer pageNo, |
||||
@RequestParam("pageSize") Integer pageSize) { |
||||
|
||||
Result result = checkPageParams(pageNo, pageSize); |
||||
if (!result.checkResult()) { |
||||
log.warn("Pagination parameters check failed, pageNo:{}, pageSize:{}", pageNo, pageSize); |
||||
return result; |
||||
} |
||||
searchVal = ParameterUtils.handleEscapes(searchVal); |
||||
return projectParameterService.queryProjectParameterListPaging(loginUser, projectCode, pageSize, pageNo, |
||||
searchVal); |
||||
} |
||||
|
||||
@Operation(summary = "queryProjectParameterByCode", description = "QUERY_PROJECT_PARAMETER_NOTES") |
||||
@Parameters({ |
||||
@Parameter(name = "code", description = "PROJECT_PARAMETER_CODE", schema = @Schema(implementation = long.class, example = "123456")) |
||||
}) |
||||
@GetMapping(value = "/{code}") |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(QUERY_PROJECT_PARAMETER_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result queryProjectParameterByCode(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode, |
||||
@PathVariable("code") long code) { |
||||
return projectParameterService.queryProjectParameterByCode(loginUser, projectCode, code); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,39 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.api.service; |
||||
|
||||
import org.apache.dolphinscheduler.api.utils.Result; |
||||
import org.apache.dolphinscheduler.dao.entity.User; |
||||
|
||||
public interface ProjectParameterService { |
||||
|
||||
Result createProjectParameter(User loginUser, long projectCode, String projectParameterName, |
||||
String projectParameterValue); |
||||
|
||||
Result updateProjectParameter(User loginUser, long projectCode, long code, String projectParameterName, |
||||
String projectParameterValue); |
||||
|
||||
Result deleteProjectParametersByCode(User loginUser, long projectCode, long code); |
||||
|
||||
Result batchDeleteProjectParametersByCodes(User loginUser, long projectCode, String codes); |
||||
|
||||
Result queryProjectParameterListPaging(User loginUser, long projectCode, Integer pageSize, Integer pageNo, |
||||
String searchVal); |
||||
|
||||
Result queryProjectParameterByCode(User loginUser, long projectCode, long code); |
||||
} |
@ -0,0 +1,275 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.api.service.impl; |
||||
|
||||
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.PROJECT; |
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status; |
||||
import org.apache.dolphinscheduler.api.exceptions.ServiceException; |
||||
import org.apache.dolphinscheduler.api.service.ProjectParameterService; |
||||
import org.apache.dolphinscheduler.api.service.ProjectService; |
||||
import org.apache.dolphinscheduler.api.utils.PageInfo; |
||||
import org.apache.dolphinscheduler.api.utils.Result; |
||||
import org.apache.dolphinscheduler.common.constants.Constants; |
||||
import org.apache.dolphinscheduler.common.utils.CodeGenerateUtils; |
||||
import org.apache.dolphinscheduler.dao.entity.Project; |
||||
import org.apache.dolphinscheduler.dao.entity.ProjectParameter; |
||||
import org.apache.dolphinscheduler.dao.entity.User; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProjectParameterMapper; |
||||
|
||||
import org.apache.commons.collections4.CollectionUtils; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
|
||||
import java.util.Date; |
||||
import java.util.List; |
||||
import java.util.Set; |
||||
import java.util.stream.Collectors; |
||||
|
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.transaction.annotation.Transactional; |
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.google.common.collect.Lists; |
||||
|
||||
@Service |
||||
@Slf4j |
||||
public class ProjectParameterServiceImpl extends BaseServiceImpl implements ProjectParameterService { |
||||
|
||||
@Autowired |
||||
private ProjectParameterMapper projectParameterMapper; |
||||
|
||||
@Autowired |
||||
private ProjectService projectService; |
||||
|
||||
@Autowired |
||||
private ProjectMapper projectMapper; |
||||
|
||||
@Override |
||||
@Transactional |
||||
public Result createProjectParameter(User loginUser, long projectCode, String projectParameterName, |
||||
String projectParameterValue) { |
||||
Result result = new Result(); |
||||
|
||||
// check if user have write perm for project
|
||||
Project project = projectMapper.queryByCode(projectCode); |
||||
boolean hasProjectAndWritePerm = projectService.hasProjectAndWritePerm(loginUser, project, result); |
||||
if (!hasProjectAndWritePerm) { |
||||
return result; |
||||
} |
||||
|
||||
ProjectParameter projectParameter = projectParameterMapper.queryByName(projectParameterName); |
||||
if (projectParameter != null) { |
||||
log.warn("ProjectParameter {} already exists.", projectParameter.getParamName()); |
||||
putMsg(result, Status.PROJECT_PARAMETER_ALREADY_EXISTS, projectParameter.getParamName()); |
||||
return result; |
||||
} |
||||
|
||||
Date now = new Date(); |
||||
|
||||
try { |
||||
projectParameter = ProjectParameter |
||||
.builder() |
||||
.paramName(projectParameterName) |
||||
.paramValue(projectParameterValue) |
||||
.code(CodeGenerateUtils.getInstance().genCode()) |
||||
.projectCode(projectCode) |
||||
.userId(loginUser.getId()) |
||||
.createTime(now) |
||||
.updateTime(now) |
||||
.build(); |
||||
} catch (CodeGenerateUtils.CodeGenerateException e) { |
||||
log.error("Generate project parameter code error.", e); |
||||
putMsg(result, Status.CREATE_PROJECT_PARAMETER_ERROR); |
||||
return result; |
||||
} |
||||
|
||||
if (projectParameterMapper.insert(projectParameter) > 0) { |
||||
log.info("Project parameter is created and id is :{}", projectParameter.getId()); |
||||
result.setData(projectParameter); |
||||
putMsg(result, Status.SUCCESS); |
||||
} else { |
||||
log.error("Project parameter create error, projectName:{}.", projectParameter.getParamName()); |
||||
putMsg(result, Status.CREATE_PROJECT_PARAMETER_ERROR); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public Result updateProjectParameter(User loginUser, long projectCode, long code, String projectParameterName, |
||||
String projectParameterValue) { |
||||
Result result = new Result(); |
||||
|
||||
// check if user have write perm for project
|
||||
Project project = projectMapper.queryByCode(projectCode); |
||||
boolean hasProjectAndWritePerm = projectService.hasProjectAndWritePerm(loginUser, project, result); |
||||
if (!hasProjectAndWritePerm) { |
||||
return result; |
||||
} |
||||
|
||||
ProjectParameter projectParameter = projectParameterMapper.queryByCode(code); |
||||
// check project parameter exists
|
||||
if (projectParameter == null || projectCode != projectParameter.getProjectCode()) { |
||||
log.error("Project parameter does not exist, code:{}.", code); |
||||
putMsg(result, Status.PROJECT_PARAMETER_NOT_EXISTS, String.valueOf(code)); |
||||
return result; |
||||
} |
||||
|
||||
// check if project parameter name exists
|
||||
ProjectParameter tempProjectParameter = projectParameterMapper.queryByName(projectParameterName); |
||||
if (tempProjectParameter != null) { |
||||
log.error("Project parameter name {} already exists", projectParameterName); |
||||
putMsg(result, Status.PROJECT_PARAMETER_ALREADY_EXISTS, projectParameterName); |
||||
return result; |
||||
} |
||||
|
||||
projectParameter.setParamName(projectParameterName); |
||||
projectParameter.setParamValue(projectParameterValue); |
||||
|
||||
if (projectParameterMapper.updateById(projectParameter) > 0) { |
||||
log.info("Project parameter is updated and id is :{}", projectParameter.getId()); |
||||
result.setData(projectParameter); |
||||
putMsg(result, Status.SUCCESS); |
||||
} else { |
||||
log.error("Project parameter update error, {}.", projectParameterName); |
||||
putMsg(result, Status.UPDATE_PROJECT_PARAMETER_ERROR); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public Result deleteProjectParametersByCode(User loginUser, long projectCode, long code) { |
||||
Result result = new Result(); |
||||
|
||||
// check if user have write perm for project
|
||||
Project project = projectMapper.queryByCode(projectCode); |
||||
boolean hasProjectAndWritePerm = projectService.hasProjectAndWritePerm(loginUser, project, result); |
||||
if (!hasProjectAndWritePerm) { |
||||
return result; |
||||
} |
||||
|
||||
ProjectParameter projectParameter = projectParameterMapper.queryByCode(code); |
||||
// check project parameter exists
|
||||
if (projectParameter == null || projectCode != projectParameter.getProjectCode()) { |
||||
log.error("Project parameter does not exist, code:{}.", code); |
||||
putMsg(result, Status.PROJECT_PARAMETER_NOT_EXISTS, String.valueOf(code)); |
||||
return result; |
||||
} |
||||
|
||||
// TODO: check project parameter is used by workflow
|
||||
|
||||
if (projectParameterMapper.deleteById(projectParameter.getId()) > 0) { |
||||
log.info("Project parameter is deleted and id is :{}.", projectParameter.getId()); |
||||
result.setData(Boolean.TRUE); |
||||
putMsg(result, Status.SUCCESS); |
||||
} else { |
||||
log.error("Project parameter delete error, {}.", projectParameter.getParamName()); |
||||
putMsg(result, Status.DELETE_PROJECT_PARAMETER_ERROR); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public Result batchDeleteProjectParametersByCodes(User loginUser, long projectCode, String codes) { |
||||
Result result = new Result(); |
||||
|
||||
if (StringUtils.isEmpty(codes)) { |
||||
log.error("Project parameter codes is empty, projectCode is {}.", projectCode); |
||||
putMsg(result, Status.PROJECT_PARAMETER_CODE_EMPTY); |
||||
return result; |
||||
} |
||||
|
||||
Set<Long> requestCodeSet = Lists.newArrayList(codes.split(Constants.COMMA)).stream().map(Long::parseLong) |
||||
.collect(Collectors.toSet()); |
||||
List<ProjectParameter> projectParameterList = projectParameterMapper.queryByCodes(requestCodeSet); |
||||
Set<Long> actualCodeSet = |
||||
projectParameterList.stream().map(ProjectParameter::getCode).collect(Collectors.toSet()); |
||||
// requestCodeSet - actualCodeSet
|
||||
Set<Long> diffCode = |
||||
requestCodeSet.stream().filter(code -> !actualCodeSet.contains(code)).collect(Collectors.toSet()); |
||||
|
||||
String diffCodeString = diffCode.stream().map(String::valueOf).collect(Collectors.joining(Constants.COMMA)); |
||||
if (CollectionUtils.isNotEmpty(diffCode)) { |
||||
log.error("Project parameter does not exist, codes:{}.", diffCodeString); |
||||
throw new ServiceException(Status.PROJECT_PARAMETER_NOT_EXISTS, diffCodeString); |
||||
} |
||||
|
||||
for (ProjectParameter projectParameter : projectParameterList) { |
||||
try { |
||||
this.deleteProjectParametersByCode(loginUser, projectCode, projectParameter.getCode()); |
||||
} catch (Exception e) { |
||||
throw new ServiceException(Status.DELETE_PROJECT_PARAMETER_ERROR, e.getMessage()); |
||||
} |
||||
} |
||||
|
||||
putMsg(result, Status.SUCCESS); |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public Result queryProjectParameterListPaging(User loginUser, long projectCode, Integer pageSize, Integer pageNo, |
||||
String searchVal) { |
||||
Result result = new Result(); |
||||
|
||||
Project project = projectMapper.queryByCode(projectCode); |
||||
boolean hasProjectAndPerm = projectService.hasProjectAndPerm(loginUser, project, result, PROJECT); |
||||
if (!hasProjectAndPerm) { |
||||
return result; |
||||
} |
||||
|
||||
PageInfo<ProjectParameter> pageInfo = new PageInfo<>(pageNo, pageSize); |
||||
Page<ProjectParameter> page = new Page<>(pageNo, pageSize); |
||||
|
||||
IPage<ProjectParameter> iPage = |
||||
projectParameterMapper.queryProjectParameterListPaging(page, null, searchVal); |
||||
|
||||
List<ProjectParameter> projectParameterList = iPage.getRecords(); |
||||
|
||||
pageInfo.setTotal((int) iPage.getTotal()); |
||||
pageInfo.setTotalList(projectParameterList); |
||||
result.setData(pageInfo); |
||||
putMsg(result, Status.SUCCESS); |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public Result queryProjectParameterByCode(User loginUser, long projectCode, long code) { |
||||
Result result = new Result(); |
||||
|
||||
Project project = projectMapper.queryByCode(projectCode); |
||||
boolean hasProjectAndPerm = projectService.hasProjectAndPerm(loginUser, project, result, PROJECT); |
||||
if (!hasProjectAndPerm) { |
||||
return result; |
||||
} |
||||
|
||||
ProjectParameter projectParameter = projectParameterMapper.queryByCode(code); |
||||
if (projectParameter == null || projectCode != projectParameter.getProjectCode()) { |
||||
log.error("Project parameter does not exist, code:{}.", code); |
||||
putMsg(result, Status.PROJECT_PARAMETER_NOT_EXISTS, String.valueOf(code)); |
||||
return result; |
||||
} |
||||
|
||||
result.setData(projectParameter); |
||||
putMsg(result, Status.SUCCESS); |
||||
return result; |
||||
} |
||||
} |
@ -0,0 +1,59 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.dao.entity; |
||||
|
||||
import java.util.Date; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType; |
||||
import com.baomidou.mybatisplus.annotation.TableField; |
||||
import com.baomidou.mybatisplus.annotation.TableId; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
||||
@Data |
||||
@Builder |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
@TableName("t_ds_project_parameter") |
||||
public class ProjectParameter { |
||||
|
||||
@TableId(value = "id", type = IdType.AUTO) |
||||
private Integer id; |
||||
|
||||
@TableField("user_id") |
||||
private Integer userId; |
||||
|
||||
private long code; |
||||
|
||||
@TableField("project_code") |
||||
private long projectCode; |
||||
|
||||
@TableField("param_name") |
||||
private String paramName; |
||||
|
||||
@TableField("param_value") |
||||
private String paramValue; |
||||
|
||||
private Date createTime; |
||||
|
||||
private Date updateTime; |
||||
} |
@ -0,0 +1,41 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.dao.mapper; |
||||
|
||||
import org.apache.dolphinscheduler.dao.entity.ProjectParameter; |
||||
|
||||
import org.apache.ibatis.annotations.Param; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.List; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
||||
public interface ProjectParameterMapper extends BaseMapper<ProjectParameter> { |
||||
|
||||
ProjectParameter queryByCode(@Param("code") long code); |
||||
|
||||
List<ProjectParameter> queryByCodes(@Param("codes") Collection<Long> codes); |
||||
|
||||
ProjectParameter queryByName(@Param("paramName") String paramName); |
||||
|
||||
IPage<ProjectParameter> queryProjectParameterListPaging(IPage<ProjectParameter> page, |
||||
@Param("projectParameterIds") List<Integer> projectParameterIds, |
||||
@Param("searchName") String searchName); |
||||
} |
@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?> |
||||
<!-- |
||||
~ Licensed to the Apache Software Foundation (ASF) under one or more |
||||
~ contributor license agreements. See the NOTICE file distributed with |
||||
~ this work for additional information regarding copyright ownership. |
||||
~ The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
~ (the "License"); you may not use this file except in compliance with |
||||
~ the License. You may obtain a copy of the License at |
||||
~ |
||||
~ http://www.apache.org/licenses/LICENSE-2.0 |
||||
~ |
||||
~ Unless required by applicable law or agreed to in writing, software |
||||
~ distributed under the License is distributed on an "AS IS" BASIS, |
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
~ See the License for the specific language governing permissions and |
||||
~ limitations under the License. |
||||
--> |
||||
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||
<mapper namespace="org.apache.dolphinscheduler.dao.mapper.ProjectParameterMapper"> |
||||
<sql id="baseSql"> |
||||
id, param_name, param_value, code, project_code, user_id, create_time, update_time |
||||
</sql> |
||||
|
||||
<select id="queryByCode" resultType="org.apache.dolphinscheduler.dao.entity.ProjectParameter"> |
||||
select |
||||
<include refid="baseSql"/> |
||||
from t_ds_project_parameter |
||||
where code = #{code} |
||||
</select> |
||||
|
||||
<select id="queryByCodes" resultType="org.apache.dolphinscheduler.dao.entity.ProjectParameter"> |
||||
select |
||||
<include refid="baseSql"/> |
||||
from t_ds_project_parameter |
||||
where 1 = 1 |
||||
<if test="codes != null and codes.size() != 0"> |
||||
and code in |
||||
<foreach collection="codes" index="index" item="i" open="(" separator="," close=")"> |
||||
#{i} |
||||
</foreach> |
||||
</if> |
||||
</select> |
||||
|
||||
<select id="queryByName" resultType="org.apache.dolphinscheduler.dao.entity.ProjectParameter"> |
||||
select |
||||
<include refid="baseSql"/> |
||||
from t_ds_project_parameter |
||||
where param_name = #{paramName} |
||||
</select> |
||||
|
||||
<select id="queryProjectParameterListPaging" resultType="org.apache.dolphinscheduler.dao.entity.ProjectParameter"> |
||||
select |
||||
<include refid="baseSql"/> |
||||
from t_ds_project_parameter |
||||
where 1=1 |
||||
<if test="projectParameterIds != null and projectParameterIds.size() > 0"> |
||||
and id in |
||||
<foreach item="id" index="index" collection="projectParameterIds" open="(" separator="," close=")"> |
||||
#{id} |
||||
</foreach> |
||||
</if> |
||||
<if test="searchName!=null and searchName != ''"> |
||||
AND (param_name LIKE concat('%', #{searchName}, '%') |
||||
OR param_value LIKE concat('%', #{searchName}, '%') |
||||
) |
||||
</if> |
||||
order by id desc |
||||
</select> |
||||
|
||||
</mapper> |
Loading…
Reference in new issue