Commit 0f0353c3 by 田超

Merge branch 'fixbug/fetchBookListByScanCount' into 'master'

bug: [none] 补充立享权益数量,过滤不适合在小程序展示的资源数量

See merge request rays/pcloud-book!1175
parents c8752044 2393a8cd
......@@ -127,6 +127,8 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.book.rightsSetting.constants.RightsSettingConstant;
import com.pcloud.book.rightsSetting.dao.RightsNowItemDao;
import com.pcloud.book.rightsSetting.dao.RightsSettingItemDao;
import com.pcloud.book.rightsSetting.mapper.RightsSettingBookRelationMapper;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.book.util.common.YesOrNoEnums;
......@@ -325,6 +327,8 @@ public class BookBizImpl implements BookBiz {
private EdtionRecordDao edtionRecordDao;
@Autowired
private BookTypeDao bookTypeDao;
@Autowired
private RightsNowItemDao rightsNowItemDao;
/**
* 创建书籍,同时建立与编辑的推广关系
......@@ -3981,7 +3985,7 @@ public class BookBizImpl implements BookBiz {
// 查询图书信息
CompletableFuture<List<BookInfo4ScanCount>> bookInfoFuture = CompletableFuture.supplyAsync(() -> Optional.ofNullable(bookAdviserDao.listBookInfo4ScanCount(adviserIds, channelIds, bookIds)).orElse(new ArrayList<>()));
// 补充资源数量 - 平台端相关配置
// 补充资源数量 - 平台端相关配置 part1. 非立享权益
Map<String, BookResourceNumDTO> pcloudResourceNumMap = new HashMap<>();
CompletableFuture<Void> pcloudResourceNumFuture = CompletableFuture.runAsync(() -> {
List<BookResourceNumDTO> list = rightsSettingBookRelationMapper.listReousrceNum4Book(adviserIds, channelIds, bookIds);
......@@ -3991,6 +3995,15 @@ public class BookBizImpl implements BookBiz {
pcloudResourceNumMap.putAll(map);
});
// 补充资源数量 - 平台端相关配置 part2. 立享权益
Map<String, BookResourceNumDTO> pcloudResource4NowNumMap = new HashMap<>();
CompletableFuture<Void> pcloudResource4NowNumFuture = CompletableFuture.runAsync(() -> {
List<BookResourceNumDTO> list = rightsNowItemDao.listResourceNum4AdviserBook(adviserIds, channelIds, bookIds);
Map<String, BookResourceNumDTO> map = Optional.ofNullable(list).map(x -> x.stream().collect(
Collectors.toMap(book -> book.getBookId() + "-" + book.getAdviserId() + "-" + book.getChannelId(), Function.identity())))
.orElse(new HashMap<>());
pcloudResource4NowNumMap.putAll(map);
});
// 补充资源数量 - 编辑端相关配置 part1. 渠道获取数据
Map<String, AdviserBookResourceNumRespDTO> adviserResourceNum4ChannelMap = new HashMap<>();
......@@ -4013,7 +4026,7 @@ public class BookBizImpl implements BookBiz {
});
// 资源数量任务组
CompletableFuture<Void> resourceNumGroupFuture = CompletableFuture.allOf(pcloudResourceNumFuture, adviserResourceNum4ChannelFuture, adviserResourceNum4BookFuture);
CompletableFuture<Void> resourceNumGroupFuture = CompletableFuture.allOf(pcloudResourceNumFuture, adviserResourceNum4ChannelFuture, adviserResourceNum4BookFuture, pcloudResource4NowNumFuture);
// 等待结果返回
try {
......@@ -4086,11 +4099,12 @@ public class BookBizImpl implements BookBiz {
if (Objects.isNull(erpBookApprovalDTO) || Objects.isNull(erpBookApprovalDTO.getIsApproval())) {
book.setIsApproval(1);
}
// 配置资源数 = 平台端配置资源数 + 渠道来源的编辑端配置资源数 + 图书来源的编辑端配置资源数
// 配置资源数 = 平台端配置非立享权益资源数 + 平台端配置立享权益资源数 + 渠道来源的编辑端配置资源数 + 图书来源的编辑端配置资源数
book.setResourceNum(
Optional.ofNullable(pcloudResourceNumMap).map(x -> x.get(key)).map(BookResourceNumDTO::getResourceNum).orElse(0) +
Optional.ofNullable(adviserResourceNum4ChannelMap).map(x -> x.get(key)).map(AdviserBookResourceNumRespDTO::getResourceNum).orElse(0) +
Optional.ofNullable(adviserResourceNum4BookMap).map(x -> x.get(key)).map(BookResourceNumDTO::getResourceNum).orElse(0)
Optional.of(pcloudResourceNumMap).map(x -> x.get(key)).map(BookResourceNumDTO::getResourceNum).orElse(0) +
Optional.of(pcloudResource4NowNumMap).map(x -> x.get(key)).map(BookResourceNumDTO::getResourceNum).orElse(0) +
Optional.of(adviserResourceNum4ChannelMap).map(x -> x.get(key)).map(AdviserBookResourceNumRespDTO::getResourceNum).orElse(0) +
Optional.of(adviserResourceNum4BookMap).map(x -> x.get(key)).map(BookResourceNumDTO::getResourceNum).orElse(0)
);
}
return bookInfo4ScanCounts;
......
package com.pcloud.book.rightsSetting.dao;
import com.pcloud.book.book.vo.BookResourceNumDTO;
import com.pcloud.book.rightsSetting.entity.RightsNowItem;
import com.pcloud.common.core.dao.BaseDao;
......@@ -72,4 +73,6 @@ public interface RightsNowItemDao extends BaseDao<RightsNowItem> {
* @param packageIds
*/
void deletePackageIds(List<Long> packageIds);
List<BookResourceNumDTO> listResourceNum4AdviserBook(List<Long> adviserIds, List<Long> channelIds, List<Long> bookIds);
}
package com.pcloud.book.rightsSetting.dao.impl;
import cn.hutool.core.map.MapUtil;
import com.pcloud.book.book.vo.BookResourceNumDTO;
import com.pcloud.book.rightsSetting.dao.RightsNowItemDao;
import com.pcloud.book.rightsSetting.entity.RightsNowItem;
import com.pcloud.common.core.dao.BaseDaoImpl;
......@@ -110,4 +112,14 @@ public class RightsNowItemDaoImpl extends BaseDaoImpl<RightsNowItem> implements
public void deletePackageIds(List<Long> packageIds) {
getSessionTemplate().delete(getStatement("deletePackageIds"), packageIds);
}
@Override
public List<BookResourceNumDTO> listResourceNum4AdviserBook(List<Long> adviserIds, List<Long> channelIds, List<Long> bookIds) {
HashMap<String, List<Long>> param = MapUtil.of("adviserIds", adviserIds);
param.put("channelIds", channelIds);
param.put("bookIds", bookIds);
return getSessionTemplate().selectList(getStatement("listResourceNum4AdviserBook"), param);
}
}
......@@ -317,4 +317,26 @@
#{item}
</foreach>
</delete>
<select id="listResourceNum4AdviserBook" parameterType="map" resultType="com.pcloud.book.book.vo.BookResourceNumDTO">
select count(concat(serve_type, serve_id)) resourceNum,
b.adviser_id adviserId,
b.book_id bookId,
b.channel_id channelId
from rights_now_item a
left join rights_setting_book_relation b on a.rights_setting_id = b.rights_setting_id
where book_id in
<foreach collection="bookIds" separator="," item="item" close=")" open="(">
${item}
</foreach>
and adviser_id in
<foreach collection="adviserIds" separator="," item="item" close=")" open="(">
${item}
</foreach>
and channel_id in
<foreach collection="channelIds" separator="," item="item" close=")" open="(">
${item}
</foreach>
group by adviserId, bookId, channelId
</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