Commit 7f4b8a5b by 阮思源

Merge branch 'feature-lz-product-super' into 'master'

现代纸书版权保护

See merge request rays/pcloud-book!279
parents 0c2d835b 59cffd77
...@@ -6,7 +6,6 @@ import com.pcloud.book.base.enums.BookStatusEnum; ...@@ -6,7 +6,6 @@ import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.BookDto; 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.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.common.ExportConsr; import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.user.PartyConsr; import com.pcloud.book.consumer.user.PartyConsr;
...@@ -16,10 +15,13 @@ import com.pcloud.book.copyright.biz.BookAuthServeBiz; ...@@ -16,10 +15,13 @@ import com.pcloud.book.copyright.biz.BookAuthServeBiz;
import com.pcloud.book.copyright.biz.BookAuthUserBiz; import com.pcloud.book.copyright.biz.BookAuthUserBiz;
import com.pcloud.book.copyright.biz.BookExportRecordBiz; import com.pcloud.book.copyright.biz.BookExportRecordBiz;
import com.pcloud.book.copyright.constants.CopyrightConstants; 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.BookAuthInfoDao;
import com.pcloud.book.copyright.dao.BookAuthUserDao;
import com.pcloud.book.copyright.dao.BookClickBuyRecordDao; import com.pcloud.book.copyright.dao.BookClickBuyRecordDao;
import com.pcloud.book.copyright.dto.BookAuthInfoCountDTO; import com.pcloud.book.copyright.dto.BookAuthInfoCountDTO;
import com.pcloud.book.copyright.dto.BookAuthTotalCountDTO; 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.BookAuthCode;
import com.pcloud.book.copyright.entity.BookAuthInfo; import com.pcloud.book.copyright.entity.BookAuthInfo;
import com.pcloud.book.copyright.entity.BookExportRecord; import com.pcloud.book.copyright.entity.BookExportRecord;
...@@ -30,6 +32,7 @@ import com.pcloud.book.copyright.vo.BookAuthInfoAndServesVO; ...@@ -30,6 +32,7 @@ import com.pcloud.book.copyright.vo.BookAuthInfoAndServesVO;
import com.pcloud.book.copyright.vo.BookAuthInfoVO; import com.pcloud.book.copyright.vo.BookAuthInfoVO;
import com.pcloud.book.copyright.vo.BookAuthInfoWechatVO; import com.pcloud.book.copyright.vo.BookAuthInfoWechatVO;
import com.pcloud.book.copyright.vo.GetAuthInfoParam; 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.ListHaveAuthBookParam;
import com.pcloud.book.copyright.vo.ListHaveAuthGroupBookParam; import com.pcloud.book.copyright.vo.ListHaveAuthGroupBookParam;
import com.pcloud.book.copyright.vo.ServeVO; import com.pcloud.book.copyright.vo.ServeVO;
...@@ -59,8 +62,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -59,8 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutorService; import java.util.stream.Collectors;
import java.util.concurrent.Executors;
/** /**
* @author lily * @author lily
...@@ -105,6 +107,9 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz { ...@@ -105,6 +107,9 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz {
@Autowired @Autowired
private PartyConsr partyConsr; private PartyConsr partyConsr;
@Autowired
private BookAuthUserDao bookAuthUserDao;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void setBookAuthOpen(SetAuthOpenParam setAuthOpenParam, Long adviserId) { public void setBookAuthOpen(SetAuthOpenParam setAuthOpenParam, Long adviserId) {
...@@ -427,6 +432,15 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz { ...@@ -427,6 +432,15 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz {
removeNotInbook(serves, bookId, channelId, adviserId); removeNotInbook(serves, bookId, channelId, adviserId);
bookAuthInfoAndServesVO.setServes(serves); 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; return bookAuthInfoAndServesVO;
} }
...@@ -468,13 +482,29 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz { ...@@ -468,13 +482,29 @@ public class BookAuthInfoBizImpl implements BookAuthInfoBiz {
paramMap.put("templetId", listHaveAuthBookParam.getTempletId()); paramMap.put("templetId", listHaveAuthBookParam.getTempletId());
paramMap.put("secondTempletIds", Optional.ofNullable(listHaveAuthBookParam.getSecondTempletId()).map(Lists::newArrayList).orElse(Lists.newArrayList())); paramMap.put("secondTempletIds", Optional.ofNullable(listHaveAuthBookParam.getSecondTempletId()).map(Lists::newArrayList).orElse(Lists.newArrayList()));
PageParam pageParam = new PageParam(listHaveAuthBookParam.getCurrentPage(), listHaveAuthBookParam.getNumPerPage()); 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())) { 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; 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 @Override
@ParamLog("获取设置过正版授权的社群书") @ParamLog("获取设置过正版授权的社群书")
public PageBeanNew listHaveSetAuthGroupBook(ListHaveAuthGroupBookParam listHaveAuthGroupBookParam, Long adviserId) { public PageBeanNew listHaveSetAuthGroupBook(ListHaveAuthGroupBookParam listHaveAuthGroupBookParam, Long adviserId) {
......
package com.pcloud.book.copyright.biz.impl; package com.pcloud.book.copyright.biz.impl;
import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr; import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.live.LiveCons; 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.biz.BookAuthUserBiz;
import com.pcloud.book.copyright.dao.BookAuthServeDao; import com.pcloud.book.copyright.dao.BookAuthServeDao;
import com.pcloud.book.copyright.dao.BookAuthUserDao; import com.pcloud.book.copyright.dao.BookAuthUserDao;
...@@ -56,6 +59,8 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -56,6 +59,8 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
private BookAuthServeDao bookAuthServeDao; private BookAuthServeDao bookAuthServeDao;
@Autowired @Autowired
private LiveCons liveCons; private LiveCons liveCons;
@Autowired
private ProductConsr productConsr;
@ParamLog(value = "获取授权用户数量") @ParamLog(value = "获取授权用户数量")
@Override @Override
...@@ -167,6 +172,12 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -167,6 +172,12 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
@Override @Override
public Boolean checkIsHaveAuthWithServer(String userInfo, Long serverId, String serverType) { 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 bookId = qrcodeSceneConsr.getBookId4SceneId(Cookie.getId(userInfo,Cookie._SCENE_ID));
Long channelId = Cookie.getId(userInfo, Cookie._CHANNEL_ID); Long channelId = Cookie.getId(userInfo, Cookie._CHANNEL_ID);
Long adviserId = Cookie.getId(userInfo,Cookie._ADVISER_ID); Long adviserId = Cookie.getId(userInfo,Cookie._ADVISER_ID);
...@@ -202,6 +213,16 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -202,6 +213,16 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
return false; 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 @Override
public BookAuthCodeUserVO getAuthUserTotalCount(List<Long> adviserIds, List<Long> removeAdviserIds) { public BookAuthCodeUserVO getAuthUserTotalCount(List<Long> adviserIds, List<Long> removeAdviserIds) {
BookAuthCodeUserVO bookAuthCodeUserVO = bookAuthUserDao.getAuthUserTotalCount(adviserIds, removeAdviserIds); BookAuthCodeUserVO bookAuthCodeUserVO = bookAuthUserDao.getAuthUserTotalCount(adviserIds, removeAdviserIds);
......
...@@ -2,9 +2,8 @@ package com.pcloud.book.copyright.dao; ...@@ -2,9 +2,8 @@ package com.pcloud.book.copyright.dao;
import com.pcloud.book.copyright.dto.BookAuthCodeDTO; import com.pcloud.book.copyright.dto.BookAuthCodeDTO;
import com.pcloud.book.copyright.entity.BookAuthCode; 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.core.dao.BaseDao;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
......
package com.pcloud.book.copyright.dao; 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.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.ProvinceTop10VO; import com.pcloud.book.copyright.vo.ProvinceTop10VO;
...@@ -55,4 +56,9 @@ public interface BookAuthUserDao extends BaseDao<BookAuthUser> { ...@@ -55,4 +56,9 @@ public interface BookAuthUserDao extends BaseDao<BookAuthUser> {
* 校验用户是否授权 * 校验用户是否授权
*/ */
Boolean checkUserIsHaveAuth(Map<String, Object> paramMap); Boolean checkUserIsHaveAuth(Map<String, Object> paramMap);
/**
* 检查给定的书籍是否具有使用过的授权码
*/
List<HaveUsedAuthCode> checkHaveUsedAuthCode(List<Long> bookIds);
} }
...@@ -3,8 +3,9 @@ package com.pcloud.book.copyright.dao.impl; ...@@ -3,8 +3,9 @@ package com.pcloud.book.copyright.dao.impl;
import com.pcloud.book.copyright.dao.BookAuthCodeDao; import com.pcloud.book.copyright.dao.BookAuthCodeDao;
import com.pcloud.book.copyright.dto.BookAuthCodeDTO; import com.pcloud.book.copyright.dto.BookAuthCodeDTO;
import com.pcloud.book.copyright.entity.BookAuthCode; 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.core.dao.BaseDaoImpl;
import com.pcloud.common.page.PageBeanNew;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
...@@ -78,5 +79,4 @@ public class BookAuthCodeDaoImpl extends BaseDaoImpl<BookAuthCode> implements Bo ...@@ -78,5 +79,4 @@ public class BookAuthCodeDaoImpl extends BaseDaoImpl<BookAuthCode> implements Bo
return this.getSessionTemplate().selectOne(this.getStatement("getBaseById"), codeId); return this.getSessionTemplate().selectOne(this.getStatement("getBaseById"), codeId);
} }
} }
package com.pcloud.book.copyright.dao.impl; package com.pcloud.book.copyright.dao.impl;
import com.pcloud.book.copyright.dao.BookAuthUserDao; 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.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.ProvinceTop10VO; import com.pcloud.book.copyright.vo.ProvinceTop10VO;
...@@ -93,4 +94,12 @@ public class BookAuthUserDaoImpl extends BaseDaoImpl<BookAuthUser> implements Bo ...@@ -93,4 +94,12 @@ public class BookAuthUserDaoImpl extends BaseDaoImpl<BookAuthUser> implements Bo
return this.getSqlSession().selectOne(this.getStatement("checkUserIsHaveAuth"), paramMap); 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 { ...@@ -49,6 +49,9 @@ public class BookAuthInfoAndServesVO implements Serializable {
@ApiModelProperty("服务") @ApiModelProperty("服务")
private List<ServeVO> serves; private List<ServeVO> serves;
@ApiModelProperty("是否有使用过的授权码")
private Boolean haveUsedAuthCode;
public Long getId() { public Long getId() {
return id; return id;
...@@ -138,6 +141,14 @@ public class BookAuthInfoAndServesVO implements Serializable { ...@@ -138,6 +141,14 @@ public class BookAuthInfoAndServesVO implements Serializable {
this.serves = serves; this.serves = serves;
} }
public Boolean getHaveUsedAuthCode() {
return haveUsedAuthCode;
}
public void setHaveUsedAuthCode(Boolean haveUsedAuthCode) {
this.haveUsedAuthCode = haveUsedAuthCode;
}
@Override @Override
public String toString() { public String toString() {
return "BookAuthInfoAndServesVO{" + return "BookAuthInfoAndServesVO{" +
...@@ -152,6 +163,7 @@ public class BookAuthInfoAndServesVO implements Serializable { ...@@ -152,6 +163,7 @@ public class BookAuthInfoAndServesVO implements Serializable {
", checkType=" + checkType + ", checkType=" + checkType +
", locationDesc='" + locationDesc + '\'' + ", locationDesc='" + locationDesc + '\'' +
", serves=" + serves + ", serves=" + serves +
", haveUsedAuthCode=" + haveUsedAuthCode +
'}'; '}';
} }
} }
...@@ -47,6 +47,9 @@ public class HaveSetAuthBook implements Serializable { ...@@ -47,6 +47,9 @@ public class HaveSetAuthBook implements Serializable {
@ApiModelProperty("是否是主编辑") @ApiModelProperty("是否是主编辑")
private Boolean isMainEditor; private Boolean isMainEditor;
@ApiModelProperty("是否有使用过的授权码")
private Boolean haveUsedAuthCode;
public Long getBookId() { public Long getBookId() {
return bookId; return bookId;
} }
...@@ -135,6 +138,14 @@ public class HaveSetAuthBook implements Serializable { ...@@ -135,6 +138,14 @@ public class HaveSetAuthBook implements Serializable {
this.id = id; this.id = id;
} }
public Boolean getHaveUsedAuthCode() {
return haveUsedAuthCode;
}
public void setHaveUsedAuthCode(Boolean haveUsedAuthCode) {
this.haveUsedAuthCode = haveUsedAuthCode;
}
@Override @Override
public String toString() { public String toString() {
return "HaveSetAuthBook{" + return "HaveSetAuthBook{" +
...@@ -149,6 +160,7 @@ public class HaveSetAuthBook implements Serializable { ...@@ -149,6 +160,7 @@ public class HaveSetAuthBook implements Serializable {
", price=" + price + ", price=" + price +
", bookStatus=" + bookStatus + ", bookStatus=" + bookStatus +
", isMainEditor=" + isMainEditor + ", isMainEditor=" + isMainEditor +
", haveUsedAuthCode=" + haveUsedAuthCode +
'}'; '}';
} }
} }
...@@ -200,4 +200,13 @@ ...@@ -200,4 +200,13 @@
</foreach> </foreach>
</select> </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> </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