浏览代码

fix merge

photo
winter 1年前
父节点
当前提交
239fc9f737
共有 17 个文件被更改,包括 620 次插入20 次删除
  1. +4
    -5
      open-api/src/main/java/com/iformall/dto/PreviewVideoDTO.java
  2. +1
    -1
      open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java
  3. +18
    -0
      suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java
  4. +2
    -2
      suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java
  5. +8
    -5
      suimangCApi/src/main/resources/application-dev.yml
  6. +197
    -0
      suimangCApi/src/main/resources/application-dev.yml.bak
  7. +7
    -5
      suimangCApi/src/main/resources/application-prod.yml
  8. +152
    -0
      suimangCApi/src/main/resources/application-prod.yml.bak
  9. +14
    -0
      suimangService/src/main/java/com/iformall/config/RestTemplateConfig.java
  10. +5
    -1
      suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java
  11. +4
    -1
      suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java
  12. +23
    -0
      suimangService/src/main/java/com/iformall/smsdk/SmGenerateVideoDTO.java
  13. +25
    -0
      suimangService/src/main/java/com/iformall/smsdk/SmPreviewVideoDTO.java
  14. +32
    -0
      suimangService/src/main/java/com/iformall/smsdk/SmSdkConstant.java
  15. +21
    -0
      suimangService/src/main/java/com/iformall/smsdk/SmSdkProperties.java
  16. +58
    -0
      suimangService/src/main/java/com/iformall/smsdk/SmSdkUtils.java
  17. +49
    -0
      suimangService/src/main/java/com/iformall/smsdk/SmUtils.java

+ 4
- 5
open-api/src/main/java/com/iformall/dto/PreviewVideoDTO.java 查看文件

@@ -6,16 +6,15 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
* 请求参数
* {
* 参数示例:
* {
* "paperwork": "文案",
* "voiceId": "zh-CN-XiaomengNeural",
* "voiceStyle": "default",
* "gender": "male"
* "voiceStyle": "default"
* }
*
* @author xmzhao71
* @date 2023-10-27
* @date 2023-10-23
*/
@ApiModel(value = "预览视频请求参数")
@Data


+ 1
- 1
open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java 查看文件

@@ -28,7 +28,7 @@ public class AiVideoServiceImpl implements AiVideoService {
private ServiceVideoRecordService serviceVideoRecordService;

@Override
public AiPreviewResult previewVideo(AiPreviewParam aiPreviewParam) {
public AiPreviewResult previewVideo(AiPreviewParam aiPreviewParam) {
return AiVideoHelper.voicePreview(aiPreviewParam);
}



+ 18
- 0
suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java 查看文件

@@ -21,6 +21,9 @@ import com.iformall.service.sm.MouldPatchService;
import com.iformall.service.sm.MouldPatchSignService;
import com.iformall.service.sm.UserMouldVideoService;
import com.iformall.service.sm.VoiceInfoService;
import com.iformall.smsdk.SmGenerateVideoDTO;
import com.iformall.smsdk.SmPreviewVideoDTO;
import com.iformall.smsdk.SmSdkUtils;
import com.iformall.video.VideoFactory;
import com.iformall.video.entity.VideUploadResult;
import io.swagger.annotations.Api;
@@ -154,6 +157,13 @@ public class UserMouldVideoController extends BaseController {
return userMouldVideoService.saveOrUpdate(record);
}

/**
* 私有化部署不使用该接口
*
* @param record
* @return {@link ResultData}
*/
@ApiOperation("慧影项目生成视频")
@PostMapping("createVideo")
public ResultData create(@RequestBody UserMouldVideo record) {
@@ -201,6 +211,14 @@ public class UserMouldVideoController extends BaseController {
return new ResultData();
}

// @AuthIgnore
// @ApiOperation("生成视频")
// @PostMapping("createVideo")
// public ResultData createVideo(@RequestBody UserMouldVideo record) {
// SmSdkUtils.generateVideo(SmGenerateVideoDTO.mapping(record));
// return new ResultData();
// }

@ApiOperation("根据id查询接口")
@GetMapping("/findVideo")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)


+ 2
- 2
suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java 查看文件

@@ -14,6 +14,8 @@ import com.iformall.language.LanguageDetect;
import com.iformall.service.WxCVoiceService;
import com.iformall.service.sm.*;
import com.iformall.sm.AiPreviewParam;
import com.iformall.smsdk.SmPreviewVideoDTO;
import com.iformall.smsdk.SmSdkUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -174,6 +176,4 @@ public class VoiceMouldController extends BaseController {
logger.debug("[" + getIpAddr() + "] MouldPatchController::voicePreview");
return new ResultData(voiceInfoService.previewVoice(aiPreviewParam));
}


}

+ 8
- 5
suimangCApi/src/main/resources/application-dev.yml 查看文件

@@ -190,13 +190,16 @@ logging:

suimang:
oral_broadcasting: http://111.198.0.15:22266
video_tts: http://111.198.0.15:22222
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://nas.pucao.cn:2005
digital_avatar_hy: http://nas.pucao.cn:2003
callbackUrl: https://mtest.metavatar.cc/C
video_tts: xxx
photo_speak: xxx
photo_speak_hy: xxx
digital_avatar: xxx
digital_avatar_hy: xxx

sdk:
sm:
base-url: https://mtest.metavatar.cc/public
swagger:
base-package: com.iformall.controller
title: 遂芒_metavatar_接口文档


+ 197
- 0
suimangCApi/src/main/resources/application-dev.yml.bak 查看文件

@@ -0,0 +1,197 @@
spring:
profiles:
#include: aliyunRocketMQ
include: rabbitMQ
# JDBC
datasource:
url: jdbc:mysql://182.92.151.30:3306/mallink_suimang_test?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true
username: root
password: sm2023@ms
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 28000
minEvictableIdleTimeMillis: 28000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
#jackson:
#date-format: yyyy-MM-dd HH:mm:ss

# REDIS
redis:
host: 101.200.130.134
port: 6379
password: iF0rm@2l2ol9
timeout: 3600
expire: 1800 #30分钟
database: 5
jedis:
pool:
max-active: 200
max-idle: 100
max-wait: -1
min-idle: 0

# SMS
aliyun:
sms:
accessKeyId: LTAI5tQs4MBjzLFbiQLjsMYy
accessKeySecret: nYmnexFJxrsBu0AGVIOSbUaSaweJu7
product: Dysmsapi
domain: dysmsapi.aliyuncs.com
regionId: cn-hangzhou
dateFormat: yyyyMMdd
endpointName: cn-hangzhou

oss:
endpoint: oss-cn-beijing.aliyuncs.com
keyid: LTAI5tQs4MBjzLFbiQLjsMYy
keysecret: nYmnexFJxrsBu0AGVIOSbUaSaweJu7
bucketname: suimang
filehost: capi
filedomain: https://suimang.oss-accelerate.aliyuncs.com

# EMAIL
mail:
host: smtp.exmail.qq.com
username: zhengfangyuan@iformall.com
password: 2hSeppFRaw7KZZyf # 授权密码
properties:
mail:
smtp:
auth: true
starttls:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
# ROCKETMQ
rocketmq:
nameServer: 127.0.0.1:9876
producer:
retry-times-when-send-async-failed: 0
send-msg-timeout: 300000
compress-msg-body-over-howmuch: 4096
max-message-size: 4194304
retry-another-broker-when-not-store-ok: false
retry-times-when-send-failed: 2
# RABBITMQ
rabbitmq:
host: 127.0.0.1
port: 5672
username: fumao
password: f9l98
publisher-confirms: true
publisher-returns: false
virtual-host: /
aliyunRocketmq:
accessKeyId: "LTAI4G7ixY4AhvM35F8o3W3V"
accessKeySecret: "VfWqGb83qIQrS9us45utskl8itd7ry"
groupId: "GID_P_1"
namesrvAddr: "http://MQ_INST_1796289517488555_Bcqaq2is.cn-beijing.mq-internal.aliyuncs.com:8080"

aws:
clientRegion: cn-northwest-1
bucketName: iformall-net
access: ENC(3gx5ghDFBqGrEhO3Wf8aYmXsnwHO7Cj3HNKJGOeUj0o=)
secret: ENC(HVKIJwCJKVXLlUpGlQPwNqJOlnpxn4xYuy91SH0seTSm2uAttIQHvA49fXWWax90v5wloIk0QuU=)

#wechat:
# open:
# componentAppId: "wxdfc8fb4e62d6b52b"
# componentSecret: "98daa62b316dd6feabaad708327ce233"
# componentToken: "formall2018"
# componentAesKey: "htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN"
# redis:
# host: 101.201.103.81
# port: 6379
# password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
# timeout: 3600
# expire: 1800 #30分钟
# database: 2
# defaultExpiration: 2592000 # 默认生命周期30天
# jedis:
# pool:
# max-active: 100
# max-idle: 500
# max-wait: -1
# min-idle: 10

wechat:
web:
appId: "wx091907dd0bfd3f6b"
secret: "2a2ca10738998b9ef92c1fe8a4d366a6"
url: "https://admintest.malls.iformall.com"
open:
componentAppId: wxdfc8fb4e62d6b52b
componentSecret: 98daa62b316dd6feabaad708327ce233
componentToken: formall2018
componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN
redis:
host: 101.200.130.134
port: 6379
password: iF0rm@2l2ol9
timeout: 3600
expire: 1800 #30分钟
database: 2
defaultExpiration: 2592000 # 默认生命周期30天
jedis:
pool:
max-active: 100
max-idle: 100
max-wait: -1
min-idle: 10
alipay:
open:
appId: 2021002137663024
appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUfymV5J73QQMG52PVIGUbowkloYCO4B7TQoKbrTZf2YeYsg/To/o4PiXPMNwEUfEUU8NYQ6WwNhCd2fa1ei8WFXJUf3bfgswtBk1aOmHLeY9yoXFxIKMTQ9RcobnmBzKQZlaAPMTSr7t1QtKZKPuc2gEHGRFYKO/ZuL8gIpnsVidVtmi52yd7hzao/pI3ThLA0lreg4L3rYP5ESQZRytxIPgUQ4KI11pZxFgbe+uy28AGDYIQscSIb+SWOHPYKLvOEqqepIZ8M18w/U0lZzpzepzi/V/llekvXJ6UEf1lzl7x/4UIA3WPN1B40+NzbD/OxEGTuM0UctOG6ZTd4Te9AgMBAAECggEAPYksnHbvARspu/SrRCh2fatkIPn6Ijrxyy3mnch7neCw9i/jqxpqmF/4nxFqO0gRlRDZBHyT7p+Y5zDpsW5+kLI2fJmNkzXKkmXoLBnBaOZo8WHBdtXFfjg/iltig9Y7t+cQtXd5QK2eCwuz5dA75FXa0ywqKdRdAGY0nYZ5LpwrHVU8RXheUDCJyhKNj2+W6lIaSKDxLZU3laO1oBrv1agcy7Crd5E2ndb8O3Enga+z7wSz2h7A1BasC/Yl/Ro0Y21wLCH3s/R6qA0Paq12+WEF+xdodM7SrP43CCTVFGbC1TfEOdanJfixop8QuYsIp7pHrL925+vP4eY9RfckgQKBgQDQqLdpDzzU7Ot/L9Vc/r8d4iwXXbX8+HwVFV4oBuausgFyv8eJJpfrI+IlEoB1ubJcPpJBFqfmeYTW6/v6ioFljJAlWfFvesUVt/HszBMIOsU0Bzt7ex6WlwKOagb0q0ZPA4T0OY0K0lg0loaaaR8ZTr4ivDymaGBtTBYhslpc7QKBgQC2MBznGEc5r2dhyENvdPOR20PnXQcevGnPdqSus8m0VmDcHE72RVcckcZtwczsb3NaLSqmjAcWTn51/VFmlvhB3F34FcFTPZGq6sj7fWK8HuFq7l7mu5OzYuVr73zy9ggsUuaw10IqvvwIVxszNAF0hiRnSGH3z27CoRmz3s+8EQKBgQCK3o7atBJ3X4rIJiypbL4DhIB1uJ+jUjk6yvLUTut+fufp1+tTw0S+cS5UIAEw2Lr1G4u5F/v8rwmTBJG6SC4gSLGyui6uVBYRA1BWmedcxchzfRDAeMt9y9kesUAZ3Fe5xIzbAeZ1ulKMBVZmM+pHrJlsgr0Wv0bV1xqvqITtbQKBgBIsIGXopQoa9dvqBtfyOW1eCprkS5aEQqWf9vM6Ga90QjsSU8n6xqKh48IE57TZtQ7UnIF6TCasc66/MsRh4KdpHLJnMR5lcMc0nhF/wz5ychehaTPol+X3wlyOyc7OPah2KG6ROhdbb3ZBggQMduyxiKYIsUTvmuOtAAxR+DSRAoGADtuDzGQDOJYWiO2uuP6FpA5IJaiwlSfu3xncJVfhO8SVr6VBJFg88igbIB3w6nk/sv7j9VTXqXre9HMvp1flxaaLsdxM4HcTSALS9q6t/ajaveqte6S5kAtWx0WW8C6PtgWXHbxcD7LXARSsKLoEl2JXXyUVS/m2l/RzHBQ8GJI=
appPublicKeyCertPath: /opt/iformall/service/alipay/appCertPublicKey_2021002137663024.crt
alipayCertPath: /opt/iformall/service/alipay/alipayCertPublicKey_RSA2.crt
alipayRootCertPath: /opt/iformall/service/alipay/alipayRootCert.crt
callback: https://callbacktest.malls.iformall.com/api/alipay/notify/callback
video:
aliyun:
accessKeyId: LTAI5tQs4MBjzLFbiQLjsMYy
accessKeySecret: nYmnexFJxrsBu0AGVIOSbUaSaweJu7
regionId: cn-beijing
endPoint: https://oss-cn-beijing.aliyuncs.com
corePoolSize: 6
maxPoolSize: 20
queueCapacity: 1000
namePrefix: aliyun-video-upload

jasypt:
encryptor:
password: oRqdnDbK5pj3eMmB

fm:
exception: true
exception_emails: xuxiaohu@iformall.com
deploy: 1
open: false
upload_dir: /home/test/server/uploads/
ocr_data: /root/ocr_data/
videoType: aliyun

logging:
level:
com.iformall: debug
path: ./logs/c

suimang:
oral_broadcasting: http://nas.pucao.cn:2001
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://111.198.0.15:22200
digital_avatar_hy: http://nas.pucao.cn:2003
callbackUrl: https://test.metavatar.cc/C

+ 7
- 5
suimangCApi/src/main/resources/application-prod.yml 查看文件

@@ -145,9 +145,11 @@ logging:

suimang:
oral_broadcasting: http://111.198.0.15:22266
video_tts: http://111.198.0.15:22222
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://111.198.0.15:22200
digital_avatar_hy: http://nas.pucao.cn:2003
callbackUrl: https://metavatar.cc/C
photo_speak: xxx
photo_speak_hy: xxx
digital_avatar: xxx
digital_avatar_hy: xxx
sdk:
sm:
base-url: https://neuver.metavatar.cc/public

+ 152
- 0
suimangCApi/src/main/resources/application-prod.yml.bak 查看文件

@@ -0,0 +1,152 @@
spring:
profiles:
include: aliyunRocketMQ
# JDBC
datasource:
url: jdbc:mysql://182.92.151.30:3306/mallink_suimang?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true
username: root
password: sm2023@ms
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
filters: stat
maxActive: 200
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 28000
minEvictableIdleTimeMillis: 28000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
# REDIS
redis:
host: 182.92.151.30
port: 6379
password: sm2023@rd
timeout: 3600
expire: 1800 #30分钟
database: 1
defaultExpiration: 2592000 # 默认生命周期30天
jedis:
pool:
max-active: 100
max-idle: 100
max-wait: -1
min-idle: 10
# SMS
aliyun:
sms:
accessKeyId: LTAI5tQs4MBjzLFbiQLjsMYy
accessKeySecret: nYmnexFJxrsBu0AGVIOSbUaSaweJu7
product: Dysmsapi
domain: dysmsapi.aliyuncs.com
regionId: cn-hangzhou
dateFormat: yyyyMMdd
endpointName: cn-hangzhou
oss:
endpoint: oss-cn-beijing.aliyuncs.com
keyid: LTAI5tQs4MBjzLFbiQLjsMYy
keysecret: nYmnexFJxrsBu0AGVIOSbUaSaweJu7
bucketname: suimang
filehost: capi
filedomain: https://suimang.oss-accelerate.aliyuncs.com
# EMAIL
mail:
host: smtp.exmail.qq.com
username: system@metavatar.com.cn
password: 2bKGhFaKKjhQFeka # 授权密码
properties:
mail:
smtp:
auth: true
starttls:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
# RABBITMQ
rabbitmq:
host: 127.0.0.1
port: 5672
username: ENC(lRmLd6EzgeY1RT5ktcHv9g==)
password: ENC(gBI8mCjr3OC0v57jcnSb660Ux7mW03K2oePgvohhg7w=)
publisher-confirms: true
publisher-returns: false
virtual-host: /
aliyunRocketmq:
accessKeyId: "LTAI4G7ixY4AhvM35F8o3W3V"
accessKeySecret: "VfWqGb83qIQrS9us45utskl8itd7ry"
groupId: "GID_P_1"
namesrvAddr: "http://MQ_INST_1796289517488555_Bcqaq2is.cn-beijing.mq-internal.aliyuncs.com:8080"
aws:
clientRegion: cn-northwest-1
bucketName: iformall-net
access: ENC(a6SN1sZ1enNL49ypiOXkg/pPPAnZD8H4buQFTTKN08s=)
secret: ENC(5P5ff4bTMJUbXVR4ZsM03UHzOKZ4+Zg5Iutcdkyp/Quny/oXg+A4KpfwEyGarlLu3vQMJahGP5M=)

wechat:
open:
componentAppId: ENC(b3JG0MUZgQfz5Zj+DC2ZM1zDeLOiGTmmeokfe2O8kaM=)
componentSecret: ENC(QVyc4BPGdnSjXGs2ivgpDBE1v8wPWHLLRMYI7Vv8uYwC0SiZHQz0QpyyQV/b48Pb)
componentToken: ENC(rkxj0733WxFFDLgA9x01m2s5Fi2L+0PC)
componentAesKey: ENC(EIbJUBpbYOrLb4YQ/HXLQmxlxgAqIp2ZmpnGICC8pu5xiTz3Cqfkbwd2S8raCcK/IvYcX2GmedI=)
redis:
host: 182.92.151.30
port: 6379
password: sm2023@rd
timeout: 3600
expire: 1800 #30分钟
database: 2
defaultExpiration: 2592000 # 默认生命周期30天
jedis:
pool:
max-active: 100
max-idle: 100
max-wait: -1
min-idle: 10
alipay:
open:
appId: 2021002140616334
appPrivateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCEJmHIlS0luIH7zJRRVlypCcgiSkqpSlnmgyCEM7nu8IerV8Yf7dMBitBklTpJB+4URV1bW+q6Ijzo8RsCyjm1Kx+EFiKf1PiJXlT0h1+bF3fYdDr6r5GK0/TtB8O80p774NcRD3HgbzUS8AEe/GcBvhiXbDRgJh7yAngW9vxl9u1o5UcaxOXVLWDrjlQGF6qyXUlycCNIdPXj3LduP3PBK5daVZwJm33Pr7kmSI0agZvV267HaTpSKaiXI7Zwo+nFMqx9g9kpzmYRfOgHx3DWpQUFI646IB8nEpLpQp3/0eDocuqiHXYgEpLpPoFKoVE228v74YSFh3Y4fFGX+qtjAgMBAAECggEAIJK9Y42xtSyHjaNdo7bf3CK3HAyn3pafFjyYFT4SxJyxNEDMay5Z5nVq7IAD/+BehMycOFqtvveVf+1+NO/XzZo1iH9URYVfRazkz+lWXYopVkdACm6gN1ILeymAy9g2q+s918ywyxteP668+ABK+5j5wsk/F7wNwKVvKGn0yMT7DP0FAL1e0KWndZCZlF79VnFpBLscDJq28GqRzqYop4CWqHHTA6DBvIqkfQV4U3IzqnzOsxNLEMBwhnbK08XfYZ3DxCPH0jQdA2Jj/aABrntq2EpWjzW5H9iZqrVo33rmsNHUSQvla/333RkbpwGyNhI6kcPBRq4cVSAa3y7dMQKBgQDVfyDUPWKXVwIJUgO1my8WIUu2p6nhuT7Mfnpk4X7ewdFaRVjb/r0KvhLgoz2/KOwkqtWTlEvNaCDDycpLXk+V5ZH833kYsDEmxY7ikOUjCcrfYJgT7P77//cZ4Kx8a5X45SiKAZT2GQv7BTtIfNhrfTUj6AQx/3MP3sa2QAWeNQKBgQCedWoF7t+qyck2hctqtTFC7fRkEk7RNJVph1ZOeTqOIAKhmhkwaOE3joxQ/VqHDy212YdW4hI0BWUzbEdMy0Idz2G3y9ERVD84hZehf5GGRdiSrY9EEQgHlcI6Qb8/AnDdpy1DlKUMwTYjVNzkDL3AzeWn61JS1XQaOzZBsJy2NwKBgFa+pJQXrOtYytcGn8M2Hlebh6vbS8cPAVkNOqWqiWXw0iMfcg9Q3XZz7C+hpAD7m5b6YnToGDSJTma+opck5qk88agRFJ7XV+Es+/VKcg9edzNzh9bwwFmbksbM5shW3kSWt3X7Vo73dkqzwXaeY0CpSuIf7zRxWkrkdVCvipjRAoGAMcJlPN+6VQNwsDJromKryXy31gT5wzBkCvN44sOm46KhsOWXK2CD+NJGtdgZaXgWvphEq7/qP3PCR9ekvDTH2lyZLwJN8Mcn4zPwXcKVjDi6vbTK3HEMuHUKvQiQadT2ZGRvDl3LRqoVuhqYEvT9UWJWz9hRzblB8ErPyukPDRkCgYB7bMv2iflpaGE1J3gkTlVJB+2QSfnAXaUDMLWsZN4gYjwEBVCEJ+mhWL1/GeEIBjSs5/qZIeRsYzlxGEcnsJzRfog6ITBF14AeZ+xNkHq83ja87OGVKMypiccGwRehijDhJi6tgMJ0u0w6PiqcJvh0SX4jBhDDPjuWzK2XD+lx8A==
appPublicKeyCertPath: /opt/iformall/service/alipay/appCertPublicKey_2021002140616334.crt
alipayCertPath: /opt/iformall/service/alipay/alipayCertPublicKey_RSA2.crt
alipayRootCertPath: /opt/iformall/service/alipay/alipayRootCert.crt
callback: https://callback.malls.iformall.com/api/alipay/notify/callback
video:
aliyun:
accessKeyId: LTAI5tQs4MBjzLFbiQLjsMYy
accessKeySecret: nYmnexFJxrsBu0AGVIOSbUaSaweJu7
regionId: cn-beijing
endPoint: https://oss-cn-beijing.aliyuncs.com
corePoolSize: 6
maxPoolSize: 20
queueCapacity: 1000
namePrefix: aliyun-video-upload

fm:
exception: true
exception_emails: houtaikaifa@iformall.com
deploy: 3
open: true
upload_dir: /root/uploads/
ocr_data: /root/ocr_data/
videoType: aliyun

logging:
level:
com.iformall: debug
path: ./logs/c

suimang:
oral_broadcasting: http://111.198.0.15:22266
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://111.198.0.15:22200
digital_avatar_hy: http://nas.pucao.cn:2003
callbackUrl: https://metavatar.cc/C

+ 14
- 0
suimangService/src/main/java/com/iformall/config/RestTemplateConfig.java 查看文件

@@ -0,0 +1,14 @@
package com.iformall.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

+ 5
- 1
suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java 查看文件

@@ -10,6 +10,7 @@ import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.*;
import com.iformall.enums.*;
import com.iformall.enums.sm.EnumThirdPartyType;
import com.iformall.mapper.UserMouldVideoMapper;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.project.ProjectFactory;
@@ -18,6 +19,8 @@ import com.iformall.service.sm.*;
import com.iformall.sm.AiVideoHelper;
import com.iformall.sm.AiVideoParam;
import com.iformall.sm.AiVideoResult;
import com.iformall.smsdk.SmGenerateVideoDTO;
import com.iformall.smsdk.SmSdkUtils;
import com.iformall.utils.Base64Util;
import com.iformall.utils.Constant;
import com.iformall.utils.RedisLock;
@@ -401,7 +404,8 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService {
}
videoParam.setVideo_files(videoFiles);

AiVideoResult video = AiVideoHelper.createVideo(videoParam);
// AiVideoResult video = AiVideoHelper.createVideo(videoParam,mouldVideo.getId());
AiVideoResult video = SmSdkUtils.generateVideo(videoParam);
if(video.isSuccess()){
videoUpd.setVideoPath(video.getUrl());
// videoUpd.setVideoTime(video.getDuration()+"");


+ 4
- 1
suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java 查看文件

@@ -14,6 +14,8 @@ import com.iformall.file.aliyun.bean.AliyunOSSConfig;
import com.iformall.mapper.VoiceMapper;
import com.iformall.service.sm.VoiceInfoService;
import com.iformall.sm.*;
import com.iformall.smsdk.SmPreviewVideoDTO;
import com.iformall.smsdk.SmSdkUtils;
import com.iformall.utils.Constant;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -87,7 +89,8 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
param.setVoice_id(voiceInfo.getMouldSmId());
param.setVoice_style(StringUtils.isBlank(aiPreviewParam.getVoice_style()) ? EnumSpeakType.default_0.getMessage() : aiPreviewParam.getVoice_style());
param.setGender(voiceInfo.getSex() == 1 ? "male" : "female");
AiPreviewResult result = AiVideoHelper.voicePreview(param);
// AiPreviewResult result = AiVideoHelper.voicePreview(param);
AiPreviewResult result = SmSdkUtils.preview(SmPreviewVideoDTO.mapping(param));
if (result.isSuccess()){
PreviewVoiceVO vo = new PreviewVoiceVO();
vo.setTime(result.getTime());


+ 23
- 0
suimangService/src/main/java/com/iformall/smsdk/SmGenerateVideoDTO.java 查看文件

@@ -0,0 +1,23 @@
package com.iformall.smsdk;

import com.iformall.domain.po.sm.UserMouldVideo;
import com.iformall.sm.AiVideoParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(value = "生成视频请求参数")
@Data
public class SmGenerateVideoDTO {
@ApiModelProperty(value = "类型")
private Integer type;
@ApiModelProperty(value = "生成视频参数")
private AiVideoParam aiVideoParam;

public static SmGenerateVideoDTO build(AiVideoParam aiVideoParam, Integer type) {
SmGenerateVideoDTO dto = new SmGenerateVideoDTO();
dto.setType(type);
dto.setAiVideoParam(aiVideoParam);
return dto;
}
}

+ 25
- 0
suimangService/src/main/java/com/iformall/smsdk/SmPreviewVideoDTO.java 查看文件

@@ -0,0 +1,25 @@
package com.iformall.smsdk;

import com.iformall.sm.AiPreviewParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(value = "预览视频请求参数")
@Data
public class SmPreviewVideoDTO {
@ApiModelProperty("文案")
private String paperwork;
@ApiModelProperty("声音id")
private String voiceId;
@ApiModelProperty("声音风格名称")
private String voiceStyle;

public static SmPreviewVideoDTO mapping(AiPreviewParam aiPreviewParam) {
SmPreviewVideoDTO dto = new SmPreviewVideoDTO();
dto.setPaperwork(aiPreviewParam.getGen_txt());
dto.setVoiceId(aiPreviewParam.getVoice_id());
dto.setVoiceStyle(aiPreviewParam.getVoice_style());
return dto;
}
}

+ 32
- 0
suimangService/src/main/java/com/iformall/smsdk/SmSdkConstant.java 查看文件

@@ -0,0 +1,32 @@
package com.iformall.smsdk;

/**
* 遂芒sdk常量
*
* @author xmzhao71
* @date 2023-10-19
*/
public interface SmSdkConstant {

/**
* 请求头参数
*/
String APP_KEY = "appKey";
String SIGN = "sign";

/**
* 请求参数,必填
*/
String TIMESTAMP = "timeStamp";


/**
* 预览视频
*/
String PREVIEW_VIDEO = "/api/video/previewVideo";

/**
* 生成视频
*/
String GENERATE_VIDEO = "/api/video/generateVideo";
}

+ 21
- 0
suimangService/src/main/java/com/iformall/smsdk/SmSdkProperties.java 查看文件

@@ -0,0 +1,21 @@
package com.iformall.smsdk;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* 遂芒sdk调用凭证
*
* @author xmzhao71
* @date 2023-10-20
*/
@Data
@Component
@ConfigurationProperties(prefix = "sdk.sm")
public class SmSdkProperties {
/**
* 域名
*/
private String baseUrl;
}

+ 58
- 0
suimangService/src/main/java/com/iformall/smsdk/SmSdkUtils.java 查看文件

@@ -0,0 +1,58 @@
package com.iformall.smsdk;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.iformall.sm.AiPreviewResult;
import com.iformall.sm.AiVideoParam;
import com.iformall.sm.AiVideoResult;
import com.iformall.utils.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Map;

@Slf4j
@Component
public class SmSdkUtils {
private static SmSdkUtils smSdkUtils;

@Resource(name = "restTemplate")
private RestTemplate restTemplate;

@Autowired
private SmSdkProperties smSdkProperties;

@PostConstruct
public void init() {
smSdkUtils = this;
}

public static AiPreviewResult preview(SmPreviewVideoDTO dto) {
String url = smSdkUtils.smSdkProperties.getBaseUrl() + SmSdkConstant.PREVIEW_VIDEO;
log.info("(遂芒api)【预览视频】接口的请求参数:{}", JSON.toJSON(dto));
ResponseEntity<String> response = smSdkUtils.restTemplate.exchange(url, HttpMethod.POST, SmUtils.getHttpEntity(JSON.parseObject(JSON.toJSONString(dto), Map.class)), String.class);
log.info("(遂芒api)【预览视频】接口的响应数据:{}", JSON.toJSON(response.getBody()));
JSONObject resultObject = JSON.parseObject(response.getBody());
String data = resultObject.getString("data");
return StringUtils.isNotBlank(data) ? JSON.parseObject(data, AiPreviewResult.class) : new AiPreviewResult();
}

public static AiVideoResult generateVideo(AiVideoParam aiVideoParam) {
String url = smSdkUtils.smSdkProperties.getBaseUrl() + SmSdkConstant.GENERATE_VIDEO;
// log.info("(遂芒api)【生成视频】接口的请求参数:{}", JSON.toJSONString(dto));
log.info("(遂芒api)【生成视频】接口的请求参数:{}", JSON.toJSON(aiVideoParam.getTask_id()));
ResponseEntity<String> response = smSdkUtils.restTemplate.exchange(url, HttpMethod.POST, SmUtils.getHttpEntity(JSON.parseObject(JSON.toJSONString(aiVideoParam), Map.class)), String.class);
log.info("(遂芒api)【生成视频】接口的响应数据:{}", JSON.toJSON(response.getBody()));
JSONObject resultObject = JSON.parseObject(response.getBody());
String data = resultObject.getString("data");
return StringUtils.isNotBlank(data) ? JSON.parseObject(data, AiVideoResult.class) : new AiVideoResult();
}
}

+ 49
- 0
suimangService/src/main/java/com/iformall/smsdk/SmUtils.java 查看文件

@@ -0,0 +1,49 @@
package com.iformall.smsdk;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.CommonConstants;
import com.iformall.domain.po.WxThirdPartyApi;
import com.iformall.mapper.WxThirdPartyApiMapper;
import com.iformall.utils.sign.SignUtils;
import org.apache.http.protocol.HTTP;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;

@Component
public class SmUtils {
public static SmUtils smUtils;
@Autowired
private SmSdkProperties smSdkProperties;
@Autowired
private WxThirdPartyApiMapper wxThirdPartyApiMapper;

@PostConstruct
public void init() {
smUtils = this;
}

public static HttpEntity<Map<String, Object>> getHttpEntity(Map<String, Object> paramMap) {
paramMap.put(SmSdkConstant.TIMESTAMP, System.currentTimeMillis());
WxThirdPartyApi apiConfig = getApiConfig();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(SmSdkConstant.APP_KEY, apiConfig.getAppId() + "&" + apiConfig.getAppKey());
String sign = SignUtils.getSign(apiConfig.getSignKey(), paramMap, "MD5");
httpHeaders.set(SmSdkConstant.SIGN, sign);
return new HttpEntity<>(paramMap, httpHeaders);
}


public static WxThirdPartyApi getApiConfig() {
List<WxThirdPartyApi> wxThirdPartyApis = smUtils.wxThirdPartyApiMapper.selectList(new LambdaQueryWrapper<WxThirdPartyApi>()
.eq(WxThirdPartyApi::getStatus, CommonConstants.STATUS_NORMAL));
return wxThirdPartyApis.get(0);
}
}

正在加载...
取消
保存