11package me .chanjar .weixin .aispeech .api .impl ;
22
3+ import com .google .gson .JsonElement ;
4+ import com .google .gson .JsonObject ;
35import com .google .gson .reflect .TypeToken ;
6+ import java .io .File ;
47import java .lang .reflect .Type ;
58import java .util .HashMap ;
69import java .util .List ;
710import java .util .Map ;
11+ import java .util .StringJoiner ;
812import me .chanjar .weixin .aispeech .api .WxAispeechKnowledgeService ;
913import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeInfo ;
1014import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeListResult ;
1115import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeManualCreateRequest ;
16+ import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeMoveProgress ;
17+ import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeMoveRequest ;
18+ import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeTagRequest ;
1219import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeUpdateRequest ;
1320import me .chanjar .weixin .aispeech .bean .knowledge .KnowledgeUrlCreateRequest ;
1421import me .chanjar .weixin .common .error .WxErrorException ;
@@ -22,6 +29,14 @@ public WxAispeechKnowledgeServiceImpl(WxAispeechServiceImpl service) {
2229 this .service = service ;
2330 }
2431
32+ @ Override
33+ public KnowledgeInfo createKnowledgeByFile (String knowledgeBaseId , File file , String title , String description , String metadata )
34+ throws WxErrorException {
35+ String response = service .executeKnowledgeMultipartPost ("/api/v1/knowledge-bases/" + knowledgeBaseId + "/knowledge/file" ,
36+ file , title , description , metadata );
37+ return WxGsonBuilder .create ().fromJson (response , KnowledgeInfo .class );
38+ }
39+
2540 @ Override
2641 public KnowledgeInfo createKnowledgeByUrl (String knowledgeBaseId , KnowledgeUrlCreateRequest request )
2742 throws WxErrorException {
@@ -47,6 +62,27 @@ public List<KnowledgeInfo> listKnowledge(String knowledgeBaseId, Integer page, I
4762 return result == null ? null : result .getData ();
4863 }
4964
65+ @ Override
66+ public List <KnowledgeInfo > listKnowledgeByIds (List <String > knowledgeIds ) throws WxErrorException {
67+ if (knowledgeIds == null || knowledgeIds .isEmpty ()) {
68+ return null ;
69+ }
70+ StringJoiner joiner = new StringJoiner ("," );
71+ for (String knowledgeId : knowledgeIds ) {
72+ if (StringUtils .isNotBlank (knowledgeId )) {
73+ joiner .add (knowledgeId );
74+ }
75+ }
76+ if (joiner .length () == 0 ) {
77+ return null ;
78+ }
79+
80+ Map <String , String > query = new HashMap <>();
81+ query .put ("ids" , joiner .toString ());
82+ String response = service .executeKnowledgeGet ("/api/v1/knowledge/batch" , query );
83+ return parseKnowledgeInfoList (response );
84+ }
85+
5086 @ Override
5187 public KnowledgeInfo getKnowledge (String knowledgeId ) throws WxErrorException {
5288 String response = service .executeKnowledgeGet ("/api/v1/knowledge/" + knowledgeId , null );
@@ -59,12 +95,31 @@ public KnowledgeInfo updateKnowledge(String knowledgeId, KnowledgeUpdateRequest
5995 return WxGsonBuilder .create ().fromJson (response , KnowledgeInfo .class );
6096 }
6197
98+ @ Override
99+ public KnowledgeInfo updateManualKnowledge (String knowledgeId , KnowledgeManualCreateRequest request ) throws WxErrorException {
100+ String response = service .executeKnowledgePut ("/api/v1/knowledge/manual/" + knowledgeId , request );
101+ return WxGsonBuilder .create ().fromJson (response , KnowledgeInfo .class );
102+ }
103+
62104 @ Override
63105 public boolean deleteKnowledge (String knowledgeId ) throws WxErrorException {
64106 String response = service .executeKnowledgeDelete ("/api/v1/knowledge/" + knowledgeId );
65107 return StringUtils .isNotBlank (response );
66108 }
67109
110+ @ Override
111+ public boolean updateKnowledgeTags (List <String > knowledgeIds , Long tagId ) throws WxErrorException {
112+ if (knowledgeIds == null || knowledgeIds .isEmpty () || tagId == null ) {
113+ return false ;
114+ }
115+
116+ Map <String , Object > request = new HashMap <>();
117+ request .put ("knowledge_ids" , knowledgeIds );
118+ request .put ("tag_id" , tagId );
119+ String response = service .executeKnowledgePut ("/api/v1/knowledge/tags" , request );
120+ return StringUtils .isNotBlank (response );
121+ }
122+
68123 @ Override
69124 public List <KnowledgeInfo > searchKnowledge (String keyword , String knowledgeBaseId , Integer page , Integer pageSize )
70125 throws WxErrorException {
@@ -74,9 +129,31 @@ public List<KnowledgeInfo> searchKnowledge(String keyword, String knowledgeBaseI
74129 query .put ("page" , page == null ? null : String .valueOf (page ));
75130 query .put ("page_size" , pageSize == null ? null : String .valueOf (pageSize ));
76131 String response = service .executeKnowledgeGet ("/api/v1/knowledge/search" , query );
132+ return parseKnowledgeInfoList (response );
133+ }
77134
78- Type listType = new TypeToken <List <KnowledgeInfo >>() { } .getType ();
79- return WxGsonBuilder .create ().fromJson (response , listType );
135+ @ Override
136+ public String moveKnowledge (KnowledgeMoveRequest request ) throws WxErrorException {
137+ return service .executeKnowledgePost ("/api/v1/knowledge/move" , request );
138+ }
139+
140+ @ Override
141+ public KnowledgeMoveProgress getMoveProgress (String taskId ) throws WxErrorException {
142+ String response = service .executeKnowledgeGet ("/api/v1/knowledge/move/progress/" + taskId , null );
143+ return WxGsonBuilder .create ().fromJson (response , KnowledgeMoveProgress .class );
144+ }
145+
146+ @ Override
147+ public boolean createKnowledgeBaseTag (String knowledgeBaseId , KnowledgeTagRequest request ) throws WxErrorException {
148+ String response = service .executeKnowledgePost ("/api/v1/knowledge-bases/" + knowledgeBaseId + "/tags" , request );
149+ return StringUtils .isNotBlank (response );
150+ }
151+
152+ @ Override
153+ public boolean updateKnowledgeBaseTag (String knowledgeBaseId , String tagId , KnowledgeTagRequest request )
154+ throws WxErrorException {
155+ String response = service .executeKnowledgePut ("/api/v1/knowledge-bases/" + knowledgeBaseId + "/tags/" + tagId , request );
156+ return StringUtils .isNotBlank (response );
80157 }
81158
82159 @ Override
@@ -88,4 +165,20 @@ public String postRaw(String path, Object requestBody) throws WxErrorException {
88165 public String getRaw (String path , Map <String , String > queryParams ) throws WxErrorException {
89166 return service .executeKnowledgeGet (path , queryParams );
90167 }
168+
169+ private List <KnowledgeInfo > parseKnowledgeInfoList (String response ) {
170+ if (StringUtils .isBlank (response )) {
171+ return null ;
172+ }
173+
174+ JsonElement element = WxGsonBuilder .create ().fromJson (response , JsonElement .class );
175+ Type listType = new TypeToken <List <KnowledgeInfo >>() { } .getType ();
176+ if (element != null && element .isJsonObject ()) {
177+ JsonObject object = element .getAsJsonObject ();
178+ if (object .has ("data" )) {
179+ return WxGsonBuilder .create ().fromJson (object .get ("data" ), listType );
180+ }
181+ }
182+ return WxGsonBuilder .create ().fromJson (element , listType );
183+ }
91184}
0 commit comments