Commit 59cffd77 by 刘正

现代纸书版权保护

parent 0c2d835b
......@@ -6,7 +6,6 @@ import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.consumer.app.AssistTempletConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.user.PartyConsr;
......@@ -16,10 +15,13 @@ import com.pcloud.book.copyright.biz.BookAuthServeBiz;
import com.pcloud.book.copyright.biz.BookAuthUserBiz;
import com.pcloud.book.copyright.biz.BookExportRecordBiz;
import com.pcloud.book.copyright.constants.CopyrightConstants;
import com.pcloud.book.copyright.dao.BookAuthCodeDao;
import com.pcloud.book.copyright.dao.BookAuthInfoDao;
import com.pcloud.book.copyright.dao.BookAuthUserDao;
import com.pcloud.book.copyright.dao.BookClickBuyRecordDao;
import com.pcloud.book.copyright.dto.BookAuthInfoCountDTO;
import com.pcloud.book.copyright.dto.BookAuthTotalCountDTO;
import com.pcloud.book.copyright.dto.HaveUsedAuthCode;
import com.pcloud.book.copyright.entity.BookAuthCode;
import com.pcloud.book.copyright.entity.BookAuthInfo;
import com.pcloud.book.copyright.entity.BookExportRecord;
......@@ -30,6 +32,7 @@ import com.pcloud.book.copyright.vo.BookAuthInfoAndServesVO;
import com.pcloud.book.copyright.vo.BookAuthInfoVO;
import com.pcloud.book.copyright.vo.BookAuthInfoWechatVO;
import com.pcloud.book.copyright.vo.GetAuthInfoParam;
import com.pcloud.book.copyright.vo.HaveSetAuthBook;
import com.pcloud.book.copyright.vo.ListHaveAuthBookParam;
import com.pcloud.book.copyright.vo.ListHaveAuthGroupBookParam;
import com.pcloud.book.copyright.vo.ServeVO;
......@@ -59,8 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
* @author lily
......@@ -105,6 +107,9 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz {
@Autowired
private PartyConsr partyConsr;
@Autowired
private BookAuthUserDao bookAuthUserDao;
@Override
@Transactional(rollbackFor = Exception.class)
public void setBookAuthOpen(SetAuthOpenParam setAuthOpenParam, Long adviserId) {
......@@ -427,6 +432,15 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz {
removeNotInbook(serves, bookId, channelId, adviserId);
bookAuthInfoAndServesVO.setServes(serves);
}
List<HaveUsedAuthCode> result = bookAuthUserDao.checkHaveUsedAuthCode(Lists.newArrayList(bookAuthInfoAndServesVO.getBookId()));
if(result != null && result.size() == 1){
bookAuthInfoAndServesVO.setHaveUsedAuthCode(result.get(0).getHaveUsedAuthCode() != 0);
}
else{
bookAuthInfoAndServesVO.setHaveUsedAuthCode(false);
}
return bookAuthInfoAndServesVO;
}
......@@ -468,13 +482,29 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz {
paramMap.put("templetId", listHaveAuthBookParam.getTempletId());
paramMap.put("secondTempletIds", Optional.ofNullable(listHaveAuthBookParam.getSecondTempletId()).map(Lists::newArrayList).orElse(Lists.newArrayList()));
PageParam pageParam = new PageParam(listHaveAuthBookParam.getCurrentPage(), listHaveAuthBookParam.getNumPerPage());
PageBeanNew pageBean = bookAuthInfoDao.listPageNew(pageParam, paramMap, "listHaveSetAuthBook");
PageBeanNew<HaveSetAuthBook> pageBean = bookAuthInfoDao.listPageNew(pageParam, paramMap, "listHaveSetAuthBook");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBeanNew(listHaveAuthBookParam.getCurrentPage(), listHaveAuthBookParam.getNumPerPage(), new ArrayList<>());
return new PageBeanNew<>(listHaveAuthBookParam.getCurrentPage(), listHaveAuthBookParam.getNumPerPage(), new ArrayList<>());
}
setHaveUseAuthCode(pageBean);
return pageBean;
}
private void setHaveUseAuthCode(PageBeanNew<HaveSetAuthBook> pageBean){
List<Long> bookIds = pageBean.getRecordList().stream().map(HaveSetAuthBook::getBookId).collect(Collectors.toList());
List<HaveUsedAuthCode> result = bookAuthUserDao.checkHaveUsedAuthCode(bookIds);
for(HaveSetAuthBook book: pageBean.getRecordList()){
book.setHaveUsedAuthCode(false);
for(HaveUsedAuthCode code: result){
if(code.getBookId().equals(book.getBookId())){
book.setHaveUsedAuthCode(code.getHaveUsedAuthCode() != 0);
break;
}
}
}
}
@Override
@ParamLog("获取设置过正版授权的社群书")
public PageBeanNew listHaveSetAuthGroupBook(ListHaveAuthGroupBookParam listHaveAuthGroupBookParam, Long adviserId) {
......
package com.pcloud.book.copyright.biz.impl;
import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.live.LiveCons;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.copyright.biz.BookAuthUserBiz;
import com.pcloud.book.copyright.dao.BookAuthServeDao;
import com.pcloud.book.copyright.dao.BookAuthUserDao;
......@@ -56,6 +59,8 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
private BookAuthServeDao bookAuthServeDao;
@Autowired
private LiveCons liveCons;
@Autowired
private ProductConsr productConsr;
@ParamLog(value = "获取授权用户数量")
@Override
......@@ -167,6 +172,12 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
@Override
public Boolean checkIsHaveAuthWithServer(String userInfo, Long serverId, String serverType) {
// 如果包含超级作者资源, 则直接返回
if(checkIsSuperProduct(serverId)){
return false;
}
// 否则查询授权关系
Long bookId = qrcodeSceneConsr.getBookId4SceneId(Cookie.getId(userInfo,Cookie._SCENE_ID));
Long channelId = Cookie.getId(userInfo, Cookie._CHANNEL_ID);
Long adviserId = Cookie.getId(userInfo,Cookie._ADVISER_ID);
......@@ -202,6 +213,16 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
return false;
}
// 判断是否为超级作者的商品
private Boolean checkIsSuperProduct(Long serverId) {
Map<Long, Boolean> map = productConsr.getIsSuperByProductIdList(Lists.newArrayList(serverId));
if (map != null && map.containsKey(serverId)) {
return map.get(serverId);
}
return false;
}
@Override
public BookAuthCodeUserVO getAuthUserTotalCount(List<Long> adviserIds, List<Long> removeAdviserIds) {
BookAuthCodeUserVO bookAuthCodeUserVO = bookAuthUserDao.getAuthUserTotalCount(adviserIds, removeAdviserIds);
......
......@@ -2,9 +2,8 @@ package com.pcloud.book.copyright.dao;
import com.pcloud.book.copyright.dto.BookAuthCodeDTO;
import com.pcloud.book.copyright.entity.BookAuthCode;
import com.pcloud.book.copyright.dto.HaveUsedAuthCode;
import com.pcloud.common.core.dao.BaseDao;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import java.util.List;
import java.util.Map;
......
package com.pcloud.book.copyright.dao;
import com.pcloud.book.copyright.dto.HaveUsedAuthCode;
import com.pcloud.book.copyright.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
......@@ -55,4 +56,9 @@ public interface BookAuthUserDao extends BaseDao<BookAuthUser> {
* 校验用户是否授权
*/
Boolean checkUserIsHaveAuth(Map<String, Object> paramMap);
/**
* 检查给定的书籍是否具有使用过的授权码
*/
List<HaveUsedAuthCode> checkHaveUsedAuthCode(List<Long> bookIds);
}
......@@ -3,8 +3,9 @@ package com.pcloud.book.copyright.dao.impl;
import com.pcloud.book.copyright.dao.BookAuthCodeDao;
import com.pcloud.book.copyright.dto.BookAuthCodeDTO;
import com.pcloud.book.copyright.entity.BookAuthCode;
import com.pcloud.book.copyright.dto.HaveUsedAuthCode;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.page.PageBeanNew;
import org.springframework.stereotype.Component;
import java.util.HashMap;
......@@ -78,5 +79,4 @@ public class BookAuthCodeDaoImpl extends BaseDaoImpl<BookAuthCode> implements Bo
return this.getSessionTemplate().selectOne(this.getStatement("getBaseById"), codeId);
}
}
package com.pcloud.book.copyright.dao.impl;
import com.pcloud.book.copyright.dao.BookAuthUserDao;
import com.pcloud.book.copyright.dto.HaveUsedAuthCode;
import com.pcloud.book.copyright.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
......@@ -93,4 +94,12 @@ public class BookAuthUserDaoImpl extends BaseDaoImpl<BookAuthUser> implements Bo
return this.getSqlSession().selectOne(this.getStatement("checkUserIsHaveAuth"), paramMap);
}
/**
* 检查给定的书籍是否具有使用过的授权码
*/
@Override
public List<HaveUsedAuthCode> checkHaveUsedAuthCode(List<Long> bookIds) {
return this.getSessionTemplate().selectList(this.getStatement("haveUsedAuthCode"), bookIds);
}
}
package com.pcloud.book.copyright.dto;
import io.swagger.annotations.ApiModelProperty;
public class HaveUsedAuthCode {
@ApiModelProperty("图书标识")
private Long bookId;
@ApiModelProperty("是否有使用过的授权码")
private Long haveUsedAuthCode;
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getHaveUsedAuthCode() {
return haveUsedAuthCode;
}
public void setHaveUsedAuthCode(Long haveUsedAuthCode) {
this.haveUsedAuthCode = haveUsedAuthCode;
}
@Override
public String toString() {
return "HaveUsedAuthCode{" +
"bookId=" + bookId +
", haveUsedAuthCode=" + haveUsedAuthCode +
'}';
}
}
......@@ -49,6 +49,9 @@ public class BookAuthInfoAndServesVO implements Serializable {
@ApiModelProperty("服务")
private List<ServeVO> serves;
@ApiModelProperty("是否有使用过的授权码")
private Boolean haveUsedAuthCode;
public Long getId() {
return id;
......@@ -138,6 +141,14 @@ public class BookAuthInfoAndServesVO implements Serializable {
this.serves = serves;
}
public Boolean getHaveUsedAuthCode() {
return haveUsedAuthCode;
}
public void setHaveUsedAuthCode(Boolean haveUsedAuthCode) {
this.haveUsedAuthCode = haveUsedAuthCode;
}
@Override
public String toString() {
return "BookAuthInfoAndServesVO{" +
......@@ -152,6 +163,7 @@ public class BookAuthInfoAndServesVO implements Serializable {
", checkType=" + checkType +
", locationDesc='" + locationDesc + '\'' +
", serves=" + serves +
", haveUsedAuthCode=" + haveUsedAuthCode +
'}';
}
}
......@@ -47,6 +47,9 @@ public class HaveSetAuthBook implements Serializable {
@ApiModelProperty("是否是主编辑")
private Boolean isMainEditor;
@ApiModelProperty("是否有使用过的授权码")
private Boolean haveUsedAuthCode;
public Long getBookId() {
return bookId;
}
......@@ -135,6 +138,14 @@ public class HaveSetAuthBook implements Serializable {
this.id = id;
}
public Boolean getHaveUsedAuthCode() {
return haveUsedAuthCode;
}
public void setHaveUsedAuthCode(Boolean haveUsedAuthCode) {
this.haveUsedAuthCode = haveUsedAuthCode;
}
@Override
public String toString() {
return "HaveSetAuthBook{" +
......@@ -149,6 +160,7 @@ public class HaveSetAuthBook implements Serializable {
", price=" + price +
", bookStatus=" + bookStatus +
", isMainEditor=" + isMainEditor +
", haveUsedAuthCode=" + haveUsedAuthCode +
'}';
}
}
......@@ -200,4 +200,13 @@
</foreach>
</select>
<select id="haveUsedAuthCode" parameterType="list" resultType="com.pcloud.book.copyright.dto.HaveUsedAuthCode">
SELECT book_id bookId, count(book_id) haveUsedAuthCode from book_auth_user
WHERE book_id in
<foreach collection="list" open="(" item="item" close=")" separator=",">
${item}
</foreach>
GROUP BY book_id
</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