Commit d1430411 by 程裕兵

feat:upload

parent c17d937f
package com.jiejing.fitness.finance.service.merchant.impl; package com.jiejing.fitness.finance.service.merchant.impl;
import com.alibaba.fastjson.JSONObject;
import com.jiejing.common.exception.BizException;
import com.jiejing.common.utils.collection.CollectionUtil;
import com.jiejing.filecenter.api.resource.vo.ResourceInfoVO;
import com.jiejing.fitness.finance.repository.entity.BrandMerchantApply; import com.jiejing.fitness.finance.repository.entity.BrandMerchantApply;
import com.jiejing.fitness.finance.repository.service.BrandMerchantApplyRpService; import com.jiejing.fitness.finance.repository.service.BrandMerchantApplyRpService;
import com.jiejing.fitness.finance.service.merchant.BrandMerchantService; import com.jiejing.fitness.finance.service.merchant.BrandMerchantService;
import com.jiejing.fitness.finance.service.merchant.convert.MerchantConvert; import com.jiejing.fitness.finance.service.merchant.convert.MerchantConvert;
import com.jiejing.fitness.finance.service.merchant.params.ApplyBrandMerchantParams; import com.jiejing.fitness.finance.service.merchant.params.ApplyBrandMerchantParams;
import com.jiejing.fitness.finance.service.rpc.MerchantRpcService; import com.jiejing.fitness.finance.service.rpc.MerchantRpcService;
import com.jiejing.fitness.finance.service.rpc.ResourceRpcService;
import com.jiejing.fitness.finance.service.rpc.StudioRpcService; import com.jiejing.fitness.finance.service.rpc.StudioRpcService;
import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest; import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest;
import com.jiejing.paycenter.api.merchant.request.UploadRequest;
import com.jiejing.paycenter.common.enums.common.OpenStateEnums; import com.jiejing.paycenter.common.enums.common.OpenStateEnums;
import com.jiejing.paycenter.common.enums.error.PayErrorEnums;
import com.jiejing.paycenter.common.enums.merchant.ResourceTypeEnums;
import com.jiejing.paycenter.common.model.ResourceInfo;
import com.jiejing.studio.api.studio.vo.StudioVO; import com.jiejing.studio.api.studio.vo.StudioVO;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -35,11 +48,16 @@ public class BrandMerchantServiceImpl implements BrandMerchantService { ...@@ -35,11 +48,16 @@ public class BrandMerchantServiceImpl implements BrandMerchantService {
private MerchantRpcService merchantRpcService; private MerchantRpcService merchantRpcService;
@Resource @Resource
private ResourceRpcService resourceRpcService;
@Resource
private BrandMerchantApplyRpService brandMerchantApplyRpService; private BrandMerchantApplyRpService brandMerchantApplyRpService;
@Override @Override
public void apply(ApplyBrandMerchantParams params) { public void apply(ApplyBrandMerchantParams params) {
this.upload(params);
StudioVO studio = studioRpcService.getStudio(params.getStudioId()); StudioVO studio = studioRpcService.getStudio(params.getStudioId());
BrandMerchantApply exist = brandMerchantApplyRpService.getLatestOneSuccessByBrandId(studio.getBrandId()); BrandMerchantApply exist = brandMerchantApplyRpService.getLatestOneSuccessByBrandId(studio.getBrandId());
BrandMerchantApply apply = MerchantConvert.convertApply(params, studio, exist, channel); BrandMerchantApply apply = MerchantConvert.convertApply(params, studio, exist, channel);
...@@ -58,4 +76,36 @@ public class BrandMerchantServiceImpl implements BrandMerchantService { ...@@ -58,4 +76,36 @@ public class BrandMerchantServiceImpl implements BrandMerchantService {
} }
private void upload(ApplyBrandMerchantParams params) {
Map<Long, ResourceInfoVO> resourceIdUrlMap = resourceRpcService.getResourceMap(params.getStudioId(),
getResourceIds(params));
List<ResourceTypeEnums> resourceTypes = params.getResourceInfo().keySet().stream().filter(type -> {
Long resourceId = params.getResourceInfo().get(type).getResourceId();
return type.getMaxSize().compareTo(resourceIdUrlMap.get(resourceId).getFileSize()) < 0;
}).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(resourceTypes)) {
String message = "";
for (ResourceTypeEnums type : resourceTypes) {
message = message + "[" + type.getDesc() + "大小不超过" + type.getMaxSize() / 1024 / 1024 + "MB]";
}
throw new BizException(PayErrorEnums.PARAMS_ERROR, new JSONObject().fluentPut("message", message));
}
params.getResourceInfo().keySet().forEach(type -> {
Long resourceId = params.getResourceInfo().get(type).getResourceId();
String url = resourceIdUrlMap.get(resourceId).getUrl();
String thirdId = merchantRpcService.upload(
UploadRequest.builder().url(url).channelNo(channel).resourceType(type).build());
params.getResourceInfo().get(type).setThirdId(thirdId);
});
}
private List<Long> getResourceIds(ApplyBrandMerchantParams params) {
return params.getResourceInfo().values().stream()
.map(ResourceInfo::getResourceId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
}
} }
...@@ -3,7 +3,9 @@ package com.jiejing.fitness.finance.service.rpc; ...@@ -3,7 +3,9 @@ package com.jiejing.fitness.finance.service.rpc;
import com.jiejing.common.model.JsonResult; import com.jiejing.common.model.JsonResult;
import com.jiejing.paycenter.api.merchant.MerchantApi; import com.jiejing.paycenter.api.merchant.MerchantApi;
import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest; import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest;
import com.jiejing.paycenter.api.merchant.request.UploadRequest;
import com.jiejing.paycenter.api.merchant.vo.ApplyMerchantResultVO; import com.jiejing.paycenter.api.merchant.vo.ApplyMerchantResultVO;
import com.jiejing.paycenter.api.merchant.vo.UploadVO;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -19,6 +21,12 @@ public class MerchantRpcService { ...@@ -19,6 +21,12 @@ public class MerchantRpcService {
@Resource @Resource
private MerchantApi merchantApi; private MerchantApi merchantApi;
public String upload(UploadRequest request) {
JsonResult<UploadVO> result = merchantApi.upload(request);
result.assertSuccess();
return result.getResult().getThirdId();
}
public ApplyMerchantResultVO apply(ApplyMerchantRequest request) { public ApplyMerchantResultVO apply(ApplyMerchantRequest request) {
JsonResult<ApplyMerchantResultVO> result = merchantApi.apply(request); JsonResult<ApplyMerchantResultVO> result = merchantApi.apply(request);
result.assertSuccess(); result.assertSuccess();
......
package com.jiejing.fitness.finance.service.rpc;
import com.jiejing.common.model.JsonResult;
import com.jiejing.filecenter.api.common.enums.AccessTypeEnum;
import com.jiejing.filecenter.api.resource.ResourceApi;
import com.jiejing.filecenter.api.resource.request.BatchQueryMultiResourceRequest;
import com.jiejing.filecenter.api.resource.vo.ResourceInfoVO;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @author chengyubing
* @since 2024/1/25 18:05
*/
@Service
public class ResourceRpcService {
@Resource
private ResourceApi resourceApi;
public Map<Long, ResourceInfoVO> getResourceMap(Long partyId, List<Long> resourceIds) {
BatchQueryMultiResourceRequest request = new BatchQueryMultiResourceRequest();
request.setAccessTypeEnum(AccessTypeEnum.PUBLIC);
request.setResourceIds(resourceIds);
request.setTenantId(partyId);
request.setExpire(TimeUnit.SECONDS.toMillis(60));
JsonResult<List<ResourceInfoVO>> result = resourceApi.getInfoByIds(request);
return Optional.ofNullable(result.getResult())
.map(list -> list.stream().collect(Collectors.toMap(ResourceInfoVO::getResourceId, e -> e)))
.orElse(new HashMap<>(1));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment