Commit 031736b1 by 李传峰

Merge branch 'revert-928506cf' into 'master'

Revert "Merge branch 'revert-370501c6' into 'master'"

See merge request rays/pcloud-book!1647
parents 928506cf e6a7eb81
...@@ -9,9 +9,9 @@ package com.pcloud.book.group.enums; ...@@ -9,9 +9,9 @@ package com.pcloud.book.group.enums;
public enum PageLandingPageTypeEnum { public enum PageLandingPageTypeEnum {
/** /**
* RAYS码落地页类型1本书服务2企微 * RAYS码落地页类型1本书服务2企微3一码一资源
**/ **/
RESOURCE(1), WXWORK(2); RESOURCE(1), WXWORK(2),SINGLE_RESOURCE(3);
private Integer code; private Integer code;
public Integer getCode() { public Integer getCode() {
......
...@@ -267,6 +267,12 @@ ...@@ -267,6 +267,12 @@
<version>${pcloud-facade3.version}</version> <version>${pcloud-facade3.version}</version>
</dependency> </dependency>
<dependency>
<groupId>io.vavr</groupId>
<artifactId>vavr</artifactId>
<version>0.10.4</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -18,6 +18,7 @@ import com.pcloud.book.group.entity.ResourcePageTool; ...@@ -18,6 +18,7 @@ import com.pcloud.book.group.entity.ResourcePageTool;
import com.pcloud.book.group.entity.ResourceRecomManage; import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.vo.RecommendServeVO; import com.pcloud.book.group.vo.RecommendServeVO;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO; import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageFolderItemVO;
import com.pcloud.book.group.vo.ResourcePageItemResourceVO; import com.pcloud.book.group.vo.ResourcePageItemResourceVO;
import com.pcloud.book.group.vo.ResourcePageItemVO; import com.pcloud.book.group.vo.ResourcePageItemVO;
import com.pcloud.book.group.vo.ResourcePageOneServe; import com.pcloud.book.group.vo.ResourcePageOneServe;
...@@ -607,4 +608,6 @@ public interface ResourcePageBiz { ...@@ -607,4 +608,6 @@ public interface ResourcePageBiz {
* @param wechatUserId * @param wechatUserId
*/ */
void deleteDouluoCache(Long sceneId, List<Long> mapSceneIds, Long wechatUserId); void deleteDouluoCache(Long sceneId, List<Long> mapSceneIds, Long wechatUserId);
List<ResourcePageFolderItemVO> getFolderItemList(Long wechatUserId, Long folderId);
} }
...@@ -4,6 +4,7 @@ import com.pcloud.book.group.entity.ResourcePageBookstore; ...@@ -4,6 +4,7 @@ import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.enums.ResourcePageFixtureTypeEnum; import com.pcloud.book.group.enums.ResourcePageFixtureTypeEnum;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO; import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import java.util.List; import java.util.List;
/** /**
...@@ -28,7 +29,7 @@ public interface ResourcePageBookstoreBiz { ...@@ -28,7 +29,7 @@ public interface ResourcePageBookstoreBiz {
* 新增数据 * 新增数据
*/ */
Long insert(ResourcePageBookstore resourcePageBookstore); Long insert(ResourcePageBookstore resourcePageBookstore);
/** /**
* 新增数据 * 新增数据
*/ */
......
...@@ -47,6 +47,7 @@ import com.pcloud.book.consumer.combinedmarketing.MemberActivityConsr; ...@@ -47,6 +47,7 @@ import com.pcloud.book.consumer.combinedmarketing.MemberActivityConsr;
import com.pcloud.book.consumer.content.ResourceConsr; import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.consumer.erp.ErpConsr; import com.pcloud.book.consumer.erp.ErpConsr;
import com.pcloud.book.consumer.function.FunctionConsr; import com.pcloud.book.consumer.function.FunctionConsr;
import com.pcloud.book.consumer.promotion.PromotionConsr;
import com.pcloud.book.consumer.raystask.AdviserTaskConsr; import com.pcloud.book.consumer.raystask.AdviserTaskConsr;
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;
...@@ -103,7 +104,10 @@ import com.pcloud.book.group.entity.ResourcePageBookstore; ...@@ -103,7 +104,10 @@ import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.entity.ResourcePageCollect; import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourcePageColumn; import com.pcloud.book.group.entity.ResourcePageColumn;
import com.pcloud.book.group.entity.ResourcePageCourse; import com.pcloud.book.group.entity.ResourcePageCourse;
import com.pcloud.book.group.entity.ResourcePageFolder;
import com.pcloud.book.group.entity.ResourcePageFolderItem;
import com.pcloud.book.group.entity.ResourcePageItem; import com.pcloud.book.group.entity.ResourcePageItem;
import com.pcloud.book.group.entity.ResourcePageMarketingActivity;
import com.pcloud.book.group.entity.ResourcePageModel; import com.pcloud.book.group.entity.ResourcePageModel;
import com.pcloud.book.group.entity.ResourcePageNavigation; import com.pcloud.book.group.entity.ResourcePageNavigation;
import com.pcloud.book.group.entity.ResourcePageOuterLink; import com.pcloud.book.group.entity.ResourcePageOuterLink;
...@@ -112,18 +116,26 @@ import com.pcloud.book.group.entity.ResourcePageShare; ...@@ -112,18 +116,26 @@ import com.pcloud.book.group.entity.ResourcePageShare;
import com.pcloud.book.group.entity.ResourcePageTool; import com.pcloud.book.group.entity.ResourcePageTool;
import com.pcloud.book.group.entity.ResourcePageWxwork; import com.pcloud.book.group.entity.ResourcePageWxwork;
import com.pcloud.book.group.entity.ResourceRecomManage; import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.enums.IMaskFlag;
import com.pcloud.book.group.enums.JoinGroupTypeEnum; import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.group.enums.PageLandingPageTypeEnum; import com.pcloud.book.group.enums.PageLandingPageTypeEnum;
import com.pcloud.book.group.enums.QrcodeJumpType; import com.pcloud.book.group.enums.QrcodeJumpType;
import com.pcloud.book.group.enums.ResourcePageFixtureTypeEnum; import com.pcloud.book.group.enums.ResourcePageFixtureTypeEnum;
import com.pcloud.book.group.enums.ResourcePageSwitchConfigEnum;
import com.pcloud.book.group.mapper.ResourcePageFolderItemMapper;
import com.pcloud.book.group.mapper.ResourcePageFolderMapper;
import com.pcloud.book.group.mapper.ResourcePageMarketingActivityMapper;
import com.pcloud.book.group.mapper.ResourcePageShareMapper; import com.pcloud.book.group.mapper.ResourcePageShareMapper;
import com.pcloud.book.group.tools.SendWeixinRequestTools; import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.CrmContactQrcodeVO; import com.pcloud.book.group.vo.CrmContactQrcodeVO;
import com.pcloud.book.group.vo.RecommendServeVO; import com.pcloud.book.group.vo.RecommendServeVO;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO; import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO; import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.book.group.vo.ResourcePageFolderItemVO;
import com.pcloud.book.group.vo.ResourcePageFolderVO;
import com.pcloud.book.group.vo.ResourcePageItemResourceVO; import com.pcloud.book.group.vo.ResourcePageItemResourceVO;
import com.pcloud.book.group.vo.ResourcePageItemVO; import com.pcloud.book.group.vo.ResourcePageItemVO;
import com.pcloud.book.group.vo.ResourcePageMarketingActivityVO;
import com.pcloud.book.group.vo.ResourcePageOneServe; import com.pcloud.book.group.vo.ResourcePageOneServe;
import com.pcloud.book.group.vo.ResourcePageShareParam; import com.pcloud.book.group.vo.ResourcePageShareParam;
import com.pcloud.book.group.vo.ResourcePageVO; import com.pcloud.book.group.vo.ResourcePageVO;
...@@ -171,6 +183,7 @@ import com.pcloud.contentcenter.resource.dto.ResourceDTO; ...@@ -171,6 +183,7 @@ import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.pcloud.facade.wxwork.contact.vo.WxContactWayVO; import com.pcloud.facade.wxwork.contact.vo.WxContactWayVO;
import com.pcloud.function.douluo.dto.AppTaskDTO; import com.pcloud.function.douluo.dto.AppTaskDTO;
import com.pcloud.message.common.enums.YesNoEnums; import com.pcloud.message.common.enums.YesNoEnums;
import com.pcloud.promotion.couponsnew.dto.CouponsNewDto;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum; import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO; import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO;
import com.pcloud.resourcecenter.product.dto.ProductDto; import com.pcloud.resourcecenter.product.dto.ProductDto;
...@@ -178,6 +191,7 @@ import com.pcloud.resourcecenter.product.dto.ProductLabelDto; ...@@ -178,6 +191,7 @@ import com.pcloud.resourcecenter.product.dto.ProductLabelDto;
import com.pcloud.resourcecenter.store.dto.SinglePageInfoDTO; import com.pcloud.resourcecenter.store.dto.SinglePageInfoDTO;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO; import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO;
import io.vavr.control.Try;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
...@@ -192,11 +206,13 @@ import org.springframework.stereotype.Component; ...@@ -192,11 +206,13 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
import java.io.File; import java.io.File;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
...@@ -207,11 +223,13 @@ import java.util.Map; ...@@ -207,11 +223,13 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.pcloud.book.group.constant.ResourcePageConstants.DL_BOOK_SERVES_CACHE; import static com.pcloud.book.group.constant.ResourcePageConstants.DL_BOOK_SERVES_CACHE;
...@@ -327,6 +345,14 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -327,6 +345,14 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
private ResourcePageOuterLinkBiz resourcePageOuterLinkBiz; private ResourcePageOuterLinkBiz resourcePageOuterLinkBiz;
@Autowired @Autowired
private MultiChannelContentBiz multiChannelContentBiz; private MultiChannelContentBiz multiChannelContentBiz;
@Autowired
private ResourcePageFolderMapper resourcePageFolderMapper;
@Autowired
private ResourcePageFolderItemMapper resourcePageFolderItemMapper;
@Autowired
private ResourcePageMarketingActivityMapper resourcePageMarketingActivityMapper;
@Autowired
private PromotionConsr promotionConsr;
@Value("${book.share.defaultTitle}") @Value("${book.share.defaultTitle}")
...@@ -402,9 +428,16 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -402,9 +428,16 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
updateResourcePageVO.setOpenRays(updateResourcePageVO.getOpenRays() == null ? 0 : updateResourcePageVO.getOpenRays()); updateResourcePageVO.setOpenRays(updateResourcePageVO.getOpenRays() == null ? 0 : updateResourcePageVO.getOpenRays());
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(sceneId); QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(sceneId);
int switchConfig = IMaskFlag.Helper.of()
.state(ResourcePageSwitchConfigEnum.SHOW_SELF, updateResourcePageVO.getShowSelf())
.state(ResourcePageSwitchConfigEnum.SHOW_COLLECT, updateResourcePageVO.getShowCollect())
.state(ResourcePageSwitchConfigEnum.SHOW_SHARE, updateResourcePageVO.getShowShare())
.state(ResourcePageSwitchConfigEnum.NEW_EDITOR, updateResourcePageVO.getNewEditor())
.getFlagVal();
if (null == resourcePage) { if (null == resourcePage) {
resourcePage = new ResourcePage(); resourcePage = new ResourcePage();
BeanUtils.copyProperties(updateResourcePageVO, resourcePage); BeanUtils.copyProperties(updateResourcePageVO, resourcePage);
resourcePage.setSwitchConfig(switchConfig);
resourcePage.setQrcodeUrl(null == qrcodeSceneDto?null:qrcodeSceneDto.getQrcodeUrl()); resourcePage.setQrcodeUrl(null == qrcodeSceneDto?null:qrcodeSceneDto.getQrcodeUrl());
//同步bookGroupId //同步bookGroupId
if (null == resourcePage.getBookGroupId()) { if (null == resourcePage.getBookGroupId()) {
...@@ -425,6 +458,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -425,6 +458,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePage.setBookCover(updateResourcePageVO.getBookCover()); resourcePage.setBookCover(updateResourcePageVO.getBookCover());
resourcePage.setBookId(null == qrcodeSceneDto?null:qrcodeSceneDto.getAdviserBookId()); resourcePage.setBookId(null == qrcodeSceneDto?null:qrcodeSceneDto.getAdviserBookId());
resourcePage.setChannelId(null == qrcodeSceneDto?null:qrcodeSceneDto.getChannelPartyId()); resourcePage.setChannelId(null == qrcodeSceneDto?null:qrcodeSceneDto.getChannelPartyId());
resourcePage.setSwitchConfig(switchConfig);
//同步bookGroupId //同步bookGroupId
if (null == resourcePage.getBookGroupId()) { if (null == resourcePage.getBookGroupId()) {
resourcePage.setBookGroupId(getBookGroupIdBySceneId(qrcodeSceneDto)); resourcePage.setBookGroupId(getBookGroupIdBySceneId(qrcodeSceneDto));
...@@ -523,18 +557,26 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -523,18 +557,26 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
updateResourcePageVO.setOpenRays(updateResourcePageVO.getOpenRays() == null ? 0 : updateResourcePageVO.getOpenRays()); updateResourcePageVO.setOpenRays(updateResourcePageVO.getOpenRays() == null ? 0 : updateResourcePageVO.getOpenRays());
BookGroupDTO dto = bookGroupDao.getDTOById(bookGroupId); BookGroupDTO dto = bookGroupDao.getDTOById(bookGroupId);
int switchConfig = IMaskFlag.Helper.of()
.state(ResourcePageSwitchConfigEnum.SHOW_SELF, updateResourcePageVO.getShowSelf())
.state(ResourcePageSwitchConfigEnum.SHOW_COLLECT, updateResourcePageVO.getShowCollect())
.state(ResourcePageSwitchConfigEnum.SHOW_SHARE, updateResourcePageVO.getShowShare())
.state(ResourcePageSwitchConfigEnum.NEW_EDITOR, updateResourcePageVO.getNewEditor())
.getFlagVal();
if (null == resourcePage) { if (null == resourcePage) {
resourcePage = new ResourcePage(); resourcePage = new ResourcePage();
BeanUtils.copyProperties(updateResourcePageVO, resourcePage); BeanUtils.copyProperties(updateResourcePageVO, resourcePage);
resourcePage.setQrcodeUrl(null == dto? null: dto.getGroupQrcodeUrl()); resourcePage.setQrcodeUrl(null == dto? null: dto.getGroupQrcodeUrl());
resourcePage.setBookId(null == dto?null:dto.getBookId()); resourcePage.setBookId(null == dto?null:dto.getBookId());
resourcePage.setChannelId(null == dto?null:dto.getChannelId()); resourcePage.setChannelId(null == dto?null:dto.getChannelId());
resourcePage.setSwitchConfig(switchConfig);
//校验能否开启小睿 //校验能否开启小睿
this.checkOpenRays(resourcePage.getBookId(), updateResourcePageVO.getOpenRays()); this.checkOpenRays(resourcePage.getBookId(), updateResourcePageVO.getOpenRays());
resourcePageDao.insert(resourcePage); resourcePageDao.insert(resourcePage);
//加到缓存中 //加到缓存中
addResourcePageToRedis(resourcePage); addResourcePageToRedis(resourcePage);
} else { } else {
resourcePage.setSwitchConfig(switchConfig);
resourcePage.setStyle(updateResourcePageVO.getStyle()); resourcePage.setStyle(updateResourcePageVO.getStyle());
resourcePage.setOpenRays(updateResourcePageVO.getOpenRays()); resourcePage.setOpenRays(updateResourcePageVO.getOpenRays());
resourcePage.setShowBook(updateResourcePageVO.getShowBook()); resourcePage.setShowBook(updateResourcePageVO.getShowBook());
...@@ -615,10 +657,18 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -615,10 +657,18 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePage.setBookId(null == qrcodeSceneDto?null:qrcodeSceneDto.getAdviserBookId()); resourcePage.setBookId(null == qrcodeSceneDto?null:qrcodeSceneDto.getAdviserBookId());
resourcePage.setChannelId(null == qrcodeSceneDto?null:qrcodeSceneDto.getChannelPartyId()); resourcePage.setChannelId(null == qrcodeSceneDto?null:qrcodeSceneDto.getChannelPartyId());
} }
resourcePage.setSwitchConfig(
IMaskFlag.Helper.of()
.defaultState(ResourcePageSwitchConfigEnum.SHOW_SELF)
.defaultState(ResourcePageSwitchConfigEnum.SHOW_COLLECT)
.defaultState(ResourcePageSwitchConfigEnum.SHOW_SHARE)
.defaultState(ResourcePageSwitchConfigEnum.NEW_EDITOR)
.getFlagVal()
);
resourcePageDao.insert(resourcePage); resourcePageDao.insert(resourcePage);
//加入缓存 //加入缓存
addResourcePageToRedis(resourcePage); addResourcePageToRedis(resourcePage);
if (PageLandingPageTypeEnum.RESOURCE.getCode().equals(landingPageType)) { if (PageLandingPageTypeEnum.RESOURCE.getCode().equals(landingPageType) || PageLandingPageTypeEnum.SINGLE_RESOURCE.getCode().equals(landingPageType)) {
//本书服务页添加默认导航 //本书服务页添加默认导航
this.addDefaultBookServeNavigation(resourcePage.getId()); this.addDefaultBookServeNavigation(resourcePage.getId());
} }
...@@ -640,6 +690,15 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -640,6 +690,15 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
createOfficialAccountUrl(resourcePageColumnId, updateResourceColumnVO); createOfficialAccountUrl(resourcePageColumnId, updateResourceColumnVO);
return; return;
} }
// 新版通用组件
if (ResourcePageConstants.ColumnTypeEnum.COMMON_COMPONENT.getCode().equals(updateResourceColumnVO.getColumnType())){
updateResourceColumnVO.getItemVOList().stream()
// save resource_page_folder and resource_page_folder_item, then return serve_id
.peek(x -> saveNewCommonComponent(x.getResourcePageFolder(), updateResourceColumnVO, resourcePageColumnId))
// fill serve_id
.forEach(x->x.setServeId(x.getResourcePageFolder().getId()));
}
// 过滤外链 // 过滤外链
List<ResourcePageOuterLink> addOuterLink = updateResourceColumnVO.getItemVOList().stream().filter(this::checkIsOutLink) List<ResourcePageOuterLink> addOuterLink = updateResourceColumnVO.getItemVOList().stream().filter(this::checkIsOutLink)
.map(ResourcePageItemVO::getResourcePageOuterLink).peek(this::checkOutLinkParam).collect(Collectors.toList()); .map(ResourcePageItemVO::getResourcePageOuterLink).peek(this::checkOutLinkParam).collect(Collectors.toList());
...@@ -695,13 +754,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -695,13 +754,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
if (!ListUtils.isEmpty(productIds4Shelve)){ if (!ListUtils.isEmpty(productIds4Shelve)){
//作品自动上架 //作品自动上架
List<Long> productIds = productIds4Shelve;
ThreadPoolUtils.RESOURCE_POOL.execute(()->{ ThreadPoolUtils.RESOURCE_POOL.execute(()->{
Long channelId = updateResourceColumnVO.getChannelId(); Long channelId = updateResourceColumnVO.getChannelId();
if (null == channelId) { if (null == channelId) {
channelId = getChannelIdFromUrl(updateResourceColumnVO.getItemVOList().get(0).getLinkUrl()); channelId = getChannelIdFromUrl(updateResourceColumnVO.getItemVOList().get(0).getLinkUrl());
} }
Map<Long, String> offShelvesMap = productConsr.productAutoOnShelves(channelId, productIds); Map<Long, String> offShelvesMap = productConsr.productAutoOnShelves(channelId, productIds4Shelve);
if (!MapUtils.isEmpty(offShelvesMap)) { if (!MapUtils.isEmpty(offShelvesMap)) {
//已下架的作品重新上架 //已下架的作品重新上架
List<Long> proIds = new ArrayList<>(offShelvesMap.keySet()); List<Long> proIds = new ArrayList<>(offShelvesMap.keySet());
...@@ -711,6 +769,107 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -711,6 +769,107 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
} }
private void saveNewCommonComponent(ResourcePageFolderVO resourcePageFolderVO, UpdateResourceColumnVO updateResourceColumnVO, Long resourcePageColumnId) {
if (CollUtil.isEmpty(resourcePageFolderVO.getFolderItemList())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "资源配置参数缺失!");
}
ResourcePageFolder resourcePageFolder = BeanUtil.copyProperties(resourcePageFolderVO, ResourcePageFolder.class);
resourcePageFolder.setResourcePageId(updateResourceColumnVO.getResourcePageId());
resourcePageFolder.setResourcePageColumnId(resourcePageColumnId);
resourcePageFolder.setCreateUser(updateResourceColumnVO.getCreateUser());
resourcePageFolderMapper.insert(resourcePageFolder);
resourcePageFolderVO.setId(resourcePageFolder.getId());
// 处理外链
List<ResourcePageOuterLink> addOuterLink = resourcePageFolderVO.getFolderItemList().stream()
.filter(this::checkIsOutLink)
.map(ResourcePageFolderItemVO::getResourcePageOuterLink).peek(this::checkOutLinkParam).collect(Collectors.toList());
if (CollUtil.isNotEmpty(addOuterLink)) {
addOuterLink.forEach(e -> e.setResourceColumnId(resourcePageColumnId));
resourcePageOuterLinkBiz.batchInsert(addOuterLink);
}
// 新增多渠道
List<MultiChannelContentDTO> multiChannelContentDTOS = resourcePageFolderVO.getFolderItemList().stream()
.filter(this::checkIsMultiChannel)
.map(ResourcePageFolderItemVO::getMultiChannelContent)
.peek(this::checkMultiChannelParam)
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(multiChannelContentDTOS)) {
multiChannelContentBiz.batchInsert(multiChannelContentDTOS);
}
//作品id
List<Long> productIds4Shelve = resourcePageFolderVO.getFolderItemList().stream().filter(s -> s.getServeType().equals(ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue()))
.map(ResourcePageFolderItemVO::getServeId).distinct().collect(Collectors.toList());
if (!ListUtils.isEmpty(resourcePageFolderVO.getFolderItemList())) {
List<ResourcePageFolderItemVO> itemVOList = resourcePageFolderVO.getFolderItemList();
List<ResourcePageFolderItem> itemList = new ArrayList<>();
for (ResourcePageFolderItemVO itemVO : itemVOList) {
ResourcePageFolderItem item = new ResourcePageFolderItem();
BeanUtils.copyProperties(itemVO, item);
item.setResourcePageId(updateResourceColumnVO.getResourcePageId());
item.setResourcePageColumnId(resourcePageColumnId);
item.setFolderId(resourcePageFolder.getId());
item.setCreateUser(updateResourceColumnVO.getCreateUser());
//根据展示数量设置是否展示
item.setIsShow(1);
if (updateResourceColumnVO.getShowMore() && itemList.indexOf(item) + 1 > updateResourceColumnVO.getShowCount()) {
item.setIsShow(0);
}
//编辑书刊链接
if (ResourcePageConstants.ServeTypeEnum.ADVISER_BOOK.getValue().equals(itemVO.getServeType())) {
BookLinkVO linkVO = new BookLinkVO();
linkVO.setBookId(itemVO.getServeId());
linkVO.setLinkFrom(itemVO.getLinkFrom());
linkVO.setLinkUrl(itemVO.getLinkUrl());
bookBiz.updateBookLink(linkVO, updateResourceColumnVO.getCreateUser());
}
//图片位
if (ResourcePageConstants.ColumnTypeEnum.PICTURE.getCode().equals(updateResourceColumnVO.getColumnType())) {
item.setLogoUrl(updateResourceColumnVO.getLogoUrl());
}
//外链
if (ResourcePageConstants.ColumnTypeEnum.OUTER_LINK.getCode().equals(updateResourceColumnVO.getColumnType())) {
item.setServeId(itemVO.getResourcePageOuterLink().getId());
}
//多渠道
if (ResourcePageConstants.ColumnTypeEnum.MULTI_CHANNEL.getCode().equals(updateResourceColumnVO.getColumnType())) {
item.setServeId(itemVO.getMultiChannelContent().getId());
}
itemList.add(item);
}
resourcePageFolderItemMapper.batchInsert(itemList);
}
if (!ListUtils.isEmpty(productIds4Shelve)) {
//作品自动上架
ThreadPoolUtils.RESOURCE_POOL.execute(() -> {
Long channelId = updateResourceColumnVO.getChannelId();
if (null == channelId) {
channelId = getChannelIdFromUrl(updateResourceColumnVO.getItemVOList().get(0).getLinkUrl());
}
Map<Long, String> offShelvesMap = productConsr.productAutoOnShelves(channelId, productIds4Shelve);
if (!MapUtils.isEmpty(offShelvesMap)) {
//已下架的作品重新上架
List<Long> proIds = new ArrayList<>(offShelvesMap.keySet());
productConsr.setOffShelvesProductOnShelves(channelId, proIds);
}
});
}
}
private boolean checkIsMultiChannel(ResourcePageFolderItemVO resourcePageFolderItemVO) {
return Objects.nonNull(resourcePageFolderItemVO) &&
Objects.equals(ServeTypeEnum.MULTI_CHANNEL.getValue(), resourcePageFolderItemVO.getServeType())
&& Objects.nonNull(resourcePageFolderItemVO.getMultiChannelContent());
}
private boolean checkIsOutLink(@NotNull ResourcePageFolderItemVO resourcePageFolderItemVO) {
return Objects.nonNull(resourcePageFolderItemVO) &&
Objects.equals(ServeTypeEnum.OUTER_LINK.getValue(), resourcePageFolderItemVO.getServeType())
&& Objects.nonNull(resourcePageFolderItemVO.getResourcePageOuterLink());
}
private void checkMultiChannelParam(MultiChannelContentDTO multiChannelContentDTO) { private void checkMultiChannelParam(MultiChannelContentDTO multiChannelContentDTO) {
if (Objects.isNull(multiChannelContentDTO.getChannelType())) { if (Objects.isNull(multiChannelContentDTO.getChannelType())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请选择多渠道渠道!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请选择多渠道渠道!");
...@@ -754,16 +913,19 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -754,16 +913,19 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
if (ListUtils.isEmpty(updateResourceColumnVO.getItemVOList())) { if (ListUtils.isEmpty(updateResourceColumnVO.getItemVOList())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, updateResourceColumnVO.getColumnName()+"缺少资源"); throw new BookBizException(BookBizException.PARAM_IS_NULL, updateResourceColumnVO.getColumnName()+"缺少资源");
} }
List<String> typeCodes = Arrays.asList(ResourcePageConstants.ServeTypeEnum.APP.getValue(),ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue()); List<String> typeCodes = Arrays.asList(ResourcePageConstants.ServeTypeEnum.APP.getValue(), ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue());
for (ResourcePageItemVO itemVO : updateResourceColumnVO.getItemVOList()) { for (ResourcePageItemVO itemVO : updateResourceColumnVO.getItemVOList()) {
if (ResourcePageConstants.ServeTypeEnum.ADVISER_BOOK.getValue().equals(itemVO.getServeType()) && if (ResourcePageConstants.ServeTypeEnum.ADVISER_BOOK.getValue().equals(itemVO.getServeType()) &&
(null == itemVO.getLinkFrom() || StringUtil.isEmpty(itemVO.getLinkUrl()))) { (null == itemVO.getLinkFrom() || StringUtil.isEmpty(itemVO.getLinkUrl()))) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少书刊链接来源"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少书刊链接来源");
} }
if (!(ResourcePageConstants.ServeTypeEnum.OFFICIAL_ACCOUNT.getValue().equals(itemVO.getServeType()) ||
ResourcePageConstants.ServeTypeEnum.OUTER_LINK.getValue().equals(itemVO.getServeType()) || if (!(StringUtils.equalsAny(itemVO.getServeType(),
ResourcePageConstants.ServeTypeEnum.MULTI_CHANNEL.getValue().equals(itemVO.getServeType())) ResourcePageConstants.ServeTypeEnum.OFFICIAL_ACCOUNT.getValue(),
&& (null == itemVO.getServeId() || StringUtil.isEmpty(itemVO.getServeType()))) { ResourcePageConstants.ServeTypeEnum.OUTER_LINK.getValue(),
ResourcePageConstants.ServeTypeEnum.OUTER_LINK.getValue(),
ResourcePageConstants.ServeTypeEnum.FOLDER.getValue()
)) && (null == itemVO.getServeId() || StringUtil.isEmpty(itemVO.getServeType()))) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少资源id或类型"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少资源id或类型");
} }
if (typeCodes.contains(itemVO.getServeType()) && StringUtil.isEmpty(itemVO.getLinkUrl())) { if (typeCodes.contains(itemVO.getServeType()) && StringUtil.isEmpty(itemVO.getLinkUrl())) {
...@@ -776,6 +938,40 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -776,6 +938,40 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
} }
} }
checkResourceColumn4NewComponent(updateResourceColumnVO, typeCodes);
}
private void checkResourceColumn4NewComponent(UpdateResourceColumnVO updateResourceColumnVO, List<String> typeCodes) {
// 新版通用组件参数校验
List<ResourcePageFolderItemVO> resourcePageFolderItems = Optional.ofNullable(updateResourceColumnVO.getItemVOList())
.map(x -> x.stream().filter(Objects::nonNull).map(ResourcePageItemVO::getResourcePageFolder).collect(Collectors.toList()))
.map(x -> x.stream().filter(Objects::nonNull).map(ResourcePageFolderVO::getFolderItemList).flatMap(Collection::stream).filter(Objects::nonNull).collect(Collectors.toList()))
.orElse(Collections.emptyList());
if (resourcePageFolderItems.isEmpty()) {
return;
}
for (ResourcePageItemVO itemVO : resourcePageFolderItems) {
if (ServeTypeEnum.ADVISER_BOOK.getValue().equals(itemVO.getServeType()) &&
(null == itemVO.getLinkFrom() || StringUtil.isEmpty(itemVO.getLinkUrl()))) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少书刊链接来源");
}
if (!(ServeTypeEnum.OFFICIAL_ACCOUNT.getValue().equals(itemVO.getServeType()) ||
ServeTypeEnum.OUTER_LINK.getValue().equals(itemVO.getServeType()) ||
ServeTypeEnum.FOLDER.getValue().equals(itemVO.getServeType()) ||
ServeTypeEnum.MULTI_CHANNEL.getValue().equals(itemVO.getServeType()))
&& (null == itemVO.getServeId() || StringUtil.isEmpty(itemVO.getServeType()))) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少资源id或类型");
}
if (typeCodes.contains(itemVO.getServeType()) && StringUtil.isEmpty(itemVO.getLinkUrl())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少资源链接");
}
if (ServeTypeEnum.OFFICIAL_ACCOUNT.getValue().equals(itemVO.getServeType())) {
if (null == itemVO.getQrcodeShowType()) {
//默认类型:平铺
itemVO.setQrcodeShowType(ResourcePageConstants.QrcodeShowTypeEnum.TILED.getCode());
}
}
}
} }
@ParamLog("新增/修改栏目") @ParamLog("新增/修改栏目")
...@@ -1004,6 +1200,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1004,6 +1200,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePageVO.setQrcodeUrl(dto.getGroupQrcodeUrl()); resourcePageVO.setQrcodeUrl(dto.getGroupQrcodeUrl());
resourcePageVO.setQrcodeLink(dto.getGroupQrcodeLink()); resourcePageVO.setQrcodeLink(dto.getGroupQrcodeLink());
} }
IMaskFlag.Helper helper = IMaskFlag.Helper.of(resourcePage.getSwitchConfig());
resourcePageVO.setShowSelf(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SELF));
resourcePageVO.setShowCollect(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_COLLECT));
resourcePageVO.setShowShare(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SHARE));
resourcePageVO.setNewEditor(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.NEW_EDITOR));
} else { } else {
ResourcePage resourcePage = resourcePageDao.getBySceneId(sceneId); ResourcePage resourcePage = resourcePageDao.getBySceneId(sceneId);
if (null == resourcePage) { if (null == resourcePage) {
...@@ -1021,6 +1222,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1021,6 +1222,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
//预览取原有二维码 //预览取原有二维码
resourcePageVO.setQrcodeUrl(qrcodeSceneDto.getQrcodeUrl()); resourcePageVO.setQrcodeUrl(qrcodeSceneDto.getQrcodeUrl());
resourcePageVO.setQrcodeLink(qrcodeSceneDto.getUrl()); resourcePageVO.setQrcodeLink(qrcodeSceneDto.getUrl());
IMaskFlag.Helper helper = IMaskFlag.Helper.of(resourcePage.getSwitchConfig());
resourcePageVO.setShowSelf(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SELF));
resourcePageVO.setShowCollect(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_COLLECT));
resourcePageVO.setShowShare(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SHARE));
resourcePageVO.setNewEditor(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.NEW_EDITOR));
} }
Map<Long, AdviserBaseInfoDto> agentMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(Arrays.asList(adviserId)); Map<Long, AdviserBaseInfoDto> agentMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(Arrays.asList(adviserId));
if (!MapUtils.isEmpty(agentMap)) { if (!MapUtils.isEmpty(agentMap)) {
...@@ -1034,9 +1240,38 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1034,9 +1240,38 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
this.fillNavigation(resourcePageVO, null); this.fillNavigation(resourcePageVO, null);
//加载图书标准服务 //加载图书标准服务
this.fillResourcePageModel(resourcePageVO, null); this.fillResourcePageModel(resourcePageVO, null);
// 加载营销活动
fillResourcePageMarketingActivity(resourcePageVO,null);
return resourcePageVO; return resourcePageVO;
} }
private void fillResourcePageMarketingActivity(ResourcePageVO resourcePageVO,Long wechatUserId) {
List<ResourcePageMarketingActivityVO> activities = resourcePageMarketingActivityMapper.listByResourcePageId(resourcePageVO.getId());
if (activities.isEmpty()) {
return;
}
if (StringUtils.equals(activities.get(0).getServeType(), ResourcePageFixtureTypeEnum.COUPONS.name())) {
fillCoupon(activities, wechatUserId);
}else if (StringUtils.equals(activities.get(0).getServeType(), ServeTypeEnum.APP.getValue())) {
fillAppProductServe(activities, wechatUserId);
}
resourcePageVO.setResourcePageMarketingActivityList(activities);
}
private void fillCoupon(List<ResourcePageMarketingActivityVO> resourcePageMarketingActivities, Long wechatUserId) {
List<Long> couponIds = resourcePageMarketingActivities.stream().map(ResourcePageMarketingActivityVO::getServeId).collect(Collectors.toList());
Map<Long, CouponsNewDto> couponsNewMap = promotionConsr.mapByCouponIds(couponIds, wechatUserId);
for (int i = resourcePageMarketingActivities.size() - 1; i >= 0; i--) {
ResourcePageMarketingActivityVO vo = resourcePageMarketingActivities.get(i);
CouponsNewDto couponsNewDto = couponsNewMap.get(vo.getServeId());
if (couponsNewDto.getState() == -1) {
resourcePageMarketingActivities.remove(vo);
}
vo.setCouponsNewDto(couponsNewDto);
}
}
@ParamLog("加载图书标准服务") @ParamLog("加载图书标准服务")
private void fillResourcePageModel(ResourcePageVO resourcePageVO, Long wechatUserId) { private void fillResourcePageModel(ResourcePageVO resourcePageVO, Long wechatUserId) {
resourcePageVO.setResourcePageModelList(new ArrayList<>()); resourcePageVO.setResourcePageModelList(new ArrayList<>());
...@@ -1100,7 +1335,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1100,7 +1335,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
Long resourcePageId = resourcePageVO.getId(); Long resourcePageId = resourcePageVO.getId();
//进本书服务页 查导航 //进本书服务页 查导航
if (PageLandingPageTypeEnum.RESOURCE.getCode().equals(resourcePageVO.getLandingPageType())) { if (PageLandingPageTypeEnum.RESOURCE.getCode().equals(resourcePageVO.getLandingPageType()) || PageLandingPageTypeEnum.SINGLE_RESOURCE.getCode().equals(resourcePageVO.getLandingPageType())) {
List<ResourcePageNavigation> navigations = resourcePageNavigationDao.getByPageId(resourcePageId); List<ResourcePageNavigation> navigations = resourcePageNavigationDao.getByPageId(resourcePageId);
if (ListUtils.isEmpty(navigations)) { if (ListUtils.isEmpty(navigations)) {
this.addDefaultBookServeNavigation(resourcePageId); this.addDefaultBookServeNavigation(resourcePageId);
...@@ -1185,15 +1420,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1185,15 +1420,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@Override @Override
public List<ResourceColumnAndServeVO> getColumnAndServeListByPageId(Long resourcePageId, Long wechatUserId, Long bookId, Long adviserId, Long channelId, Integer enableAdverting, Long navigationId) { public List<ResourceColumnAndServeVO> getColumnAndServeListByPageId(Long resourcePageId, Long wechatUserId, Long bookId, Long adviserId, Long channelId, Integer enableAdverting, Long navigationId) {
/* //上邮临时处理方案
ResourcePage byId = resourcePageDao.getById(resourcePageId);
if (null == byId) {
throw new BizException(BizException.PARAM_IS_NULL.getCode(), "找不到资源配置");
}
if (nftBookId.contains(byId.getBookId())) {
resourcePageId = pageId;
navigationId = naviId;
}*/
List<ResourceColumnAndServeVO> serveVOS = resourcePageColumnDao.getColumnListByPageId(resourcePageId, navigationId,null); List<ResourceColumnAndServeVO> serveVOS = resourcePageColumnDao.getColumnListByPageId(resourcePageId, navigationId,null);
if (CollUtil.isNotEmpty(serveVOS)) { if (CollUtil.isNotEmpty(serveVOS)) {
List<ResourcePageItemVO> itemVOList; List<ResourcePageItemVO> itemVOList;
...@@ -1209,12 +1435,18 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1209,12 +1435,18 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
itemVOList = new ArrayList<>(); itemVOList = new ArrayList<>();
//应用和作品提出来一起查 //应用和作品提出来一起查
List<ResourcePageItemVO> itemAppAndProductVOList = new ArrayList<>(); List<ResourcePageItemVO> itemAppAndProductVOList = new ArrayList<>();
// collect resource_page_folder
List<ResourcePageItemVO> folderResourcePageItemVOList = new ArrayList<>();
//过滤一些资源,重新排序 //过滤一些资源,重新排序
for (Map.Entry<String, List<ResourcePageItemVO>> entry : listMap.entrySet()) { for (Map.Entry<String, List<ResourcePageItemVO>> entry : listMap.entrySet()) {
if(ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(entry.getKey()) || ServeTypeEnum.PRODUCT.getValue().equals(entry.getKey())){ if(ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(entry.getKey()) || ServeTypeEnum.PRODUCT.getValue().equals(entry.getKey())){
itemAppAndProductVOList.addAll(entry.getValue()); itemAppAndProductVOList.addAll(entry.getValue());
continue; continue;
} }
if (ServeTypeEnum.FOLDER.getValue().equals(entry.getKey())){
folderResourcePageItemVOList.addAll(entry.getValue());
continue;
}
this.fillResourceByType(entry.getValue(), wechatUserId, entry.getKey()); this.fillResourceByType(entry.getValue(), wechatUserId, entry.getKey());
itemVOList.addAll(entry.getValue()); itemVOList.addAll(entry.getValue());
} }
...@@ -1222,6 +1454,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1222,6 +1454,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
fillAppProductServe(itemAppAndProductVOList, wechatUserId); fillAppProductServe(itemAppAndProductVOList, wechatUserId);
itemVOList.addAll(itemAppAndProductVOList); itemVOList.addAll(itemAppAndProductVOList);
} }
if (!folderResourcePageItemVOList.isEmpty()){
fillResourcePageFolder(folderResourcePageItemVOList, wechatUserId);
itemVOList.addAll(folderResourcePageItemVOList);
}
itemVOList.sort(Comparator.comparing(ResourcePageItemVO::getId)); itemVOList.sort(Comparator.comparing(ResourcePageItemVO::getId));
List<ResourceColumnAndServeVO> removeColumns = setPageColumnOther(serveVOS, itemVOList); List<ResourceColumnAndServeVO> removeColumns = setPageColumnOther(serveVOS, itemVOList);
...@@ -1239,6 +1475,231 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1239,6 +1475,231 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
return serveVOS; return serveVOS;
} }
private void fillResourcePageFolder(List<ResourcePageItemVO> folderResourcePageItemVOList, Long wechatUserId) {
Map<Long, ResourcePageItemVO> resourcePageItemVOMap = folderResourcePageItemVOList.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(ResourcePageItemVO::getServeId, Function.identity()));
if (CollUtil.isEmpty(resourcePageItemVOMap)) {
return;
}
Map<Long, ResourcePageFolderVO> resourcePageFolderVOMap = resourcePageFolderMapper.selectByPrimaryKeys(resourcePageItemVOMap.keySet()).stream()
.collect(Collectors.toMap(ResourcePageFolderVO::getId, Function.identity()));
if (CollUtil.isEmpty(resourcePageItemVOMap)) {
return;
}
for (ResourcePageItemVO resourcePageItemVO : folderResourcePageItemVOList) {
resourcePageItemVO.setResourcePageFolder(resourcePageFolderVOMap.get(resourcePageItemVO.getServeId()));
}
Optional<Map<Long, List<ResourcePageFolderItemVO>>> resourcePageFolderItemVOMapOpt = Optional.of(resourcePageFolderItemMapper.listByFolderIds(resourcePageFolderVOMap.keySet()))
.map(x -> x.stream().collect(Collectors.groupingBy(ResourcePageFolderItemVO::getFolderId)));
if (!resourcePageFolderItemVOMapOpt.isPresent()) {
return;
}
resourcePageFolderItemVOMapOpt.get().forEach((k, v) -> {
ResourcePageFolderVO resourcePageFolderVO = resourcePageFolderVOMap.get(k);
if (resourcePageFolderVO != null) {
resourcePageFolderVO.setFolderItemList(v);
}
});
// app/product和其他类型资源拆分填充
List<ResourcePageFolderItemVO> appProductItems = new ArrayList<>();
List<ResourcePageFolderItemVO> otherItems = new ArrayList<>();
resourcePageFolderItemVOMapOpt.get()
.values()
.stream()
.flatMap(Collection::stream)
.forEach(x-> splitFolderItemVOS(appProductItems, otherItems, x));
if (CollUtil.isNotEmpty(appProductItems)) {
appProductItems.get(0).setCreateUser(folderResourcePageItemVOList.get(0).getCreateUser());
fillAppProductServe(appProductItems, wechatUserId);
}
if (CollUtil.isNotEmpty(otherItems)) {
Map<String, List<ResourcePageFolderItemVO>> folderItemMap = otherItems.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(ResourcePageFolderItemVO::getServeType));
folderItemMap.forEach((k, v) -> fillResourceByType(v, wechatUserId, k));
}
}
private static void splitFolderItemVOS(List<ResourcePageFolderItemVO> appProductItems, List<ResourcePageFolderItemVO> otherItems, ResourcePageFolderItemVO x) {
if (StringUtils.equalsAny(x.getServeType(),ServeTypeEnum.APP.getValue(),ServeTypeEnum.PRODUCT.getValue())){
appProductItems.add(x);
}else {
otherItems.add(x);
}
}
private void fillAppProductResourcePageFolderItem(List<ResourcePageFolderItemVO> pageFolderItemVOS, Long wechatUserId, Long adviserId) {
List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>();
List<Long> courseProductIds = new ArrayList<>();
List<Long> nonCourseProductIds = new ArrayList<>();
List<Long> channelIds=new ArrayList<>();
for (ResourcePageFolderItemVO pageFolderItemVO : pageFolderItemVOS) {
Long serveId = pageFolderItemVO.getServeId();
Long channelId = getChannelIdFromUrl(pageFolderItemVO.getLinkUrl());
if(null!=channelId && !channelIds.contains(channelId)){
channelIds.add(channelId);
}
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(pageFolderItemVO.getServeType()) && !appIds.contains(serveId)) {
appIds.add(serveId);
continue;
}
if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(pageFolderItemVO.getServeType())) {
if (!productIds.contains(serveId)) {
productIds.add(serveId);
}
if (courseProductTypeCodes.contains(pageFolderItemVO.getTypeCode())) {
courseProductIds.add(serveId);
} else {
nonCourseProductIds.add(serveId);
}
}
}
// 提交应用作品信息查询任务
CompletableFuture<Map<Long, AppDto>> queryAppTask = CompletableFuture.supplyAsync(() -> appConsr.mapBaseWithPriceByIds(appIds));
CompletableFuture<Map<Long, ProductDto>> queryProductTask = CompletableFuture.supplyAsync(() -> productConsr.getProductBasesByIds4Book(productIds));
// 提交用户相关信息查询任务
CompletableFuture<Map<Long, Long>> queryAppOfficialTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? appConsr.getPayOfficialAccountsToolByAppIds(appIds) : Collections.emptyMap());
CompletableFuture<Map<Long, AccountSettingDto>> queryOfficialTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? channelConsr.listWechatAccountInfo(channelIds) : Collections.emptyMap());
CompletableFuture<Map<String, Boolean>> queryAppBuyTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? tradeConsr.mapAppProductBuyStateOpt(wechatUserId, appIds, nonCourseProductIds) : Collections.emptyMap());
CompletableFuture<Map<Long, Boolean>> queryProductBuyTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? tradeConsr.mapCourseProductBuyStateOpt(wechatUserId, courseProductIds) : Collections.emptyMap());
// 等待查询任务结果返回
Map<Long, AppDto> appDtoMap = Try.of(() -> queryAppTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
.onFailure(e -> log.error("调用应用中心获取应用信息错误:" + e.getMessage(), e)).getOrElse(Collections.emptyMap());
Map<Long, ProductDto> productDtoMap = Try.of(() -> queryProductTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
.onFailure(e -> log.error("调用资源中心获取商品信息错误:" + e.getMessage(), e)).getOrElse(Collections.emptyMap());
Map<Long, Long> appOfficialAccountToolMap = Try.of(() -> queryAppOfficialTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
.onFailure(e -> log.error("调用查应用关联的公众号工具的付费公众号失败:" + e.getMessage(), e)).getOrElse(Collections.emptyMap());
Map<Long, AccountSettingDto> channelAccountSettingDtoMap = Try.of(() -> queryOfficialTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
.onFailure(e -> log.error("调用资源中心获取商品信息错误:" + e.getMessage(), e)).getOrElse(Collections.emptyMap());
Map<String, Boolean> buyStateMap = Try.of(() -> queryAppBuyTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
.onFailure(e -> log.error("调用交易中心查询是否购买失败:" + e.getMessage(), e)).getOrElse(Collections.emptyMap());
Map<Long, Boolean> courseBuyStateMap = Try.of(() -> queryProductBuyTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
.onFailure(e -> log.error("调用交易中心查询课程是否购买错误失败:" + e.getMessage(), e)).getOrElse(Collections.emptyMap());
// 循环填充
Map<Long, Long> defaultChannelIdMap = new HashMap<>();
for (ResourcePageFolderItemVO itemVO : pageFolderItemVOS) {
Long serveId = itemVO.getServeId();
String serveType = itemVO.getServeType();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)
&& !MapUtils.isEmpty(appDtoMap) && appDtoMap.containsKey(serveId)) {
AppDto appDto = appDtoMap.get(itemVO.getServeId());
itemVO.setServeName(appDto.getTitle());
itemVO.setServePic(appDto.getSquareImg());
itemVO.setTypeCode(appDto.getTypeCode());
itemVO.setTypeName(appDto.getTypeName());
itemVO.setTransverseImg(appDto.getTransverseImg());
//这两个价格不统一,不确定取哪个字段
Double price = null == appDto.getPrice() ? 0d : appDto.getPrice();
if (price.equals(0d)) {
price = null == appDto.getRetailPrice() ? 0d : appDto.getRetailPrice().doubleValue();
}
itemVO.setPrice(price);
itemVO.setHasThirdLink(StringUtil.isNotEmpty(appDto.getTurnUrl()));
//标记应用共享状态
itemVO.setAppCreateUser(appDto.getCreatedUser());
itemVO.setShareState(appDto.getShareState());
} else if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)
&& !MapUtils.isEmpty(productDtoMap) && productDtoMap.containsKey(serveId)) {
ProductDto productDto = productDtoMap.get(itemVO.getServeId());
itemVO.setServeName(productDto.getProductName());
itemVO.setServePic(productDto.getCoverImg());
if (productDto.getProductTypeDto() != null) {
itemVO.setTypeCode(productDto.getProductTypeDto().getTypeCode());
itemVO.setTypeName(productDto.getProductTypeDto().getTypeName());
}
if (!ListUtils.isEmpty(productDto.getSpecification())) {
itemVO.setPrice(productDto.getSpecification().get(0).getAdvisePrice());
}
itemVO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1())?
getDefaultBigPic(itemVO.getTypeCode()): productDto.getPicture1());
itemVO.setHasThirdLink(StringUtil.isNotEmpty(productDto.getSkipUrl()));
} else {
continue;
}
if (null == itemVO.getPrice()) {
itemVO.setPrice(0d);
}
Long channelId = getChannelIdFromUrl(itemVO.getLinkUrl());
if (null == channelId) {
log.info(itemVO.getServeName() + "无运营平台, serveId=" + itemVO.getServeId());
if(defaultChannelIdMap.containsKey(adviserId)){
channelId = defaultChannelIdMap.get(adviserId);
if(null!=channelId){
channelId = adviserConsr.getDefaultChannel(adviserId);
}
}else {
channelId = adviserConsr.getDefaultChannel(adviserId);
if (null != channelId) {
defaultChannelIdMap.put(adviserId, channelId);
}
}
}
itemVO.setChannelId(channelId);
setResourceFolderItemLink4Wechat(itemVO, channelAccountSettingDtoMap, appOfficialAccountToolMap, Collections.emptyMap());
if (null != wechatUserId) {
itemVO.setBuyState(false);
if (!MapUtils.isEmpty(buyStateMap)) {
if(ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)){
String key="PRODUCT"+serveId;
if(buyStateMap.containsKey(key)){
itemVO.setBuyState(buyStateMap.get(key));
}
}else if(ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)){
String key="APP"+serveId;
if(buyStateMap.containsKey(key)){
itemVO.setBuyState(buyStateMap.get(key));
}
}
}
if (!MapUtils.isEmpty(courseBuyStateMap) && courseBuyStateMap.containsKey(serveId)
&& ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(itemVO.getServeType())) {
itemVO.setBuyState(courseBuyStateMap.get(serveId));
}
}
}
}
private void setResourceFolderItemLink4Wechat(ResourcePageFolderItemVO itemVO, Map<Long, AccountSettingDto> channelAccountSettingDtoMap,
Map<Long, Long> appOfficialAccountToolMap, Map<Long, AccountSetting> accountSettingMap) {
if (itemVO.getLinkUrl().startsWith("http")) {
itemVO.setResultUrl(itemVO.getLinkUrl());
return;
}
AccountSettingDto accountSettingDto = new AccountSettingDto();
//有应用配了付费公众号工具,取公众号工具的公众号域名, 没有就根据渠道id取
if (!MapUtils.isEmpty(appOfficialAccountToolMap) && appOfficialAccountToolMap.containsKey(itemVO.getServeId())) {
Long accountSettingId = appOfficialAccountToolMap.get(itemVO.getServeId());
AccountSetting accountSetting = accountSettingMap.get(accountSettingId);
if (null == accountSetting) {
accountSetting = qrcodeSceneConsr.getAppInfo(accountSettingId);
accountSettingMap.put(accountSettingId, accountSetting);
}
BeanUtils.copyProperties(accountSetting, accountSettingDto);
itemVO.setHasOfficialAccountsTool(true);
} else {
Long channelId = itemVO.getChannelId();
accountSettingDto = channelAccountSettingDtoMap.get(channelId);
if (accountSettingDto == null) {
accountSettingDto = qrcodeSceneConsr.getWechatInfo(channelId);
channelAccountSettingDtoMap.put(channelId, accountSettingDto);
}
itemVO.setHasOfficialAccountsTool(false);
}
if (null == accountSettingDto) {
throw new BookBizException(BookBizException.ERROR, itemVO.getServeName() + "未设置公众号");
}
String resultLinkUrl = SendWeixinRequestTools.splitUrl(accountSettingDto, itemVO.getLinkUrl());
itemVO.setResultUrl(resultLinkUrl);
}
/** /**
* 二维码类型 * 二维码类型
*/ */
...@@ -1315,7 +1776,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1315,7 +1776,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("按类型填充资源") @ParamLog("按类型填充资源")
private void fillResourceByType(List<ResourcePageItemVO> itemVOS, Long wechatUserId, String serveType) { private void fillResourceByType(List<? extends ResourcePageItemVO> itemVOS, Long wechatUserId, String serveType) {
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
} }
...@@ -1345,7 +1806,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1345,7 +1806,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充文件素材") @ParamLog("填充文件素材")
private void fillFileResource(List<ResourcePageItemVO> itemVOS, Long wechatUserId) { private void fillFileResource(List<? extends ResourcePageItemVO> itemVOS, Long wechatUserId) {
log.info("填充文件素材"); log.info("填充文件素材");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1408,7 +1869,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1408,7 +1869,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充运营商城") @ParamLog("填充运营商城")
private void fillChannelShop(List<ResourcePageItemVO> itemVOS) { private void fillChannelShop(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充运营商城"); log.info("填充运营商城");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1431,7 +1892,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1431,7 +1892,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充平台会员活动") @ParamLog("填充平台会员活动")
private void fillMemberActivity(List<ResourcePageItemVO> itemVOS) { private void fillMemberActivity(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充平台会员活动"); log.info("填充平台会员活动");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1455,7 +1916,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1455,7 +1916,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充企业微信群") @ParamLog("填充企业微信群")
private void fillWxworkGroup(List<ResourcePageItemVO> itemVOS) { private void fillWxworkGroup(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充企业微信群"); log.info("填充企业微信群");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1496,7 +1957,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1496,7 +1957,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充第三方资源") @ParamLog("填充第三方资源")
private void fillThirdResource(List<ResourcePageItemVO> itemVOS) { private void fillThirdResource(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充第三方资源"); log.info("填充第三方资源");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1516,7 +1977,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1516,7 +1977,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充编辑书刊链接") @ParamLog("填充编辑书刊链接")
private void fillAdviserBook(List<ResourcePageItemVO> itemVOS) { private void fillAdviserBook(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充编辑书刊链接"); log.info("填充编辑书刊链接");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1542,7 +2003,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1542,7 +2003,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充公众号二维码") @ParamLog("填充公众号二维码")
private void fillOfficialAccount(List<ResourcePageItemVO> itemVOS, Long wechatUserId) { private void fillOfficialAccount(List<? extends ResourcePageItemVO> itemVOS, Long wechatUserId) {
log.info("填充公众号二维码"); log.info("填充公众号二维码");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1581,112 +2042,64 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1581,112 +2042,64 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
} }
@ParamLog("填充应用作品") private final static List<String> courseProductTypeCodes = Arrays.asList("VIDEO_SCHEDULE", "VIDEO_COURSE", "AUDIO_COURSE", "AUDIO_SCHEDULE", "LIVE");
private void fillAppProductServe(List<ResourcePageItemVO> itemVOS, Long wechatUserId) {
private void fillAppProductServe(List<? extends ResourcePageItemVO> itemVOS, Long wechatUserId) {
log.info("填充应用作品"); log.info("填充应用作品");
if (ListUtils.isEmpty(itemVOS)) {
return;
}
Long adviserId = itemVOS.get(0).getCreateUser(); Long adviserId = itemVOS.get(0).getCreateUser();
List<Long> appIds = new ArrayList<>(); List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
List<Long> courseProductIds = new ArrayList<>(); List<Long> courseProductIds = new ArrayList<>();
List<Long> nonCourseProductIds = new ArrayList<>(); List<Long> nonCourseProductIds = new ArrayList<>();
List<String> courseProductTypeCodes = Arrays.asList("VIDEO_SCHEDULE", "VIDEO_COURSE", "AUDIO_COURSE", "AUDIO_SCHEDULE", "LIVE"); List<Long> channelIds = new ArrayList<>();
List<Long> channelIds=new ArrayList<>(); for (ResourcePageItemVO pageFolderItemVO : itemVOS) {
for (ResourcePageItemVO vo : itemVOS) { Long serveId = pageFolderItemVO.getServeId();
Long serveId = vo.getServeId(); Long channelId = getChannelIdFromUrl(pageFolderItemVO.getLinkUrl());
Long channelId = getChannelIdFromUrl(vo.getLinkUrl()); if (null != channelId && !channelIds.contains(channelId)) {
if(null!=channelId && !channelIds.contains(channelId)){
channelIds.add(channelId); channelIds.add(channelId);
} }
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(vo.getServeType()) && !appIds.contains(serveId)) { if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(pageFolderItemVO.getServeType()) && !appIds.contains(serveId)) {
appIds.add(serveId); appIds.add(serveId);
continue; continue;
} }
if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(vo.getServeType())) { if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(pageFolderItemVO.getServeType())) {
if (!productIds.contains(serveId)) { if (!productIds.contains(serveId)) {
productIds.add(serveId); productIds.add(serveId);
} }
if (courseProductTypeCodes.contains(vo.getTypeCode())) { if (courseProductTypeCodes.contains(pageFolderItemVO.getTypeCode())) {
courseProductIds.add(serveId); courseProductIds.add(serveId);
} else { } else {
nonCourseProductIds.add(serveId); nonCourseProductIds.add(serveId);
} }
} }
} }
long t1 = System.currentTimeMillis();
Map<Long, AppDto> appDtoMap= new HashMap<>(); // 提交应用作品信息查询任务
Map<Long, ProductDto> productDtoMap = new HashMap<>(); CompletableFuture<Map<Long, AppDto>> queryAppTask = CompletableFuture.supplyAsync(() -> appConsr.mapBaseWithPriceByIds(appIds));
// Map<Long, MapBaseStatusDTO> appPriceMap = new HashMap<>(); CompletableFuture<Map<Long, ProductDto>> queryProductTask = CompletableFuture.supplyAsync(() -> productConsr.getProductBasesByIds4Book(productIds));
Future<Map<Long, AppDto>>appMapSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{ // 提交用户相关信息查询任务
return appConsr.mapBaseWithPriceByIds(appIds); CompletableFuture<Map<Long, Long>> queryAppOfficialTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? appConsr.getPayOfficialAccountsToolByAppIds(appIds) : new HashMap<>());
}); CompletableFuture<Map<Long, AccountSettingDto>> queryOfficialTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? channelConsr.listWechatAccountInfo(channelIds) : new HashMap<>());
Future<Map<Long, ProductDto>>productMapSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{ CompletableFuture<Map<String, Boolean>> queryAppBuyTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? tradeConsr.mapAppProductBuyStateOpt(wechatUserId, appIds, nonCourseProductIds) : new HashMap<>());
return productConsr.getProductBasesByIds4Book(productIds); CompletableFuture<Map<Long, Boolean>> queryProductBuyTask = CompletableFuture.supplyAsync(() -> wechatUserId != null ? tradeConsr.mapCourseProductBuyStateOpt(wechatUserId, courseProductIds) : new HashMap<>());
});
/* Future<Map<Long, MapBaseStatusDTO>> appPriceMapSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{ // 等待查询任务结果返回
return appConsr.mapBaseStatusById(appIds); Map<Long, AppDto> appDtoMap = Try.of(() -> queryAppTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
});*/ .onFailure(e -> log.error("调用应用中心获取应用信息错误:" + e.getMessage(), e)).getOrElse(new HashMap<>());
Map<Long, AccountSettingDto> channelAccountSettingDtoMap = new HashMap<>(); Map<Long, ProductDto> productDtoMap = Try.of(() -> queryProductTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
Map<Long, AccountSetting> accountSettingMap = new HashMap<>(); .onFailure(e -> log.error("调用资源中心获取商品信息错误:" + e.getMessage(), e)).getOrElse(new HashMap<>());
//应用配置公众号工具 Map<Long, Long> appOfficialAccountToolMap = Try.of(() -> queryAppOfficialTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
Map<Long, Long> appOfficialAccountToolMap = new HashMap<>(); .onFailure(e -> log.error("调用查应用关联的公众号工具的付费公众号失败:" + e.getMessage(), e)).getOrElse(new HashMap<>());
//是否购买 Map<Long, AccountSettingDto> channelAccountSettingDtoMap = Try.of(() -> queryOfficialTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
Map<String, Boolean> buyStateMap = new HashMap<>(); .onFailure(e -> log.error("调用资源中心获取商品信息错误:" + e.getMessage(), e)).getOrElse(new HashMap<>());
//课程是否购买(单节/整套) Map<String, Boolean> buyStateMap = Try.of(() -> queryAppBuyTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
Map<Long, Boolean> courseBuyStateMap = new HashMap<>(); .onFailure(e -> log.error("调用交易中心查询是否购买失败:" + e.getMessage(), e)).getOrElse(new HashMap<>());
if (null != wechatUserId) { Map<Long, Boolean> courseBuyStateMap = Try.of(() -> queryProductBuyTask.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS))
// appOfficialAccountToolMap = appConsr.getPayOfficialAccountsToolByAppIds(appIds); .onFailure(e -> log.error("调用交易中心查询课程是否购买错误失败:" + e.getMessage(), e)).getOrElse(new HashMap<>());
Future<Map<Long, Long>> appOfficialAccountToolSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{
return appConsr.getPayOfficialAccountsToolByAppIds(appIds);
}); // 循环填充
Future<Map<Long, AccountSettingDto>> channelAccountSettingDtoSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{ Map<Long, Long> defaultChannelIdMap = new HashMap<>();
return channelConsr.listWechatAccountInfo(channelIds);
});
Future<Map<String, Boolean>> buyStateSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{
return tradeConsr.mapAppProductBuyStateOpt(wechatUserId, appIds, nonCourseProductIds);
});
Future<Map<Long, Boolean>> courseBuyStateSubmit = ThreadPoolUtils.RESOURCE_POOL.submit(() ->{
return tradeConsr.mapCourseProductBuyStateOpt(wechatUserId, courseProductIds);
});
try {
appOfficialAccountToolMap = appOfficialAccountToolSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.error("调用查应用关联的公众号工具的付费公众号失败:"+e.getMessage(), e);
}
try {
channelAccountSettingDtoMap = channelAccountSettingDtoSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.error("调用批量获取公众号信息失败:"+e.getMessage(), e);
}
try {
buyStateMap = buyStateSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.error("调用交易中心查询是否购买失败:"+e.getMessage(), e);
}
try {
courseBuyStateMap = courseBuyStateSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.error("调用交易中心查询课程是否购买错误失败:"+e.getMessage(), e);
}
}
try {
appDtoMap = appMapSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.error("调用应用中心获取应用信息错误:"+e.getMessage(), e);
}
try {
productDtoMap = productMapSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.warn("调用资源中心获取商品信息错误:"+e.getMessage(), e);
}
/* try {
appPriceMap = appPriceMapSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
log.error("调用应用中心获取应用价格信息错误:"+e.getMessage(), e);
}*/
Map<Long,Long> defaultChannelIdMap=new HashMap<>();
for (ResourcePageItemVO itemVO : itemVOS) { for (ResourcePageItemVO itemVO : itemVOS) {
Long serveId = itemVO.getServeId(); Long serveId = itemVO.getServeId();
String serveType = itemVO.getServeType(); String serveType = itemVO.getServeType();
...@@ -1699,16 +2112,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1699,16 +2112,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
itemVO.setTypeName(appDto.getTypeName()); itemVO.setTypeName(appDto.getTypeName());
itemVO.setTransverseImg(appDto.getTransverseImg()); itemVO.setTransverseImg(appDto.getTransverseImg());
//这两个价格不统一,不确定取哪个字段 //这两个价格不统一,不确定取哪个字段
Double price = null == appDto.getPrice() ? Double.valueOf(0d) : appDto.getPrice().doubleValue(); Double price = null == appDto.getPrice() ? 0d : appDto.getPrice();
if (price.equals(0d)) { if (price.equals(0d)) {
price = null == appDto.getRetailPrice() ? Double.valueOf(0d) : appDto.getRetailPrice().doubleValue(); price = null == appDto.getRetailPrice() ? 0d : appDto.getRetailPrice().doubleValue();
} }
itemVO.setPrice(price); itemVO.setPrice(price);
itemVO.setHasThirdLink(!StringUtil.isEmpty(appDto.getTurnUrl())?true:false); itemVO.setHasThirdLink(StringUtil.isNotEmpty(appDto.getTurnUrl()));
/* if (!MapUtils.isEmpty(appPriceMap) && appPriceMap.containsKey(serveId)) {
BigDecimal price = appPriceMap.get(serveId).getRetailPrice();
itemVO.setPrice(null == price?Double.valueOf(0d):price.doubleValue());
}*/
//标记应用共享状态 //标记应用共享状态
itemVO.setAppCreateUser(appDto.getCreatedUser()); itemVO.setAppCreateUser(appDto.getCreatedUser());
itemVO.setShareState(appDto.getShareState()); itemVO.setShareState(appDto.getShareState());
...@@ -1724,24 +2133,24 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1724,24 +2133,24 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
if (!ListUtils.isEmpty(productDto.getSpecification())) { if (!ListUtils.isEmpty(productDto.getSpecification())) {
itemVO.setPrice(productDto.getSpecification().get(0).getAdvisePrice()); itemVO.setPrice(productDto.getSpecification().get(0).getAdvisePrice());
} }
itemVO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1())? itemVO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1()) ?
getDefaultBigPic(itemVO.getTypeCode()): productDto.getPicture1()); getDefaultBigPic(itemVO.getTypeCode()) : productDto.getPicture1());
itemVO.setHasThirdLink(!StringUtil.isEmpty(productDto.getSkipUrl())?true:false); itemVO.setHasThirdLink(StringUtil.isNotEmpty(productDto.getSkipUrl()));
} else { } else {
continue; continue;
} }
if (null == itemVO.getPrice()) { if (null == itemVO.getPrice()) {
itemVO.setPrice(Double.valueOf(0d)); itemVO.setPrice(0d);
} }
Long channelId = getChannelIdFromUrl(itemVO.getLinkUrl()); Long channelId = getChannelIdFromUrl(itemVO.getLinkUrl());
if (null == channelId) { if (null == channelId) {
log.info(itemVO.getServeName() + "无运营平台, serveId=" + itemVO.getServeId()); log.info(itemVO.getServeName() + "无运营平台, serveId=" + itemVO.getServeId());
if(defaultChannelIdMap.containsKey(adviserId)){ if (defaultChannelIdMap.containsKey(adviserId)) {
channelId = defaultChannelIdMap.get(adviserId); channelId = defaultChannelIdMap.get(adviserId);
if(null!=channelId){ if (null != channelId) {
channelId = adviserConsr.getDefaultChannel(adviserId); channelId = adviserConsr.getDefaultChannel(adviserId);
} }
}else { } else {
channelId = adviserConsr.getDefaultChannel(adviserId); channelId = adviserConsr.getDefaultChannel(adviserId);
if (null != channelId) { if (null != channelId) {
defaultChannelIdMap.put(adviserId, channelId); defaultChannelIdMap.put(adviserId, channelId);
...@@ -1749,18 +2158,18 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1749,18 +2158,18 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
} }
itemVO.setChannelId(channelId); itemVO.setChannelId(channelId);
setResourceLink4Wechat(itemVO, channelAccountSettingDtoMap, appOfficialAccountToolMap, accountSettingMap); setResourceLink4Wechat(itemVO, channelAccountSettingDtoMap, appOfficialAccountToolMap, new HashMap<>());
if (null != wechatUserId) { if (null != wechatUserId) {
itemVO.setBuyState(false); itemVO.setBuyState(false);
if (!MapUtils.isEmpty(buyStateMap)) { if (!MapUtils.isEmpty(buyStateMap)) {
if(ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)){ if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)) {
String key="PRODUCT"+serveId; String key = "PRODUCT" + serveId;
if(buyStateMap.containsKey(key)){ if (buyStateMap.containsKey(key)) {
itemVO.setBuyState(buyStateMap.get(key)); itemVO.setBuyState(buyStateMap.get(key));
} }
}else if(ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)){ } else if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)) {
String key="APP"+serveId; String key = "APP" + serveId;
if(buyStateMap.containsKey(key)){ if (buyStateMap.containsKey(key)) {
itemVO.setBuyState(buyStateMap.get(key)); itemVO.setBuyState(buyStateMap.get(key));
} }
} }
...@@ -1827,7 +2236,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1827,7 +2236,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充社群") @ParamLog("填充社群")
private void fillGroupServe(List<ResourcePageItemVO> itemVOS) { private void fillGroupServe(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充社群"); log.info("填充社群");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1854,7 +2263,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1854,7 +2263,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
@ParamLog("填充平台书单") @ParamLog("填充平台书单")
private void fillBooklistServe(List<ResourcePageItemVO> itemVOS) { private void fillBooklistServe(List<? extends ResourcePageItemVO> itemVOS) {
log.info("填充平台书单"); log.info("填充平台书单");
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return; return;
...@@ -1939,6 +2348,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1939,6 +2348,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
Map<String, List<ResourcePageItemVO>> listMap = pageBeanNew.getRecordList().stream().collect(Collectors.groupingBy(ResourcePageItemVO::getServeType)); Map<String, List<ResourcePageItemVO>> listMap = pageBeanNew.getRecordList().stream().collect(Collectors.groupingBy(ResourcePageItemVO::getServeType));
for (Map.Entry<String, List<ResourcePageItemVO>> entry : listMap.entrySet()) { for (Map.Entry<String, List<ResourcePageItemVO>> entry : listMap.entrySet()) {
if (StringUtils.equals(ServeTypeEnum.FOLDER.getValue(), entry.getKey())) {
fillResourcePageFolder(entry.getValue(), wechatUserId);
continue;
}
//二维码类型 //二维码类型
fillQrcodeType(resourcePageColumn.getResourcePageId(), entry.getValue()); fillQrcodeType(resourcePageColumn.getResourcePageId(), entry.getValue());
fillResourceByType(entry.getValue(), wechatUserId, entry.getKey()); fillResourceByType(entry.getValue(), wechatUserId, entry.getKey());
...@@ -2048,6 +2461,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2048,6 +2461,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
List<Long> originColumnIds = resourcePageColumnDao.getColumnIdsByPageId(resourcePageId); List<Long> originColumnIds = resourcePageColumnDao.getColumnIdsByPageId(resourcePageId);
//删除栏目资源 //删除栏目资源
resourcePageItemDao.deleteByPageId(resourcePageId); resourcePageItemDao.deleteByPageId(resourcePageId);
// 删除新版通用组件配置
delete4NewComponentFolderByColumnIds(originColumnIds);
if (!ListUtils.isEmpty(updateResourcePageVO.getColumnVOS())) { if (!ListUtils.isEmpty(updateResourcePageVO.getColumnVOS())) {
List<UpdateResourceColumnVO> list = updateResourcePageVO.getColumnVOS(); List<UpdateResourceColumnVO> list = updateResourcePageVO.getColumnVOS();
List<Long> columnIds = new ArrayList<>(); List<Long> columnIds = new ArrayList<>();
...@@ -2094,6 +2509,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2094,6 +2509,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
this.updateResourcePageBookstore(resourcePageId, updateResourcePageVO.getResourcePageBookstoreList(), ResourcePageFixtureTypeEnum.BOOKSTORE); this.updateResourcePageBookstore(resourcePageId, updateResourcePageVO.getResourcePageBookstoreList(), ResourcePageFixtureTypeEnum.BOOKSTORE);
// 更新优惠券 // 更新优惠券
this.updateResourcePageBookstore(resourcePageId, updateResourcePageVO.getResourcePageCouponList(), ResourcePageFixtureTypeEnum.COUPONS); this.updateResourcePageBookstore(resourcePageId, updateResourcePageVO.getResourcePageCouponList(), ResourcePageFixtureTypeEnum.COUPONS);
// 更新营销活动
this.updateResourcePageMarketingActivity(resourcePageId, updateResourcePageVO.getResourcePageMarketingActivityList());
//图书标准服务 //图书标准服务
this.updateResourcePageModel(resourcePageId,updateResourcePageVO.getResourcePageModelList(),page.getCreateUser()); this.updateResourcePageModel(resourcePageId,updateResourcePageVO.getResourcePageModelList(),page.getCreateUser());
...@@ -2121,6 +2538,22 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2121,6 +2538,22 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
return resourcePageId; return resourcePageId;
} }
private void updateResourcePageMarketingActivity(Long resourcePageId, List<ResourcePageMarketingActivity> resourcePageMarketingActivityList) {
resourcePageMarketingActivityMapper.deleteByResourcePageId(resourcePageId);
if (CollUtil.isNotEmpty(resourcePageMarketingActivityList)) {
resourcePageMarketingActivityList.forEach(x->x.setResourcePageId(resourcePageId));
resourcePageMarketingActivityMapper.batchInsert(resourcePageMarketingActivityList);
}
}
private void delete4NewComponentFolderByColumnIds(List<Long> columnIds) {
if (CollUtil.isEmpty(columnIds)) {
return;
}
resourcePageFolderMapper.deleteByColumnIds(columnIds);
resourcePageFolderItemMapper.deleteByColumnIds(columnIds);
}
@Override @Override
public void updateQrcodeOneServe(Long bookGroupId, Long sceneId, Boolean ignoreRays) { public void updateQrcodeOneServe(Long bookGroupId, Long sceneId, Boolean ignoreRays) {
try { try {
...@@ -2495,6 +2928,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2495,6 +2928,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePageVO.setResourcePageBookstoreList(bookstoreVOS); resourcePageVO.setResourcePageBookstoreList(bookstoreVOS);
resourcePageVO.setResourcePageCouponList(couponVOS); resourcePageVO.setResourcePageCouponList(couponVOS);
resourcePageVO.setPushTextOpenStatus(pushTextPermission); resourcePageVO.setPushTextOpenStatus(pushTextPermission);
fillResourcePageMarketingActivity(resourcePageVO, wechatUserId);
return resourcePageVO; return resourcePageVO;
} }
...@@ -2547,6 +2981,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2547,6 +2981,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePageVO.setLandingPageType(resourcePage.getLandingPageType()); resourcePageVO.setLandingPageType(resourcePage.getLandingPageType());
resourcePageVO.setTransparency(resourcePage.getTransparency()); resourcePageVO.setTransparency(resourcePage.getTransparency());
resourcePageVO.setIsShowPrice(resourcePage.getIsShowPrice()); resourcePageVO.setIsShowPrice(resourcePage.getIsShowPrice());
IMaskFlag.Helper helper = IMaskFlag.Helper.of(resourcePage.getSwitchConfig());
resourcePageVO.setShowSelf(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SELF));
resourcePageVO.setShowCollect(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_COLLECT));
resourcePageVO.setShowShare(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SHARE));
resourcePageVO.setNewEditor(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.NEW_EDITOR));
} }
return resourcePageVO; return resourcePageVO;
} }
...@@ -2577,6 +3016,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2577,6 +3016,11 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePageVO.setTransparency(resourcePage.getTransparency()); resourcePageVO.setTransparency(resourcePage.getTransparency());
resourcePageVO.setNavigationJumpType(resourcePage.getNavigationJumpType()); resourcePageVO.setNavigationJumpType(resourcePage.getNavigationJumpType());
resourcePageVO.setIsShowPrice(resourcePage.getIsShowPrice()); resourcePageVO.setIsShowPrice(resourcePage.getIsShowPrice());
IMaskFlag.Helper helper = IMaskFlag.Helper.of(resourcePage.getSwitchConfig());
resourcePageVO.setShowSelf(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SELF));
resourcePageVO.setShowCollect(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_COLLECT));
resourcePageVO.setShowShare(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.SHOW_SHARE));
resourcePageVO.setNewEditor(helper.checkFlagEnable(ResourcePageSwitchConfigEnum.NEW_EDITOR));
} }
//小程序 //小程序
resourcePageVO.setAppletId(bookAppletSceneDao.getAppletIdBySceneId(sceneId)); resourcePageVO.setAppletId(bookAppletSceneDao.getAppletIdBySceneId(sceneId));
...@@ -2747,6 +3191,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2747,6 +3191,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@Override @Override
public ResourcePageOneServe hasOneResource(Long bookGroupId, Long sceneId, Long wechatUserId, Boolean ignoreRays) { public ResourcePageOneServe hasOneResource(Long bookGroupId, Long sceneId, Long wechatUserId, Boolean ignoreRays) {
ignoreRays = BooleanUtils.toBoolean(ignoreRays);
ResourcePageOneServe pageOneServe = new ResourcePageOneServe(); ResourcePageOneServe pageOneServe = new ResourcePageOneServe();
pageOneServe.setBookGroupId(bookGroupId); pageOneServe.setBookGroupId(bookGroupId);
pageOneServe.setSceneId(sceneId); pageOneServe.setSceneId(sceneId);
...@@ -2769,7 +3214,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2769,7 +3214,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
pageOneServe.setNavigationJumpType(resourcePage.getNavigationJumpType()); pageOneServe.setNavigationJumpType(resourcePage.getNavigationJumpType());
//只配置了1个应用作品,且不开启小睿 //只配置了1个应用作品,且不开启小睿
ResourcePageItemVO itemVO = resourcePageItemDao.checkOneServeItemByPageId(resourcePageId, ignoreRays); ResourcePageItemVO itemVO = resourcePageItemDao.checkOneServeItemByPageId(resourcePageId, ignoreRays);
if (null != itemVO) { ResourcePageItemVO folderItemVO = resourcePageFolderItemMapper.checkOneServeItemByPageId(resourcePageId, ignoreRays);
// 同时只能存在一个应用作品
if (BooleanUtils.xor(new boolean[]{Objects.nonNull(itemVO), Objects.nonNull(folderItemVO)})) {
itemVO = Optional.ofNullable(itemVO).orElse(folderItemVO);
pageOneServe.setOneServe(!StringUtils.equalsAny(itemVO.getTypeCode(), "PHOTOGRAPH", "AI_TIKU", "APPLET_CLOCK", "APPLET_QA", "APPLET_WORD")); pageOneServe.setOneServe(!StringUtils.equalsAny(itemVO.getTypeCode(), "PHOTOGRAPH", "AI_TIKU", "APPLET_CLOCK", "APPLET_QA", "APPLET_WORD"));
if (itemVO.getServeType().equals(ServeTypeEnum.RESOURCE.getValue())) { if (itemVO.getServeType().equals(ServeTypeEnum.RESOURCE.getValue())) {
fillFileResource(Arrays.asList(itemVO), wechatUserId); fillFileResource(Arrays.asList(itemVO), wechatUserId);
...@@ -2861,6 +3309,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2861,6 +3309,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MqConstants.OWN_MESSAGE_4QRCODE, ownMessageDTO); amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MqConstants.OWN_MESSAGE_4QRCODE, ownMessageDTO);
} }
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object,Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
/** /**
* 需要同步到channel的资源 * 需要同步到channel的资源
* @author:zhuyajie * @author:zhuyajie
...@@ -2870,6 +3324,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2870,6 +3324,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@Override @Override
public List<MessagServeDTO> getServeListBySceneId4QrUpdate(Long sceneId) { public List<MessagServeDTO> getServeListBySceneId4QrUpdate(Long sceneId) {
List<ResourcePageItemVO> itemVOS = resourcePageItemDao.getServeListBySceneId4QrUpdate(sceneId); List<ResourcePageItemVO> itemVOS = resourcePageItemDao.getServeListBySceneId4QrUpdate(sceneId);
itemVOS = ListUtils.isEmpty(itemVOS)?new ArrayList<>():itemVOS;
List<ResourcePageItemVO> folderItemVOS = resourcePageFolderItemMapper.getServeListBySceneId4QrUpdate(sceneId);
itemVOS.addAll(ListUtils.isEmpty(folderItemVOS)?new ArrayList<>():folderItemVOS);
itemVOS = itemVOS.stream().filter(Objects::nonNull)
.sorted(Comparator.comparing(ResourcePageItemVO::getColumnSeq)
.thenComparing(
x->Optional.ofNullable(x.getFolderNum()).orElse(Integer.MAX_VALUE)
).thenComparing(ResourcePageItemVO::getServeId))
.filter(distinctByKey(ResourcePageItemVO::getServeId))
.collect(Collectors.toList());
if (ListUtils.isEmpty(itemVOS)) { if (ListUtils.isEmpty(itemVOS)) {
return new ArrayList<>(); return new ArrayList<>();
} }
...@@ -3978,6 +4443,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -3978,6 +4443,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
this.deleteNavigation(id); this.deleteNavigation(id);
} }
} }
// TODO@guiq 删除新版组件
resourcePageBookstoreBiz.deleteByResourcePageId(resourcePage.getId(), null); resourcePageBookstoreBiz.deleteByResourcePageId(resourcePage.getId(), null);
} }
}); });
...@@ -4344,12 +4810,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -4344,12 +4810,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
itemVOList = new ArrayList<>(); itemVOList = new ArrayList<>();
//应用和作品提出来一起查 //应用和作品提出来一起查
List<ResourcePageItemVO> itemAppAndProductVOList = new ArrayList<>(); List<ResourcePageItemVO> itemAppAndProductVOList = new ArrayList<>();
List<ResourcePageItemVO> resourcePageFolderVOList = new ArrayList<>();
//过滤一些资源,重新排序 //过滤一些资源,重新排序
for (Map.Entry<String, List<ResourcePageItemVO>> entry : listMap.entrySet()) { for (Map.Entry<String, List<ResourcePageItemVO>> entry : listMap.entrySet()) {
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(entry.getKey()) || ServeTypeEnum.PRODUCT.getValue().equals(entry.getKey())) { if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(entry.getKey()) || ServeTypeEnum.PRODUCT.getValue().equals(entry.getKey())) {
itemAppAndProductVOList.addAll(entry.getValue()); itemAppAndProductVOList.addAll(entry.getValue());
continue; continue;
} }
if (ServeTypeEnum.FOLDER.getValue().equals(entry.getKey())) {
resourcePageFolderVOList.addAll(entry.getValue());
continue;
}
this.fillResourceByType(entry.getValue(), wechatUserId, entry.getKey()); this.fillResourceByType(entry.getValue(), wechatUserId, entry.getKey());
itemVOList.addAll(entry.getValue()); itemVOList.addAll(entry.getValue());
} }
...@@ -4357,6 +4828,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -4357,6 +4828,10 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
fillAppProductServe(itemAppAndProductVOList, wechatUserId); fillAppProductServe(itemAppAndProductVOList, wechatUserId);
itemVOList.addAll(itemAppAndProductVOList); itemVOList.addAll(itemAppAndProductVOList);
} }
if (!resourcePageFolderVOList.isEmpty()){
fillResourcePageFolder(resourcePageFolderVOList,wechatUserId);
itemVOList.addAll(resourcePageFolderVOList);
}
itemVOList.sort(Comparator.comparing(ResourcePageItemVO::getId)); itemVOList.sort(Comparator.comparing(ResourcePageItemVO::getId));
List<ResourceColumnAndServeVO> removeColumns = setPageColumnOther(serveVOS, itemVOList); List<ResourceColumnAndServeVO> removeColumns = setPageColumnOther(serveVOS, itemVOList);
...@@ -4758,7 +5233,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -4758,7 +5233,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
Long resourcePageId = resourcePage.getId(); Long resourcePageId = resourcePage.getId();
//进本书服务页 查导航 //进本书服务页 查导航
Integer count=0; Integer count=0;
if (PageLandingPageTypeEnum.RESOURCE.getCode().equals(resourcePage.getLandingPageType())) { if (PageLandingPageTypeEnum.RESOURCE.getCode().equals(resourcePage.getLandingPageType()) || PageLandingPageTypeEnum.SINGLE_RESOURCE.getCode().equals(resourcePage.getLandingPageType())) {
count = resourcePageNavigationDao.countByPageId(resourcePageId); count = resourcePageNavigationDao.countByPageId(resourcePageId);
if (null==count || count<1) { if (null==count || count<1) {
count=1; count=1;
...@@ -4781,4 +5256,27 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -4781,4 +5256,27 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
} }
@Override
public List<ResourcePageFolderItemVO> getFolderItemList(Long wechatUserId, Long folderId) {
List<ResourcePageFolderItemVO> folderItemVOS = resourcePageFolderItemMapper.listByFolderIds(Collections.singletonList(folderId));
if (CollUtil.isEmpty(folderItemVOS)) {
return new ArrayList<>();
}
List<ResourcePageFolderItemVO> appProductItems = new ArrayList<>();
List<ResourcePageFolderItemVO> otherItems = new ArrayList<>();
folderItemVOS.forEach(x-> splitFolderItemVOS(appProductItems, otherItems, x));
if (CollUtil.isNotEmpty(appProductItems)) {
appProductItems.get(0).setCreateUser(folderItemVOS.get(0).getCreateUser());
fillAppProductServe(appProductItems, wechatUserId);
}
if (CollUtil.isNotEmpty(otherItems)) {
Map<String, List<ResourcePageFolderItemVO>> folderItemMap = otherItems.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(ResourcePageFolderItemVO::getServeType));
folderItemMap.forEach((k, v) -> fillResourceByType(v, wechatUserId, k));
}
return folderItemVOS;
}
} }
package com.pcloud.book.group.constant; package com.pcloud.book.group.constant;
import com.pcloud.book.applet.contants.AppletResourceApplyConstants; import com.pcloud.book.applet.contants.AppletResourceApplyConstants;
import com.pcloud.common.constant.CacheConstant; import org.apache.commons.lang3.StringUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Optional;
/** /**
* @ClassName com.pcloud.book.group.constant.ResourcePageConstants * @ClassName com.pcloud.book.group.constant.ResourcePageConstants
...@@ -35,7 +36,10 @@ public class ResourcePageConstants { ...@@ -35,7 +36,10 @@ public class ResourcePageConstants {
MEMBER_ACTIVITY(8,"平台会员活动", new String[]{ServeTypeEnum.MEMBER_ACTIVITY.getValue()}), MEMBER_ACTIVITY(8,"平台会员活动", new String[]{ServeTypeEnum.MEMBER_ACTIVITY.getValue()}),
CHANNEL_SHOP(9,"运营商城", new String[]{ServeTypeEnum.SHOP.getValue()}), CHANNEL_SHOP(9,"运营商城", new String[]{ServeTypeEnum.SHOP.getValue()}),
OUTER_LINK(10,"外链",new String[]{ServeTypeEnum.OUTER_LINK.getValue()}), OUTER_LINK(10,"外链",new String[]{ServeTypeEnum.OUTER_LINK.getValue()}),
MULTI_CHANNEL(12,"多渠道资源",new String[]{ServeTypeEnum.MULTI_CHANNEL.getValue()}); MULTI_CHANNEL(12,"多渠道资源",new String[]{ServeTypeEnum.MULTI_CHANNEL.getValue()}),
COMMON_COMPONENT(13, "通用组件", new String[]{ServeTypeEnum.FOLDER.getValue()}),
MARKETING_ACTIVITY(14, "营销活动", new String[]{ServeTypeEnum.FOLDER.getValue()}),
;
private Integer code; private Integer code;
private String name; private String name;
...@@ -93,7 +97,9 @@ public class ResourcePageConstants { ...@@ -93,7 +97,9 @@ public class ResourcePageConstants {
SHOP("SHOP","运营商城"), SHOP("SHOP","运营商城"),
RESOURCE("RESOURCE","素材"), RESOURCE("RESOURCE","素材"),
OUTER_LINK("OUTER_LINK","外链"), OUTER_LINK("OUTER_LINK","外链"),
MULTI_CHANNEL("MULTI_CHANNEL","多渠道资源"); MULTI_CHANNEL("MULTI_CHANNEL","多渠道资源"),
FOLDER("FOLDER", "通用组件资源集合"),
;
private String value; private String value;
...@@ -120,6 +126,10 @@ public class ResourcePageConstants { ...@@ -120,6 +126,10 @@ public class ResourcePageConstants {
} }
return null; return null;
} }
public static Optional<ServeTypeEnum> of(String value){
return Arrays.stream(ServeTypeEnum.values()).filter(x -> StringUtils.equalsAny(x.getValue(), value)).findFirst();
}
} }
/** /**
......
...@@ -4,6 +4,7 @@ import com.pcloud.common.entity.BaseEntity; ...@@ -4,6 +4,7 @@ import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
/** /**
* 自有码H5页面(ResourcePage)实体类 * 自有码H5页面(ResourcePage)实体类
...@@ -12,6 +13,7 @@ import lombok.Data; ...@@ -12,6 +13,7 @@ import lombok.Data;
* @since 2021-03-26 15:25:28 * @since 2021-03-26 15:25:28
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true)
public class ResourcePage extends BaseEntity { public class ResourcePage extends BaseEntity {
private static final long serialVersionUID = 220369810358566952L; private static final long serialVersionUID = 220369810358566952L;
/** /**
...@@ -105,4 +107,14 @@ public class ResourcePage extends BaseEntity { ...@@ -105,4 +107,14 @@ public class ResourcePage extends BaseEntity {
* 是否展示价格 * 是否展示价格
*/ */
private Integer isShowPrice; private Integer isShowPrice;
/**
* 纯色背景颜色
*/
private String bgColor;
/**
* 开关配置
*/
private Integer switchConfig;
} }
...@@ -6,6 +6,7 @@ import java.util.Date; ...@@ -6,6 +6,7 @@ import java.util.Date;
import java.io.Serializable; import java.io.Serializable;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
/** /**
* 自有码H5页面栏目(ResourcePageColumn)实体类 * 自有码H5页面栏目(ResourcePageColumn)实体类
...@@ -14,6 +15,7 @@ import lombok.Data; ...@@ -14,6 +15,7 @@ import lombok.Data;
* @since 2021-03-26 15:26:02 * @since 2021-03-26 15:26:02
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true)
public class ResourcePageColumn extends BaseEntity { public class ResourcePageColumn extends BaseEntity {
private static final long serialVersionUID = -78405010138867722L; private static final long serialVersionUID = -78405010138867722L;
/** /**
...@@ -66,4 +68,19 @@ public class ResourcePageColumn extends BaseEntity { ...@@ -66,4 +68,19 @@ public class ResourcePageColumn extends BaseEntity {
* 背景图地址 * 背景图地址
*/ */
private String backgroundUrl; private String backgroundUrl;
/**
* 标题颜色
*/
private String columnTitleColor;
/**
* 标题背景图
*/
private String columnTitleBg;
/**
* 查看更多位置 【0标题后】【1列表后】
*/
private Integer showPosition;
} }
\ No newline at end of file
package com.pcloud.book.group.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 自有码H5页面通用组件资源
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ResourcePageFolder extends BaseEntity implements Serializable {
/**
* 主键
*/
private Long id;
/**
* 资源页id
*/
private Long resourcePageId;
/**
* 资源栏目id
*/
private Long resourcePageColumnId;
/**
* 标题
*/
private String title;
/**
* 子标题
*/
private String subTitle;
/**
* 跳转类型 1单资源 2资源列表 3链接
*/
private Integer jumpType;
/**
* 图标
*/
private String icon;
/**
* 链接url
*/
private String linkUrl;
/**
* 排序值
*/
private Integer seqNum;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* 创建人
*/
private Long createUser;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.pcloud.book.group.entity;
import com.pcloud.common.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 自有码H5页面通用组件资源项
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ResourcePageFolderItem extends BaseEntity implements Serializable {
/**
* 主键
*/
private Long id;
/**
* 资源页id
*/
private Long resourcePageId;
/**
* 通用组件资源id
*/
private Long folderId;
/**
* 资源栏目id
*/
private Long resourcePageColumnId;
/**
* 资源id
*/
private Long serveId;
/**
* 资源类型
*/
private String serveType;
/**
* 链接url
*/
private String linkUrl;
/**
* 资源类型
*/
private String typeCode;
/**
* 排序值
*/
private Integer seqNum;
/**
* 是否展示
*/
private Integer isShow;
/**
* 二维码引导关注文案
*/
private String guideContent;
/**
* 二维码logo链接
*/
private String logoUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private Long createUser;
/**
* 二维码来源;0:默认公众号;1:自定义
*/
private Integer qrcodeSource;
/**
* 二维码展示方式(1平铺2弹窗)
*/
private Integer qrcodeShowType;
/**
* 二维码公众号id
*/
private Long accountSettingId;
/**
* 自定义大图
*/
private String selfBigPic;
/**
* 自定义小图
*/
private String selfSmallPic;
private String selfServeName;
/**
* 书刊链接来源(1当当2京东3拼多多)
*/
private Integer linkFrom;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.pcloud.book.group.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 营销活动
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResourcePageMarketingActivity implements Serializable {
/**
* 主键
*/
private Long id;
/**
* 资源页ID
*/
private Long resourcePageId;
/**
* 类型 0会员 1优惠券
*/
private Integer type;
/**
* 宣传文案
*/
private String content;
/**
* 配图
*/
private String img;
/**
* 会员应用/优惠券ID
*/
private Long serveId;
/**
* 资源类型
*/
private String serveType;
/**
* 跳转地址
*/
private String linkUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private Long createUser;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.pcloud.book.group.enums;
import java.util.Objects;
import java.util.Optional;
public interface IMaskFlag {
int getFlag();
default boolean defaultState() {
return false;
}
/**
* 计算辅助工具
*/
class Helper {
private int flagVal;
private Helper(int flagVal) {
this.flagVal = flagVal;
}
public static Helper of() {
return new Helper(0);
}
public static Helper of(Integer flagVal) {
return new Helper(Optional.ofNullable(flagVal).orElse(0));
}
/**
* 校验标识位是否开启
*
* @param maskFlag 掩码表示枚举实现
* @return 是否开启
*/
public boolean checkFlagEnable(IMaskFlag maskFlag) {
if (Objects.isNull(maskFlag)) {
return false;
}
return (flagVal & maskFlag.getFlag()) != 0;
}
/**
* 指定条件开启
*
* @param maskFlag 指定条件枚举
* @return 计算值
*/
public Helper onState(IMaskFlag maskFlag) {
flagVal |= maskFlag.getFlag();
return this;
}
/**
* 指定条件关闭
*
* @param maskFlag 指定条件枚举
* @return 计算值
*/
public Helper offState(IMaskFlag maskFlag) {
flagVal &= ~maskFlag.getFlag();
return this;
}
/**
* 设置条件默认状态
*
* @param maskFlag 指定条件枚举
* @return 计算值
*/
public Helper defaultState(IMaskFlag maskFlag) {
return state(maskFlag, maskFlag.defaultState());
}
/**
* 设置条件状态
*
* @param maskFlag 指定条件枚举
* @return 计算值
*/
public Helper state(IMaskFlag maskFlag, Boolean state) {
if (state == null) {
state = maskFlag.defaultState();
}
if (state) {
return onState(maskFlag);
}
return offState(maskFlag);
}
public int getFlagVal() {
return flagVal;
}
}
}
package com.pcloud.book.group.enums;
/**
* 资源页开关配置
*/
public enum ResourcePageSwitchConfigEnum implements IMaskFlag {
SHOW_SELF(0, "开启展示我的页面"),
/**
* 默认开启收藏
*/
SHOW_COLLECT(1, "开启展示收藏", true),
/**
* 默认开启分享
*/
SHOW_SHARE(2, "开启展示分享", true),
NEW_EDITOR(3, "新版编辑器", false),
;
private final int flag;
private final String desc;
private final boolean defaultState;
ResourcePageSwitchConfigEnum(int flag, String desc) {
this(flag, desc, false);
}
ResourcePageSwitchConfigEnum(int flag, String desc, boolean defaultState) {
this.flag = flag;
this.desc = desc;
this.defaultState = defaultState;
}
@Override
public int getFlag() {
return 1 << flag;
}
@Override
public boolean defaultState() {
return this.defaultState;
}
public String getDesc() {
return desc;
}
}
...@@ -7,6 +7,7 @@ import com.pcloud.book.group.entity.BookGroupServe; ...@@ -7,6 +7,7 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.ResourcePageCollect; import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourcePagePic; import com.pcloud.book.group.entity.ResourcePagePic;
import com.pcloud.book.group.entity.ResourceRecomManage; import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.vo.ResourcePageFolderItemVO;
import com.pcloud.book.group.vo.ResourcePageShareParam; import com.pcloud.book.group.vo.ResourcePageShareParam;
import com.pcloud.book.group.vo.ResourcePageVO; import com.pcloud.book.group.vo.ResourcePageVO;
import com.pcloud.book.group.vo.UpdateResourceColumnVO; import com.pcloud.book.group.vo.UpdateResourceColumnVO;
...@@ -127,6 +128,14 @@ public class ResourcePageFacade { ...@@ -127,6 +128,14 @@ public class ResourcePageFacade {
return new ResponseDto<>(resourcePageBiz.getColumnTypeByPageId4Wechat(resourcePageId, wechatUserId, bookId, adviserId, channelId, enableAdverting, navigationId)); return new ResponseDto<>(resourcePageBiz.getColumnTypeByPageId4Wechat(resourcePageId, wechatUserId, bookId, adviserId, channelId, enableAdverting, navigationId));
} }
@ApiOperation("根据FolderId批量获取详情")
@GetMapping("getFolderItemList")
public ResponseDto<List<ResourcePageFolderItemVO>> getFolderItemList(@CookieValue("userInfo") String userInfo,
@RequestParam("folderId") Long folderId){
Long wechatUserId = Cookie.getId(userInfo,Cookie._WECHAT_USER_ID);
return new ResponseDto<>(resourcePageBiz.getFolderItemList(wechatUserId, folderId));
}
//优化 此处把模块分开调接口 columnType //优化 此处把模块分开调接口 columnType
@ApiOperation("客户端-根据页面id查资源页栏目及资源") @ApiOperation("客户端-根据页面id查资源页栏目及资源")
@GetMapping("getColumnAndServeListByPageId4WechatV2") @GetMapping("getColumnAndServeListByPageId4WechatV2")
......
package com.pcloud.book.group.mapper;
import com.pcloud.book.group.entity.ResourcePageFolderItem;
import com.pcloud.book.group.vo.ResourcePageFolderItemVO;
import com.pcloud.book.group.vo.ResourcePageItemVO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public interface ResourcePageFolderItemMapper {
int deleteByPrimaryKey(Long id);
int insert(ResourcePageFolderItem record);
int insertSelective(ResourcePageFolderItem record);
ResourcePageFolderItem selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(ResourcePageFolderItem record);
int updateByPrimaryKey(ResourcePageFolderItem record);
void deleteByColumnIds(@Param("columnIds") List<Long> columnIds);
void batchInsert(@Param("itemList") List<ResourcePageFolderItem> itemList);
List<ResourcePageFolderItemVO> listByFolderIds(@Param("folderIds") Collection<Long> folderIds);
List<ResourcePageItemVO> getServeListBySceneId4QrUpdate(@Param("sceneId") Long sceneId);
ResourcePageItemVO checkOneServeItemByPageId(@Param("resourcePageId") Long resourcePageId, @Param("ignoreRays") Boolean ignoreRays);
}
\ No newline at end of file
package com.pcloud.book.group.mapper;
import com.pcloud.book.group.entity.ResourcePageFolder;
import com.pcloud.book.group.vo.ResourcePageFolderVO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public interface ResourcePageFolderMapper {
int deleteByPrimaryKey(Long id);
int insert(ResourcePageFolder record);
int insertSelective(ResourcePageFolder record);
ResourcePageFolder selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(ResourcePageFolder record);
int updateByPrimaryKey(ResourcePageFolder record);
void deleteByColumnIds(@Param("columnIds") List<Long> columnIds);
List<ResourcePageFolderVO> selectByPrimaryKeys(@Param("ids") Collection<Long> ids);
}
\ No newline at end of file
package com.pcloud.book.group.mapper;
import com.pcloud.book.group.entity.ResourcePageMarketingActivity;
import com.pcloud.book.group.vo.ResourcePageMarketingActivityVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ResourcePageMarketingActivityMapper {
int deleteByPrimaryKey(Long id);
int insert(ResourcePageMarketingActivity record);
int insertSelective(ResourcePageMarketingActivity record);
ResourcePageMarketingActivity selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(ResourcePageMarketingActivity record);
int updateByPrimaryKey(ResourcePageMarketingActivity record);
void deleteByResourcePageId(@Param("resourcePageId") Long resourcePageId);
void batchInsert(@Param("records") List<ResourcePageMarketingActivity> records);
List<ResourcePageMarketingActivityVO> listByResourcePageId(@Param("resourcePageId") Long resourcePageId);
}
\ No newline at end of file
...@@ -107,4 +107,19 @@ public class ResourceColumnAndServeVO extends BaseDto{ ...@@ -107,4 +107,19 @@ public class ResourceColumnAndServeVO extends BaseDto{
* 背景图地址 * 背景图地址
*/ */
private String backgroundUrl; private String backgroundUrl;
/**
* 标题颜色
*/
private String columnTitleColor;
/**
* 标题背景图
*/
private String columnTitleBg;
/**
* 查看更多位置 【0标题后】【1列表后】
*/
private Integer showPosition;
} }
package com.pcloud.book.group.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ResourcePageFolderItemVO extends ResourcePageItemVO {
/**
* 主键
*/
private Long id;
/**
* 通用组件资源id
*/
private Long folderId;
/**
* 资源页id
*/
private Long resourcePageId;
/**
* 资源栏目id
*/
private Long resourcePageColumnId;
/**
* 资源id
*/
private Long serveId;
/**
* 资源类型
*/
private String serveType;
/**
* 链接url
*/
private String linkUrl;
/**
* 资源类型
*/
private String typeCode;
/**
* 排序值
*/
private Integer seqNum;
/**
* 是否展示
*/
private Integer isShow;
/**
* 二维码引导关注文案
*/
private String guideContent;
/**
* 二维码logo链接
*/
private String logoUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private Long createUser;
/**
* 二维码来源;0:默认公众号;1:自定义
*/
private Integer qrcodeSource;
/**
* 二维码展示方式(1平铺2弹窗)
*/
private Integer qrcodeShowType;
/**
* 二维码公众号id
*/
private Long accountSettingId;
/**
* 自定义大图
*/
private String selfBigPic;
/**
* 自定义小图
*/
private String selfSmallPic;
private String selfServeName;
/**
* 书刊链接来源(1当当2京东3拼多多)
*/
private Integer linkFrom;
}
package com.pcloud.book.group.vo;
import com.pcloud.book.group.entity.ResourcePageFolder;
import com.pcloud.book.group.entity.ResourcePageFolderItem;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ResourcePageFolderVO extends ResourcePageFolder implements Serializable {
private static final long serialVersionUID = 7842343942101042009L;
private List<ResourcePageFolderItemVO> folderItemList;
}
...@@ -10,6 +10,8 @@ import com.pcloud.common.dto.BaseDto; ...@@ -10,6 +10,8 @@ import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @ClassName com.pcloud.book.group.vo.ResourcePageItemVO * @ClassName com.pcloud.book.group.vo.ResourcePageItemVO
* @Author zhuyajie * @Author zhuyajie
...@@ -150,4 +152,12 @@ public class ResourcePageItemVO extends BaseDto{ ...@@ -150,4 +152,12 @@ public class ResourcePageItemVO extends BaseDto{
@ApiModelProperty("版权保护状态") @ApiModelProperty("版权保护状态")
private Boolean bookAuthState; private Boolean bookAuthState;
private ResourcePageFolderVO resourcePageFolder;
private Integer columnSeq;
private Integer folderNum;
private Integer serveNum;
} }
package com.pcloud.book.group.vo;
import com.pcloud.promotion.couponsnew.dto.CouponsNewDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class ResourcePageMarketingActivityVO extends ResourcePageItemVO {
/**
* 主键
*/
private Long id;
/**
* 资源页ID
*/
private Long resourcePageId;
/**
* 类型 0会员 1优惠券
*/
private Integer type;
/**
* 宣传文案
*/
private String content;
/**
* 配图
*/
private String img;
/**
* 会员应用/优惠券ID
*/
private Long serveId;
/**
* 资源类型
*/
private String serveType;
/**
* 跳转地址
*/
private String linkUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private Long createUser;
private CouponsNewDto couponsNewDto;
}
...@@ -3,12 +3,11 @@ package com.pcloud.book.group.vo; ...@@ -3,12 +3,11 @@ package com.pcloud.book.group.vo;
import com.pcloud.book.group.entity.ResourcePageModel; import com.pcloud.book.group.entity.ResourcePageModel;
import com.pcloud.book.group.entity.ResourcePageNavigation; import com.pcloud.book.group.entity.ResourcePageNavigation;
import com.pcloud.common.dto.BaseDto; import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 自有码H5页面(ResourcePage)实体类 * 自有码H5页面(ResourcePage)实体类
* *
...@@ -144,4 +143,26 @@ public class ResourcePageVO extends BaseDto { ...@@ -144,4 +143,26 @@ public class ResourcePageVO extends BaseDto {
@ApiModelProperty("图书标准服务") @ApiModelProperty("图书标准服务")
private List<ResourcePageModel> resourcePageModelList; private List<ResourcePageModel> resourcePageModelList;
@ApiModelProperty("图书标准服务")
private List<ResourcePageMarketingActivityVO> resourcePageMarketingActivityList;
/**
* 展示我的页面
*/
private Boolean showSelf;
/**
* 展示收藏
*/
private Boolean showCollect;
/**
* 展示分享
*/
private Boolean showShare;
/**
* 新版编辑器
*/
private Boolean newEditor;
} }
...@@ -4,6 +4,7 @@ import java.util.List; ...@@ -4,6 +4,7 @@ import java.util.List;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.pcloud.book.group.entity.ResourcePageFolder;
import lombok.Data; import lombok.Data;
/** /**
...@@ -84,4 +85,19 @@ public class UpdateResourceColumnVO { ...@@ -84,4 +85,19 @@ public class UpdateResourceColumnVO {
* 背景图地址 * 背景图地址
*/ */
private String backgroundUrl; private String backgroundUrl;
/**
* 标题颜色
*/
private String columnTitleColor;
/**
* 标题背景图
*/
private String columnTitleBg;
/**
* 查看更多位置 【0标题后】【1列表后】
*/
private Integer showPosition;
} }
...@@ -5,6 +5,7 @@ import java.util.List; ...@@ -5,6 +5,7 @@ import java.util.List;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.pcloud.book.group.entity.ResourcePageBookstore; import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.entity.ResourcePageMarketingActivity;
import com.pcloud.book.group.entity.ResourcePageModel; import com.pcloud.book.group.entity.ResourcePageModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -68,6 +69,10 @@ public class UpdateResourcePageVO { ...@@ -68,6 +69,10 @@ public class UpdateResourcePageVO {
@ApiModelProperty("优惠券") @ApiModelProperty("优惠券")
private List<ResourcePageBookstore> resourcePageCouponList; private List<ResourcePageBookstore> resourcePageCouponList;
@ApiModelProperty("营销活动")
private List<ResourcePageMarketingActivity> resourcePageMarketingActivityList;
/** /**
* 字体颜色 * 字体颜色
*/ */
...@@ -98,4 +103,29 @@ public class UpdateResourcePageVO { ...@@ -98,4 +103,29 @@ public class UpdateResourcePageVO {
@ApiModelProperty("图书标准服务") @ApiModelProperty("图书标准服务")
private List<ResourcePageModel> resourcePageModelList; private List<ResourcePageModel> resourcePageModelList;
/**
* 纯色背景颜色
*/
private String bgColor;
/**
* 展示我的页面
*/
private Boolean showSelf;
/**
* 展示收藏
*/
private Boolean showCollect;
/**
* 展示分享
*/
private Boolean showShare;
/**
* 新版编辑器
*/
private Boolean newEditor;
} }
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
<result property="navigationId" column="navigation_id" jdbcType="INTEGER"/> <result property="navigationId" column="navigation_id" jdbcType="INTEGER"/>
<result property="backgroundType" column="background_type" jdbcType="INTEGER"/> <result property="backgroundType" column="background_type" jdbcType="INTEGER"/>
<result property="backgroundUrl" column="background_url" jdbcType="VARCHAR"/> <result property="backgroundUrl" column="background_url" jdbcType="VARCHAR"/>
<result property="columnTitleColor" column="column_title_color" jdbcType="VARCHAR"/>
<result property="columnTitleBg" column="column_title_bg" jdbcType="VARCHAR"/>
<result property="showPosition" column="show_position" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<resultMap id="ResourceColumnAndServe" type="com.pcloud.book.group.vo.ResourceColumnAndServeVO"> <resultMap id="ResourceColumnAndServe" type="com.pcloud.book.group.vo.ResourceColumnAndServeVO">
...@@ -33,12 +36,16 @@ ...@@ -33,12 +36,16 @@
<result property="navigationId" column="navigation_id" jdbcType="INTEGER"/> <result property="navigationId" column="navigation_id" jdbcType="INTEGER"/>
<result property="backgroundType" column="background_type" jdbcType="INTEGER"/> <result property="backgroundType" column="background_type" jdbcType="INTEGER"/>
<result property="backgroundUrl" column="background_url" jdbcType="VARCHAR"/> <result property="backgroundUrl" column="background_url" jdbcType="VARCHAR"/>
<result property="columnTitleColor" column="column_title_color" jdbcType="VARCHAR"/>
<result property="columnTitleBg" column="column_title_bg" jdbcType="VARCHAR"/>
<result property="showPosition" column="show_position" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<!--查询单个--> <!--查询单个-->
<select id="getById" resultMap="ResourcePageColumnMap"> <select id="getById" resultMap="ResourcePageColumnMap">
select select
id, resource_page_id, column_type, column_name, column_format, column_seq, show_more,show_count, create_time, label_icon, navigation_id,background_type,background_url id, resource_page_id, column_type, column_name, column_format, column_seq, show_more,show_count, create_time, label_icon,
navigation_id,background_type,background_url,column_title_color, column_title_bg, show_position
from book.resource_page_column from book.resource_page_column
where id = #{id} where id = #{id}
</select> </select>
...@@ -46,9 +53,11 @@ ...@@ -46,9 +53,11 @@
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"> <insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into book.resource_page_column(resource_page_id, column_type, column_name, column_format, column_seq, insert into book.resource_page_column(resource_page_id, column_type, column_name, column_format, column_seq,
show_more, show_count, create_time, update_time, create_user, label_icon, navigation_id,background_type,background_url) show_more, show_count, create_time, update_time, create_user, label_icon, navigation_id,background_type,background_url
,column_title_color, column_title_bg, show_position)
values (#{resourcePageId}, #{columnType}, #{columnName}, #{columnFormat}, #{columnSeq}, values (#{resourcePageId}, #{columnType}, #{columnName}, #{columnFormat}, #{columnSeq},
#{showMore}, #{showCount}, now(), now(), #{createUser}, #{labelIcon}, #{navigationId},#{backgroundType}, #{backgroundUrl}) #{showMore}, #{showCount}, now(), now(), #{createUser}, #{labelIcon}, #{navigationId},#{backgroundType}, #{backgroundUrl},
#{columnTitleColor},#{columnTitleBg},#{showPosition})
</insert> </insert>
<!--通过主键修改数据--> <!--通过主键修改数据-->
...@@ -58,9 +67,9 @@ ...@@ -58,9 +67,9 @@
<if test="columnType != null"> <if test="columnType != null">
column_type = #{columnType}, column_type = #{columnType},
</if> </if>
<if test="columnName != null and columnName != ''"> <!-- <if test="columnName != null and columnName != ''">-->
column_name = #{columnName}, column_name = #{columnName},
</if> <!-- </if>-->
<if test="columnFormat != null"> <if test="columnFormat != null">
column_format = #{columnFormat}, column_format = #{columnFormat},
</if> </if>
...@@ -84,6 +93,15 @@ ...@@ -84,6 +93,15 @@
<if test="backgroundUrl != null"> <if test="backgroundUrl != null">
background_url = #{backgroundUrl}, background_url = #{backgroundUrl},
</if> </if>
<if test="columnTitleColor != null">
column_title_color = #{columnTitleColor},
</if>
<if test="columnTitleBg != null">
column_title_bg = #{columnTitleBg},
</if>
<if test="showPosition != null">
show_position = #{showPosition},
</if>
</set> </set>
where id = #{id} where id = #{id}
</update> </update>
...@@ -117,7 +135,10 @@ ...@@ -117,7 +135,10 @@
label_icon, label_icon,
navigation_id, navigation_id,
background_type, background_type,
background_url background_url,
column_title_color,
column_title_bg,
show_position
FROM FROM
resource_page_column resource_page_column
WHERE WHERE
...@@ -147,7 +168,8 @@ ...@@ -147,7 +168,8 @@
<select id="getByColumnTypeAndPage" parameterType="map" resultMap="ResourcePageColumnMap"> <select id="getByColumnTypeAndPage" parameterType="map" resultMap="ResourcePageColumnMap">
select select
id, resource_page_id, column_type, column_name, column_format, column_seq, show_more, show_count, create_time, navigation_id, background_type, background_url id, resource_page_id, column_type, column_name, column_format, column_seq, show_more, show_count, create_time, navigation_id, background_type, background_url,
column_title_color, column_title_bg, show_position
from book.resource_page_column from book.resource_page_column
where resource_page_id = #{resourcePageId} where resource_page_id = #{resourcePageId}
and column_type = #{columnType} and column_type = #{columnType}
...@@ -162,7 +184,8 @@ ...@@ -162,7 +184,8 @@
<select id="getColumByMoveType" parameterType="map" resultMap="ResourcePageColumnMap"> <select id="getColumByMoveType" parameterType="map" resultMap="ResourcePageColumnMap">
SELECT SELECT
id, resource_page_id, column_type, column_name, column_format, column_seq, show_more, show_count, create_time, navigation_id,background_type, background_url id, resource_page_id, column_type, column_name, column_format, column_seq, show_more, show_count, create_time, navigation_id,background_type, background_url,
column_title_color, column_title_bg, show_position
FROM FROM
book.resource_page_column book.resource_page_column
WHERE WHERE
...@@ -206,7 +229,8 @@ ...@@ -206,7 +229,8 @@
<select id="getByNavigation" resultMap="ResourcePageColumnMap" parameterType="long"> <select id="getByNavigation" resultMap="ResourcePageColumnMap" parameterType="long">
select select
id, resource_page_id, column_type, column_name, column_format, column_seq, show_more,show_count, create_time, label_icon, navigation_id, background_type, background_url id, resource_page_id, column_type, column_name, column_format, column_seq, show_more,show_count, create_time, label_icon, navigation_id, background_type, background_url,
column_title_color, column_title_bg, show_position
from book.resource_page_column from book.resource_page_column
where navigation_id = #{navigationId} where navigation_id = #{navigationId}
</select> </select>
......
...@@ -28,12 +28,14 @@ ...@@ -28,12 +28,14 @@
<result property="transparency" column="transparency" jdbcType="INTEGER"/> <result property="transparency" column="transparency" jdbcType="INTEGER"/>
<result property="navigationJumpType" column="navigation_jump_type" jdbcType="INTEGER"/> <result property="navigationJumpType" column="navigation_jump_type" jdbcType="INTEGER"/>
<result property="isShowPrice" column="is_show_price" jdbcType="TINYINT"/> <result property="isShowPrice" column="is_show_price" jdbcType="TINYINT"/>
<result property="bgColor" column="bg_color" jdbcType="VARCHAR"/>
<result property="switchConfig" column="switch_config" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, book_group_id, style, show_book, open_rays, open_food, create_time, update_time, create_user, qrcode_url, scene_id, official_scene_id, id, book_group_id, style, show_book, open_rays, open_food, create_time, update_time, create_user, qrcode_url, scene_id, official_scene_id,
book_cover, book_id, channel_id, background_img, navigation_color, navigation_format, font_color,watermark, watermark_style, landing_page_type book_cover, book_id, channel_id, background_img, navigation_color, navigation_format, font_color,watermark, watermark_style, landing_page_type
,transparency, navigation_jump_type, is_show_price ,transparency, navigation_jump_type, is_show_price, bg_color, switch_config
</sql> </sql>
<!--查询单个--> <!--查询单个-->
...@@ -48,9 +50,10 @@ ...@@ -48,9 +50,10 @@
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"> <insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into book.resource_page(book_group_id, style, show_book, open_rays, open_food, create_time, update_time, create_user, insert into book.resource_page(book_group_id, style, show_book, open_rays, open_food, create_time, update_time, create_user,
qrcode_url, scene_id, book_cover, book_id, channel_id, background_img, font_color, watermark, watermark_style, landing_page_type, transparency, navigation_jump_type) qrcode_url, scene_id, book_cover, book_id, channel_id, background_img, font_color, watermark, watermark_style, landing_page_type, transparency, navigation_jump_type, bg_color, switch_config)
values (#{bookGroupId}, #{style}, #{showBook}, #{openRays}, IFNULL(#{openFood},0), now(), now(), #{createUser}, #{qrcodeUrl}, #{sceneId}, #{bookCover}, values (#{bookGroupId}, #{style}, #{showBook}, #{openRays}, IFNULL(#{openFood},0), now(), now(), #{createUser}, #{qrcodeUrl}, #{sceneId}, #{bookCover},
#{bookId}, #{channelId}, #{backgroundImg}, #{fontColor}, #{watermark}, #{watermarkStyle}, IFNULL(#{landingPageType},1), IFNULL(#{transparency},0), IFNULL(#{navigationJumpType},1)) #{bookId}, #{channelId}, #{backgroundImg}, #{fontColor}, #{watermark}, #{watermarkStyle}, IFNULL(#{landingPageType},1), IFNULL(#{transparency},0), IFNULL(#{navigationJumpType},1), #{bgColor}
,#{switchConfig})
</insert> </insert>
<!--通过主键修改数据--> <!--通过主键修改数据-->
...@@ -84,12 +87,22 @@ ...@@ -84,12 +87,22 @@
<if test="channelId != null"> <if test="channelId != null">
channel_id = #{channelId}, channel_id = #{channelId},
</if> </if>
<if test="bookCover != null">
book_cover = #{bookCover}, book_cover = #{bookCover},
update_time = NOW(), </if>
update_time = NOW(),
<if test="backgroundImg != null">
background_img = #{backgroundImg}, background_img = #{backgroundImg},
</if>
<if test="fontColor != null">
font_color = #{fontColor}, font_color = #{fontColor},
watermark = #{watermark}, </if>
<if test="watermark != null">
watermark = #{watermark},
</if>
<if test="watermarkStyle != null">
watermark_style = #{watermarkStyle}, watermark_style = #{watermarkStyle},
</if>
<if test="landingPageType != null"> <if test="landingPageType != null">
landing_page_type = #{landingPageType}, landing_page_type = #{landingPageType},
</if> </if>
...@@ -102,6 +115,12 @@ ...@@ -102,6 +115,12 @@
<if test="isShowPrice != null"> <if test="isShowPrice != null">
is_show_price = #{isShowPrice}, is_show_price = #{isShowPrice},
</if> </if>
<if test="bgColor != null">
bg_color = #{bgColor},
</if>
<if test="switchConfig != null">
switch_config = #{switchConfig},
</if>
</set> </set>
where id = #{id} where id = #{id}
</update> </update>
...@@ -136,7 +155,9 @@ ...@@ -136,7 +155,9 @@
p.transparency, p.transparency,
p.navigation_jump_type, p.navigation_jump_type,
p.is_show_price, p.is_show_price,
p.landing_page_type p.landing_page_type,
p.bg_color,
p.switch_config
FROM FROM
resource_page p resource_page p
LEFT JOIN resource_page_item i ON p.id = i.resource_page_id LEFT JOIN resource_page_item i ON p.id = i.resource_page_id
...@@ -173,7 +194,7 @@ ...@@ -173,7 +194,7 @@
<select id="getPageByOfficialScene" parameterType="long" resultMap="ResourcePageMap"> <select id="getPageByOfficialScene" parameterType="long" resultMap="ResourcePageMap">
select select
id, book_group_id, style, show_book, open_rays, open_food, qrcode_url, scene_id, official_scene_id, book_cover,transparency id, book_group_id, style, show_book, open_rays, open_food, qrcode_url, scene_id, official_scene_id, book_cover,transparency,bg_color,switch_config
from book.resource_page from book.resource_page
where official_scene_id = #{officialSceneId} where official_scene_id = #{officialSceneId}
limit 1 limit 1
...@@ -215,7 +236,9 @@ ...@@ -215,7 +236,9 @@
p.scene_id, p.scene_id,
p.book_cover, p.book_cover,
p.official_scene_id, p.official_scene_id,
p.transparency p.transparency,
p.bg_color,
p.switch_config
FROM FROM
resource_page_column c resource_page_column c
LEFT JOIN resource_page p ON c.resource_page_id = p.id LEFT JOIN resource_page p ON c.resource_page_id = p.id
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.group.mapper.ResourcePageFolderItemMapper">
<resultMap id="BaseResultMap" type="com.pcloud.book.group.entity.ResourcePageFolderItem">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="folder_id" jdbcType="BIGINT" property="folderId"/>
<result column="resource_page_id" jdbcType="BIGINT" property="resourcePageId"/>
<result column="resource_page_column_id" jdbcType="BIGINT" property="resourcePageColumnId"/>
<result column="serve_id" jdbcType="BIGINT" property="serveId"/>
<result column="serve_type" jdbcType="VARCHAR" property="serveType"/>
<result column="link_url" jdbcType="VARCHAR" property="linkUrl"/>
<result column="type_code" jdbcType="VARCHAR" property="typeCode"/>
<result column="seq_num" jdbcType="INTEGER" property="seqNum"/>
<result column="is_show" jdbcType="INTEGER" property="isShow"/>
<result column="guide_content" jdbcType="VARCHAR" property="guideContent"/>
<result column="logo_url" jdbcType="VARCHAR" property="logoUrl"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="create_user" jdbcType="BIGINT" property="createUser"/>
<result column="qrcode_source" jdbcType="INTEGER" property="qrcodeSource"/>
<result column="qrcode_show_type" jdbcType="INTEGER" property="qrcodeShowType"/>
<result column="account_setting_id" jdbcType="BIGINT" property="accountSettingId"/>
<result column="self_big_pic" jdbcType="VARCHAR" property="selfBigPic"/>
<result column="self_small_pic" jdbcType="VARCHAR" property="selfSmallPic"/>
<result column="self_serve_name" jdbcType="VARCHAR" property="selfServeName"/>
</resultMap>
<resultMap id="resourcePageFolderItemVO" type="com.pcloud.book.group.vo.ResourcePageFolderItemVO" extends="BaseResultMap">
</resultMap>
<sql id="Base_Column_List">
id,
folder_id,
resource_page_column_id,
resource_page_id,
serve_id,
serve_type,
link_url,
type_code,
seq_num,
is_show,
guide_content,
logo_url,
create_time,
update_time,
create_user,
qrcode_source,
qrcode_show_type,
account_setting_id,
self_big_pic,
self_small_pic,
self_serve_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from resource_page_folder_item
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete
from resource_page_folder_item
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.group.entity.ResourcePageFolderItem"
useGeneratedKeys="true">
insert into resource_page_folder_item (folder_id, resource_page_id, resource_page_column_id, serve_id,
serve_type, link_url, type_code,
seq_num, is_show, guide_content,
logo_url, create_time, update_time,
create_user, qrcode_source, qrcode_show_type,
account_setting_id, self_big_pic, self_small_pic,
self_serve_name)
values (#{folderId,jdbcType=BIGINT}, #{resourcePageId,jdbcType=BIGINT}, #{resourcePageColumnId,jdbcType=BIGINT},
#{serveId,jdbcType=BIGINT},
#{serveType,jdbcType=VARCHAR}, #{linkUrl,jdbcType=VARCHAR}, #{typeCode,jdbcType=VARCHAR},
#{seqNum,jdbcType=INTEGER}, #{isShow,jdbcType=INTEGER}, #{guideContent,jdbcType=VARCHAR},
#{logoUrl,jdbcType=VARCHAR}, now(), now(),
#{createUser,jdbcType=BIGINT}, #{qrcodeSource,jdbcType=INTEGER}, #{qrcodeShowType,jdbcType=INTEGER},
#{accountSettingId,jdbcType=BIGINT}, #{selfBigPic,jdbcType=VARCHAR}, #{selfSmallPic,jdbcType=VARCHAR},
#{selfServeName,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.group.entity.ResourcePageFolderItem"
useGeneratedKeys="true">
insert into resource_page_folder_item
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="folderId != null">
folder_id,
</if>
<if test="resourcePageId != null">
resource_page_id,
</if>
<if test="resourcePageColumnId != null">
resource_page_column_id,
</if>
<if test="serveId != null">
serve_id,
</if>
<if test="serveType != null and serveType != ''">
serve_type,
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url,
</if>
<if test="typeCode != null and typeCode != ''">
type_code,
</if>
<if test="seqNum != null">
seq_num,
</if>
<if test="isShow != null">
is_show,
</if>
<if test="guideContent != null and guideContent != ''">
guide_content,
</if>
<if test="logoUrl != null and logoUrl != ''">
logo_url,
</if>
create_time,
update_time,
<if test="createUser != null">
create_user,
</if>
<if test="qrcodeSource != null">
qrcode_source,
</if>
<if test="qrcodeShowType != null">
qrcode_show_type,
</if>
<if test="accountSettingId != null">
account_setting_id,
</if>
<if test="selfBigPic != null and selfBigPic != ''">
self_big_pic,
</if>
<if test="selfSmallPic != null and selfSmallPic != ''">
self_small_pic,
</if>
<if test="selfServeName != null and selfServeName != ''">
self_serve_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="folderId != null">
#{folderId,jdbcType=BIGINT},
</if>
<if test="resourcePageId != null">
#{resourcePageId,jdbcType=BIGINT},
</if>
<if test="resourcePageColumnId != null">
#{resourcePageColumnId,jdbcType=BIGINT},
</if>
<if test="serveId != null">
#{serveId,jdbcType=BIGINT},
</if>
<if test="serveType != null and serveType != ''">
#{serveType,jdbcType=VARCHAR},
</if>
<if test="linkUrl != null and linkUrl != ''">
#{linkUrl,jdbcType=VARCHAR},
</if>
<if test="typeCode != null and typeCode != ''">
#{typeCode,jdbcType=VARCHAR},
</if>
<if test="seqNum != null">
#{seqNum,jdbcType=INTEGER},
</if>
<if test="isShow != null">
#{isShow,jdbcType=INTEGER},
</if>
<if test="guideContent != null and guideContent != ''">
#{guideContent,jdbcType=VARCHAR},
</if>
<if test="logoUrl != null and logoUrl != ''">
#{logoUrl,jdbcType=VARCHAR},
</if>
now(),
now(),
<if test="createUser != null">
#{createUser,jdbcType=BIGINT},
</if>
<if test="qrcodeSource != null">
#{qrcodeSource,jdbcType=INTEGER},
</if>
<if test="qrcodeShowType != null">
#{qrcodeShowType,jdbcType=INTEGER},
</if>
<if test="accountSettingId != null">
#{accountSettingId,jdbcType=BIGINT},
</if>
<if test="selfBigPic != null and selfBigPic != ''">
#{selfBigPic,jdbcType=VARCHAR},
</if>
<if test="selfSmallPic != null and selfSmallPic != ''">
#{selfSmallPic,jdbcType=VARCHAR},
</if>
<if test="selfServeName != null and selfServeName != ''">
#{selfServeName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pcloud.book.group.entity.ResourcePageFolderItem">
update resource_page_folder_item
<set>
<if test="folderId != null">
folder_id = #{folderId,jdbcType=BIGINT},
</if>
<if test="resourcePageId != null">
resource_page_id = #{resourcePageId,jdbcType=BIGINT},
</if>
<if test="resourcePageColumnId != null">
resource_page_column_id = #{resourcePageColumnId,jdbcType=BIGINT},
</if>
<if test="serveId != null">
serve_id = #{serveId,jdbcType=BIGINT},
</if>
<if test="serveType != null and serveType != ''">
serve_type = #{serveType,jdbcType=VARCHAR},
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url = #{linkUrl,jdbcType=VARCHAR},
</if>
<if test="typeCode != null and typeCode != ''">
type_code = #{typeCode,jdbcType=VARCHAR},
</if>
<if test="seqNum != null">
seq_num = #{seqNum,jdbcType=INTEGER},
</if>
<if test="isShow != null">
is_show = #{isShow,jdbcType=INTEGER},
</if>
<if test="guideContent != null and guideContent != ''">
guide_content = #{guideContent,jdbcType=VARCHAR},
</if>
<if test="logoUrl != null and logoUrl != ''">
logo_url = #{logoUrl,jdbcType=VARCHAR},
</if>
update_time = now(),
<if test="createUser != null">
create_user = #{createUser,jdbcType=BIGINT},
</if>
<if test="qrcodeSource != null">
qrcode_source = #{qrcodeSource,jdbcType=INTEGER},
</if>
<if test="qrcodeShowType != null">
qrcode_show_type = #{qrcodeShowType,jdbcType=INTEGER},
</if>
<if test="accountSettingId != null">
account_setting_id = #{accountSettingId,jdbcType=BIGINT},
</if>
<if test="selfBigPic != null and selfBigPic != ''">
self_big_pic = #{selfBigPic,jdbcType=VARCHAR},
</if>
<if test="selfSmallPic != null and selfSmallPic != ''">
self_small_pic = #{selfSmallPic,jdbcType=VARCHAR},
</if>
<if test="selfServeName != null and selfServeName != ''">
self_serve_name = #{selfServeName,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.pcloud.book.group.entity.ResourcePageFolderItem">
update resource_page_folder_item
set folder_id = #{folderId,jdbcType=BIGINT},
resource_page_id = #{resourcePageId,jdbcType=BIGINT},
resource_page_column_id = #{resourcePageColumnId,jdbcType=BIGINT},
serve_id = #{serveId,jdbcType=BIGINT},
serve_type = #{serveType,jdbcType=VARCHAR},
link_url = #{linkUrl,jdbcType=VARCHAR},
type_code = #{typeCode,jdbcType=VARCHAR},
seq_num = #{seqNum,jdbcType=INTEGER},
is_show = #{isShow,jdbcType=INTEGER},
guide_content = #{guideContent,jdbcType=VARCHAR},
logo_url = #{logoUrl,jdbcType=VARCHAR},
update_time = now(),
create_user = #{createUser,jdbcType=BIGINT},
qrcode_source = #{qrcodeSource,jdbcType=INTEGER},
qrcode_show_type = #{qrcodeShowType,jdbcType=INTEGER},
account_setting_id = #{accountSettingId,jdbcType=BIGINT},
self_big_pic = #{selfBigPic,jdbcType=VARCHAR},
self_small_pic = #{selfSmallPic,jdbcType=VARCHAR},
self_serve_name = #{selfServeName,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
<delete id="deleteByColumnIds">
delete
from resource_page_folder_item
where resource_page_column_id in
<foreach collection="columnIds" open="(" item="it" separator="," close=")">
#{it,jdbcType=BIGINT}
</foreach>
</delete>
<insert id="batchInsert">
insert into resource_page_folder_item (folder_id, resource_page_id, resource_page_column_id, serve_id,
serve_type, link_url, type_code,
seq_num, is_show, guide_content,
logo_url, create_time, update_time,
create_user, qrcode_source, qrcode_show_type,
account_setting_id, self_big_pic, self_small_pic,
self_serve_name)
values
<foreach collection="itemList" item="it" separator=",">
(#{it.folderId,jdbcType=BIGINT}, #{it.resourcePageId,jdbcType=BIGINT}, #{it.resourcePageColumnId,jdbcType=BIGINT},
#{it.serveId,jdbcType=BIGINT},
#{it.serveType,jdbcType=VARCHAR}, #{it.linkUrl,jdbcType=VARCHAR}, #{it.typeCode,jdbcType=VARCHAR},
#{it.seqNum,jdbcType=INTEGER}, #{it.isShow,jdbcType=INTEGER}, #{it.guideContent,jdbcType=VARCHAR},
#{it.logoUrl,jdbcType=VARCHAR}, now(), now(),
#{it.createUser,jdbcType=BIGINT}, #{it.qrcodeSource,jdbcType=INTEGER}, #{it.qrcodeShowType,jdbcType=INTEGER},
#{it.accountSettingId,jdbcType=BIGINT}, #{it.selfBigPic,jdbcType=VARCHAR}, #{it.selfSmallPic,jdbcType=VARCHAR},
#{it.selfServeName,jdbcType=VARCHAR})
</foreach>
</insert>
<select id="listByFolderIds" resultMap="resourcePageFolderItemVO">
select
<include refid="Base_Column_List"/>
from resource_page_folder_item
where folder_id in
<foreach collection="folderIds" open="(" item="it" separator="," close=")">
#{it,jdbcType=BIGINT}
</foreach>
</select>
<select id="getServeListBySceneId4QrUpdate" resultType="com.pcloud.book.group.vo.ResourcePageItemVO">
select rpfi.serve_id serveId,
rpfi.serve_type serveType,
rpfi.link_url linkUrl,
rp.create_user createUser,
rpfi.type_code typeCode,
rp.scene_id sceneId,
rp.id resourcePageId,
rpc.column_seq columnSeq,
rpf.seq_num folderNum,
rpfi.seq_num serveNum
from resource_page as rp
join resource_page_column rpc on rp.id = rpc.resource_page_id
join resource_page_folder rpf on rp.id = rpf.resource_page_id
join resource_page_folder_item rpfi on rp.id = rpfi.resource_page_id
where rp.scene_id = #{sceneId,jdbcType=BIGINT}
AND rpfi.serve_type IN ('APP', 'PRODUCT', 'MEMBER_ACTIVITY', 'RESOURCE')
GROUP BY rpfi.serve_id
ORDER BY columnSeq,
folderNum,
serveId
</select>
<select id="checkOneServeItemByPageId" resultType="com.pcloud.book.group.vo.ResourcePageItemVO">
SELECT
i.serve_id serveId,
i.serve_type serveType,
i.link_url linkUrl,
i.type_code typeCode,
i.create_user createUser,
i.resource_page_id resourcePageId
FROM
resource_page p
LEFT JOIN resource_page_folder_item i ON i.resource_page_id = p.id
WHERE
resource_page_id = #{resourcePageId,jdbcType=BIGINT}
<if test="ignoreRays">
AND p.open_rays = 0
</if>
HAVING
COUNT( i.id ) = 1
AND i.serve_type IN ( "APP", "PRODUCT", "RESOURCE" )
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.group.mapper.ResourcePageFolderMapper">
<resultMap id="BaseResultMap" type="com.pcloud.book.group.entity.ResourcePageFolder">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="resource_page_id" jdbcType="BIGINT" property="resourcePageId"/>
<result column="resource_page_column_id" jdbcType="BIGINT" property="resourcePageColumnId"/>
<result column="title" jdbcType="VARCHAR" property="title"/>
<result column="sub_title" jdbcType="VARCHAR" property="subTitle"/>
<result column="icon" jdbcType="VARCHAR" property="icon"/>
<result column="jump_type" jdbcType="TINYINT" property="jumpType"/>
<result column="link_url" jdbcType="VARCHAR" property="linkUrl"/>
<result column="seq_num" jdbcType="INTEGER" property="seqNum"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="create_user" jdbcType="BIGINT" property="createUser"/>
</resultMap>
<resultMap id="resourcePageFolderVO" type="com.pcloud.book.group.vo.ResourcePageFolderVO" extends="BaseResultMap">
</resultMap>
<sql id="Base_Column_List">
id,
resource_page_id,
resource_page_column_id,
title,
sub_title,
icon,
jump_type,
link_url,
seq_num,
create_time,
update_time,
create_user
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from resource_page_folder
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete
from resource_page_folder
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.group.entity.ResourcePageFolder"
useGeneratedKeys="true">
insert into resource_page_folder (resource_page_id, resource_page_column_id,
title, sub_title, icon, jump_type,
link_url, seq_num, create_time,
update_time, create_user)
values (#{resourcePageId,jdbcType=BIGINT}, #{resourcePageColumnId,jdbcType=BIGINT},
#{title,jdbcType=VARCHAR}, #{subTitle,jdbcType=VARCHAR}, #{icon,jdbcType=VARCHAR}, #{jumpType,jdbcType=TINYINT},
#{linkUrl,jdbcType=VARCHAR}, #{seqNum,jdbcType=INTEGER}, now(),
now(), #{createUser,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.group.entity.ResourcePageFolder"
useGeneratedKeys="true">
insert into resource_page_folder
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="resourcePageId != null">
resource_page_id,
</if>
<if test="resourcePageColumnId != null">
resource_page_column_id,
</if>
<if test="title != null and title != ''">
title,
</if>
<if test="subTitle != null and subTitle != ''">
sub_title,
</if>
<if test="icon != null and icon != ''">
icon,
</if>
<if test="jumpType != null">
jump_type,
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url,
</if>
<if test="seqNum != null">
seq_num,
</if>
create_time,
update_time,
<if test="createUser != null">
create_user,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="resourcePageId != null">
#{resourcePageId,jdbcType=BIGINT},
</if>
<if test="resourcePageColumnId != null">
#{resourcePageColumnId,jdbcType=BIGINT},
</if>
<if test="title != null and title != ''">
#{title,jdbcType=VARCHAR},
</if>
<if test="subTitle != null and subTitle != ''">
#{subTitle,jdbcType=VARCHAR},
</if>
<if test="icon != null and icon != ''">
#{icon,jdbcType=VARCHAR},
</if>
<if test="jumpType != null">
#{jumpType,jdbcType=TINYINT},
</if>
<if test="linkUrl != null and linkUrl != ''">
#{linkUrl,jdbcType=VARCHAR},
</if>
<if test="seqNum != null">
#{seqNum,jdbcType=INTEGER},
</if>
now(),
now(),
<if test="createUser != null">
#{createUser,jdbcType=BIGINT},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pcloud.book.group.entity.ResourcePageFolder">
update resource_page_folder
<set>
<if test="resourcePageId != null">
resource_page_id = #{resourcePageId,jdbcType=BIGINT},
</if>
<if test="resourcePageColumnId != null">
resource_page_column_id = #{resourcePageColumnId,jdbcType=BIGINT},
</if>
<if test="title != null and title != ''">
title = #{title,jdbcType=VARCHAR},
</if>
<if test="subTitle != null and subTitle != ''">
sub_title = #{subTitle,jdbcType=VARCHAR},
</if>
<if test="icon != null and icon != ''">
sub_title = #{icon,jdbcType=VARCHAR},
</if>
<if test="jumpType != null">
jump_type = #{jumpType,jdbcType=TINYINT},
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url = #{linkUrl,jdbcType=VARCHAR},
</if>
<if test="seqNum != null">
seq_num = #{seqNum,jdbcType=INTEGER},
</if>
update_time = now(),
<if test="createUser != null">
create_user = #{createUser,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.pcloud.book.group.entity.ResourcePageFolder">
update resource_page_folder
set resource_page_id = #{resourcePageId,jdbcType=BIGINT},
resource_page_column_id = #{resourcePageColumnId,jdbcType=BIGINT},
title = #{title,jdbcType=VARCHAR},
sub_title = #{subTitle,jdbcType=VARCHAR},
icon = #{icon,jdbcType=VARCHAR},
jump_type = #{jumpType,jdbcType=TINYINT},
link_url = #{linkUrl,jdbcType=VARCHAR},
seq_num = #{seqNum,jdbcType=INTEGER},
update_time = now(),
create_user = #{createUser,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT}
</update>
<delete id="deleteByColumnIds">
delete
from resource_page_folder
where resource_page_column_id in
<foreach collection="columnIds" open="(" item="it" separator="," close=")">
#{it,jdbcType=BIGINT}
</foreach>
</delete>
<select id="selectByPrimaryKeys" resultMap="resourcePageFolderVO">
select
<include refid="Base_Column_List"/>
from resource_page_folder
where id in
<foreach collection="ids" open="(" item="it" separator="," close=")">
#{it,jdbcType=BIGINT}
</foreach>
</select>
</mapper>
\ No newline at end of file
...@@ -436,7 +436,8 @@ ...@@ -436,7 +436,8 @@
p.create_user createUser, p.create_user createUser,
i.type_code typeCode, i.type_code typeCode,
p.scene_id sceneId, p.scene_id sceneId,
i.resource_page_id resourcePageId i.resource_page_id resourcePageId,
c.column_seq columnSeq
FROM FROM
resource_page_item i resource_page_item i
LEFT JOIN resource_page p ON i.resource_page_id = p.id LEFT JOIN resource_page p ON i.resource_page_id = p.id
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.group.mapper.ResourcePageMarketingActivityMapper">
<resultMap id="BaseResultMap" type="com.pcloud.book.group.entity.ResourcePageMarketingActivity">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="resource_page_id" jdbcType="BIGINT" property="resourcePageId"/>
<result column="type" jdbcType="TINYINT" property="type"/>
<result column="content" jdbcType="VARCHAR" property="content"/>
<result column="img" jdbcType="VARCHAR" property="img"/>
<result column="serve_id" jdbcType="BIGINT" property="serveId"/>
<result column="serve_type" jdbcType="VARCHAR" property="serveType"/>
<result column="link_url" jdbcType="VARCHAR" property="linkUrl"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="create_user" jdbcType="BIGINT" property="createUser"/>
</resultMap>
<resultMap id="resourcePageMarketingActivityVO" type="com.pcloud.book.group.vo.ResourcePageMarketingActivityVO" extends="BaseResultMap">
</resultMap>
<sql id="Base_Column_List">
id,
resource_page_id,
`type`,
content,
img,
serve_id,
serve_type,
link_url,
create_time,
update_time,
create_user
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from resource_page_marketing_activity
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete
from resource_page_marketing_activity
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.pcloud.book.group.entity.ResourcePageMarketingActivity">
insert into resource_page_marketing_activity (id, resource_page_id, `type`,
content, img, serve_id,
serve_type, link_url, create_time,
update_time, create_user)
values (#{id,jdbcType=BIGINT}, #{resourcePageId,jdbcType=BIGINT}, #{type,jdbcType=TINYINT},
#{content,jdbcType=VARCHAR}, #{img,jdbcType=VARCHAR}, #{serveId,jdbcType=BIGINT},
#{serveType,jdbcType=VARCHAR}, #{linkUrl,jdbcType=VARCHAR}, now(),
now(), #{createUser,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="com.pcloud.book.group.entity.ResourcePageMarketingActivity">
insert into resource_page_marketing_activity
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="resourcePageId != null">
resource_page_id,
</if>
<if test="type != null">
`type`,
</if>
<if test="content != null and content != ''">
content,
</if>
<if test="img != null and img != ''">
img,
</if>
<if test="serveId != null">
serve_id,
</if>
<if test="serveType != null and serveType != ''">
serve_type,
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url,
</if>
create_time,
update_time,
<if test="createUser != null">
create_user,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="resourcePageId != null">
#{resourcePageId,jdbcType=BIGINT},
</if>
<if test="type != null">
#{type,jdbcType=TINYINT},
</if>
<if test="content != null and content != ''">
#{content,jdbcType=VARCHAR},
</if>
<if test="img != null and img != ''">
#{img,jdbcType=VARCHAR},
</if>
<if test="serveId != null">
#{serveId,jdbcType=BIGINT},
</if>
<if test="serveType != null and serveType != ''">
#{serveType,jdbcType=VARCHAR},
</if>
<if test="linkUrl != null and linkUrl != ''">
#{linkUrl,jdbcType=VARCHAR},
</if>
now(),
now(),
<if test="createUser != null">
#{createUser,jdbcType=BIGINT},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pcloud.book.group.entity.ResourcePageMarketingActivity">
update resource_page_marketing_activity
<set>
<if test="resourcePageId != null">
resource_page_id = #{resourcePageId,jdbcType=BIGINT},
</if>
<if test="type != null">
`type` = #{type,jdbcType=TINYINT},
</if>
<if test="content != null and content != ''">
content = #{content,jdbcType=VARCHAR},
</if>
<if test="img != null and img != ''">
img = #{img,jdbcType=VARCHAR},
</if>
<if test="serveId != null">
serve_id = #{serveId,jdbcType=BIGINT},
</if>
<if test="serveType != null and serveType != ''">
serve_type = #{serveType,jdbcType=VARCHAR},
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url = #{linkUrl,jdbcType=VARCHAR},
</if>
update_time = now(),
<if test="createUser != null">
create_user = #{createUser,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.pcloud.book.group.entity.ResourcePageMarketingActivity">
update resource_page_marketing_activity
set resource_page_id = #{resourcePageId,jdbcType=BIGINT},
`type` = #{type,jdbcType=TINYINT},
content = #{content,jdbcType=VARCHAR},
img = #{img,jdbcType=VARCHAR},
serve_id = #{serveId,jdbcType=BIGINT},
serve_type = #{serveType,jdbcType=VARCHAR},
link_url = #{linkUrl,jdbcType=VARCHAR},
update_time = now(),
create_user = #{createUser,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT}
</update>
<insert id="batchInsert">
insert into resource_page_marketing_activity (id, resource_page_id, `type`,
content, img, serve_id,
serve_type, link_url, create_time,
update_time, create_user)
values
<foreach collection="records" separator="," item="it">
(#{it.id,jdbcType=BIGINT}, #{it.resourcePageId,jdbcType=BIGINT}, #{it.type,jdbcType=TINYINT},
#{it.content,jdbcType=VARCHAR}, #{it.img,jdbcType=VARCHAR}, #{it.serveId,jdbcType=BIGINT},
#{it.serveType,jdbcType=VARCHAR}, #{it.linkUrl,jdbcType=VARCHAR}, now(),
now(), #{it.createUser,jdbcType=BIGINT})
</foreach>
</insert>
<delete id="deleteByResourcePageId">
delete
from resource_page_marketing_activity
where resource_page_id = #{resourcePageId,jdbcType=BIGINT}
</delete>
<select id="listByResourcePageId" resultMap="resourcePageMarketingActivityVO">
select
<include refid="Base_Column_List"/>
from resource_page_marketing_activity
where resource_page_id = #{resourcePageId,jdbcType=BIGINT}
</select>
</mapper>
\ No newline at end of file
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