Commit 2db8e2cb by 郑永强

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

parent 7e5bcc28
package com.pcloud.book.group.biz.impl; 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.appcenter.app.dto.AppDto;
import com.pcloud.book.applet.biz.AppletBooklistBiz; import com.pcloud.book.applet.biz.AppletBooklistBiz;
import com.pcloud.book.applet.biz.AppletThirdResourcesBiz; import com.pcloud.book.applet.biz.AppletThirdResourcesBiz;
...@@ -85,6 +89,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -85,6 +89,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
...@@ -362,12 +367,15 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -362,12 +367,15 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@ParamLog("生成公众号码") @ParamLog("生成公众号码")
private void createOfficialAccountUrl(Long resourcePageColumnId, UpdateResourceColumnVO updateResourceColumnVO) { private void createOfficialAccountUrl(Long resourcePageColumnId, UpdateResourceColumnVO updateResourceColumnVO) {
String qrcodeUrl;
String url = null;
ResourcePageItemVO itemVO = updateResourceColumnVO.getItemVOList().get(0); ResourcePageItemVO itemVO = updateResourceColumnVO.getItemVOList().get(0);
ResourcePage resourcePage = resourcePageDao.getById(updateResourceColumnVO.getResourcePageId()); ResourcePage resourcePage = resourcePageDao.getById(updateResourceColumnVO.getResourcePageId());
if (null == resourcePage) { if (null == resourcePage) {
return; return;
} }
Long officialSceneId = resourcePage.getOfficialSceneId(); Long officialSceneId = resourcePage.getOfficialSceneId();
if(ResourcePageConstants.QrcodeSourceEnum.OFFICIAL_ACCOUNT.value.equals(itemVO.getQrcodeSource())){
if (null == officialSceneId) { if (null == officialSceneId) {
officialSceneId = this.createOfficialScene(resourcePage.getBookGroupId(), resourcePage.getSceneId()); officialSceneId = this.createOfficialScene(resourcePage.getBookGroupId(), resourcePage.getSceneId());
if (null == officialSceneId) { if (null == officialSceneId) {
...@@ -377,8 +385,22 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -377,8 +385,22 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
resourcePageDao.update(resourcePage); resourcePageDao.update(resourcePage);
} }
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(officialSceneId); QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(officialSceneId);
String qrcodeUrl = qrcodeSceneDto.getQrcodeUrl(); qrcodeUrl = qrcodeSceneDto.getQrcodeUrl();
String url = qrcodeSceneDto.getUrl(); 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);
}
}
ResourcePageItem item = new ResourcePageItem(); ResourcePageItem item = new ResourcePageItem();
item.setResourcePageColumnId(resourcePageColumnId); item.setResourcePageColumnId(resourcePageColumnId);
...@@ -390,13 +412,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -390,13 +412,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
item.setSeqNum(1); item.setSeqNum(1);
item.setIsShow(true); item.setIsShow(true);
item.setServeId(officialSceneId); item.setServeId(officialSceneId);
item.setQrcodeSource(itemVO.getQrcodeSource() == null ? ResourcePageConstants.QrcodeSourceEnum.OFFICIAL_ACCOUNT.value : itemVO.getQrcodeSource());
if (!StringUtil.isEmpty(itemVO.getLogoUrl())) { if (!StringUtil.isEmpty(itemVO.getLogoUrl())) {
//生成黑白logo二维码 //生成黑白logo二维码
CompletableFuture<String> qrcodeFuture = CompletableFuture.supplyAsync(()->
QrcodeUtils.createLogoQr(url, itemVO.getLogoUrl(), 0xFF000000, 1));
try { try {
qrcodeUrl = qrcodeFuture.get(); qrcodeUrl = QrcodeUtils.createLogoQr(url, itemVO.getLogoUrl(), 0xFF000000, 1);
} catch (InterruptedException |ExecutionException e) { } catch (BizException e) {
log.error("生成黑白logo二维码失败"+e.getMessage(), e); log.error("生成黑白logo二维码失败"+e.getMessage(), e);
} }
} }
...@@ -620,10 +641,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -620,10 +641,12 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
for (ResourcePageItemVO itemVO : itemVOS) { for (ResourcePageItemVO itemVO : itemVOS) {
//带logo的二维码 //带logo的二维码
itemVO.setResultUrl(itemVO.getLinkUrl()); itemVO.setResultUrl(itemVO.getLinkUrl());
itemVO.setTypeName("公众号");
//原始二维码 //原始二维码
if(ResourcePageConstants.QrcodeSourceEnum.OFFICIAL_ACCOUNT.value.equals(itemVO.getQrcodeSource())){
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(itemVO.getServeId()); QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(itemVO.getServeId());
itemVO.setLinkUrl(qrcodeSceneDto.getQrcodeUrl()); itemVO.setLinkUrl(qrcodeSceneDto.getQrcodeUrl());
itemVO.setTypeName("公众号"); }
} }
} }
......
...@@ -124,4 +124,17 @@ public class ResourcePageConstants { ...@@ -124,4 +124,17 @@ public class ResourcePageConstants {
return value; 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 { ...@@ -60,4 +60,8 @@ public class ResourcePageItem extends BaseEntity {
* 创建人 * 创建人
*/ */
private Long createUser; private Long createUser;
/**
* 二维码来源
*/
private Integer qrcodeSource;
} }
...@@ -60,6 +60,11 @@ public class ResourcePageItemVO extends BaseDto{ ...@@ -60,6 +60,11 @@ public class ResourcePageItemVO extends BaseDto{
*/ */
private Integer linkFrom; private Integer linkFrom;
/**
* 二维码来源
*/
private Integer qrcodeSource;
/**资源其他信息**/ /**资源其他信息**/
private String serveName; private String serveName;
......
...@@ -31,20 +31,20 @@ ...@@ -31,20 +31,20 @@
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"> <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, 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}, values (#{resourcePageId}, #{resourcePageColumnId}, #{serveId}, #{serveType}, #{linkUrl}, #{typeCode},
#{seqNum}, #{isShow}, #{guideContent}, #{logoUrl}, now(), now(), #{createUser}) #{seqNum}, #{isShow}, #{guideContent}, #{logoUrl}, now(), now(), #{createUser}, #{qrcodeSource})
</insert> </insert>
<insert id="batchInsert" keyProperty="id" useGeneratedKeys="true"> <insert id="batchInsert" keyProperty="id" useGeneratedKeys="true">
insert into book.resource_page_item(resource_page_id, resource_page_column_id, serve_id, serve_type, 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, 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 values
<foreach collection="list" separator="," index="index" item="item"> <foreach collection="list" separator="," index="index" item="item">
(#{item.resourcePageId}, #{item.resourcePageColumnId}, #{item.serveId}, #{item.serveType}, (#{item.resourcePageId}, #{item.resourcePageColumnId}, #{item.serveId}, #{item.serveType},
#{item.linkUrl}, #{item.typeCode}, #{item.seqNum}, #{item.isShow}, #{item.guideContent}, #{item.logoUrl}, #{item.linkUrl}, #{item.typeCode}, #{item.seqNum}, #{item.isShow}, #{item.guideContent}, #{item.logoUrl},
now(), now(), #{item.createUser}) now(), now(), #{item.createUser}, #{item.qrcodeSource})
</foreach> </foreach>
</insert> </insert>
...@@ -107,6 +107,7 @@ ...@@ -107,6 +107,7 @@
type_code typeCode, type_code typeCode,
logo_url logoUrl, logo_url logoUrl,
guide_content guideContent, guide_content guideContent,
qrcode_source qrcodeSource,
create_user createUser create_user createUser
FROM FROM
resource_page_item resource_page_item
......
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