diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java index e868206dc..d278e068a 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java @@ -977,4 +977,8 @@ public class MyApiService { Date cycleDateTime = StringUtils.isNotBlank(cycleDate) ? DateTimeUtil.convertStrToDate(cycleDate, DateTimeUtil.DEFAULT_DATE_PATTERN): null; guildCrystalSettlementService.settlement(PartitionEnum.TURKEY.getId(), cycleDateTime, waitSecond); } + + public void mp4TransferGif(String url) { + SpringContextHolder.getBean(UploadAvatarService.class).reviewAvatar(null, url, null, null, null, null); + } } diff --git a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java index cbb791666..5a34aff6e 100644 --- a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java +++ b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java @@ -385,4 +385,14 @@ public class MyApiController { myApiService.guildCrystalSettlement(cycleDate, waitSecond); return BusiResult.success(); } + + @GetMapping("/mp4TransferGif") + public BusiResult mp4TransferGif(Long roomId) { + if (null == roomId || !roomId.equals(603L)) { + throw new AdminServiceException(BusiStatus.PARAMERROR); + } + String url = "https://image.molistar.xyz/64854f73-ea1b-426f-8230-34de49571b8a.mp4"; + myApiService.mp4TransferGif(url); + return BusiResult.success(); + } } diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/common/config/TencentCosConfig.java b/accompany-base/accompany-core/src/main/java/com/accompany/common/config/TencentCosConfig.java index b26841cd5..21dd2ad4a 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/common/config/TencentCosConfig.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/common/config/TencentCosConfig.java @@ -32,4 +32,6 @@ public class TencentCosConfig { private Boolean accelerate = false; + private String gifJobTemplateId; + } 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 new file mode 100644 index 000000000..c54a89571 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/TencentDataUniverseService.java @@ -0,0 +1,67 @@ +package com.accompany.business.service; + +import com.accompany.common.config.TencentCosConfig; +import com.accompany.common.redis.RedisKey; +import com.accompany.common.utils.EnvComponent; +import com.accompany.common.utils.UUIDUtil; +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.MediaJobResponse; +import com.qcloud.cos.model.ciModel.job.MediaJobsRequest; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.net.URL; + +@Slf4j +@Service +public class TencentDataUniverseService { + + @Autowired + private TencentCosConfig tencentCosConfig; + @Autowired + private COSClient client; + @Autowired + private EnvComponent envComponent; + + @SneakyThrows + @Async + public void transfer2Gif(Long uid, String avatar, String redisKey, Long price, String ip, String deviceId) { + + URL url = new URL(avatar); + String inputPath = url.getPath(); + String outputPath = inputPath.replace(".mp4", ".gif"); + String outputAvatar = url.getHost() + outputPath; + + //1.创建任务请求对象 + MediaJobsRequest request = new MediaJobsRequest(); + //2.添加请求参数 参数详情请见 API 接口文档 + request.setBucketName(tencentCosConfig.getBucket()); + request.setTag("Animation"); + request.getInput().setObject(inputPath); + request.getOperation().setTemplateId(tencentCosConfig.getGifJobTemplateId()); + request.getOperation().getOutput().setBucket(tencentCosConfig.getBucket()); + request.getOperation().getOutput().setRegion(tencentCosConfig.getRegion()); + request.getOperation().getOutput().setObject(outputPath); + //3.调用接口,获取任务响应对象 + MediaJobResponse response = client.createMediaJobs(request); + log.info("tencent mp4转码gif 任务提交结果: {}", JSON.toJSONString(response)); + + //正式环境等回调 + if (!envComponent.getDevOrNativeEnv()){ + return; + } + + String taskId = UUIDUtil.get(); + SpringContextHolder.getBean(UploadAvatarService.class).cacheReviewAvatar(redisKey, String.valueOf(uid), outputAvatar, price); + SpringContextHolder.getBean(JedisService.class).hset(RedisKey.user_avatar_review_task.getKey(), taskId, String.valueOf(uid)); + + SpringContextHolder.getBean(UploadAvatarService.class).updateAvatar(outputAvatar, uid, redisKey, taskId); + } + +} diff --git a/accompany-dependencies/pom.xml b/accompany-dependencies/pom.xml index fe2c38da6..19b05b5cb 100644 --- a/accompany-dependencies/pom.xml +++ b/accompany-dependencies/pom.xml @@ -74,7 +74,7 @@ 5.5.2 2.6 3.1.781 - 5.6.179 + 5.6.253 3.1.1 2.3.3 2.3.2