瀏覽代碼

【功能新增】AI:腾讯图像创作

zzt 4 月之前
父節點
當前提交
ecf4df8620
共有 13 個文件被更改,包括 353 次插入0 次删除
  1. 36 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/AiartCreationController.java
  2. 40 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/AiartStyleController.java
  3. 17 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/AiartReplaceBackgroundReqVO.java
  4. 18 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/AiartReplaceBackgroundResVO.java
  5. 16 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/BackgroundTemplateReqVO.java
  6. 28 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/BackgroundTemplateResVO.java
  7. 65 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/creation/AiartStyleBackgroundTemplateDO.java
  8. 33 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/creation/AiartStyleBackgroundTemplateMapper.java
  9. 21 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartCreationService.java
  10. 22 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartCreationServiceImpl.java
  11. 23 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartStyleService.java
  12. 27 0
      yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartStyleServiceImpl.java
  13. 7 0
      yudao-module-ai/yudao-spring-boot-starter-ai/pom.xml

+ 36 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/AiartCreationController.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.ai.controller.admin.creation;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.AiartReplaceBackgroundReqVO;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.AiartReplaceBackgroundResVO;
+import cn.iocoder.yudao.module.ai.service.creation.AiartCreationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+
+@Tag(name = "管理后台 - 艺术创作")
+@RestController
+@RequestMapping("/ai/artcreation")
+@Validated
+public class AiartCreationController {
+
+    @Resource
+    private AiartCreationService aiartCreationService;
+
+    @Operation(summary = "商品图替换背景")
+    @PostMapping("/replacebackground")
+    public CommonResult<AiartReplaceBackgroundResVO> replaceBackground(@Valid @RequestBody AiartReplaceBackgroundReqVO replaceBackgroundReqVO) {
+        return success(aiartCreationService.replaceBackground(getLoginUserId(), replaceBackgroundReqVO));
+    }
+
+
+}

+ 40 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/AiartStyleController.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.ai.controller.admin.creation;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateReqVO;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateResVO;
+import cn.iocoder.yudao.module.ai.dal.dataobject.creation.AiartStyleBackgroundTemplateDO;
+import cn.iocoder.yudao.module.ai.service.creation.AiartStyleService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 艺术创作模版")
+@RestController
+@RequestMapping("/ai/artstyle")
+@Validated
+public class AiartStyleController {
+
+    @Resource
+    private AiartStyleService aiartStyleService;
+
+    @PostMapping("/backgroundtemplate-list")
+    @Operation(summary = "获取商品背景模版列表")
+    @PreAuthorize("@ss.hasPermission('ai:artstyle-background:query')")
+    public CommonResult<List<BackgroundTemplateResVO>> queryBackgroundStyle(@Valid @RequestBody BackgroundTemplateReqVO backgroundTemplateReqVO) {
+        List<AiartStyleBackgroundTemplateDO> res = aiartStyleService.queryBackgroundStyle(backgroundTemplateReqVO);
+        return success(BeanUtils.toBean(res,BackgroundTemplateResVO.class));
+    }
+}

+ 17 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/AiartReplaceBackgroundReqVO.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 商品替换背景请求 VO")
+@Data
+public class AiartReplaceBackgroundReqVO {
+
+    @Schema(description = "提示词", requiredMode = Schema.RequiredMode.REQUIRED, example = "画一个长城")
+    @NotEmpty(message = "提示词不能为空")
+    @Size(max = 1200, message = "提示词最大 1200")
+    private String prompt;
+
+}

+ 18 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/AiartReplaceBackgroundResVO.java

@@ -0,0 +1,18 @@
+package cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 商品替换背景结果 VO")
+@Data
+public class AiartReplaceBackgroundResVO {
+
+    @Schema(description = "结果url", requiredMode = Schema.RequiredMode.REQUIRED, example = "根据参数不同不一样")
+    private String resultImage;
+
+    @Schema(description = "唯一请求 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "由服务端生成")
+    private String requestId;
+
+    @Schema(description = "MaskUrl", requiredMode = Schema.RequiredMode.REQUIRED, example = "如果 MaskUrl 未传,则返回使用内置商品分割算法得到的 Mask 结果")
+    private String maskImage;
+}

+ 16 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/BackgroundTemplateReqVO.java

@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - AI API 密钥新增/修改 Request VO")
+@Data
+public class BackgroundTemplateReqVO {
+
+    @Schema(description = "一级级次名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "通用")
+    private String fistLevelName;
+
+    @Schema(description = "二级级次名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "色彩背景")
+    private String secondLevelName;
+
+}

+ 28 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/creation/vo/style/BackgroundTemplateResVO.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 商品替换背景模版 VO")
+@Data
+public class BackgroundTemplateResVO {
+
+    @Schema(description = "一级分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "汽车、通用")
+    private String levelFirst;
+
+    @Schema(description = "二级分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "色彩背景")
+    private String levelSecond;
+
+    @Schema(description = "背景模版名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "彩虹渐变")
+    private String name;
+
+    @Schema(description = "背景模版提示词", requiredMode = Schema.RequiredMode.REQUIRED, example = "背景为彩虹渐变墙面,亮暖色,清新简约风格,喷涂效果")
+    private String prompt;
+
+    @Schema(description = "背景模版商品示例", requiredMode = Schema.RequiredMode.REQUIRED, example = "小熊玩偶")
+    private String demProduct;
+
+    @Schema(description = "背景模版商品示例效果", requiredMode = Schema.RequiredMode.REQUIRED, example = "url")
+    private String demUrl;
+}
+

+ 65 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/creation/AiartStyleBackgroundTemplateDO.java

@@ -0,0 +1,65 @@
+package cn.iocoder.yudao.module.ai.dal.dataobject.creation;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * AI art商品背景风格 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("ai_backgroundtemplate")
+@KeySequence("ai_chat_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class AiartStyleBackgroundTemplateDO extends BaseDO {
+    /**
+     * 编号
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String levelFirst;
+
+    /**
+     * 名称
+     */
+    private String levelSecond;
+    /**
+     * 模版名称
+     */
+    private String name;
+    /**
+     * 模版提示词
+     */
+    private String prompt;
+    /**
+     * 示例商品
+     */
+    private String demoProduct;
+
+    /**
+     * 示例效果
+     */
+    private String demoUrl;
+
+    /**
+     * 状态
+     *
+     * 枚举 {@link CommonStatusEnum}
+     */
+    private Integer status;
+
+}

+ 33 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/creation/AiartStyleBackgroundTemplateMapper.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.ai.dal.mysql.creation;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateReqVO;
+import cn.iocoder.yudao.module.ai.dal.dataobject.creation.AiartStyleBackgroundTemplateDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * AI style分隔 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface AiartStyleBackgroundTemplateMapper extends BaseMapperX<AiartStyleBackgroundTemplateDO> {
+
+    /**
+     * 获取有效的商品后端模版
+     * @param reqVO 请求对象
+     * @return 结果
+     */
+    default List<AiartStyleBackgroundTemplateDO> selectList(BackgroundTemplateReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<AiartStyleBackgroundTemplateDO>()
+                .eqIfPresent(AiartStyleBackgroundTemplateDO::getLevelFirst,reqVO.getFistLevelName())
+                .eqIfPresent(AiartStyleBackgroundTemplateDO::getLevelSecond,reqVO.getSecondLevelName())
+                .eqIfPresent(AiartStyleBackgroundTemplateDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
+                .orderByDesc(AiartStyleBackgroundTemplateDO::getId));
+    }
+
+}

+ 21 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartCreationService.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.ai.service.creation;
+
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.AiartReplaceBackgroundReqVO;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.AiartReplaceBackgroundResVO;
+
+/**
+ * AI创作Service 接口
+ *
+ * @author zzt
+ */
+public interface AiartCreationService {
+
+
+    /**
+     * 替换商品背景图片
+     * @param loginUserId 当前登录用户
+     * @param replaceBackgroundReqVO 请求对象
+     * @return 结果
+     */
+    AiartReplaceBackgroundResVO replaceBackground(Long loginUserId, AiartReplaceBackgroundReqVO replaceBackgroundReqVO);
+}

+ 22 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartCreationServiceImpl.java

@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.ai.service.creation;
+
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.AiartReplaceBackgroundReqVO;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.AiartReplaceBackgroundResVO;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * AI创作Service 实现类
+ *
+ * @author zzt
+ */
+@Service
+@Validated
+public class AiartCreationServiceImpl implements AiartCreationService {
+
+
+    @Override
+    public AiartReplaceBackgroundResVO replaceBackground(Long loginUserId, AiartReplaceBackgroundReqVO replaceBackgroundReqVO) {
+        return null;
+    }
+}

+ 23 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartStyleService.java

@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.ai.service.creation;
+
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateReqVO;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateResVO;
+import cn.iocoder.yudao.module.ai.dal.dataobject.creation.AiartStyleBackgroundTemplateDO;
+
+import java.util.List;
+
+/**
+ * AI风格Service 接口
+ *
+ * @author zzt
+ */
+public interface AiartStyleService {
+
+
+    /**
+     * 查询商品背景模版列表
+     * @param backgroundTemplateReqVO 商品背景模版请求对象
+     * @return 结果
+     */
+    List<AiartStyleBackgroundTemplateDO> queryBackgroundStyle(BackgroundTemplateReqVO backgroundTemplateReqVO);
+}

+ 27 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/creation/AiartStyleServiceImpl.java

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.ai.service.creation;
+
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateReqVO;
+import cn.iocoder.yudao.module.ai.controller.admin.creation.vo.style.BackgroundTemplateResVO;
+import cn.iocoder.yudao.module.ai.dal.dataobject.creation.AiartStyleBackgroundTemplateDO;
+import cn.iocoder.yudao.module.ai.dal.mysql.creation.AiartStyleBackgroundTemplateMapper;
+import cn.iocoder.yudao.module.ai.dal.mysql.model.AiApiKeyMapper;
+import jakarta.annotation.Resource;
+
+import java.util.List;
+
+/**
+ * AI风格Service 接口
+ *
+ * @author zzt
+ */
+public class AiartStyleServiceImpl implements AiartStyleService{
+
+    @Resource
+    private AiartStyleBackgroundTemplateMapper backgroundTemplateMapper;
+
+
+    @Override
+    public List<AiartStyleBackgroundTemplateDO> queryBackgroundStyle(BackgroundTemplateReqVO backgroundTemplateReqVO) {
+        return backgroundTemplateMapper.selectList(backgroundTemplateReqVO);
+    }
+}

+ 7 - 0
yudao-module-ai/yudao-spring-boot-starter-ai/pom.xml

@@ -117,6 +117,13 @@
             </exclusions>
         </dependency>
 
+        <!-- 腾讯大模型图像创作引擎-->
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java-aiart</artifactId>
+            <version>3.1.1215</version>
+        </dependency>
+
         <!-- Test 测试相关 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>