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

Commitb0078ef

Browse files
Merge branch 'dev' into feature-funnelChart
2 parents0531190 +6e090b5 commitb0078ef

File tree

12 files changed

+70
-34
lines changed

12 files changed

+70
-34
lines changed

‎client/packages/lowcoder-comps/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name":"lowcoder-comps",
3-
"version":"2.5.4",
3+
"version":"2.5.5",
44
"type":"module",
55
"license":"MIT",
66
"dependencies": {

‎client/packages/lowcoder/src/pages/editor/appEditorInternal.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,18 @@ function useSaveComp(
5353
if(!comp||comp===prevComp){
5454
return;
5555
}
56+
5657
constcurJson=comp.toJsonValue();
5758
constcurJsonStr=JSON.stringify(curJson);
5859

59-
6060
if(!Boolean(prevAppId)&&Boolean(applicationId)){
6161
returnsetPrevAppId(applicationId);
6262
}
6363
if(prevAppId!==applicationId){
6464
returnsetPrevAppId(applicationId);
6565
}
6666
if(!Boolean(prevJsonStr)&&Boolean(curJsonStr)){
67+
setPrevComp(comp)
6768
returnsetPrevJsonStr(curJsonStr);
6869
}
6970
if(prevJsonStr===curJsonStr){
@@ -84,7 +85,7 @@ function useSaveComp(
8485
setPrevComp(comp);
8586
setPrevJsonStr(curJsonStr);
8687
setPrevAppId(applicationId);
87-
},[comp,prevAppId,applicationId,prevComp,prevJsonStr,readOnly,dispatch]);
88+
},[comp,applicationId,readOnly,dispatch]);
8889
}
8990

9091
interfaceAppEditorInternalViewProps{

‎client/packages/lowcoder/src/pages/userAuth/formLoginSteps.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ const StepHeader = (props : {
6666
title:string,
6767
})=>(
6868
<Flexjustify="center"style={{marginBottom:'22px'}}>
69-
<h3style={{margin:0}}>{props.title}</h3>
69+
<h3style={{margin:0,padding:'2px 0 0 8px'}}>{props.title}</h3>
7070
</Flex>
7171
)
7272

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,21 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
2929
@Aggregation(pipeline = {"{ $match: { gid: ?0 } }","{ $project: { 'editingApplicationDSL.settings': 1, _id: 1, gid: 1, organizationId: 1, name: 1, applicationType: 1, applicationStatus: 1, publicToAll: 1, publicToMarketplace: 1, agencyProfile: 1, editingUserId: 1, lastEditedAt: 1, createdAt: 1, updatedAt: 1, createdBy: 1, modifiedBy: 1, _class: 1}}"})
3030
Flux<Application>findByGid(@NonnullStringgid);
3131

32+
@Aggregation(pipeline = {"{ $match: { slug: ?0 } }","{ $project: { 'editingApplicationDSL.settings': 1, _id: 1, gid: 1, organizationId: 1, name: 1, applicationType: 1, applicationStatus: 1, publicToAll: 1, publicToMarketplace: 1, agencyProfile: 1, editingUserId: 1, lastEditedAt: 1, createdAt: 1, updatedAt: 1, createdBy: 1, modifiedBy: 1, _class: 1}}"})
33+
Flux<Application>findBySlug(@NonnullStringslug);
34+
3235
Mono<Long>countByOrganizationIdAndApplicationStatus(StringorganizationId,ApplicationStatusapplicationStatus);
3336

3437
@Query("{$or : [{'publishedApplicationDSL.queries.datasourceId':?0},{'editingApplicationDSL.queries.datasourceId':?0}]}")
3538
Flux<Application>findByDatasourceId(StringdatasourceId);
3639

3740
Flux<Application>findByIdIn(Collection<String>ids);
3841
Flux<Application>findByGidIn(Collection<String>ids);
42+
Flux<Application>findBySlugIn(Collection<String>slugs);
3943

4044
Flux<Application>findByCreatedByAndIdIn(StringuserId,Collection<String>ids);
4145
Flux<Application>findByCreatedByAndGidIn(StringuserId,Collection<String>gids);
46+
Flux<Application>findByCreatedByAndSlugIn(StringuserId,Collection<String>slugs);
4247

4348
/**
4449
* Filter public applications from list of supplied IDs
@@ -67,6 +72,8 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
6772
* Find all agency applications
6873
*/
6974
Flux<Application>findByPublicToAllIsTrueAndAgencyProfileIsTrue();
70-
Mono<Boolean>existsBySlug(Stringslug);
75+
76+
@Query("{ 'organizationId': ?0, 'slug': ?1 }")
77+
Mono<Boolean>existsByOrganizationIdAndSlug(StringorganizationId,Stringslug);
7178

7279
}

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

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
importorg.lowcoder.domain.permission.model.ResourceType;
1919
importorg.lowcoder.domain.permission.service.ResourcePermissionService;
2020
importorg.lowcoder.domain.user.repository.UserRepository;
21+
importorg.lowcoder.domain.util.SlugUtils;
2122
importorg.lowcoder.infra.annotation.NonEmptyMono;
2223
importorg.lowcoder.infra.mongo.MongoUpsertHelper;
2324
importorg.lowcoder.sdk.constants.FieldName;
@@ -60,9 +61,13 @@ public Mono<Application> findByIdWithoutDsl(String id) {
6061
returnMono.error(newBizException(BizError.INVALID_PARAMETER,"INVALID_PARAMETER",FieldName.ID));
6162
}
6263

63-
if(FieldName.isGID(id))
64-
returnMono.from(repository.findByGid(id)).switchIfEmpty(Mono.error(newBizException(BizError.NO_RESOURCE_FOUND,"CANT_FIND_APPLICATION",id)));
65-
returnrepository.findById(id)
64+
returnMono.from(repository.findBySlug(id))
65+
.switchIfEmpty(
66+
Mono.defer(() -> {
67+
if (FieldName.isGID(id))
68+
returnMono.from(repository.findByGid(id));
69+
returnrepository.findById(id);
70+
}))
6671
.switchIfEmpty(Mono.error(newBizException(BizError.NO_RESOURCE_FOUND,"CANT_FIND_APPLICATION",id)));
6772
}
6873

@@ -123,7 +128,7 @@ public Mono<Long> countByOrganizationId(String orgId, ApplicationStatus applicat
123128
publicFlux<Application>findByIdIn(List<String>applicationIds) {
124129
if(!applicationIds.isEmpty() &&FieldName.isGID(applicationIds.get(0)))
125130
returnrepository.findByGidIn(applicationIds);
126-
returnrepository.findByIdIn(applicationIds);
131+
returnrepository.findBySlugIn(applicationIds).switchIfEmpty(repository.findByIdIn(applicationIds));
127132
}
128133

129134
@Override
@@ -279,7 +284,7 @@ public Mono<Set<String>> getPrivateApplicationIds(Collection<String> application
279284
.map(Application::getGid)
280285
.collect(Collectors.toSet());
281286

282-
returnrepository.findByCreatedByAndIdIn(userId,applicationIds)
287+
returnrepository.findByCreatedByAndSlugIn(userId,applicationIds).switchIfEmpty(repository.findByCreatedByAndIdIn(userId,applicationIds))
283288
.map(HasIdAndAuditing::getId)
284289
.collect(Collectors.toSet());
285290
}
@@ -349,15 +354,15 @@ public Mono<Map<String, Object>> getLiveDSLByApplicationId(String applicationId)
349354

350355
@Override
351356
publicMono<Application>updateSlug(StringapplicationId,StringnewSlug) {
352-
returnrepository.existsBySlug(newSlug).flatMap(exists -> {
357+
returnrepository.findById(applicationId).flatMap(application ->repository.existsByOrganizationIdAndSlug(application.getOrganizationId(),newSlug).flatMap(exists -> {
358+
if (!SlugUtils.validate(newSlug)) {
359+
returnMono.error(newBizException(BizError.SLUG_INVALID,"SLUG_INVALID"));
360+
}
353361
if (exists) {
354-
returnMono.error(newBizException(BizError.DUPLICATE_ENTRY,"Slug already exists"));
362+
returnMono.error(newBizException(BizError.SLUG_DUPLICATE_ENTRY,"SLUG_DUPLICATE_ENTRY"));
355363
}
356-
returnrepository.findById(applicationId)
357-
.flatMap(application -> {
358-
application.setSlug(newSlug);
359-
returnrepository.save(application);
360-
});
361-
});
364+
application.setSlug(newSlug);
365+
returnrepository.save(application);
366+
}));
362367
}
363368
}

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@ public interface OrganizationRepository extends ReactiveMongoRepository<Organiza
1616

1717
Flux<Organization>findByIdInAndState(Collection<String>id,OrganizationStatestate);
1818
Flux<Organization>findByGidInAndState(Collection<String>gid,OrganizationStatestate);
19+
Flux<Organization>findBySlugInAndState(Collection<String>slug,OrganizationStatestate);
1920
Flux<Organization>findByGid(Stringgid);
21+
Flux<Organization>findBySlug(Stringslug);
2022
Flux<Organization>findByState(OrganizationStatestate);
2123

2224
Mono<Organization>findByIdAndState(Stringid,OrganizationStatestate);
2325
Mono<Organization>findByGidAndState(Stringgid,OrganizationStatestate);
26+
Mono<Organization>findBySlugAndState(Stringslug,OrganizationStatestate);
2427

2528
Mono<Organization>findBySourceAndThirdPartyCompanyIdAndState(Stringsource,StringtpCompanyId,OrganizationStatestate);
2629

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
importorg.lowcoder.domain.organization.repository.OrganizationRepository;
1717
importorg.lowcoder.domain.user.model.User;
1818
importorg.lowcoder.domain.user.repository.UserRepository;
19+
importorg.lowcoder.domain.util.SlugUtils;
1920
importorg.lowcoder.infra.annotation.PossibleEmptyMono;
2021
importorg.lowcoder.infra.mongo.MongoUpsertHelper;
2122
importorg.lowcoder.sdk.config.CommonConfig;
@@ -169,7 +170,7 @@ public Mono<Organization> getById(String id) {
169170
if(FieldName.isGID(id))
170171
returnrepository.findByGidAndState(id,ACTIVE)
171172
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG,"INVALID_ORG_ID"));
172-
returnrepository.findByIdAndState(id,ACTIVE)
173+
returnrepository.findBySlugAndState(id,ACTIVE).switchIfEmpty(repository.findByIdAndState(id,ACTIVE))
173174
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG,"INVALID_ORG_ID"));
174175
}
175176

@@ -179,7 +180,7 @@ public Mono<OrganizationCommonSettings> getOrgCommonSettings(String orgId) {
179180
returnrepository.findByGidAndState(orgId,ACTIVE)
180181
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG,"INVALID_ORG_ID"))
181182
.map(Organization::getCommonSettings);
182-
returnrepository.findByIdAndState(orgId,ACTIVE)
183+
returnrepository.findBySlugAndState(orgId,ACTIVE).switchIfEmpty(repository.findByIdAndState(orgId,ACTIVE))
183184
.switchIfEmpty(deferredError(UNABLE_TO_FIND_VALID_ORG,"INVALID_ORG_ID"))
184185
.map(Organization::getCommonSettings);
185186
}
@@ -188,7 +189,7 @@ public Mono<OrganizationCommonSettings> getOrgCommonSettings(String orgId) {
188189
publicFlux<Organization>getByIds(Collection<String>ids) {
189190
if(!ids.isEmpty() &&FieldName.isGID(ids.stream().findFirst().get()))
190191
returnrepository.findByGidInAndState(ids,ACTIVE);
191-
returnrepository.findByIdInAndState(ids,ACTIVE);
192+
returnrepository.findBySlugInAndState(ids,ACTIVE).switchIfEmpty(repository.findByIdInAndState(ids,ACTIVE));
192193
}
193194

194195
@Override
@@ -221,7 +222,7 @@ public Mono<Boolean> uploadLogo(String organizationId, Part filePart) {
221222
publicMono<Boolean>deleteLogo(StringorganizationId) {
222223
Mono<Organization>organizationMono;
223224
if(FieldName.isGID(organizationId))organizationMono =repository.findByGidAndState(organizationId,ACTIVE);
224-
elseorganizationMono =repository.findByIdAndState(organizationId,ACTIVE);
225+
elseorganizationMono =repository.findBySlugAndState(organizationId,ACTIVE).switchIfEmpty(repository.findByIdAndState(organizationId,ACTIVE));
225226
returnorganizationMono
226227
.flatMap(organization -> {
227228
// delete from asset repo.
@@ -292,8 +293,11 @@ private String buildCommonSettingsUpdateTimeKey(String key) {
292293
@Override
293294
publicMono<Organization>updateSlug(StringorganizationId,StringnewSlug) {
294295
returnrepository.existsBySlug(newSlug).flatMap(exists -> {
296+
if (!SlugUtils.validate(newSlug)) {
297+
returnMono.error(newBizException(BizError.SLUG_INVALID,"SLUG_INVALID"));
298+
}
295299
if (exists) {
296-
returnMono.error(newBizException(BizError.DUPLICATE_ENTRY,"Slug already exists"));
300+
returnMono.error(newBizException(BizError.SLUG_DUPLICATE_ENTRY,"SLUG_DUPLICATE_ENTRY"));
297301
}
298302
returnrepository.findById(organizationId)
299303
.flatMap(organization -> {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
packageorg.lowcoder.domain.util;
2+
3+
publicclassSlugUtils {
4+
publicstaticBooleanvalidate(Stringslug) {
5+
returnslug.matches("^[a-zA-Z0-9_-]*$");
6+
}
7+
}

‎server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/exception/BizError.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ public enum BizError {
154154
ILLEGAL_BUNDLE_PERMISSION_ID(500,6404),
155155

156156
//slug 6501 - 6501
157-
DUPLICATE_ENTRY(403,6501);
157+
SLUG_DUPLICATE_ENTRY(403,6501),
158+
SLUG_INVALID(403,6502);
158159

159160
static {
160161
checkDuplicates(values(),BizError::getBizErrorCode);

‎server/api-service/lowcoder-sdk/src/main/resources/locale_en.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,4 +282,6 @@ ORG_DELETED_FOR_ENTERPRISE_MODE=Provided enterpriseOrgId workspace has been dele
282282
DISABLE_AUTH_CONFIG_FORBIDDEN=Can not disable current administrator''s last identity provider.
283283
USER_NOT_EXIST=User not exist.
284284
DUPLICATE_AUTH_CONFIG_ADDITION=Provider auth type already added to organization
285-
EMAIL_PROVIDER_DISABLED=Email provider is disabled.
285+
EMAIL_PROVIDER_DISABLED=Email provider is disabled.
286+
SLUG_DUPLICATE_ENTRY=Slug already exists
287+
SLUG_INVALID=Slug format is invalid

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp