Browse Source

Merge remote-tracking branch 'origin/feature-1.0-img' into feature-1.1-bnyer-order

# Conflicts:
#	bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/ServiceNameConstants.java
#	bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/UserVip.java
#	bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/UserVipRecord.java
feature-1.1
wuxicheng 3 years ago
parent
commit
b9f71f6eab
  1. 26
      bnyer-api/bnyer-api-file/pom.xml
  2. 40
      bnyer-api/bnyer-api-file/src/main/java/com/bnyer/file/api/RemoteFileService.java
  3. 40
      bnyer-api/bnyer-api-file/src/main/java/com/bnyer/file/api/factory/RemoteFileFallbackFactory.java
  4. 2
      bnyer-api/bnyer-api-file/src/main/resources/META-INF/spring.factories
  5. 4
      bnyer-api/bnyer-api-system/src/main/java/com/bnyer/system/api/RemoteSystemFileService.java
  6. 8
      bnyer-api/bnyer-api-system/src/main/java/com/bnyer/system/api/factory/RemoteFileFallbackFactory.java
  7. 1
      bnyer-api/pom.xml
  8. 2
      bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java
  9. 15
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java
  10. 11
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/ServiceNameConstants.java
  11. 5
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/TiktokConstant.java
  12. 122
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/AiPaint.java
  13. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Banner.java
  14. 9
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/BaseDomain.java
  15. 2
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/BzData.java
  16. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CommonImgs.java
  17. 13
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java
  18. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CreatorAccount.java
  19. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CreatorProfit.java
  20. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Feedback.java
  21. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/FhUser.java
  22. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/ImgSignRelation.java
  23. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/InviteLog.java
  24. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/LevelInfo.java
  25. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Notice.java
  26. 52
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PaintStyle.java
  27. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Product.java
  28. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/ProductOrder.java
  29. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/ProfitVerifyOrder.java
  30. 38
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Prompt.java
  31. 27
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Sign.java
  32. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokCollection.java
  33. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokImg.java
  34. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokLike.java
  35. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokUser.java
  36. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Type.java
  37. 3
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/UserVip.java
  38. 3
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/UserVipRecord.java
  39. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/VerifyLog.java
  40. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/WithdrawLog.java
  41. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/WxUser.java
  42. 23
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/AiPaintPageDto.java
  43. 4
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorDto.java
  44. 41
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintStyleDto.java
  45. 22
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintStylePageDto.java
  46. 32
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PromptDto.java
  47. 22
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PromptPageDto.java
  48. 9
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/SignDto.java
  49. 29
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/SignFrontDto.java
  50. 6
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/SignPageDto.java
  51. 16
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/TextToImgDto.java
  52. 27
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/TranslateUtils.java
  53. 84
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/file/Base64ToMultipartFileUtils.java
  54. 3
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/file/ImageUtils.java
  55. 3
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/CreatorAccountVo.java
  56. 9
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/TextToImgVo.java
  57. 2
      bnyer-gateway/src/main/java/com/bnyer/gateway/filter/ValidateCodeFilter.java
  58. 140
      bnyer-services/bnyer-ai/pom.xml
  59. 33
      bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/BnyerAiApplication.java
  60. 32
      bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/controller/ChatGptController.java
  61. 6
      bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/service/ChatGptService.java
  62. 42
      bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/service/impl/ChatGptServiceImpl.java
  63. 22
      bnyer-services/bnyer-ai/src/main/resources/bootstrap-dev.yml
  64. 26
      bnyer-services/bnyer-ai/src/main/resources/bootstrap-grey.yml
  65. 22
      bnyer-services/bnyer-ai/src/main/resources/bootstrap-prod.yml
  66. 22
      bnyer-services/bnyer-ai/src/main/resources/bootstrap-test.yml
  67. 15
      bnyer-services/bnyer-ai/src/main/resources/bootstrap.yml
  68. 74
      bnyer-services/bnyer-ai/src/main/resources/logback.xml
  69. 2
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java
  70. 3
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/MinioSysFileServiceImpl.java
  71. 7
      bnyer-services/bnyer-img/pom.xml
  72. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/RestTemplateConfiguration.java
  73. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java
  74. 41
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java
  75. 76
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java
  76. 41
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java
  77. 29
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/AiPaintMapper.java
  78. 18
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PaintStyleMapper.java
  79. 18
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PromptMapper.java
  80. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/SignMapper.java
  81. 40
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/AiPaintService.java
  82. 25
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/HotSearchKeywordService.java
  83. 14
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PaintStyleService.java
  84. 14
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PromptService.java
  85. 17
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/SignService.java
  86. 44
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/AiPaintServiceImpl.java
  87. 3
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorAccountServiceImpl.java
  88. 27
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java
  89. 65
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/HotSearchKeywordServiceImpl.java
  90. 23
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PaintStyleServiceImpl.java
  91. 40
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PromptServiceimpl.java
  92. 48
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/SignServiceImpl.java
  93. 75
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java
  94. 18
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java
  95. 7
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java
  96. 50
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/AiPaintVo.java
  97. 31
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/PaintStyleVo.java
  98. 26
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/PromptVo.java
  99. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/SignVo.java
  100. 40
      bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/AiPaintMapper.xml

26
bnyer-api/bnyer-api-file/pom.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bnyer-api</artifactId>
<groupId>com.dimensionalnode</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>bnyer-api-file</artifactId>
<description>
bnyer-api-file文件服务接口模块
</description>
<dependencies>
<!-- bnyer Common Core-->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-core</artifactId>
</dependency>
</dependencies>
</project>

40
bnyer-api/bnyer-api-file/src/main/java/com/bnyer/file/api/RemoteFileService.java

@ -0,0 +1,40 @@
package com.bnyer.file.api;
import com.bnyer.common.core.constant.ServiceNameConstants;
import com.bnyer.common.core.domain.R;
import com.bnyer.file.api.factory.RemoteFileFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 文件服务
*
* @author penny
* @date 2023/04/15 11:03
*/
@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
public interface RemoteFileService {
/**
* 上传文件到minio
* @param file 文件
* @return -
*/
@PostMapping(value = "/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
R<String> uploadBanner(@RequestPart(name = "file") MultipartFile file);
/**
* 批量上传文件到七牛云
* @param files 文件
* @return -
*/
@PostMapping("/uploadBatch")
R<List<String>> uploadBatch(MultipartFile[] files);
}

40
bnyer-api/bnyer-api-file/src/main/java/com/bnyer/file/api/factory/RemoteFileFallbackFactory.java

@ -0,0 +1,40 @@
package com.bnyer.file.api.factory;
import com.bnyer.common.core.domain.R;
import com.bnyer.file.api.RemoteFileService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 文件服务降级处理
*
* @author penny
*/
@Component
public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService>
{
private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
@Override
public RemoteFileService create(Throwable throwable) {
log.error("api文件服务调用失败:{}", throwable.getMessage());
return new RemoteFileService()
{
@Override
public R<String> uploadBanner(MultipartFile file) {
return R.fail("远程调用minio文件上传失败:" + throwable.getMessage());
}
@Override
public R<List<String>> uploadBatch(MultipartFile[] files) {
return R.fail("远程调用七牛云批量文件上传失败:" + throwable.getMessage());
}
};
}
}

2
bnyer-api/bnyer-api-file/src/main/resources/META-INF/spring.factories

@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.bnyer.file.api.factory.RemoteFileFallbackFactory

4
bnyer-api/bnyer-api-system/src/main/java/com/bnyer/system/api/RemoteFileService.java → bnyer-api/bnyer-api-system/src/main/java/com/bnyer/system/api/RemoteSystemFileService.java

@ -15,8 +15,8 @@ import com.bnyer.system.api.domain.SysFile;
*
* @author ruoyi
*/
@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
public interface RemoteFileService
@FeignClient(contextId = "remoteSystemFileService", value = ServiceNameConstants.SYSTEM_FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
public interface RemoteSystemFileService
{
/**
* 上传文件

8
bnyer-api/bnyer-api-system/src/main/java/com/bnyer/system/api/factory/RemoteFileFallbackFactory.java

@ -6,7 +6,7 @@ import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.bnyer.common.core.domain.R;
import com.bnyer.system.api.RemoteFileService;
import com.bnyer.system.api.RemoteSystemFileService;
import com.bnyer.system.api.domain.SysFile;
/**
@ -15,15 +15,15 @@ import com.bnyer.system.api.domain.SysFile;
* @author ruoyi
*/
@Component
public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService>
public class RemoteFileFallbackFactory implements FallbackFactory<RemoteSystemFileService>
{
private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
@Override
public RemoteFileService create(Throwable throwable)
public RemoteSystemFileService create(Throwable throwable)
{
log.error("文件服务调用失败:{}", throwable.getMessage());
return new RemoteFileService()
return new RemoteSystemFileService()
{
@Override
public R<SysFile> upload(MultipartFile file)

1
bnyer-api/pom.xml

@ -11,6 +11,7 @@
<modules>
<module>bnyer-api-system</module>
<module>bnyer-api-img</module>
<module>bnyer-api-file</module>
</modules>
<artifactId>bnyer-api</artifactId>

2
bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java

@ -32,7 +32,7 @@ public class CreatorLoginService {
throw new ServiceException("当前艺术家被封禁,请联系客服处理!",TiktokConstant.TIKTOK_CREATOR_BANED_ERROR);
}
//更新登录时间
remoteImgService.updateLoginTime(creatorInfo.getData().getCreatorId());
remoteImgService.updateLoginTime(creatorInfo.getData().getCreator().getId());
return creatorInfo.getData();
}

15
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/RedisKeyConstant.java

@ -126,4 +126,19 @@ public class RedisKeyConstant {
* 艺术家粉丝数量键
*/
public static final String CREATOR_FANS_NUM_KEY = "bnyer.img.fans.num";
/**
* 特约邀请码键
*/
public static final String SPECIAL_INVITE_CODE_KEY = "bnyer.img.invite.status";
/**
* 热搜词
*/
public static final String HOT_KEY_WORD_KEY = "bnyer.hotkeyword";
/**
* 热搜词存入时间
*/
public static final String HOT_KEY_WORD_TIME_KEY = "bnyer.hotkeywordtime";
}

11
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/ServiceNameConstants.java

@ -18,9 +18,9 @@ public class ServiceNameConstants
public static final String SYSTEM_SERVICE = "bnyer-system";
/**
* 文件服务的serviceid
* 系统文件服务的serviceid
*/
public static final String FILE_SERVICE = "bnyer-file";
public static final String SYSTEM_FILE_SERVICE = "bnyer-system-file";
/**
* 图文服务的serviceid
@ -30,5 +30,10 @@ public class ServiceNameConstants
/**
* 订单服务的serviceid
*/
public static final String OORDER_SERVICE = "bnyer-order";
public static final String ORDER_SERVICE = "bnyer-order";
/**
* 文件服务的serviceid
*/
public static final String FILE_SERVICE = "bnyer-file";
}

5
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/TiktokConstant.java

@ -85,4 +85,9 @@ public class TiktokConstant {
* 调用微信获取广告收入信息失败
*/
public static final Integer WECHAT_INCOME_ERROR = 105014;
/**
* 邮箱已被注册使用
*/
public static final Integer EMAIL_EXIST_ERROR = 105015;
}

122
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/AiPaint.java

@ -0,0 +1,122 @@
package com.bnyer.common.core.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* ai绘画内容表
*/
@ApiModel(value="com-bnyer-common-core-domain-AiPaint")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "img_ai_paint")
public class AiPaint implements Serializable {
/**
* 主键Id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="主键Id")
private Long id;
/**
* 作品编号
*/
@TableField(value = "paint_id")
@ApiModelProperty(value="作品编号")
private String paintId;
/**
* 绘图者id
*/
@TableField(value = "painter_id")
@ApiModelProperty(value="绘图者id")
private Long painterId;
/**
* 绘图者昵称
*/
@TableField(value = "painter_name")
@ApiModelProperty(value="绘图者昵称")
private String painterName;
/**
* 图片
*/
@TableField(value = "img_url")
@ApiModelProperty(value="图片")
private String imgUrl;
/**
* 关键词
*/
@TableField(value = "prompt")
@ApiModelProperty(value="关键词")
private String prompt;
/**
* 模型名称
*/
@TableField(value = "model")
@ApiModelProperty(value="模型风格名称")
private String model;
/**
* 风格名称
*/
@TableField(value = "style_name")
@ApiModelProperty(value="风格名称")
private String styleName;
/**
* 图片高度
*/
@TableField(value = "height")
@ApiModelProperty(value="图片高度")
private String height;
/**
* 图片宽度
*/
@TableField(value = "width")
@ApiModelProperty(value="图片宽度")
private String width;
/**
* 是否显示 (0->隐藏1->显示)
*/
@TableField(value = "is_show")
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)")
private String isShow;
/**
* 平台(0->Hub;1->抖音;2->快手;3->微信)
*/
@TableField(value = "`source`")
@ApiModelProperty(value="平台(0->Hub;1->抖音;2->快手;3->微信)")
private String source;
/**
* 创建时间
*/
@TableField(value = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="创建时间")
private Date createTime;
private static final long serialVersionUID = 1L;
}

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Banner.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_banner")
public class Banner extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="id")
private Long id;
/**
* banner名称

9
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/BaseDomain.java

@ -1,6 +1,8 @@
package com.bnyer.common.core.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -17,6 +19,13 @@ import java.util.Date;
@ApiModel("公共实体类")
public class BaseDomain implements Serializable {
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="id")
private Long id;
/**
* 是否显示 (0->隐藏1->显示)
*/

2
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/BzData.java

@ -19,7 +19,7 @@ public class BzData {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.INPUT)
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="主键id")
private Long id;

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CommonImgs.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_common_imgs")
public class CommonImgs extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 图片地址

13
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java

@ -28,12 +28,6 @@ import java.util.Date;
@NoArgsConstructor
@TableName(value = "img_creator")
public class Creator extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 姓名
@ -63,6 +57,13 @@ public class Creator extends BaseDomain {
@ApiModelProperty(value="手机号")
private String phone;
/**
* 邮箱
*/
@TableField(value = "email")
@ApiModelProperty(value="邮箱")
private String email;
/**
* 头像img地址
*/

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CreatorAccount.java

@ -18,12 +18,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_creator_account")
public class CreatorAccount extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 艺术家id

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CreatorProfit.java

@ -27,12 +27,6 @@ import java.util.Date;
@NoArgsConstructor
@TableName(value = "img_creator_profit")
public class CreatorProfit extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 结算流水号

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Feedback.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_feedback")
public class Feedback extends BaseDomain {
/**
* 主键Id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键Id")
private Long id;
/**
* 反馈信息

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/FhUser.java

@ -24,12 +24,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_fh_user")
public class FhUser extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="id")
private Long id;
/**
* 用户昵称

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/ImgSignRelation.java

@ -21,10 +21,10 @@ import java.util.Date;
@TableName(value = "img_img_sign_relation")
public class ImgSignRelation implements Serializable {
/**
* 主键id
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="id")
private Long id;
/**

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/InviteLog.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_invite_log")
public class InviteLog extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 邀请码

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/LevelInfo.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_level_info")
public class LevelInfo extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 等级头衔名称

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Notice.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_notice")
public class Notice extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 标题

52
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PaintStyle.java

@ -0,0 +1,52 @@
package com.bnyer.common.core.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* 绘画-模型风格表
*/
@ApiModel(value="com-bnyer-common-core-domain-PaintStyle")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "img_paint_style")
public class PaintStyle extends BaseDomain {
/**
* 模型风格名称
*/
@TableField(value = "`name`")
@ApiModelProperty(value="模型风格名称")
private String name;
/**
* 模型名称
*/
@TableField(value = "model_name")
@ApiModelProperty(value="模型名称")
private String modelName;
/**
* 模型风格图片
*/
@TableField(value = "img_url")
@ApiModelProperty(value="模型风格图片")
private String imgUrl;
/**
* 是否热门(0->正常;1->热门)
*/
@TableField(value = "is_hot")
@ApiModelProperty(value="是否热门(0->正常;1->热门)")
private String isHot;
private static final long serialVersionUID = 1L;
}

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Product.java

@ -18,12 +18,6 @@ import java.math.BigDecimal;
@NoArgsConstructor
@TableName(value = "img_product")
public class Product extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 商品名称

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/ProductOrder.java

@ -22,10 +22,10 @@ import java.util.Date;
@TableName(value = "img_product_order")
public class ProductOrder implements Serializable {
/**
* 主键id
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="id")
private Long id;
/**

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/ProfitVerifyOrder.java

@ -30,10 +30,10 @@ import java.util.Date;
@TableName(value = "img_profit_verify_order")
public class ProfitVerifyOrder implements Serializable {
/**
* 主键id
* id
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="主键id")
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="id")
private Long id;
/**

38
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Prompt.java

@ -0,0 +1,38 @@
package com.bnyer.common.core.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* 绘画-提示词表
*/
@ApiModel(value="com-bnyer-common-core-domain-Prompt")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "img_prompt")
public class Prompt extends BaseDomain {
/**
* 提示词
*/
@TableField(value = "`text`")
@ApiModelProperty(value="提示词")
private String text;
/**
* 类型(0->绘画;1->gpt)
*/
@TableField(value = "`type`")
@ApiModelProperty(value="类型(0->绘画;1->gpt)")
private String type;
private static final long serialVersionUID = 1L;
}

27
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Sign.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_sign")
public class Sign extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 标签名称
@ -37,5 +31,26 @@ public class Sign extends BaseDomain {
@ApiModelProperty(value="背景图")
private String img;
/**
* 标签类型(0->系统标签;1->自定义标签)
*/
@TableField(value = "type")
@ApiModelProperty(value="标签类型(0->系统标签;1->自定义标签)")
private String type;
/**
* 状态(0->待审核;1->审核通过;2->审核拒绝)
*/
@TableField(value = "status")
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
/**
* 父id
*/
@TableField(value = "parent_id")
@ApiModelProperty(value="父id")
private Long parentId;
private static final long serialVersionUID = 1L;
}

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokCollection.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_collection")
public class TiktokCollection extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="id")
private Long id;
/**
* 用户id

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokImg.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_tiktok_img")
public class TiktokImg extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="id")
private Long id;
/**
* 图片地址

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokLike.java

@ -24,12 +24,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_like")
public class TiktokLike extends BaseDomain {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键")
private Long id;
/**
* 用户id

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/TiktokUser.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_tiktok_user")
public class TiktokUser extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="id")
private Long id;
/**
* 用户昵称

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Type.java

@ -16,12 +16,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_type")
public class Type extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="id")
private Long id;
/**
* 分类类型

3
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/UserVip.java

@ -18,12 +18,15 @@ import java.math.BigDecimal;
@NoArgsConstructor
@TableName(value = "img_user_vip")
public class UserVip extends BaseDomain {
<<<<<<< HEAD
/**
* 主键Id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="主键Id")
private Long id;
=======
>>>>>>> origin/feature-1.0-img
/**
* vip类型id

3
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/UserVipRecord.java

@ -20,12 +20,15 @@ import java.util.Date;
@NoArgsConstructor
@TableName(value = "img_user_vip_record")
public class UserVipRecord extends BaseDomain {
<<<<<<< HEAD
/**
* 主键id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="主键id")
private Long id;
=======
>>>>>>> origin/feature-1.0-img
/**
* 订单id

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/VerifyLog.java

@ -29,10 +29,10 @@ import java.util.Date;
@TableName(value = "img_verify_log")
public class VerifyLog implements Serializable {
/**
* 主键id
* id
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="主键id")
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="id")
private Long id;
/**

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/WithdrawLog.java

@ -20,12 +20,6 @@ import java.math.BigDecimal;
@NoArgsConstructor
@TableName(value = "img_withdraw_log")
public class WithdrawLog extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Integer id;
/**
* 流水号

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/WxUser.java

@ -24,12 +24,6 @@ import lombok.*;
@NoArgsConstructor
@TableName(value = "img_wx_user")
public class WxUser extends BaseDomain {
/**
* id
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="id")
private Long id;
/**
* 用户昵称

23
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/AiPaintPageDto.java

@ -0,0 +1,23 @@
package com.bnyer.common.core.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@ApiModel("ai绘画前端分页接收类")
public class AiPaintPageDto extends BasePageDto {
@NotEmpty(message = "平台渠道不能为空!")
@ApiModelProperty(value="平台渠道")
private String source;
@NotNull(message = "绘图者id不能为空!")
@ApiModelProperty(value="绘图者id")
private Long painterId;
}

4
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorDto.java

@ -26,6 +26,10 @@ public class CreatorDto implements Serializable {
@ApiModelProperty(value="手机号")
private String phone;
@NotBlank(message = "邮箱不能为空!")
@ApiModelProperty(value="邮箱")
private String email;
@NotBlank(message = "密码不能为空!")
@ApiModelProperty(value="密码")
private String password;

41
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintStyleDto.java

@ -0,0 +1,41 @@
package com.bnyer.common.core.dto;
import com.bnyer.common.core.domain.PaintStyle;
import com.bnyer.common.core.utils.bean.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("绘画风格入参接收类")
public class PaintStyleDto implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@ApiModelProperty(value="模型风格名称")
private String name;
@ApiModelProperty(value="模型名称")
private String modelName;
@ApiModelProperty(value="模型风格图片")
private String imgUrl;
@ApiModelProperty(value="是否热门(0->正常;1->热门)")
private String isHot;
@ApiModelProperty(value="排序")
private Integer sort;
public PaintStyle extractParam(){
PaintStyle paintStyle = new PaintStyle();
BeanUtils.copyProperties(this,paintStyle);
return paintStyle;
}
}

22
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintStylePageDto.java

@ -0,0 +1,22 @@
package com.bnyer.common.core.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@ApiModel("绘画风格分页接收类")
public class PaintStylePageDto extends BasePageDto {
@ApiModelProperty(value="模型风格名称")
private String name;
@ApiModelProperty(value="是否热门(0->正常;1->热门)")
private String isHot;
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)")
private String isShow;
}

32
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PromptDto.java

@ -0,0 +1,32 @@
package com.bnyer.common.core.dto;
import com.bnyer.common.core.domain.Prompt;
import com.bnyer.common.core.utils.bean.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("提示词入参接收类")
public class PromptDto implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@ApiModelProperty(value="提示词")
private String text;
@ApiModelProperty(value="类型(0->绘画;1->gpt)")
private String type;
public Prompt extractParam(){
Prompt prompt = new Prompt();
BeanUtils.copyProperties(this,prompt);
return prompt;
}
}

22
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PromptPageDto.java

@ -0,0 +1,22 @@
package com.bnyer.common.core.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@ApiModel("提示词分页接收类")
public class PromptPageDto extends BasePageDto {
@ApiModelProperty(value="提示词")
private String text;
@ApiModelProperty(value="类型(0->绘画;1->gpt)")
private String type;
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)")
private String isShow;
}

9
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/SignDto.java

@ -24,6 +24,15 @@ public class SignDto implements Serializable {
@ApiModelProperty(value="背景图")
private String img;
@ApiModelProperty(value="标签类型(0->系统标签;1->自定义标签)")
private String type;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
@ApiModelProperty(value="父id")
private Long parentId;
public Sign extractParam(){
Sign sign = new Sign();
BeanUtils.copyProperties(this,sign);

29
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/SignFrontDto.java

@ -0,0 +1,29 @@
package com.bnyer.common.core.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
@ApiModel("艺术家自定义标签接收类")
public class SignFrontDto implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@NotEmpty(message = "标签名称必填!")
@ApiModelProperty(value="标签名称")
private String name;
@NotNull(message = "父id必填!")
@ApiModelProperty(value="父id")
private Long parentId;
}

6
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/SignPageDto.java

@ -15,4 +15,10 @@ public class SignPageDto extends BasePageDto {
@ApiModelProperty(value="是否显示")
private String isShow;
@ApiModelProperty(value="标签类型(0->系统标签;1->自定义标签)")
private String type;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
}

16
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/TextToImgDto.java

@ -5,8 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ -27,6 +25,16 @@ public class TextToImgDto implements Serializable {
@ApiModelProperty(value="提示词")
private String prompt;
@ApiModelProperty(value="风格")
private String samplerIndex;
@ApiModelProperty(value="模型")
private String modelName;
@ApiModelProperty(value="风格名称")
private String styleName;
@ApiModelProperty(value="绘图者id")
private Long painterId;
@ApiModelProperty(value="绘图者昵称")
private String painterName;
}

27
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/TranslateUtils.java

@ -0,0 +1,27 @@
package com.bnyer.common.core.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 汉译英工具类
*/
public class TranslateUtils {
/**
* 字符串是否包含中文
*
* @param str 待校验字符串
* @return true 包含中文字符 false 不包含中文字符
* @throws Exception
*/
public static boolean isContainChinese(String str) throws Exception {
if (StringUtils.isEmpty(str)) {
throw new Exception("文本内容为空!");
}
Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");
Matcher m = p.matcher(str);
return m.find();
}
}

84
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/file/Base64ToMultipartFileUtils.java

@ -0,0 +1,84 @@
package com.bnyer.common.core.utils.file;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* @author
* @date 2023/04/16 16:40
* @description 转换base64为文件流
*/
public class Base64ToMultipartFileUtils implements MultipartFile {
private final byte[] fileContent;
private final String name;
private final String extension;
private final String contentType;
private final String originalFilename;
/**
* @param base64
* @param dataUri 格式类似于: data:image/png;base64
*/
public Base64ToMultipartFileUtils(String base64, String dataUri, String name, String originalfilename) {
this.fileContent = Base64.getDecoder().decode(base64.getBytes(StandardCharsets.UTF_8));
this.extension = dataUri.split(";")[0].split("/")[1];
this.contentType = dataUri.split(";")[0].split(":")[1];
this.originalFilename = originalfilename;
this.name = name;
}
/**
* 重要必须与请求接收方参数名称一致否则找不到参数
* @return
*/
@Override
public String getName() {
return this.name;
}
@Override
public String getOriginalFilename() {
return originalFilename;
}
@Override
public String getContentType() {
return contentType;
}
@Override
public boolean isEmpty() {
return fileContent == null || fileContent.length == 0;
}
@Override
public long getSize() {
return fileContent.length;
}
@Override
public byte[] getBytes() throws IOException {
return fileContent;
}
@Override
public ByteArrayInputStream getInputStream() throws IOException {
return new ByteArrayInputStream(fileContent);
}
@Override
public void transferTo(File file) throws IOException, IllegalStateException {
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(fileContent);
}
}
}

3
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/file/ImageUtils.java

@ -1,6 +1,7 @@
package com.bnyer.common.core.utils.file;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
@ -8,6 +9,8 @@ import java.util.Arrays;
import org.apache.poi.util.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
/**
* 图片处理工具类

3
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/CreatorAccountVo.java

@ -28,6 +28,9 @@ public class CreatorAccountVo implements Serializable {
@Desensitized(type = SensitiveTypeEnum.MOBILE_PHONE)
private String accountNo;
@ApiModelProperty(value="真实账户账号")
private String accountRealNo;
@ApiModelProperty(value="身份证(加密)")
@Desensitized(type = SensitiveTypeEnum.ID_CARD)
private String idNo;

9
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/TextToImgVo.java

@ -1,11 +1,13 @@
package com.bnyer.common.core.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@ -17,5 +19,12 @@ public class TextToImgVo implements Serializable {
@ApiModelProperty(value="图片base64集合")
private List<String> images;
@ApiModelProperty(value="创作时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date paintTime;
@ApiModelProperty(value="作品id")
private String paintId;
private static final long serialVersionUID = 1L;
}

2
bnyer-gateway/src/main/java/com/bnyer/gateway/filter/ValidateCodeFilter.java

@ -25,7 +25,7 @@ import reactor.core.publisher.Flux;
@Component
public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object>
{
private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register" };
private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register","/auth/creatorLogin" };
@Autowired
private ValidateCodeService validateCodeService;

140
bnyer-services/bnyer-ai/pom.xml

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bnyer-services</artifactId>
<groupId>com.dimensionalnode</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>bnyer-ai</artifactId>
<description>
bnyer-ai服务
</description>
<dependencies>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringCloud Alibaba Sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Swagger UI -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.fox.version}</version>
</dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- bnyer Common DataSource -->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-datasource</artifactId>
</dependency>
<!-- bnyer Common DataScope -->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-datascope</artifactId>
</dependency>
<!-- bnyer Common Log -->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-log</artifactId>
</dependency>
<!-- bnyer Common core -->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-core</artifactId>
</dependency>
<!-- bnyer Common Swagger -->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-swagger</artifactId>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--任务调度中心-->
<!-- <dependency>-->
<!-- <groupId>com.xuxueli</groupId>-->
<!-- <artifactId>xxl-job-core</artifactId>-->
<!-- <version>2.3.1</version>-->
<!-- </dependency>-->
<!--微信小程序工具包-->
<!-- <dependency>-->
<!-- <groupId>com.github.binarywang</groupId>-->
<!-- <artifactId>weixin-java-miniapp</artifactId>-->
<!-- <version>4.2.0</version>-->
<!-- </dependency>-->
<!--七牛云-->
<!-- <dependency>-->
<!-- <groupId>com.qiniu</groupId>-->
<!-- <artifactId>qiniu-java-sdk</artifactId>-->
<!-- <version>7.2.18</version>-->
<!-- </dependency>-->
<!--chatgpt-->
<dependency>
<groupId>com.github.plexpt</groupId>
<artifactId>chatgpt</artifactId>
<version>4.0.5</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.2</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

33
bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/BnyerAiApplication.java

@ -0,0 +1,33 @@
package com.bnyer.ai;
import com.bnyer.common.security.annotation.EnableCustomConfig;
import com.bnyer.common.security.annotation.EnableRyFeignClients;
import com.bnyer.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* ai模块
*
* @author penny
*/
@EnableCustomConfig
@EnableCustomSwagger2
@EnableRyFeignClients
@SpringBootApplication
@EnableAsync
public class BnyerAiApplication
{
public static void main(String[] args)
{
SpringApplication.run(BnyerAiApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ bnyerAi服务启动成功 ლ(´ڡ`ლ)゙ \n" +
"__________ \n" +
"\\______ \\ ____ ___.__. ___________ \n" +
" | | _// < | |/ __ \\_ __ \\\n" +
" | | \\ | \\___ \\ ___/| | \\/\n" +
" |______ /___| / ____|\\___ >__| \n" +
" \\/ \\/\\/ \\/ \n");
}
}

32
bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/controller/ChatGptController.java

@ -0,0 +1,32 @@
package com.bnyer.ai.controller;
import com.alibaba.fastjson.JSON;
import com.bnyer.ai.service.ChatGptService;
import com.bnyer.common.core.domain.Feedback;
import com.bnyer.common.core.dto.FeedBackDto;
import com.bnyer.common.core.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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;
@Api(value = "【AI】接口",tags = "【AI】接口")
@RestController
@RequestMapping("/ai")
public class ChatGptController {
@Autowired
private ChatGptService chatGptService;
@ApiOperation(value="chat")
@PostMapping(value = "/chatWithGpt")
public AjaxResult chatWithGpt(){
chatGptService.talkWithChatGpt();
return AjaxResult.success();
}
}

6
bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/service/ChatGptService.java

@ -0,0 +1,6 @@
package com.bnyer.ai.service;
public interface ChatGptService {
void talkWithChatGpt();
}

42
bnyer-services/bnyer-ai/src/main/java/com/bnyer/ai/service/impl/ChatGptServiceImpl.java

@ -0,0 +1,42 @@
package com.bnyer.ai.service.impl;
import com.bnyer.ai.service.ChatGptService;
import com.plexpt.chatgpt.ChatGPT;
import com.plexpt.chatgpt.entity.chat.ChatCompletion;
import com.plexpt.chatgpt.entity.chat.ChatCompletionResponse;
import com.plexpt.chatgpt.entity.chat.Message;
import com.plexpt.chatgpt.util.Proxys;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.net.Proxy;
import java.util.Arrays;
@Service
@Slf4j
public class ChatGptServiceImpl implements ChatGptService {
@Override
public void talkWithChatGpt() {
Proxy proxy = Proxys.http("18.179.21.104", 21584);
ChatGPT chatGPT = ChatGPT.builder()
.apiKey("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")
.proxy(proxy)
.timeout(100000)
.apiHost("https://api.openai.com/") //反向代理地址
.build()
.init();
Message system = Message.ofSystem("你现在是一个诗人,专门写七言绝句");
Message message = Message.of("写一段七言绝句诗,题目是:火锅!");
ChatCompletion chatCompletion = ChatCompletion.builder()
.model(ChatCompletion.Model.GPT_3_5_TURBO.getName())
.messages(Arrays.asList(system, message))
.maxTokens(3000)
.temperature(0.9)
.build();
ChatCompletionResponse response = chatGPT.chatCompletion(chatCompletion);
Message res = response.getChoices().get(0).getMessage();
System.out.println(res);
}
}

22
bnyer-services/bnyer-ai/src/main/resources/bootstrap-dev.yml

@ -0,0 +1,22 @@
spring:
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: http://117.50.61.7:8848
# 命名空间地址
namespace: c4f53d8c-0a91-4249-a804-f16f543ec3b0
# 命名空间分组
group: dev
config:
# 配置中心地址
server-addr: http://117.50.61.7:8848
# 配置文件格式
file-extension: yml
# 命名空间地址
namespace: c4f53d8c-0a91-4249-a804-f16f543ec3b0
# 命名空间分组
group: dev
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

26
bnyer-services/bnyer-ai/src/main/resources/bootstrap-grey.yml

@ -0,0 +1,26 @@
spring:
cloud:
nacos:
discovery:
# 解决部署在不同服务器访问不到的问题,需暴露外网ip
ip: 81.69.47.31
# 部署在不同服务器上的指定端口
port: 9102
# 服务注册地址
server-addr: http://175.24.122.142:8848
# 命名空间地址
namespace: abfe8ee6-161b-4f8f-b61f-51663bbfa4f9
# 命名空间分组
group: grey
config:
# 配置中心地址
server-addr: http://175.24.122.142:8848
# 配置文件格式
file-extension: yml
# 命名空间地址
namespace: abfe8ee6-161b-4f8f-b61f-51663bbfa4f9
# 命名空间分组
group: grey
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

22
bnyer-services/bnyer-ai/src/main/resources/bootstrap-prod.yml

@ -0,0 +1,22 @@
spring:
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: http://192.168.3.100:6001
# 命名空间地址
namespace: b133c9e5-9f8d-4ed4-9ebd-95557802889f
# 命名空间分组
group: prod
config:
# 配置中心地址
server-addr: http://192.168.3.100:6001
# 配置文件格式
file-extension: yml
# 命名空间地址
namespace: b133c9e5-9f8d-4ed4-9ebd-95557802889f
# 命名空间分组
group: prod
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

22
bnyer-services/bnyer-ai/src/main/resources/bootstrap-test.yml

@ -0,0 +1,22 @@
spring:
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: http://117.50.61.7:8848
# 命名空间地址
namespace: 1bf94455-a046-41e3-b7e4-c12fd11c3690
# 命名空间分组
group: test
config:
# 配置中心地址
server-addr: http://117.50.61.7:8848
# 配置文件格式
file-extension: yml
# 命名空间地址
namespace: 1bf94455-a046-41e3-b7e4-c12fd11c3690
# 命名空间分组
group: test
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

15
bnyer-services/bnyer-ai/src/main/resources/bootstrap.yml

@ -0,0 +1,15 @@
# Tomcat
server:
port: 9105
# Spring
spring:
main:
#解决循环依赖问题
allow-circular-references: true
application:
# 应用名称
name: bnyer-ai
profiles:
# 环境配置
active: dev

74
bnyer-services/bnyer-ai/src/main/resources/logback.xml

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/bnyer-ai" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>20</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>20</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.bnyer" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
</configuration>

2
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java

@ -107,7 +107,7 @@ public class SysFileController {
@ApiOperation(value="批量上传到minio")
@PostMapping("/upload")
@ResponseBody
public R uploadBanner(@RequestParam("file") MultipartFile file) {
public R<String> uploadBanner(@RequestParam("file") MultipartFile file) {
String url = null;
try {
url = minioService.uploadBanner(file);

3
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/MinioSysFileServiceImpl.java → bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/MinioSysFileServiceImpl.java

@ -1,7 +1,8 @@
package com.bnyer.file.service;
package com.bnyer.file.service.impl;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.file.config.MinioConfig;
import com.bnyer.file.service.MinioService;
import com.bnyer.file.utils.FileUploadUtils;
import com.bnyer.file.utils.ImgUtil;
import io.minio.MinioClient;

7
bnyer-services/bnyer-img/pom.xml

@ -83,6 +83,13 @@
<artifactId>bnyer-common-swagger</artifactId>
</dependency>
<!-- bnyer Api File -->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-api-file</artifactId>
<version>1.0.0</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/RestTemplateConfiguration.java

@ -21,7 +21,7 @@ public class RestTemplateConfiguration {
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(15000);
factory.setReadTimeout(5000);
factory.setReadTimeout(10000);
return factory;
}
}

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java

@ -362,6 +362,12 @@ public class CreatorMiniController extends BaseController {
return AjaxResult.success(signService.querySignList());
}
@ApiOperation(value="艺术家自定义创建标签")
@PostMapping(value = "/creatorSign")
public AjaxResult creatorSign(@RequestBody @ApiParam("自定义标签参数") SignFrontDto dto){
return AjaxResult.success(signService.creatorSign(dto));
}
@ApiOperation(value = "八字算命")
@PostMapping("/getYs")
public AjaxResult getYs(@RequestBody @ApiParam("八字运势") BzDto dto) {

41
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java

@ -76,6 +76,15 @@ public class FhMiniController extends BaseController {
@Autowired
private FollowService followService;
@Autowired
private HotSearchKeywordService hotSearchKeywordService;
@Autowired
private PaintStyleService paintStyleService;
@Autowired
private PromptService promptService;
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
public AjaxResult listBanner(){
@ -348,4 +357,36 @@ public class FhMiniController extends BaseController {
List<CreatorFollowVo> creatorFollowVos = followService.queryFollowCreatorList(dto.getUserId(), "1");
return getDataTable(creatorFollowVos);
}
@ApiOperation(value="获取近一个月热度最高的前10条热搜词")
@GetMapping(value = "/getHotKeywordList")
public AjaxResult getHotKeywordList(){
return AjaxResult.success(hotSearchKeywordService.getHotKeywordList());
}
@ApiOperation(value="点击增长热搜词热度次数")
@GetMapping(value = "/incrementHotKeywordScore/{keyword}")
public AjaxResult incrementHotKeywordScore(@PathVariable @ApiParam("热搜词") String keyword){
hotSearchKeywordService.incrementHotKeywordScore(keyword);
return AjaxResult.success();
}
@ApiOperation(value="添加热搜词")
@GetMapping(value = "/insertHotKeyword/{keyword}")
public AjaxResult insertHotKeyword(@PathVariable @ApiParam("热搜词") String keyword){
hotSearchKeywordService.insertHotKeyword(keyword);
return AjaxResult.success();
}
@ApiOperation(value="获取绘画风格列表")
@GetMapping(value = "/getPaintStyle")
public AjaxResult getPaintStyle(){
return AjaxResult.success(paintStyleService.queryPaintStyleList());
}
@ApiOperation(value="获取提示词列表")
@GetMapping(value = "/getPrompt")
public AjaxResult getPrompt(){
return AjaxResult.success(promptService.queryPromptList());
}
}

76
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java

@ -6,7 +6,6 @@ import com.bnyer.common.core.constant.TiktokConstant;
import com.bnyer.common.core.domain.Feedback;
import com.bnyer.common.core.domain.R;
import com.bnyer.common.core.dto.*;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
@ -22,6 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -76,6 +77,21 @@ public class TiktokMiniController extends BaseController {
@Autowired
private FollowService followService;
@Autowired
private HotSearchKeywordService hotSearchKeywordService;
@Autowired
private PaintStyleService paintStyleService;
@Autowired
private PromptService promptService;
@Autowired
private StableDiffusionService stableDiffusionService;
@Autowired
private AiPaintService aiPaintService;
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
public AjaxResult listBanner(){
@ -283,13 +299,15 @@ public class TiktokMiniController extends BaseController {
@ApiOperation(value="根据标签名称查询图片分页")
@PostMapping(value = "/querySignImgBySignName")
public TableDataInfo querySignImgBySignName(@RequestBody @ApiParam("分页对象") SignImgNamePageDto dto){
public TableDataInfo querySignImgBySignName(@RequestBody @ApiParam("分页对象") SignImgNamePageDto dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.queryImgPageBySignName(dto.getSignName());
if(tiktokImgs.size() <= 0){
throw new ServiceException("该标签名称不存在!");
List<TiktokImgVo> tiktokImgVos = tiktokImgService.queryImgPageBySignName(dto.getSignName());
if(tiktokImgVos != null){
return getDataTable(tiktokImgVos);
}else{
return getDataTable(new ArrayList<>());
}
return getDataTable(tiktokImgs);
}
@ -370,4 +388,50 @@ public class TiktokMiniController extends BaseController {
List<CreatorFollowVo> creatorFollowVos = followService.queryFollowCreatorList(dto.getUserId(), "0");
return getDataTable(creatorFollowVos);
}
@ApiOperation(value="获取近一个月热度最高的前10条热搜词")
@GetMapping(value = "/getHotKeywordList")
public AjaxResult getHotKeywordList(){
return AjaxResult.success(hotSearchKeywordService.getHotKeywordList());
}
@ApiOperation(value="点击增长热搜词热度次数")
@GetMapping(value = "/incrementHotKeywordScore/{keyword}")
public AjaxResult incrementHotKeywordScore(@PathVariable @ApiParam("热搜词") String keyword){
hotSearchKeywordService.incrementHotKeywordScore(keyword);
return AjaxResult.success();
}
@ApiOperation(value="添加热搜词")
@GetMapping(value = "/insertHotKeyword/{keyword}")
public AjaxResult insertHotKeyword(@PathVariable @ApiParam("热搜词") String keyword){
hotSearchKeywordService.insertHotKeyword(keyword);
return AjaxResult.success();
}
@ApiOperation(value="获取绘画风格列表")
@GetMapping(value = "/getPaintStyle")
public AjaxResult getPaintStyle(){
return AjaxResult.success(paintStyleService.queryPaintStyleList());
}
@ApiOperation(value="获取提示词列表")
@GetMapping(value = "/getPrompt")
public AjaxResult getPrompt(){
return AjaxResult.success(promptService.queryPromptList());
}
@ApiOperation(value="文生图")
@PostMapping(value = "/textToImg")
public AjaxResult textToImg(@Validated @RequestBody @ApiParam("文生图对象") TextToImgDto param){
return AjaxResult.success(stableDiffusionService.textToImg(param));
}
@ApiOperation(value="获取绘画者ai绘画分页")
@PostMapping(value = "/getAiPaintPage")
public TableDataInfo getAiPaintPage(@Validated @RequestBody @ApiParam("ai绘画对象") AiPaintPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<AiPaintVo> aiPaintList = aiPaintService.queryPage(dto);
return getDataTable(aiPaintList);
}
}

41
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java

@ -76,6 +76,15 @@ public class WxMiniController extends BaseController {
@Autowired
private FollowService followService;
@Autowired
private HotSearchKeywordService hotSearchKeywordService;
@Autowired
private PaintStyleService paintStyleService;
@Autowired
private PromptService promptService;
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
@ -377,4 +386,36 @@ public class WxMiniController extends BaseController {
List<CreatorFollowVo> creatorFollowVos = followService.queryFollowCreatorList(dto.getUserId(), "2");
return getDataTable(creatorFollowVos);
}
@ApiOperation(value="获取近一个月热度最高的前10条热搜词")
@GetMapping(value = "/getHotKeywordList")
public AjaxResult getHotKeywordList(){
return AjaxResult.success(hotSearchKeywordService.getHotKeywordList());
}
@ApiOperation(value="点击增长热搜词热度次数")
@GetMapping(value = "/incrementHotKeywordScore/{keyword}")
public AjaxResult incrementHotKeywordScore(@PathVariable @ApiParam("热搜词") String keyword){
hotSearchKeywordService.incrementHotKeywordScore(keyword);
return AjaxResult.success();
}
@ApiOperation(value="添加热搜词")
@GetMapping(value = "/insertHotKeyword/{keyword}")
public AjaxResult insertHotKeyword(@PathVariable @ApiParam("热搜词") String keyword){
hotSearchKeywordService.insertHotKeyword(keyword);
return AjaxResult.success();
}
@ApiOperation(value="获取绘画风格列表")
@GetMapping(value = "/getPaintStyle")
public AjaxResult getPaintStyle(){
return AjaxResult.success(paintStyleService.queryPaintStyleList());
}
@ApiOperation(value="获取提示词列表")
@GetMapping(value = "/getPrompt")
public AjaxResult getPrompt(){
return AjaxResult.success(promptService.queryPromptList());
}
}

29
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/AiPaintMapper.java

@ -0,0 +1,29 @@
package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.common.core.domain.AiPaint;
import com.bnyer.common.core.dto.AiPaintPageDto;
import com.bnyer.img.vo.AiPaintVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface AiPaintMapper extends BaseMapper<AiPaint> {
/**
* 获取ai绘画分页
* @param source 来源
* @param painterId 绘画者id
* @return -
*/
List<AiPaintVo> queryPage(@Param("source") String source,@Param("painterId") Long painterId);
/**
* 获取ai绘画详情
* @param id 主键id
* @return -
*/
AiPaintVo queryDetails(Long id);
}

18
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PaintStyleMapper.java

@ -0,0 +1,18 @@
package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.common.core.domain.PaintStyle;
import com.bnyer.img.vo.PaintStyleVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PaintStyleMapper extends BaseMapper<PaintStyle> {
/**
* 获取绘画风格列表
* @return -
*/
List<PaintStyleVo> queryList();
}

18
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PromptMapper.java

@ -0,0 +1,18 @@
package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.common.core.domain.Prompt;
import com.bnyer.img.vo.PromptVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PromptMapper extends BaseMapper<Prompt> {
/**
* 获取提示词列表
* @param type 类型
* @return -
*/
List<PromptVo> queryList(String type);
}

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/SignMapper.java

@ -12,7 +12,7 @@ import java.util.List;
@Mapper
public interface SignMapper extends BaseMapper<Sign> {
/**
* 查询上传页面标签列表
* 查询上传页面审核通过标签列表
* @return -
*/
List<SignVo> querySignList();

40
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/AiPaintService.java

@ -0,0 +1,40 @@
package com.bnyer.img.service;
import com.bnyer.common.core.domain.AiPaint;
import com.bnyer.common.core.dto.AiPaintPageDto;
import com.bnyer.img.vo.AiPaintVo;
import java.util.List;
public interface AiPaintService {
/**
* 新增ai绘画
* @param aiPaint ai绘画
* @return -
*/
int insert(AiPaint aiPaint);
/**
* 批量删除ai绘画
* @param ids id数组
* @return -
*/
int delete(List<Long> ids);
/**
* 获取绘画者ai绘画分页
* @param params 分页参数
* @return -
*/
List<AiPaintVo> queryPage(AiPaintPageDto params);
/**
* 获取ai绘画详情
* @param id 主键id
* @return -
*/
AiPaintVo queryDetails(Long id);
}

25
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/HotSearchKeywordService.java

@ -0,0 +1,25 @@
package com.bnyer.img.service;
import java.util.List;
public interface HotSearchKeywordService {
/**
* 获取最近一个月搜索次数最多的前10条记录
* @return -
*/
List<String> getHotKeywordList();
/**
* 点击增长热搜词热度次数
* @param keyword 热搜词
* @return -
*/
void incrementHotKeywordScore(String keyword);
/**
* 新增热搜词
* @param keyword 热搜词
*/
void insertHotKeyword(String keyword);
}

14
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PaintStyleService.java

@ -0,0 +1,14 @@
package com.bnyer.img.service;
import com.bnyer.img.vo.PaintStyleVo;
import java.util.List;
public interface PaintStyleService {
/**
* 获取绘画风格列表
* @return -
*/
List<PaintStyleVo> queryPaintStyleList();
}

14
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PromptService.java

@ -0,0 +1,14 @@
package com.bnyer.img.service;
import com.bnyer.img.vo.PromptVo;
import java.util.List;
public interface PromptService {
/**
* 随机获取8条提示词列表
* @return -
*/
List<PromptVo> queryPromptList();
}

17
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/SignService.java

@ -1,5 +1,6 @@
package com.bnyer.img.service;
import com.bnyer.common.core.dto.SignFrontDto;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.SignVo;
@ -7,6 +8,13 @@ import java.util.List;
public interface SignService {
/**
* 艺术家自定义创建标签
* @param dto 标签参数
* @return -
*/
int creatorSign(SignFrontDto dto);
/**
* 查询上传页面标签列表
* @return -
@ -20,11 +28,18 @@ public interface SignService {
List<SignImgVo> queryFrontSignByTypeId(Long typeId);
/**
* 修改艺术家端标签
* 修改艺术家端关联图片德尔标签
* @param imgId 图片id
* @param typeId 分类id
* @param signIds 标签列表
* @return -
*/
void modifySign(Long imgId,Long typeId,List<Long> signIds);
/**
* 检查是否存在重复名称
* @param signNameList 标签列表
* @return -
*/
void checkRepeat(String[] signNameList);
}

44
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/AiPaintServiceImpl.java

@ -0,0 +1,44 @@
package com.bnyer.img.service.impl;
import cn.hutool.core.util.IdUtil;
import com.bnyer.common.core.domain.AiPaint;
import com.bnyer.common.core.dto.AiPaintPageDto;
import com.bnyer.common.core.utils.uuid.IdUtils;
import com.bnyer.img.mapper.AiPaintMapper;
import com.bnyer.img.service.AiPaintService;
import com.bnyer.img.vo.AiPaintVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
public class AiPaintServiceImpl implements AiPaintService {
@Autowired
private AiPaintMapper aiPaintMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public int insert(AiPaint aiPaint) {
return aiPaintMapper.insert(aiPaint);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int delete(List<Long> ids) {
return aiPaintMapper.deleteBatchIds(ids);
}
@Override
public List<AiPaintVo> queryPage(AiPaintPageDto params) {
return aiPaintMapper.queryPage(params.getSource(),params.getPainterId());
}
@Override
public AiPaintVo queryDetails(Long id) {
return aiPaintMapper.queryDetails(id);
}
}

3
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorAccountServiceImpl.java

@ -83,6 +83,9 @@ public class CreatorAccountServiceImpl implements CreatorAccountService {
creatorAccountVo.setIdNo(Sm4Util.sm4Decrypt(creatorAccountVo.getIdNo()));
}
if(StringUtils.isNotBlank(creatorAccountVo.getAccountNo())){
//设置真实已加密的账户账号
creatorAccountVo.setAccountRealNo(creatorAccountVo.getAccountNo());
//设置返回给前端展示的脱敏的账户账号
creatorAccountVo.setAccountNo(Sm4Util.sm4Decrypt(creatorAccountVo.getAccountNo()));
}
JSONObject.parseObject(DesensitizedUtils.getJsonNoCopy(creatorAccountVo), CreatorAccountVo.class);

27
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java

@ -99,8 +99,16 @@ public class CreatorServiceImpl implements CreatorService {
if(creatorProtoType == null){
throw new ServiceException("邀请码不存在,请重新编辑!", TiktokConstant.INVITE_CODE_NOT_EXIST);
}
//检验邮箱是否存在
LambdaQueryWrapper<Creator> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(Creator::getEmail, StringUtils.trim(dto.getEmail()));
Creator creatorProtoEmail = creatorMapper.selectOne(wrapper2);
if(creatorProtoEmail != null){
throw new ServiceException("邮箱已被注册,请重新编辑!", TiktokConstant.EMAIL_EXIST_ERROR);
}
Creator creator = new Creator();
creator.setName(StringUtils.trim(dto.getName()));
creator.setEmail(StringUtils.trim(dto.getEmail()));
creator.setPassword(Sm4Util.sm4Encryption(StringUtils.trim(dto.getPassword())));
creator.setImg(StringUtils.trim(dto.getImg()));
creator.setIntro(StringUtils.trim(dto.getIntro()));
@ -117,14 +125,21 @@ public class CreatorServiceImpl implements CreatorService {
creator.setUpdateTime(new Date());
int insert = creatorMapper.insert(creator);
log.info("手机号【{}】成为艺术家成功!待审核",StringUtils.trim(dto.getPhone()));
//获取特约邀请码状态
String codeStatus = null;
String redisKey = RedisKeyConstant.SPECIAL_INVITE_CODE_KEY;
if(redisService.hasKey(redisKey)){
codeStatus = (String) redisService.getCacheObject(redisKey);
}
//保存邀请记录
InviteLog inviteLog = new InviteLog();
//TODO 如果特约邀请码为xxx,则被邀请用户id为它自己。想让其失效则直接数据库里删除专属邀请码那个账户字段的邀请码即可
// if(StringUtils.trim(dto.getInviteCode()).equals("BNYER")){
// inviteLog.setInvitedCreatorId(creatorProtoType.getId());
// }else{
// inviteLog.setInvitedCreatorId(creator.getId());
// }
// 如果特约邀请码为"BNYER",则被邀请用户id为它自己。想让其失效则直接后台管理系统邀请记录页面关闭即可
if(StringUtils.trim(dto.getInviteCode()).equals("BNYER") && Objects.requireNonNull(codeStatus).equals("1")){
inviteLog.setInvitedCreatorId(creatorProtoType.getId());
}else{
inviteLog.setInvitedCreatorId(creator.getId());
}
inviteLog.setInviteCode(StringUtils.trim(dto.getInviteCode()));
inviteLog.setCreatorId(creatorProtoType.getId());
inviteLog.setCreateTime(new Date());

65
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/HotSearchKeywordServiceImpl.java

@ -0,0 +1,65 @@
package com.bnyer.img.service.impl;
import com.bnyer.common.core.constant.RedisKeyConstant;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.service.HotSearchKeywordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Service
@Slf4j
public class HotSearchKeywordServiceImpl implements HotSearchKeywordService {
@Autowired
private RedisService redisService;
@Override
public List<String> getHotKeywordList() {
Long now = System.currentTimeMillis();
List<String> result = new ArrayList<>();
ZSetOperations zSetOperations = redisService.redisTemplate.opsForZSet();
HashOperations hashOperations = redisService.redisTemplate.opsForHash();
Set<String> value = zSetOperations.reverseRangeByScore(RedisKeyConstant.HOT_KEY_WORD_KEY, 0, Double.MAX_VALUE);
//key不为空的时候 推荐相关的最热前十名
for (String val : value) {
if (result.size() > 9) {//只返回最热的前十名
break;
}
Long time = Long.valueOf((String) hashOperations.get(RedisKeyConstant.HOT_KEY_WORD_TIME_KEY, val));
if ((now - time) < 2592000000L) {//返回最近一个月的数据
result.add(val);
} else {//时间超过一个月没搜索就把这个词热度归0
zSetOperations.add(RedisKeyConstant.HOT_KEY_WORD_KEY, val, 0);
}
}
return result;
}
@Override
public void incrementHotKeywordScore(String keyword) {
Long now = System.currentTimeMillis();
ZSetOperations zSetOperations = redisService.redisTemplate.opsForZSet();
HashOperations hashOperations = redisService.redisTemplate.opsForHash();
zSetOperations.incrementScore(RedisKeyConstant.HOT_KEY_WORD_KEY, keyword, 1);
hashOperations.put(RedisKeyConstant.HOT_KEY_WORD_TIME_KEY,keyword,String.valueOf(now));
}
@Override
public void insertHotKeyword(String keyword) {
Long now = System.currentTimeMillis();
ZSetOperations zSetOperations = redisService.redisTemplate.opsForZSet();
HashOperations hashOperations = redisService.redisTemplate.opsForHash();
zSetOperations.incrementScore(RedisKeyConstant.HOT_KEY_WORD_KEY, keyword, 1);
hashOperations.put(RedisKeyConstant.HOT_KEY_WORD_TIME_KEY,keyword,String.valueOf(now));
}
}

23
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PaintStyleServiceImpl.java

@ -0,0 +1,23 @@
package com.bnyer.img.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bnyer.common.core.domain.PaintStyle;
import com.bnyer.img.mapper.PaintStyleMapper;
import com.bnyer.img.service.PaintStyleService;
import com.bnyer.img.vo.PaintStyleVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class PaintStyleServiceImpl implements PaintStyleService {
@Autowired
private PaintStyleMapper paintStyleMapper;
@Override
public List<PaintStyleVo> queryPaintStyleList() {
return paintStyleMapper.queryList();
}
}

40
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PromptServiceimpl.java

@ -0,0 +1,40 @@
package com.bnyer.img.service.impl;
import com.bnyer.img.mapper.PromptMapper;
import com.bnyer.img.service.PromptService;
import com.bnyer.img.vo.PromptVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class PromptServiceimpl implements PromptService {
@Autowired
private PromptMapper promptMapper;
@Override
public List<PromptVo> queryPromptList() {
//type:0->绘画;1->gpt
List<PromptVo> promptVos = promptMapper.queryList("0");
List<PromptVo> news = new ArrayList<>();
Map<Integer,String> map = new HashMap<>();
//随机抽10条数据展示在页面上
if (promptVos.size() <= 30) {
return promptVos;
}else{
while (map.size() < 30) {
int random = (int)(Math.random() * promptVos.size());
if (!map.containsKey(random)) {
map.put(random, "");
news.add(promptVos.get(random));
}
}
}
return news;
}
}

48
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/SignServiceImpl.java

@ -2,6 +2,10 @@ package com.bnyer.img.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bnyer.common.core.domain.ImgSignRelation;
import com.bnyer.common.core.domain.Sign;
import com.bnyer.common.core.dto.SignFrontDto;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.img.mapper.ImgSignRelationMapper;
import com.bnyer.img.mapper.SignMapper;
import com.bnyer.img.service.SignService;
@ -10,7 +14,9 @@ import com.bnyer.img.vo.SignVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
@ -22,6 +28,29 @@ public class SignServiceImpl implements SignService {
@Autowired
private ImgSignRelationMapper imgSignRelationMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public int creatorSign(SignFrontDto dto) {
if(StringUtils.isNotEmpty(dto.getName())){
String[] splitNameList = dto.getName().split("、");
//检查是否存在重复的
checkRepeat(splitNameList);
for (int i = 0; i < splitNameList.length; i++) {
Sign sign = new Sign();
sign.setName(splitNameList[i]);
sign.setType("1");
sign.setStatus("0");
sign.setCreateTime(new Date());
sign.setUpdateTime(new Date());
sign.setIsShow("1");
sign.setSort(0);
sign.setParentId(dto.getParentId());
return signMapper.insert(sign);
}
}
return 0;
}
@Override
public List<SignVo> querySignList() {
return signMapper.querySignList();
@ -33,6 +62,7 @@ public class SignServiceImpl implements SignService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void modifySign(Long imgId, Long typeId, List<Long> signIds) {
//查询删除原有标签
LambdaQueryWrapper<ImgSignRelation> wrapper = new LambdaQueryWrapper<>();
@ -41,4 +71,22 @@ public class SignServiceImpl implements SignService {
//插入新标签到关系表
imgSignRelationMapper.batctInsert(imgId,typeId,signIds);
}
@Override
public void checkRepeat(String[] signNameList) {
if(signNameList.length > 0){
for (String name : signNameList) {
LambdaQueryWrapper<Sign> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Sign::getName, name);
Sign sign = signMapper.selectOne(wrapper);
if(sign != null){
throw new ServiceException("自定义标签["+name+"]已存在,请重新编辑!");
}
//检查长度是否大于8
if(name.length() > 8){
throw new ServiceException("自定义标签["+name+"]长度大于8,请重新编辑!");
}
}
}
}
}

75
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java

@ -1,15 +1,26 @@
package com.bnyer.img.service.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.domain.AiPaint;
import com.bnyer.common.core.domain.R;
import com.bnyer.common.core.dto.TextToImgDto;
import com.bnyer.common.core.utils.TranslateUtils;
import com.bnyer.common.core.utils.file.Base64ToMultipartFileUtils;
import com.bnyer.common.core.utils.file.ImageUtils;
import com.bnyer.common.core.vo.TextToImgVo;
import com.bnyer.file.api.RemoteFileService;
import com.bnyer.img.service.AiPaintService;
import com.bnyer.img.service.StableDiffusionService;
import com.bnyer.system.api.RemoteSystemFileService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -21,11 +32,30 @@ public class StableDiffusionServiceImpl implements StableDiffusionService {
@Autowired
private RestTemplate restTemplate;
@Autowired
private AiPaintService aiPaintService;
@Autowired
private RemoteFileService remoteFileService;
@Override
public TextToImgVo textToImg(TextToImgDto param) {
try{
//String prompt = "";
//判断prompt是否包含中文,中文则翻译,否则跳过
// if(TranslateUtils.isContainChinese(param.getPrompt())){
// //调用翻译api
// //prompt =
// prompt = param.getPrompt();
// }else{
// prompt = param.getPrompt();
// }
//TODO 根据选择的风格来选择模型
Map<String, Object> map = new HashMap<>();
map.put("width",param.getWidth());
map.put("height",param.getHeight());
map.put("width",param.getWidth() == null ? 512 : param.getWidth());
map.put("height",param.getHeight() == null ? 512 : param.getHeight());
//map.put("prompt", prompt);
map.put("prompt", param.getPrompt());
map.put("seed",-1);
map.put("batch_size",1);
@ -33,18 +63,51 @@ public class StableDiffusionServiceImpl implements StableDiffusionService {
map.put("restore_faces",false);
map.put("tiling",false);
map.put("eta",0);
map.put("sampler_index","Euler");
map.put("sampler_index","DPM++ 2S a Karras");
//map.put("sampler_index",param.getSamplerIndex());
map.put("steps",20);
map.put("steps",25);
map.put("negative_prompt","nsfw");
log.info("请求stable_diffusion请求体为:【{}】", JSON.toJSONString(map));
JSONObject jsonObject = restTemplate.postForObject("http://localhost:7860/sdapi/v1/txt2img", map, JSONObject.class);
log.info("请求stable_diffusion响应体的为:【{}】", JSON.toJSONString(jsonObject));
TextToImgVo img = new TextToImgVo();
if(jsonObject != null && jsonObject.getJSONArray("images").size() > 0){
img.setImages(jsonObject.getJSONArray("images").toJavaList(String.class));
List<String> images = jsonObject.getJSONArray("images").toJavaList(String.class);
img.setImages(images);
String paintId = null;
Date paintTime = null;
for (String image : images) {
//base64转file
MultipartFile file = new Base64ToMultipartFileUtils(image, "data:image/png;base64", "file", "tempSDImg");
//上传图片到七牛云/minio
String imgStr = remoteFileService.uploadBanner(file).getData();
//保存生辰该图片到ai绘画表
AiPaint paint = new AiPaint();
//paint.setId(); 主键改成雪花算法后启用
paintId = IdUtil.getSnowflakeNextIdStr();
paintTime = new Date();
paint.setPaintId(paintId);
paint.setCreateTime(paintTime);
paint.setImgUrl(imgStr);
paint.setPrompt(param.getPrompt());
paint.setModel(param.getModelName());
paint.setStyleName(param.getStyleName());
paint.setHeight(param.getHeight() == null ? "512" : String.valueOf(param.getHeight()));
paint.setWidth(param.getWidth() == null ? "512" : String.valueOf(param.getWidth()));
paint.setIsShow("1");
paint.setSource("1");
paint.setPainterId(param.getPainterId());
paint.setPainterName(param.getPainterName());
aiPaintService.insert(paint);
}
img.setPaintId(paintId);
img.setPaintTime(paintTime);
}
return img;
}catch (Exception e){
log.error("文本翻译错误!"+e);
}
return null;
}
@Override

18
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java

@ -8,12 +8,14 @@ import com.bnyer.common.core.domain.TiktokImg;
import com.bnyer.common.core.domain.TiktokLike;
import com.bnyer.common.core.dto.StatusDto;
import com.bnyer.common.core.dto.TiktokImgMiniDto;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.constants.StatusImgConstant;
import com.bnyer.img.mapper.ImgSignRelationMapper;
import com.bnyer.img.mapper.TiktokCollectionMapper;
import com.bnyer.img.mapper.TiktokImgMapper;
import com.bnyer.img.mapper.TiktokLikeMapper;
import com.bnyer.img.service.HotSearchKeywordService;
import com.bnyer.img.service.TiktokImgService;
import com.bnyer.img.vo.*;
import lombok.extern.slf4j.Slf4j;
@ -23,6 +25,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -45,6 +48,9 @@ public class TiktokImgServiceImpl implements TiktokImgService {
@Autowired
private ImgSignRelationMapper imgSignRelationMapper;
@Autowired
private HotSearchKeywordService hotSearchKeywordService;
@Override
@Transactional(rollbackFor = Exception.class)
public void insert(TiktokImgMiniDto dto) {
@ -210,7 +216,17 @@ public class TiktokImgServiceImpl implements TiktokImgService {
@Override
public List<TiktokImgVo> queryImgPageBySignName(String signName) {
return tiktokImgMapper.queryImgPageBySignName(signName);
if(StringUtils.isNotBlank(signName)){
List<TiktokImgVo> tiktokImgVos = tiktokImgMapper.queryImgPageBySignName(signName);
if(tiktokImgVos.size() > 0){
return tiktokImgVos;
}else{
return null;
}
}else{
//返回Null,则让前端界面判断,使其引导用户去用AI绘画
return null;
}
}
@Override

7
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java

@ -50,9 +50,6 @@ public class WithdrawLogServiceImpl implements WithdrawLogService {
withdrawLog.setCreateTime(new Date());
withdrawLog.setUpdateTime(new Date());
withdrawLog.setStatus("0");
if(StringUtils.isNotBlank(withdrawLog.getAccountNo())){
withdrawLog.setAccountNo(Sm4Util.sm4Encryption(withdrawLog.getAccountNo()));
}
//生成订单id
withdrawLog.setOrderId(IdUtil.getSnowflakeNextIdStr());
//扣除账户余额
@ -94,8 +91,12 @@ public class WithdrawLogServiceImpl implements WithdrawLogService {
throw new ServiceException("该艺术家不存在!", TiktokConstant.TIKTOK_CREATOR_NOT_EXIST);
}
//此处以分为单位
//余额中的钱大于等于输入的钱则可提现
if(creator.getAmt().compareTo(amt) > -1){
return true;
//输入金额小于1则不可提现
}else if(amt.compareTo(new BigDecimal(1)) == -1){
return false;
}else{
return false;
}

50
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/AiPaintVo.java

@ -0,0 +1,50 @@
package com.bnyer.img.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
@ApiModel("ai绘画响应体")
public class AiPaintVo implements Serializable {
@ApiModelProperty(value="主键Id")
private Long id;
@ApiModelProperty(value="作品编号")
private String paintId;
@ApiModelProperty(value="绘图者昵称")
private String painterName;
@ApiModelProperty(value="图片")
private String imgUrl;
@ApiModelProperty(value="关键词")
private String prompt;
@ApiModelProperty(value="风格名称")
private String styleName;
@ApiModelProperty(value="图片高度")
private String height;
@ApiModelProperty(value="图片宽度")
private String width;
@ApiModelProperty(value="平台(0->Hub;1->抖音;2->快手;3->微信)")
private String source;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="创建时间")
private Date createTime;
private static final long serialVersionUID = 1L;
}

31
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/PaintStyleVo.java

@ -0,0 +1,31 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("绘画风格响应体")
public class PaintStyleVo implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@ApiModelProperty(value="模型风格名称")
private String name;
@ApiModelProperty(value="模型名称")
private String modelName;
@ApiModelProperty(value="模型风格图片")
private String imgUrl;
@ApiModelProperty(value="是否热门(0->正常;1->热门)")
private String isHot;
private static final long serialVersionUID = 1L;
}

26
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/PromptVo.java

@ -0,0 +1,26 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("提示词响应体")
public class PromptVo implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@ApiModelProperty(value="提示词")
private String text;
@ApiModelProperty(value="类型(0->绘画;1->gpt)")
private String type;
private static final long serialVersionUID = 1L;
}

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/SignVo.java

@ -18,5 +18,11 @@ public class SignVo implements Serializable {
@ApiModelProperty(value="标签名称")
private String name;
@ApiModelProperty(value="标签类型(0->系统标签;1->自定义标签)")
private String type;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
private static final long serialVersionUID = 1L;
}

40
bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/AiPaintMapper.xml

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bnyer.img.mapper.AiPaintMapper">
<resultMap id="BaseResultMap" type="com.bnyer.common.core.domain.AiPaint">
<!--@mbg.generated-->
<!--@Table img_ai_paint-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="paint_id" jdbcType="VARCHAR" property="paintId" />
<result column="painter_id" jdbcType="BIGINT" property="painterId" />
<result column="painter_name" jdbcType="VARCHAR" property="painterName" />
<result column="img_url" jdbcType="VARCHAR" property="imgUrl" />
<result column="prompt" jdbcType="LONGVARCHAR" property="prompt" />
<result column="model" jdbcType="VARCHAR" property="model" />
<result column="style_name" jdbcType="VARCHAR" property="styleName" />
<result column="height" jdbcType="VARCHAR" property="height" />
<result column="width" jdbcType="VARCHAR" property="width" />
<result column="is_show" jdbcType="CHAR" property="isShow" />
<result column="source" jdbcType="CHAR" property="source" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, paint_id, painter_id, painter_name, img_url, prompt, model,style_name, height, width, is_show,
`source`, create_time
</sql>
<select id="queryPage" resultType="com.bnyer.img.vo.AiPaintVo">
select
id, paint_id,painter_name,img_url, prompt, style_name,height, width,create_time,source
from img_ai_paint
where is_show = '1' and source = #{source} and painter_id = #{painterId}
order by create_time desc
</select>
<select id="queryDetails" resultType="com.bnyer.img.vo.AiPaintVo">
select
id, paint_id,painter_name,img_url, prompt, style_name,height, width,create_time,source
from img_ai_paint where id = #{id}
</select>
</mapper>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save