动态头像-mp4-回调

This commit is contained in:
2025-09-05 19:24:54 +08:00
parent bddcb51404
commit ff3893a029
3 changed files with 69 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ import com.accompany.core.base.SpringContextHolder;
import com.accompany.core.service.common.JedisService;
import com.alibaba.fastjson2.JSON;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.model.ciModel.job.MediaJobObject;
import com.qcloud.cos.model.ciModel.job.MediaJobResponse;
import com.qcloud.cos.model.ciModel.job.MediaJobsRequest;
import lombok.SneakyThrows;
@@ -64,4 +65,7 @@ public class TencentDataUniverseService {
SpringContextHolder.getBean(UploadAvatarService.class).updateAvatar(outputAvatar, uid, redisKey, taskId);
}
public void handleResult(MediaJobObject jobsDetail) {
}
}

View File

@@ -14,7 +14,6 @@ import com.accompany.business.service.room.RoomService;
import com.accompany.business.util.VipUtil;
import com.accompany.common.config.SystemConfig;
import com.accompany.common.constant.Constant;
import com.accompany.common.device.DeviceInfo;
import com.accompany.common.netease.ErBanNetEaseService;
import com.accompany.common.netease.neteaseacc.result.BaseNetEaseRet;
import com.accompany.common.redis.RedisKey;
@@ -31,6 +30,8 @@ import com.accompany.core.model.Users;
import com.accompany.core.service.base.BaseService;
import com.accompany.core.service.user.UsersBaseService;
import com.accompany.core.util.I18NMessageSourceUtil;
import com.qcloud.cos.model.ciModel.template.MediaTemplateRequest;
import com.qcloud.cos.model.ciModel.template.MediaTemplateResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@@ -63,6 +64,8 @@ public class UploadAvatarService extends BaseService {
private AvatarPaidRecordMapper avatarPaidRecordMapper;
private final Long gifAvatarGoldPrice = 10000L;
@Autowired
private TencentDataUniverseService tencentDataUniverseService;
public long getGifAvatarGoldPrice(){
return gifAvatarGoldPrice;
@@ -201,6 +204,10 @@ public class UploadAvatarService extends BaseService {
}
public void reviewAvatar(Long uid, String avatar, String redisKey, Long price, String ip, String deviceId) {
if (ImageFileUtils.isMp4(avatar)){
tencentDataUniverseService.transfer2Gif(uid, avatar, redisKey, price, ip, deviceId);
return;
}
YidunCheckUtil.reviewAvatar(uid, avatar, redisKey, price, ip, deviceId);
}

View File

@@ -0,0 +1,57 @@
package com.accompany.business.controller;
import com.accompany.business.common.BaseController;
import com.accompany.business.service.TencentDataUniverseService;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.exception.ServiceException;
import com.qcloud.cos.model.ciModel.job.MediaJobResponse;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.security.NoTypePermission;
import com.thoughtworks.xstream.security.NullPermission;
import com.thoughtworks.xstream.security.PrimitiveTypePermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Slf4j
@RestController
@Api(tags = "腾讯云数据万象媒体转码", value = "腾讯云数据万象媒体转码")
@RequestMapping(value = "/tencent/media")
public class TencentCosMediaCallbackController extends BaseController {
@Resource
private TencentDataUniverseService service;
@ApiOperation("易盾图片审核结果上报")
@PostMapping("/callback")
public BusiResult<Void> callback(@RequestBody String xml) {
if (!StringUtils.hasText(xml)){
throw new ServiceException(BusiStatus.PARAMERROR);
}
XStream xstream = new XStream();
// 清除默认安全权限
xstream.addPermission(NoTypePermission.NONE);
// 添加基本类型权限
xstream.addPermission(NullPermission.NULL);
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
// 显式允许MediaJobResponse类
xstream.allowTypes(new Class[]{MediaJobResponse.class});
// 设置别名
xstream.processAnnotations(MediaJobResponse.class);
xstream.ignoreUnknownElements();
MediaJobResponse response = (MediaJobResponse) xstream.fromXML(xml);
log.info("收到腾讯云数据万象转码回调,解析后内容: {}", response);
service.handleResult(response.getJobsDetail());
return BusiResult.success();
}
}