Commit f7d128e4 by 吴博

feat: [1006901] 外链拓展

parent d6416d3f
...@@ -43,6 +43,7 @@ import com.pcloud.book.consumer.app.AppConsr; ...@@ -43,6 +43,7 @@ import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr; import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.reader.ReaderConsr; import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.copyright.biz.BookAuthServeBiz;
import com.pcloud.book.group.biz.WeworkTeacherBiz; import com.pcloud.book.group.biz.WeworkTeacherBiz;
import com.pcloud.book.group.dto.WxWorkTeacherDTO; import com.pcloud.book.group.dto.WxWorkTeacherDTO;
import com.pcloud.book.group.enums.AppAndProductTypeEnum; import com.pcloud.book.group.enums.AppAndProductTypeEnum;
...@@ -53,9 +54,10 @@ import com.pcloud.book.applet.dto.GroupActivity4AppletDTO; ...@@ -53,9 +54,10 @@ import com.pcloud.book.applet.dto.GroupActivity4AppletDTO;
import com.pcloud.book.util.common.CommonUtils; import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.book.util.properties.BookProps; import com.pcloud.book.util.properties.BookProps;
import com.pcloud.channelcenter.base.constants.MessageFromTypeEnum;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto; import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.common.constant.LinkServeConstant;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.enums.AppTypeEnum;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
...@@ -139,6 +141,8 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -139,6 +141,8 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
private ReaderConsr readerConsr; private ReaderConsr readerConsr;
@Autowired @Autowired
private BookProps bookProps; private BookProps bookProps;
@Autowired
private BookAuthServeBiz bookAuthServeBiz;
@Override @Override
@ParamLog("通过ID查询单条数据") @ParamLog("通过ID查询单条数据")
...@@ -582,7 +586,7 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -582,7 +586,7 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
appletRecordDTO.setCoverImg(Optional.ofNullable(bookDtoMap.get(appletRecordDTO.getBookId())).map(BookDto::getCoverImg).orElse("")); appletRecordDTO.setCoverImg(Optional.ofNullable(bookDtoMap.get(appletRecordDTO.getBookId())).map(BookDto::getCoverImg).orElse(""));
} }
//填充作品信息 //填充作品信息
fillProduct4Record(productDtoMap, productDtoMapFuture, appletRecordDTO); fillProduct4Record(productDtoMap, productDtoMapFuture, appletRecordDTO, wechatUserId);
} else if (Objects.equals(AppletRecordTypeEnum.APP.value, appletRecordDTO.getRecordType())) { } else if (Objects.equals(AppletRecordTypeEnum.APP.value, appletRecordDTO.getRecordType())) {
if ("ANSWER".equals(appletRecordDTO.getTypeCode())) { if ("ANSWER".equals(appletRecordDTO.getTypeCode())) {
appletRecordDTO.setBookName(Optional.ofNullable(bookDtoMap.get(appletRecordDTO.getBookId())).map(BookDto::getBookName).orElse("")); appletRecordDTO.setBookName(Optional.ofNullable(bookDtoMap.get(appletRecordDTO.getBookId())).map(BookDto::getBookName).orElse(""));
...@@ -767,7 +771,8 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -767,7 +771,8 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
appletAppOrProductDTO.setServeType(AppAndProductTypeEnum.APP.value); appletAppOrProductDTO.setServeType(AppAndProductTypeEnum.APP.value);
appletAppOrProductDTO.setServeId(appletRecordDTO.getFromId()); appletAppOrProductDTO.setServeId(appletRecordDTO.getFromId());
//优化跳转 //优化跳转
if (AppTypeEnum.ARTICLE.value.equals(appletAppOrProductDTO.getServeTypeCode())) { try {
if (LinkServeConstant.APPLINK.contains(appletAppOrProductDTO.getServeTypeCode())) {
if (appDto != null && !StringUtil.isEmpty(appDto.getTurnUrl())) { if (appDto != null && !StringUtil.isEmpty(appDto.getTurnUrl())) {
if (appDto.getTurnUrl().contains("5rs.me/") || appDto.getTurnUrl().contains("raysgo.com/") || appDto.getTurnUrl().contains("raysyun.com/") if (appDto.getTurnUrl().contains("5rs.me/") || appDto.getTurnUrl().contains("raysgo.com/") || appDto.getTurnUrl().contains("raysyun.com/")
|| null == wechatUserId) { || null == wechatUserId) {
...@@ -775,20 +780,26 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -775,20 +780,26 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
} else { } else {
Long sceneId = CommonUtils.getSceneId(appletAppOrProductDTO.getResultUrl()); Long sceneId = CommonUtils.getSceneId(appletAppOrProductDTO.getResultUrl());
if (null != sceneId) { if (null != sceneId) {
// 判断版权保护
Map<String, Boolean> bookAuthMap = bookAuthServeBiz.listIsOpen4ServeIdsAndQrcode(sceneId, Lists.newArrayList(appDto.getAppId()));
if (CollUtil.isEmpty(bookAuthMap) || null == bookAuthMap.get(MessageFromTypeEnum.APP.value + appDto.getAppId()) || false == bookAuthMap.get(MessageFromTypeEnum.APP.value + appDto.getAppId())) {
//外链跳转到指定中间页 //外链跳转到指定中间页
String jumpUrl = BookProps.getProductDomain() + "transfer?offId" + accountSettingDto.getAccountSettingId() + "&appId=" + appDto.getAppId() + "&url=" + String jumpUrl = BookProps.getProductDomain() + "transfer?offId" + accountSettingDto.getAccountSettingId() + "&appId=" + appDto.getAppId() + "&url=" +
URLEncoder.encode(appDto.getTurnUrl()) + "&sceneId=" + sceneId + "&wechatUserId=" + wechatUserId; URLEncoder.encode(appDto.getTurnUrl()) + "&sceneId=" + sceneId + "&wechatUserId=" + wechatUserId;
appletAppOrProductDTO.setResultUrl(jumpUrl); appletAppOrProductDTO.setResultUrl(jumpUrl);
} }
}
} }
} }
} }
} catch (Exception e) {
LOGGER.error("填充外链失败:{}",e.getMessage());
}
appletRecordDTO.setAppletAppOrProductDTO(appletAppOrProductDTO); appletRecordDTO.setAppletAppOrProductDTO(appletAppOrProductDTO);
} }
private void fillProduct4Record(Map<Long, ProductDto> productDtoMap, Future<Map<Long, ProductDto>> productDtoMapFuture, AppletRecordDTO appletRecordDTO) { private void fillProduct4Record(Map<Long, ProductDto> productDtoMap, Future<Map<Long, ProductDto>> productDtoMapFuture, AppletRecordDTO appletRecordDTO, Long wechatUserId) {
try { try {
productDtoMap = productDtoMapFuture.get(); productDtoMap = productDtoMapFuture.get();
} catch (InterruptedException | ExecutionException e) { } catch (InterruptedException | ExecutionException e) {
...@@ -798,7 +809,7 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -798,7 +809,7 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
appletRecordDTO.setSourceDelete(YesOrNoNumEnum.YES.getValue()); appletRecordDTO.setSourceDelete(YesOrNoNumEnum.YES.getValue());
return; return;
} }
AccountSettingDto accountSettingDto; AccountSettingDto accountSettingDto = null;
ProductDto productDto = productDtoMap.get(appletRecordDTO.getFromId()); ProductDto productDto = productDtoMap.get(appletRecordDTO.getFromId());
AppletAppOrProductDTO appletAppOrProductDTO = new AppletAppOrProductDTO(); AppletAppOrProductDTO appletAppOrProductDTO = new AppletAppOrProductDTO();
if (productDto == null || YesOrNoNumEnum.YES.getValue().equals(productDto.getIsDelete())) { if (productDto == null || YesOrNoNumEnum.YES.getValue().equals(productDto.getIsDelete())) {
...@@ -843,6 +854,35 @@ public class AppletRecordBizImpl implements AppletRecordBiz { ...@@ -843,6 +854,35 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
} }
appletAppOrProductDTO.setServeType(AppAndProductTypeEnum.PRODUCT.value); appletAppOrProductDTO.setServeType(AppAndProductTypeEnum.PRODUCT.value);
appletAppOrProductDTO.setServeId(appletRecordDTO.getFromId()); appletAppOrProductDTO.setServeId(appletRecordDTO.getFromId());
//优化跳转
try {
if (LinkServeConstant.PRODUCTLINK.contains(appletAppOrProductDTO.getServeTypeCode())) {
if (productDto != null && !StringUtil.isEmpty(productDto.getSkipUrl()) && null != accountSettingDto) {
Double adviserPrice = CollUtil.isNotEmpty(productDto.getSpecification()) ? productDto.getSpecification().get(0).getAdvisePrice(): 0D;
//原存在逻辑不处理
if (productDto.getSkipUrl().contains("5rs.me/") || productDto.getSkipUrl().contains("raysgo.com/") || productDto.getSkipUrl().contains("raysyun.com/")) {
appletAppOrProductDTO.setResultUrl(productDto.getSkipUrl());
} else if (null != wechatUserId && adviserPrice.equals(0D)){
Long sceneId = CommonUtils.getSceneId(appletAppOrProductDTO.getResultUrl());
if (null != sceneId) {
// 判断版权保护
Map<String, Boolean> bookAuthMap = bookAuthServeBiz.listIsOpen4ServeIdsAndQrcode(sceneId, Lists.newArrayList(productDto.getProductId()));
if (CollUtil.isEmpty(bookAuthMap) || null == bookAuthMap.get(MessageFromTypeEnum.PRODUCT.value + productDto.getProductId()) || false == bookAuthMap.get(MessageFromTypeEnum.PRODUCT.value + productDto.getProductId())) {
//外链跳转到指定中间页
String jumpUrl = BookProps.getProductDomain() + "transfer?offId" + accountSettingDto.getAccountSettingId() + "&url=" +
URLEncoder.encode(productDto.getSkipUrl()) + "&sceneId=" + sceneId + "&wechatUserId=" + wechatUserId + "&productId=" + productDto.getProductId() ;
appletAppOrProductDTO.setResultUrl(jumpUrl);
}
}
}
}
}
} catch (Exception e) {
LOGGER.error("填充外链失败:{}", e.getMessage());
}
appletRecordDTO.setAppletAppOrProductDTO(appletAppOrProductDTO); appletRecordDTO.setAppletAppOrProductDTO(appletAppOrProductDTO);
} }
......
...@@ -63,7 +63,7 @@ public class ThreadPoolUtils { ...@@ -63,7 +63,7 @@ public class ThreadPoolUtils {
new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("send-notify-pool-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy()); new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("send-notify-pool-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy());
public static final ExecutorService FILL_APPLET_RECORD = new ThreadPoolExecutor(8,8,0L, TimeUnit.SECONDS, public static final ExecutorService FILL_APPLET_RECORD = new ThreadPoolExecutor(16,64,0L, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("fill-applet-record-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy()); new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("fill-applet-record-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy());
......
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