Commit 9bf22f1b by 田超

Merge branch 'feature/1005183' into 'master'

feat: [1005183] 编辑端新增图书售卖服务

See merge request rays/pcloud-book!1387
parents d2e34d79 80f0b581
package com.pcloud.book.group.biz;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
/**
* 实体书购买(ResourcePageBookstore)表服务接口
*
* @author makejava
* @since 2021-08-16 14:40:27
*/
public interface ResourcePageBookstoreBiz {
/**
* 通过ID查询单条数据
*/
ResourcePageBookstore getById(Long id);
/**
* 分页查询
*/
PageBeanNew getList(Integer currentPage, Integer numPerPage);
/**
* 新增数据
*/
Long insert(ResourcePageBookstore resourcePageBookstore);
/**
* 新增数据
*/
void insert(List<ResourcePageBookstore> list);
/**
* 修改数据
*/
void update(ResourcePageBookstore resourcePageBookstore);
/**
* 通过主键删除数据
*/
void deleteById(Long id);
void deleteByResourcePageId(Long resourcePageId);
List<ResourcePageBookstoreVO> getByResourcePageId(Long resourcePageId, Long channelId);
}
......@@ -36,6 +36,7 @@ import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.biz.ResourcePageBookstoreBiz;
import com.pcloud.book.group.constant.ResourcePageConstants;
import com.pcloud.book.group.dao.BookAppletSceneDao;
import com.pcloud.book.group.dao.BookGroupDao;
......@@ -57,6 +58,7 @@ import com.pcloud.book.group.entity.BookAppletScene;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.ResourcePage;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourcePageColumn;
import com.pcloud.book.group.entity.ResourcePageCourse;
......@@ -65,6 +67,7 @@ import com.pcloud.book.group.entity.ResourcePageTool;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.book.group.vo.ResourcePageItemVO;
import com.pcloud.book.group.vo.ResourcePageOneServe;
import com.pcloud.book.group.vo.ResourcePageVO;
......@@ -202,6 +205,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
private AppletRecordAggrStatisBiz appletRecordAggrStatisBiz;
@Autowired
private ResourceRecomManageDao resourceRecomManageDao;
@Autowired
private ResourcePageBookstoreBiz resourcePageBookstoreBiz;
@Override
public Long updateResourcePage(UpdateResourcePageVO updateResourcePageVO) {
......@@ -618,9 +623,22 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
if (!MapUtils.isEmpty(agentMap)) {
resourcePageVO.setAgentName(agentMap.get(adviserId).getAgentName());
}
// 加载实体书购买
this.fillBookStore(resourcePageVO);
return resourcePageVO;
}
/**
* 加载实体书购买
*/
private void fillBookStore(ResourcePageVO resourcePageVO) {
if(resourcePageVO == null || resourcePageVO.getId() == null){
return;
}
List<ResourcePageBookstoreVO> resourcePageBookstoreList = resourcePageBookstoreBiz.getByResourcePageId(resourcePageVO.getId(), resourcePageVO.getChannelId());
resourcePageVO.setResourcePageBookstoreList(resourcePageBookstoreList);
}
@Override
public List<ResourceColumnAndServeVO> getColumnAndServeListByPageId(Long resourcePageId, Boolean isWechat, Long bookId, Long adviserId, Long channelId, Integer enableAdverting) {
List<ResourceColumnAndServeVO> serveVOS = resourcePageColumnDao.getColumnListByPageId(resourcePageId);
......@@ -1200,6 +1218,16 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
}
}
// 更新实体书购买
List<ResourcePageBookstore> resourcePageBookstoreList = updateResourcePageVO.getResourcePageBookstoreList();
resourcePageBookstoreBiz.deleteByResourcePageId(resourcePageId);
if(CollUtil.isNotEmpty(resourcePageBookstoreList)){
for (ResourcePageBookstore bookstore : resourcePageBookstoreList) {
bookstore.setResourcePageId(resourcePageId);
}
resourcePageBookstoreBiz.insert(resourcePageBookstoreList);
}
//发送编辑任务queue
adviserTaskConsr.sendAdviserTaskQueue(updateResourcePageVO.getCreateUser(), AdviserTaskConstants.TargetTypeEnum.QRCODE.getValue(),
page.getBookGroupId() == null ? page.getSceneId() : page.getBookGroupId(),
......@@ -1226,6 +1254,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
//查收藏状态
ResourcePageCollect collect = resourcePageCollectDao.getCollectRecordByUser(wechatUserId, resourcePageVO.getId());
resourcePageVO.setCollectState(null == collect ? 0 : 1);
// 实体店铺
resourcePageVO.setResourcePageBookstoreList(resourcePageBookstoreBiz.getByResourcePageId(resourcePageVO.getId(), resourcePageVO.getChannelId()));
}
if (null != resourcePageVO.getAdviserId()) {
resourcePageVO.setPushTextOpenStatus(qrcodeSceneConsr.getPushTextOpenStatus(resourcePageVO.getAdviserId()));
......
package com.pcloud.book.group.biz.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.dao.ResourcePageBookstoreDao;
import com.pcloud.book.group.biz.ResourcePageBookstoreBiz;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 实体书购买(ResourcePageBookstore)表服务实现类
*
* @author makejava
* @since 2021-08-16 14:40:27
*/
@Service("resourcePageBookstoreBiz")
public class ResourcePageBookstoreBizImpl implements ResourcePageBookstoreBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(ResourcePageBookstoreBizImpl.class);
@Autowired
private ResourcePageBookstoreDao resourcePageBookstoreDao;
@Autowired
private AppConsr appConsr;
@Autowired
private ProductConsr productConsr;
@Autowired
private QrcodeSceneConsr qrcodeSceneConsr;
@Override
public ResourcePageBookstore getById(Long id) {
return resourcePageBookstoreDao.getById(id);
}
@Override
public PageBeanNew getList(Integer currentPage, Integer numPerPage) {
PageBeanNew pageBeanNew = resourcePageBookstoreDao.listPageNew(new PageParam(currentPage, numPerPage), null, "getList");
List recordList = pageBeanNew.getRecordList();
if (ListUtils.isEmpty(recordList)){
return pageBeanNew;
}
// 加载其它数据
return pageBeanNew;
}
@Override
public Long insert(ResourcePageBookstore resourcePageBookstore) {
resourcePageBookstoreDao.insert(resourcePageBookstore);
return resourcePageBookstore.getId();
}
@Override
public void insert(List<ResourcePageBookstore> list) {
resourcePageBookstoreDao.insert(list);
}
@Override
public void update(ResourcePageBookstore resourcePageBookstore) {
if(resourcePageBookstore == null || !NumberUtil.isNumber(resourcePageBookstore.getId())){
throw BizException.PARAM_DELETION;
}
resourcePageBookstoreDao.update(resourcePageBookstore);
}
@Override
public void deleteById(Long id) {
resourcePageBookstoreDao.deleteById(id);
}
@Override
public void deleteByResourcePageId(Long resourcePageId) {
resourcePageBookstoreDao.deleteByResourcePageId(resourcePageId);
}
@Override
public List<ResourcePageBookstoreVO> getByResourcePageId(Long resourcePageId, Long channelId) {
List<ResourcePageBookstoreVO> list = resourcePageBookstoreDao.getByResourcePageId(resourcePageId);
if(CollUtil.isEmpty(list) || channelId == null){
return CollUtil.toList();
}
List<Long> appIds = list.stream().filter(x -> ObjectUtil.equal(x.getServeType(), "APP")).map(x -> x.getServeId()).collect(Collectors.toList());
List<Long> productIds = list.stream().filter(x -> ObjectUtil.equal(x.getServeType(), "PRODUCT")).map(x -> x.getServeId()).collect(Collectors.toList());
Map<Long, AppDto> appDtoMap = appConsr.getBaseByIds(appIds);
Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds);
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(channelId);
if (null == accountSettingDto) {
LOGGER.info("未配置公众号");
return CollUtil.toList();
}
for (ResourcePageBookstoreVO vo : list) {
if(ObjectUtil.equal(vo.getServeType(), "APP")){
AppDto appDto = appDtoMap.get(vo.getServeId());
if(appDto == null){
continue;
}
vo.setServeName(appDto.getTitle());
vo.setServePic(appDto.getSquareImg());
vo.setServeTypeCode(appDto.getTypeCode());
vo.setServeTypeName(appDto.getTypeName());
vo.setResultUrl(SendWeixinRequestTools.splitUrl(accountSettingDto, vo.getLinkUrl()));
}
if(ObjectUtil.equal(vo.getServeType(), "PRODUCT")){
ProductDto productDto = productDtoMap.get(vo.getServeId());
if(productDto == null){
continue;
}
vo.setServeName(productDto.getProductName());
vo.setServePic(productDto.getCoverImg());
if (productDto.getProductTypeDto() != null){
vo.setServeTypeCode(productDto.getProductTypeDto().getTypeCode());
vo.setServeTypeName(productDto.getProductTypeDto().getTypeName());
}
vo.setResultUrl(SendWeixinRequestTools.splitUrl(accountSettingDto, vo.getLinkUrl()));
}
}
return list;
}
}
package com.pcloud.book.group.dao;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* 实体书购买(ResourcePageBookstore)表数据库访问层
*
* @author makejava
* @since 2021-08-16 14:40:27
*/
public interface ResourcePageBookstoreDao extends BaseDao<ResourcePageBookstore> {
Integer deleteByResourcePageId(Long resourcePageId);
List<ResourcePageBookstoreVO> getByResourcePageId(Long resourcePageId);
}
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.dao.ResourcePageBookstoreDao;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 实体书购买(ResourcePageBookstore)表数据库访问层
*
* @author makejava
* @since 2021-08-16 14:40:27
*/
@Repository("resourcePageBookstoreDaoImpl")
public class ResourcePageBookstoreDaoImpl extends BaseDaoImpl<ResourcePageBookstore> implements ResourcePageBookstoreDao {
@Override
public Integer deleteByResourcePageId(Long resourcePageId) {
return super.sqlSessionTemplate.delete(getStatement("deleteByResourcePageId"), resourcePageId);
}
@Override
public List<ResourcePageBookstoreVO> getByResourcePageId(Long resourcePageId) {
return super.sqlSessionTemplate.selectList(getStatement("getByResourcePageId"), resourcePageId);
}
}
package com.pcloud.book.group.entity;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 实体书购买(ResourcePageBookstore)实体类
*
* @author makejava
* @since 2021-08-16 14:40:27
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResourcePageBookstore extends BaseEntity {
private static final long serialVersionUID = 537657968168101067L;
@ApiModelProperty("实体书购买id")
private Long id;
@ApiModelProperty("资源页id")
private Long resourcePageId;
@ApiModelProperty("服务id")
private Long serveId;
@ApiModelProperty("服务类型;APP/PRODUCT")
private String serveType;
@ApiModelProperty("应用作品相对链接")
private String linkUrl;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 实体书购买(ResourcePageBookstore)实体类
*
* @author makejava
* @since 2021-08-16 14:40:27
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResourcePageBookstoreVO {
@ApiModelProperty("实体书购买id")
private Long id;
@ApiModelProperty("资源页id")
private Long resourcePageId;
@ApiModelProperty("服务id")
private Long serveId;
@ApiModelProperty("相对链接")
private String linkUrl;
@ApiModelProperty("跳转结果页链接")
private String resultUrl;
@ApiModelProperty("服务类型;APP/PRODUCT")
private String serveType;
@ApiModelProperty("服务名称")
private String serveName;
@ApiModelProperty("图片")
private String servePic;
@ApiModelProperty("服务类型")
private String serveTypeCode;
@ApiModelProperty("服务类型名称")
private String serveTypeName;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}
......@@ -2,8 +2,11 @@ package com.pcloud.book.group.vo;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* 自有码H5页面(ResourcePage)实体类
*
......@@ -88,4 +91,7 @@ public class ResourcePageVO extends BaseDto {
* 背景图
*/
private String backgroundImg;
@ApiModelProperty("实体书购买")
private List<ResourcePageBookstoreVO> resourcePageBookstoreList;
}
......@@ -4,6 +4,7 @@ import java.util.List;
import javax.validation.constraints.NotNull;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -58,4 +59,7 @@ public class UpdateResourcePageVO {
* 背景图
*/
private String backgroundImg;
@ApiModelProperty("实体书购买")
private List<ResourcePageBookstore> resourcePageBookstoreList;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.group.dao.impl.ResourcePageBookstoreDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.group.entity.ResourcePageBookstore">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="resource_page_id" property="resourcePageId" jdbcType="BIGINT"/>
<result column="serve_id" property="serveId" jdbcType="BIGINT"/>
<result column="serve_type" property="serveType" jdbcType="VARCHAR"/>
<result column="link_url" property="linkUrl" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
<resultMap id="BaseDtoResultMap" extends="BaseResultMap" type="com.pcloud.book.group.vo.ResourcePageBookstoreVO">
</resultMap>
<sql id="Base_Column_List">
id, resource_page_id, serve_id, serve_type, link_url, create_time
</sql>
<select id="getById" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM resource_page_bookstore
WHERE id = #{id}
</select>
<select id="getByResourcePageId" resultMap="BaseDtoResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM resource_page_bookstore
WHERE resource_page_id = #{resourcePageId}
</select>
<select id="getList" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM resource_page_bookstore
</select>
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
INSERT INTO resource_page_bookstore(
resource_page_id,
serve_id,
serve_type,
link_url,
create_time
) VALUES (
#{resourcePageId, jdbcType=BIGINT},
#{serveId, jdbcType=BIGINT},
#{serveType, jdbcType=VARCHAR},
#{linkUrl, jdbcType=VARCHAR},
NOW()
)
</insert>
<insert id="batchInsert" keyProperty="id" useGeneratedKeys="true">
INSERT INTO resource_page_bookstore (
resource_page_id,
serve_id,
serve_type,
link_url,
create_time
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.resourcePageId, jdbcType=BIGINT},
#{item.serveId, jdbcType=BIGINT},
#{item.serveType, jdbcType=VARCHAR},
#{item.linkUrl, jdbcType=VARCHAR},
NOW()
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update id="update">
UPDATE resource_page_bookstore
<set>
<if test="resourcePageId != null">
resource_page_id = #{resourcePageId},
</if>
<if test="serveId != null">
serve_id = #{serveId},
</if>
<if test="serveType != null and serveType != ''">
serve_type = #{serveType},
</if>
<if test="linkUrl != null and linkUrl != ''">
link_url = #{linkUrl},
</if>
</set>
WHERE id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
DELETE FROM resource_page_bookstore WHERE id = #{id}
</delete>
<!--通过主键删除-->
<delete id="deleteByResourcePageId">
DELETE FROM resource_page_bookstore WHERE resource_page_id = #{resourcePageId}
</delete>
</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