Commit ccb848d0 by 田超

Merge branch 'feature/1004458-01' into 'master'

feat: [1004458] H5资源落地页

See merge request rays/pcloud-book!1269
parents 26b29549 86bf2eba
......@@ -73,6 +73,7 @@ import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.dao.BookAppletSceneDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.BookGroupServeDao;
import com.pcloud.book.group.dao.ResourcePageItemDao;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO;
......@@ -248,6 +249,8 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
private BookLabelBiz bookLabelBiz;
@Autowired
private BookGroupServeDao bookGroupServeDao;
@Autowired
private ResourcePageItemDao resourcePageItemDao;
@Override
public List<BookDto> listByAdviserId(Long adviserId) {
......@@ -2916,7 +2919,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
// 填充配置的服务信息
// 查询 book_group_serve
CompletableFuture<List<BookGroupServe>> bookGroupServeFuture = CompletableFuture.completedFuture(
Optional.ofNullable(bookGroupServeDao.getListByBookGroupIds(bookGroupIds)).orElse(new ArrayList<>()));
Optional.ofNullable(resourcePageItemDao.getServeListByBookGroupIds(bookGroupIds)).orElse(new ArrayList<>()));
// 查询 book_group_serve 作品信息
// 查询作品ID
......
......@@ -539,4 +539,14 @@ public class QrcodeSceneConsr {
}
return map;
}
@ParamLog("二维码信息(含资源配置)")
public QrcodeSceneDto getDetail(Long sceneId) {
try {
return ResponseHandleUtil.parseResponse(qrcodeSceneService.getDetail(sceneId),QrcodeSceneDto.class);
} catch (Exception e) {
LOGGER.error("调用qrcodeSceneService.getDetail失败"+e.getMessage(),e);
}
return null;
}
}
......@@ -137,12 +137,13 @@ public interface ResourcePageBiz {
*/
List<BookGroupServe> getServeListByBookGroupId(Long bookGroupId);
/**
* 批量更新预览二维码
* 批量更新资源聚合页二维码
* @author:zhuyajie
* @date:2021/4/20 1:14
* * @param null
*/
void batchUpdateQrcode(List<Long> bookGroupIds);
void batchUpdateResourceQrcode(List<Long> qrcodeIdList, String qrcodeType);
/**
* 根据书籍id和channel获取资源配置页
......@@ -151,4 +152,4 @@ public interface ResourcePageBiz {
* @return
*/
ResourcePageVO getResourcePageByBookIdAndChannelId(Long adviserBookId, Long channelId);
}
}
\ No newline at end of file
......@@ -22,6 +22,7 @@ import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.constant.ResourcePageConstants;
import com.pcloud.book.group.dao.BookAppletSceneDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.BookGroupServeDao;
import com.pcloud.book.group.dao.ResourcePageColumnDao;
import com.pcloud.book.group.dao.ResourcePageDao;
import com.pcloud.book.group.dao.ResourcePageItemDao;
......@@ -54,6 +55,7 @@ import com.pcloud.book.util.properties.BookProps;
import com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.channelcenter.wechat.dto.MessageDto;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
......@@ -131,6 +133,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
private BookAppletSceneDao bookAppletSceneDao;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private BookGroupServeDao bookGroupServeDao;
@Override
public Long updateResourcePage(UpdateResourcePageVO updateResourcePageVO) {
......@@ -425,9 +429,9 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
if (groupQrcodeVO == null) {
throw new BookBizException(BookBizException.ERROR, "二维码生成失败!");
}
if (null != bookGroupDTO) {
if (null != bookGroupId) {
BookGroup group = new BookGroup();
group.setId(bookGroupDTO.getId());
group.setId(bookGroupId);
group.setSceneId(groupQrcodeVO.getSceneId());
bookGroupDao.update(group);
}
......@@ -1124,6 +1128,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long updateResourcePageAndColumn(UpdateResourcePageVO updateResourcePageVO) {
Long resourcePageId = this.updateResourcePage(updateResourcePageVO);
if (!ListUtils.isEmpty(updateResourcePageVO.getColumnVOS())) {
......@@ -1157,11 +1162,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@ParamLog("根据bookGroupId查资源页信息")
private ResourcePageVO getResourcePageByBookGroupId4Wechat(Long bookGroupId, Long wechatUserId) {
ResourcePageVO resourcePageVO = new ResourcePageVO();
ResourcePage resourcePage = resourcePageDao.getByBookGroupId(bookGroupId);
if (null == resourcePage) {
return resourcePageVO;
}
BeanUtils.copyProperties(resourcePage, resourcePageVO);
resourcePageVO.setBookGroupId(bookGroupId);
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOById(bookGroupId);
if (null != bookGroupDTO) {
resourcePageVO.setBookId(bookGroupDTO.getBookId());
......@@ -1180,17 +1181,20 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
//小程序
BookAppletScene bookAppletScene = bookAppletSceneDao.getByBookGroupId(bookGroupId);
resourcePageVO.setAppletId(null == bookAppletScene ? null : bookAppletScene.getAppletId());
ResourcePage resourcePage = resourcePageDao.getByBookGroupId(bookGroupId);
if (null != resourcePage) {
resourcePageVO.setShowBook(resourcePage.getShowBook());
resourcePageVO.setOpenRays(resourcePage.getOpenRays());
resourcePageVO.setStyle(resourcePage.getStyle());
resourcePageVO.setQrcodeUrl(resourcePage.getQrcodeUrl());
resourcePageVO.setId(resourcePage.getId());
}
return resourcePageVO;
}
@ParamLog("根据SceneId查资源页信息")
private ResourcePageVO getResourcePageBySceneId4Wechat(Long sceneId) {
ResourcePageVO resourcePageVO = new ResourcePageVO();
ResourcePage resourcePage = resourcePageDao.getBySceneId(sceneId);
if (null == resourcePage) {
return resourcePageVO;
}
BeanUtils.copyProperties(resourcePage, resourcePageVO);
resourcePageVO.setSceneId(sceneId);
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(sceneId);
if (null != qrcodeSceneDto) {
......@@ -1208,6 +1212,14 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
//小程序
BookAppletScene bookAppletScene = bookAppletSceneDao.getBySceneId(sceneId);
resourcePageVO.setAppletId(null == bookAppletScene?null:bookAppletScene.getAppletId());
ResourcePage resourcePage = resourcePageDao.getBySceneId(sceneId);
if (null != resourcePage) {
resourcePageVO.setShowBook(resourcePage.getShowBook());
resourcePageVO.setOpenRays(resourcePage.getOpenRays());
resourcePageVO.setStyle(resourcePage.getStyle());
resourcePageVO.setQrcodeUrl(resourcePage.getQrcodeUrl());
resourcePageVO.setId(resourcePage.getId());
}
return resourcePageVO;
}
......@@ -1244,20 +1256,97 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
}
@Override
public void batchUpdateQrcode(List<Long> bookGroupIds) {
if (ListUtils.isEmpty(bookGroupIds)) {
public void batchUpdateResourceQrcode(List<Long> qrcodeIdList, String qrcodeType) {
if (ListUtils.isEmpty(qrcodeIdList)) {
return;
}
for (Long bookGroupId:bookGroupIds) {
ResourcePage resourcePage = resourcePageDao.getByBookGroupId(bookGroupId);
if (null == resourcePage) {
continue;
if ("bookgroup".equals(qrcodeType)) {
for (Long bookGroupId:qrcodeIdList) {
//H5资源页
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOById(bookGroupId);
if (!QrcodeJumpType.H5_RESOURCE.getCode().equals(bookGroupDTO.getJumpType())) {
continue;
}
ResourcePage resourcePage = resourcePageDao.getByBookGroupId(bookGroupId);
if (null == resourcePage) {
resourcePage = this.createDefaultResourcePage(bookGroupId, bookGroupDTO.getCreateUser(), null, 0);
} else {
resourcePage.setOpenRays(0);
resourcePageDao.update(resourcePage);
}
Long resourcePageId = resourcePage.getId();
List<BookGroupServe> serveList = bookGroupServeDao.getListByBookGroupId(bookGroupId);
resourcePageColumnDao.deleteByPageId(resourcePageId);
resourcePageItemDao.deleteByPageId(resourcePageId);
if (!ListUtils.isEmpty(serveList)) {
//新增栏目资源
UpdateResourceColumnVO columnVO = new UpdateResourceColumnVO();
columnVO.setColumnFormat(1);
columnVO.setColumnType(ResourcePageConstants.ColumnTypeEnum.APP_PRODUCT.getCode());
columnVO.setCreateUser(bookGroupDTO.getCreateUser());
columnVO.setColumnName("本书配套资源服务");
List<ResourcePageItemVO> itemVOList = new ArrayList<>();
for (BookGroupServe serve : serveList) {
ResourcePageItemVO vo = new ResourcePageItemVO();
vo.setLinkUrl(serve.getServeUrl());
vo.setServeId(serve.getServeId());
vo.setServeType(serve.getServeType());
vo.setTypeCode(serve.getTypeCode());
vo.setSeqNum(serveList.indexOf(serve));
itemVOList.add(vo);
}
columnVO.setItemVOList(itemVOList);
columnVO.setResourcePageId(resourcePage.getId());
if (itemVOList.size() > 4) {
columnVO.setShowMore(true);
columnVO.setShowCount(4);
} else {
columnVO.setShowMore(false);
}
this.updateResourceColumn(columnVO);
}
}
} else {
for (Long sceneId : qrcodeIdList) {
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getDetail(sceneId);
Long adviserId = qrcodeSceneDto.getCreatedByUserLogin();
//创建资源页
ResourcePage resourcePage = resourcePageDao.getBySceneId(sceneId);
if (null == resourcePage) {
resourcePage = this.createDefaultResourcePage(null, adviserId, sceneId, 0);
}
Long resourcePageId = resourcePage.getId();
List<MessageDto> messages = qrcodeSceneDto.getMessages();
resourcePageColumnDao.deleteByPageId(resourcePageId);
resourcePageItemDao.deleteByPageId(resourcePageId);
if (!ListUtils.isEmpty(messages)) {
//新增栏目资源
UpdateResourceColumnVO columnVO = new UpdateResourceColumnVO();
columnVO.setColumnFormat(1);
columnVO.setColumnType(ResourcePageConstants.ColumnTypeEnum.APP_PRODUCT.getCode());
columnVO.setCreateUser(adviserId);
columnVO.setColumnName("本书配套资源服务");
List<ResourcePageItemVO> itemVOList = new ArrayList<>();
for (MessageDto messageDto : messages) {
ResourcePageItemVO vo = new ResourcePageItemVO();
vo.setLinkUrl(messageDto.getUrl());
vo.setServeId(messageDto.getFromId());
vo.setServeType(messageDto.getTypeCode());
vo.setTypeCode(messageDto.getFromType());
vo.setSeqNum(messages.indexOf(messageDto));
itemVOList.add(vo);
}
columnVO.setItemVOList(itemVOList);
columnVO.setResourcePageId(resourcePage.getId());
if (itemVOList.size() > 4) {
columnVO.setShowMore(true);
columnVO.setShowCount(4);
} else {
columnVO.setShowMore(false);
}
this.updateResourceColumn(columnVO);
}
}
//预览二维码
String qrcodeLink = BookProps.getWechatDomain()+"/rayh5/book?bookGroupId="+bookGroupId;
String qrcodeUrl = QrcodeUtils.createWithMargin(qrcodeLink, 1);
resourcePage.setQrcodeUrl(qrcodeUrl);
resourcePageDao.update(resourcePage);
}
}
......
......@@ -61,4 +61,6 @@ public interface ResourcePageColumnDao extends BaseDao<ResourcePageColumn> {
* * @param null
*/
void updateSeq4Batch(List<ResourceColumnAndServeVO> list);
void deleteByPageId(Long resourcePageId);
}
\ No newline at end of file
......@@ -53,4 +53,8 @@ public interface ResourcePageItemDao extends BaseDao<ResourcePageItem>{
* * @param null
*/
List<BookGroupServe> getServeListByBookGroupId(Long bookGroupId);
void deleteByPageId(Long resourcePageId);
List<BookGroupServe> getServeListByBookGroupIds(List<Long> bookGroupIds);
}
\ No newline at end of file
......@@ -59,4 +59,9 @@ public class ResourcePageColumnDaoImpl extends BaseDaoImpl<ResourcePageColumn> i
public void updateSeq4Batch(List<ResourceColumnAndServeVO> list) {
getSessionTemplate().update(getStatement("updateSeq4Batch"), list);
}
@Override
public void deleteByPageId(Long resourcePageId) {
getSessionTemplate().delete(getStatement("deleteByPageId"), resourcePageId);
}
}
......@@ -51,4 +51,14 @@ public class ResourcePageItemDaoImpl extends BaseDaoImpl<ResourcePageItem> imple
public List<BookGroupServe> getServeListByBookGroupId(Long bookGroupId) {
return getSessionTemplate().selectList(getStatement("getServeListByBookGroupId"), bookGroupId);
}
@Override
public void deleteByPageId(Long resourcePageId) {
getSessionTemplate().delete(getStatement("deleteByPageId"), resourcePageId);
}
@Override
public List<BookGroupServe> getServeListByBookGroupIds(List<Long> bookGroupIds) {
return getSessionTemplate().selectList(getStatement("getServeListByBookGroupIds"), bookGroupIds);
}
}
......@@ -153,10 +153,10 @@ public class ResourcePageFacade {
return new ResponseDto<>(resourcePageBiz.getResourcePageByBookGroupIdOrSceneId4Wechat(bookGroupId, wechatUserId, sceneId));
}
@ApiOperation("批量更新预览二维码")
@PostMapping("batchUpdateQrcode")
public ResponseDto<?> batchUpdateQrcode(@RequestBody List<Long> bookGroupIds) {
resourcePageBiz.batchUpdateQrcode(bookGroupIds);
@ApiOperation("批量更新资源页二维码")
@PostMapping("batchUpdateResourceQrcode")
public ResponseDto<?> batchUpdateResourceQrcode(@RequestBody List<Long> qrcodeIdList, @RequestParam("qrcodeType") String qrcodeType) {
resourcePageBiz.batchUpdateResourceQrcode(qrcodeIdList, qrcodeType);
return new ResponseDto<>();
}
}
......@@ -687,9 +687,9 @@
G.group_qrcode_name groupQrcodeName, G.dep_label_id bookGroupDepLabelId, G.join_group_type, G.book_group_cipher, G.short_book_name
, if(IFNULL(case G.join_group_type
WHEN 1 then bk.id
WHEN 2 THEN bgs.id
WHEN 2 THEN i.id
WHEN 3 THEN srk.id
WHEN 4 THEN bgs.id
WHEN 4 THEN i.id
else null END,0)=0,0,1)as has_serve, A.IS_PRINT isPrint, G.open_weapp openWeapp,
G.single_group singleGroup, G.related_book_group_id relatedBookGroupId, G.group_qrcode_link groupQrcodeLink,
G.jump_type jumpType, G.jump_url jumpUrl, G.seq
......@@ -699,9 +699,10 @@
LEFT JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID
LEFT JOIN BOOK_TYPE T ON B.TYPE_CODE = T.TYPE_CODE
LEFT JOIN BOOK_FUND BF ON BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW()
LEFT JOIN BOOK_GROUP_SERVE bgs on G.id=bgs.book_group_id
LEFT JOIN BOOK_KEYWORD bk on G.id=bk.book_group_id and bk.is_delete=0
LEFT JOIN self_robot_keyword srk ON G.id = srk.book_group_id
LEFT JOIN resource_page p ON g.id = p.book_group_id
LEFT JOIN resource_page_item i ON p.id = i.resource_page_id
WHERE
G.create_user = #{adviserId} AND G.is_delete = 0
AND (
......
......@@ -150,4 +150,7 @@
</foreach>
</update>
<delete id="deleteByPageId" parameterType="long">
delete from book.resource_page_column where resource_page_id = #{resourcePageId}
</delete>
</mapper>
\ No newline at end of file
......@@ -145,4 +145,29 @@
c.column_seq ASC
</select>
<delete id="deleteByPageId" parameterType="long">
delete from book.resource_page_item where resource_page_id = #{resourcePageId}
</delete>
<select id="getServeListByBookGroupIds" parameterType="list" resultType="com.pcloud.book.group.entity.BookGroupServe">
SELECT
i.serve_id serveId,
i.serve_type serveType,
i.link_url serveUrl,
p.book_group_id bookGroupId,
p.create_user createUser,
i.type_code typeCode
FROM
resource_page_item i
LEFT JOIN resource_page p ON i.resource_page_id = p.id
LEFT JOIN resource_page_column c ON i.resource_page_column_id = c.id
WHERE
p.book_group_id IN
<foreach collection="list" index="index" separator="," open="(" close=")" item="item">
#{item}
</foreach>
AND i.serve_type IN ('APP', 'PRODUCT')
ORDER BY
c.column_seq ASC
</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