33import com .dataengine .common .interfaces .Response ;
44import com .dataengine .datamanagement .application .service .TagApplicationService ;
55import com .dataengine .datamanagement .domain .model .dataset .Tag ;
6+ import com .dataengine .datamanagement .interfaces .converter .TagConverter ;
67import com .dataengine .datamanagement .interfaces .dto .CreateTagRequest ;
78import com .dataengine .datamanagement .interfaces .dto .TagResponse ;
9+ import com .dataengine .datamanagement .interfaces .dto .UpdateTagRequest ;
10+ import jakarta .validation .Valid ;
11+ import jakarta .validation .constraints .Size ;
12+ import org .apache .commons .lang3 .StringUtils ;
813import org .springframework .beans .factory .annotation .Autowired ;
914import org .springframework .http .ResponseEntity ;
1015import org .springframework .web .bind .annotation .*;
1116
1217import java .util .List ;
18+ import java .util .Objects ;
1319import java .util .stream .Collectors ;
1420
1521/**
@@ -30,10 +36,10 @@ public TagController(TagApplicationService tagApplicationService) {
3036 * 查询标签列表
3137 */
3238 @ GetMapping
33- public ResponseEntity <Response <List <TagResponse >>> getTags (@ RequestParam (required = false ) String keyword ) {
39+ public ResponseEntity <Response <List <TagResponse >>> getTags (@ RequestParam (name = "keyword" , required = false ) String keyword ) {
3440 List <Tag > tags = tagApplicationService .searchTags (keyword );
3541 List <TagResponse > response = tags .stream ()
36- .map (this ::convertToResponse )
42+ .map (TagConverter . INSTANCE ::convertToResponse )
3743 .collect (Collectors .toList ());
3844 return ResponseEntity .ok (Response .ok (response ));
3945 }
@@ -49,19 +55,31 @@ public ResponseEntity<Response<TagResponse>> createTag(@RequestBody CreateTagReq
4955 createTagRequest .getColor (),
5056 createTagRequest .getDescription ()
5157 );
52- return ResponseEntity .status ( 201 ). body ( Response .ok (convertToResponse (tag )));
58+ return ResponseEntity .ok ( Response .ok (TagConverter . INSTANCE . convertToResponse (tag )));
5359 } catch (IllegalArgumentException e ) {
5460 return ResponseEntity .badRequest ().body (Response .error (e .getMessage (), null ));
5561 }
5662 }
5763
58- private TagResponse convertToResponse (Tag tag ) {
59- TagResponse response = new TagResponse ();
60- response .setId (tag .getId ());
61- response .setName (tag .getName ());
62- response .setColor (tag .getColor ());
63- response .setDescription (tag .getDescription ());
64- response .setUsageCount (tag .getUsageCount () != null ? tag .getUsageCount ().intValue () : null );
65- return response ;
64+ /**
65+ * 更新标签
66+ *
67+ * @param updateTagRequest 更新参数
68+ * @return 更新结果
69+ */
70+ @ PutMapping
71+ public ResponseEntity <Response <TagResponse >> updateTag (@ RequestBody @ Valid UpdateTagRequest updateTagRequest ) {
72+ Tag tag = tagApplicationService .updateTag (TagConverter .INSTANCE .updateRequestToTag (updateTagRequest ));
73+ return ResponseEntity .ok (Response .ok (TagConverter .INSTANCE .convertToResponse (tag )));
74+ }
75+
76+ @ DeleteMapping
77+ public ResponseEntity <Response <Valid >> deleteTag (@ RequestParam (value = "ids" ) @ Valid @ Size (max = 10 ) List <String > ids ) {
78+ try {
79+ tagApplicationService .deleteTag (ids .stream ().filter (StringUtils ::isNoneBlank ).distinct ().toList ());
80+ return ResponseEntity .ok (Response .ok (null ));
81+ } catch (IllegalArgumentException e ) {
82+ return ResponseEntity .badRequest ().body (Response .error (e .getMessage (), null ));
83+ }
6684 }
6785}
0 commit comments