zoujiajian 9 bulan lalu
induk
melakukan
41d42d5727

+ 4 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/GptTeamAccount.java

@@ -2,6 +2,7 @@ package com.cyksj.model.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.cyksj.model.BaseEntity;
+import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
@@ -11,7 +12,8 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@SearchBean(tables = "gpt_team_account gta")
+@SearchBean(tables = "gpt_team_account gta",
+		where = ":condition:")
 public class GptTeamAccount extends BaseEntity {
 
     /**
@@ -43,5 +45,6 @@ public class GptTeamAccount extends BaseEntity {
     /**
      * 人数
      */
+    @DbField("select count(1) from gpt_team_user_bind_record gbr where gbr.token = gta.token and gbr.status = 1")
     private Integer totalNum;
 }

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/gpt/impl/GptTeamUserBindRecordServiceImpl.java

@@ -89,8 +89,9 @@ public class GptTeamUserBindRecordServiceImpl implements GptTeamUserBindRecordSe
         if (teamAccount == null) {
             throw BusinessRuntimeException.getInstance("加入Team失败,请联系客服配置Team后重新加入!");
         }
+        Integer totalNum = bindRecordMapper.selectCount(Wrappers.lambdaQuery(GptTeamUserBindRecord.class).eq(GptTeamUserBindRecord::getToken, teamAccount.getToken()).eq(GptTeamUserBindRecord::getStatus, 1));
         int update = gptTeamAccountMapper.update(null, Wrappers.lambdaUpdate(GptTeamAccount.class)
-                .set(GptTeamAccount::getTotalNum, teamAccount.getTotalNum() + 1)
+                .set(GptTeamAccount::getTotalNum, totalNum + 1)
                 .eq(GptTeamAccount::getId, teamAccount.getId())
                 .eq(GptTeamAccount::getTotalNum, teamAccount.getTotalNum())
                 .lt(GptTeamAccount::getTotalNum, gptTeamInviteLimitNum));

+ 36 - 2
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsGptTeamAccountController.java

@@ -1,20 +1,29 @@
 package com.cyksj.web.controller.manage.account;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GptTeamUserBindRecordMapper;
+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.service.chatgpt.GptTeamAccountService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.param.Operator;
+import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * admin/GPT Team账号管理
@@ -33,12 +42,37 @@ public class CmsGptTeamAccountController {
 
     private final GptTeamUserBindRecordMapper gptTeamUserBindRecordMapper;
 
+    private final UserMapper userMapper;
+
     /**
      * 获取GPT Team账号列表
      */
     @GetMapping("/get")
-    public Result<SearchResult<GptTeamAccount>> getPage() {
-        SearchResult<GptTeamAccount> search = beanSearcher.search(GptTeamAccount.class, MapUtils.flatBuilder(request.getParameterMap())
+    public Result<SearchResult<GptTeamAccount>> getPage(Long userId, String nickname) {
+        MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+        List<Long> userIds = null;
+        if (userId != null) {
+            userIds = new ArrayList<>();
+            userIds.add(userId);
+        }
+        if (StrUtil.isNotBlank(nickname)) {
+            if (userIds == null) {
+                userIds = new ArrayList<>();
+            }
+            List<Long> collect = userMapper.selectList(Wrappers.lambdaQuery(User.class).eq(User::getNickname, nickname)).stream().map(User::getId).collect(Collectors.toList());
+            if (CollUtil.isEmpty(collect)) {
+                return GatewayResponse.SUCCESS.newBuilder().toResult();
+            }
+            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()) {
+                return GatewayResponse.SUCCESS.newBuilder().toResult();
+            }
+            builder.field(GptTeamAccount::getToken, user_tokens).op(Operator.InList);
+        }
+        SearchResult<GptTeamAccount> search = beanSearcher.search(GptTeamAccount.class, builder
                 .orderBy(GptTeamAccount::getId).desc()
                 .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);