@@ -68,8 +68,23 @@ public KnowledgeCenterServiceImpl(KnowledgeConfig knowledgeConfig, KnowledgeCent
6868 extensions = {@ Attribute (key = "tags" , value = "FIT" ), @ Attribute (key = "tags" , value = "KNOWLEDGE" )})
6969 @ Property (description = "增加用户的知识库配置信息" )
7070 public void add (KnowledgeConfigDto knowledgeConfigDto ) {
71- log .info ("Start add user knowledge config.[userId={}]" , knowledgeConfigDto .getUserId ());
71+ log .info ("Start add user knowledge config. [userId={}]" , knowledgeConfigDto .getUserId ());
7272 this .isConfigUnique (knowledgeConfigDto );
73+ List <KnowledgeConfigPo > result =
74+ this .knowledgeCenterRepo .listKnowledgeConfigByCondition (KnowledgeConfigQueryCondition .builder ()
75+ .userId (knowledgeConfigDto .getUserId ())
76+ .groupId (knowledgeConfigDto .getGroupId ())
77+ .build ());
78+ if (result .stream ().noneMatch (config -> config .getIsDefault () == 1 )) {
79+ knowledgeConfigDto .setIsDefault (true );
80+ } else if (knowledgeConfigDto .getIsDefault ()) {
81+ // 需要保证一个知识库平台只能有一个默认使用的API key
82+ KnowledgeConfigQueryCondition condition = KnowledgeConfigQueryCondition .builder ()
83+ .userId (knowledgeConfigDto .getUserId ())
84+ .groupId (knowledgeConfigDto .getGroupId ())
85+ .build ();
86+ this .knowledgeCenterRepo .updateOthersIsDefaultFalse (condition );
87+ }
7388 this .knowledgeCenterRepo .insertKnowledgeConfig (this .getKnowledgeConfigPo (knowledgeConfigDto ));
7489 }
7590
@@ -79,24 +94,39 @@ public void add(KnowledgeConfigDto knowledgeConfigDto) {
7994 extensions = {@ Attribute (key = "tags" , value = "FIT" ), @ Attribute (key = "tags" , value = "KNOWLEDGE" )})
8095 @ Property (description = "修改用户的知识库配置信息" )
8196 public void edit (KnowledgeConfigDto knowledgeConfigDto ) {
82- log .info ("Start edit user knowledge config.[userId={}]" , knowledgeConfigDto .getUserId ());
83- this .isConfigUnique (knowledgeConfigDto );
84- this .knowledgeCenterRepo .updateKnowledgeConfig (this .getKnowledgeConfigPo (knowledgeConfigDto ));
85- if (!this .isUpdateOthersDefault (knowledgeConfigDto )) {
97+ log .info ("Start edit user knowledge config. [userId={}]" , knowledgeConfigDto .getUserId ());
98+ if (!this .isUpdateValidate (knowledgeConfigDto )) {
99+ log .error ("Edit user knowledge config failed. [id={}, groupId={}, userId={}]" ,
100+ knowledgeConfigDto .getId (),
101+ knowledgeConfigDto .getGroupId (),
102+ knowledgeConfigDto .getUserId ());
86103 return ;
87104 }
105+ this .isConfigUnique (knowledgeConfigDto );
106+ List <KnowledgeConfigPo > result =
107+ this .knowledgeCenterRepo .listKnowledgeConfigByCondition (KnowledgeConfigQueryCondition .builder ()
108+ .userId (knowledgeConfigDto .getUserId ())
109+ .groupId (knowledgeConfigDto .getGroupId ())
110+ .build ());
111+ if (result .size () == 1 && !knowledgeConfigDto .getIsDefault ()) {
112+ throw new KnowledgeException (KnowledgeManagerRetCode .SHOULD_HAS_AT_LEAST_ONE_DEFAULT );
113+ }
114+ this .knowledgeCenterRepo .updateKnowledgeConfig (this .getKnowledgeConfigPo (knowledgeConfigDto ));
88115 KnowledgeConfigQueryCondition condition = KnowledgeConfigQueryCondition .builder ()
89116 .id (knowledgeConfigDto .getId ())
90117 .userId (knowledgeConfigDto .getUserId ())
91118 .groupId (knowledgeConfigDto .getGroupId ())
92119 .build ();
93- this .knowledgeCenterRepo .updateOthersIsDefaultFalse (condition );
120+ if (knowledgeConfigDto .getIsDefault ()) {
121+ this .knowledgeCenterRepo .updateOthersIsDefaultFalse (condition );
122+ } else {
123+ this .knowledgeCenterRepo .updateNewestIsDefaultTrue (condition );
124+ }
94125 }
95126
96- private boolean isUpdateOthersDefault (KnowledgeConfigDto knowledgeConfigDto ) {
97- return knowledgeConfigDto .getIsDefault () && LongUtils .between (knowledgeConfigDto .getId (), 1 , Long .MAX_VALUE )
98- && StringUtils .isNotBlank (knowledgeConfigDto .getUserId ())
99- && StringUtils .isNotBlank (knowledgeConfigDto .getGroupId ());
127+ private boolean isUpdateValidate (KnowledgeConfigDto knowledgeConfigDto ) {
128+ return LongUtils .between (knowledgeConfigDto .getId (), 1 , Long .MAX_VALUE ) && StringUtils .isNotBlank (
129+ knowledgeConfigDto .getUserId ()) && StringUtils .isNotBlank (knowledgeConfigDto .getGroupId ());
100130 }
101131
102132 @ Override
@@ -105,7 +135,7 @@ private boolean isUpdateOthersDefault(KnowledgeConfigDto knowledgeConfigDto) {
105135 extensions = {@ Attribute (key = "tags" , value = "FIT" ), @ Attribute (key = "tags" , value = "KNOWLEDGE" )})
106136 @ Property (description = "删除用户的知识库配置信息" )
107137 public void delete (Long id ) {
108- log .info ("Start delete user knowledge config.[id={}]" , id );
138+ log .info ("Start delete user knowledge config. [id={}]" , id );
109139 List <KnowledgeConfigPo > configPoList =
110140 this .knowledgeCenterRepo .listKnowledgeConfigByCondition (KnowledgeConfigQueryCondition .builder ()
111141 .id (id )
@@ -116,7 +146,7 @@ public void delete(Long id) {
116146 }
117147 KnowledgeConfigPo configPo = configPoList .get (0 );
118148 KnowledgeConfigDto knowledgeConfigDto = this .getKnowledgeConfigDto (configPo );
119- if (this . isUpdateOthersDefault ( knowledgeConfigDto )) {
149+ if (knowledgeConfigDto . getIsDefault ( )) {
120150 KnowledgeConfigQueryCondition condition = KnowledgeConfigQueryCondition .builder ()
121151 .userId (knowledgeConfigDto .getUserId ())
122152 .groupId (knowledgeConfigDto .getGroupId ())
@@ -131,7 +161,7 @@ public void delete(Long id) {
131161 extensions = {@ Attribute (key = "tags" , value = "FIT" ), @ Attribute (key = "tags" , value = "KNOWLEDGE" )})
132162 @ Property (description = "查询用户的知识库配置信息" )
133163 public List <KnowledgeConfigDto > list (String userId ) {
134- log .info ("Start get user knowledge configs.[userId={}]" , userId );
164+ log .info ("Start get user knowledge configs. [userId={}]" , userId );
135165 return this .knowledgeCenterRepo .listKnowledgeConfigByCondition (KnowledgeConfigQueryCondition .builder ()
136166 .userId (userId )
137167 .build ()).stream ().map (this ::getKnowledgeConfigDto ).toList ();
@@ -153,7 +183,7 @@ public String getApiKey(String userId, String groupId, String defaultValue) {
153183 KnowledgeConfigQueryCondition .builder ().userId (userId ).groupId (groupId ).isDefault (1 ).build ();
154184 List <KnowledgeConfigPo > result = this .knowledgeCenterRepo .listKnowledgeConfigByCondition (cond );
155185 if (result .isEmpty ()) {
156- log .info ("No available api key.[knowledge groupId={}, userId={}]" , groupId , userId );
186+ log .info ("No available api key. [knowledge groupId={}, userId={}]" , groupId , userId );
157187 return defaultValue ;
158188 }
159189 this .validateConfigNum (result );
0 commit comments