Procházet zdrojové kódy

//..

private_deployment
xhxu před 1 rokem
rodič
revize
b870b3f8be
22 změnil soubory, kde provedl 422 přidání a 181 odebrání
  1. +62
    -4
      suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java
  2. +48
    -1
      suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java
  3. +99
    -11
      suimangCApi/src/main/java/com/iformall/controller/MiniAppUserController.java
  4. +5
    -5
      suimangCApi/src/main/resources/application-dev.yml
  5. +5
    -5
      suimangCApi/src/main/resources/application-prod.yml
  6. +5
    -5
      suimangSchedule/src/main/resources/application-dev.yml
  7. +5
    -5
      suimangSchedule/src/main/resources/application-prod.yml
  8. +2
    -2
      suimangService/src/main/java/com/iformall/enums/EnumProductOrderPayVendor.java
  9. +1
    -1
      suimangService/src/main/java/com/iformall/enums/EnumProfitSharing.java
  10. +1
    -1
      suimangService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java
  11. +3
    -2
      suimangService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java
  12. +3
    -2
      suimangService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java
  13. +12
    -8
      suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java
  14. +2
    -2
      suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java
  15. +2
    -2
      suimangService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java
  16. +7
    -22
      suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java
  17. +59
    -21
      suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java
  18. +11
    -7
      suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java
  19. +6
    -6
      suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java
  20. +79
    -69
      suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java
  21. +3
    -0
      suimangService/src/main/java/com/iformall/sm/AiVideoParam.java
  22. +2
    -0
      suimangService/src/main/java/com/iformall/utils/Constant.java

+ 62
- 4
suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java Zobrazit soubor

@@ -1,8 +1,14 @@
package com.iformall.controller;

import com.alibaba.fastjson.JSONObject;
import com.github.binarywang.wxpay.v3.util.AesUtils;
import com.iformall.annotation.AuthIgnore;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxPayAccount;
import com.iformall.enums.EnumAppPlat;
import com.iformall.service.ProductOrderService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxPayAccountService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jdom2.JDOMException;
@@ -14,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


@@ -23,19 +30,70 @@ import java.util.Map;
public class CallbackPayController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxAppinfoService wxAppinfoService;

@Autowired
private WxPayAccountService wxPayAccountService;

@Autowired
private ProductOrderService productOrderService;

@AuthIgnore
@ApiOperation("支付回调")
@PostMapping(value = "/pay/v3")
public void _payV3Notify(@RequestBody Map<String, Object> paranMap, HttpServletRequest request, HttpServletResponse response) throws IOException, JDOMException {
logger.debug("[" + getIpAddr() + "] CallbackPayController::photoSpeak");
logger.info("支付回调结果通知{}"+JSONObject.toJSONString(paranMap));
@PostMapping(value = "{project}/pay/v3")
public void _payV3Notify(@PathVariable Integer projectType,@RequestBody Map<String, Object> paranMap, HttpServletResponse response) {
logger.debug("[" + getIpAddr() + "] CallbackPayController::_payV3Notify");
logger.info("微信支付回调结果通知{}"+JSONObject.toJSONString(paranMap));
/**
* {"id":"4330b030-788f-5067-8c8a-69ee373d43ad","create_time":"2023-08-28T18:44:56+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"支付成功","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":"PneNTwSVDoirBNQsJstB/yX1dNMupj7uKQVEVfLOoyMSCqKh+KMwIdanidbcs6OnSy1Xmx4MploMaQ5rSg66sFDQ9nDuSVc4S/I3OVflu1l7z9vR+FJiztpTqhr/ekeNz9VivtqPPtn6N3dCyZb6iCEwnXT+TEB8SBZe4bPSPFGhB/MB9w1ZpqP14OvMDUnzKM15mdex6wmAJH6qIbd1aH3jrW/Lv7KeyfXEYrRDljq2Za6476UQxeAcsR3JA6QpWwrhYxpKFQEHuGMdiVC1KvQsP3+JUWOKSiQQ1r5upTACPI8n5B/kOeXJA8MnTgY/7lZiA6ys2dt8jqxzL8IlDracnlwvsiRAuXjRjcX6pYCz4q0HwIYb1nHXE+iRcSGm8h+xFFsnhGgxrhEVz6ARhK6ZtKtibCv7Ll/a/d090FBKtVXzCWB6cLMMmfrIwLQFqiFUtb6zsV/zusAJdwHZt3LmtgGahoV3+UPTnbztEAp5IJGz2imGPTsk7QpvKWQknf5FM/Z1fhr/vb+pZV5NGBZ+6l/mI8isA4HtljzNHU/PuKCGO8uWu6QFevgAftGGww==","associated_data":"transaction","nonce":"Hrcahgdp1eO6"}}
*/
WxAppinfo appInfo = wxAppinfoService.getProjectCAppInfoFromRedis(projectType, EnumAppPlat.WX.getCode());
WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId());
try{
Map<String, String> resource = (Map<String, String>) paranMap.get("resource");
String associatedData = resource.get("associated_data");
String nonce = resource.get("nonce");
String ciphertext = resource.get("ciphertext");

//todo 解密回调数据
String decryptString = AesUtils.decryptToString(associatedData, nonce, ciphertext, payAccount.getMerchantApiv3Key());

JSONObject jsonObject = JSONObject.parseObject(decryptString);
String out_order_no = jsonObject.getString("out_trade_no");
//todo 处理支付数据

}catch(Exception e){

}
response.setStatus(200);
}

@AuthIgnore
@ApiOperation("支付回调")
@PostMapping(value = "/ttNotify")
public Map<String,Object> _ttNotify(@RequestBody Map<String, Object> paranMap, HttpServletRequest request, HttpServletResponse response) {
logger.debug("[" + getIpAddr() + "] CallbackPayController::_ttNotify");
Map<String,Object> resultMap = new HashMap<>();
logger.info("抖音支付回调结果通知{}"+JSONObject.toJSONString(paranMap));
/**
* ----效验数据来源合法
*/
try{
String msg = (String) paranMap.get("msg");
String type = (String) paranMap.get("type");

Map<String, Object> pMap = JSONObject.parseObject(msg, Map.class);
String appid = (String) pMap.get("app_id");
if("payment".equals(type)){
String out_order_no = (String)pMap.get("cp_orderno");
//todo 处理订单支付状态

}
}catch(Exception e){

}
return resultMap;
}

}

+ 48
- 1
suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java Zobrazit soubor

@@ -28,6 +28,9 @@ import java.util.*;
public class CallbackSmController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private UserMouldVideoService userMouldVideoService;

@Autowired
private PhotoSpeakVideoService photoSpeakVideoService;

@@ -39,6 +42,50 @@ public class CallbackSmController extends BaseController {

@AuthIgnore
@ApiOperation("视频回调")
@PostMapping(value = "/oral/broadcasting")
public ResultData oralBroadcasting(@RequestBody Map<String, Object> paranMap) {
logger.debug("[" + getIpAddr() + "] CallbackSmController::oralBroadcasting");
logger.info("口播生成视频结果通知{}"+JSONObject.toJSONString(paranMap));
Long task_id = (Long) paranMap.get("task_id");//任务ID
String code = (String) paranMap.get("code");//code
String msg = (String) paranMap.get("msg");

if (task_id == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"任务ID不能为空");
}

UserMouldVideo userMouldVideo = userMouldVideoService.getById(task_id);
if (userMouldVideo == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
}
UserMouldVideo videoUnd = new UserMouldVideo();
videoUnd.setId(userMouldVideo.getId());
if("1000".equals(code)){
Map<String,Object> data = (Map<String, Object>) paranMap.get("data");
Map<String,Object> video = (Map<String, Object>) data.get("video");
String url = (String) video.get("url");
String duration = (String) video.get("duration");

videoUnd.setVideoStatus(EnumVideoStatus.success.getCode());
videoUnd.setVideoMsg("success");
videoUnd.setVideoPath(url);
videoUnd.setVideoTime(duration);
videoUnd.setUpdateDate(new Date());
userMouldVideoService.updateById(videoUnd);
}else{
videoUnd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUnd.setVideoMsg(msg);
videoUnd.setUpdateDate(new Date());
userMouldVideoService.updateById(videoUnd);
}


userMouldVideoService.uploadVideo(videoUnd);
return new ResultData();
}

@AuthIgnore
@ApiOperation("照片说话 视频回调")
@PostMapping(value = "/photo/speak")
public ResultData photoSpeak(@RequestBody Map<String, Object> paranMap) {
logger.debug("[" + getIpAddr() + "] CallbackSmController::photoSpeak");
@@ -51,7 +98,7 @@ public class CallbackSmController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"任务ID不能为空");
}

PhotoSpeakVideo photoSpeakVideo = photoSpeakVideoService.getById(Long.valueOf(task_id));
PhotoSpeakVideo photoSpeakVideo = photoSpeakVideoService.getById(task_id);
if (photoSpeakVideo == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
}


+ 99
- 11
suimangCApi/src/main/java/com/iformall/controller/MiniAppUserController.java Zobrazit soubor

@@ -13,6 +13,7 @@ import com.iformall.domain.po.sm.InviteCodeInfo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.*;
import com.iformall.service.cuser.CUserServiceApapter;
import com.iformall.service.cuser.CUserServiceFactory;
import com.iformall.service.sm.InviteCodeInfoService;
import com.iformall.service.sm.InviteCodeService;
@@ -57,10 +58,6 @@ public class MiniAppUserController extends BaseController {
@Autowired
private CUserServiceFactory cuserFactory;

@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> redisTemplate;

@Autowired
private WxCUserBasicInfoService wxCUserBasicInfoService;

@@ -68,7 +65,14 @@ public class MiniAppUserController extends BaseController {
private UserBasicQrcodeService userBasicQrcodeService;

@Autowired
WxAppinfoService wxAppinfoService;
private WxAppinfoService wxAppinfoService;

@Autowired
private WxMsgValidationcodeService wxMsgValidationcodeService;

@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> redisTemplate;


/**
@@ -82,8 +86,11 @@ public class MiniAppUserController extends BaseController {
@TenantIgnore
@PostMapping("/login")
@ApiOperation(value = "用户登录", notes = "{\"appId\":\"string\",\"code\":\"string\",\"scene\":\"string\",\"sceneAddress\":\"string\",\"latitude\":\"string\",\"longitude\":\"string\",\"systemInfo\":\"string\"}")
public ResultData userLogin(@RequestBody Map<String, String> map) {
logger.info("dologin >>>>>>>>>>>>>>>>>"+map.toString());
public ResultData login(@RequestBody Map<String, String> map) {
String ipaddress = getIpAddr();
logger.debug("[" + ipaddress + "] MiniAppUserController::login");

logger.info("login >>>>>>>>>>>>>>>>>"+map.toString());

Map resultMap = new HashMap();

@@ -135,7 +142,6 @@ public class MiniAppUserController extends BaseController {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// request.setAttribute(Constant.TENANT_ID, wxMall.getTenantId());
// request.setAttribute(Constant.PARENT_TENANT_ID, wxMall.getParentTenantId());
String ipaddress = IPUtil.getIpAddr(request);

CUser cUser = new CUser();
cUser.setAppId(appId);
@@ -167,8 +173,11 @@ public class MiniAppUserController extends BaseController {
@AuthIgnore
@PostMapping("/loginPhone")
@ApiOperation(value = "授权后获取用户的手机号", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}")
public ResultData getUserPhone(@RequestBody Map<String, String> map) {
logger.info(map.toString());
public ResultData loginPhone(@RequestBody Map<String, String> map) {
String ipaddress = getIpAddr();
logger.debug("[" + ipaddress + "] MiniAppUserController::loginPhone");

logger.info("loginPhone >>>>>>>>>>>>>>>>>"+map.toString());
String appId = map.get("appId");
String openId = map.get("openId");
String encryptedData = map.get("encryptedData");
@@ -205,7 +214,7 @@ public class MiniAppUserController extends BaseController {

UserBasicFrom from = new UserBasicFrom();
from.setPlat(appPlat.getCode());
from.setFromProject(EnumProject.PROJECT_5.getCode());
from.setFromProject(wxAppinfo.getProjectType());
if(StringUtils.isNotBlank(uid)){
try {
from.setFromUserId(Long.parseLong(uid));
@@ -237,6 +246,85 @@ public class MiniAppUserController extends BaseController {
return new ResultData(resultMap);
}

@AuthIgnore
@ApiOperation(value = "手机验证码授权登录", notes = "{\"phone\",\"string\",\"code\",\"string\"}")
@PostMapping("/loginPhoneCode")
public ResultData loginPhoneCode(@RequestBody Map<String, String> map, HttpServletResponse response) {
String ipaddress = getIpAddr();
logger.debug("[" + ipaddress + "] MiniAppUserController::loginPhoneCode");

logger.info("loginPhoneCode >>>>>>>>>>>>>>>>>"+map.toString());
// String phone,String code,String pwd
String appId = map.get("appId");
String openId = map.get("openId");

String phone = map.get("phone");
String code = map.get("code");

if(StringUtils.isBlank(appId)){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId 不能为空");
}
if(StringUtils.isBlank(openId)){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "openId 不能为空");
}

WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId);
if(wxAppinfo == null){
return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
}
if(!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())){
return new ResultData(ErrorCode.APP_ID_NOT_ENABLE);
}
EnumAppPlat appPlat = EnumAppPlat.getByCode(wxAppinfo.getPlat());
if(appPlat == null){
return new ResultData(ErrorCode.APP_PLAT_ERROR);
}

if (StringUtils.isBlank(phone)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空");
}
if (StringUtils.isBlank(code)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
}

// check 验证码正确
boolean isValidCode = false;
try {
isValidCode = wxMsgValidationcodeService.checkCodeValid(phone, code);
} catch (Exception e) {
return new ResultData(Result.ERROR, e.getMessage());
}
if (isValidCode) {

String uid = map.get("uid");

UserBasicFrom from = new UserBasicFrom();
from.setPlat(appPlat.getCode());
from.setFromProject(wxAppinfo.getProjectType());
if(StringUtils.isNotBlank(uid)){
try {
from.setFromUserId(Long.parseLong(uid));
from.setFromType(EnumUserBasicFrom.FROM_3.getCode());
}catch(Exception e){}
}

CUserServiceApapter cUserService = cuserFactory.getCUserService(appPlat);
CUser user = cUserService.getByOpenId(openId, getTenantInfo().getTenantId());
if (user == null) {
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
WxCUserBasicInfo basicInfo = cUserService.savePhoneToBasicInfo(user, phone,from);

wxCUserBasicInfoService.handleLoginUser(basicInfo);
Map resultMap = new HashMap();
// resultMap.put("phone", basicInfo.getPhone());
resultMap.put("token", basicInfo.getToken());
return new ResultData(resultMap);
} else {
return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
}
}

/**
* 获取二维码
*


+ 5
- 5
suimangCApi/src/main/resources/application-dev.yml Zobrazit soubor

@@ -188,10 +188,10 @@ logging:
com.iformall: debug
path: ./logs/c

photo:
url: http://111.198.0.15:22299
hy_url: http://111.198.0.15:22288
talk: http://nas.pucao.cn:2001
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://phototest.metavatar.cc/C
callbackUrl: https://test.metavatar.cc/C

+ 5
- 5
suimangCApi/src/main/resources/application-prod.yml Zobrazit soubor

@@ -143,10 +143,10 @@ logging:
com.iformall: debug
path: ./logs/c

photo:
url: http://111.198.0.15:22299
hy_url: http://111.198.0.15:22288
talk: http://111.198.0.15:22266
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://photo.metavatar.cc/C
callbackUrl: https://metavatar.cc/C

+ 5
- 5
suimangSchedule/src/main/resources/application-dev.yml Zobrazit soubor

@@ -191,10 +191,10 @@ logging:
com.iformall.mapper: debug
path: ./logs/s

photo:
url: http://111.198.0.15:22299
hy_url: http://111.198.0.15:22288
talk: http://nas.pucao.cn:2001
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://phototest.metavatar.cc/C
callbackUrl: https://test.metavatar.cc/C

+ 5
- 5
suimangSchedule/src/main/resources/application-prod.yml Zobrazit soubor

@@ -147,10 +147,10 @@ logging:
path: ./logs/s


photo:
url: http://111.198.0.15:22299
hy_url: http://111.198.0.15:22288
talk: http://111.198.0.15:22266
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://photo.metavatar.cc/C
callbackUrl: https://metavatar.cc/C

+ 2
- 2
suimangService/src/main/java/com/iformall/enums/EnumProductOrderPayVendor.java Zobrazit soubor

@@ -5,11 +5,11 @@ package com.iformall.enums;
*/
public enum EnumProductOrderPayVendor {

PAY_WAY_WECHAT(1, "微信小程序",EnumAppPlat.WX.getCode(),EnumProfitSharing.PROFIT_SHARING.getCode()),
PAY_WAY_WECHAT(1, "微信小程序",EnumAppPlat.WX.getCode(),EnumProfitSharing.PROFIT_SHARING_NO.getCode()),
PAY_WAY_WECHAT_WAP(2, "微信H5",null,null),
PAY_WAY_ALIPAY(3, "支付宝小程序",null,null),
PAY_WAY_ALIPAY_WAP(4, "支付宝H5",null,null),
PAY_WAY_TT(5, "抖音小程序",EnumAppPlat.TOUTIAO.getCode(),EnumProfitSharing.PROFIT_SHARING_MAST.getCode()),
PAY_WAY_TT(5, "抖音小程序",EnumAppPlat.TOUTIAO.getCode(),EnumProfitSharing.PROFIT_SHARING_NO.getCode()),
;
public static EnumProductOrderPayVendor getEnum(Integer code) {
for (EnumProductOrderPayVendor value : values()) {


+ 1
- 1
suimangService/src/main/java/com/iformall/enums/EnumProfitSharing.java Zobrazit soubor

@@ -4,7 +4,7 @@ package com.iformall.enums;
* Created by Stormeye on 2018/08/09.
*/
public enum EnumProfitSharing {
PROFIT_SHARING(0, "无需分账"),
PROFIT_SHARING_NO(0, "无需分账"),
PROFIT_SHARING_MAST(1, "需要分账"),
PROFIT_SHARING_FINISH(2, "已经分账"),
;


+ 1
- 1
suimangService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java Zobrazit soubor

@@ -26,7 +26,7 @@ public interface CUserServiceApapter {

WxCUserBasicInfo decryptPhoneNoInfo(String encryptedData, String iv, CUser cuser, WxAppinfo wxAppinfo, boolean isFmOpen, UserBasicFrom from);

void savePhoneToBasicInfo(CUser user, String phone);
WxCUserBasicInfo savePhoneToBasicInfo(CUser user, String phone, UserBasicFrom from);

CUser handleLoginUser(CUser cUser);



+ 3
- 2
suimangService/src/main/java/com/iformall/service/cuser/tt/TtCUserServiceAdapter.java Zobrazit soubor

@@ -179,20 +179,21 @@ public class TtCUserServiceAdapter extends BasicCUserService implements CUserSer
}

@Override
public void savePhoneToBasicInfo(CUser user, String phone) {
public WxCUserBasicInfo savePhoneToBasicInfo(CUser user, String phone, UserBasicFrom from) {
TtCUser updateUser = new TtCUser();
updateUser.setId(user.getId());
updateUser.updateTenantInfo(user);
updateUser.setPhone(phone);

// 更新到basicinfo
WxCUserBasicInfo basicInfo = saveToBasicInfoByCUser(updateUser,null);
WxCUserBasicInfo basicInfo = saveToBasicInfoByCUser(updateUser,from);

updateUser.setUserId(basicInfo.getId());
updateUser.setUpdateDate(new Date());
ttCUserMapper.updateById(updateUser);

ttCUserMapper.delForUserIdOnly(updateUser.getId(),updateUser.getUserId(),updateUser.getTenantId());
return basicInfo;
}

@Override


+ 3
- 2
suimangService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java Zobrazit soubor

@@ -192,19 +192,20 @@ public class WxCUserServiceAdapter extends BasicCUserService implements CUserSer
}

@Override
public void savePhoneToBasicInfo(CUser user, String phone) {
public WxCUserBasicInfo savePhoneToBasicInfo(CUser user, String phone, UserBasicFrom from) {
WxCUser updateUser = new WxCUser();
updateUser.setId(user.getId());
updateUser.updateTenantInfo(user);
updateUser.setPhone(phone);

WxCUserBasicInfo basicInfo = saveToBasicInfoByCUser(updateUser,null);
WxCUserBasicInfo basicInfo = saveToBasicInfoByCUser(updateUser,from);

updateUser.setUserId(basicInfo.getId());
updateUser.setUpdateDate(new Date());
wxCUserMapper.updateById(updateUser);

wxCUserMapper.delForUserIdOnly(updateUser.getId(),updateUser.getUserId(),updateUser.getTenantId());
return basicInfo;
}

@Override


+ 12
- 8
suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java Zobrazit soubor

@@ -11,12 +11,14 @@ import com.iformall.domain.po.sm.VoiceInfo;
import com.iformall.domain.vo.VoiceInfoVo;
import com.iformall.enums.EnumClassType;
import com.iformall.enums.EnumSpeakType;
import com.iformall.file.aliyun.bean.AliyunOSSConfig;
import com.iformall.mapper.VoiceMapper;
import com.iformall.mapper.WxCVoiceMapper;
import com.iformall.service.WxCVoiceService;
import com.iformall.sm.AiPreviewParam;
import com.iformall.sm.AiPreviewResult;
import com.iformall.sm.AiVideoHelper;
import com.iformall.utils.Constant;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -33,9 +35,11 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
@Autowired
VoiceMapper voiceMapper;

private final static String str = "\uD83D\uDD57";
private final static String url = "https://suimang.oss-accelerate.aliyuncs.com/builtin/tts_all_sample/";
private final static String end = ".wav";
@Autowired
private AliyunOSSConfig aliyunOSSConfig;

private final String demoDirectory = "/builtin/tts_all_sample/";
private final String demoSuffix = ".wav";


@Override
@@ -68,7 +72,7 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
HashMap<String, Object> style = new HashMap<>();
style.put("stylename", y);
style.put("displayname", EnumSpeakType.getEnum(y).getMessage());
style.put("styledemo", url + wxCVoiceTable.getMouldSmId() + "_" + y + end);
style.put("styledemo", aliyunOSSConfig.getFiledomain() + demoDirectory + wxCVoiceTable.getMouldSmId() + "_" + y + demoSuffix);
styleList.add(style);
}
voice.put("styleList", styleList);
@@ -95,7 +99,7 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
return status;
}
AiPreviewParam param = new AiPreviewParam();
param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(str, "[*]"));
param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(Constant.text_pause, "[*]"));
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");
@@ -123,12 +127,12 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
VoiceInfoVo infoVo = new VoiceInfoVo();
infoVo.setName(EnumSpeakType.getEnum(y).getMessage());
infoVo.setEngName(y);
infoVo.setUrl(url + x.getMouldSmId() + "_" + y + end);
infoVo.setUrl(aliyunOSSConfig.getFiledomain() + demoDirectory + x.getMouldSmId() + "_" + y + demoSuffix);
list.add(infoVo);
});
VoiceInfoVo infoVo = new VoiceInfoVo();
infoVo.setName(EnumSpeakType.getEnum(0).getMessage());
infoVo.setUrl(url + x.getMouldSmId() + "_" + "default" + end);
infoVo.setUrl(aliyunOSSConfig.getFiledomain() + demoDirectory + x.getMouldSmId() + "_" + "default" + demoSuffix);
infoVo.setEngName("default");
list.add(infoVo);
x.setStyle(list);
@@ -137,7 +141,7 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
VoiceInfoVo infoVo = new VoiceInfoVo();
infoVo.setName(EnumSpeakType.getEnum(0).getMessage());
infoVo.setEngName("default");
infoVo.setUrl(url + x.getMouldSmId() + "_" + "default" + end);
infoVo.setUrl(aliyunOSSConfig.getFiledomain() + demoDirectory + x.getMouldSmId() + "_" + "default" + demoSuffix);
list.add(infoVo);
x.setStyle(list);
}


+ 2
- 2
suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java Zobrazit soubor

@@ -229,7 +229,7 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen
DouYinCreatePreOrder preOrder = new DouYinCreatePreOrder();
preOrder.setAppId(appInfo.getAppId());
preOrder.setSercrect(appInfo.getSecret());
preOrder.setSalt(payAccount.getApiKey());
preOrder.setSalt(payAccount.getMerchantApiKey());
preOrder.setOutOrderNo(order.getOrderNumber());
preOrder.setTotalAmount(order.getOrderPrice());
preOrder.setSubject(appInfo.getName()+"-"+order.getProductTitle());
@@ -256,7 +256,7 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen

@Override
public PayQueryAdapterResult queryPayStatus(ProductOrder order, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception {
OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), payAccount.getApiKey(), order.getOrderNumber(), null);
OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), payAccount.getMerchantApiKey(), order.getOrderNumber(), null);
int code = DouYinPayHelper.getPayStatusFromOrderQueryResult(orderQueryResult,order.getOrderNumber());
PayQueryAdapterResult result = new PayQueryAdapterResult();
result.setCode(code);


+ 2
- 2
suimangService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java Zobrazit soubor

@@ -225,7 +225,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{

@Override
public PayShareQueryResult shareQuery(WxAppinfo appInfo, WxPayAccount payAccount, ProductOrderSharing record) throws MallinkException {
QuerySettleResult querySettleResult = DouYinPayHelper.settleQuery(appInfo.getAppId(), payAccount.getApiKey(), record.getOutSettleNo(), null);
QuerySettleResult querySettleResult = DouYinPayHelper.settleQuery(appInfo.getAppId(), payAccount.getMerchantApiKey(), record.getOutSettleNo(), null);
if(querySettleResult == null){
throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), "分账查询异常");
}
@@ -362,7 +362,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{

Settle settle = new Settle();
settle.setAppId(appInfo.getAppId());
settle.setSalt(payAccount.getApiKey());
settle.setSalt(payAccount.getMerchantApiKey());
settle.setOutSettleNo(record.getOutSettleNo());
settle.setOutOrderNo(record.getOutOrderId());
settle.setSettleDesc(record.getSettleDesc());


+ 7
- 22
suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java Zobrazit soubor

@@ -16,6 +16,7 @@ import com.iformall.mapper.PhotoSpeakVideoMapper;
import com.iformall.service.sm.*;
import com.iformall.sm.*;
import com.iformall.utils.Base64Util;
import com.iformall.utils.Constant;
import com.iformall.utils.DateUtils;
import com.iformall.video.VideoFactory;
import com.iformall.video.entity.VideUploadResult;
@@ -82,19 +83,6 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> redisTemplate;

@Value("${photo.url}")
private String url;
@Value("${photo.hy_url}")
private String hy_url;
@Value("${photo.talk}")
private String talk_url;

//停顿符
private final static String str = "\uD83D\uDD57";

@Value("${photo.callbackUrl}")
private String callbackUrl;

@Override
public PageInfo<PhotoSpeakVideo> listAsPage(PhotoSpeakVideo record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> photoSpeakVideoMapper.findList(record));
@@ -202,8 +190,6 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
speakVideoUpd.setId(photoSpeakVideo.getId());
try {
AiPhotoSpeakParam param = new AiPhotoSpeakParam();
param.setTask_id(photoSpeakVideo.getId());
param.setCallback_url(callbackUrl + "/callback/photo/speak");
param.setImg(Base64Util.imageUrlToBase64(photoSpeakVideo.getPersonPhotoUrl()));
Map<String,Object> subtitleMap = new HashMap<>();
if(photoSpeakVideo.getSubtitleEnabled() == null){
@@ -237,7 +223,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
Integer voiceFrom = photoSpeakVideo.getVoiceFrom();
String voiceMaterialUrl = photoSpeakVideo.getVoiceMaterialUrl();
if (EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)) {
param.setGen_txt(photoSpeakVideo.getPaperwork().replaceAll(str, "[*]"));
param.setGen_txt(photoSpeakVideo.getPaperwork().replaceAll(Constant.text_pause, "[*]"));
if (sex == 1){
param.setGender("male");
}else if (sex == 2){
@@ -257,7 +243,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
}

try {
AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param);
AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param,photoSpeakVideo.getId());
if (video.isSuccess()) {
// speakVideoUpd.setSaveDir(video.getSaveDir());
// speakVideoUpd.setAudioPath(video.getAudioPath());
@@ -289,7 +275,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
@Override
public void uploadVideo(PhotoSpeakVideo mouldVideo){
if(EnumVideoStatus.success.getCode().equals(mouldVideo.getVideoStatus())){
String url1 = url + mouldVideo.getVideoPath();
String url1 = AiVideoHelper.photo_speak + mouldVideo.getVideoPath();
VideUploadResult result = videoFactory.getExcutor(videoType).uploadVideoPath(mouldVideo.getTitle(), url1);
if(result.isSuccess()){
PhotoSpeakVideo videoUpd = new PhotoSpeakVideo();
@@ -378,10 +364,9 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
AiVideoHqParam param = new AiVideoHqParam();
param.setSave_dir(speakVideo.getSaveDir());
param.setAudio_path(speakVideo.getAudioPath());
param.setTask_id(speakVideo.getId());
param.setCallback_url(callbackUrl + "/callback/photo/speak");

try {
AiVideoHqResult result = AiVideoHelper.videoHq(param);
AiVideoHqResult result = AiVideoHelper.videoHq(param,speakVideo.getId());
if (result.isSuccess()) {
// speakVideoUpd.setVideoStatus(EnumVideoStatus.hy_success.getCode());
// speakVideoUpd.setVideoMsg("超分视频生成成功");
@@ -416,7 +401,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
@Override
public void uploadHyVideo(PhotoSpeakVideo mouldVideo){
if(EnumVideoStatus.hy_success.getCode().equals(mouldVideo.getVideoStatus())){
String url = hy_url + mouldVideo.getVideoPath();
String url = AiVideoHelper.photo_speak_hy + mouldVideo.getVideoPath();
VideUploadResult result = videoFactory.getExcutor(videoType).uploadVideoPath(mouldVideo.getTitle(), url);
if(result.isSuccess()){
PhotoSpeakVideo videoUpd = new PhotoSpeakVideo();


+ 59
- 21
suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java Zobrazit soubor

@@ -16,6 +16,8 @@ import com.iformall.sm.AiVideoHelper;
import com.iformall.sm.AiVideoParam;
import com.iformall.sm.AiVideoResult;
import com.iformall.utils.Base64Util;
import com.iformall.utils.Constant;
import com.iformall.utils.RedisLock;
import com.iformall.video.VideoFactory;
import com.iformall.video.entity.VideUploadResult;
import org.apache.commons.lang3.StringUtils;
@@ -26,6 +28,8 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.net.URL;
import java.util.*;
@@ -57,15 +61,8 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService {
@Autowired
String videoType;

@Value("${photo.url}")
private String url;
@Value("${photo.hy_url}")
private String hy_url;
@Value("${photo.talk}")
private String talk_url;

//停顿符
private final static String str = "\uD83D\uDD57";
@Autowired
RedisLock redisLock;

@Override
public PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize) {
@@ -352,7 +349,7 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService {

try{
AiVideoParam videoParam = new AiVideoParam();
videoParam.setGen_txt(paperwork.replaceAll(str, "[*]"));
videoParam.setGen_txt(paperwork.replaceAll(Constant.text_pause, "[*]"));
videoParam.setVideo_template_id(personMouldSmId);
videoParam.setSubtitle(subtitleMap);
videoParam.setVoice_id(voiceMouldSmId);
@@ -394,7 +391,7 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService {
}
videoParam.setVideo_files(videoFiles);

AiVideoResult video = AiVideoHelper.createVideo(videoParam);
AiVideoResult video = AiVideoHelper.createVideo(videoParam,mouldVideo.getId());
if(video.isSuccess()){
videoUpd.setVideoPath(video.getUrl());
// videoUpd.setVideoTime(video.getDuration()+"");
@@ -423,19 +420,60 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService {

}

@Async
@Override
public void uploadVideo(UserMouldVideo mouldVideo){
if(EnumVideoStatus.success.getCode().equals(mouldVideo.getVideoStatus())
|| EnumVideoStatus.upload_fail.getCode().equals(mouldVideo.getVideoStatus())){
String url = talk_url + mouldVideo.getVideoPath();
VideUploadResult result = videoFactory.getExcutor(videoType).uploadVideoPath(mouldVideo.getTitle(), url);
if(result.isSuccess()){
UserMouldVideo videoUpd = new UserMouldVideo();
videoUpd.setId(mouldVideo.getId());
videoUpd.setVideoId(result.getVideoId());
videoUpd.setVideoStatus(EnumVideoStatus.upload_ing.getCode());
this.saveOrUpdate(videoUpd);
String lockKey = "oralBroadcasting:handleVideo:"+mouldVideo.getId();
long time = System.currentTimeMillis() + 30000;
String timeStr = String.valueOf(time);
if(!redisLock.lock2(lockKey, timeStr)){
return;
}
try{
UserMouldVideo userMouldVideo = this.getById(mouldVideo.getId());
if(EnumVideoStatus.success.getCode().equals(userMouldVideo.getVideoStatus())
|| EnumVideoStatus.upload_fail.getCode().equals(userMouldVideo.getVideoStatus())){
String url = AiVideoHelper.oral_broadcasting + mouldVideo.getVideoPath();
VideUploadResult result = videoFactory.getExcutor(videoType).uploadVideoPath(mouldVideo.getTitle(), url);
if(result.isSuccess()){
UserMouldVideo videoUpd = new UserMouldVideo();
videoUpd.setId(userMouldVideo.getId());
videoUpd.setVideoId(result.getVideoId());
videoUpd.setVideoStatus(EnumVideoStatus.upload_ing.getCode());
this.saveOrUpdate(videoUpd);

//实时判断上传状态
for (int i = 0;i <= 30; i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String progress = videoFactory.getExcutor(videoType).getVedioUploadProgress(result.getVideoId());
if (progress.equals("complete")) {
VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(result.getVideoId(),true);
if (videoDetail.isSuccess()){
videoUpd = new UserMouldVideo();
videoUpd.setId(userMouldVideo.getId());
videoUpd.setCoverImg(videoDetail.getCoverURL());
videoUpd.setVideoPlayUrl(videoDetail.getVideoUrl());
videoUpd.setVideoTime(videoDetail.getDuration());
videoUpd.setVideoSize(videoDetail.getSize());
videoUpd.setVideoStatus(EnumVideoStatus.upload_success.getCode());
videoUpd.setVideoMsg("视频上传成功");
videoUpd.setUpdateDate(new Date());
this.updateById(videoUpd);
break;
}
}
}
}
}

}catch(Exception e){

}finally{
redisLock.unlock(lockKey, timeStr);
}
}



+ 11
- 7
suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java Zobrazit soubor

@@ -11,9 +11,11 @@ import com.iformall.domain.po.sm.VoiceInfo;
import com.iformall.domain.vo.VoiceInfoVo;
import com.iformall.enums.EnumSex;
import com.iformall.enums.EnumSpeakType;
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.utils.Constant;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -28,9 +30,11 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
@Autowired
private VoiceMapper voiceMapper;

private final static String str = "\uD83D\uDD57";
private final static String url = "https://suimang.oss-accelerate.aliyuncs.com/builtin/tts_all_sample/";
private final static String end = ".wav";
@Autowired
private AliyunOSSConfig aliyunOSSConfig;

private final String demoDirectory = "/builtin/tts_all_sample/";
private final String demoSuffix = ".wav";

@Override
public List<VoiceInfo> chooseType(Long id) {
@@ -44,13 +48,13 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
VoiceInfoVo infoVo = new VoiceInfoVo();
infoVo.setName(EnumSpeakType.getEnum(y).getMessage());
infoVo.setEngName(y);
infoVo.setUrl(url + x.getMouldSmId() + "_" + y + end);
infoVo.setUrl(aliyunOSSConfig.getFiledomain() + demoDirectory + x.getMouldSmId() + "_" + y + demoSuffix);
list.add(infoVo);
});

VoiceInfoVo infoVo = new VoiceInfoVo();
infoVo.setName(EnumSpeakType.getEnum(0).getMessage());
infoVo.setUrl(url + x.getMouldSmId() + "_" + "default" + end);
infoVo.setUrl(aliyunOSSConfig.getFiledomain() + demoDirectory + x.getMouldSmId() + "_" + "default" + demoSuffix);
infoVo.setEngName("default");
list.add(infoVo);
x.setStyle(list);
@@ -59,7 +63,7 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
VoiceInfoVo infoVo = new VoiceInfoVo();
infoVo.setName(EnumSpeakType.getEnum(0).getMessage());
infoVo.setEngName("default");
infoVo.setUrl(url + x.getMouldSmId() + "_" + "default" + end);
infoVo.setUrl(aliyunOSSConfig.getFiledomain() + demoDirectory + x.getMouldSmId() + "_" + "default" + demoSuffix);
list.add(infoVo);
x.setStyle(list);
}
@@ -79,7 +83,7 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "声音信息不存在");
}
AiPreviewParam param = new AiPreviewParam();
param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(str,"[*]"));
param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(Constant.text_pause,"[*]"));
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");


+ 6
- 6
suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java Zobrazit soubor

@@ -19,20 +19,20 @@ import java.util.List;
@Component
public class AiDigitalAvatarHelper {

private static String digital_avatar;
@Value("${photo.digital_avatar}")
public static String digital_avatar;
@Value("${suimang.digital_avatar}")
public void setDigitalAvatar(String digital_avatar){
this.digital_avatar = digital_avatar;
}

private static String digital_avatar_hy;
@Value("${photo.digital_avatar_hy}")
public static String digital_avatar_hy;
@Value("${suimang.digital_avatar_hy}")
public void setDigitalAvatarHy(String digital_avatar_hy){
this.digital_avatar_hy = digital_avatar_hy;
}

private static String callbackUrl;
@Value("${photo.callbackUrl}")
public static String callbackUrl;
@Value("${suimang.callbackUrl}")
public void setCallbackUrl(String callbackUrl){
this.callbackUrl = callbackUrl;
}


+ 79
- 69
suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java Zobrazit soubor

@@ -31,39 +31,43 @@ import java.util.*;
@Component
public class AiVideoHelper {

private static String url;
@Value("${photo.url}")
public void setUrl(String url){
this.url = url;
public static String oral_broadcasting;
@Value("${suimang.oral_broadcasting}")
public void setOralBroadcasting(String oral_broadcasting){
this.oral_broadcasting = oral_broadcasting;
}

private static String hy_url;
@Value("${photo.hy_url}")
public void setHyUrl(String hyUrl){
this.hy_url = hyUrl;
public static String photo_speak;
@Value("${suimang.photo_speak}")
public void setPhotoSpeak(String photo_speak){
this.photo_speak = photo_speak;
}

private static String talk_url;
@Value("${photo.talk}")
public void setTalkUrl(String talkUrl){
this.talk_url = talkUrl;
public static String photo_speak_hy;
@Value("${suimang.photo_speak_hy}")
public void setPhotoSpeakHy(String photo_speak_hy){
this.photo_speak_hy = photo_speak_hy;
}

public static String callbackUrl;
@Value("${suimang.callbackUrl}")
public void setCallbackUrl(String callbackUrl){
this.callbackUrl = callbackUrl;
}

public static String photo_speak_suffix = "/img_talking";
public static String image_quality_suffix = "/image_qualit";
public static String voice_preview = "/tts_wav";
public static String video_hq = "/video_hq";

public static String doPost(String url, String params) {
return HttpUtil.doAiVideoPost(url,params);
}

public static AiVideoResult createVideo(AiVideoParam videoParam) {
public static AiVideoResult createVideo(AiVideoParam videoParam,Long taskId) {

videoParam.setTask_id(taskId);
videoParam.setCallback_url(callbackUrl + "/callback/oral/broadcasting");

log.info("生成视频start request:" + videoParam.neglectImgString());
String response = doPost(talk_url+"/gen_dh_video", JSONObject.toJSONString(videoParam));
String response = doPost(oral_broadcasting+"/gen_dh_video", JSONObject.toJSONString(videoParam));
log.info("生成视频end response:"+response);

AiVideoResult result = new AiVideoResult();
@@ -119,53 +123,11 @@ public class AiVideoHelper {
// return result;
// }
}
public static AiPhotoSpeakResult createPhotoSpeakVideo(AiPhotoSpeakParam videoParam) {
log.info("生成视频start request:" + videoParam.neglectImgString());
String response = doPost(url + photo_speak_suffix, JSONObject.toJSONString(videoParam));
log.info("生成视频end response:" + response);
AiPhotoSpeakResult result = new AiPhotoSpeakResult();
if (StringUtils.isBlank(response)) {
result.setSuccess(false);
result.setMsg("(MetaService empty)服务被Avatar攻击...");
return result;
}

JSONObject jsonObject = JSON.parseObject(response);
JSONObject status = jsonObject.getJSONObject("status");
Integer code = status.getInteger("code");
String msg = status.getString("msg");
if (code == null) {
result.setSuccess(false);
result.setMsg("(MetaService code empty)服务被Avatar攻击...");
return result;
}

if (code.intValue() == 4000) {
JSONObject data = jsonObject.getJSONObject("data");
String videoUrl = data.getString("url");
String saveDir = data.getString("save_dir");
String audioPath = data.getString("audio_path");
result.setSuccess(true);
result.setUrl(videoUrl);
result.setSaveDir(saveDir);
result.setCode(code);
result.setAudioPath(audioPath);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
} else {
result.setSuccess(false);
result.setCode(code);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
}
return result;
}

public static AiCheckPhotoResult checkPhoto(AiCheckPhotoParam param) {
// String response = doPost("http://111.198.0.15:22299" + image_quality_suffix, JSONObject.toJSONString(param));
String response = doPost(url + image_quality_suffix, JSONObject.toJSONString(param));
// String response = doPost("http://111.198.0.15:22299" + "/image_qualit", JSONObject.toJSONString(param));
String response = doPost(photo_speak + "/image_qualit", JSONObject.toJSONString(param));
log.info("图片质量审核 end response:" + response);
log.info("图片质量审核 IP:" + url + image_quality_suffix);
AiCheckPhotoResult result = new AiCheckPhotoResult();

if (StringUtils.isBlank(response)) {
@@ -197,9 +159,8 @@ public class AiVideoHelper {
}

public static AiPreviewResult voicePreview(AiPreviewParam param) {
String response = doPost(url + voice_preview, JSONObject.toJSONString(param));
String response = doPost(photo_speak + "/tts_wav", JSONObject.toJSONString(param));
log.info("TTS音色预览 end response:" + response);
log.info("TTS音色预览 IP:" + url + voice_preview);
AiPreviewResult result = new AiPreviewResult();

if (StringUtils.isBlank(response)) {
@@ -227,7 +188,7 @@ public class AiVideoHelper {
if (code.intValue() == 3000) {
result.setCode(200);
result.setSuccess(true);
result.setUrl(url + strURL);
result.setUrl(photo_speak + strURL);
result.setTime(Double.valueOf(time));
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
@@ -240,10 +201,59 @@ public class AiVideoHelper {
return result;
}

public static AiVideoHqResult videoHq(AiVideoHqParam param) {
String response = doPost(hy_url + video_hq, JSONObject.toJSONString(param));
public static AiPhotoSpeakResult createPhotoSpeakVideo(AiPhotoSpeakParam videoParam,Long taskId) {

videoParam.setTask_id(taskId);
videoParam.setCallback_url(callbackUrl + "/callback/photo/speak");

log.info("生成视频start request:" + videoParam.neglectImgString());
String response = doPost(photo_speak + "/img_talking", JSONObject.toJSONString(videoParam));
log.info("生成视频end response:" + response);
AiPhotoSpeakResult result = new AiPhotoSpeakResult();
if (StringUtils.isBlank(response)) {
result.setSuccess(false);
result.setMsg("(MetaService empty)服务被Avatar攻击...");
return result;
}

JSONObject jsonObject = JSON.parseObject(response);
JSONObject status = jsonObject.getJSONObject("status");
Integer code = status.getInteger("code");
String msg = status.getString("msg");
if (code == null) {
result.setSuccess(false);
result.setMsg("(MetaService code empty)服务被Avatar攻击...");
return result;
}

if (code.intValue() == 4000) {
JSONObject data = jsonObject.getJSONObject("data");
String videoUrl = data.getString("url");
String saveDir = data.getString("save_dir");
String audioPath = data.getString("audio_path");
result.setSuccess(true);
result.setUrl(videoUrl);
result.setSaveDir(saveDir);
result.setCode(code);
result.setAudioPath(audioPath);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
} else {
result.setSuccess(false);
result.setCode(code);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
}
return result;
}

public static AiVideoHqResult videoHq(AiVideoHqParam param,Long taskId) {

param.setTask_id(taskId);
param.setCallback_url(callbackUrl + "/callback/photo/speak");

String response = doPost(photo_speak_hy + "/video_hq", JSONObject.toJSONString(param));
log.info("视频超分 end response:" + response);
log.info("视频超分 IP:" + hy_url + video_hq);
AiVideoHqResult result = new AiVideoHqResult();

if (StringUtils.isBlank(response)) {
@@ -269,7 +279,7 @@ public class AiVideoHelper {
if (code.intValue() == 5000) {
result.setCode(200);
result.setSuccess(true);
result.setUrl(url + strURL);
result.setUrl(strURL);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
} else {


+ 3
- 0
suimangService/src/main/java/com/iformall/sm/AiVideoParam.java Zobrazit soubor

@@ -32,6 +32,9 @@ public class AiVideoParam {
* | +++ ratio | 是 | float32 | 相对于原素材图片大小的缩放比例,如0.5表示宽高均变为原来的一半 |
*/

private Long task_id;
private String callback_url;

private String gen_txt;
private String video_template_id;
private String voice_id;


+ 2
- 0
suimangService/src/main/java/com/iformall/utils/Constant.java Zobrazit soubor

@@ -118,4 +118,6 @@ public class Constant {
public static final Integer wiwideOldPlat = 0;//老平台
public static final Integer wiwideNewPlat = 1;//新平台

public static final String text_pause = "\uD83D\uDD57";

}

Načítá se…
Zrušit
Uložit