Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit04f7bdb

Browse files
Thomasrludomikula
Thomasr
authored andcommitted
Add editingUserId to application, overwrite when expired
1 parent67ca218 commit04f7bdb

File tree

5 files changed

+35
-15
lines changed

5 files changed

+35
-15
lines changed

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public class Application extends HasIdAndAuditing {
5252
privateBooleanpublicToMarketplace;
5353
@Setter
5454
privateBooleanagencyProfile;
55+
@Getter
56+
@Setter
57+
privateStringeditingUserId;
5558

5659
publicApplication(
5760
@JsonProperty("orgId")StringorganizationId,
@@ -63,7 +66,8 @@ public Application(
6366
@JsonProperty("editingApplicationDSL")Map<String,Object>editingApplicationDSL,
6467
@JsonProperty("publicToAll")BooleanpublicToAll,
6568
@JsonProperty("publicToMarketplace")BooleanpublicToMarketplace,
66-
@JsonProperty("agencyProfile")BooleanagencyProfile
69+
@JsonProperty("agencyProfile")BooleanagencyProfile,
70+
@JsonProperty("editingUserId")StringeditingUserId
6771
) {
6872
this.gid =gid;
6973
this.organizationId =organizationId;
@@ -75,6 +79,7 @@ public Application(
7579
this.publicToMarketplace =publicToMarketplace;
7680
this.agencyProfile =agencyProfile;
7781
this.editingApplicationDSL =editingApplicationDSL;
82+
this.editingUserId =editingUserId;
7883
}
7984

8085
@Transient

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationHistorySnapshotService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ public interface ApplicationHistorySnapshotService {
1818

1919
Mono<ApplicationHistorySnapshot>getHistorySnapshotDetail(StringhistorySnapshotId);
2020

21+
Mono<ApplicationHistorySnapshot>getLastSnapshotByApp(StringapplicationId);
2122
}

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/impl/ApplicationHistorySnapshotServiceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,9 @@ public Mono<ApplicationHistorySnapshot> getHistorySnapshotDetail(String historyS
5757
returnrepository.findById(historySnapshotId)
5858
.switchIfEmpty(deferredError(INVALID_HISTORY_SNAPSHOT,"INVALID_HISTORY_SNAPSHOT",historySnapshotId));
5959
}
60+
61+
@Override
62+
publicMono<ApplicationHistorySnapshot>getLastSnapshotByApp(StringapplicationId) {
63+
returnrepository.findAllByApplicationId(applicationId,PageRequest.of(0,1).withSort(Direction.DESC,"createdAt")).last();
64+
}
6065
}

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@
2121
importorg.lowcoder.api.permission.PermissionHelper;
2222
importorg.lowcoder.api.permission.view.PermissionItemView;
2323
importorg.lowcoder.api.usermanagement.OrgDevChecker;
24-
importorg.lowcoder.domain.application.model.Application;
25-
importorg.lowcoder.domain.application.model.ApplicationRequestType;
26-
importorg.lowcoder.domain.application.model.ApplicationStatus;
27-
importorg.lowcoder.domain.application.model.ApplicationType;
24+
importorg.lowcoder.domain.application.model.*;
25+
importorg.lowcoder.domain.application.service.ApplicationHistorySnapshotService;
2826
importorg.lowcoder.domain.application.service.ApplicationService;
2927
importorg.lowcoder.domain.datasource.model.Datasource;
3028
importorg.lowcoder.domain.datasource.service.DatasourceService;
@@ -45,7 +43,6 @@
4543
importorg.lowcoder.sdk.exception.BizException;
4644
importorg.lowcoder.sdk.plugin.common.QueryExecutor;
4745
importorg.lowcoder.sdk.util.ExceptionUtils;
48-
importorg.springframework.context.annotation.Lazy;
4946
importorg.springframework.http.HttpHeaders;
5047
importorg.springframework.stereotype.Service;
5148
importreactor.core.publisher.Flux;
@@ -58,7 +55,6 @@
5855
importjava.util.List;
5956
importjava.util.Map;
6057
importjava.util.Set;
61-
importjava.util.concurrent.TimeUnit;
6258
importjava.util.stream.Collectors;
6359

6460
importstaticorg.lowcoder.domain.application.model.ApplicationStatus.NORMAL;
@@ -94,6 +90,7 @@ public class ApplicationApiServiceImpl implements ApplicationApiService {
9490
privatefinalTemplateServicetemplateService;
9591
privatefinalPermissionHelperpermissionHelper;
9692
privatefinalDatasourceServicedatasourceService;
93+
privatefinalApplicationHistorySnapshotServiceapplicationHistorySnapshotService;
9794

9895
@Override
9996
publicMono<ApplicationView>create(CreateApplicationRequestcreateApplicationRequest) {
@@ -105,7 +102,7 @@ public Mono<ApplicationView> create(CreateApplicationRequest createApplicationRe
105102
NORMAL,
106103
createApplicationRequest.publishedApplicationDSL(),
107104
createApplicationRequest.editingApplicationDSL(),
108-
false,false,false);
105+
false,false,false,"");
109106

110107
if (StringUtils.isBlank(application.getOrganizationId())) {
111108
returndeferredError(INVALID_PARAMETER,"ORG_ID_EMPTY");
@@ -259,19 +256,28 @@ public Mono<ApplicationView> getEditingApplication(String applicationId) {
259256
.delayUntil(application ->checkApplicationStatus(application,NORMAL)))
260257
.zipWhen(tuple ->applicationService.getAllDependentModulesFromApplication(tuple.getT2(),false),TupleUtils::merge)
261258
.zipWhen(tuple ->organizationService.getOrgCommonSettings(tuple.getT2().getOrganizationId()),TupleUtils::merge)
262-
.map(tuple -> {
263-
ResourcePermissionpermission =tuple.getT1();
264-
Applicationapplication =tuple.getT2();
265-
List<Application>dependentModules =tuple.getT3();
266-
Map<String,Object>commonSettings =tuple.getT4();
259+
.zipWhen(tuple ->sessionUserService.getVisitorId().zipWith(applicationHistorySnapshotService.getLastSnapshotByApp(applicationId)))
260+
.flatMap(tuple -> {
261+
ResourcePermissionpermission =tuple.getT1().getT1();
262+
Applicationapplication =tuple.getT1().getT2();
263+
List<Application>dependentModules =tuple.getT1().getT3();
264+
Map<String,Object>commonSettings =tuple.getT1().getT4();
265+
StringvisitorId =tuple.getT2().getT1();
266+
ApplicationHistorySnapshotlastSnapshot =tuple.getT2().getT2();
267+
268+
if(!visitorId.equals(application.getEditingUserId()) &&lastSnapshot.getCreatedAt().compareTo(Instant.now().minusSeconds(300)) <0) {
269+
application.setEditingUserId(visitorId);
270+
}
271+
267272
Map<String,Map<String,Object>>dependentModuleDsl =dependentModules.stream()
268273
.collect(Collectors.toMap(Application::getId,Application::getLiveApplicationDsl, (a,b) ->b));
269-
returnApplicationView.builder()
274+
returnapplicationService.updateById(applicationId,application).map(__ ->
275+
ApplicationView.builder()
270276
.applicationInfoView(buildView(application,permission.getResourceRole().getValue()))
271277
.applicationDSL(application.getEditingApplicationDSL())
272278
.moduleDSL(dependentModuleDsl)
273279
.orgCommonSettings(commonSettings)
274-
.build();
280+
.build());
275281
});
276282
}
277283

@@ -540,6 +546,7 @@ private ApplicationInfoView buildView(Application application, String role, @Nul
540546
.publicToAll(application.isPublicToAll())
541547
.publicToMarketplace(application.isPublicToMarketplace())
542548
.agencyProfile(application.agencyProfile())
549+
.editingUserId(application.getEditingUserId())
543550
.build();
544551
}
545552

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/view/ApplicationInfoView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public class ApplicationInfoView {
3838
privatefinalbooleanpublicToMarketplace;
3939
privatefinalbooleanagencyProfile;
4040

41+
privatefinalStringeditingUserId;
42+
4143
publiclonggetLastViewTime() {
4244
returnlastViewTime ==null ?0 :lastViewTime.toEpochMilli();
4345
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp