diff --git a/gringotts-frontend/components/constants.js b/gringotts-frontend/components/constants.js index 2adc9f3..47be294 100644 --- a/gringotts-frontend/components/constants.js +++ b/gringotts-frontend/components/constants.js @@ -1,5 +1,5 @@ const information = { - debug: true, + debug: false, // baseUrl: '', baseUrl: 'http://127.0.0.1:20080', title: '可信供给中心', @@ -269,3 +269,38 @@ export function formInputMultiFileStatic(field, label) { columns: formInputFileStaticColumns, } } + +export function formCreatedUserAndModifiedUser() { + return [ + { + type: 'group', + body: [ + { + type: 'input-text', + name: 'createdUsername', + label: '创建人', + }, + { + type: 'input-datetime', + name: 'createdTime', + label: '创建时间', + }, + ] + }, + { + type: 'group', + body: [ + { + type: 'input-text', + name: 'modifiedUsername', + label: '最后修改人', + }, + { + type: 'input-datetime', + name: 'modifiedTime', + label: '最后修改时间', + }, + ] + }, + ] +} diff --git a/gringotts-frontend/components/permission/dialog-permission.js b/gringotts-frontend/components/permission/dialog-permission.js index 1d76374..7d973af 100644 --- a/gringotts-frontend/components/permission/dialog-permission.js +++ b/gringotts-frontend/components/permission/dialog-permission.js @@ -2,6 +2,7 @@ import './dialog-permission.css' import { apiGet, apiPost, + formCreatedUserAndModifiedUser, formInputClearable, formInputMultiFileStatic, horizontalFormOptions, @@ -10,7 +11,7 @@ import { } from "../constants.js"; import {resourceList} from "../../pages/index/tab-data.js"; -function detailForm() { +function detailForm(showCreatedUserAndModifiedUser = false) { return { id: 'permission_form', type: 'form', @@ -53,7 +54,8 @@ function detailForm() { required: true, joinValues: false, ...inputFileFormItemCommonOptions(undefined, size100MB), - } + }, + ...(showCreatedUserAndModifiedUser ? formCreatedUserAndModifiedUser() : []) ] } } @@ -94,7 +96,7 @@ export function permissionDetailDialog(field = 'id') { size: 'md', actions: [], body: { - ...detailForm(), + ...detailForm(true), initApi: apiGet(`\${base}/confirmation/detail/\${${field}}`), static: true, data: { diff --git a/gringotts-frontend/components/resource/dialog-resource.js b/gringotts-frontend/components/resource/dialog-resource.js index c7010bf..33fd40f 100644 --- a/gringotts-frontend/components/resource/dialog-resource.js +++ b/gringotts-frontend/components/resource/dialog-resource.js @@ -2,6 +2,7 @@ import './dialog-resource.css' import { apiGet, apiPost, + formCreatedUserAndModifiedUser, formInputClearable, formInputSingleFileStatic, horizontalFormOptions, @@ -10,7 +11,7 @@ import { size500MB } from "../constants.js"; -function detailForm() { +function detailForm(showCreatedUserAndModifiedUser = false) { return { type: 'form', ...horizontalFormOptions(), @@ -292,7 +293,8 @@ function detailForm() { ...inputFileFormItemCommonOptions(undefined, size500MB), }, ] - } + }, + ...(showCreatedUserAndModifiedUser ? formCreatedUserAndModifiedUser() : []) ] } } @@ -333,7 +335,7 @@ export function resourceDetailDialog() { actions: [], size: 'md', body: { - ...detailForm(), + ...detailForm(true), static: true, initApi: apiGet('${base}/data_resource/detail/${id}'), data: { diff --git a/gringotts-frontend/components/user/dialog-user-check.js b/gringotts-frontend/components/user/dialog-user-check.js index 89c0366..2ab0114 100644 --- a/gringotts-frontend/components/user/dialog-user-check.js +++ b/gringotts-frontend/components/user/dialog-user-check.js @@ -1,4 +1,11 @@ -import {apiGet, horizontalFormOptions, mappingField, userRoleMapping, userStateMapping} from "../constants.js"; +import { + apiGet, + formCreatedUserAndModifiedUser, + horizontalFormOptions, + mappingField, + userRoleMapping, + userStateMapping +} from "../constants.js"; const dialogBody = [ { @@ -27,36 +34,7 @@ const dialogBody = [ }, ] }, - { - type: 'group', - body: [ - { - type: 'input-text', - name: 'createdUsername', - label: '创建人', - }, - { - type: 'input-datetime', - name: 'createdTime', - label: '创建时间', - }, - ] - }, - { - type: 'group', - body: [ - { - type: 'input-text', - name: 'modifiedUsername', - label: '最后修改人', - }, - { - type: 'input-datetime', - name: 'modifiedTime', - label: '最后修改时间', - }, - ] - }, + ...formCreatedUserAndModifiedUser(), { type: 'group', body: [ diff --git a/gringotts-frontend/components/user/dialog-user-register.js b/gringotts-frontend/components/user/dialog-user-register.js index a250708..df3a445 100644 --- a/gringotts-frontend/components/user/dialog-user-register.js +++ b/gringotts-frontend/components/user/dialog-user-register.js @@ -79,7 +79,6 @@ export function userAdministratorRegisterDialog() { { label: '数据提供方', value: 'PROVIDER' }, { label: '数据使用方', value: 'CUSTOMER' }, { label: '审查监管方', value: 'CHECKER' }, - { label: '系统管理员', value: 'ADMINISTRATOR' }, ], }, ], diff --git a/gringotts-frontend/pages/index/main.js b/gringotts-frontend/pages/index/main.js index c832177..84f0bbd 100644 --- a/gringotts-frontend/pages/index/main.js +++ b/gringotts-frontend/pages/index/main.js @@ -59,8 +59,8 @@ useAmis(information => { tabs: [ // tabOverview(), // tabMarket(), - tabPermissions(), tabData(), + tabPermissions(), tabCheck(), tabUser(), tabSettings(), diff --git a/gringotts-frontend/pages/index/tab-data.js b/gringotts-frontend/pages/index/tab-data.js index 941ef03..35d46d0 100644 --- a/gringotts-frontend/pages/index/tab-data.js +++ b/gringotts-frontend/pages/index/tab-data.js @@ -19,9 +19,6 @@ export function resourceList() { ...resourceAddDialog() }, ], - rowSelection: { - disableOn: '${confirmationId}', - }, columns: [ { label: '名称', diff --git a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/base/service/SimpleService.java b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/base/service/SimpleService.java index 69c70a7..3ff4391 100644 --- a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/base/service/SimpleService.java +++ b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/base/service/SimpleService.java @@ -51,32 +51,60 @@ public abstract class SimpleService { } public ImmutableSet list() { - return Sets.immutable.ofAll(repository.findAll()); + User user = userService.currentLoginUser(); + return Sets.immutable.ofAll(repository.findAll( + (root, query, builder) -> builder.equal(root.get("createdUser"), user) + )); } public ImmutableSet list(ImmutableSet ids) { - return Sets.immutable.ofAll(repository.findAllById(ids.select(ObjectUtil::isNotNull))); + User user = userService.currentLoginUser(); + return Sets.immutable.ofAll(repository.findAll( + (root, query, builder) -> builder.and( + builder.in(root.get("id")).value(ids.select(ObjectUtil::isNotNull)), + builder.equal(root.get("createdUser"), user) + ) + )); } public ENTITY detail(Long id) { if (ObjectUtil.isNull(id)) { return null; } - return repository.findById(id).orElse(null); + User user = userService.currentLoginUser(); + return repository.findOne( + (root, query, builder) -> builder.and( + builder.equal(root.get("id"), id), + builder.equal(root.get("createdUser"), user) + ) + ) + .orElse(null); } public Optional detailOptional(Long id) { if (ObjectUtil.isNull(id)) { return Optional.empty(); } - return repository.findById(id); + User user = userService.currentLoginUser(); + return repository.findOne( + (root, query, builder) -> builder.and( + builder.equal(root.get("id"), id), + builder.equal(root.get("createdUser"), user) + ) + ); } public ENTITY detailOrThrow(Long id) { if (ObjectUtil.isNull(id)) { throw new IdNotFoundException(id); } - return repository.findById(id).orElseThrow(() -> new IdNotFoundException(id)); + User user = userService.currentLoginUser(); + return repository.findOne( + (root, query, builder) -> builder.and( + builder.equal(root.get("id"), id), + builder.equal(root.get("createdUser"), user) + ) + ).orElseThrow(() -> new IdNotFoundException(id)); } @Transactional(rollbackOn = Throwable.class) diff --git a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/repository/ConfirmationRepository.java b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/repository/ConfirmationRepository.java index 13ee856..b083e8b 100644 --- a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/repository/ConfirmationRepository.java +++ b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/repository/ConfirmationRepository.java @@ -2,9 +2,11 @@ package com.eshore.gringotts.web.domain.confirmation.repository; import com.eshore.gringotts.web.domain.base.repository.SimpleRepository; import com.eshore.gringotts.web.domain.confirmation.entity.Confirmation; +import com.eshore.gringotts.web.domain.user.entity.User; import java.util.List; import java.util.Optional; import javax.transaction.Transactional; +import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -19,16 +21,16 @@ import org.springframework.stereotype.Repository; public interface ConfirmationRepository extends SimpleRepository { @Override @EntityGraph(value = "confirmation.list", type = EntityGraph.EntityGraphType.FETCH) - List findAll(); + List findAll(Specification specification); @Override @EntityGraph(value = "confirmation.detail", type = EntityGraph.EntityGraphType.FETCH) - Optional findById(Long id); + Optional findOne(Specification specification); Boolean existsByTarget_Id(Long id); @Transactional @Modifying - @Query("update Confirmation confirmation set confirmation.state = ?2 where confirmation.id = ?1") - void updateStateById(Long id, Confirmation.State state); + @Query("update Confirmation confirmation set confirmation.state = ?2, confirmation.modifiedUser = ?3 where confirmation.id = ?1") + void updateStateById(Long id, Confirmation.State state, User modifiedUser); } diff --git a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java index 5d34836..4531c67 100644 --- a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java +++ b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java @@ -15,10 +15,12 @@ import org.springframework.stereotype.Service; @Service public class ConfirmationService extends SimpleService { private final ConfirmationRepository confirmationRepository; + private final UserService userService; public ConfirmationService(ConfirmationRepository confirmationRepository, UserService userService) { super(confirmationRepository, userService); this.confirmationRepository = confirmationRepository; + this.userService = userService; } @Override @@ -30,11 +32,11 @@ public class ConfirmationService extends SimpleService { } public void submit(Long id) { - confirmationRepository.updateStateById(id, Confirmation.State.CHECKING); + confirmationRepository.updateStateById(id, Confirmation.State.CHECKING, userService.currentLoginUser()); } public void retract(Long id) { - confirmationRepository.updateStateById(id, Confirmation.State.DRAFT); + confirmationRepository.updateStateById(id, Confirmation.State.DRAFT, userService.currentLoginUser()); } public static final class ConfirmationDuplicatedException extends RuntimeException { diff --git a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/repository/DataResourceRepository.java b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/repository/DataResourceRepository.java index 5f3132c..80dec65 100644 --- a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/repository/DataResourceRepository.java +++ b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/repository/DataResourceRepository.java @@ -4,6 +4,7 @@ import com.eshore.gringotts.web.domain.base.repository.SimpleRepository; import com.eshore.gringotts.web.domain.resource.entity.DataResource; import java.util.List; import java.util.Optional; +import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.stereotype.Repository; @@ -12,9 +13,9 @@ import org.springframework.stereotype.Repository; public interface DataResourceRepository extends SimpleRepository { @Override @EntityGraph(value = "data_resource.list", type = EntityGraph.EntityGraphType.FETCH) - List findAll(); + List findAll(Specification specification); @Override @EntityGraph(value = "data_resource.detail", type = EntityGraph.EntityGraphType.FETCH) - Optional findById(Long id); + Optional findOne(Specification specification); }