Commit dc03a54c by lili

Merge remote-tracking branch 'origin/master'

parents edc82ff7 3b668d13
...@@ -130,6 +130,12 @@ public class BookAppealDto extends BaseEntity{ ...@@ -130,6 +130,12 @@ public class BookAppealDto extends BaseEntity{
* 运营名称 * 运营名称
*/ */
private String channelName; private String channelName;
/**
* 是否社群书
*/
private Boolean isBookGroup;
public Long getBookAppealId() { public Long getBookAppealId() {
return bookAppealId; return bookAppealId;
} }
...@@ -307,6 +313,14 @@ public class BookAppealDto extends BaseEntity{ ...@@ -307,6 +313,14 @@ public class BookAppealDto extends BaseEntity{
this.channelName = channelName; this.channelName = channelName;
} }
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
@Override @Override
public String toString() { public String toString() {
return "BookAppealDto{" + return "BookAppealDto{" +
...@@ -332,6 +346,7 @@ public class BookAppealDto extends BaseEntity{ ...@@ -332,6 +346,7 @@ public class BookAppealDto extends BaseEntity{
", templetId=" + templetId + ", templetId=" + templetId +
", haveDiffChannel=" + haveDiffChannel + ", haveDiffChannel=" + haveDiffChannel +
", channelName='" + channelName + '\'' + ", channelName='" + channelName + '\'' +
", isBookGroup=" + isBookGroup +
'}'; '}';
} }
} }
...@@ -100,6 +100,11 @@ public class BookAppeal extends BaseEntity{ ...@@ -100,6 +100,11 @@ public class BookAppeal extends BaseEntity{
* 被诉方 * 被诉方
*/ */
private List<BookDefendant> defendant; private List<BookDefendant> defendant;
/**
* 是否社群书
*/
private Boolean isBookGroup;
public Long getBookAppealId() { public Long getBookAppealId() {
return bookAppealId; return bookAppealId;
...@@ -230,14 +235,22 @@ public class BookAppeal extends BaseEntity{ ...@@ -230,14 +235,22 @@ public class BookAppeal extends BaseEntity{
this.templetId = templetId; this.templetId = templetId;
} }
@Override public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
@Override
public String toString() { public String toString() {
return "BookAppeal [bookAppealId=" + bookAppealId + ", bookId=" + bookId + ", channelId=" + channelId return "BookAppeal [bookAppealId=" + bookAppealId + ", bookId=" + bookId + ", channelId=" + channelId
+ ", templetId=" + templetId + ", reason=" + reason + ", declarant=" + declarant + ", phone=" + phone + ", templetId=" + templetId + ", reason=" + reason + ", declarant=" + declarant + ", phone=" + phone
+ ", appealSubmitDate=" + appealSubmitDate + ", appealState=" + appealState + ", auditReason=" + ", appealSubmitDate=" + appealSubmitDate + ", appealState=" + appealState + ", auditReason="
+ auditReason + ", auditUser=" + auditUser + ", createdUser=" + createdUser + ", createdDate=" + auditReason + ", auditUser=" + auditUser + ", createdUser=" + createdUser + ", createdDate="
+ createdDate + ", lastModifiedUser=" + lastModifiedUser + ", lastModifiedDate=" + lastModifiedDate + createdDate + ", lastModifiedUser=" + lastModifiedUser + ", lastModifiedDate=" + lastModifiedDate
+ ", defendant=" + defendant + "]"; + ", defendant=" + defendant + ", isBookGroup=" + isBookGroup + "]";
} }
} }
...@@ -24,6 +24,11 @@ public class CountDto extends BaseDto { ...@@ -24,6 +24,11 @@ public class CountDto extends BaseDto {
*/ */
private Integer count = 0; private Integer count = 0;
/**
* 社群书数量
*/
private Integer bookGroupCount = 0;
public Integer getCount() { public Integer getCount() {
return count; return count;
} }
...@@ -32,9 +37,19 @@ public class CountDto extends BaseDto { ...@@ -32,9 +37,19 @@ public class CountDto extends BaseDto {
this.count = count; this.count = count;
} }
@Override public Integer getBookGroupCount() {
public String toString() { return bookGroupCount;
return "CountDto [count=" + count + "]"; }
}
public void setBookGroupCount(Integer bookGroupCount) {
this.bookGroupCount = bookGroupCount;
}
@Override
public String toString() {
return "CountDto{" +
"count=" + count +
", bookGroupCount=" + bookGroupCount +
"} ";
}
} }
...@@ -446,6 +446,11 @@ public class BookDto extends BaseDto { ...@@ -446,6 +446,11 @@ public class BookDto extends BaseDto {
* 社群码数据 * 社群码数据
*/ */
/** /**
* 是否是社群书
*/
private Boolean isBookGroup;
/**
* 社群码ID * 社群码ID
*/ */
private Long bookGroupId; private Long bookGroupId;
...@@ -1259,6 +1264,13 @@ public class BookDto extends BaseDto { ...@@ -1259,6 +1264,13 @@ public class BookDto extends BaseDto {
this.secondTypeCode = secondTypeCode; this.secondTypeCode = secondTypeCode;
} }
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
@Override @Override
public String toString() { public String toString() {
return "BookDto{" + return "BookDto{" +
...@@ -1354,6 +1366,7 @@ public class BookDto extends BaseDto { ...@@ -1354,6 +1366,7 @@ public class BookDto extends BaseDto {
", groupPersonCount=" + groupPersonCount + ", groupPersonCount=" + groupPersonCount +
", groupCount=" + groupCount + ", groupCount=" + groupCount +
", totalIncome=" + totalIncome + ", totalIncome=" + totalIncome +
", isBookGroup=" + isBookGroup +
", groupQrcodeLink='" + groupQrcodeLink + '\'' + ", groupQrcodeLink='" + groupQrcodeLink + '\'' +
", secondTempletId=" + secondTempletId + ", secondTempletId=" + secondTempletId +
", secondTypeCode='" + secondTypeCode + '\'' + ", secondTypeCode='" + secondTypeCode + '\'' +
......
...@@ -5,31 +5,27 @@ import java.util.Date; ...@@ -5,31 +5,27 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService;
import com.pcloud.book.appeal.dao.BookAppealResultDao; import java.util.concurrent.Executors;
import com.pcloud.book.appeal.entity.BookAppealResult;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.common.utils.DateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; 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 com.alibaba.druid.util.StringUtils; import com.alibaba.druid.util.StringUtils;
import com.pcloud.book.appeal.biz.BookAppealBiz; import com.pcloud.book.appeal.biz.BookAppealBiz;
import com.pcloud.book.appeal.dao.BookAppealDao; import com.pcloud.book.appeal.dao.BookAppealDao;
import com.pcloud.book.appeal.dao.BookAppealResultDao;
import com.pcloud.book.appeal.dao.BookDefendantDao; import com.pcloud.book.appeal.dao.BookDefendantDao;
import com.pcloud.book.appeal.dto.AppealAdviserDto; import com.pcloud.book.appeal.dto.AppealAdviserDto;
import com.pcloud.book.appeal.dto.BookAppealResultDto;
import com.pcloud.book.appeal.dto.BookAppealDto; import com.pcloud.book.appeal.dto.BookAppealDto;
import com.pcloud.book.appeal.dto.BookAppealResultDto;
import com.pcloud.book.appeal.entity.BookAppeal; import com.pcloud.book.appeal.entity.BookAppeal;
import com.pcloud.book.appeal.entity.BookAppealResult;
import com.pcloud.book.base.enums.AppealStateEnum; import com.pcloud.book.base.enums.AppealStateEnum;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookAdviserBiz; import com.pcloud.book.book.biz.BookAdviserBiz;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dao.BookAdviserDao; import com.pcloud.book.book.dao.BookAdviserDao;
import com.pcloud.book.book.dto.BookAdviserDto; import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
...@@ -41,632 +37,607 @@ import com.pcloud.book.consumer.channel.QrcodeSceneConsr; ...@@ -41,632 +37,607 @@ import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.message.TemplateConsr; import com.pcloud.book.consumer.message.TemplateConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.BookcaseConsr; import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.common.core.constant.SceneCode; import com.pcloud.common.core.constant.SceneCode;
import com.pcloud.common.core.constant.SendType; import com.pcloud.common.core.constant.SendType;
import com.pcloud.common.core.constant.SystemCode; import com.pcloud.common.core.constant.SystemCode;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* 书刊申诉业务处理实现类 * 书刊申诉业务处理实现类
* * @version 1.0
* @author:lili * @author:lili
* @date 创建时间:2017年3月30日 下午3:51:19 * @date 创建时间:2017年3月30日 下午3:51:19
* @version 1.0
* @return * @return
*/ */
@Component("bookAppealBiz") @Component("bookAppealBiz")
public class BookAppealBizImpl implements BookAppealBiz { public class BookAppealBizImpl implements BookAppealBiz {
/** /**
* *
*/ */
private static final Logger LOGGER = LoggerFactory.getLogger(BookAppealBizImpl.class); private static final Logger LOGGER = LoggerFactory.getLogger(BookAppealBizImpl.class);
@Autowired @Autowired
private BookAppealDao bookAppealDao; private BookAppealDao bookAppealDao;
@Autowired @Autowired
private BookSet bookSet; private BookSet bookSet;
@Autowired @Autowired
private TemplateConsr templateConsr; private TemplateConsr templateConsr;
@Autowired @Autowired
private BookAdviserBiz bookAdviserBiz; private BookAdviserBiz bookAdviserBiz;
@Autowired @Autowired
private BookcaseConsr bookcaseConsr; private BookcaseConsr bookcaseConsr;
@Autowired @Autowired
private BookBiz bookBiz; private BookBiz bookBiz;
@Autowired @Autowired
private AdviserConsr adviserConsr; private AdviserConsr adviserConsr;
@Autowired @Autowired
private BookAdviserDao bookAdviserDao; private BookAdviserDao bookAdviserDao;
@Autowired @Autowired
private QrcodeSceneConsr qrcodeSceneConsr; private QrcodeSceneConsr qrcodeSceneConsr;
@Autowired @Autowired
private BookDefendantDao bookDefendantDao; private BookDefendantDao bookDefendantDao;
@Autowired @Autowired
private BookAppealResultDao bookAppealResultDao; private BookAppealResultDao bookAppealResultDao;
@Autowired @Autowired
private ChannelConsr channelConsr; private ChannelConsr channelConsr;
@Autowired @Autowired
private BookGroupBiz bookGroupBiz; private BookGroupBiz bookGroupBiz;
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5); private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5);
/**
* 书刊申诉 /**
*/ * 书刊申诉
@Override */
@Transactional(rollbackFor = Exception.class) @Override
public void create(BookAppeal bookAppeal) { @Transactional(rollbackFor = Exception.class)
LOGGER.info("【书籍申诉-编辑】创建书籍申诉信息,<START>."); public void create(BookAppeal bookAppeal) {
this.checkParam(bookAppeal); LOGGER.info("【书籍申诉-编辑】创建书籍申诉信息,<START>.");
// 设置申诉时间 this.checkParam(bookAppeal);
bookAppeal.setAppealSubmitDate(new Date()); // 设置申诉时间
bookAppeal.setAppealState(AppealStateEnum.APPEAL_STATE_WAIT.value); bookAppeal.setAppealSubmitDate(new Date());
bookAppealDao.insert(bookAppeal); bookAppeal.setAppealState(AppealStateEnum.APPEAL_STATE_WAIT.value);
} if (null == bookAppeal.getIsBookGroup()) {
bookAppeal.setIsBookGroup(false);
/** }
* 书刊列表 bookAppealDao.insert(bookAppeal);
*/ }
@Override
public PageBean list(PageParam pageParam, String bookName, Integer appealState) { /**
LOGGER.info("【书籍申诉-平台】获取书籍申诉列表,<START>."); * 书刊列表
Map<String, Object> paramMap = new HashMap<>(); */
paramMap.put("bookName", StringUtils.isEmpty(bookName) ? null : bookName); @Override
paramMap.put("appealState", appealState); public PageBean list(PageParam pageParam, String bookName, Integer appealState) {
PageBean pageBean = bookAppealDao.listPage(pageParam, paramMap, "list"); LOGGER.info("【书籍申诉-平台】获取书籍申诉列表,<START>.");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) Map<String, Object> paramMap = new HashMap<>();
return new PageBean(); paramMap.put("bookName", StringUtils.isEmpty(bookName) ? null : bookName);
// 设置编辑名称 paramMap.put("appealState", appealState);
bookSet.setAdviserName(pageBean.getRecordList()); PageBean pageBean = bookAppealDao.listPage(pageParam, paramMap, "list");
return pageBean; if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList()))
} return new PageBean();
// 设置编辑名称
/** bookSet.setAdviserName(pageBean.getRecordList());
* 获取书刊详情 return pageBean;
*/ }
@Override
public BookAppealDto getById(Long bookAppealId) { /**
LOGGER.info("【书籍申诉-平台】获取书籍申诉详情,<START>.[bookAppealId]" + bookAppealId); * 获取书刊详情
BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppealId); */
if (bookAppealDto != null) { @Override
// 获取书籍信息 public BookAppealDto getById(Long bookAppealId) {
BookDto book = bookBiz.getBaseById(bookAppealDto.getBookId()); LOGGER.info("【书籍申诉-平台】获取书籍申诉详情,<START>.[bookAppealId]" + bookAppealId);
bookAppealDto.setBook(book); BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppealId);
// 设置申诉方以及被诉方基本信息 if (bookAppealDto != null) {
bookSet.setAdviserInfo(bookAppealDto); // 获取书籍信息
} BookDto book = bookBiz.getBaseById(bookAppealDto.getBookId());
return bookAppealDto; bookAppealDto.setBook(book);
// 设置申诉方以及被诉方基本信息
} bookSet.setAdviserInfo(bookAppealDto);
}
/** return bookAppealDto;
* 书刊申诉审核
*/ }
@Override
@Transactional(rollbackFor = Exception.class) /**
public void setupAudit(BookAppeal bookAppeal) { * 书刊申诉审核
LOGGER.info("【书籍申诉-审核-平台】审核书籍申诉,<START>.参数:[bookAppeal]" + bookAppeal.toString()); */
if (bookAppeal.getAppealState() == null) { @Override
throw new BookBizException(BookBizException.PARAM_IS_NULL, "审核状态为空"); @Transactional(rollbackFor = Exception.class)
} public void setupAudit(BookAppeal bookAppeal) {
// 获取申诉基本信息 LOGGER.info("【书籍申诉-审核-平台】审核书籍申诉,<START>.参数:[bookAppeal]" + bookAppeal.toString());
BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppeal.getBookAppealId()); if (bookAppeal.getAppealState() == null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "审核状态为空");
// 获取图书详情 }
BookDto bookDto = bookBiz.getBaseById(bookAppealDto.getBookId()); // 获取申诉基本信息
BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppeal.getBookAppealId());
bookAppealDao.update(bookAppeal);
// 获取图书详情
//获取所有被诉编辑 BookDto bookDto = bookBiz.getBaseById(bookAppealDto.getBookId());
List<BookAdviserDto> adviserBooks = bookAdviserDao.getAdvisers(bookAppealDto.getBookId());
//审核通过 bookAppealDao.update(bookAppeal);
if (AppealStateEnum.APPEAL_STATE_PASS.value.equals(bookAppeal.getAppealState())) {
setOnlyOneAdviser(bookAppealDto.getBookId(), bookAppealDto.getDeclarant(), bookAppealDto.getChannelId(), bookAppealDto.getTempletId(), adviserBooks); //获取所有被诉编辑
} List<BookAdviserDto> adviserBooks = bookAdviserDao.getAdvisers(bookAppealDto.getBookId());
// 设置被诉方 //审核通过
List<BookDefendant> defendants = bookSet.setDefendant(adviserBooks, bookAppeal.getBookAppealId()); if (AppealStateEnum.APPEAL_STATE_PASS.value.equals(bookAppeal.getAppealState())) {
// 添加被诉方 setOnlyOneAdviser(bookAppealDto.getBookId(), bookAppealDto.getDeclarant(), bookAppealDto.getChannelId(), bookAppealDto.getTempletId(), adviserBooks);
bookDefendantDao.insert(defendants); }
//新增申诉结果 // 设置被诉方
insertBookAppealResult(bookAppealDto.getBookId(), bookAppealDto.getBookAppealId()); List<BookDefendant> defendants = bookSet.setDefendant(adviserBooks, bookAppeal.getBookAppealId());
EXECUTOR_SERVICE.execute(new Runnable() { // 添加被诉方
public void run() { bookDefendantDao.insert(defendants);
//发送模板消息 //新增申诉结果
if (AppealStateEnum.APPEAL_STATE_REFUSE.value.equals(bookAppeal.getAppealState())) { insertBookAppealResult(bookAppealDto.getBookId(), bookAppealDto.getBookAppealId());
// 向申诉方发送模板消息(审核不通过) EXECUTOR_SERVICE.execute(new Runnable() {
sendAuditFailTemplate(bookDto.getBookName(), bookAppeal.getAuditReason(), bookAppealDto.getDeclarant(),bookAppealDto.getChannelId()); public void run() {
} else { //发送模板消息
//发送审核通过模板消息 if (AppealStateEnum.APPEAL_STATE_REFUSE.value.equals(bookAppeal.getAppealState())) {
sendAuditSuccessTemplate(bookDto.getBookName(), adviserBooks, bookAppealDto.getDeclarant(), bookAppealDto.getChannelId()); // 向申诉方发送模板消息(审核不通过)
} sendAuditFailTemplate(bookDto.getBookName(), bookAppeal.getAuditReason(), bookAppealDto.getDeclarant(), bookAppealDto.getChannelId());
} } else {
}); //发送审核通过模板消息
} sendAuditSuccessTemplate(bookDto.getBookName(), adviserBooks, bookAppealDto.getDeclarant(), bookAppealDto.getChannelId());
}
/** }
* 设置申诉结果 });
* @param bookId 图书标识 }
* @param bookApprealId 图书申诉标识
*/ /**
@Transactional(rollbackFor = Exception.class) * 设置申诉结果
void insertBookAppealResult(Long bookId, Long bookApprealId){ * @param bookId 图书标识
LOGGER.info("设置申诉结果bookId="+bookId+"bookApprealId="+bookApprealId); * @param bookApprealId 图书申诉标识
List<BookAdviserDto> adviserBooks = bookAdviserDao.getAdvisers(bookId); */
if(ListUtils.isEmpty(adviserBooks)){ @Transactional(rollbackFor = Exception.class)
return; void insertBookAppealResult(Long bookId, Long bookApprealId) {
} LOGGER.info("设置申诉结果bookId=" + bookId + "bookApprealId=" + bookApprealId);
List<BookAppealResult> bookAppealResults = new ArrayList<>(); List<BookAdviserDto> adviserBooks = bookAdviserDao.getAdvisers(bookId);
for (BookAdviserDto bookAdviserDto : adviserBooks){ if (ListUtils.isEmpty(adviserBooks)) {
BookAppealResult bookAppealResult = new BookAppealResult(); return;
bookAppealResult.setAdviserId(bookAdviserDto.getAdviserId()); }
bookAppealResult.setChannelId(bookAdviserDto.getChannelId()); List<BookAppealResult> bookAppealResults = new ArrayList<>();
bookAppealResult.setBookId(bookAdviserDto.getBookId()); for (BookAdviserDto bookAdviserDto : adviserBooks) {
bookAppealResult.setIsMainEditor(bookAdviserDto.getIsMainEditor()); BookAppealResult bookAppealResult = new BookAppealResult();
bookAppealResult.setBookCreatedDate(bookAdviserDto.getCreatedDate()); bookAppealResult.setAdviserId(bookAdviserDto.getAdviserId());
bookAppealResult.setBookAppealId(bookApprealId); bookAppealResult.setChannelId(bookAdviserDto.getChannelId());
bookAppealResults.add(bookAppealResult); bookAppealResult.setBookId(bookAdviserDto.getBookId());
} bookAppealResult.setIsMainEditor(bookAdviserDto.getIsMainEditor());
bookAppealResultDao.insert(bookAppealResults); bookAppealResult.setBookCreatedDate(bookAdviserDto.getCreatedDate());
LOGGER.info("设置申诉结果【END】"); bookAppealResult.setBookAppealId(bookApprealId);
} bookAppealResults.add(bookAppealResult);
}
/** bookAppealResultDao.insert(bookAppealResults);
* 发送申诉审核通过的模板消息 LOGGER.info("设置申诉结果【END】");
* }
* @param bookName 图书名称
* @param adviserBooks 被诉方 /**
* @param declarant 申诉方 * 发送申诉审核通过的模板消息
*/ * @param bookName 图书名称
void sendAuditSuccessTemplate(String bookName, List<BookAdviserDto> adviserBooks, Long declarant, Long channelId) { * @param adviserBooks 被诉方
if (!ListUtils.isEmpty(adviserBooks)) { * @param declarant 申诉方
//给被诉方发送图书被移除的通知 */
for (BookAdviserDto bookAdviserDto : adviserBooks) { void sendAuditSuccessTemplate(String bookName, List<BookAdviserDto> adviserBooks, Long declarant, Long channelId) {
removeBookTemplate(bookName, bookAdviserDto.getAdviserId(), bookAdviserDto.getChannelId()); if (!ListUtils.isEmpty(adviserBooks)) {
} //给被诉方发送图书被移除的通知
//给申诉方发送申诉成功的通知 for (BookAdviserDto bookAdviserDto : adviserBooks) {
sendAppealSuccessToMainTemplate(bookName, declarant, channelId); removeBookTemplate(bookName, bookAdviserDto.getAdviserId(), bookAdviserDto.getChannelId());
} }
//给申诉方发送申诉成功的通知
} sendAppealSuccessToMainTemplate(bookName, declarant, channelId);
}
/**
* 参数验证 }
*
* @param bookAppeal /**
*/ * 参数验证
private void checkParam(BookAppeal bookAppeal) { * @param bookAppeal
if (null == bookAppeal.getBookId()) { */
throw new BookBizException(BookBizException.PARAM_IS_NULL, "申诉书籍为空"); private void checkParam(BookAppeal bookAppeal) {
} if (null == bookAppeal.getBookId()) {
if (StringUtil.isEmpty(bookAppeal.getReason())) { throw new BookBizException(BookBizException.PARAM_IS_NULL, "申诉书籍为空");
throw new BookBizException(BookBizException.PARAM_IS_NULL, "申诉理由为空"); }
} if (StringUtil.isEmpty(bookAppeal.getReason())) {
if (StringUtil.isEmpty(bookAppeal.getPhone())) { throw new BookBizException(BookBizException.PARAM_IS_NULL, "申诉理由为空");
throw new BookBizException(BookBizException.PARAM_IS_NULL, "联系方式为空"); }
} if (StringUtil.isEmpty(bookAppeal.getPhone())) {
} throw new BookBizException(BookBizException.PARAM_IS_NULL, "联系方式为空");
}
/** }
* 获取申诉+被诉编辑
*/ /**
@Override * 获取申诉+被诉编辑
public List<AppealAdviserDto> getAppealAdvisers(Long bookAppealId) { */
LOGGER.info("【书籍申诉-平台】获取申诉+被诉编辑,<START>.[bookAppealId]" + bookAppealId); @Override
// 获取申诉方信息 public List<AppealAdviserDto> getAppealAdvisers(Long bookAppealId) {
BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppealId); LOGGER.info("【书籍申诉-平台】获取申诉+被诉编辑,<START>.[bookAppealId]" + bookAppealId);
List<AppealAdviserDto> appealAdviserList = new ArrayList<AppealAdviserDto>(); // 获取申诉方信息
// 获取被诉方信息(即与该书关联的所有编辑) BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppealId);
List<BookAdviserDto> defendantAdvisers = bookAdviserDao.getAdvisers(bookAppealDto.getBookId()); List<AppealAdviserDto> appealAdviserList = new ArrayList<AppealAdviserDto>();
// 设置申诉和被诉方列表信息 // 获取被诉方信息(即与该书关联的所有编辑)
bookSet.setAppealAdviserList(appealAdviserList, bookAppealDto, defendantAdvisers); List<BookAdviserDto> defendantAdvisers = bookAdviserDao.getAdvisers(bookAppealDto.getBookId());
return appealAdviserList; // 设置申诉和被诉方列表信息
} bookSet.setAppealAdviserList(appealAdviserList, bookAppealDto, defendantAdvisers);
return appealAdviserList;
/** }
* 设置主编辑(共同拥有)
*/ /**
@Override * 设置主编辑(共同拥有)
@Transactional(rollbackFor = Exception.class) */
public void setMainAdviser(Long auditUser, BookMainAdviserDto bookMainAdviserDto) { @Override
LOGGER.info("【书籍申诉-平台】设置主编辑,<START>.[bookMainAdviserDto]" + bookMainAdviserDto.toString()); @Transactional(rollbackFor = Exception.class)
// 获取申诉基本信息 public void setMainAdviser(Long auditUser, BookMainAdviserDto bookMainAdviserDto) {
BookAppealDto bookAppealDto = bookAppealDao.getById(bookMainAdviserDto.getBookAppealId()); LOGGER.info("【书籍申诉-平台】设置主编辑,<START>.[bookMainAdviserDto]" + bookMainAdviserDto.toString());
Long bookId = bookMainAdviserDto.getBookId(); // 获取申诉基本信息
Long channelId = bookAppealDto.getChannelId(); BookAppealDto bookAppealDto = bookAppealDao.getById(bookMainAdviserDto.getBookAppealId());
Long appealAdviserId = bookAppealDto.getDeclarant(); Long bookId = bookMainAdviserDto.getBookId();
//获取加入过该书的所有编辑 Long channelId = bookAppealDto.getChannelId();
List<BookAdviserDto> adviserBooks = bookAdviserDao.getAdvisers(bookId); Long appealAdviserId = bookAppealDto.getDeclarant();
//申诉后的主编辑 //获取加入过该书的所有编辑
Long mainAdviserId = null; List<BookAdviserDto> adviserBooks = bookAdviserDao.getAdvisers(bookId);
Boolean isOnlyOneAdviser = bookMainAdviserDto.getBookAdviserList().size()==1; //申诉后的主编辑
if (isOnlyOneAdviser){//唯一拥有 Long mainAdviserId = null;
setOnlyOneAdviser(bookId, appealAdviserId, bookAppealDto.getChannelId(), bookAppealDto.getTempletId(), adviserBooks); Boolean isOnlyOneAdviser = bookMainAdviserDto.getBookAdviserList().size() == 1;
mainAdviserId = bookMainAdviserDto.getBookAdviserList().get(0).getAdviserId(); if (isOnlyOneAdviser) {//唯一拥有
}else{ setOnlyOneAdviser(bookId, appealAdviserId, bookAppealDto.getChannelId(), bookAppealDto.getTempletId(), adviserBooks);
for (BookAdviser bookAdviser : bookMainAdviserDto.getBookAdviserList()) { mainAdviserId = bookMainAdviserDto.getBookAdviserList().get(0).getAdviserId();
bookAdviser.setCreatedUser(bookAdviser.getAdviserId()); } else {
if (bookAdviser.getIsMainEditor()){ for (BookAdviser bookAdviser : bookMainAdviserDto.getBookAdviserList()) {
//删除书架上书籍 bookAdviser.setCreatedUser(bookAdviser.getAdviserId());
EXECUTOR_SERVICE.execute(()->{ if (bookAdviser.getIsMainEditor()) {
bookcaseConsr.changeBookAdviser(bookAdviser.getAdviserId(), bookAdviser.getChannelId(), bookAdviser.getBookId()); //删除书架上书籍
}); EXECUTOR_SERVICE.execute(() -> {
mainAdviserId = bookAdviser.getAdviserId(); bookcaseConsr.changeBookAdviser(bookAdviser.getAdviserId(), bookAdviser.getChannelId(), bookAdviser.getBookId());
} });
// 若为申诉编辑,设置申诉编辑图书类型 mainAdviserId = bookAdviser.getAdviserId();
if (bookAdviser.getAdviserId().equals(appealAdviserId) && channelId.equals(bookAdviser.getChannelId())) { }
bookAdviser.setTempletId(bookAppealDto.getTempletId()); // 若为申诉编辑,设置申诉编辑图书类型
} if (bookAdviser.getAdviserId().equals(appealAdviserId) && channelId.equals(bookAdviser.getChannelId())) {
} bookAdviser.setTempletId(bookAppealDto.getTempletId());
// 批量修改图书编辑关联关系 }
bookAdviserDao.insert(bookMainAdviserDto.getBookAdviserList()); }
// 新增申诉编辑图书与二维码关联关系 // 批量修改图书编辑关联关系
EXECUTOR_SERVICE.execute(()-> { bookAdviserDao.insert(bookMainAdviserDto.getBookAdviserList());
recoverBookQrcodeAssoc(bookId, bookAppealDto.getChannelId(), appealAdviserId); // 新增申诉编辑图书与二维码关联关系
}); EXECUTOR_SERVICE.execute(() -> {
} recoverBookQrcodeAssoc(bookId, bookAppealDto.getChannelId(), appealAdviserId);
});
// 修改申诉状态 }
this.updateAppealState(auditUser, bookMainAdviserDto.getAppealState(), bookMainAdviserDto.getVersion(), // 社群书申诉创建社群码
bookMainAdviserDto.getBookAppealId()); if (null != bookAppealDto && bookAppealDto.getIsBookGroup()) {
// 设置被诉方 bookGroupBiz.getBookGroupInfoByBookId(bookId, channelId, appealAdviserId);
List<BookDefendant> defendants = bookSet.setDefendant(adviserBooks, bookMainAdviserDto.getBookAppealId()); }
// 添加被诉方 // 修改申诉状态
bookDefendantDao.insert(defendants); this.updateAppealState(auditUser, bookMainAdviserDto.getAppealState(), bookMainAdviserDto.getVersion(),
//新增申诉结果 bookMainAdviserDto.getBookAppealId());
insertBookAppealResult(bookAppealDto.getBookId(), bookAppealDto.getBookAppealId()); // 设置被诉方
// 发送模板消息 List<BookDefendant> defendants = bookSet.setDefendant(adviserBooks, bookMainAdviserDto.getBookAppealId());
sendAppealTemplate(isOnlyOneAdviser, appealAdviserId, adviserBooks, bookId, bookAppealDto.getChannelId(), mainAdviserId); // 添加被诉方
LOGGER.info("【书籍申诉-平台】设置主编辑,<END>."); bookDefendantDao.insert(defendants);
} //新增申诉结果
insertBookAppealResult(bookAppealDto.getBookId(), bookAppealDto.getBookAppealId());
/** // 发送模板消息
* 设置申诉编辑唯一拥有 sendAppealTemplate(isOnlyOneAdviser, appealAdviserId, adviserBooks, bookId, bookAppealDto.getChannelId(), mainAdviserId);
* @param bookId 图书标识 LOGGER.info("【书籍申诉-平台】设置主编辑,<END>.");
* @param declarant 申诉方 }
* @param channelId 运营标识
* @param templetId 模板标识 /**
*/ * 设置申诉编辑唯一拥有
public void setOnlyOneAdviser(Long bookId, Long declarant, Long channelId, Long templetId, List<BookAdviserDto> adviserBooks) { * @param bookId 图书标识
//删除其余编辑与图书关联关系 * @param declarant 申诉方
bookAdviserBiz.deleteByBook(bookId); * @param channelId 运营标识
EXECUTOR_SERVICE.execute(()->{ * @param templetId 模板标识
//批量删除书架书籍 */
adviserBooks.stream().forEach( public void setOnlyOneAdviser(Long bookId, Long declarant, Long channelId, Long templetId, List<BookAdviserDto> adviserBooks) {
adviserBook->{ //删除其余编辑与图书关联关系
bookcaseConsr.deleteBookForAdviser(bookId, channelId, adviserBook.getAdviserId()); bookAdviserBiz.deleteByBook(bookId);
//删除与二维码关联关系 EXECUTOR_SERVICE.execute(() -> {
qrcodeSceneConsr.deleteBook(bookId, adviserBook.getChannelId(), adviserBook.getAdviserId()); //批量删除书架书籍
// 删除社群码 adviserBooks.stream().forEach(
bookGroupBiz.deleteByBookId(bookId, adviserBook.getChannelId(), adviserBook.getAdviserId()); adviserBook -> {
} bookcaseConsr.deleteBookForAdviser(bookId, channelId, adviserBook.getAdviserId());
); //删除与二维码关联关系
}); qrcodeSceneConsr.deleteBook(bookId, adviserBook.getChannelId(), adviserBook.getAdviserId());
//加上申诉编辑与图书关联关系 // 删除社群码
BookAdviser bookAdviser = new BookAdviser(); bookGroupBiz.deleteByBookId(bookId, adviserBook.getChannelId(), adviserBook.getAdviserId());
bookAdviser.setAdviserId(declarant); }
bookAdviser.setChannelId(channelId); );
bookAdviser.setBookId(bookId); });
bookAdviser.setTempletId(templetId); //加上申诉编辑与图书关联关系
BookAdviser bookAdviser = new BookAdviser();
bookAdviser.setAdviserId(declarant);
bookAdviser.setChannelId(channelId);
bookAdviser.setBookId(bookId);
bookAdviser.setTempletId(templetId);
bookAdviser.setIsMainEditor(true); bookAdviser.setIsMainEditor(true);
bookAdviserDao.insert(bookAdviser); bookAdviserDao.insert(bookAdviser);
// 恢复申诉编辑图书与二维码关联关系 // 恢复申诉编辑图书与二维码关联关系
recoverBookQrcodeAssoc(bookId, channelId, declarant); recoverBookQrcodeAssoc(bookId, channelId, declarant);
} }
/** /**
* 发送申诉审核通过的模板消息 * 发送申诉审核通过的模板消息
* * @param isOnlyOneAdviser 是否唯一拥有
* @param isOnlyOneAdviser * @param appealAdviserId 申诉编辑
* 是否唯一拥有 * @param bookAdviserList 审核后编辑与书的关系
* @param appealAdviserId * @param bookId 图书标识
* 申诉编辑 * @param channelId 运营标识
* @param bookAdviserList */
* 审核后编辑与书的关系
* @param bookId
* 图书标识
* @param channelId
* 运营标识
*/
private void sendAppealTemplate(Boolean isOnlyOneAdviser, Long appealAdviserId, List<BookAdviserDto> bookAdviserList, Long bookId, Long channelId, Long mainAdviserId) { private void sendAppealTemplate(Boolean isOnlyOneAdviser, Long appealAdviserId, List<BookAdviserDto> bookAdviserList, Long bookId, Long channelId, Long mainAdviserId) {
LOGGER.info("发送申诉审核后的模板消息appealAdviserId=" + appealAdviserId + "bookAdviserList=" + bookAdviserList + LOGGER.info("发送申诉审核后的模板消息appealAdviserId=" + appealAdviserId + "bookAdviserList=" + bookAdviserList +
"bookId=" + bookId + "channelId=" + channelId + "mainAdviserId=" + mainAdviserId); "bookId=" + bookId + "channelId=" + channelId + "mainAdviserId=" + mainAdviserId);
EXECUTOR_SERVICE.execute(()->{ EXECUTOR_SERVICE.execute(() -> {
// 获取图书详情 // 获取图书详情
BookDto bookDto = bookBiz.getBaseById(bookId); BookDto bookDto = bookBiz.getBaseById(bookId);
String bookName = bookDto.getBookName(); String bookName = bookDto.getBookName();
for (BookAdviserDto bookAdviser : bookAdviserList) { for (BookAdviserDto bookAdviser : bookAdviserList) {
if (isOnlyOneAdviser){ if (isOnlyOneAdviser) {
removeBookTemplate(bookName, bookAdviser.getAdviserId(), bookAdviser.getChannelId()); removeBookTemplate(bookName, bookAdviser.getAdviserId(), bookAdviser.getChannelId());
}else{ } else {
//主编辑变为副编辑 //主编辑变为副编辑
if (bookAdviser.getIsMainEditor() && !mainAdviserId.equals(bookAdviser.getAdviserId())) { if (bookAdviser.getIsMainEditor() && !mainAdviserId.equals(bookAdviser.getAdviserId())) {
adviserChangeToSubTemplate(bookName, bookAdviser.getAdviserId(), bookAdviser.getChannelId()); adviserChangeToSubTemplate(bookName, bookAdviser.getAdviserId(), bookAdviser.getChannelId());
} }
//副编辑变为主编辑 //副编辑变为主编辑
if (!bookAdviser.getIsMainEditor() && mainAdviserId.equals(bookAdviser.getAdviserId())) { if (!bookAdviser.getIsMainEditor() && mainAdviserId.equals(bookAdviser.getAdviserId())) {
adviserChangeToMainTemplate(bookName, bookAdviser.getAdviserId(), bookAdviser.getChannelId()); adviserChangeToMainTemplate(bookName, bookAdviser.getAdviserId(), bookAdviser.getChannelId());
} }
} }
} }
//给申诉编辑发送模板消息 //给申诉编辑发送模板消息
if (appealAdviserId.equals(mainAdviserId)) { if (appealAdviserId.equals(mainAdviserId)) {
sendAppealSuccessToMainTemplate(bookName, appealAdviserId, channelId); sendAppealSuccessToMainTemplate(bookName, appealAdviserId, channelId);
} else { } else {
sendAppealSuccessToSubTemplate(bookName, appealAdviserId, channelId); sendAppealSuccessToSubTemplate(bookName, appealAdviserId, channelId);
}
LOGGER.info("发送申诉审核后的模板消息【END】");
});
}
/**
* 主编辑发生改变,给新主编辑发送模板消息(给新主编辑发消息不包括申诉编辑)
* @param bookName 图书名称
* @param adviserId 编辑标识
*/
void adviserChangeToMainTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("主编辑发生改变,给新主编辑发送模板消息,bookName=" + bookName + "adviserId=" + adviserId);
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "编辑变更");
temParam.put("keyword2", "RAYS编辑");
temParam.put("keyword1", "您在" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "已将您设置为主编辑,请尽快去PC端配置书刊的相关资源等信息");
temParam.put("keyword3", "通知");
temParam.put("remark", "请抽空处理");
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, agentId, adviserId, SystemCode.adviser.code, "",
temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info(" 主编辑发生改变,给新主编辑发送模板消息[END]");
}
/**
* 书籍被移除模板消息
* @param bookName 图书名称
* @param adviserId 编辑标识
*/
void removeBookTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("书籍被移除模板消息,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId);
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "编辑变更");
temParam.put("keyword2", "RAYS编辑");
temParam.put("keyword1", "您在" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "被申诉成功,已被移除,请知悉");
temParam.put("keyword3", "通知");
temParam.put("remark", "请抽空处理");
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, agentId, adviserId, SystemCode.adviser.code, "",
temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info("书籍被移除模板消息[END]");
}
/**
* 主编辑发生改变,由主编辑变为副编辑模板消息
* @param bookName 图书名称
* @param adviserId 编辑标识
*/
void adviserChangeToSubTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("主编辑发生改变,由主编辑变为副编辑模板消息,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId);
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "编辑变更");
temParam.put("keyword2", "RAYS编辑");
temParam.put("keyword1", "您在" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "被申诉成功,已将您设置为副编辑,请知悉");
temParam.put("keyword3", "通知");
temParam.put("remark", "请抽空处理");
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, agentId, adviserId, SystemCode.adviser.code, "",
temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info(" 主编辑发生改变,给新主编辑发送模板消息[END]");
}
/**
* 申诉成功为主编辑
* @param bookName 图书名称
* @param adviserId 编辑标识
*/
void sendAppealSuccessToMainTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("申诉成功为主编辑,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId);
// 发送模板消息---申诉编辑变为主编辑(给申诉编辑编辑发消息)
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "恭喜您,您申请的" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "申诉成功");
temParam.put("keyword2", "书刊申诉审核");
temParam.put("keyword1", "书刊申诉");
temParam.put("keyword3", "申诉通过");
temParam.put("keyword4", DateUtils.formatDate(new Date()));
temParam.put("remark", "书刊已加入您的书刊列表,您是主编辑,请去PC端配置书刊的相关资源");
templateConsr.sendManage(SceneCode.TASK_HANDLE_RESULT_SCENE.value, agentId, adviserId, SystemCode.adviser.code,
"", temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info("申诉成功为主编辑[END]");
}
/**
* 申诉成功为副编辑
* @param bookName 图书名称
* @param adviserId 编辑标识
*/
void sendAppealSuccessToSubTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("申诉成功为副编辑,给申诉编辑发消息,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId);
// 发送模板消息---提交申诉的编辑,申诉成功之后是副编辑(给申诉编辑发消息)
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "恭喜您,您申请的" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "申诉成功");
temParam.put("keyword2", "书刊申诉审核");
temParam.put("keyword1", "书刊申诉");
temParam.put("keyword3", "申诉通过");
temParam.put("keyword4", DateUtils.formatDate(new Date()));
temParam.put("remark", "书刊已加入您的书刊列表,您是副编辑,可直接共享书刊配套资源");
templateConsr.sendManage(SceneCode.TASK_HANDLE_RESULT_SCENE.value, agentId, adviserId, SystemCode.adviser.code,
"", temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info("申诉成功为副编辑,给申诉编辑发消息【END】");
}
/**
* 发送申诉审核未通过的模板消息
* @param bookName 图书名称
* @param auditReason 审核不通过原因
* @param declarant 申诉方
*/
void sendAuditFailTemplate(String bookName, String auditReason, Long declarant, Long channelId) {
try {
String channelName = channelConsr.getNameById(channelId);
// 获取申诉人所属代理
Long agentId = adviserConsr.getAgentIdByAdviser(declarant);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "很抱歉,您申请的" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "申诉未通过审核");
temParam.put("keyword2", "书刊申诉审核");
temParam.put("keyword1", "书刊申诉");
temParam.put("keyword3", "申诉不通过");
temParam.put("keyword4", DateUtils.formatDate(new Date()));
temParam.put("remark", "申诉不通过,原因:" + auditReason);
templateConsr.sendManage(SceneCode.TASK_HANDLE_RESULT_SCENE.value, agentId,
declarant, SystemCode.adviser.code, "", temParam,
SendType.SEND_BY_PARTY_ID.value, false);
} catch (Exception e) {
LOGGER.error("【书籍申诉-审核-平台】书刊申诉审核:发送模板消息,<ERROR>:" + e.getMessage(), e);
} }
LOGGER.info("发送申诉审核后的模板消息【END】"); }
});
/**
* 修改申诉状态
* @param auditUser 审核人
* @param appealState 申诉状态
* @param version 版本号
* @param bookAppealId 申诉标识
*/
@Transactional(rollbackFor = Exception.class)
void updateAppealState(Long auditUser, Integer appealState, Integer version, Long bookAppealId) {
LOGGER.info("修改申诉状态auditUser=" + auditUser + "appealState=" + appealState + "version=" + version
+ "bookAppealId=" + bookAppealId);
BookAppeal bookAppeal = new BookAppeal();
bookAppeal.setAuditUser(auditUser);
bookAppeal.setLastModifiedUser(auditUser);
bookAppeal.setAppealState(appealState);
bookAppeal.setVersion(version);
bookAppeal.setBookAppealId(bookAppealId);
// 更新申诉状态信息
bookAppealDao.update(bookAppeal);
LOGGER.info("修改申诉状态【END】");
}
/**
* 恢复主编辑图书与二维码关联关系
* @param bookId 图书标识
* @param channelId 运营标识
* @param adviserId 编辑标识
*/
@Transactional(rollbackFor = Exception.class)
void recoverBookQrcodeAssoc(Long bookId, Long channelId, Long adviserId) {
LOGGER.info("恢复主编辑图书与二维码关联关系,bookId=" + bookId + ",channelId=" + channelId + "adviserId=" + adviserId);
qrcodeSceneConsr.recoverByBook(bookId, channelId, adviserId);
LOGGER.info("恢复主编辑图书与二维码关联关系结束");
} }
/** /**
* 主编辑发生改变,给新主编辑发送模板消息(给新主编辑发消息不包括申诉编辑) * 获取申诉结果
* */
* @param bookName @Override
* 图书名称 public List<BookAppealResultDto> getAppealResult(Long bookAppealId) {
* @param adviserId LOGGER.info("获取申诉结果bookAppealId=" + bookAppealId);
* 编辑标识 //获取申诉基本信息
*/ BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppealId);
void adviserChangeToMainTemplate(String bookName, Long adviserId, Long channelId) { if (bookAppealDto == null || bookAppealDto.getCreatedUser() == null) {
LOGGER.info("主编辑发生改变,给新主编辑发送模板消息,bookName=" + bookName + "adviserId=" + adviserId); throw new BookBizException(BookBizException.PARAM_IS_NULL, "申诉信息不存在");
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId); }
String channelName = channelConsr.getNameById(channelId); Long appealAdviserId = bookAppealDto.getCreatedUser();
Map<String, String> temParam = new HashMap<>(); //获取申诉结果
temParam.put("first", "编辑变更"); List<BookAppealResultDto> appealResults = bookAppealResultDao.getAppealResult(bookAppealId);
temParam.put("keyword2", "RAYS编辑");
temParam.put("keyword1", "您在"+channelName+"运营的书刊" + StringUtil.addBracket(bookName) + "已将您设置为主编辑,请尽快去PC端配置书刊的相关资源等信息"); if (ListUtils.isEmpty(appealResults))
temParam.put("keyword3", "通知"); return new ArrayList<>();
temParam.put("remark", "请抽空处理");
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, agentId, adviserId, SystemCode.adviser.code, "", List<Long> adviserIds = new ArrayList<>();
temParam, SendType.SEND_BY_PARTY_ID.value, false); List<Long> channelIds = new ArrayList<>();
LOGGER.info(" 主编辑发生改变,给新主编辑发送模板消息[END]"); appealResults.stream().forEach(
} appealResult -> {
if (appealAdviserId.equals(appealResult.getAdviserId())) {
/** appealResult.setAppealAdviser(true);
* 书籍被移除模板消息 } else {
* appealResult.setAppealAdviser(false);
* @param bookName }
* 图书名称 if (!adviserIds.contains(appealResult.getAdviserId())) {
* @param adviserId adviserIds.add(appealResult.getAdviserId());
* 编辑标识 }
*/ if (!channelIds.contains(appealResult.getChannelId())) {
void removeBookTemplate(String bookName, Long adviserId, Long channelId) { channelIds.add(appealResult.getChannelId());
LOGGER.info("书籍被移除模板消息,bookName=" + bookName + "adviserId=" + adviserId + "channelId="+channelId); }
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId); }
String channelName = channelConsr.getNameById(channelId); );
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "编辑变更"); // 获取基本信息
temParam.put("keyword2", "RAYS编辑"); Map<Long, AdviserBaseInfoDto> adviserMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(adviserIds);
temParam.put("keyword1", "您在"+channelName+"运营的书刊" + StringUtil.addBracket(bookName) + "被申诉成功,已被移除,请知悉"); Map<Long, String> channelNameMap = channelConsr.getNamesByIdList(channelIds);
temParam.put("keyword3", "通知");
temParam.put("remark", "请抽空处理"); appealResults.stream().forEach(
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, agentId, adviserId, SystemCode.adviser.code, "", appealResult -> {
temParam, SendType.SEND_BY_PARTY_ID.value, false); if (adviserMap != null) {
LOGGER.info("书籍被移除模板消息[END]"); AdviserBaseInfoDto adviserBaseInfoDto = adviserMap.get(appealResult.getAdviserId());
} if (adviserBaseInfoDto != null) {
appealResult.setAdviserName(adviserBaseInfoDto.getPartyName());
/** appealResult.setAgentName(adviserBaseInfoDto.getAgentName());
* 主编辑发生改变,由主编辑变为副编辑模板消息 appealResult.setPhone(adviserBaseInfoDto.getPhoneNum());
* appealResult.setHeadUrl(adviserBaseInfoDto.getHeadUrl());
* @param bookName }
* 图书名称 }
* @param adviserId if (channelNameMap != null) {
* 编辑标识 appealResult.setChannelName(channelNameMap.get(appealResult.getChannelId()));
*/ }
void adviserChangeToSubTemplate(String bookName, Long adviserId, Long channelId) { if (appealAdviserId.equals(appealResult.getAdviserId())) {
LOGGER.info("主编辑发生改变,由主编辑变为副编辑模板消息,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId); appealResult.setPhone(bookAppealDto.getPhone());
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId); }
String channelName = channelConsr.getNameById(channelId); }
Map<String, String> temParam = new HashMap<>(); );
temParam.put("first", "编辑变更"); LOGGER.info("获取申诉结果[END]");
temParam.put("keyword2", "RAYS编辑"); return appealResults;
temParam.put("keyword1", "您在"+channelName+"运营的书刊" + StringUtil.addBracket(bookName) + "被申诉成功,已将您设置为副编辑,请知悉"); }
temParam.put("keyword3", "通知");
temParam.put("remark", "请抽空处理");
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, agentId, adviserId, SystemCode.adviser.code, "",
temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info(" 主编辑发生改变,给新主编辑发送模板消息[END]");
}
/**
* 申诉成功为主编辑
*
* @param bookName
* 图书名称
* @param adviserId
* 编辑标识
*/
void sendAppealSuccessToMainTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("申诉成功为主编辑,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId);
// 发送模板消息---申诉编辑变为主编辑(给申诉编辑编辑发消息)
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "恭喜您,您申请的" + channelName + "运营的书刊" + StringUtil.addBracket(bookName) + "申诉成功");
temParam.put("keyword2", "书刊申诉审核");
temParam.put("keyword1", "书刊申诉");
temParam.put("keyword3", "申诉通过");
temParam.put("keyword4", DateUtils.formatDate(new Date()));
temParam.put("remark", "书刊已加入您的书刊列表,您是主编辑,请去PC端配置书刊的相关资源");
templateConsr.sendManage(SceneCode.TASK_HANDLE_RESULT_SCENE.value, agentId, adviserId, SystemCode.adviser.code,
"", temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info("申诉成功为主编辑[END]");
}
/**
* 申诉成功为副编辑
*
* @param bookName
* 图书名称
* @param adviserId
* 编辑标识
*/
void sendAppealSuccessToSubTemplate(String bookName, Long adviserId, Long channelId) {
LOGGER.info("申诉成功为副编辑,给申诉编辑发消息,bookName=" + bookName + "adviserId=" + adviserId + "channelId=" + channelId);
// 发送模板消息---提交申诉的编辑,申诉成功之后是副编辑(给申诉编辑发消息)
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
String channelName = channelConsr.getNameById(channelId);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "恭喜您,您申请的" + channelName + "运营的书刊"+StringUtil.addBracket(bookName)+"申诉成功");
temParam.put("keyword2", "书刊申诉审核");
temParam.put("keyword1", "书刊申诉");
temParam.put("keyword3", "申诉通过");
temParam.put("keyword4", DateUtils.formatDate(new Date()));
temParam.put("remark", "书刊已加入您的书刊列表,您是副编辑,可直接共享书刊配套资源");
templateConsr.sendManage(SceneCode.TASK_HANDLE_RESULT_SCENE.value, agentId, adviserId, SystemCode.adviser.code,
"", temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info("申诉成功为副编辑,给申诉编辑发消息【END】");
}
/**
* 发送申诉审核未通过的模板消息
* @param bookName 图书名称
* @param auditReason 审核不通过原因
* @param declarant 申诉方
*/
void sendAuditFailTemplate(String bookName, String auditReason, Long declarant, Long channelId){
try {
String channelName = channelConsr.getNameById(channelId);
// 获取申诉人所属代理
Long agentId = adviserConsr.getAgentIdByAdviser(declarant);
Map<String, String> temParam = new HashMap<>();
temParam.put("first", "很抱歉,您申请的"+channelName+"运营的书刊" + StringUtil.addBracket(bookName) + "申诉未通过审核");
temParam.put("keyword2", "书刊申诉审核");
temParam.put("keyword1", "书刊申诉");
temParam.put("keyword3", "申诉不通过");
temParam.put("keyword4", DateUtils.formatDate(new Date()));
temParam.put("remark", "申诉不通过,原因:" + auditReason);
templateConsr.sendManage(SceneCode.TASK_HANDLE_RESULT_SCENE.value, agentId,
declarant, SystemCode.adviser.code, "", temParam,
SendType.SEND_BY_PARTY_ID.value, false);
} catch (Exception e) {
LOGGER.error("【书籍申诉-审核-平台】书刊申诉审核:发送模板消息,<ERROR>:" + e.getMessage(), e);
}
}
/**
* 修改申诉状态
*
* @param auditUser
* 审核人
* @param appealState
* 申诉状态
* @param version
* 版本号
* @param bookAppealId
* 申诉标识
*/
@Transactional(rollbackFor = Exception.class)
void updateAppealState(Long auditUser, Integer appealState, Integer version, Long bookAppealId) {
LOGGER.info("修改申诉状态auditUser=" + auditUser + "appealState=" + appealState + "version=" + version
+ "bookAppealId=" + bookAppealId);
BookAppeal bookAppeal = new BookAppeal();
bookAppeal.setAuditUser(auditUser);
bookAppeal.setLastModifiedUser(auditUser);
bookAppeal.setAppealState(appealState);
bookAppeal.setVersion(version);
bookAppeal.setBookAppealId(bookAppealId);
// 更新申诉状态信息
bookAppealDao.update(bookAppeal);
LOGGER.info("修改申诉状态【END】");
}
/**
* 恢复主编辑图书与二维码关联关系
*
* @param bookId
* 图书标识
* @param channelId
* 运营标识
* @param adviserId
* 编辑标识
*/
@Transactional(rollbackFor = Exception.class)
void recoverBookQrcodeAssoc(Long bookId, Long channelId, Long adviserId) {
LOGGER.info("恢复主编辑图书与二维码关联关系,bookId=" + bookId + ",channelId=" + channelId + "adviserId=" + adviserId);
qrcodeSceneConsr.recoverByBook(bookId, channelId, adviserId);
LOGGER.info("恢复主编辑图书与二维码关联关系结束");
}
/**
* 获取申诉结果
*/
@Override
public List<BookAppealResultDto> getAppealResult(Long bookAppealId) {
LOGGER.info("获取申诉结果bookAppealId="+bookAppealId);
//获取申诉基本信息
BookAppealDto bookAppealDto = bookAppealDao.getById(bookAppealId);
if (bookAppealDto == null || bookAppealDto.getCreatedUser() == null){
throw new BookBizException(BookBizException.PARAM_IS_NULL, "申诉信息不存在");
}
Long appealAdviserId = bookAppealDto.getCreatedUser();
//获取申诉结果
List<BookAppealResultDto> appealResults = bookAppealResultDao.getAppealResult(bookAppealId);
if(ListUtils.isEmpty(appealResults))
return new ArrayList<>();
List<Long> adviserIds = new ArrayList<>();
List<Long> channelIds = new ArrayList<>();
appealResults.stream().forEach(
appealResult -> {
if(appealAdviserId.equals(appealResult.getAdviserId())){
appealResult.setAppealAdviser(true);
}else{
appealResult.setAppealAdviser(false);
}
if (!adviserIds.contains(appealResult.getAdviserId())) {
adviserIds.add(appealResult.getAdviserId());
}
if (!channelIds.contains(appealResult.getChannelId())) {
channelIds.add(appealResult.getChannelId());
}
}
);
// 获取基本信息
Map<Long, AdviserBaseInfoDto> adviserMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(adviserIds);
Map<Long, String> channelNameMap = channelConsr.getNamesByIdList(channelIds);
appealResults.stream().forEach(
appealResult -> {
if(adviserMap!=null){
AdviserBaseInfoDto adviserBaseInfoDto = adviserMap.get(appealResult.getAdviserId());
if(adviserBaseInfoDto != null){
appealResult.setAdviserName(adviserBaseInfoDto.getPartyName());
appealResult.setAgentName(adviserBaseInfoDto.getAgentName());
appealResult.setPhone(adviserBaseInfoDto.getPhoneNum());
appealResult.setHeadUrl(adviserBaseInfoDto.getHeadUrl());
}
}
if(channelNameMap != null){
appealResult.setChannelName(channelNameMap.get(appealResult.getChannelId()));
}
if(appealAdviserId.equals(appealResult.getAdviserId())){
appealResult.setPhone(bookAppealDto.getPhone());
}
}
);
LOGGER.info("获取申诉结果[END]");
return appealResults;
}
} }
...@@ -123,7 +123,20 @@ public interface BookBiz { ...@@ -123,7 +123,20 @@ public interface BookBiz {
*/ */
BookDto getById(Long bookId, Long adviserId, Long channelId) throws BizException; BookDto getById(Long bookId, Long adviserId, Long channelId) throws BizException;
/** /**
* 获取单个书籍基础信息(包含统计信息)
*
* @param bookId
* 图书标识
* @param adviserId
* 编辑标识
* @param channelId
* 渠道标识
* @return
*/
BookDto getById4Platform(Long bookId, Long adviserId, Long channelId) throws BizException;
/**
* 批量获取书籍信息 * 批量获取书籍信息
* *
* @param bookIds * @param bookIds
......
...@@ -18,6 +18,7 @@ import com.pcloud.book.consumer.user.AdviserConsr; ...@@ -18,6 +18,7 @@ import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.BookcaseConsr; import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.consumer.user.ChannelConsr; import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.SceneCode; import com.pcloud.common.core.constant.SceneCode;
import com.pcloud.common.core.constant.SendType; import com.pcloud.common.core.constant.SendType;
...@@ -52,7 +53,7 @@ import java.util.concurrent.Executors; ...@@ -52,7 +53,7 @@ import java.util.concurrent.Executors;
public class BookAdviserBizImpl implements BookAdviserBiz { public class BookAdviserBizImpl implements BookAdviserBiz {
/** /**
* *
*/ */
private static final Logger LOGGER = LoggerFactory.getLogger(BookAdviserBizImpl.class); private static final Logger LOGGER = LoggerFactory.getLogger(BookAdviserBizImpl.class);
...@@ -79,16 +80,19 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -79,16 +80,19 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
@Autowired @Autowired
private BookcaseConsr bookcaseConsr; private BookcaseConsr bookcaseConsr;
@Autowired @Autowired
private BookConsr bookConsr; private BookConsr bookConsr;
@Autowired @Autowired
private ChannelConsr channelConsr; private ChannelConsr channelConsr;
@Autowired @Autowired
private BookGroupBiz bookGroupBiz; private BookGroupBiz bookGroupBiz;
@Autowired
private BookGroupDao bookGroupDao;
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5); private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5);
/** /**
...@@ -162,7 +166,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -162,7 +166,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
/** /**
* 校验是否同一出版社 * 校验是否同一出版社
* *
* @param channelId * @param channelId
* 运营标识 * 运营标识
* @param adviserId * @param adviserId
...@@ -253,7 +257,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -253,7 +257,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
private BookAdviserDto getByAdviserContainsDelete(BookAdviser bookAdviser) throws BizException { private BookAdviserDto getByAdviserContainsDelete(BookAdviser bookAdviser) throws BizException {
return bookAdviserDao.getByAdviserContainsDelete(bookAdviser); return bookAdviserDao.getByAdviserContainsDelete(bookAdviser);
} }
/** /**
* 统计编辑推广的图书总数 * 统计编辑推广的图书总数
*/ */
...@@ -538,7 +542,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -538,7 +542,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
/** /**
* 填充不存在的日期中的值为0 * 填充不存在的日期中的值为0
* *
* @param bookCounts * @param bookCounts
* @param startTime * @param startTime
* @param endTime * @param endTime
...@@ -588,7 +592,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -588,7 +592,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
LOGGER.info("删除书籍(编辑端)<END>"); LOGGER.info("删除书籍(编辑端)<END>");
} }
/** /**
* 删除主编辑书籍 * 删除主编辑书籍
* @param bookId 图书标识 * @param bookId 图书标识
...@@ -613,10 +617,10 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -613,10 +617,10 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
} }
LOGGER.info("删除主编辑书籍<END>."); LOGGER.info("删除主编辑书籍<END>.");
} }
/** /**
* 删除副编辑书籍(编辑端) * 删除副编辑书籍(编辑端)
* *
* @param bookId * @param bookId
* 图书标识 * 图书标识
* @param adviserId * @param adviserId
...@@ -690,6 +694,8 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -690,6 +694,8 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
CountDto countDto = new CountDto(); CountDto countDto = new CountDto();
Integer count = bookAdviserDao.getAdviserBookCount(adviserId); Integer count = bookAdviserDao.getAdviserBookCount(adviserId);
countDto.setCount(count); countDto.setCount(count);
Integer bookGroupCount = bookGroupDao.getBookGroupCount(adviserId);
countDto.setBookGroupCount(bookGroupCount);
LOGGER.info("获取编辑的图书总数 ,<END>"); LOGGER.info("获取编辑的图书总数 ,<END>");
return countDto; return countDto;
} }
......
...@@ -3,6 +3,26 @@ ...@@ -3,6 +3,26 @@
*/ */
package com.pcloud.book.book.biz.impl; package com.pcloud.book.book.biz.impl;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto; import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto;
...@@ -11,11 +31,28 @@ import com.pcloud.book.base.enums.BookFreezeEnum; ...@@ -11,11 +31,28 @@ import com.pcloud.book.base.enums.BookFreezeEnum;
import com.pcloud.book.base.enums.BookStatusEnum; import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.enums.BookTypeEnum; import com.pcloud.book.base.enums.BookTypeEnum;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.*; import com.pcloud.book.book.biz.BookAdviserBiz;
import com.pcloud.book.book.biz.BookAppBiz;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.biz.BookFreezeBiz;
import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.biz.BookProductBiz;
import com.pcloud.book.book.biz.BookResourceBiz;
import com.pcloud.book.book.cache.BookCache; import com.pcloud.book.book.cache.BookCache;
import com.pcloud.book.book.constant.BookConstant; import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dao.BookDao; import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.dto.*; import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookFreezeDto;
import com.pcloud.book.book.dto.BookFundDto;
import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.set.BookSet; import com.pcloud.book.book.set.BookSet;
...@@ -44,19 +81,6 @@ import com.pcloud.common.page.PageParam; ...@@ -44,19 +81,6 @@ import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/** /**
* @描述:书籍业务层接口实现类 * @描述:书籍业务层接口实现类
...@@ -128,8 +152,8 @@ public class BookBizImpl implements BookBiz { ...@@ -128,8 +152,8 @@ public class BookBizImpl implements BookBiz {
throw new BookBizException(BookBizException.DB_SELECT_MORE, "书刊已存在"); throw new BookBizException(BookBizException.DB_SELECT_MORE, "书刊已存在");
} }
if(SystemCode.adviser.code.equalsIgnoreCase(systemCode) && if (SystemCode.adviser.code.equalsIgnoreCase(systemCode) &&
(Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId()))){ (Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId()))) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类");
} }
...@@ -287,7 +311,7 @@ public class BookBizImpl implements BookBiz { ...@@ -287,7 +311,7 @@ public class BookBizImpl implements BookBiz {
if (BookConstant.DEFAULT_BOOK_ISBN.equals(book.getIsbn()) && StringUtils.isEmpty(book.getSerialNumber())) { if (BookConstant.DEFAULT_BOOK_ISBN.equals(book.getIsbn()) && StringUtils.isEmpty(book.getSerialNumber())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "默认图书不能修改!"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "默认图书不能修改!");
} }
if(Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId())){ if (Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类");
} }
} }
...@@ -452,14 +476,14 @@ public class BookBizImpl implements BookBiz { ...@@ -452,14 +476,14 @@ public class BookBizImpl implements BookBiz {
serialNumber = null; serialNumber = null;
} }
// 校验书号 // 校验书号
bookSet.checkISBN(typeCode, isbn); bookSet.checkISBN(typeCode, isbn);
BookDto bookDto = bookDao.getByIsbnAndSnum(isbn, serialNumber); BookDto bookDto = bookDao.getByIsbnAndSnum(isbn, serialNumber);
if (bookDto == null) { if (bookDto == null) {
return false; return false;
} }
return true; return true;
} }
/** /**
* 获取单个书籍基础信息(包含统计信息) * 获取单个书籍基础信息(包含统计信息)
...@@ -502,6 +526,38 @@ public class BookBizImpl implements BookBiz { ...@@ -502,6 +526,38 @@ public class BookBizImpl implements BookBiz {
} }
/** /**
* 获取单个书籍基础信息(包含统计信息)
*/
@Override
public BookDto getById4Platform(Long bookId, Long adviserId, Long channelId) throws BizException {
LOGGER.info("【书籍基础】获取单个书籍基础信息,<START>.[bookId]=" + bookId + ",[adviserId]=" + adviserId
+ ",[channelId]=" + channelId);
if (bookId == null || channelId == null || adviserId == null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
BookDto bookDto = null;
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("bookId", bookId);
paramMap.put("adviserId", adviserId);
paramMap.put("channelId", channelId);
bookDto = bookDao.getById(paramMap);
if (bookDto == null) {
return new BookDto();
}
bookDto.setAdviserId(adviserId);
bookDto.setChannelId(channelId);
String adviserName = adviserConsr.getNameById(adviserId);
bookDto.setAdviserName(adviserName);
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
Map<Long, String> agentNameMap = agentConsr.getNames(Arrays.asList(agentId));
if (!MapUtils.isEmpty(agentNameMap) && agentNameMap.containsKey(agentId)) {
bookDto.setAgentName(agentNameMap.get(agentId));
}
LOGGER.info("【书籍基础】获取单个书籍基础信息(包含统计信息),<END>");
return bookDto;
}
/**
* 批量获取书籍信息 * 批量获取书籍信息
*/ */
@Override @Override
...@@ -710,6 +766,8 @@ public class BookBizImpl implements BookBiz { ...@@ -710,6 +766,8 @@ public class BookBizImpl implements BookBiz {
bookSet.setBookIncome(Lists.newArrayList(bookDtos)); bookSet.setBookIncome(Lists.newArrayList(bookDtos));
// 设置二维码相关信息 // 设置二维码相关信息
bookSet.setQrInfo(Lists.newArrayList(bookDtos)); bookSet.setQrInfo(Lists.newArrayList(bookDtos));
// 填充社群码相关信息
bookSet.seBookGroupInfo(Lists.newArrayList(bookDtos));
} }
return bookDtos; return bookDtos;
} }
...@@ -849,32 +907,31 @@ public class BookBizImpl implements BookBiz { ...@@ -849,32 +907,31 @@ public class BookBizImpl implements BookBiz {
return bookDto; return bookDto;
} }
/** /**
* 判断isbn是否存在,存在返回书籍信息 * 判断isbn是否存在,存在返回书籍信息
* * @throws IOException
* @throws IOException */
*/ @Override
@Override @Transactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class) public BookDto isbnExistsOrGetInfo(Book book) {
public BookDto isbnExistsOrGetInfo(Book book) { LOGGER.info("【书籍基础】判断ISBN是否存在,<PARAM>.[isbn]=" + book.getIsbn());
LOGGER.info("【书籍基础】判断ISBN是否存在,<PARAM>.[isbn]=" + book.getIsbn()); // 校验书号合法性
// 校验书号合法性 bookSet.checkISBN(book.getTypeCode(), book.getIsbn());
bookSet.checkISBN(book.getTypeCode(), book.getIsbn()); if (StringUtils.isEmpty(book.getSerialNumber())) {
if (StringUtils.isEmpty(book.getSerialNumber())) { book.setSerialNumber(null);
book.setSerialNumber(null); }
} // 获取最近书刊信息
// 获取最近书刊信息 BookDto journalDto = bookDao.getByIsbn(book.getIsbn());
BookDto journalDto = bookDao.getByIsbn(book.getIsbn()); if (BookTypeEnum.BOOK.value.equals(book.getTypeCode()) && journalDto == null) {
if (BookTypeEnum.BOOK.value.equals(book.getTypeCode()) && journalDto == null) { try {
try { // 调用外部接口查询书籍信息
// 调用外部接口查询书籍信息 insertBook(book.getIsbn());
insertBook(book.getIsbn()); journalDto = bookDao.getByIsbn(book.getIsbn());
journalDto = bookDao.getByIsbn(book.getIsbn()); } catch (Exception e) {
} catch (Exception e) { LOGGER.error("【书刊基础】根据ISBN获取书刊信息,<ERROR>.[getByJournIsbn]:" + e.getMessage(), e);
LOGGER.error("【书刊基础】根据ISBN获取书刊信息,<ERROR>.[getByJournIsbn]:" + e.getMessage(), e); throw BizException.DB_SELECT_IS_FAIL;
throw BizException.DB_SELECT_IS_FAIL; }
} }
}
if (null != journalDto) { if (null != journalDto) {
BookDto journal = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber()); BookDto journal = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber());
...@@ -1345,7 +1402,7 @@ public class BookBizImpl implements BookBiz { ...@@ -1345,7 +1402,7 @@ public class BookBizImpl implements BookBiz {
if (book.getChannelId() == null) { if (book.getChannelId() == null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择运营平台"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择运营平台");
} }
if(Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId())){ if (Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类");
} }
// 校验书号 // 校验书号
...@@ -1361,11 +1418,10 @@ public class BookBizImpl implements BookBiz { ...@@ -1361,11 +1418,10 @@ public class BookBizImpl implements BookBiz {
} }
// 新增图书与编辑关联关系 // 新增图书与编辑关联关系
createBookAdviserRelation(book); createBookAdviserRelation(book);
/*BookGroup bookGroup = null;
if (null != book.getIsBookGroup() && book.getIsBookGroup()) { if (null != book.getIsBookGroup() && book.getIsBookGroup()) {
BookGroup bookGroup = bookGroupBiz.createBookGroupAfterCreateBook(book.getBookId(), book.getChannelId(), book.getCreatedUser()); bookGroup = bookGroupBiz.createBookGroupAfterCreateBook(book.getBookId(), book.getChannelId(), book.getCreatedUser());
bookDto.setBookGroupId(bookGroup.getId()); }*/
bookDto.setGroupQrcodeUrl(bookGroup.getGroupQrcodeUrl());
}
// 图书不存在,新增图书,图书数量加1 // 图书不存在,新增图书,图书数量加1
if (bookDto == null) { if (bookDto == null) {
// 书籍总数缓存加1 // 书籍总数缓存加1
...@@ -1382,6 +1438,10 @@ public class BookBizImpl implements BookBiz { ...@@ -1382,6 +1438,10 @@ public class BookBizImpl implements BookBiz {
} }
bookDto = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber()); bookDto = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber());
bookDto.setChannelId(book.getChannelId()); bookDto.setChannelId(book.getChannelId());
/*if (null != bookGroup) {
bookDto.setBookGroupId(bookGroup.getId());
bookDto.setGroupQrcodeUrl(bookGroup.getGroupQrcodeUrl());
}*/
LOGGER.info("【书籍基础】创建书籍基础信息,<END>"); LOGGER.info("【书籍基础】创建书籍基础信息,<END>");
return bookDto; return bookDto;
} }
...@@ -1405,7 +1465,7 @@ public class BookBizImpl implements BookBiz { ...@@ -1405,7 +1465,7 @@ public class BookBizImpl implements BookBiz {
// 清除redis中数据 // 清除redis中数据
bookCache.clearRedisByBook(book.getBookId(), book.getIsbn(), book.getSerialNumber()); bookCache.clearRedisByBook(book.getBookId(), book.getIsbn(), book.getSerialNumber());
//修改图书类型 //修改图书类型
bookAdviserBiz.updateBookTemplet(book.getBookId(), book.getChannelId(), book.getLastModifiedUser(), book.getTempletId(),book.getSecondTempletId()); bookAdviserBiz.updateBookTemplet(book.getBookId(), book.getChannelId(), book.getLastModifiedUser(), book.getTempletId(), book.getSecondTempletId());
LOGGER.info("修改图书基本信息与类型[END]"); LOGGER.info("修改图书基本信息与类型[END]");
} }
......
...@@ -291,4 +291,11 @@ public interface BookDao extends BaseDao<Book> { ...@@ -291,4 +291,11 @@ public interface BookDao extends BaseDao<Book> {
* @return * @return
*/ */
List<BookDto> listBookIdAndChannelId4Adviser(Map<String, Object> paramMap); List<BookDto> listBookIdAndChannelId4Adviser(Map<String, Object> paramMap);
/**
* 获取社群书列表
* @param paramMap 参数Map
* @return
*/
List<BookDto> listSimpleBookGroup4Adviser(Map<String, Object> paramMap);
} }
...@@ -277,4 +277,12 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -277,4 +277,12 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
public List<BookDto> listBookIdAndChannelId4Adviser(Map<String, Object> paramMap) { public List<BookDto> listBookIdAndChannelId4Adviser(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("listBookIdAndChannelId4Adviser"), paramMap); return super.getSqlSession().selectList(getStatement("listBookIdAndChannelId4Adviser"), paramMap);
} }
/**
* 获取社群书列表
*/
@Override
public List<BookDto> listSimpleBookGroup4Adviser(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("listSimpleBookGroup4Adviser"), paramMap);
}
} }
...@@ -400,6 +400,21 @@ public interface BookFacade { ...@@ -400,6 +400,21 @@ public interface BookFacade {
throws BizException, PermissionException, JsonParseException; throws BizException, PermissionException, JsonParseException;
/** /**
* 获取书籍基础信息(平台端)
*/
@ApiOperation(value = "获取书籍基础信息(平台端)", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "bookId", value = "图书标识", dataType = "long", paramType = "query"),
@ApiImplicitParam(name = "channelId", value = "渠道标识", dataType = "long", paramType = "query"),
@ApiImplicitParam(name = "adviserId", value = "编辑标识", dataType = "long", paramType = "query")})
@RequestMapping(value = "getById4Platform", method = RequestMethod.GET)
ResponseDto<BookDto> getById4Platform(@RequestHeader("token") String token,
@RequestParam(value = "bookId") Long bookId,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "adviserId", required = false) Long adviserId)
throws BizException;
/**
* 书刊回收站列表(30天内删除的书刊列表) * 书刊回收站列表(30天内删除的书刊列表)
*/ */
@ApiOperation(value = "书刊回收站列表", httpMethod = "GET") @ApiOperation(value = "书刊回收站列表", httpMethod = "GET")
......
...@@ -547,6 +547,19 @@ public class BookFacadeImpl implements BookFacade { ...@@ -547,6 +547,19 @@ public class BookFacadeImpl implements BookFacade {
} }
/** /**
* 获取书籍基础信息(平台端)
*/
@Override
@RequestMapping(value = "getById4Platform", method = RequestMethod.GET)
public ResponseDto<BookDto> getById4Platform(@RequestHeader("token") String token,
@RequestParam(value = "bookId") Long bookId,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "adviserId", required = false) Long adviserId)
throws BizException {
return new ResponseDto<>(bookBiz.getById4Platform(bookId, adviserId, channelId));
}
/**
* 书刊回收站列表(30天内删除的书刊列表) * 书刊回收站列表(30天内删除的书刊列表)
*/ */
@Override @Override
......
...@@ -3,6 +3,24 @@ ...@@ -3,6 +3,24 @@
*/ */
package com.pcloud.book.book.set; package com.pcloud.book.book.set;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto; import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto;
...@@ -18,7 +36,15 @@ import com.pcloud.book.book.biz.BookFundBiz; ...@@ -18,7 +36,15 @@ import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.dao.BookAdviserDao; import com.pcloud.book.book.dao.BookAdviserDao;
import com.pcloud.book.book.dao.BookFreezeDao; import com.pcloud.book.book.dao.BookFreezeDao;
import com.pcloud.book.book.dao.BookTypeDao; import com.pcloud.book.book.dao.BookTypeDao;
import com.pcloud.book.book.dto.*; import com.pcloud.book.book.dto.AdviserManageDto;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookAppDto;
import com.pcloud.book.book.dto.BookDeleteDto;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookFreezeDto;
import com.pcloud.book.book.dto.BookProductDto;
import com.pcloud.book.book.dto.BookResourceDto;
import com.pcloud.book.book.dto.BookTypeDto;
import com.pcloud.book.book.entity.BookDefendant; import com.pcloud.book.book.entity.BookDefendant;
import com.pcloud.book.book.tools.BookTools; import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.NoAuthBookVO; import com.pcloud.book.book.vo.NoAuthBookVO;
...@@ -32,8 +58,16 @@ import com.pcloud.book.consumer.content.ResourceConsr; ...@@ -32,8 +58,16 @@ import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.consumer.message.MessageConsr; import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.settlement.BookConsr; import com.pcloud.book.consumer.settlement.BookConsr;
import com.pcloud.book.consumer.user.*; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.consumer.user.PartyConsr;
import com.pcloud.book.consumer.voicemessage.MerchantVideoConsr; import com.pcloud.book.consumer.voicemessage.MerchantVideoConsr;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.channelcenter.base.constants.MessageFromTypeEnum; import com.pcloud.channelcenter.base.constants.MessageFromTypeEnum;
import com.pcloud.channelcenter.qrcode.dto.QrcodeLocationDto; import com.pcloud.channelcenter.qrcode.dto.QrcodeLocationDto;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO; import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO;
...@@ -61,18 +95,6 @@ import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; ...@@ -61,18 +95,6 @@ import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.usercenter.party.adviser.entity.Adviser; import com.pcloud.usercenter.party.adviser.entity.Adviser;
import com.pcloud.usercenter.party.agent.entity.Agent; import com.pcloud.usercenter.party.agent.entity.Agent;
import com.pcloud.voicemessage.party.merchant.entity.MerchantVideo; import com.pcloud.voicemessage.party.merchant.entity.MerchantVideo;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* @描述:图书信息填充 * @描述:图书信息填充
...@@ -131,6 +153,10 @@ public class BookSet { ...@@ -131,6 +153,10 @@ public class BookSet {
private AgentConsr agentConsr; private AgentConsr agentConsr;
@Autowired @Autowired
private AccountSettingService accountSettingService; private AccountSettingService accountSettingService;
@Autowired
private BookGroupDao bookGroupDao;
@Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz;
/** /**
* 检验书号是否合法,包括ISSN,ISBN,CSSN * 检验书号是否合法,包括ISSN,ISBN,CSSN
...@@ -978,7 +1004,7 @@ public class BookSet { ...@@ -978,7 +1004,7 @@ public class BookSet {
// 有二级列表优先展示二级列表,无则展示一级列表 // 有二级列表优先展示二级列表,无则展示一级列表
List<Long> templetIds = recordList.stream() List<Long> templetIds = recordList.stream()
.map(bookDto -> { .map(bookDto -> {
BookDto book = (BookDto)bookDto; BookDto book = (BookDto) bookDto;
if (Objects.nonNull(book.getSecondTempletId())) { if (Objects.nonNull(book.getSecondTempletId())) {
return book.getSecondTempletId(); return book.getSecondTempletId();
} }
...@@ -989,13 +1015,13 @@ public class BookSet { ...@@ -989,13 +1015,13 @@ public class BookSet {
final Map<Long, AssistTempletDTO> assistTempletIds = assistTempletConsr.mapByIds(templetIds); final Map<Long, AssistTempletDTO> assistTempletIds = assistTempletConsr.mapByIds(templetIds);
if(MapUtils.isEmpty(assistTempletIds)){ if (MapUtils.isEmpty(assistTempletIds)) {
LOGGER.info("设置模板名称【END】"); LOGGER.info("设置模板名称【END】");
return; return;
} }
recordList.forEach(bookDto -> { recordList.forEach(bookDto -> {
BookDto book = (BookDto)bookDto; BookDto book = (BookDto) bookDto;
Long secondTempletId = book.getSecondTempletId(); Long secondTempletId = book.getSecondTempletId();
Long templetId = book.getTempletId(); Long templetId = book.getTempletId();
if (Objects.nonNull(secondTempletId)) { if (Objects.nonNull(secondTempletId)) {
...@@ -1057,9 +1083,9 @@ public class BookSet { ...@@ -1057,9 +1083,9 @@ public class BookSet {
} }
List<Long> templetIds = new ArrayList<>(); List<Long> templetIds = new ArrayList<>();
if(Objects.nonNull(bookDto.getSecondTempletId())){ if (Objects.nonNull(bookDto.getSecondTempletId())) {
templetIds.add(bookDto.getSecondTempletId()); templetIds.add(bookDto.getSecondTempletId());
}else if(Objects.nonNull(bookDto.getTempletId())){ } else if (Objects.nonNull(bookDto.getTempletId())) {
templetIds.add(bookDto.getTempletId()); templetIds.add(bookDto.getTempletId());
} }
...@@ -1068,10 +1094,10 @@ public class BookSet { ...@@ -1068,10 +1094,10 @@ public class BookSet {
return; return;
} }
if(Objects.nonNull(bookDto.getSecondTempletId())){ if (Objects.nonNull(bookDto.getSecondTempletId())) {
setBookDtoTempletInfo(assistTempletMap,bookDto,bookDto.getSecondTempletId()); setBookDtoTempletInfo(assistTempletMap, bookDto, bookDto.getSecondTempletId());
}else if(Objects.nonNull(bookDto.getTempletId())){ } else if (Objects.nonNull(bookDto.getTempletId())) {
setBookDtoTempletInfo(assistTempletMap,bookDto,bookDto.getTempletId()); setBookDtoTempletInfo(assistTempletMap, bookDto, bookDto.getTempletId());
} }
LOGGER.info("设置模板名称【END】"); LOGGER.info("设置模板名称【END】");
...@@ -1306,6 +1332,36 @@ public class BookSet { ...@@ -1306,6 +1332,36 @@ public class BookSet {
* 设置二维码相关信息 * 设置二维码相关信息
* @param recordList * @param recordList
*/ */
public void seBookGroupInfo(List<Object> recordList) {
if (ListUtils.isEmpty(recordList)) {
return;
}
for (Object object : recordList) {
BookDto bookDto = (BookDto) object;
if (null != bookDto.getIsBookGroup() && bookDto.getIsBookGroup()) {
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOByBookId(bookDto.getBookId(), bookDto.getChannelId(), bookDto.getAdviserId());
if (null != bookGroupDTO) {
bookDto.setBookGroupId(bookGroupDTO.getId());
bookDto.setGroupQrcodeUrl(bookGroupDTO.getGroupQrcodeUrl());
bookDto.setGroupQrcodeName(bookGroupDTO.getGroupQrcodeName());
Map<Long, BookGroupStatisticDTO> statisMap = bookGroupClassifyBiz.getBookGroupStatistic(Arrays.asList(bookGroupDTO.getId()));
if (!MapUtils.isEmpty(statisMap) && statisMap.containsKey(bookGroupDTO.getId())) {
BookGroupStatisticDTO statisticDTO = statisMap.get(bookGroupDTO.getId());
bookDto.setClassifyCount(null != statisticDTO.getClassifyCount() ? statisticDTO.getClassifyCount().longValue() : 0L);
bookDto.setGroupCount(null != statisticDTO.getGroupNumber() ? statisticDTO.getGroupNumber().longValue() : 0L);
} else {
bookDto.setClassifyCount(0L);
bookDto.setGroupCount(0L);
}
}
}
}
}
/**
* 设置社群书社群码相关信息
* @param recordList
*/
public void setQrInfo(List<Object> recordList) { public void setQrInfo(List<Object> recordList) {
if (ListUtils.isEmpty(recordList)) { if (ListUtils.isEmpty(recordList)) {
return; return;
......
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
<result column="BOOK_NAME" property="bookName" jdbcType="VARCHAR" /> <result column="BOOK_NAME" property="bookName" jdbcType="VARCHAR" />
<result column="ISBN" property="isbn" jdbcType="VARCHAR" /> <result column="ISBN" property="isbn" jdbcType="VARCHAR" />
<result column="SERIAL_NUMBER" property="serialNumber" jdbcType="VARCHAR" /> <result column="SERIAL_NUMBER" property="serialNumber" jdbcType="VARCHAR" />
<collection property="defendants" column="BOOK_APPEAL_ID" ofType="bookDefendant" <result column="IS_BOOK_GROUP" property="isBookGroup" jdbcType="BIT" />
<collection property="defendants" column="BOOK_APPEAL_ID" ofType="bookDefendant"
select="com.pcloud.book.appeal.dao.impl.BookDefendantDaoImpl.list" /> select="com.pcloud.book.appeal.dao.impl.BookDefendantDaoImpl.list" />
</resultMap> </resultMap>
...@@ -31,13 +32,13 @@ ...@@ -31,13 +32,13 @@
<insert id="insert" parameterType="bookAppeal" useGeneratedKeys="true" keyProperty="bookAppealId" flushCache="true"> <insert id="insert" parameterType="bookAppeal" useGeneratedKeys="true" keyProperty="bookAppealId" flushCache="true">
INSERT INTO `BOOK_APPEAL` ( INSERT INTO `BOOK_APPEAL` (
BOOK_ID, CHANNEL_ID, TEMPLET_ID,REASON,DECLARANT, PHONE, APPEAL_SUBMIT_DATE, APPEAL_STATE, AUDIT_REASON, AUDIT_USER, BOOK_ID, CHANNEL_ID, TEMPLET_ID,REASON,DECLARANT, PHONE, APPEAL_SUBMIT_DATE, APPEAL_STATE, AUDIT_REASON, AUDIT_USER,
CREATED_USER,CREATED_DATE,LAST_MODIFIED_USER, LAST_MODIFIED_DATE CREATED_USER,CREATED_DATE,LAST_MODIFIED_USER, LAST_MODIFIED_DATE, IS_BOOK_GROUP
) )
VALUES ( VALUES (
#{bookId, jdbcType=BIGINT}, #{channelId, jdbcType=BIGINT}, #{templetId, jdbcType=BIGINT}, #{reason, jdbcType=VARCHAR}, #{declarant, jdbcType=BIGINT}, #{bookId, jdbcType=BIGINT}, #{channelId, jdbcType=BIGINT}, #{templetId, jdbcType=BIGINT}, #{reason, jdbcType=VARCHAR}, #{declarant, jdbcType=BIGINT},
#{phone, jdbcType=VARCHAR}, #{appealSubmitDate, jdbcType=TIMESTAMP}, #{appealState, jdbcType=BIGINT}, #{auditReason, jdbcType=VARCHAR}, #{phone, jdbcType=VARCHAR}, #{appealSubmitDate, jdbcType=TIMESTAMP}, #{appealState, jdbcType=BIGINT}, #{auditReason, jdbcType=VARCHAR},
#{auditUser, jdbcType=BIGINT}, #{createdUser, jdbcType=BIGINT}, NOW(), #{auditUser, jdbcType=BIGINT}, #{createdUser, jdbcType=BIGINT}, NOW(),
#{lastModifiedUser, jdbcType=BIGINT}, NOW() #{lastModifiedUser, jdbcType=BIGINT}, NOW(), #{isBookGroup, jdbcType=BIT}
) )
</insert> </insert>
...@@ -82,7 +83,7 @@ ...@@ -82,7 +83,7 @@
<!-- 获取申诉详情 --> <!-- 获取申诉详情 -->
<select id="getById" resultMap="bookAppealMap" parameterType="long"> <select id="getById" resultMap="bookAppealMap" parameterType="long">
SELECT SELECT
BOOK_APPEAL_ID, PHONE,CHANNEL_ID, DECLARANT,REASON,BOOK_ID,VERSION,APPEAL_STATE,AUDIT_REASON,TEMPLET_ID,CREATED_USER BOOK_APPEAL_ID, PHONE,CHANNEL_ID, DECLARANT,REASON,BOOK_ID,VERSION,APPEAL_STATE,AUDIT_REASON,TEMPLET_ID,CREATED_USER,IS_BOOK_GROUP
FROM FROM
BOOK_APPEAL A BOOK_APPEAL A
WHERE WHERE
......
...@@ -448,14 +448,15 @@ ...@@ -448,14 +448,15 @@
SELECT SELECT
A.BOOK_ID, A.CHANNEL_ID, A.ADVISER_ID, A.IS_MAIN_EDITOR, T.TYPE_CODE, T.TYPE_NAME, B.ISBN, B.BOOK_NAME, B.REMARK, A.BOOK_ID, A.CHANNEL_ID, A.ADVISER_ID, A.IS_MAIN_EDITOR, T.TYPE_CODE, T.TYPE_NAME, B.ISBN, B.BOOK_NAME, B.REMARK,
B.AUTHOR, B.PUBLISH, B.PUBLISH_DATE, B.COVER_IMG, B.ORIGIN_NAME, B.BOOK_PRICE, B.ISSN, B.BOOK_NUM, B.SERIAL_NUMBER, B.AUTHOR, B.PUBLISH, B.PUBLISH_DATE, B.COVER_IMG, B.ORIGIN_NAME, B.BOOK_PRICE, B.ISSN, B.BOOK_NUM, B.SERIAL_NUMBER,
IF(ISNULL(BF.BOOK_FUND_ID),0,1) IS_FUND_SUPPORT,A.TEMPLET_ID, A.LAST_MODIFIED_DATE, A.BOOK_ADVISER_ID,I.BOOK_STATUS, IF(ISNULL(BF.BOOK_FUND_ID),0,1) IS_FUND_SUPPORT,A.TEMPLET_ID, if(G.ID IS NULL, A.LAST_MODIFIED_DATE, G.UPDATE_TIME) LAST_MODIFIED_DATE,
CONCAT('BK',A.BOOK_ID) uniqueNumber A.BOOK_ADVISER_ID,I.BOOK_STATUS, CONCAT('BK',A.BOOK_ID) uniqueNumber, if(G.ID IS NULL, 0, 1) isBookGroup
FROM FROM
BOOK_ADVISER A BOOK_ADVISER A
INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0 AND B.IS_DELETE = 0 INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0 AND B.IS_DELETE = 0
LEFT JOIN BOOK_TYPE T ON B.TYPE_CODE = T.TYPE_CODE LEFT JOIN BOOK_TYPE T ON B.TYPE_CODE = T.TYPE_CODE
LEFT JOIN BOOK_FUND BF ON BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW() LEFT JOIN BOOK_FUND BF ON BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW()
LEFT JOIN book_auth_info I ON I.BOOK_ID = A.BOOK_ID AND I.ADVISER_ID = #{adviserId} LEFT JOIN book_auth_info I ON I.BOOK_ID = A.BOOK_ID AND I.ADVISER_ID = #{adviserId}
LEFT JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID AND G.IS_DELETE = 0
WHERE WHERE
1=1 1=1
<if test="bookId!=null"> <if test="bookId!=null">
...@@ -511,7 +512,7 @@ ...@@ -511,7 +512,7 @@
</if> </if>
GROUP BY A.BOOK_ID, A.CHANNEL_ID GROUP BY A.BOOK_ID, A.CHANNEL_ID
ORDER BY ORDER BY
A.LAST_MODIFIED_DATE DESC LAST_MODIFIED_DATE DESC
<if test="num != null"> <if test="num != null">
LIMIT ${num} LIMIT ${num}
</if> </if>
...@@ -526,7 +527,7 @@ ...@@ -526,7 +527,7 @@
FROM FROM
BOOK_ADVISER A BOOK_ADVISER A
INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND B.IS_DELETE = 0 INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND B.IS_DELETE = 0
LEFT JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID LEFT JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID AND G.IS_DELETE = 0
WHERE WHERE
A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0 AND G.ID IS NULL A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0 AND G.ID IS NULL
<if test="name != null"> <if test="name != null">
...@@ -548,7 +549,7 @@ ...@@ -548,7 +549,7 @@
G.group_qrcode_name groupQrcodeName G.group_qrcode_name groupQrcodeName
FROM FROM
BOOK_ADVISER A BOOK_ADVISER A
INNER JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID INNER JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID AND G.IS_DELETE = 0
INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND B.IS_DELETE = 0 INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND B.IS_DELETE = 0
LEFT JOIN BOOK_TYPE T ON B.TYPE_CODE = T.TYPE_CODE LEFT JOIN BOOK_TYPE T ON B.TYPE_CODE = T.TYPE_CODE
LEFT JOIN BOOK_FUND BF ON BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW() LEFT JOIN BOOK_FUND BF ON BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW()
...@@ -586,11 +587,45 @@ ...@@ -586,11 +587,45 @@
AND AND
BF.BOOK_FUND_ID IS NOT NULL BF.BOOK_FUND_ID IS NOT NULL
</if> </if>
<if test="startDate != null and endDate != null">
AND G.create_time BETWEEN #{startDate} AND #{endDate}
</if>
GROUP BY A.BOOK_ID, A.CHANNEL_ID GROUP BY A.BOOK_ID, A.CHANNEL_ID
ORDER BY ORDER BY
G.UPDATE_TIME DESC G.UPDATE_TIME DESC
</select> </select>
<!-- 获取社群书列表(编辑) -->
<select id="listSimpleBookGroup4Adviser" resultMap="bookMap" parameterType="map">
SELECT
A.BOOK_ID,
A.CHANNEL_ID,
A.ADVISER_ID,
B.ISBN,
B.BOOK_NAME,
CONCAT('BK', A.BOOK_ID) uniqueNumber
FROM
BOOK_ADVISER A
INNER JOIN book_group G ON G.BOOK_ID = A.BOOK_ID
AND G.CHANNEL_ID = A.CHANNEL_ID
AND G.CREATE_USER = A.ADVISER_ID
AND G.IS_DELETE = 0
INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID
AND B.IS_DELETE = 0
WHERE
A.ADVISER_ID = #{adviserId}
AND A.IS_DELETE = 0
<if test="name != null">
AND
(B.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR G.group_qrcode_name LIKE CONCAT('%', #{name}, '%') OR B.ISBN LIKE CONCAT(#{name},'%') OR CONCAT('BK',A.BOOK_ID) = #{name})
</if>
GROUP BY
A.BOOK_ID,
A.CHANNEL_ID
ORDER BY
G.UPDATE_TIME DESC
</select>
<!-- 获取书籍列表(编辑) --> <!-- 获取书籍列表(编辑) -->
<select id="listBook4Adviser" resultMap="bookMap" parameterType="map"> <select id="listBook4Adviser" resultMap="bookMap" parameterType="map">
SELECT SELECT
......
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