Commit ecc97bbd by 桂前礼 Committed by 桂前礼

feat: [1004767] 编辑运营优化需求-精品文章-视频课-资源目录-配套听力

parent 1f5835d0
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("RAYS码资源目录")
public class RaysSceneCatalogDto {
@ApiModelProperty("二维码ID")
private Long sceneId;
@ApiModelProperty("资源ID")
private Long serveId;
@ApiModelProperty("应用 | 作品")
private String serveType;
@ApiModelProperty("资源类型")
private String typeCode;
@ApiModelProperty("资源跳转地址")
private String url;
}
package com.pcloud.book.book.service; package com.pcloud.book.book.service;
import com.pcloud.book.book.dto.BookResourceDto; import com.pcloud.book.book.dto.BookResourceDto;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -8,6 +9,8 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -8,6 +9,8 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -53,4 +56,8 @@ public interface BookResourceService { ...@@ -53,4 +56,8 @@ public interface BookResourceService {
@RequestMapping(value = "/getSceneIdsByResourceId", method = RequestMethod.GET) @RequestMapping(value = "/getSceneIdsByResourceId", method = RequestMethod.GET)
public ResponseEntity<ResponseDto<List<Long>>> getSceneIdsByResourceId(@RequestParam("resourceId") Long resourceId); public ResponseEntity<ResponseDto<List<Long>>> getSceneIdsByResourceId(@RequestParam("resourceId") Long resourceId);
@ApiOperation(value = "获取符合开启资源目录的RAYS码ID列表")
@PostMapping(value = "/listRaysSceneCatalogDto")
ResponseEntity<ResponseDto<List<RaysSceneCatalogDto>>> listRaysSceneCatalogDto(@RequestBody List<Long> sceneIds);
} }
package com.pcloud.book.book.service.impl; package com.pcloud.book.book.service.impl;
import java.util.List; import cn.hutool.core.collection.CollUtil;
import com.pcloud.book.book.biz.BookResourceBiz;
import com.pcloud.book.book.dto.BookResourceDto;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.book.book.service.BookResourceService;
import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ResponseHandleUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.pcloud.book.book.biz.BookResourceBiz; import java.util.ArrayList;
import com.pcloud.book.book.dto.BookResourceDto; import java.util.List;
import com.pcloud.book.book.service.BookResourceService;
import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ResponseHandleUtil;
/** /**
* 图书资源 * 图书资源
...@@ -62,4 +66,11 @@ public class BookResourceServiceImpl implements BookResourceService { ...@@ -62,4 +66,11 @@ public class BookResourceServiceImpl implements BookResourceService {
public ResponseEntity<ResponseDto<List<Long>>> getSceneIdsByResourceId(@RequestParam("resourceId") Long resourceId) { public ResponseEntity<ResponseDto<List<Long>>> getSceneIdsByResourceId(@RequestParam("resourceId") Long resourceId) {
return ResponseHandleUtil.toResponse(resourcePageBiz.getSceneIdsByResourceId(resourceId)); return ResponseHandleUtil.toResponse(resourcePageBiz.getSceneIdsByResourceId(resourceId));
} }
@Override
@PostMapping(value = "/listRaysSceneCatalogDto")
public ResponseEntity<ResponseDto<List<RaysSceneCatalogDto>>> listRaysSceneCatalogDto(@RequestBody List<Long> sceneIds) {
if (CollUtil.isEmpty(sceneIds)) return ResponseHandleUtil.toResponse(new ArrayList<>());
return ResponseHandleUtil.toResponse(resourcePageBiz.listRaysSceneCatalogDto(sceneIds));
}
} }
...@@ -2007,6 +2007,7 @@ public class BookSet { ...@@ -2007,6 +2007,7 @@ public class BookSet {
public void setBookCatalogInfo(List<Object> recordList, Long adviserId) { public void setBookCatalogInfo(List<Object> recordList, Long adviserId) {
List<Long> bookIds = BookTools.listBookIds(recordList); List<Long> bookIds = BookTools.listBookIds(recordList);
Map<String, Book4CatalogDTO> catalogDTOMap = channelConsr.mapCatalogBook(bookIds, adviserId); Map<String, Book4CatalogDTO> catalogDTOMap = channelConsr.mapCatalogBook(bookIds, adviserId);
for (Object obj : recordList) { for (Object obj : recordList) {
BookDto bookDto = (BookDto) obj; BookDto bookDto = (BookDto) obj;
Boolean openCatalogPermission = false; Boolean openCatalogPermission = false;
...@@ -2015,8 +2016,8 @@ public class BookSet { ...@@ -2015,8 +2016,8 @@ public class BookSet {
if (!MapUtils.isEmpty(catalogDTOMap) && catalogDTOMap.containsKey(key)) { if (!MapUtils.isEmpty(catalogDTOMap) && catalogDTOMap.containsKey(key)) {
openCatalogPermission = true; openCatalogPermission = true;
} }
bookDto.setOpenCatalogPermission(openCatalogPermission);
} }
bookDto.setOpenCatalogPermission(openCatalogPermission);
} }
LOGGER.info("设置书刊资源目录按钮展示【END】"); LOGGER.info("设置书刊资源目录按钮展示【END】");
} }
......
...@@ -340,4 +340,16 @@ public class ChannelConsr { ...@@ -340,4 +340,16 @@ public class ChannelConsr {
} }
return new HashMap<>(); return new HashMap<>();
} }
public List<String> getCatalog4SceneIds(List<Long> sceneIds) {
if (CollUtil.isEmpty(sceneIds)) {
return new ArrayList<>();
}
try {
return ResponseHandleUtil.parseList(qrcodeSceneService.getCatalog4SceneIds(sceneIds), String.class);
} catch (Exception e) {
LOGGER.error("查询符合资源目录RAYS码[qrcodeSceneService.getCatalog4SceneIds]失败" + e.getMessage(), e);
return new ArrayList<>();
}
}
} }
package com.pcloud.book.group.biz; package com.pcloud.book.group.biz;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.book.group.dto.AddBookGroupServeDTO; import com.pcloud.book.group.dto.AddBookGroupServeDTO;
import com.pcloud.book.group.dto.BookGroupServeDTO; import com.pcloud.book.group.dto.BookGroupServeDTO;
import com.pcloud.book.group.dto.BookServeDTO; import com.pcloud.book.group.dto.BookServeDTO;
...@@ -321,4 +322,11 @@ public interface ResourcePageBiz { ...@@ -321,4 +322,11 @@ public interface ResourcePageBiz {
* * @param null * * @param null
*/ */
Boolean isOpenRaysScene(Long sceneId, Long bookGroupId); Boolean isOpenRaysScene(Long sceneId, Long bookGroupId);
/**
* 筛选展示开启资源目录展示的图书
*/
List<String> mapCatalogBook(List<Long> bookIds, Long adviserId);
List<RaysSceneCatalogDto> listRaysSceneCatalogDto(List<Long> sceneIds);
} }
...@@ -17,6 +17,7 @@ import com.pcloud.book.applet.entity.AppletThirdResources; ...@@ -17,6 +17,7 @@ import com.pcloud.book.applet.entity.AppletThirdResources;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.book.book.vo.BookLinkVO; import com.pcloud.book.book.vo.BookLinkVO;
import com.pcloud.book.consumer.advsertising.AdvertisingConsr; import com.pcloud.book.consumer.advsertising.AdvertisingConsr;
import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr; import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
...@@ -108,8 +109,7 @@ import java.util.Date; ...@@ -108,8 +109,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
...@@ -1652,4 +1652,19 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1652,4 +1652,19 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
Integer openRays = null == resourcePage ? 0 : resourcePage.getOpenRays(); Integer openRays = null == resourcePage ? 0 : resourcePage.getOpenRays();
return openRays > 0 ? true : false; return openRays > 0 ? true : false;
} }
@Override
public List<String> mapCatalogBook(List<Long> bookIds, Long adviserId) {
List<Long> sceneIds = bookGroupDao.mapCatalogBook(bookIds,adviserId);
if (CollUtil.isEmpty(sceneIds)) {
return new ArrayList<>();
}
return channelConsr.getCatalog4SceneIds(sceneIds);
}
@Override
public List<RaysSceneCatalogDto> listRaysSceneCatalogDto(List<Long> sceneIds) {
return Optional.ofNullable(bookGroupDao.listRaysSceneCatalogDto(sceneIds)).orElse(new ArrayList<>());
}
} }
package com.pcloud.book.group.dao; package com.pcloud.book.group.dao;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.book.group.dto.AgentStatisticsInfoDTO; import com.pcloud.book.group.dto.AgentStatisticsInfoDTO;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO; import com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO;
...@@ -396,4 +397,8 @@ public interface BookGroupDao extends BaseDao<BookGroup> { ...@@ -396,4 +397,8 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
List<ServeIdTypeDTO> listServeIdAndType4Book(Long bookId, Long channelId, Long adviserId); List<ServeIdTypeDTO> listServeIdAndType4Book(Long bookId, Long channelId, Long adviserId);
void updateBookGroupSeq(Long bookGroupId, Integer seq); void updateBookGroupSeq(Long bookGroupId, Integer seq);
List<Long> mapCatalogBook(List<Long> bookIds, Long adviserId);
List<RaysSceneCatalogDto> listRaysSceneCatalogDto(List<Long> sceneIds);
} }
package com.pcloud.book.group.dao.impl; package com.pcloud.book.group.dao.impl;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.book.group.dao.BookGroupDao; import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.AgentStatisticsInfoDTO; import com.pcloud.book.group.dto.AgentStatisticsInfoDTO;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
...@@ -12,10 +13,9 @@ import com.pcloud.book.group.dto.TopAgentBookGroupDTO; ...@@ -12,10 +13,9 @@ import com.pcloud.book.group.dto.TopAgentBookGroupDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.QrChangeRecord; import com.pcloud.book.group.entity.QrChangeRecord;
import com.pcloud.book.group.vo.BookGroupAnalysisVO; import com.pcloud.book.group.vo.BookGroupAnalysisVO;
import com.pcloud.channelcenter.qrcode.vo.BookQrcodeVO;
import com.pcloud.book.rightsSetting.dto.ServeIdTypeDTO; import com.pcloud.book.rightsSetting.dto.ServeIdTypeDTO;
import com.pcloud.channelcenter.qrcode.vo.BookQrcodeVO;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.ListForInSQL; import com.pcloud.common.utils.ListForInSQL;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -557,4 +557,16 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou ...@@ -557,4 +557,16 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
paramMap.put("seq", seq); paramMap.put("seq", seq);
getSessionTemplate().update(getStatement("updateBookGroupSeq"), paramMap); getSessionTemplate().update(getStatement("updateBookGroupSeq"), paramMap);
} }
@Override
public List<Long> mapCatalogBook(List<Long> bookIds, Long adviserId) {
Map<String, Object> paramMap = MapUtil.of("bookIds", bookIds);
paramMap.put("adviserId", adviserId);
return getSessionTemplate().selectList(getStatement("mapCatalogBook"), paramMap);
}
@Override
public List<RaysSceneCatalogDto> listRaysSceneCatalogDto(List<Long> sceneIds) {
return getSessionTemplate().selectList(getStatement("listRaysSceneCatalogDto"), MapUtil.of("sceneIds", sceneIds));
}
} }
...@@ -1383,4 +1383,37 @@ ...@@ -1383,4 +1383,37 @@
WHERE WHERE
id = #{id} id = #{id}
</update> </update>
<select id="mapCatalogBook" resultType="long" parameterType="map">
SELECT
m.scene_id
FROM
( SELECT
b.scene_id, count( c.id ) cnt
FROM
book_group a
JOIN resource_page b ON a.id = b.book_group_id
JOIN resource_page_item c ON b.id = c.resource_page_id
WHERE c.serve_type IN ('APP', 'PRODUCT') AND b.scene_id is NOT NULL
AND a.create_user = ${adviserId} AND a.is_delete = 0 AND a.book_id IN <foreach collection="bookIds" open="(" item="it" separator="," close=")"> #{it}</foreach>
GROUP BY scene_id HAVING cnt = 1
) m
</select>
<select id="listRaysSceneCatalogDto" resultType="com.pcloud.book.book.dto.RaysSceneCatalogDto" parameterType="map">
SELECT
a.scene_id sceneId,
b.serve_id serveId,
b.serve_type serveType,
b.type_code typeCode,
b.link_url url
FROM
resource_page a
JOIN resource_page_item b ON a.id = b.resource_page_id
WHERE a.scene_id IN <foreach collection="sceneIds" open="(" item="it" separator="," close=")"> ${it} </foreach>
GROUP BY
a.scene_id
HAVING
count( b.id ) =1
</select>
</mapper> </mapper>
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