Commit 2db8e2cb by 郑永强

feat: [1004704] 小蓝书运营需求

parent 7e5bcc28
package com.pcloud.book.group.biz.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeException;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.http.HttpUtil;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.applet.biz.AppletBooklistBiz;
import com.pcloud.book.applet.biz.AppletThirdResourcesBiz;
......@@ -85,6 +89,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
......@@ -362,23 +367,40 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@ParamLog("生成公众号码")
private void createOfficialAccountUrl(Long resourcePageColumnId, UpdateResourceColumnVO updateResourceColumnVO) {
String qrcodeUrl;
String url = null;
ResourcePageItemVO itemVO = updateResourceColumnVO.getItemVOList().get(0);
ResourcePage resourcePage = resourcePageDao.getById(updateResourceColumnVO.getResourcePageId());
if (null == resourcePage) {
return;
}
Long officialSceneId = resourcePage.getOfficialSceneId();
if (null == officialSceneId) {
officialSceneId = this.createOfficialScene(resourcePage.getBookGroupId(), resourcePage.getSceneId());
if(ResourcePageConstants.QrcodeSourceEnum.OFFICIAL_ACCOUNT.value.equals(itemVO.getQrcodeSource())){
if (null == officialSceneId) {
throw new BookBizException(BookBizException.ERROR, "二维码生成失败!");
officialSceneId = this.createOfficialScene(resourcePage.getBookGroupId(), resourcePage.getSceneId());
if (null == officialSceneId) {
throw new BookBizException(BookBizException.ERROR, "二维码生成失败!");
}
resourcePage.setOfficialSceneId(officialSceneId);
resourcePageDao.update(resourcePage);
}
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(officialSceneId);
qrcodeUrl = qrcodeSceneDto.getQrcodeUrl();
url = qrcodeSceneDto.getUrl();
} else {
qrcodeUrl = itemVO.getLinkUrl();
String tmpDirPath = FileUtil.getTmpDirPath();
if (!tmpDirPath.endsWith(File.separator)) {
tmpDirPath = tmpDirPath + File.separator;
}
File file = FileUtil.touch(tmpDirPath + UUIDUitl.generateShort() + ".png");
HttpUtil.downloadFile(qrcodeUrl, file);
try {
url = QrCodeUtil.decode(file);
} catch (QrCodeException e){
log.info("解析二维码图片失败,qrcodeUrl:{}", qrcodeUrl);
}
resourcePage.setOfficialSceneId(officialSceneId);
resourcePageDao.update(resourcePage);
}
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(officialSceneId);
String qrcodeUrl = qrcodeSceneDto.getQrcodeUrl();
String url = qrcodeSceneDto.getUrl();
ResourcePageItem item = new ResourcePageItem();
item.setResourcePageColumnId(resourcePageColumnId);
......@@ -390,13 +412,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
item.setSeqNum(1);
item.setIsShow(true);
item.setServeId(officialSceneId);
item.setQrcodeSource(itemVO.getQrcodeSource() == null ? ResourcePageConstants.QrcodeSourceEnum.OFFICIAL_ACCOUNT.value : itemVO.getQrcodeSource());
if (!StringUtil.isEmpty(itemVO.getLogoUrl())) {
//生成黑白logo二维码
CompletableFuture<String> qrcodeFuture = CompletableFuture.supplyAsync(()->
QrcodeUtils.createLogoQr(url, itemVO.getLogoUrl(), 0xFF000000, 1));
try {
qrcodeUrl = qrcodeFuture.get();
} catch (InterruptedException |ExecutionException e) {
qrcodeUrl = QrcodeUtils.createLogoQr(url, itemVO.getLogoUrl(), 0xFF000000, 1);
} catch (BizException e) {
log.error("生成黑白logo二维码失败"+e.getMessage(), e);
}
}
......@@ -620,10 +641,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
for (ResourcePageItemVO itemVO : itemVOS) {
//带logo的二维码
itemVO.setResultUrl(itemVO.getLinkUrl());
//原始二维码
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(itemVO.getServeId());
itemVO.setLinkUrl(qrcodeSceneDto.getQrcodeUrl());
itemVO.setTypeName("公众号");
//原始二维码
if(ResourcePageConstants.QrcodeSourceEnum.OFFICIAL_ACCOUNT.value.equals(itemVO.getQrcodeSource())){
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(itemVO.getServeId());
itemVO.setLinkUrl(qrcodeSceneDto.getQrcodeUrl());
}
}
}
......
......@@ -124,4 +124,17 @@ public class ResourcePageConstants {
return value;
}
}
public enum QrcodeSourceEnum {
OFFICIAL_ACCOUNT(0, "公众号二维码"),
CUSTOM(1, "自定义");
public final Integer value;
public final String desc;
QrcodeSourceEnum(Integer value, String desc){
this.value = value;
this.desc = desc;
}
}
}
......@@ -60,4 +60,8 @@ public class ResourcePageItem extends BaseEntity {
* 创建人
*/
private Long createUser;
}
\ No newline at end of file
/**
* 二维码来源
*/
private Integer qrcodeSource;
}
......@@ -60,6 +60,11 @@ public class ResourcePageItemVO extends BaseDto{
*/
private Integer linkFrom;
/**
* 二维码来源
*/
private Integer qrcodeSource;
/**资源其他信息**/
private String serveName;
......
......@@ -31,20 +31,20 @@
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into book.resource_page_item(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)
seq_num, is_show, guide_content, logo_url, create_time, update_time, create_user, qrcode_source)
values (#{resourcePageId}, #{resourcePageColumnId}, #{serveId}, #{serveType}, #{linkUrl}, #{typeCode},
#{seqNum}, #{isShow}, #{guideContent}, #{logoUrl}, now(), now(), #{createUser})
#{seqNum}, #{isShow}, #{guideContent}, #{logoUrl}, now(), now(), #{createUser}, #{qrcodeSource})
</insert>
<insert id="batchInsert" keyProperty="id" useGeneratedKeys="true">
insert into book.resource_page_item(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)
create_time, update_time, create_user, qrcode_source)
values
<foreach collection="list" separator="," index="index" item="item">
(#{item.resourcePageId}, #{item.resourcePageColumnId}, #{item.serveId}, #{item.serveType},
#{item.linkUrl}, #{item.typeCode}, #{item.seqNum}, #{item.isShow}, #{item.guideContent}, #{item.logoUrl},
now(), now(), #{item.createUser})
now(), now(), #{item.createUser}, #{item.qrcodeSource})
</foreach>
</insert>
......@@ -107,6 +107,7 @@
type_code typeCode,
logo_url logoUrl,
guide_content guideContent,
qrcode_source qrcodeSource,
create_user createUser
FROM
resource_page_item
......@@ -210,4 +211,4 @@
COUNT(i.id) = 1
AND i.serve_type IN ("APP", "PRODUCT")
</select>
</mapper>
\ No newline at end of file
</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