From ff3893a029de1535c63e302fbb72fb5dbb78b683 Mon Sep 17 00:00:00 2001 From: khalil <842328916@qq.com> Date: Fri, 5 Sep 2025 19:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=A4=B4=E5=83=8F-mp4-?= =?UTF-8?q?=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TencentDataUniverseService.java | 4 ++ .../business/service/UploadAvatarService.java | 9 ++- .../TencentCosMediaCallbackController.java | 57 +++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/TencentCosMediaCallbackController.java diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/TencentDataUniverseService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/TencentDataUniverseService.java index c54a89571..e15b08052 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/TencentDataUniverseService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/TencentDataUniverseService.java @@ -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) { + + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/UploadAvatarService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/UploadAvatarService.java index 3fd9333e6..8aad397ca 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/UploadAvatarService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/UploadAvatarService.java @@ -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); } diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/TencentCosMediaCallbackController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/TencentCosMediaCallbackController.java new file mode 100644 index 000000000..2dd8d6007 --- /dev/null +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/TencentCosMediaCallbackController.java @@ -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 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(); + } +}