Browse Source

[Fix-8836][UI Next][V1.0.0-Alpha] Rectify this issue about creating a file or directory with a wrong path. (#8892)

* fix this issue

* fix this issue

* fix code style

* fix code style
3.0.0/version-upgrade
calvin 2 years ago committed by GitHub
parent
commit
c7e80e42d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
  2. 7
      dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
  3. 18
      dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
  4. 2
      dolphinscheduler-ui-next/src/layouts/content/components/timezone/index.module.scss
  5. 7
      dolphinscheduler-ui-next/src/service/modules/resources/index.ts
  6. 3
      dolphinscheduler-ui-next/src/service/modules/resources/types.ts
  7. 19
      dolphinscheduler-ui-next/src/views/resource/file/index.tsx

22
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java

@ -748,4 +748,26 @@ public class ResourcesController extends BaseController {
Map<String, Object> result = resourceService.authorizedUDFFunction(loginUser, userId);
return returnDataList(result);
}
/**
* query resource by resource id
*
* @param loginUser login user
* @param id resource id
* @return resource
*/
@ApiOperation(value = "queryResourceById", notes = "QUERY_BY_RESOURCE_NAME")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType = "Int", example = "10")
})
@GetMapping(value = "/{id}/query")
@ResponseStatus(HttpStatus.OK)
@ApiException(RESOURCE_NOT_EXIST)
@AccessLogAnnotation(ignoreRequestArgs = "loginUser")
public Result queryResourceById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@PathVariable(value = "id", required = true) Integer id
) {
return resourceService.queryResourceById(id);
}
}

7
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java

@ -231,4 +231,11 @@ public interface ResourcesService {
*/
Map<String, Object> authorizedFile(User loginUser, Integer userId);
/**
* get resource by id
* @param resourceId resource id
* @return resource
*/
Result<Object> queryResourceById(Integer resourceId);
}

18
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java

@ -815,6 +815,24 @@ public class ResourcesServiceImpl extends BaseServiceImpl implements ResourcesSe
return result;
}
/**
* get resource by id
* @param id resource id
* @return resource
*/
@Override
public Result<Object> queryResourceById(Integer id) {
Result<Object> result = new Result<>();
Resource resource = resourcesMapper.selectById(id);
if (resource == null) {
putMsg(result, Status.RESOURCE_NOT_EXIST);
return result;
}
putMsg(result, Status.SUCCESS);
result.setData(resource);
return result;
}
/**
* view resource file online
*

2
dolphinscheduler-ui-next/src/layouts/content/components/timezone/index.module.scss

@ -15,7 +15,7 @@
* limitations under the License.
*/
.icon {
.icon {
margin: 0 12px;
}

7
dolphinscheduler-ui-next/src/service/modules/resources/index.ts

@ -55,6 +55,13 @@ export function queryResourceById(
})
}
export function queryCurrentResourceById(id: number): any {
return axios({
url: `/resources/${id}/query`,
method: 'get'
})
}
export function createResource(
data: CreateReq & FileNameReq & NameReq & ResourceTypeReq
): any {

3
dolphinscheduler-ui-next/src/service/modules/resources/types.ts

@ -137,5 +137,6 @@ export {
ResourceIdReq,
UdfFuncReq,
ResourceListRes,
ResourceViewRes
ResourceViewRes,
ResourceFile
}

19
dolphinscheduler-ui-next/src/views/resource/file/index.tsx

@ -45,6 +45,9 @@ import ResourceRenameModal from './rename'
import { IRenameFile } from './types'
import type { Router } from 'vue-router'
import styles from './index.module.scss'
import { useFileStore } from '@/store/file/file'
import { queryCurrentResourceById } from '@/service/modules/resources'
import { ResourceFile } from '@/service/modules/resources/types'
export default defineComponent({
name: 'File',
@ -142,6 +145,7 @@ export default defineComponent({
serachRef.value
)
}
const fileStore = useFileStore()
onMounted(() => {
resourceListRef.value = getResourceListState(fileId.value)
@ -150,7 +154,20 @@ export default defineComponent({
watch(
() => router.currentRoute.value.params.id,
// @ts-ignore
() => reload()
() => {
reload()
const currFileId = Number(router.currentRoute.value.params.id) || -1
if (currFileId === -1) {
fileStore.setCurrentDir('/')
} else {
queryCurrentResourceById(currFileId).then((res: ResourceFile) => {
if (res.fullName) {
fileStore.setCurrentDir(res.fullName)
}
})
}
}
)
return {

Loading…
Cancel
Save