Bladeren bron

1、获取角色根据状态查询开启
2、默认租户可以多设备登录
3、新增多图片生成视频

liyanbo 9 maanden geleden
bovenliggende
commit
f5729225f7

+ 4 - 0
byzs-module-ai/src/main/java/cn/iocoder/byzs/module/ai/controller/admin/model/vo/chatRole/AiChatRolePageReqVO.java

@@ -20,4 +20,8 @@ public class AiChatRolePageReqVO extends PageParam {
     @Schema(description = "是否公开", example = "1")
     @Schema(description = "是否公开", example = "1")
     private Boolean publicStatus;
     private Boolean publicStatus;
 
 
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+
 }
 }

+ 2 - 1
byzs-module-ai/src/main/java/cn/iocoder/byzs/module/ai/controller/admin/video/vo/AiVideoDrawReqVO.java

@@ -8,6 +8,7 @@ import lombok.Data;
 import org.springframework.ai.openai.OpenAiImageOptions;
 import org.springframework.ai.openai.OpenAiImageOptions;
 import org.springframework.ai.stabilityai.api.StabilityAiImageOptions;
 import org.springframework.ai.stabilityai.api.StabilityAiImageOptions;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 @Schema(description = "管理后台 - AI 绘画 Request VO")
 @Schema(description = "管理后台 - AI 绘画 Request VO")
@@ -24,7 +25,7 @@ public class AiVideoDrawReqVO {
     private String prompt;
     private String prompt;
 
 
     @Schema(description = "第一帧图片")
     @Schema(description = "第一帧图片")
-    private String promptImage;
+    private List<String> promptImage;
 
 
     @Schema(description = "分辨率")
     @Schema(description = "分辨率")
     private String resolution;
     private String resolution;

+ 1 - 0
byzs-module-ai/src/main/java/cn/iocoder/byzs/module/ai/dal/mysql/model/AiChatRoleMapper.java

@@ -35,6 +35,7 @@ public interface AiChatRoleMapper extends BaseMapperX<AiChatRoleDO> {
                 // 情况二:私有
                 // 情况二:私有
                 .eq(Boolean.FALSE.equals(reqVO.getPublicStatus()), AiChatRoleDO::getUserId, userId)
                 .eq(Boolean.FALSE.equals(reqVO.getPublicStatus()), AiChatRoleDO::getUserId, userId)
                 .eq(Boolean.FALSE.equals(reqVO.getPublicStatus()), AiChatRoleDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
                 .eq(Boolean.FALSE.equals(reqVO.getPublicStatus()), AiChatRoleDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
+                .eqIfPresent(AiChatRoleDO::getStatus, reqVO.getStatus())
                 .orderByAsc(AiChatRoleDO::getSort));
                 .orderByAsc(AiChatRoleDO::getSort));
     }
     }
 
 

+ 15 - 9
byzs-module-ai/src/main/java/cn/iocoder/byzs/module/ai/service/video/AiVideoServiceImpl.java

@@ -90,8 +90,12 @@ public class AiVideoServiceImpl implements AiVideoService {
         AiModelDO model = modelService.validateModel(drawReqVO.getModelId());
         AiModelDO model = modelService.validateModel(drawReqVO.getModelId());
 
 
         // 2. 保存数据库
         // 2. 保存数据库
+        String promptImage = null;
+        if (CollUtil.isNotEmpty(drawReqVO.getPromptImage())) {
+            promptImage = StrUtil.join(",", drawReqVO.getPromptImage());
+        }
         AiVideoDO video = BeanUtils.toBean(drawReqVO, AiVideoDO.class).setUserId(userId)
         AiVideoDO video = BeanUtils.toBean(drawReqVO, AiVideoDO.class).setUserId(userId)
-                .setPlatform(model.getPlatform()).setPromptImage(drawReqVO.getPromptImage())
+                .setPlatform(model.getPlatform()).setPromptImage(promptImage)
                 .setModelId(model.getId()).setModel(model.getModel())
                 .setModelId(model.getId()).setModel(model.getModel())
                 .setPublicStatus(false).setStatus(AiVideoStatusEnum.IN_PROGRESS.getStatus());
                 .setPublicStatus(false).setStatus(AiVideoStatusEnum.IN_PROGRESS.getStatus());
         videoMapper.insert(video);
         videoMapper.insert(video);
@@ -123,7 +127,7 @@ public class AiVideoServiceImpl implements AiVideoService {
             //文本提示词
             //文本提示词
             String promptText = reqVO.getPrompt();
             String promptText = reqVO.getPrompt();
             // 第一帧图片
             // 第一帧图片
-            String promptImage = reqVO.getPromptImage();
+            List<String> promptImage = reqVO.getPromptImage();
             //视频分辨率
             //视频分辨率
             String resolution = reqVO.getResolution();
             String resolution = reqVO.getResolution();
             //视频时长
             //视频时长
@@ -141,13 +145,15 @@ public class AiVideoServiceImpl implements AiVideoService {
                     .build());
                     .build());
 
 
             // 首帧图片
             // 首帧图片
-            if (StrUtil.isNotBlank(promptImage)) {
-                contents.add(Content.builder()
-                        .type("image_url")
-                        .imageUrl(CreateContentGenerationTaskRequest.ImageUrl.builder()
-                                .url(promptImage) // 请上传可以访问的图片URL
-                                .build())
-                        .build());
+            if (CollUtil.isNotEmpty(promptImage)) {
+                promptImage.forEach(url -> {
+                    contents.add(Content.builder()
+                            .type("image_url")
+                            .imageUrl(CreateContentGenerationTaskRequest.ImageUrl.builder()
+                                    .url(url) // 请上传可以访问的图片URL
+                                    .build())
+                            .build());
+                });
             }
             }
 
 
             // 创建视频生成任务
             // 创建视频生成任务

+ 6 - 6
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/service/oauth2/OAuth2TokenServiceImpl.java

@@ -13,6 +13,7 @@ import cn.iocoder.byzs.framework.common.util.object.BeanUtils;
 import cn.iocoder.byzs.framework.security.core.LoginUser;
 import cn.iocoder.byzs.framework.security.core.LoginUser;
 import cn.iocoder.byzs.framework.tenant.core.context.TenantContextHolder;
 import cn.iocoder.byzs.framework.tenant.core.context.TenantContextHolder;
 import cn.iocoder.byzs.framework.tenant.core.util.TenantUtils;
 import cn.iocoder.byzs.framework.tenant.core.util.TenantUtils;
+import cn.iocoder.byzs.framework.web.core.util.WebFrameworkUtils;
 import cn.iocoder.byzs.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO;
 import cn.iocoder.byzs.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO;
 import cn.iocoder.byzs.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
 import cn.iocoder.byzs.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
 import cn.iocoder.byzs.module.system.dal.dataobject.oauth2.OAuth2ClientDO;
 import cn.iocoder.byzs.module.system.dal.dataobject.oauth2.OAuth2ClientDO;
@@ -28,10 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 
 import static cn.iocoder.byzs.framework.common.exception.util.ServiceExceptionUtil.exception0;
 import static cn.iocoder.byzs.framework.common.exception.util.ServiceExceptionUtil.exception0;
 import static cn.iocoder.byzs.framework.common.util.collection.CollectionUtils.convertSet;
 import static cn.iocoder.byzs.framework.common.util.collection.CollectionUtils.convertSet;
@@ -63,8 +61,10 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
     public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes) {
     public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes) {
         OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId);
         OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId);
 
 
-        // 删除用户之前的所有令牌,实现单点登录
-        removeUserTokens(userId, userType);
+        // 删除用户之前的所有令牌,实现单点登录(默认租户用户可以多设备登录)
+        if (!Objects.equals(TenantContextHolder.getTenantId(), WebFrameworkUtils.DEFAULT_TENANT_ID)){
+            removeUserTokens(userId, userType);
+        }
 
 
         // 创建刷新令牌
         // 创建刷新令牌
         OAuth2RefreshTokenDO refreshTokenDO = createOAuth2RefreshToken(userId, userType, clientDO, scopes);
         OAuth2RefreshTokenDO refreshTokenDO = createOAuth2RefreshToken(userId, userType, clientDO, scopes);

+ 3 - 0
byzs-web/src/main/java/cn/iocoder/byzs/module/web/controller/admin/ai/WebAiController.java

@@ -3,6 +3,7 @@ package cn.iocoder.byzs.module.web.controller.admin.ai;
 import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.byzs.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.byzs.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.byzs.framework.common.pojo.CommonResult;
 import cn.iocoder.byzs.framework.common.pojo.CommonResult;
+import cn.iocoder.byzs.framework.common.pojo.PageParam;
 import cn.iocoder.byzs.framework.common.pojo.PageResult;
 import cn.iocoder.byzs.framework.common.pojo.PageResult;
 import cn.iocoder.byzs.framework.common.util.object.BeanUtils;
 import cn.iocoder.byzs.framework.common.util.object.BeanUtils;
 import cn.iocoder.byzs.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.byzs.framework.tenant.core.aop.TenantIgnore;
@@ -70,6 +71,8 @@ public class WebAiController {
     @GetMapping("/selectRoleModel")
     @GetMapping("/selectRoleModel")
     @Operation(summary = "获得聊天角色分页")
     @Operation(summary = "获得聊天角色分页")
     public CommonResult<PageResult<WebAiChatRoleVO>> selectRoleModel(@Valid AiChatRolePageReqVO pageReqVO) {
     public CommonResult<PageResult<WebAiChatRoleVO>> selectRoleModel(@Valid AiChatRolePageReqVO pageReqVO) {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        pageReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
         PageResult<AiChatRoleDO> pageResult = chatRoleService.getChatRoleMyPage(pageReqVO, getLoginUserId());
         PageResult<AiChatRoleDO> pageResult = chatRoleService.getChatRoleMyPage(pageReqVO, getLoginUserId());
         return success(BeanUtils.toBean(pageResult, WebAiChatRoleVO.class));
         return success(BeanUtils.toBean(pageResult, WebAiChatRoleVO.class));
     }
     }