zoujiajian 9 сар өмнө
parent
commit
79c134960e

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GptTeamAccount.java

@@ -16,6 +16,11 @@ import lombok.Setter;
 		where = ":condition:")
 public class GptTeamAccount extends BaseEntity {
 
+    /**
+     * team name
+     */
+    private String name;
+
     /**
      * token
      */

+ 90 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GptTeamUserBindRecordView.java

@@ -0,0 +1,90 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: GptTeamUserBindRecordView
+ * 创建者: JavaZou
+ * 创建时间:2025/11/24 17:19
+ */
+@Getter
+@Setter
+@SearchBean(tables = "gpt_team_user_bind_record gbr inner join gpt_team_account gta on gta.account_id = gbr.account_id")
+public class GptTeamUserBindRecordView {
+
+	@DbField("gbr.id")
+	private Long id;
+
+	/**
+	 * 用户ID
+	 */
+	@DbField("gbr.user_id")
+	private Long userId;
+
+	@DbField("gbr.order_id")
+	private Long orderId;
+
+	/**
+	 * GPT Team邮箱
+	 */
+	@DbField("gbr.bind_email")
+	private String bindEmail;
+
+	@DbField("gta.token")
+	private String token;
+
+	/**
+	 * 空间id
+	 */
+	@DbField("gbr.account_id")
+	private String accountId;
+
+	/**
+	 * 空间成员ID
+	 */
+	@DbField("gbr.user_key")
+	private String userKey;
+
+	/**
+	 * 换绑前空间id
+	 */
+	@DbField("gbr.bf_account_id")
+	private String bfAccountId;
+
+	/**
+	 * 换绑前空间成员ID
+	 */
+	@DbField("gbr.bf_user_key")
+	private String bfUserKey;
+
+	/**
+	 * 绑定时间
+	 */
+	@DbField("gbr.bind_time")
+	private Date bindTime;
+
+	/**
+	 * 换绑次数
+	 */
+	@DbField("gbr.change_num")
+	private Integer changeNum;
+
+	/**
+	 * 加入状态 1.成功 0失败
+	 * 默认失败
+	 */
+	@DbField("gbr.status")
+	private Boolean status;
+
+	@DbField("gbr.created_time")
+	private Date createdTime;
+
+	@DbField("gbr.update_time")
+	private Date update_time;
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/chatgpt/GptTeamAccountService.java

@@ -38,4 +38,6 @@ public interface GptTeamAccountService extends IService<GptTeamAccount> {
      * @return 导入结果信息
      */
     void batchImport(List<String> tokens);
+
+    void removeTeamUser(String accountId, String userKey);
 }

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptWorkspaceServiceImpl.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.chatgpt.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.http.Method;
@@ -86,6 +87,9 @@ public class ChatGptWorkspaceServiceImpl implements ChatGptWorkspaceService {
 
     @Override
     public Boolean deleteWorkspaceUser(String accountId, String userKey) {
+        if (StrUtil.hasEmpty(accountId, userKey)) {
+            return Boolean.FALSE;
+        }
         // 构建请求URL
         String url = BASE_URL + String.format("/backend-api/accounts/%s/users/%s", accountId, userKey);
         HttpResponse execute = HttpUtil.createRequest(Method.DELETE, url).header(HEAD_AUTH_KEY, HEAD_AUTH_KEY_VALUE).setConnectionTimeout(CONNECT_TIME_OUT).execute();

+ 7 - 0
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/GptTeamAccountServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.GptTeamAccountMapper;
 import com.cyksj.model.entity.GptTeamAccount;
+import com.cyksj.service.chatgpt.ChatGptWorkspaceService;
 import com.cyksj.service.chatgpt.GptTeamAccountService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -25,6 +26,7 @@ import java.util.Set;
 @Service
 @RequiredArgsConstructor
 public class GptTeamAccountServiceImpl extends ServiceImpl<GptTeamAccountMapper, GptTeamAccount> implements GptTeamAccountService {
+    private final ChatGptWorkspaceService gptWorkspaceService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -138,4 +140,9 @@ public class GptTeamAccountServiceImpl extends ServiceImpl<GptTeamAccountMapper,
             this.saveBatch(newAccounts);
         }
     }
+
+    @Override
+    public void removeTeamUser(String accountId, String userKey) {
+        gptWorkspaceService.deleteWorkspaceUser(accountId, userKey);
+    }
 }

+ 10 - 8
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsGptTeamAccountController.java

@@ -10,6 +10,7 @@ import com.cyksj.mapper.UserMapper;
 import com.cyksj.model.entity.GptTeamAccount;
 import com.cyksj.model.entity.GptTeamUserBindRecord;
 import com.cyksj.model.entity.User;
+import com.cyksj.model.views.GptTeamUserBindRecordView;
 import com.cyksj.service.chatgpt.GptTeamAccountService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -66,11 +67,11 @@ public class CmsGptTeamAccountController {
             userIds.addAll(collect);
         }
         if (CollUtil.isNotEmpty(userIds)) {
-            List<String> user_tokens = gptTeamUserBindRecordMapper.selectList(Wrappers.lambdaQuery(GptTeamUserBindRecord.class).in(GptTeamUserBindRecord::getUserId, userIds)).stream().map(GptTeamUserBindRecord::getToken).collect(Collectors.toList());
-            if (user_tokens.isEmpty()) {
+            List<String> accountIds = gptTeamUserBindRecordMapper.selectList(Wrappers.lambdaQuery(GptTeamUserBindRecord.class).in(GptTeamUserBindRecord::getUserId, userIds)).stream().map(GptTeamUserBindRecord::getAccountId).collect(Collectors.toList());
+            if (accountIds.isEmpty()) {
                 return GatewayResponse.SUCCESS.newBuilder().toResult();
             }
-            builder.field(GptTeamAccount::getToken, user_tokens).op(Operator.InList);
+            builder.field(GptTeamAccount::getAccountId, accountIds).op(Operator.InList);
         }
         SearchResult<GptTeamAccount> search = beanSearcher.search(GptTeamAccount.class, builder
                 .orderBy(GptTeamAccount::getId).desc()
@@ -82,11 +83,11 @@ public class CmsGptTeamAccountController {
      * gpt team账号用户加入列表
      */
     @GetMapping("/get/users")
-    public Result<List<GptTeamUserBindRecord>> getTeamUsers(String token) {
-        List<GptTeamUserBindRecord> list = beanSearcher.searchAll(GptTeamUserBindRecord.class, MapUtils.flatBuilder(request.getParameterMap())
-                .field(GptTeamUserBindRecord::getToken, token)
-                .field(GptTeamUserBindRecord::getStatus, Boolean.TRUE)
-                .orderBy(GptTeamUserBindRecord::getId).desc()
+    public Result<List<GptTeamUserBindRecordView>> getTeamUsers(String accountId) {
+        List<GptTeamUserBindRecordView> list = beanSearcher.searchAll(GptTeamUserBindRecordView.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(GptTeamUserBindRecordView::getAccountId, accountId)
+                .field(GptTeamUserBindRecordView::getStatus, Boolean.TRUE)
+                .orderBy(GptTeamUserBindRecordView::getId).desc()
                 .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(list);
     }
@@ -99,6 +100,7 @@ public class CmsGptTeamAccountController {
         GptTeamUserBindRecord gptTeamUserBindRecord = gptTeamUserBindRecordMapper.selectById(id);
         if (gptTeamUserBindRecord != null) {
             gptTeamUserBindRecordMapper.deleteById(id);
+            gptTeamAccountService.removeTeamUser(gptTeamUserBindRecord.getAccountId(), gptTeamUserBindRecord.getUserKey());
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }