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

Commitd33f51a

Browse files
committed
feat: add marketplace applications handling
1 parent16e8b29 commitd33f51a

File tree

12 files changed

+172
-4
lines changed

12 files changed

+172
-4
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class Application extends HasIdAndAuditing {
3939
privatefinalMap<String,Object>publishedApplicationDSL;
4040

4141
privatefinalBooleanpublicToAll;
42+
privatefinalBooleanpublicToMarketplace;
43+
4244
privateMap<String,Object>editingApplicationDSL;
4345

4446
@Transient
@@ -75,13 +77,15 @@ public Application(@JsonProperty("orgId") String organizationId,
7577
@JsonProperty("applicationStatus")ApplicationStatusapplicationStatus,
7678
@JsonProperty("publishedApplicationDSL")Map<String,Object>publishedApplicationDSL,
7779
@JsonProperty("publicToAll")BooleanpublicToAll,
80+
@JsonProperty("publicToMarketplace")BooleanpublicToMarketplace,
7881
@JsonProperty("editingApplicationDSL")Map<String,Object>editingApplicationDSL) {
7982
this.organizationId =organizationId;
8083
this.name =name;
8184
this.applicationType =applicationType;
8285
this.applicationStatus =applicationStatus;
8386
this.publishedApplicationDSL =publishedApplicationDSL;
8487
this.publicToAll =publicToAll;
88+
this.publicToMarketplace =publicToMarketplace;
8589
this.editingApplicationDSL =editingApplicationDSL;
8690
}
8791

@@ -105,6 +109,10 @@ public boolean isPublicToAll() {
105109
returnBooleanUtils.toBooleanDefaultIfNull(publicToAll,false);
106110
}
107111

112+
publicbooleanisPublicToMarketplace() {
113+
returnBooleanUtils.toBooleanDefaultIfNull(publicToMarketplace,false);
114+
}
115+
108116
publicApplicationQuerygetQueryByViewModeAndQueryId(booleanisViewMode,StringqueryId) {
109117
return (isViewMode ?getLiveQueries() :getEditingQueries())
110118
.stream()

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,6 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
3737
@Query(fields ="{_id : 1}")
3838
Flux<Application>findByPublicToAllIsTrueAndIdIn(Collection<String>ids);
3939

40+
Flux<Application>findByPublicToAllIsTrueAndPublicToMarketplaceIsTrue();
41+
4042
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ public Flux<Application> findByOrganizationIdWithoutDsl(String organizationId) {
103103
returnrepository.findByOrganizationId(organizationId);
104104
}
105105

106+
publicFlux<Application>findAllMarketplaceApps() {
107+
returnrepository.findByPublicToAllIsTrueAndPublicToMarketplaceIsTrue();
108+
}
109+
106110
publicMono<Long>countByOrganizationId(StringorgId,ApplicationStatusapplicationStatus) {
107111
returnrepository.countByOrganizationIdAndApplicationStatus(orgId,applicationStatus);
108112
}
@@ -147,6 +151,13 @@ public Mono<Boolean> setApplicationPublicToAll(String applicationId, boolean pub
147151
returnmongoUpsertHelper.updateById(application,applicationId);
148152
}
149153

154+
publicMono<Boolean>setApplicationPublicToMarketplace(StringapplicationId,booleanpublicToMarketplace) {
155+
Applicationapplication =Application.builder()
156+
.publicToMarketplace(publicToMarketplace)
157+
.build();
158+
returnmongoUpsertHelper.updateById(application,applicationId);
159+
}
160+
150161
@NonEmptyMono
151162
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
152163
publicMono<Set<String>>getPublicApplicationIds(Collection<String>applicationIds) {

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/model/ResourceAction.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public enum ResourceAction {
2424
EDIT_APPLICATIONS(ResourceRole.EDITOR,ResourceType.APPLICATION),
2525

2626
SET_APPLICATIONS_PUBLIC(ResourceRole.EDITOR,ResourceType.APPLICATION),
27+
SET_APPLICATIONS_PUBLIC_TO_MARKETPLACE(ResourceRole.EDITOR,ResourceType.APPLICATION),
2728

2829
// datasource action
2930
MANAGE_DATASOURCES(ResourceRole.OWNER,ResourceType.DATASOURCE),

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public Mono<ApplicationView> create(CreateApplicationRequest createApplicationRe
141141
createApplicationRequest.applicationType(),
142142
NORMAL,
143143
createApplicationRequest.publishedApplicationDSL(),
144-
false,createApplicationRequest.editingApplicationDSL());
144+
false,false,createApplicationRequest.editingApplicationDSL());
145145

146146
if (StringUtils.isBlank(application.getOrganizationId())) {
147147
returndeferredError(INVALID_PARAMETER,"ORG_ID_EMPTY");
@@ -429,6 +429,7 @@ public Mono<ApplicationPermissionView> getApplicationPermissions(String applicat
429429
.creatorId(creatorId)
430430
.orgName(organization.getName())
431431
.publicToAll(application.isPublicToAll())
432+
.publicToMarketplace(application.isPublicToMarketplace())
432433
.build();
433434
});
434435
});
@@ -485,6 +486,7 @@ private ApplicationInfoView buildView(Application application, String role, @Nul
485486
.applicationStatus(application.getApplicationStatus())
486487
.folderId(folderId)
487488
.publicToAll(application.isPublicToAll())
489+
.publicToMarketplace(application.isPublicToMarketplace())
488490
.build();
489491
}
490492

@@ -498,6 +500,12 @@ public Mono<Boolean> setApplicationPublicToAll(String applicationId, boolean pub
498500
.then(applicationService.setApplicationPublicToAll(applicationId,publicToAll));
499501
}
500502

503+
publicMono<Boolean>setApplicationPublicToMarketplace(StringapplicationId,booleanpublicToMarketplace) {
504+
returncheckCurrentUserApplicationPermission(applicationId,ResourceAction.SET_APPLICATIONS_PUBLIC_TO_MARKETPLACE)
505+
.then(checkApplicationStatus(applicationId,NORMAL))
506+
.then(applicationService.setApplicationPublicToMarketplace(applicationId,publicToMarketplace));
507+
}
508+
501509
privateMap<String,Object>sanitizeDsl(Map<String,Object>applicationDsl) {
502510
if (applicationDsl.get("queries")instanceofList<?>queries) {
503511
List<Map<String,Object>>list =queries.stream().map(this::doSanitizeQuery).toList();

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
importorg.lowcoder.api.application.view.ApplicationInfoView;
1616
importorg.lowcoder.api.application.view.ApplicationPermissionView;
1717
importorg.lowcoder.api.application.view.ApplicationView;
18+
importorg.lowcoder.api.application.view.MarketplaceApplicationInfoView;
1819
importorg.lowcoder.api.framework.view.ResponseView;
1920
importorg.lowcoder.api.home.UserHomeApiService;
2021
importorg.lowcoder.api.home.UserHomepageView;
@@ -127,6 +128,14 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
127128
.map(ResponseView::success);
128129
}
129130

131+
@Override
132+
publicMono<ResponseView<List<MarketplaceApplicationInfoView>>>getMarketplaceApplications(@RequestParam(required =false)IntegerapplicationType) {
133+
ApplicationTypeapplicationTypeEnum =applicationType ==null ?null :ApplicationType.fromValue(applicationType);
134+
returnuserHomeApiService.getAllMarketplaceApplications(applicationTypeEnum)
135+
.collectList()
136+
.map(ResponseView::success);
137+
}
138+
130139
@Override
131140
publicMono<ResponseView<Boolean>>updatePermission(@PathVariableStringapplicationId,
132141
@PathVariableStringpermissionId,
@@ -177,4 +186,11 @@ public Mono<ResponseView<Boolean>> setApplicationPublicToAll(@PathVariable Strin
177186
returnapplicationApiService.setApplicationPublicToAll(applicationId,request.publicToAll())
178187
.map(ResponseView::success);
179188
}
189+
190+
@Override
191+
publicMono<ResponseView<Boolean>>setApplicationPublicToMarketplace(@PathVariableStringapplicationId,
192+
@RequestBodyApplicationPublicToMarketplaceRequestrequest) {
193+
returnapplicationApiService.setApplicationPublicToMarketplace(applicationId,request.publicToMarketplace())
194+
.map(ResponseView::success);
195+
}
180196
}

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

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
importorg.lowcoder.api.application.view.ApplicationInfoView;
1111
importorg.lowcoder.api.application.view.ApplicationPermissionView;
1212
importorg.lowcoder.api.application.view.ApplicationView;
13+
importorg.lowcoder.api.application.view.MarketplaceApplicationInfoView;
1314
importorg.lowcoder.api.framework.view.ResponseView;
1415
importorg.lowcoder.api.home.UserHomepageView;
1516
importorg.lowcoder.domain.application.model.Application;
@@ -149,6 +150,15 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
149150
@RequestParam(required =false)ApplicationStatusapplicationStatus,
150151
@RequestParam(defaultValue ="true")booleanwithContainerSize);
151152

153+
@Operation(
154+
tags =TAG_APPLICATION_MANAGEMENT,
155+
operationId ="listMarketplaceApplications",
156+
summary ="List marketplace Applications",
157+
description ="Retrieve a list of Lowcoder Applications that are published to the marketplace"
158+
)
159+
@GetMapping("/marketplace-apps")
160+
publicMono<ResponseView<List<MarketplaceApplicationInfoView>>>getMarketplaceApplications(@RequestParam(required =false)IntegerapplicationType);
161+
152162
@Operation(
153163
tags =TAG_APPLICATION_PERMISSIONS,
154164
operationId ="updateApplicationPermissions",
@@ -202,8 +212,18 @@ public Mono<ResponseView<Boolean>> grantPermission(
202212
publicMono<ResponseView<Boolean>>setApplicationPublicToAll(@PathVariableStringapplicationId,
203213
@RequestBodyApplicationPublicToAllRequestrequest);
204214

205-
206-
publicrecordBatchAddPermissionRequest(Stringrole,Set<String>userIds,Set<String>groupIds) {
215+
@Operation(
216+
tags =TAG_APPLICATION_MANAGEMENT,
217+
operationId ="setApplicationAsPublicToMarketplace",
218+
summary ="Set Application as publicly available on marketplace but to only logged in users",
219+
description ="Set a Lowcoder Application identified by its ID as publicly available on marketplace but to only logged in users."
220+
)
221+
@PutMapping("/{applicationId}/public-to-marketplace")
222+
publicMono<ResponseView<Boolean>>setApplicationPublicToMarketplace(@PathVariableStringapplicationId,
223+
@RequestBodyApplicationPublicToMarketplaceRequestrequest);
224+
225+
226+
publicrecordBatchAddPermissionRequest(Stringrole,Set<String>userIds,Set<String>groupIds) {
207227
}
208228

209229
publicrecordApplicationPublicToAllRequest(BooleanpublicToAll) {
@@ -213,6 +233,13 @@ public Boolean publicToAll() {
213233
}
214234
}
215235

236+
publicrecordApplicationPublicToMarketplaceRequest(BooleanpublicToMarketplace) {
237+
@Override
238+
publicBooleanpublicToMarketplace() {
239+
returnBooleanUtils.isTrue(publicToMarketplace);
240+
}
241+
}
242+
216243
publicrecordUpdatePermissionRequest(Stringrole) {
217244
}
218245

‎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

3939
privatefinalbooleanpublicToAll;
4040

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

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@
88
publicclassApplicationPermissionViewextendsCommonPermissionView {
99

1010
privatebooleanpublicToAll;
11+
privatebooleanpublicToMarketplace;
1112

1213
publicbooleanisPublicToAll() {
1314
returnpublicToAll;
1415
}
16+
17+
publicbooleanisPublicToMarketplace() {
18+
returnpublicToMarketplace;
19+
}
1520
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
packageorg.lowcoder.api.application.view;
2+
3+
importlombok.Builder;
4+
importlombok.Getter;
5+
importorg.lowcoder.domain.application.model.ApplicationStatus;
6+
7+
@Builder
8+
@Getter
9+
publicclassMarketplaceApplicationInfoView {
10+
11+
// org details
12+
privatefinalStringorgId;
13+
privatefinalStringorgName;
14+
15+
// creator info
16+
privatefinalStringcreatorEmail;
17+
18+
// App details
19+
privatefinalStringapplicationId;
20+
privatefinalStringname;
21+
privatefinallongcreateAt;
22+
privatefinalStringcreateBy;
23+
/**
24+
* @see org.lowcoder.domain.application.model.ApplicationType
25+
*/
26+
privatefinalintapplicationType;
27+
privatefinalApplicationStatusapplicationStatus;
28+
29+
30+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp