Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Improvement][ui] improving to find current version identifier(#15815) #15933

Open
wants to merge 18 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
3a9e080
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 Apr 28, 2024
35f0aac
Merge branch 'apache:dev' into dev
pusl6 Apr 29, 2024
4ec8f9a
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 Apr 30, 2024
f808e70
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 Apr 30, 2024
00fbaca
Merge branch 'apache:dev' into dev
pusl6 May 6, 2024
b9fedfc
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 6, 2024
c02e79d
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 7, 2024
5043916
Merge branch 'dev' into dev
davidzollo May 8, 2024
db81822
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 8, 2024
a524f5e
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 11, 2024
a188699
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 11, 2024
1e7b930
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 15, 2024
d8b6741
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 22, 2024
e84feb3
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 28, 2024
e03491b
Merge branch 'dev' into dev
SbloodyS May 29, 2024
228a84c
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 May 29, 2024
234d61a
Merge remote-tracking branch 'origin/dev' into dev
pusl6 May 29, 2024
b2abdd2
[Improvement][ui] improving to find current version identifier(#15815)
pusl6 Jun 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

package org.apache.dolphinscheduler.api.controller;

import static org.apache.dolphinscheduler.api.enums.Status.QUERY_PLUGINS_ERROR;

import org.apache.dolphinscheduler.api.exceptions.ApiException;
import org.apache.dolphinscheduler.api.service.UiPluginService;
import org.apache.dolphinscheduler.api.utils.Result;
Expand All @@ -30,20 +28,16 @@

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.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 org.springframework.web.bind.annotation.*;
SbloodyS marked this conversation as resolved.
Show resolved Hide resolved

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;

import static org.apache.dolphinscheduler.api.enums.Status.*;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid wildcard import.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use mvn spotless:apply to fix these.


/**
* ui plugin controller
* Some plugins (such as alert plugin) need to provide UI interfaces to users.
Expand Down Expand Up @@ -85,4 +79,23 @@ public Result queryUiPluginDetailById(@Parameter(hidden = true) @RequestAttribut
Map<String, Object> result = uiPluginService.queryUiPluginDetailById(pluginId);
return returnDataList(result);
}

/**
* obtain project version and address
*
// * @param loginUser login user
// * @param userId token for user
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// * @param loginUser login user
// * @param userId token for user

* @return product info
*/
@Operation(summary = "queryProductInfo", description = "QUERY_PRODUCT_INFO")
@PostMapping(value = "/queryProductInfo")
ruanwenjun marked this conversation as resolved.
Show resolved Hide resolved
@ResponseStatus(HttpStatus.OK)
@ApiException(VERSION_INFO_STATE_ERROR)
public Result queryProductInfo(
@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam(value = "userId") int userId) {
loginUser.setId(1);
Map<String, Object> result = uiPluginService.queryProductInfo(loginUser, userId);
return returnDataList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ public enum Status {
QUERY_PROJECT_PREFERENCE_ERROR(10302, "query project preference error", "查询项目偏好设置错误"),
UPDATE_PROJECT_PREFERENCE_STATE_ERROR(10303, "Failed to update the state of the project preference", "更新项目偏好设置错误"),

VERSION_INFO_STATE_ERROR(10304, "Failed to obtain project version and address", "获取版本信息错误"),
UDF_FUNCTION_NOT_EXIST(20001, "UDF function not found", "UDF函数不存在"),
UDF_FUNCTION_EXISTS(20002, "UDF function already exists", "UDF函数已存在"),
RESOURCE_NOT_EXIST(20004, "resource not exist", "资源不存在"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@

package org.apache.dolphinscheduler.api.service;

import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.enums.PluginType;
import org.apache.dolphinscheduler.dao.entity.User;

import java.util.Map;

Expand All @@ -30,4 +32,6 @@ public interface UiPluginService {

Map<String, Object> queryUiPluginDetailById(int id);

Map<String, Object> queryProductInfo(User loginUser, int userId);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use a specific object rather than `Map<String, Object> as the service method result.


}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,17 @@

package org.apache.dolphinscheduler.api.service.impl;

import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.exceptions.ServiceException;
import org.apache.dolphinscheduler.api.service.UiPluginService;
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.common.enums.PluginType;
import org.apache.dolphinscheduler.common.utils.EncryptionUtils;
import org.apache.dolphinscheduler.dao.entity.PluginDefine;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.entity.Version;
import org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper;

import org.apache.commons.collections4.CollectionUtils;
Expand All @@ -32,9 +38,13 @@

import lombok.extern.slf4j.Slf4j;


import org.apache.dolphinscheduler.dao.mapper.VersionMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ACCESS_TOKEN_CREATE;

/**
* ui plugin service impl
*/
Expand All @@ -45,6 +55,9 @@ public class UiPluginServiceImpl extends BaseServiceImpl implements UiPluginServ
@Autowired
PluginDefineMapper pluginDefineMapper;

@Autowired
VersionMapper versionMapper;

@Override
public Map<String, Object> queryUiPluginsByType(PluginType pluginType) {
Map<String, Object> result = new HashMap<>();
Expand Down Expand Up @@ -82,4 +95,24 @@ public Map<String, Object> queryUiPluginDetailById(int id) {
return result;
}

@Override
public Map<String, Object> queryProductInfo(User loginUser, int userId) {

Map<String, Object> result = new HashMap<>();
// check if user is existed
if (userId <= 0 || !(loginUser.getId() == userId)) {
throw new ServiceException(Status.REQUEST_PARAMS_NOT_VALID_ERROR,
"User id: " + userId + " should not less than or equals to 0.");
}
// persist to the database
ruanwenjun marked this conversation as resolved.
Show resolved Hide resolved
Version versionInfo = versionMapper.selectById(1);
// if(StringUtils.isBlank(versionInfo.getVersion())){
// throw new ServiceException(Status.VERSION_INFO_STATE_ERROR);
// }
putMsg(result, Status.SUCCESS);
result.put(Constants.DATA_LIST, versionInfo.getVersion());

return result;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

Expand All @@ -31,8 +32,13 @@
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.PluginType;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
import org.apache.dolphinscheduler.dao.entity.User;

import org.mockito.Mockito;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MvcResult;
Expand All @@ -41,6 +47,9 @@

import com.google.common.collect.ImmutableMap;

import java.util.HashMap;
import java.util.Map;

/**
* ui plugin controller test
*/
Expand All @@ -53,6 +62,8 @@ public class UiPluginControllerTest extends AbstractControllerTest {
private static final ImmutableMap<String, Object> uiPluginServiceResult =
ImmutableMap.of(Constants.STATUS, Status.SUCCESS, Constants.DATA_LIST, "Test Data");

private static final Logger logger = LoggerFactory.getLogger(TenantControllerTest.class);

ruanwenjun marked this conversation as resolved.
Show resolved Hide resolved
@MockBean(name = "uiPluginService")
private UiPluginService uiPluginService;

Expand Down Expand Up @@ -91,4 +102,32 @@ public void testQueryUiPluginDetailById() throws Exception {
JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
assertThat(actualResponseContent.toString()).isEqualTo(expectResponseContent.toString());
}

@Test
public void testQueryProductInfo() throws Exception {
Map<String, Object> mockResult = new HashMap<>();
mockResult.put(Constants.STATUS, Status.SUCCESS);
Mockito.when(uiPluginService.queryProductInfo(Mockito.any(), Mockito.anyInt())).thenReturn(mockResult);

MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("userId", "1");

MvcResult mvcResult = mockMvc.perform(post("/ui-plugins/queryProductInfo")
.header(SESSION_ID, sessionId)
.params(paramsMap))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andReturn();

Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue());
logger.info(mvcResult.getResponse().getContentAsString());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't use log in UT

}

private User getLoginUser() {
User user = new User();
user.setId(1);
user.setUserName("admin");
return user;
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't add useless code

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't add useless code

Based on your proposal, I have made the following modifications:

  1. Remove the userid from the input parameter
  2. Change the query for version to selectVersion ()
  3. Remove log() and redundant methods in UT
    In addition, the queryProductInfo method in uiPluginService was submitted this time and there are no duplicate named methods in the project, so the method name has not been changed

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* 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 com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.apache.dolphinscheduler.common.enums.UserType;

import java.util.Date;

@Data
@TableName("t_ds_version")
public class Version {
ruanwenjun marked this conversation as resolved.
Show resolved Hide resolved

@TableId(value = "id", type = IdType.AUTO)
private Integer id;

private String version;

}
Original file line number Diff line number Diff line change
@@ -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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.entity.UserWithProcessDefinitionCode;
import org.apache.dolphinscheduler.dao.entity.Version;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
* user mapper interface
*/
public interface VersionMapper extends BaseMapper<Version> {
ruanwenjun marked this conversation as resolved.
Show resolved Hide resolved

/**
* select by user id
*/
Version selectById(int id);

}