Skip to content

Commit b083ec5

Browse files
committed
添加TrackName和serviceId唯一性校验
禁用TraceName修改功能
1 parent d663b39 commit b083ec5

File tree

7 files changed

+19
-2
lines changed

7 files changed

+19
-2
lines changed

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/dao/model/GrayTrackDO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@NoArgsConstructor
1212
@AllArgsConstructor
1313
@Entity
14-
@Table(name = "gray_track", indexes = {@Index(columnList = "serviceId"), @Index(columnList = "instanceId")})
14+
@Table(name = "gray_track", indexes = {@Index(columnList = "serviceId,name", unique = true), @Index(columnList = "instanceId")})
1515
public class GrayTrackDO {
1616

1717
@Id

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/dao/repository/GrayTrackRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
@Repository
1313
public interface GrayTrackRepository extends JpaRepository<GrayTrackDO, Long> {
1414

15+
GrayTrackDO findFirstByServiceIdAndNameOrderById(String serviceId, String name);
1516

1617
Page<GrayTrackDO> findAllByInstanceId(String instanceId, Pageable pageable);
1718

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/module/gray/GrayServerTrackModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
public interface GrayServerTrackModule {
1010

1111

12+
GrayTrack findFirstGrayTrack(String serviceId, String name);
13+
1214
Page<GrayTrack> listGrayTracks(String serviceId, Pageable pageable);
1315

1416
Page<GrayTrack> listGrayTracks(Pageable pageable);

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/module/gray/jpa/JPAGrayServerTrackModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public JPAGrayServerTrackModule(
2323
this.grayTrackService = grayTrackService;
2424
}
2525

26+
@Override
27+
public GrayTrack findFirstGrayTrack(String serviceId, String name) {
28+
return grayTrackService.findFirstGrayTrack(serviceId, name);
29+
}
30+
2631
@Override
2732
public Page<GrayTrack> listGrayTracks(String serviceId, Pageable pageable) {
2833
return grayTrackService.listGrayTracks(serviceId, pageable);

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/resources/rest/GrayTrackResource.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.util.Date;
2222
import java.util.List;
23+
import java.util.Objects;
2324

2425
import static cn.springcloud.gray.api.ApiRes.CODE_SUCCESS;
2526

@@ -115,6 +116,10 @@ public ApiRes<GrayTrack> save(@RequestBody GrayTrack track) {
115116
if (!serviceManageModule.hasServiceAuthority(track.getServiceId())) {
116117
return ApiResHelper.notAuthority();
117118
}
119+
if (Objects.isNull(track.getId())
120+
&& Objects.nonNull(grayServerTrackModule.findFirstGrayTrack(track.getServiceId(), track.getName()))) {
121+
return ApiResHelper.failed(String.format("service '%s' 已有'%s'类型的追踪", track.getServiceId(), track.getName()));
122+
}
118123
track.setOperator(userModule.getCurrentUserId());
119124
track.setOperateTime(new Date());
120125
return ApiRes.<GrayTrack>builder()

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/service/GrayTrackService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,8 @@ public Page<GrayTrack> listGrayTracks(Pageable pageable) {
5858
Page<GrayTrackDO> page = repository.findAll(pageable);
5959
return PaginationUtils.convert(pageable, page, getModelMapper());
6060
}
61+
62+
public GrayTrack findFirstGrayTrack(String serviceId, String name) {
63+
return do2model(repository.findFirstByServiceIdAndNameOrderById(serviceId, name));
64+
}
6165
}

spring-cloud-gray-webui/src/views/gray-trackor/complex-table.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
<el-select
8080
v-model="temp.type"
8181
placeholder="请选择"
82+
:disabled="dialogStatus=='update'"
8283
>
8384
<el-option
8485
v-for="item in options"
@@ -289,7 +290,6 @@ export default {
289290
createData() {
290291
this.$refs['dataForm'].validate((valid) => {
291292
if (valid) {
292-
this.temp.id = parseInt(Math.random() * 100) + 1024 // mock a id
293293
this.temp.author = 'vue-element-admin'
294294
if (this.temp.type !== '自定义名称') {
295295
this.temp.name = this.temp.type

0 commit comments

Comments
 (0)