Browse Source

//..

private_deployment
xhxu 1 year ago
parent
commit
996c4e76ad
5 changed files with 99 additions and 9 deletions
  1. +42
    -0
      suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java
  2. +4
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java
  3. +46
    -7
      suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java
  4. +4
    -2
      suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java
  5. +3
    -0
      suimangService/src/main/java/com/iformall/sm/SuperImgParam.java

+ 42
- 0
suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java View File

@@ -6,8 +6,10 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.*; import com.iformall.domain.po.sm.*;
import com.iformall.enums.EnumDigitalAvatarOrderStatus; import com.iformall.enums.EnumDigitalAvatarOrderStatus;
import com.iformall.enums.EnumDigitalAvatarPhotoStatus;
import com.iformall.enums.EnumVideoStatus; import com.iformall.enums.EnumVideoStatus;
import com.iformall.service.sm.*; import com.iformall.service.sm.*;
import com.iformall.utils.Base64Util;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -16,6 +18,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;


import java.io.InputStream;
import java.util.*; import java.util.*;




@@ -31,6 +34,9 @@ public class CallbackSmController extends BaseController {
@Autowired @Autowired
private UserDigitalAvatarOrderService userDigitalAvatarOrderService; private UserDigitalAvatarOrderService userDigitalAvatarOrderService;


@Autowired
private UserDigitalAvatarPhotoService userDigitalAvatarPhotoService;

@AuthIgnore @AuthIgnore
@ApiOperation("视频回调") @ApiOperation("视频回调")
@PostMapping(value = "/photo/speak") @PostMapping(value = "/photo/speak")
@@ -147,4 +153,40 @@ public class CallbackSmController extends BaseController {
return new ResultData(); return new ResultData();
} }


@AuthIgnore
@ApiOperation("照片超分回调")
@PostMapping(value = "/super/photo")
public ResultData superPhoto(@RequestBody Map<String, Object> paranMap) {
logger.debug("[" + getIpAddr() + "] CallbackSmController::superPhoto");

Long task_id = (Long) paranMap.get("task_id");//任务ID
String code = (String) paranMap.get("code");//code
String msg = (String) paranMap.get("msg");
logger.info("照片超分结果通知{}task_id="+task_id+",code="+code);

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

if (userDigitalAvatarPhoto == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
}

if("3000".equals(code)){
Map<String,String> data = (Map) paranMap.get("data");
String img = data.get("img");
userDigitalAvatarPhotoService.handleSuperPhoto(userDigitalAvatarPhoto,img);
}else{
UserDigitalAvatarPhoto updPhoto = new UserDigitalAvatarPhoto();
updPhoto.setId(userDigitalAvatarPhoto.getId());
updPhoto.setStatus(EnumDigitalAvatarPhotoStatus.fail.getCode());
updPhoto.setMsg(msg);
updPhoto.setUpdateDate(new Date());
userDigitalAvatarPhotoService.updateById(updPhoto);
}

return new ResultData();
}

} }

+ 4
- 0
suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java View File

@@ -2,6 +2,7 @@ package com.iformall.service.sm;


import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.UserDigitalAvatarOrder;
import com.iformall.domain.po.sm.UserDigitalAvatarPhoto; import com.iformall.domain.po.sm.UserDigitalAvatarPhoto;


import java.util.List; import java.util.List;
@@ -16,4 +17,7 @@ public interface UserDigitalAvatarPhotoService {


void superPhoto(UserDigitalAvatarPhoto record); void superPhoto(UserDigitalAvatarPhoto record);


void handleSuperPhoto(UserDigitalAvatarPhoto record, String img);

void updateById(UserDigitalAvatarPhoto updPhoto);
} }

+ 46
- 7
suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java View File

@@ -1,6 +1,7 @@
package com.iformall.service.sm.impl; package com.iformall.service.sm.impl;


import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.*; import com.iformall.domain.po.sm.*;
import com.iformall.enums.*; import com.iformall.enums.*;
@@ -11,6 +12,7 @@ import com.iformall.service.UserBasicPropertyService;
import com.iformall.service.sm.*; import com.iformall.service.sm.*;
import com.iformall.sm.*; import com.iformall.sm.*;
import com.iformall.utils.Base64Util; import com.iformall.utils.Base64Util;
import com.iformall.utils.RedisLock;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
@@ -37,6 +39,8 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
@Autowired @Autowired
private AliyunOSS aliyunOSS; private AliyunOSS aliyunOSS;


@Autowired
RedisLock redisLock;


@Override @Override
public UserDigitalAvatarPhoto selectById(Long id) { public UserDigitalAvatarPhoto selectById(Long id) {
@@ -96,14 +100,10 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
try{ try{
SuperImgParam param = new SuperImgParam(); SuperImgParam param = new SuperImgParam();
param.setImg(Base64Util.imageUrlToBase64(record.getImage())); param.setImg(Base64Util.imageUrlToBase64(record.getImage()));
SuperImgResult result = AiDigitalAvatarHelper.superImg(param);
SuperImgResult result = AiDigitalAvatarHelper.superImg(param,record.getId());
if(result.isSuccess()){ if(result.isSuccess()){
InputStream inputStream = Base64Util.base2InputStream(result.getImg());
String img_url = aliyunOSS.upload(record.getTenantId(), ".jpg", inputStream);

updPhoto.setImageSuper(img_url);
updPhoto.setStatus(EnumDigitalAvatarPhotoStatus.finish.getCode());
updPhoto.setMsg("success");
handleSuperPhoto(record,result.getImg());
return;
}else{ }else{
updPhoto.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode()); updPhoto.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode());
updPhoto.setMsg(result.getMsg()); updPhoto.setMsg(result.getMsg());
@@ -122,4 +122,43 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
userDigitalAvatarPhotoMapper.updateById(updPhoto); userDigitalAvatarPhotoMapper.updateById(updPhoto);
} }


@Override
public void handleSuperPhoto(UserDigitalAvatarPhoto record, String img) {
String lockKey = "digitalAvatar:superPhoto:"+record.getId();
long time = System.currentTimeMillis() + 5000;
String timeStr = String.valueOf(time);
try{
while (!redisLock.lock2(lockKey, timeStr)){
Thread.sleep(2000);
}
UserDigitalAvatarPhoto userDigitalAvatarPhoto = userDigitalAvatarPhotoMapper.selectById(record.getId());
if(EnumDigitalAvatarPhotoStatus.finish.getCode().equals(userDigitalAvatarPhoto.getStatus())){
return;
}

InputStream inputStream = Base64Util.base2InputStream(img);
String img_url = aliyunOSS.upload(record.getTenantId(), ".jpg", inputStream);

UserDigitalAvatarPhoto updPhoto = new UserDigitalAvatarPhoto();
updPhoto.setId(userDigitalAvatarPhoto.getId());
updPhoto.setImageSuper(img_url);
updPhoto.setStatus(EnumDigitalAvatarPhotoStatus.finish.getCode());
updPhoto.setMsg("success");
updPhoto.setUpdateDate(new Date());
userDigitalAvatarPhotoMapper.updateById(updPhoto);
} catch(MallinkException e){
throw e;
} catch(Exception e){
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR);
}finally {
redisLock.unlock(lockKey, timeStr);
}

}

@Override
public void updateById(UserDigitalAvatarPhoto updPhoto) {
userDigitalAvatarPhotoMapper.updateById(updPhoto);
}

} }

+ 4
- 2
suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java View File

@@ -116,8 +116,10 @@ public class AiDigitalAvatarHelper {


} }


public static SuperImgResult superImg(SuperImgParam param) {

public static SuperImgResult superImg(SuperImgParam param,Long taskId) {
param.setTask_id(taskId);
// param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo");
param.setCallback_url(callbackUrl + "/callback/super/photo");
// log.info("生成照片start request:" + param.getBg_img()); // log.info("生成照片start request:" + param.getBg_img());
String response = HttpUtil.doAiVideoPost(digital_avatar_hy + "/sr_img", JSONObject.toJSONString(param)); String response = HttpUtil.doAiVideoPost(digital_avatar_hy + "/sr_img", JSONObject.toJSONString(param));
log.info("照片超分end response:"+response); log.info("照片超分end response:"+response);


+ 3
- 0
suimangService/src/main/java/com/iformall/sm/SuperImgParam.java View File

@@ -7,4 +7,7 @@ public class SuperImgParam {


private String img; private String img;


private Long task_id;
private String callback_url;

} }

Loading…
Cancel
Save