Commit cc4ec6af by huzhenkun

微信群打卡二期

parent 7f831df3
package com.pcloud.book.clock.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
* @Author: hzk
* @Date: 2019/6/2 15:33
* @Version 1.0
*/
public class BookGroupClockKeywordDTO extends BaseDto {
private static final long serialVersionUID = -852531178830896628L;
@ApiModelProperty("bookClockKeywordId")
private Long bookClockKeywordId;
@ApiModelProperty("作品/应用ID")
private Long bookClockInfoId;
@ApiModelProperty("操作")
private String operation;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("关键词引导语")
private String guide;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("排序值")
private Long sequenceNum;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
public Long getBookClockKeywordId() {
return bookClockKeywordId;
}
public void setBookClockKeywordId(Long bookClockKeywordId) {
this.bookClockKeywordId = bookClockKeywordId;
}
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getGuide() {
return guide;
}
public void setGuide(String guide) {
this.guide = guide;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getSequenceNum() {
return sequenceNum;
}
public void setSequenceNum(Long sequenceNum) {
this.sequenceNum = sequenceNum;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "BookGroupClockKeywordDTO{" +
"bookClockKeywordId=" + bookClockKeywordId +
", bookClockInfoId=" + bookClockInfoId +
", operation='" + operation + '\'' +
", keyword='" + keyword + '\'' +
", guide='" + guide + '\'' +
", channelId=" + channelId +
", sequenceNum=" + sequenceNum +
", createUser=" + createUser +
", createTime=" + createTime +
", updateUser=" + updateUser +
", updateTime=" + updateTime +
'}';
}
}
package com.pcloud.book.clock.dto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @Author: hzk
* @Date: 2019/5/29 14:15
* @Version 1.0
*/
public class PushBookClockKeywordDTO implements Serializable {
private static final long serialVersionUID = 7723153542339015688L;
@ApiModelProperty("微信群打卡信息ID")
private Long bookClockInfoId;
@ApiModelProperty("作品/应用ID")
private Long originId;
@ApiModelProperty("作品/应用")
private String originType;
@ApiModelProperty("作品/应用类型")
private String typeCode;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("机器人ID")
private String robotId;
@ApiModelProperty("操作")
private String operation;
@ApiModelProperty("用户微信号")
private String userWxId;
@ApiModelProperty("wechatUserId")
private Long wechatUserId;
@ApiModelProperty("微信群ID")
private String wechatGroupId;
@ApiModelProperty("群ID")
private Long groupQrcodeId;
@ApiModelProperty("分类ID")
private Long classifyId;
@ApiModelProperty("社群码ID")
private Long bookGroupId;
@ApiModelProperty("编辑ID")
private Long adviserId;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getOriginId() {
return originId;
}
public void setOriginId(Long originId) {
this.originId = originId;
}
public String getOriginType() {
return originType;
}
public void setOriginType(String originType) {
this.originType = originType;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public String getUserWxId() {
return userWxId;
}
public void setUserWxId(String userWxId) {
this.userWxId = userWxId;
}
public Long getWechatUserId() {
return wechatUserId;
}
public void setWechatUserId(Long wechatUserId) {
this.wechatUserId = wechatUserId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getWechatGroupId() {
return wechatGroupId;
}
public void setWechatGroupId(String wechatGroupId) {
this.wechatGroupId = wechatGroupId;
}
public String getRobotId() {
return robotId;
}
public void setRobotId(String robotId) {
this.robotId = robotId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getGroupQrcodeId() {
return groupQrcodeId;
}
public void setGroupQrcodeId(Long groupQrcodeId) {
this.groupQrcodeId = groupQrcodeId;
}
@Override
public String toString() {
return "PushBookClockKeywordDTO{" +
"bookClockInfoId=" + bookClockInfoId +
", originId=" + originId +
", originType='" + originType + '\'' +
", typeCode='" + typeCode + '\'' +
", channelId=" + channelId +
", robotId='" + robotId + '\'' +
", operation='" + operation + '\'' +
", userWxId='" + userWxId + '\'' +
", wechatUserId=" + wechatUserId +
", wechatGroupId='" + wechatGroupId + '\'' +
", classifyId=" + classifyId +
", groupQrcodeId='" + groupQrcodeId + '\'' +
", bookGroupId=" + bookGroupId +
", adviserId=" + adviserId +
'}';
}
}
package com.pcloud.book.clock.eneity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/6/6 11:29
* @Version 1.0
*/
public class BookClockKeywordCheckParam extends BaseEntity {
private static final long serialVersionUID = -2920073442893221261L;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("编辑ID")
private Long adviserId;
@ApiModelProperty("微信群打卡ID")
private Long bookClockInfoId;
@ApiModelProperty("是否为书重复")
private Boolean isBookGroup;
@ApiModelProperty("已选社群书ID集合")
private List<Long> bookGroupIdList;
@ApiModelProperty("已选分类ID集合")
private List<Long> classifyIdList;
@ApiModelProperty("当前页")
private Integer currentPage;
@ApiModelProperty("每页个数")
private Integer numPerPage;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public List<Long> getBookGroupIdList() {
return bookGroupIdList;
}
public void setBookGroupIdList(List<Long> bookGroupIdList) {
this.bookGroupIdList = bookGroupIdList;
}
public List<Long> getClassifyIdList() {
return classifyIdList;
}
public void setClassifyIdList(List<Long> classifyIdList) {
this.classifyIdList = classifyIdList;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(Integer numPerPage) {
this.numPerPage = numPerPage;
}
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
@Override
public String toString() {
return "BookClockKeywordCheckParam{" +
"keyword='" + keyword + '\'' +
", adviserId=" + adviserId +
", bookClockInfoId=" + bookClockInfoId +
", isBookGroup=" + isBookGroup +
", bookGroupIdList=" + bookGroupIdList +
", classifyIdList=" + classifyIdList +
", currentPage=" + currentPage +
", numPerPage=" + numPerPage +
'}';
}
}
package com.pcloud.book.clock.eneity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/6/6 11:29
* @Version 1.0
*/
public class CancelSelectedParam extends BaseEntity {
private static final long serialVersionUID = -2920073442893221261L;
@ApiModelProperty("作品/应用ID")
private Long bookClockInfoId;
@ApiModelProperty("社群书ID")
private Long bookGroupId;
@ApiModelProperty("分类ID")
private Long classifyId;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
@Override
public String toString() {
return "CancelSelectedParam{" +
"bookClockInfoId=" + bookClockInfoId +
", bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
'}';
}
}
package com.pcloud.book.clock.service;
import com.pcloud.book.clock.dto.BookGroupClockKeywordDTO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@FeignClient(value = "pcloud-service-book", qualifier = "bookClockInfoServiceCloud", path = "book/v1.0/bookClockInfoService")
@Api(description = "微信群打卡内部服务")
public interface BookClockInfoService {
@ApiOperation("获取微信群某一动作动作关键词")
@RequestMapping(value = "getBookClockKeyword4Clock",method = RequestMethod.GET)
ResponseEntity<ResponseDto<BookGroupClockKeywordDTO>> getBookClockKeyword4Clock(@RequestParam("bookClockInfoId") Long bookClockInfoId,
@RequestParam("operation") String operation) throws BizException;
@ApiOperation("发送微信群打卡消息")
@PostMapping("/sendBookClockGroupMessage")
void sendBookClockGroupMessage(@RequestBody Map<String, Object> map) throws BizException;
}
package com.pcloud.book.clock.biz;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam;
import java.util.Map;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/24 14:50
* @Version 1.0
*/
public interface BookClockBiz {
/**
* 关联作品/应用及微信群
* @param bookClockInfo
*/
Long createBookGroupClock(BookClockInfo bookClockInfo) throws BizException;
/**
* 修改关联关系
* @param bookClockInfo
* @throws BizException
*/
void updateBookGroupClock(BookClockInfo bookClockInfo) throws BizException;
/**
* 获取关联的基本信息
* @param bookClockInfoId
* @return
*/
BookClockInfoDTO getBookGroupClockBaseInfo(Long bookClockInfoId);
/**
* 获取该编辑已选的超级作者作品及应用
* @param adviserId
* @return
*/
Map<String, List<Long>> getAdviserHasSelected(Long adviserId);
/**
* 获取关联作品/应用列表
* @param pageParam
* @param paramMap
* @return
*/
PageBean listBookGroupClock(PageParam pageParam, Map<String, Object> paramMap);
/**
* 发送微信群打卡群发消息
* @param paramMap
*/
void sendBookClockGroupMessage(Map<String, Object> paramMap);
}
package com.pcloud.book.clock.biz;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.clock.dto.BookGroupClockKeywordDTO;
import com.pcloud.book.clock.eneity.BookClockKeywordCheckParam;
import com.pcloud.book.clock.eneity.CancelSelectedParam;
import com.pcloud.common.page.PageBean;
/**
* @Author: hzk
* @Date: 2019/5/28 14:50
* @Version 1.0
*/
public interface BookClockKeywordBiz {
/**
* 获取该关键词已关联的书及分类
* @param bookClockKeywordCheckParam
* @return
*/
BookClockKeywordDTO getKeywordBookClockList(BookClockKeywordCheckParam bookClockKeywordCheckParam);
/**
* 发送关键词信息
* @param bookClockInfoDTO
* @param userWxId
* @return
*/
Boolean sendKeywordMessage(BookClockInfoDTO bookClockInfoDTO, String userWxId, String wechatGroupId);
/**
* 获取微信群某一动作动作关键词
* @param bookClockInfoId
* @param operation
* @return
*/
BookGroupClockKeywordDTO getBookClockKeyword4Clock(Long bookClockInfoId,String operation);
/**
* 获取该关键词已关联的书及分类
* @param bookClockKeywordCheckParam
* @return
*/
PageBean getKeywordBookClockList4HasSelected(BookClockKeywordCheckParam bookClockKeywordCheckParam);
/**
* 取消关联
* @param cancelSelectedParam
*/
void cancelSelected(CancelSelectedParam cancelSelectedParam);
}
package com.pcloud.book.clock.biz.impl;
import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.biz.BookClockBiz;
import com.pcloud.book.clock.check.BookClockCheck;
import com.pcloud.book.clock.dao.BookClockInfoDao;
import com.pcloud.book.clock.dao.BookClockKeywordDao;
import com.pcloud.book.clock.dao.BookGroupClockDao;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.clock.dto.BookClockListDTO;
import com.pcloud.book.clock.dto.BookGroupClockDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.book.clock.entity.BookGroupClock;
import com.pcloud.book.clock.enums.OriginTypeEnum;
import com.pcloud.book.clock.enums.UpdateTypeEnum;
import com.pcloud.book.clock.set.BookGroupClockSet;
import com.pcloud.book.clock.vo.response.ListBookGroupClockResponseVO;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.facade.quartz.service.ScheduleService;
import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author: hzk
* @Date: 2019/5/24 14:50
* @Version 1.0
*/
@Component("bookClockBiz")
public class BookClockBizImpl implements BookClockBiz {
@Autowired
private BookClockCheck bookClockCheck;
@Autowired
private BookGroupClockSet bookGroupClockSet;
@Autowired
private BookGroupClockDao bookGroupClockDao;
@Autowired
private BookClockInfoDao bookClockInfoDao;
@Autowired
private BookClockKeywordDao bookClockKeywordDao;
@Autowired
private AppConsr appConsr;
@Autowired
private ProductConsr productConsr;
@Autowired
private BookGroupDao bookGroupDao;
@Autowired
private BookGroupClassifyDao bookGroupClassifyDao;
@Autowired
private GroupQrcodeDao groupQrcodeDao;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private ScheduleService scheduleService;
/**
* 关联作品/应用及微信群
* @param bookClockInfo
*/
@Override
@ParamLog("关联作品/应用及微信群")
@Transactional(rollbackFor = Exception.class)
public Long createBookGroupClock(BookClockInfo bookClockInfo) throws BizException {
Long originId = bookClockInfo.getOriginId();
String originType = bookClockInfo.getOriginType();
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("originId",originId);
paramMap.put("originType",originType);
bookClockCheck.checkParam4CreateBookGroupClock(bookClockInfo);
//校验作品/应用是否创建过
paramMap.put("adviserId",bookClockInfo.getCreateUser());
BookClockInfoDTO bookClockInfoDTO = bookClockInfoDao.getBaseInfoByMap(paramMap);
if(null != bookClockInfoDTO){
throw new BookBizException(BookBizException.ERROR,"该作品/应用不可重复创建!");
}
if(null == bookClockInfo.getIsNotice()){
bookClockInfo.setIsNotice(false);
}
List<Long> bookGroupIdList = bookClockInfo.getBookGroupIdList();
List<Long> classifyIdList = bookClockInfo.getClassifyIdList();
//存储微信群打卡基本信息
bookClockInfoDao.insert(bookClockInfo);
Long bookClockInfoId = bookClockInfo.getBookClockInfoId();
//存储关键词
List<BookClockKeyword> bookClockKeywordList = bookClockInfo.getBookClockKeywordList();
bookClockCheck.checkBookClockKeyword(bookClockKeywordList,bookClockInfo.getCreateUser(),bookGroupIdList,classifyIdList);
//获取该作品/应用关键词最大排序值
Long maxSequence4Keyword = bookClockKeywordDao.getMaxSequence4Keyword(bookClockInfoId);
maxSequence4Keyword = null == maxSequence4Keyword ? 0L : maxSequence4Keyword;
bookGroupClockSet.setData4BookClockKeyword(bookClockInfoId,bookClockInfo.getCreateUser(),maxSequence4Keyword,bookClockKeywordList);
bookClockKeywordDao.batchInsert(bookClockKeywordList);
//关联社群书
List<Long> classifyIdsUnderBookGroup = new ArrayList<>();
List<BookGroupClock> bookGroupClockList = new ArrayList<>();
if(!ListUtils.isEmpty(bookGroupIdList)){
List<BookGroupClock> list4BookGroupIds = bookGroupClockSet.setData4BookGroupClock(bookClockInfo, true, bookGroupIdList);
bookGroupClockList.addAll(list4BookGroupIds);
//获取社群书下面的所有分类
classifyIdsUnderBookGroup = bookGroupClassifyDao.getIdByBookGroupIds(bookGroupIdList);
}
//关联分类
if(!ListUtils.isEmpty(classifyIdList)){
//过滤上面已选取的书下面的分类
if(!ListUtils.isEmpty(classifyIdsUnderBookGroup)){
classifyIdList.removeAll(classifyIdsUnderBookGroup);
}
List<BookGroupClock> list4ClassifyIds = bookGroupClockSet.setData4BookGroupClock(bookClockInfo, false, classifyIdList);
bookGroupClockList.addAll(list4ClassifyIds);
}
//存储关联关系
if(!ListUtils.isEmpty(bookGroupClockList)){
bookGroupClockDao.batchInsert(bookGroupClockList);
}
//删除上面关联的书下的分类
if(!ListUtils.isEmpty(classifyIdsUnderBookGroup)){
paramMap.put("classifyIds",classifyIdsUnderBookGroup);
bookGroupClockDao.deleteClassifyIdByBookGroupIds(paramMap);
}
if(bookClockInfo.getIsNotice()){
bookGroupClockSet.createCronQuartz(bookClockInfo);
}
return bookClockInfoId;
}
/**
* 修改关联关系
* @param bookClockInfo
* @throws BizException
*/
@Override
@ParamLog("修改关联关系")
@Transactional(rollbackFor = Exception.class)
public void updateBookGroupClock(BookClockInfo bookClockInfo) throws BizException {
Long bookClockInfoId = bookClockInfo.getBookClockInfoId();
BookClockInfoDTO bookClockInfoDTO = bookClockInfoDao.getBaseInfoById(bookClockInfoId);
Long originId = bookClockInfoDTO.getOriginId();
String originType = bookClockInfoDTO.getOriginType();
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
String updateType = bookClockInfo.getUpdateType();
if(UpdateTypeEnum.APP.value.equalsIgnoreCase(updateType)){
//修改作品/应用
BookClockInfo newBookClockInfo = bookClockCheck.checkOriginIdAndOriginType(bookClockInfo);
Long newOriginId = newBookClockInfo.getOriginId();
String newOriginType = newBookClockInfo.getOriginType();
String originTitle = newBookClockInfo.getOriginTitle();
String originImg = newBookClockInfo.getOriginImg();
String uniqueNumber = newBookClockInfo.getUniqueNumber();
paramMap.put("newOriginId",newOriginId);
paramMap.put("newOriginType",newOriginType);
paramMap.put("originTitle",originTitle);
paramMap.put("originImg",originImg);
paramMap.put("uniqueNumber",uniqueNumber);
bookClockInfoDao.updateBaseInfo4AppType(paramMap);
}else if(UpdateTypeEnum.BOOK_GROUP.value.equalsIgnoreCase(updateType)){
//修改关联的社群码
List<BookGroupClock> bookGroupClockList = new ArrayList<>();
List<Long> bookGroupIdList = bookClockInfo.getBookGroupIdList();
List<Long> classifyIdList = bookClockInfo.getClassifyIdList();
List<Long> classifyIdsUnderBookGroup = new ArrayList<>();
if(ListUtils.isEmpty(bookGroupIdList) && ListUtils.isEmpty(classifyIdList)){
throw new BookBizException(BookBizException.ERROR,"参数有误!");
}
//修改社群书
if(!ListUtils.isEmpty(bookGroupIdList)){
//删除关联的旧的社群书
bookGroupClockDao.deleteBookGroupId4AppType(paramMap);
List<BookGroupClock> list4BookGroupIds = bookGroupClockSet.setData4BookGroupClock(bookClockInfo, true, bookGroupIdList);
bookGroupClockList.addAll(list4BookGroupIds);
//获取社群书下面的所有分类
classifyIdsUnderBookGroup = bookGroupClassifyDao.getIdByBookGroupIds(bookGroupIdList);
}
//修改关联的分类
if(!ListUtils.isEmpty(classifyIdList)){
bookGroupClockDao.deleteClassifyId4AppType(paramMap);
if(!ListUtils.isEmpty(classifyIdsUnderBookGroup)){
classifyIdList.removeAll(classifyIdsUnderBookGroup);
}
List<BookGroupClock> list4ClassifyIds = bookGroupClockSet.setData4BookGroupClock(bookClockInfo, false, classifyIdList);
bookGroupClockList.addAll(list4ClassifyIds);
}
//存储关联关系
if(!ListUtils.isEmpty(bookGroupClockList)){
bookGroupClockDao.batchInsert(bookGroupClockList);
}
}else if(UpdateTypeEnum.KEYWORD.value.equalsIgnoreCase(updateType)){
//修改关键词
List<BookClockKeyword> bookClockKeywordList = bookClockInfo.getBookClockKeywordList();
//删除旧的关键词
bookClockKeywordDao.deleteBookClockKeyword(paramMap);
bookClockCheck.checkBookClockKeyword(bookClockKeywordList,bookClockInfo.getCreateUser(),bookClockInfo.getBookGroupIdList(),bookClockInfo.getClassifyIdList());
bookGroupClockSet.setData4BookClockKeyword(bookClockInfoId,bookClockInfoDTO.getCreateUser(),0L,bookClockKeywordList);
bookClockKeywordDao.batchInsert(bookClockKeywordList);
//修改消息提醒
if(null != bookClockInfo.getIsNotice() && bookClockInfo.getIsNotice()){
if(StringUtil.isEmpty(bookClockInfo.getNoticeTime()) || StringUtil.isEmpty(bookClockInfo.getNoticeContent())){
throw new BookBizException(BookBizException.ERROR,"修改参数有误!");
}
}
try{
scheduleService.deleteJob("clockMsgConfig_"+bookClockInfoId,"book");
}catch (Exception e){
throw new BookBizException(BookBizException.ERROR,"删除定时任务失败!");
}
if(null != bookClockInfo.getIsNotice() && bookClockInfo.getIsNotice()){
bookGroupClockSet.createCronQuartz(bookClockInfo);
}
paramMap.put("isNotice",bookClockInfo.getIsNotice());
paramMap.put("noticeTime",bookClockInfo.getNoticeTime());
paramMap.put("noticeContent",bookClockInfo.getNoticeContent());
bookClockInfoDao.updateBaseInfo4KeywordType(paramMap);
}else{
throw new BookBizException(BookBizException.ERROR,"修改参数有误!");
}
}
/**
* 获取关联的基本信息
* @param bookClockInfoId
* @return
*/
@Override
public BookClockInfoDTO getBookGroupClockBaseInfo(Long bookClockInfoId) {
BookClockInfoDTO bookClockInfoDTO = bookClockInfoDao.getBookGroupClockBaseInfo(bookClockInfoId);
if(null == bookClockInfoDTO){
return null;
}
//获取作品/应用关联的书及分类
BookClockInfoDTO groupAndClassifyListByOrigin = bookGroupClockSet.getGroupAndClassifyListByInfoIds(Lists.newArrayList(bookClockInfoId));
bookClockInfoDTO.setBookGroupIdList(groupAndClassifyListByOrigin.getBookGroupIdList());
bookClockInfoDTO.setBookGroupDTOList(groupAndClassifyListByOrigin.getBookGroupDTOList());
bookClockInfoDTO.setClassifyIdList(groupAndClassifyListByOrigin.getClassifyIdList());
bookClockInfoDTO.setClassifyDTOList(groupAndClassifyListByOrigin.getClassifyDTOList());
//关联的关键词
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
List<BookClockKeywordDTO> bookClockKeywordDTOS = bookClockKeywordDao.getKeywordsByInfoId(paramMap);
bookClockInfoDTO.setBookClockKeywordDTOList(bookClockKeywordDTOS);
return bookClockInfoDTO;
}
/**
* 获取该编辑已选的超级作者作品及应用
* @param adviserId
* @return
*/
@Override
public Map<String, List<Long>> getAdviserHasSelected(Long adviserId) {
Map<String, List<Long>> result = new HashMap<>();
List<BookClockInfoDTO> bookClockInfoDTOList = bookClockInfoDao.getOriginIdAndTypeByAdviserId(adviserId);
if (!ListUtils.isEmpty(bookClockInfoDTOList)) {
List<Long> appIds = bookClockInfoDTOList.stream().filter(bookClockInfoDTO -> OriginTypeEnum.APP.value.equalsIgnoreCase(bookClockInfoDTO.getOriginType())).map(BookClockInfoDTO::getOriginId).collect(Collectors.toList());
result.put(OriginTypeEnum.APP.value, ListUtils.isEmpty(appIds) ? Lists.newArrayList() : appIds);
List<Long> proIds = bookClockInfoDTOList.stream().filter(bookClockInfoDTO -> OriginTypeEnum.PRODUCT.value.equalsIgnoreCase(bookClockInfoDTO.getOriginType())).map(BookClockInfoDTO::getOriginId).collect(Collectors.toList());
result.put(OriginTypeEnum.PRODUCT.value, ListUtils.isEmpty(proIds) ? Lists.newArrayList() : proIds);
}
return result;
}
@Override
public PageBean listBookGroupClock(PageParam pageParam, Map<String, Object> paramMap) {
//获取群打卡的列表
PageBean pageBean = bookClockInfoDao.listBookGroupClock(pageParam, paramMap);
List<Object> dtos = pageBean.getRecordList();
if(ListUtils.isEmpty(dtos)){
return new PageBean();
}
dtos = dtos.stream().map(o -> {
BookClockListDTO dto = (BookClockListDTO) o;
ListBookGroupClockResponseVO vo = ListBookGroupClockResponseVO.valueFromBookClockInfoDTO(dto);
//社群书id
List<Long> groupIds = dto.getBookGroupIdList();
List<Long> groupClassifyIds = new ArrayList<>();
//TODO 根据社群书ids获取所有的群分类id
if (!CollectionUtils.isEmpty(groupIds)){
groupClassifyIds = bookGroupClassifyDao.getIdByBookGroupIds(groupIds);
}
//群分类id
List<Long> classifyIds = dto.getClassifyIdList();
classifyIds.addAll(groupClassifyIds);
vo.setClassifyCount(classifyIds.size());
//TODO 获取二维码总数
Integer qrcodeCount = 0;
if (!CollectionUtils.isEmpty(classifyIds)){
qrcodeCount = groupQrcodeDao.countByClassifyIds(classifyIds);
}
vo.setBookGroupQrcodeNum(qrcodeCount);
return vo;
}).collect(Collectors.toList());
pageBean.setRecordList(dtos);
return pageBean;
}
/**
* 发送微信群打卡群发消息
* @param map
*/
@Override
@ParamLog("发送微信群打卡群发消息")
public void sendBookClockGroupMessage(Map<String, Object> map) {
Long bookClockInfoId = ((Integer)map.get("bookClockInfoId")).longValue();
//获取关键词基本信息
BookClockInfoDTO bookClockInfoDTO = bookClockInfoDao.getBaseInfoById(bookClockInfoId);
if(null != bookClockInfoDTO && bookClockInfoDTO.getIsNotice()){
//获取关联的群
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
List<BookGroupClockDTO> bookGroupClockDTOS = bookGroupClockDao.getBookGroupClockIds(paramMap);
List<Long> allClassifyIds = new ArrayList<>();
if(!ListUtils.isEmpty(bookGroupClockDTOS)){
List<Long> bookGroupIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getClassifyId()).map(BookGroupClockDTO::getBookGroupId).collect(Collectors.toList());
if(!ListUtils.isEmpty(bookGroupIds)){
List<Long> classifyIdsUnderBookGroup = bookGroupClassifyDao.getIdByBookGroupIds(bookGroupIds);
if(!ListUtils.isEmpty(classifyIdsUnderBookGroup)){
allClassifyIds.addAll(classifyIdsUnderBookGroup);
}
}
List<Long> classifyIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getBookGroupId()).map(BookGroupClockDTO::getClassifyId).collect(Collectors.toList());
if(!ListUtils.isEmpty(classifyIds)){
allClassifyIds.addAll(classifyIds);
}
if(!ListUtils.isEmpty(allClassifyIds)){
//获取所有的微信群ID
List<String> weixinGroupIds = groupQrcodeDao.getWeixinGroupIdsByClassifyIdList(allClassifyIds);
if(!ListUtils.isEmpty(weixinGroupIds)){
for (String weixinGroupId:weixinGroupIds) {
//获取机器人微信号
String altId = wechatGroupConsr.getRobotIdByGroupId(weixinGroupId);
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setGroupId(weixinGroupId);
sendTextMessageVO.setAltId(altId);
sendTextMessageVO.setContent(bookClockInfoDTO.getNoticeContent());
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
}
}
}
}
}
}
package com.pcloud.book.clock.biz.impl;
import com.google.common.collect.Lists;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.biz.BookClockKeywordBiz;
import com.pcloud.book.clock.dao.BookClockInfoDao;
import com.pcloud.book.clock.dao.BookClockKeywordDao;
import com.pcloud.book.clock.dao.BookGroupClockDao;
import com.pcloud.book.clock.dto.*;
import com.pcloud.book.clock.eneity.BookClockKeywordCheckParam;
import com.pcloud.book.clock.eneity.CancelSelectedParam;
import com.pcloud.book.clock.enums.OriginTypeEnum;
import com.pcloud.book.clock.set.BookGroupClockSet;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.impl.BookGroupClassifyBizImpl;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import org.apache.commons.collections4.SetUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: hzk
* @Date: 2019/5/24 14:50
* @Version 1.0
*/
@Component("bookClockKeywordBiz")
public class BookClockKeywordBizImpl implements BookClockKeywordBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(BookClockKeywordBizImpl.class);
@Autowired
private BookClockKeywordDao bookClockKeywordDao;
@Autowired
private BookGroupClockDao bookGroupClockDao;
@Autowired
private BookGroupDao bookGroupDao;
@Autowired
private BookGroupClassifyDao bookGroupClassifyDao;
@Autowired
private BookGroupClockSet bookGroupClockSet;
@Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired
private BookClockInfoDao bookClockInfoDao;
@Autowired
private BookMQProducer bookMQProducer;
@Autowired
private AppConsr appConsr;
@Autowired
private ProductConsr productConsr;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private ReaderConsr readerConsr;
/**
* 获取该关键词已关联的书及分类
* @param bookClockKeywordCheckParam
* @return
*/
@Override
@ParamLog("获取该关键词已关联的书及分类")
public BookClockKeywordDTO getKeywordBookClockList(BookClockKeywordCheckParam bookClockKeywordCheckParam) {
Long adviserId = bookClockKeywordCheckParam.getAdviserId();
String keyword = bookClockKeywordCheckParam.getKeyword();
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("adviserId",adviserId);
paramMap.put("keyword",keyword);
List<Long> bookClockInfoIdList = bookClockKeywordDao.getInfoIdByKeyword(paramMap);
if(ListUtils.isEmpty(bookClockInfoIdList)){
return new BookClockKeywordDTO();
}
Long bookClockInfoId = bookClockKeywordCheckParam.getBookClockInfoId();
if(null != bookClockInfoId){
bookClockInfoIdList.remove(bookClockInfoId);
}
if(ListUtils.isEmpty(bookClockInfoIdList)){
return new BookClockKeywordDTO();
}
//关联的社群码
BookClockKeywordDTO bookClockKeywordDTO = new BookClockKeywordDTO();
BookClockInfoDTO bookClockInfoDTO = bookGroupClockSet.getGroupAndClassifyListByInfoIds(bookClockInfoIdList);
if(null == bookClockInfoDTO){
return bookClockKeywordDTO;
}
//判断关键词对应的书及分类与选取的书及分类有无重复
Set<Long> bookGroupIdSet = new HashSet<>();
Set<Long> classifyIdSet = new HashSet<>();
List<Long> oldBookGroupIdList = bookClockInfoDTO.getBookGroupIdList();
List<Long> oldClassifyIdList = bookClockInfoDTO.getClassifyIdList();
List<Long> newBookGroupIdList = bookClockKeywordCheckParam.getBookGroupIdList();
List<Long> newClassifyIdList = bookClockKeywordCheckParam.getClassifyIdList();
//校验书,分类有无重复
List<Long> sameBookGroupIds = CommonUtils.getSameEle(oldBookGroupIdList, newBookGroupIdList);
if(!ListUtils.isEmpty(sameBookGroupIds)){
bookGroupIdSet.addAll(sameBookGroupIds);
}
List<Long> sameClassifyIds = CommonUtils.getSameEle(oldClassifyIdList, newClassifyIdList);
if(!ListUtils.isEmpty(sameClassifyIds)){
classifyIdSet.addAll(sameClassifyIds);
}
//校验旧书与新分类有无重复
List<Long> bookGroupIdContainClassify = bookGroupClockSet.getSameClassifyUnderBookGroup(oldBookGroupIdList, newClassifyIdList, true);
if(!ListUtils.isEmpty(bookGroupIdContainClassify)){
bookGroupIdSet.addAll(bookGroupIdContainClassify);
}
//校验新书与旧分类
List<Long> sameClassifyUnderBookGroup = bookGroupClockSet.getSameClassifyUnderBookGroup(newBookGroupIdList, oldClassifyIdList, false);
if(!ListUtils.isEmpty(sameClassifyUnderBookGroup)){
classifyIdSet.addAll(sameClassifyUnderBookGroup);
}
List<Long> bookGroupIdList = new ArrayList<>();
bookGroupIdList.addAll(bookGroupIdSet);
List<Long> classifyIdList = new ArrayList<>();
classifyIdList.addAll(classifyIdSet);
if(!ListUtils.isEmpty(bookGroupIdList)){
List<BookGroupDTO> bookGroupDTOS = bookGroupDao.getBookBaseInfoByIds(bookGroupIdList);
bookClockKeywordDTO.setBookGroupDTOList(bookGroupDTOS);
}
if(!ListUtils.isEmpty(classifyIdList)){
List<ClassifyDTO> classifyDTOS = bookGroupClassifyDao.getNameWithBookNameByIds(classifyIdList);
bookClockKeywordDTO.setClassifyDTOList(classifyDTOS);
}
return bookClockKeywordDTO;
}
/**
* 发送关键词信息
* @param bookClockInfoDTO
* @param userWxId
* @return
*/
@Override
@ParamLog("为微信群打卡关键词,发送关键词信息")
public Boolean sendKeywordMessage(BookClockInfoDTO bookClockInfoDTO, String userWxId,String wechatGroupId) {
//发送TOPIC进行相关操作
Long originId = bookClockInfoDTO.getOriginId();
String originType = bookClockInfoDTO.getOriginType();
PushBookClockKeywordDTO pushBookClockKeywordDTO = new PushBookClockKeywordDTO();
pushBookClockKeywordDTO.setOriginId(bookClockInfoDTO.getOriginId());
pushBookClockKeywordDTO.setOriginType(bookClockInfoDTO.getOriginType());
pushBookClockKeywordDTO.setUserWxId(userWxId);
pushBookClockKeywordDTO.setOperation(bookClockInfoDTO.getOperation());
pushBookClockKeywordDTO.setChannelId(bookClockInfoDTO.getChannelId());
pushBookClockKeywordDTO.setWechatGroupId(wechatGroupId);
pushBookClockKeywordDTO.setGroupQrcodeId(bookClockInfoDTO.getGroupQrcodeId());
pushBookClockKeywordDTO.setBookGroupId(bookClockInfoDTO.getBookGroupId());
pushBookClockKeywordDTO.setClassifyId(bookClockInfoDTO.getClassifyId());
pushBookClockKeywordDTO.setAdviserId(bookClockInfoDTO.getCreateUser());
pushBookClockKeywordDTO.setBookClockInfoId(bookClockInfoDTO.getBookClockInfoId());
String robotId = wechatGroupConsr.getRobotIdByGroupId(wechatGroupId);
Long wechatUserId = readerConsr.getWechatUserId(userWxId, bookClockInfoDTO.getChannelId());
pushBookClockKeywordDTO.setWechatUserId(wechatUserId);
pushBookClockKeywordDTO.setRobotId(robotId);
if(OriginTypeEnum.APP.value.equalsIgnoreCase(originType)){
AppDto appDto = appConsr.getBaseById(originId);
if(null == appDto){
throw new BookBizException(BookBizException.ERROR,"该应用不存在!");
}
pushBookClockKeywordDTO.setTypeCode(appDto.getTypeCode());
}
if(OriginTypeEnum.PRODUCT.value.equalsIgnoreCase(originType)){
ProductDto productDto = productConsr.getProBaseById(originId);
if(null == productDto){
throw new BookBizException(BookBizException.ERROR,"该作品不存在!");
}
pushBookClockKeywordDTO.setTypeCode(productDto.getProductTypeDto().getTypeCode());
}
LOGGER.info("为微信群打卡关键词,发送关键词信息TOPIC,pushBookClockKeywordDTO="+pushBookClockKeywordDTO);
bookMQProducer.pushBookClockKeyword(pushBookClockKeywordDTO);
return true;
}
/**
* 获取微信群某一动作动作关键词
* @param bookClockInfoId
* @param operation
* @return
*/
@Override
public BookGroupClockKeywordDTO getBookClockKeyword4Clock(Long bookClockInfoId, String operation) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
paramMap.put("operation",operation);
return bookClockKeywordDao.getBookClockKeyword4Clock(paramMap);
}
/**
* 获取重复的书及分类
* @param bookClockKeywordCheckParam
* @return
*/
@Override
@ParamLog("获取该关键词已关联的书及分类(分页)")
public PageBean getKeywordBookClockList4HasSelected(BookClockKeywordCheckParam bookClockKeywordCheckParam) {
Integer currentPage = bookClockKeywordCheckParam.getCurrentPage();
Integer numPerPage = bookClockKeywordCheckParam.getNumPerPage();
Long adviserId = bookClockKeywordCheckParam.getAdviserId();
String keyword = bookClockKeywordCheckParam.getKeyword();
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("adviserId",adviserId);
paramMap.put("keyword",keyword);
List<Long> bookClockInfoIdList = bookClockKeywordDao.getInfoIdByKeyword(paramMap);
if(ListUtils.isEmpty(bookClockInfoIdList)){
return new PageBean();
}
Boolean isBookGroup = bookClockKeywordCheckParam.getIsBookGroup();
List<Object> objectList = new ArrayList<>();
List<Long> bookGroupIdList = new ArrayList<>();
List<Long> classifyIdList = new ArrayList<>();
List<Long> newBookGroupIdList = bookClockKeywordCheckParam.getBookGroupIdList();
List<Long> newClassifyIdList = bookClockKeywordCheckParam.getClassifyIdList();
Map<String,Object> idMap = new HashMap<>();
for (Long bookClockInfoId:bookClockInfoIdList) {
idMap.put("bookClockInfoId",bookClockInfoId);
BookClockInfoDTO bookClockInfoDTO = bookClockInfoDao.getBaseInfoById(bookClockInfoId);
//获取该作品下所有的书及分类
List<BookGroupClockDTO> bookGroupClockDTOS = bookGroupClockDao.getInfoByInfoIds(Lists.newArrayList(bookClockInfoId));
if(ListUtils.isEmpty(bookGroupClockDTOS)){
continue;
}
if(isBookGroup){
//与书校验(新书与旧书,新分类与旧书)
List<Long> oldBookGroupIdList = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getClassifyId()).map(BookGroupClockDTO::getBookGroupId).collect(Collectors.toList());
List<Long> sameEle4BookGroupIds = CommonUtils.getSameEle(oldBookGroupIdList, newBookGroupIdList);
if(!ListUtils.isEmpty(sameEle4BookGroupIds)){
bookGroupIdList.addAll(sameEle4BookGroupIds);
}
//新分类与旧书
List<Long> bookGroupId4SameClassifyList = bookGroupClockSet.getSameClassifyUnderBookGroup(oldBookGroupIdList, newClassifyIdList, true);
if(!ListUtils.isEmpty(bookGroupId4SameClassifyList)){
bookGroupIdList.addAll(bookGroupId4SameClassifyList);
}
if(!ListUtils.isEmpty(bookGroupIdList)){
idMap.put("bookGroupIdList",bookGroupIdList);
List<BookGroupDTO> bookGroupDTOS = bookGroupDao.getBookInfoByIdsWithBookClockInfoId(idMap);
objectList.addAll(bookGroupDTOS);
}
}else{
//与分类校验(新分类与旧分类,旧分类与新书)
List<Long> oldClassifyIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getBookGroupId()).map(BookGroupClockDTO::getClassifyId).collect(Collectors.toList());
List<Long> sameEle4ClassifyIds = CommonUtils.getSameEle(oldClassifyIds, newClassifyIdList);
if(!ListUtils.isEmpty(sameEle4ClassifyIds)){
classifyIdList.addAll(sameEle4ClassifyIds);
}
//旧分类与新书
List<Long> classifyIds4SameBookGroup = bookGroupClockSet.getSameClassifyUnderBookGroup(newBookGroupIdList, oldClassifyIds, false);
if(!ListUtils.isEmpty(classifyIds4SameBookGroup)){
classifyIdList.addAll(classifyIds4SameBookGroup);
}
if(!ListUtils.isEmpty(classifyIdList)){
idMap.put("classifyIdList",classifyIdList);
List<ClassifyDTO> classifyDTOS = bookGroupClassifyDao.getNameWithBookClockInfoIdByIds(idMap);
objectList.addAll(classifyDTOS);
}
}
bookGroupIdList.clear();
classifyIdList.clear();
}
if(!ListUtils.isEmpty(objectList)){
return new PageBean(currentPage,numPerPage,objectList.size(),objectList);
}
return new PageBean();
}
/**
* 取消关联
* @param cancelSelectedParam
*/
@Override
@ParamLog("取消关联")
public void cancelSelected(CancelSelectedParam cancelSelectedParam) {
Long bookClockInfoId = cancelSelectedParam.getBookClockInfoId();
Long bookGroupId = cancelSelectedParam.getBookGroupId();
Long classifyId = cancelSelectedParam.getClassifyId();
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
if(null != bookGroupId && 0 != bookGroupId){
classifyId = 0L;
}else{
bookGroupId = 0L;
}
paramMap.put("bookGroupId",bookGroupId);
paramMap.put("classifyId",classifyId);
bookGroupClockDao.cancelSelected(paramMap);
}
}
package com.pcloud.book.clock.check;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/27 9:26
* @Version 1.0
*/
public interface BookClockCheck {
void checkParam4CreateBookGroupClock(BookClockInfo bookClockInfo);
/**
* 校验作品及应用
* @param bookClockInfo
* @return
*/
BookClockInfo checkOriginIdAndOriginType(BookClockInfo bookClockInfo);
/**
* 校验关键词
* @param bookClockKeywordList
*/
void checkBookClockKeyword(List<BookClockKeyword> bookClockKeywordList,Long adviserId,List<Long> bookGroupIdList,List<Long> classifyIdList);
/**
* 校验关键词是否为打卡关键词
* @param content
* @param weixinGroupId
* @return
*/
BookClockInfoDTO checkKeywordIsClock(String content, String weixinGroupId);
/**
* 校验群是否为微信群打卡的群
* @param classifyQrcodeInfo
* @return
*/
List<Long> checkGroupIsClock(GroupClassifyQrcodeDTO classifyQrcodeInfo);
}
package com.pcloud.book.clock.check.impl;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.check.BookClockCheck;
import com.pcloud.book.clock.dao.BookClockInfoDao;
import com.pcloud.book.clock.dao.BookClockKeywordDao;
import com.pcloud.book.clock.dao.BookGroupClockDao;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.clock.dto.BookGroupClockDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.book.clock.enums.OriginTypeEnum;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.resourcecenter.product.dto.ProDto;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: hzk
* @Date: 2019/5/27 9:28
* @Version 1.0
*/
@Component("bookClockCheck")
public class BookClockCheckImpl implements BookClockCheck {
@Autowired
private AppConsr appConsr;
@Autowired
private ProductConsr productConsr;
@Autowired
private BookClockKeywordDao bookClockKeywordDao;
@Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired
private BookClockInfoDao bookClockInfoDao;
@Autowired
private BookGroupClockDao booKGroupClockDao;
@Autowired
private BookGroupClassifyDao bookGroupClassifyDao;
/**
* 关联作品/应用与社群码时参数校验
* @param bookClockInfo
*/
@Override
public void checkParam4CreateBookGroupClock(BookClockInfo bookClockInfo) {
BookClockInfo newBookClockInfo = checkOriginIdAndOriginType(bookClockInfo);
if(null == newBookClockInfo.getChannelId()){
throw new BookBizException(BookBizException.ERROR,"运营平台为空!");
}
List<Long> bookGroupIdList = newBookClockInfo.getBookGroupIdList();
if(!ListUtils.isEmpty(bookGroupIdList) && bookGroupIdList.size() > 20){
throw new BookBizException(BookBizException.ERROR,"关联社群码不可超过20个!");
}
List<Long> classifyIdList = newBookClockInfo.getClassifyIdList();
if(!ListUtils.isEmpty(classifyIdList) && classifyIdList.size() > 50){
throw new BookBizException(BookBizException.ERROR,"关联分类不可超过50个!");
}
if(null != newBookClockInfo.getIsNotice() && newBookClockInfo.getIsNotice()){
if(StringUtil.isEmpty(newBookClockInfo.getNoticeTime()) || StringUtil.isEmpty(newBookClockInfo.getNoticeContent())){
throw new BookBizException(BookBizException.ERROR,"提醒设置参数有误!");
}
}
}
/**
* 校验作品及应用
* @param bookClockInfo
* @return
*/
@Override
@ParamLog("校验作品及应用")
public BookClockInfo checkOriginIdAndOriginType(BookClockInfo bookClockInfo) {
Long originId = bookClockInfo.getOriginId();
String originType = bookClockInfo.getOriginType();
if(OriginTypeEnum.APP.value.equalsIgnoreCase(originType)){
AppDto appDto = appConsr.getBaseById(originId);
if(null == appDto){
throw new BookBizException(BookBizException.ERROR,"该应用不存在!");
}
bookClockInfo.setOriginTitle(appDto.getTitle());
bookClockInfo.setOriginImg(appDto.getSquareImg());
bookClockInfo.setUniqueNumber(appDto.getUniqueNumber());
}
if(OriginTypeEnum.PRODUCT.value.equalsIgnoreCase(originType)){
ProDto productDto = productConsr.getProBasesInfoById(originId);
if(null == productDto){
throw new BookBizException(BookBizException.ERROR,"该作品不存在!");
}
bookClockInfo.setOriginTitle(productDto.getProductName());
bookClockInfo.setOriginImg(productDto.getCoverImg());
bookClockInfo.setUniqueNumber(productDto.getUniqueNumber());
}
return bookClockInfo;
}
/**
* 校验关键词
* @param bookClockKeywordList
* @param adviserId
*/
@Override
@ParamLog("校验关键词")
public void checkBookClockKeyword(List<BookClockKeyword> bookClockKeywordList, Long adviserId, List<Long> bookGroupIdList,List<Long> classifyIdList) {
//获取选择的分类集合
List<Long> selectedClassifyIds = new ArrayList<>();
if(!ListUtils.isEmpty(bookGroupIdList)){
List<Long> classifyIdsUnderBookGroup = bookGroupClassifyDao.getIdByBookGroupIds(bookGroupIdList);
if(!ListUtils.isEmpty(classifyIdsUnderBookGroup)){
selectedClassifyIds.addAll(classifyIdsUnderBookGroup);
}
}
if(!ListUtils.isEmpty(classifyIdList)){
selectedClassifyIds.addAll(classifyIdList);
}
//获取关键词对应的分类集合
List<Long> existClassifyIds = new ArrayList<>();
List<String> keyWords = bookClockKeywordList.stream().map(BookClockKeyword::getKeyword).collect(Collectors.toList());
if(ListUtils.isEmpty(keyWords)){
throw new BookBizException(BookBizException.ERROR,"关键词为空!");
}
Map<String,Object> keywordMap = new HashMap<>();
keywordMap.put("adviserId",adviserId);
keywordMap.put("keyWords",keyWords);
List<Long> bookClockInfoIds = bookClockKeywordDao.checkKeywordHasExist(keywordMap);
if(!ListUtils.isEmpty(bookClockInfoIds)){
List<BookGroupClockDTO> bookGroupClockDTOS = booKGroupClockDao.getInfoByInfoIds(bookClockInfoIds);
if(!ListUtils.isEmpty(bookGroupClockDTOS)){
//获取所有的分类集合
List<Long> bookGroupIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getClassifyId()).map(BookGroupClockDTO::getBookGroupId).collect(Collectors.toList());
if(!ListUtils.isEmpty(bookGroupIds)){
List<Long> classifyIdsUnderBookGroup = bookGroupClassifyDao.getIdByBookGroupIds(bookGroupIds);
if(!ListUtils.isEmpty(classifyIdsUnderBookGroup)){
existClassifyIds.addAll(classifyIdsUnderBookGroup);
}
}
List<Long> classifyIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getBookGroupId()).map(BookGroupClockDTO::getClassifyId).collect(Collectors.toList());
if(!ListUtils.isEmpty(classifyIds)){
existClassifyIds.addAll(classifyIds);
}
}
}
if(!ListUtils.isEmpty(selectedClassifyIds) && !ListUtils.isEmpty(existClassifyIds)){
if(!Collections.disjoint(selectedClassifyIds,existClassifyIds)){
throw new BookBizException(BookBizException.ERROR,"关键词重复!");
}
}
}
/**
* 校验关键词是否为打卡关键词
* @param content
* @param weixinGroupId
* @return
*/
@Override
@ParamLog("校验关键词是否为打卡关键词")
public BookClockInfoDTO checkKeywordIsClock(String content, String weixinGroupId) {
//简单过滤非关键词的词
if (StringUtil.isEmpty(content) || content.length() > 10) {
return null;
}
//通过群id获取对应基本信息
GroupClassifyQrcodeDTO classifyQrcodeInfo = bookGroupClassifyBiz.getClassifyQrcodeInfo(weixinGroupId);
if(null == classifyQrcodeInfo){
return null;
}
//获取该关键词对应的基本信息
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookGroupId",classifyQrcodeInfo.getBookGroupId());
paramMap.put("classifyId",classifyQrcodeInfo.getClassifyId());
paramMap.put("adviserId",classifyQrcodeInfo.getAdviserId());
paramMap.put("keyword",content);
BookClockKeywordDTO bookClockKeywordDTO = bookClockKeywordDao.getInfoIdByKeywordAndweixinGroupId(paramMap);
if(null == bookClockKeywordDTO){
return null;
}
BookClockInfoDTO bookClockInfoDTO = bookClockInfoDao.getBaseInfoById(bookClockKeywordDTO.getBookClockInfoId());
bookClockInfoDTO.setBookGroupId(classifyQrcodeInfo.getBookGroupId());
bookClockInfoDTO.setGroupQrcodeId(classifyQrcodeInfo.getGroupQrcodeId());
bookClockInfoDTO.setClassifyId(classifyQrcodeInfo.getClassifyId());
bookClockInfoDTO.setChannelId(bookClockKeywordDTO.getChannelId());
bookClockInfoDTO.setOperation(bookClockKeywordDTO.getOperation());
return bookClockInfoDTO;
}
/**
* 校验群是否为微信群打卡的群
* @param classifyQrcodeInfo
* @return
*/
@Override
@ParamLog("校验群是否为微信群打卡的群")
public List<Long> checkGroupIsClock(GroupClassifyQrcodeDTO classifyQrcodeInfo) {
if(null == classifyQrcodeInfo){
return null;
}
//获取该关键词对应的基本信息
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookGroupId",classifyQrcodeInfo.getBookGroupId());
paramMap.put("classifyId",classifyQrcodeInfo.getClassifyId());
paramMap.put("adviserId",classifyQrcodeInfo.getAdviserId());
return booKGroupClockDao.getInfoIdByWeixinGroupId(paramMap);
}
}
package com.pcloud.book.clock.dao;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.common.core.dao.BaseDao;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/24 14:51
* @Version 1.0
*/
public interface BookClockInfoDao extends BaseDao<BookClockInfo> {
/**
* 获取基本信息
* @param bookClockInfoId
* @return
*/
BookClockInfoDTO getBaseInfoById(Long bookClockInfoId);
/**
* 修改作品/应用
* @param paramMap
*/
void updateBaseInfo4AppType(Map<String,Object> paramMap);
/**
* 修改基本信息(修改关键词)
* @param paramMap
*/
void updateBaseInfo4KeywordType(Map<String,Object> paramMap);
/**
* 获取基本信息
* @param bookClockInfoId
* @return
*/
BookClockInfoDTO getBookGroupClockBaseInfo(Long bookClockInfoId);
/**
* 获取该编辑已选的超级作者作品及应用
* @param adviserId
* @return
*/
List<BookClockInfoDTO> getOriginIdAndTypeByAdviserId(Long adviserId);
/**
* 获取该作品/应用该编辑创建的基本信息
* @param paramMap
* @return
*/
BookClockInfoDTO getBaseInfoByMap(Map<String,Object> paramMap);
/**
* 获取群打卡列表
* @param pageParam
* @param paramMap
* @return
*/
PageBean listBookGroupClock(PageParam pageParam, Map<String, Object> paramMap);
/**
* 修改作品信息
* @param productId
* @param title
* @param coverImg
* @param uniqueNumber
*/
void updateProductInfo(Long productId,String title,String coverImg,String uniqueNumber);
/**
* 修改应用信息
* @param appId
* @param title
* @param coverImg
*/
void updateAppInfo(Long appId,String title,String coverImg);
}
package com.pcloud.book.clock.dao;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.clock.dto.BookGroupClockKeywordDTO;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/27 14:19
* @Version 1.0
*/
public interface BookClockKeywordDao extends BaseDao<BookClockKeyword> {
/**
* 校验关键词有无重复
* @param paramMap
* @return
*/
List<Long> checkKeywordHasExist(Map<String,Object> paramMap);
/**
* 获取该作品/应用操作最大排序值
* @param bookClockInfoId
* @return
*/
Long getMaxSequence4Keyword(Long bookClockInfoId);
/**
* 批量插入
*/
void batchInsert(List<BookClockKeyword> bookClockKeywordList);
/**
* 删除旧的关键词
* @param paramMap
*/
void deleteBookClockKeyword(Map<String,Object> paramMap);
/**
* 获取微信打卡作品/应用关键词
* @param paramMap
* @return
*/
List<BookClockKeywordDTO> getKeywordsByInfoId(Map<String,Object> paramMap);
/**
* 获取该关键词已关联的作品
* @param paramMap
* @return
*/
List<Long> getInfoIdByKeyword(Map<String,Object> paramMap);
/**
* 根据接收到的关键词获取对应的作品/应用ID
* @param paramMap
* @return
*/
BookClockKeywordDTO getInfoIdByKeywordAndweixinGroupId(Map<String,Object> paramMap);
/**
* 获取微信群打卡动作关键词
* @param paramMap
* @return
*/
BookGroupClockKeywordDTO getBookClockKeyword4Clock(Map<String,Object> paramMap);
}
package com.pcloud.book.clock.dao;
import com.pcloud.book.clock.dto.BookGroupClockDTO;
import com.pcloud.book.clock.entity.BookGroupClock;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/24 14:51
* @Version 1.0
*/
public interface BookGroupClockDao extends BaseDao<BookGroupClock> {
/**
* 批量插入
* @param bookGroupClockList
*/
void batchInsert(List<BookGroupClock> bookGroupClockList);
/**
* 删除关联的社群书
* @param paramMap
*/
void deleteBookGroupId4AppType(Map<String,Object> paramMap);
/**
* 删除关联的社群码
* @param paramMap
*/
void deleteClassifyId4AppType(Map<String,Object> paramMap);
/**
* 获取关联的社群码
* @param paramMap
* @return
*/
List<BookGroupClockDTO> getBookGroupClockIds(Map<String,Object> paramMap);
/**
* 删除该作品/应用已关联的书下面的分类
* @param paramMap
*/
void deleteClassifyIdByBookGroupIds(Map<String,Object> paramMap);
/**
* 校验群是否为微信群打卡的群
* @param paramMap
* @return
*/
List<Long> getInfoIdByWeixinGroupId(Map<String,Object> paramMap);
/**
* 获取微信群打卡基本信息
* @param bookClockInfoIds
* @return
*/
List<BookGroupClockDTO> getInfoByInfoIds(List<Long> bookClockInfoIds);
/**
* 取消关联
* @param paramMap
*/
void cancelSelected(Map<String,Object> paramMap);
}
package com.pcloud.book.clock.dao.impl;
import com.pcloud.book.clock.dao.BookClockInfoDao;
import com.pcloud.book.clock.dao.BookGroupClockDao;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.dto.BookClockListDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.entity.BookGroupClock;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/24 14:51
* @Version 1.0
*/
@Repository("bookClockInfoDao")
public class BookClockInfoDaoImpl extends BaseDaoImpl<BookClockInfo> implements BookClockInfoDao {
/**
* 获取基本信息
* @param bookClockInfoId
* @return
*/
@Override
public BookClockInfoDTO getBaseInfoById(Long bookClockInfoId) {
return super.sqlSessionTemplate.selectOne(getStatement("getBaseInfoById"),bookClockInfoId);
}
/**
* 修改作品/应用
* @param paramMap
*/
@Override
public void updateBaseInfo4AppType(Map<String, Object> paramMap) {
super.sqlSessionTemplate.update(getStatement("updateBaseInfo4AppType"),paramMap);
}
/**
* 修改基本信息(修改关键词)
* @param paramMap
*/
@Override
public void updateBaseInfo4KeywordType(Map<String, Object> paramMap) {
super.sqlSessionTemplate.update(getStatement("updateBaseInfo4KeywordType"),paramMap);
}
/**
* 获取基本信息
* @param bookClockInfoId
* @return
*/
@Override
public BookClockInfoDTO getBookGroupClockBaseInfo(Long bookClockInfoId) {
return super.sqlSessionTemplate.selectOne(getStatement("getBookGroupClockBaseInfo"),bookClockInfoId);
}
/**
* 获取该编辑已选的超级作者作品及应用
* @param adviserId
* @return
*/
@Override
public List<BookClockInfoDTO> getOriginIdAndTypeByAdviserId(Long adviserId) {
return super.sqlSessionTemplate.selectList(getStatement("getOriginIdAndTypeByAdviserId"),adviserId);
}
/**
* 获取该作品/应用该编辑创建的基本信息
* @param paramMap
* @return
*/
@Override
public BookClockInfoDTO getBaseInfoByMap(Map<String,Object> paramMap) {
return super.sqlSessionTemplate.selectOne(getStatement("getBaseInfoByMap"),paramMap);
}
@Override
public PageBean listBookGroupClock(PageParam pageParam, Map<String, Object> paramMap) {
paramMap.put("startNum", pageParam.getNumPerPage() * pageParam.getPageNum());
paramMap.put("numPerPage", pageParam.getNumPerPage());
List<BookClockListDTO> dtos = super.sqlSessionTemplate.selectList("listBookGroupClock", paramMap);
Integer totalCount = super.sqlSessionTemplate.selectOne("countBookGroupClock", paramMap);
return new PageBean(pageParam.getPageNum(), pageParam.getNumPerPage(), totalCount, new ArrayList<>(dtos));
}
/**
* 修改作品信息
* @param productId
* @param title
* @param coverImg
* @param uniqueNumber
*/
@Override
public void updateProductInfo(Long productId, String title, String coverImg, String uniqueNumber) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("originId",productId);
paramMap.put("title",title);
paramMap.put("coverImg",coverImg);
paramMap.put("uniqueNumber",uniqueNumber);
super.sqlSessionTemplate.update(getStatement("updateProductInfo"),paramMap);
}
/**
* 修改应用信息
* @param appId
* @param title
* @param coverImg
*/
@Override
public void updateAppInfo(Long appId, String title, String coverImg) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("originId",appId);
paramMap.put("title",title);
paramMap.put("coverImg",coverImg);
super.sqlSessionTemplate.update(getStatement("updateAppInfo"),paramMap);
}
}
package com.pcloud.book.clock.dao.impl;
import com.pcloud.book.clock.dao.BookClockKeywordDao;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.clock.dto.BookGroupClockKeywordDTO;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/27 14:21
* @Version 1.0
*/
@Component("bookClockKeywordDao")
public class BookClockKeywordDaoImpl extends BaseDaoImpl<BookClockKeyword> implements BookClockKeywordDao {
/**
* 校验关键词有无重复
* @param paramMap
* @return
*/
@Override
public List<Long> checkKeywordHasExist(Map<String, Object> paramMap) {
return super.sqlSessionTemplate.selectList(getStatement("checkKeywordHasExist"),paramMap);
}
/**
* 获取该作品/应用操作最大排序值
* @param bookClockInfoId
* @return
*/
@Override
public Long getMaxSequence4Keyword(Long bookClockInfoId) {
return super.sqlSessionTemplate.selectOne(getStatement("getMaxSequence4Keyword"),bookClockInfoId);
}
/**
* 批量插入
*/
@Override
public void batchInsert(List<BookClockKeyword> bookClockKeywordList) {
super.sqlSessionTemplate.insert(getStatement("batchInsert"),bookClockKeywordList);
}
/**
* 删除旧的关键词
* @param paramMap
*/
@Override
public void deleteBookClockKeyword(Map<String, Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("deleteBookClockKeyword"),paramMap);
}
/**
* 获取微信打卡作品/应用关键词
* @param paramMap
*/
@Override
public List<BookClockKeywordDTO> getKeywordsByInfoId(Map<String,Object> paramMap) {
return super.sqlSessionTemplate.selectList(getStatement("getKeywordsByInfoId"),paramMap);
}
/**
* 获取该关键词已关联的书及分类
* @param paramMap
* @return
*/
@Override
public List<Long> getInfoIdByKeyword(Map<String, Object> paramMap) {
return super.sqlSessionTemplate.selectList(getStatement("getInfoIdByKeyword"),paramMap);
}
/**
* 根据接收到的关键词获取对应的作品/应用ID
* @param paramMap
* @return
*/
@Override
public BookClockKeywordDTO getInfoIdByKeywordAndweixinGroupId(Map<String, Object> paramMap) {
return super.sqlSessionTemplate.selectOne(getStatement("getInfoIdByKeywordAndweixinGroupId"),paramMap);
}
/**
* 获取微信群打卡动作关键词
* @param paramMap
* @return
*/
@Override
public BookGroupClockKeywordDTO getBookClockKeyword4Clock(Map<String,Object> paramMap) {
return super.sqlSessionTemplate.selectOne(getStatement("getBookClockKeyword4Clock"),paramMap);
}
}
package com.pcloud.book.clock.dao.impl;
import com.pcloud.book.clock.dao.BookGroupClockDao;
import com.pcloud.book.clock.dto.BookGroupClockDTO;
import com.pcloud.book.clock.entity.BookGroupClock;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/24 14:51
* @Version 1.0
*/
@Repository("bookGroupClockDao")
public class BookGroupClockDaoImpl extends BaseDaoImpl<BookGroupClock> implements BookGroupClockDao {
@Override
public void batchInsert(List<BookGroupClock> bookGroupClockList) {
super.sqlSessionTemplate.insert(getStatement("batchInsert"),bookGroupClockList);
}
/**
* 删除关联的社群书
* @param paramMap
*/
@Override
public void deleteBookGroupId4AppType(Map<String, Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("deleteBookGroupId4AppType"),paramMap);
}
/**
* 删除关联的分类
* @param paramMap
*/
@Override
public void deleteClassifyId4AppType(Map<String, Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("deleteClassifyId4AppType"),paramMap);
}
/**
* 获取关联的社群码
* @param paramMap
* @return
*/
@Override
public List<BookGroupClockDTO> getBookGroupClockIds(Map<String, Object> paramMap) {
return super.sqlSessionTemplate.selectList(getStatement("getBookGroupClockIds"),paramMap);
}
/**
* 删除该作品/应用已关联的书下面的分类
* @param paramMap
* @return
*/
@Override
public void deleteClassifyIdByBookGroupIds(Map<String,Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("deleteClassifyIdByBookGroupIds"),paramMap);
}
/**
* 校验群是否为微信群打卡的群
* @param paramMap
* @return
*/
@Override
public List<Long> getInfoIdByWeixinGroupId(Map<String, Object> paramMap) {
return super.sqlSessionTemplate.selectList(getStatement("getInfoIdByWeixinGroupId"),paramMap);
}
/**
* 获取微信群打卡基本信息
* @param bookClockInfoIds
* @return
*/
@Override
public List<BookGroupClockDTO> getInfoByInfoIds(List<Long> bookClockInfoIds) {
return super.sqlSessionTemplate.selectList(getStatement("getInfoByInfoIds"),bookClockInfoIds);
}
/**
* 取消关联
* @param paramMap
* @return
*/
@Override
public void cancelSelected(Map<String, Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("cancelSelected"),paramMap);
}
}
package com.pcloud.book.clock.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.common.dto.BaseDto;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/24 14:52
* @Version 1.0
*/
public class BookClockInfoDTO extends BaseDto {
private static final long serialVersionUID = 6153557129391001704L;
@ApiModelProperty("bookClockInfoId")
private Long bookClockInfoId;
@ApiModelProperty("作品/应用ID")
private Long originId;
@ApiModelProperty("作品/应用类型")
private String originType;
@ApiModelProperty("作品/应用标题")
private String originTitle;
@ApiModelProperty("作品/应用封面图")
private String originImg;
@ApiModelProperty("编号")
private String uniqueNumber;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("社群码ID")
private Long bookGroupId;
@ApiModelProperty("分类ID")
private Long classifyId;
@ApiModelProperty("社群码ID集合")
private List<Long> bookGroupIdList;
@ApiModelProperty("社群书集合")
private List<BookGroupDTO> bookGroupDTOList;
@ApiModelProperty("分类ID集合")
private List<Long> classifyIdList;
@ApiModelProperty("分类集合")
private List<ClassifyDTO> classifyDTOList;
@ApiModelProperty("关键词集合")
private List<BookClockKeywordDTO> bookClockKeywordDTOList;
@ApiModelProperty("是否开启提醒")
private Boolean isNotice;
@ApiModelProperty("提醒时间")
private String noticeTime;
@ApiModelProperty("提醒内容")
private String noticeContent;
@ApiModelProperty("操作")
private String operation;
@ApiModelProperty("操群ID")
private Long groupQrcodeId;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getOriginId() {
return originId;
}
public void setOriginId(Long originId) {
this.originId = originId;
}
public String getOriginType() {
return originType;
}
public void setOriginType(String originType) {
this.originType = originType;
}
public String getOriginTitle() {
return originTitle;
}
public void setOriginTitle(String originTitle) {
this.originTitle = originTitle;
}
public String getOriginImg() {
return originImg;
}
public void setOriginImg(String originImg) {
this.originImg = originImg;
}
public String getUniqueNumber() {
return uniqueNumber;
}
public void setUniqueNumber(String uniqueNumber) {
this.uniqueNumber = uniqueNumber;
}
public List<Long> getBookGroupIdList() {
return bookGroupIdList;
}
public void setBookGroupIdList(List<Long> bookGroupIdList) {
this.bookGroupIdList = bookGroupIdList;
}
public List<Long> getClassifyIdList() {
return classifyIdList;
}
public void setClassifyIdList(List<Long> classifyIdList) {
this.classifyIdList = classifyIdList;
}
public List<BookClockKeywordDTO> getBookClockKeywordDTOList() {
return bookClockKeywordDTOList;
}
public void setBookClockKeywordDTOList(List<BookClockKeywordDTO> bookClockKeywordDTOList) {
this.bookClockKeywordDTOList = bookClockKeywordDTOList;
}
public Boolean getIsNotice() {
return isNotice;
}
public void setIsNotice(Boolean isNotice) {
this.isNotice = isNotice;
}
public String getNoticeTime() {
return noticeTime;
}
public void setNoticeTime(String noticeTime) {
this.noticeTime = noticeTime;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getNoticeContent() {
return noticeContent;
}
public void setNoticeContent(String noticeContent) {
this.noticeContent = noticeContent;
}
public List<BookGroupDTO> getBookGroupDTOList() {
return bookGroupDTOList;
}
public void setBookGroupDTOList(List<BookGroupDTO> bookGroupDTOList) {
this.bookGroupDTOList = bookGroupDTOList;
}
public List<ClassifyDTO> getClassifyDTOList() {
return classifyDTOList;
}
public void setClassifyDTOList(List<ClassifyDTO> classifyDTOList) {
this.classifyDTOList = classifyDTOList;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getGroupQrcodeId() {
return groupQrcodeId;
}
public void setGroupQrcodeId(Long groupQrcodeId) {
this.groupQrcodeId = groupQrcodeId;
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.pcloud.book.clock.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.common.dto.BaseDto;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/24 14:52
* @Version 1.0
*/
public class BookClockKeywordDTO extends BaseDto {
private static final long serialVersionUID = -6521664243643931466L;
@ApiModelProperty("bookClockKeywordId")
private Long bookClockKeywordId;
@ApiModelProperty("作品/应用ID")
private Long bookClockInfoId;
@ApiModelProperty("操作")
private String operation;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("关键词引导语")
private String guide;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("排序值")
private Long sequenceNum;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("社群书集合")
private List<BookGroupDTO> bookGroupDTOList;
@ApiModelProperty("分类集合")
private List<ClassifyDTO> classifyDTOList;
public Long getBookClockKeywordId() {
return bookClockKeywordId;
}
public void setBookClockKeywordId(Long bookClockKeywordId) {
this.bookClockKeywordId = bookClockKeywordId;
}
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getGuide() {
return guide;
}
public void setGuide(String guide) {
this.guide = guide;
}
public Long getSequenceNum() {
return sequenceNum;
}
public void setSequenceNum(Long sequenceNum) {
this.sequenceNum = sequenceNum;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public List<BookGroupDTO> getBookGroupDTOList() {
return bookGroupDTOList;
}
public void setBookGroupDTOList(List<BookGroupDTO> bookGroupDTOList) {
this.bookGroupDTOList = bookGroupDTOList;
}
public List<ClassifyDTO> getClassifyDTOList() {
return classifyDTOList;
}
public void setClassifyDTOList(List<ClassifyDTO> classifyDTOList) {
this.classifyDTOList = classifyDTOList;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.pcloud.book.clock.dto;
import java.util.List;
import lombok.Data;
/**
* @Describe: TODO
* @Author: zhangdongwei
* @Date: Create on 15:51 2019/6/3 0003
*/
@Data
public class BookClockListDTO {
private Long bookClockInfoId;
private Long originId;
private String originType;
private String originTitle;
private String originImg;
private String uniqueNumber;
/**
* 社群书数
*/
private Integer bookCount;
/**
* 社群书ids
*/
private List<Long> bookGroupIdList;
/**
* 群分类数
*/
private Integer classifyCount;
/**
* 群分类ids
*/
private List<Long> classifyIdList;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getOriginId() {
return originId;
}
public void setOriginId(Long originId) {
this.originId = originId;
}
public String getOriginType() {
return originType;
}
public void setOriginType(String originType) {
this.originType = originType;
}
public String getOriginTitle() {
return originTitle;
}
public void setOriginTitle(String originTitle) {
this.originTitle = originTitle;
}
public String getOriginImg() {
return originImg;
}
public void setOriginImg(String originImg) {
this.originImg = originImg;
}
public String getUniqueNumber() {
return uniqueNumber;
}
public void setUniqueNumber(String uniqueNumber) {
this.uniqueNumber = uniqueNumber;
}
public Integer getBookCount() {
return bookCount;
}
public void setBookCount(Integer bookCount) {
this.bookCount = bookCount;
}
public List<Long> getBookGroupIdList() {
return bookGroupIdList;
}
public void setBookGroupIdList(List<Long> bookGroupIdList) {
this.bookGroupIdList = bookGroupIdList;
}
public Integer getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Integer classifyCount) {
this.classifyCount = classifyCount;
}
public List<Long> getClassifyIdList() {
return classifyIdList;
}
public void setClassifyIdList(List<Long> classifyIdList) {
this.classifyIdList = classifyIdList;
}
}
package com.pcloud.book.clock.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
/**
* @Author: hzk
* @Date: 2019/5/24 14:52
* @Version 1.0
*/
public class BookGroupClockDTO extends BaseEntity {
private static final long serialVersionUID = 7839794140288730775L;
@ApiModelProperty("ID")
private Long bookGroupClockId;
@ApiModelProperty("作品/应用ID")
private Long bookClockInfoId;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("书籍ID")
private Long bookId;
@ApiModelProperty("社群码ID")
private Long bookGroupId;
@ApiModelProperty("分类ID")
private Long classifyId;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
public Long getBookGroupClockId() {
return bookGroupClockId;
}
public void setBookGroupClockId(Long bookGroupClockId) {
this.bookGroupClockId = bookGroupClockId;
}
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.pcloud.book.clock.entity;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/24 14:52
* @Version 1.0
*/
public class BookClockInfo extends BaseEntity {
private static final long serialVersionUID = 8385194135258376669L;
@ApiModelProperty("bookClockInfoId")
private Long bookClockInfoId;
@ApiModelProperty("作品/应用ID")
private Long originId;
@ApiModelProperty("作品/应用类型")
private String originType;
@ApiModelProperty("作品/应用标题")
private String originTitle;
@ApiModelProperty("作品/应用封面图")
private String originImg;
@ApiModelProperty("编号")
private String uniqueNumber;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("社群码ID集合")
private List<Long> bookGroupIdList;
@ApiModelProperty("分类ID集合")
private List<Long> classifyIdList;
@ApiModelProperty("关键词集合")
private List<BookClockKeyword> bookClockKeywordList;
@ApiModelProperty("是否开启提醒")
private Boolean isNotice;
@ApiModelProperty("提醒时间")
private String noticeTime;
@ApiModelProperty("提醒内容")
private String noticeContent;
@ApiModelProperty("修改类型")
private String updateType;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getOriginId() {
return originId;
}
public void setOriginId(Long originId) {
this.originId = originId;
}
public String getOriginType() {
return originType;
}
public void setOriginType(String originType) {
this.originType = originType;
}
public String getOriginTitle() {
return originTitle;
}
public void setOriginTitle(String originTitle) {
this.originTitle = originTitle;
}
public String getOriginImg() {
return originImg;
}
public void setOriginImg(String originImg) {
this.originImg = originImg;
}
public String getUniqueNumber() {
return uniqueNumber;
}
public void setUniqueNumber(String uniqueNumber) {
this.uniqueNumber = uniqueNumber;
}
public List<Long> getBookGroupIdList() {
return bookGroupIdList;
}
public void setBookGroupIdList(List<Long> bookGroupIdList) {
this.bookGroupIdList = bookGroupIdList;
}
public List<Long> getClassifyIdList() {
return classifyIdList;
}
public void setClassifyIdList(List<Long> classifyIdList) {
this.classifyIdList = classifyIdList;
}
public List<BookClockKeyword> getBookClockKeywordList() {
return bookClockKeywordList;
}
public void setBookClockKeywordList(List<BookClockKeyword> bookClockKeywordList) {
this.bookClockKeywordList = bookClockKeywordList;
}
public Boolean getIsNotice() {
return isNotice;
}
public void setIsNotice(Boolean isNotice) {
this.isNotice = isNotice;
}
public String getNoticeTime() {
return noticeTime;
}
public void setNoticeTime(String noticeTime) {
this.noticeTime = noticeTime;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getNoticeContent() {
return noticeContent;
}
public void setNoticeContent(String noticeContent) {
this.noticeContent = noticeContent;
}
public String getUpdateType() {
return updateType;
}
public void setUpdateType(String updateType) {
this.updateType = updateType;
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.pcloud.book.clock.entity;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/24 14:52
* @Version 1.0
*/
public class BookClockKeyword extends BaseEntity {
private static final long serialVersionUID = 8385194135258376669L;
@ApiModelProperty("bookClockKeywordId")
private Long bookClockKeywordId;
@ApiModelProperty("作品/应用ID")
private Long bookClockInfoId;
@ApiModelProperty("操作")
private String operation;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("关键词引导语")
private String guide;
@ApiModelProperty("排序值")
private Long sequenceNum;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
public Long getBookClockKeywordId() {
return bookClockKeywordId;
}
public void setBookClockKeywordId(Long bookClockKeywordId) {
this.bookClockKeywordId = bookClockKeywordId;
}
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getGuide() {
return guide;
}
public void setGuide(String guide) {
this.guide = guide;
}
public Long getSequenceNum() {
return sequenceNum;
}
public void setSequenceNum(Long sequenceNum) {
this.sequenceNum = sequenceNum;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.pcloud.book.clock.entity;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/24 14:52
* @Version 1.0
*/
public class BookGroupClock extends BaseEntity {
private static final long serialVersionUID = 8385194135258376669L;
@ApiModelProperty("ID")
private Long bookGroupClockId;
@ApiModelProperty("作品/应用ID")
private Long bookClockInfoId;
@ApiModelProperty("书籍ID")
private Long bookId;
@ApiModelProperty("社群码ID")
private Long bookGroupId;
@ApiModelProperty("书ID集合")
private List<Long> bookGroupIdList;
@ApiModelProperty("分类ID")
private Long classifyId;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改人")
private Long updateUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("修改时间")
private Date updateTime;
public Long getBookGroupClockId() {
return bookGroupClockId;
}
public void setBookGroupClockId(Long bookGroupClockId) {
this.bookGroupClockId = bookGroupClockId;
}
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.pcloud.book.clock.enums;
/**
* @author hzk
* @date 2019/5/27 15:09
*/
public enum OriginTypeEnum {
/**
* 应用
*/
APP("APP"),
/**
* 作品
*/
PRODUCT("PRODUCT");
public final String value;
OriginTypeEnum(String value) {
this.value = value;
}
}
package com.pcloud.book.clock.enums;
/**
* @author hzk
* @date 2019/5/27 15:09
*/
public enum UpdateTypeEnum {
/**
* 作品/应用
*/
APP("APP"),
/**
* 社群码
*/
BOOK_GROUP("BOOK_GROUP"),
/**
* 关键词
*/
KEYWORD("KEYWORD");
public final String value;
UpdateTypeEnum(String value) {
this.value = value;
}
}
package com.pcloud.book.clock.facade;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* @Author: hzk
* @Date: 2019/5/24 14:46
* @Version 1.0
*/
@FeignClient(value = "pcloud-service-book",qualifier = "bookClockFacadeCloud",path = "bookClock")
@Api(description = "微信群打卡设置")
public interface BookClockFacade {
@ApiOperation(value = "关联作品/应用及微信群", httpMethod = "POST")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookClockInfo", value = "打卡书籍实体", dataType = "BookClockInfo", paramType = "body")})
@RequestMapping(value = "createBookGroupClock", method = RequestMethod.POST)
ResponseDto<?> createBookGroupClock(@RequestHeader("token") String token, @RequestBody BookClockInfo bookClockInfo)
throws BizException, PermissionException;
@ApiOperation(value = "修改关联信息", httpMethod = "POST")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookClockInfo", value = "打卡书籍实体", dataType = "BookClockInfo", paramType = "body")})
@RequestMapping(value = "updateBookGroupClock", method = RequestMethod.POST)
ResponseDto<?> updateBookGroupClock(@RequestHeader("token") String token, @RequestBody BookClockInfo bookClockInfo)
throws BizException, PermissionException;
@ApiOperation(value = "获取关联的基本信息", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookClockInfoId", value = "bookClockInfoId", dataType = "Long", paramType = "query")})
@RequestMapping(value = "getBookGroupClockBaseInfo", method = RequestMethod.GET)
ResponseDto<?> getBookGroupClockBaseInfo(@RequestHeader("token") String token,
@RequestParam(value = "bookClockInfoId",required = false)Long bookClockInfoId)
throws BizException, PermissionException;
@ApiOperation(value = "获取该编辑已选的超级作者作品及应用", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header")})
@RequestMapping(value = "getAdviserHasSelected", method = RequestMethod.GET)
ResponseDto<?> getAdviserHasSelected(@RequestHeader("token") String token)
throws BizException, PermissionException;
@ApiOperation(value = "群打卡列表(编辑端)")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "name", value = "打卡名称或编号", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "startDate", value = "开始时间", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "endDate", value = "结束时间", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页大小", dataType = "Integer", paramType = "query")})
@GetMapping("listBookGroupClock4Adviser")
ResponseDto<?> listBookGroupClock4Adviser(@RequestHeader("token") String token,
@RequestParam(value = "name" ,required = false) String name,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws BizException, PermissionException ;
}
package com.pcloud.book.clock.facade;
import com.pcloud.book.clock.eneity.BookClockKeywordCheckParam;
import com.pcloud.book.clock.eneity.CancelSelectedParam;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* @Author: hzk
* @Date: 2019/5/28 14:46
* @Version 1.0
*/
@FeignClient(value = "pcloud-service-book",qualifier = "bookClockKeywordFacadeCloud",path = "bookClockKeyword")
@Api(description = "微信群打卡关键词设置")
public interface BookClockKeywordFacade {
@ApiOperation(value = "获取关键词已关联的微信群书及分类", httpMethod = "POST")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookClockKeywordCheckParam", value = "关键词重复查询", dataType = "BookClockKeywordCheckParam", paramType = "body"),
})
@RequestMapping(value = "getKeywordBookClockList", method = RequestMethod.POST)
ResponseDto<?> getKeywordBookClockList(@RequestHeader("token") String token, @RequestBody BookClockKeywordCheckParam bookClockKeywordCheckParam)
throws BizException, PermissionException;
@ApiOperation(value = "获取关键词已关联的微信群书及分类(分页)", httpMethod = "POST")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookClockKeywordCheckParam", value = "关键词重复查询", dataType = "BookClockKeywordCheckParam", paramType = "body"),
})
@RequestMapping(value = "getKeywordBookClockList4HasSelected", method = RequestMethod.POST)
ResponseDto<?> getKeywordBookClockList4HasSelected(@RequestHeader("token") String token, @RequestBody BookClockKeywordCheckParam bookClockKeywordCheckParam)
throws BizException, PermissionException;
@ApiOperation(value = "取消关联", httpMethod = "POST")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "cancelSelectedParam", value = "关键词取消关联", dataType = "CancelSelectedParam", paramType = "body"),
})
@RequestMapping(value = "cancelSelected", method = RequestMethod.POST)
ResponseDto<?> cancelSelected(@RequestHeader("token") String token, @RequestBody CancelSelectedParam cancelSelectedParam)
throws BizException, PermissionException;
}
package com.pcloud.book.clock.facade.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.biz.BookClockBiz;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.facade.BookClockFacade;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.string.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: hzk
* @Date: 2019/5/24 14:48
* @Version 1.0
*/
@RequestMapping("/bookClock")
@RestController("bookClockFacade")
public class BookClockFacadeImpl implements BookClockFacade {
@Autowired
private BookClockBiz bookClockBiz;
/**
* 关联作品/应用及微信群
* @param token
* @param bookClockInfo
* @return
* @throws BizException
* @throws PermissionException
*/
@Override
@RequestMapping(value = "createBookGroupClock", method = RequestMethod.POST)
public ResponseDto<?> createBookGroupClock(@RequestHeader String token, @RequestBody BookClockInfo bookClockInfo) throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if(null == bookClockInfo || null == bookClockInfo.getOriginId() || StringUtil.isEmpty(bookClockInfo.getOriginType())){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
if(ListUtils.isEmpty(bookClockInfo.getBookGroupIdList()) && ListUtils.isEmpty(bookClockInfo.getClassifyIdList())){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
if(ListUtils.isEmpty(bookClockInfo.getBookClockKeywordList())){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
bookClockInfo.setCreateUser(adviserId);
bookClockInfo.setUpdateUser(adviserId);
return new ResponseDto<>(bookClockBiz.createBookGroupClock(bookClockInfo));
}
/**
* 修改关联信息
* @param token
* @param bookClockInfo
* @return
* @throws BizException
* @throws PermissionException
*/
@Override
public ResponseDto<?> updateBookGroupClock(@RequestHeader("token")String token, @RequestBody BookClockInfo bookClockInfo) throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if(null == bookClockInfo || null == bookClockInfo.getBookClockInfoId() || StringUtil.isEmpty(bookClockInfo.getUpdateType())){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
bookClockInfo.setCreateUser(adviserId);
bookClockInfo.setUpdateUser(adviserId);
bookClockBiz.updateBookGroupClock(bookClockInfo);
return new ResponseDto<>();
}
/**
* 获取关联的基本信息
* @param token
* @param bookClockInfoId
* @return
* @throws BizException
* @throws PermissionException
*/
@Override
public ResponseDto<?> getBookGroupClockBaseInfo(@RequestHeader("token")String token, @RequestParam(value = "bookClockInfoId",required = false) Long bookClockInfoId) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if(null == bookClockInfoId){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
return new ResponseDto<>(bookClockBiz.getBookGroupClockBaseInfo(bookClockInfoId));
}
/**
* 获取该编辑已选的超级作者作品及应用
* @param token
* @return
* @throws BizException
* @throws PermissionException
*/
@Override
public ResponseDto<?> getAdviserHasSelected(@RequestHeader("token") String token) throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(bookClockBiz.getAdviserHasSelected(adviserId));
}
@Override
public ResponseDto<?> listBookGroupClock4Adviser(@RequestHeader("token") String token,
@RequestParam(value = "name" ,required = false) String name,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if(null == currentPage || null == numPerPage){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"分页参数有误");
}
PageParam pageParam = new PageParam(currentPage,numPerPage);
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("name", name != null && "".equals(name.trim()) ? null : name);
if (!StringUtil.isEmpty(startDate) && !StringUtil.isEmpty(endDate)) {
paramMap.put("startDate", startDate + " 00:00:00");
paramMap.put("endDate", endDate + " 23:59:59");
}
paramMap.put("adviserId", adviserId);
return new ResponseDto<>(bookClockBiz.listBookGroupClock(pageParam, paramMap));
}
}
package com.pcloud.book.clock.facade.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.biz.BookClockKeywordBiz;
import com.pcloud.book.clock.eneity.BookClockKeywordCheckParam;
import com.pcloud.book.clock.eneity.CancelSelectedParam;
import com.pcloud.book.clock.facade.BookClockKeywordFacade;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.string.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @Author: hzk
* @Date: 2019/5/24 14:48
* @Version 1.0
*/
@RequestMapping("/bookClockKeyword")
@RestController("bookClockKeywordFacade")
public class BookClockKeywordFacadeImpl implements BookClockKeywordFacade {
@Autowired
private BookClockKeywordBiz bookClockKeywordBiz;
@Override
@RequestMapping(value = "getKeywordBookClockList", method = RequestMethod.POST)
public ResponseDto<?> getKeywordBookClockList(@RequestHeader String token, @RequestBody BookClockKeywordCheckParam bookClockKeywordCheckParam) throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
bookClockKeywordCheckParam.setAdviserId(adviserId);
if(null == bookClockKeywordCheckParam || StringUtil.isEmpty(bookClockKeywordCheckParam.getKeyword())){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
return new ResponseDto<>(bookClockKeywordBiz.getKeywordBookClockList(bookClockKeywordCheckParam));
}
@Override
@RequestMapping(value = "getKeywordBookClockList4HasSelected", method = RequestMethod.POST)
public ResponseDto<?> getKeywordBookClockList4HasSelected(@RequestHeader String token, @RequestBody BookClockKeywordCheckParam bookClockKeywordCheckParam) throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if(null == bookClockKeywordCheckParam || StringUtil.isEmpty(bookClockKeywordCheckParam.getKeyword()) || null == bookClockKeywordCheckParam.getIsBookGroup()){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
if(null == bookClockKeywordCheckParam.getCurrentPage() || null == bookClockKeywordCheckParam.getNumPerPage()){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"分页参数有误");
}
bookClockKeywordCheckParam.setAdviserId(adviserId);
return new ResponseDto<>(bookClockKeywordBiz.getKeywordBookClockList4HasSelected(bookClockKeywordCheckParam));
}
@Override
@RequestMapping(value = "cancelSelected", method = RequestMethod.POST)
public ResponseDto<?> cancelSelected(@RequestHeader String token,@RequestBody CancelSelectedParam cancelSelectedParam) throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if(null == cancelSelectedParam.getBookClockInfoId()){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
if(null == cancelSelectedParam.getBookGroupId() && null == cancelSelectedParam.getClassifyId()){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"参数有误");
}
bookClockKeywordBiz.cancelSelected(cancelSelectedParam);
return new ResponseDto<>();
}
}
package com.pcloud.book.clock.service.impl;
import com.alibaba.fastjson.JSON;
import com.pcloud.book.clock.biz.BookClockBiz;
import com.pcloud.book.clock.biz.BookClockKeywordBiz;
import com.pcloud.book.clock.dao.BookClockKeywordDao;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.dto.BookGroupClockKeywordDTO;
import com.pcloud.book.clock.service.BookClockInfoService;
import com.pcloud.book.keywords.biz.BookGuideBiz;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.string.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @Description
* @Author hzk
* @Date 2019/5/29 10:25
**/
@RestController("bookClockInfoService")
@RequestMapping("bookClockInfoService")
public class BookClockInfoServiceImpl implements BookClockInfoService {
private static final Logger LOGGER = LoggerFactory.getLogger(BookClockInfoServiceImpl.class);
@Autowired
private BookClockKeywordBiz bookClockKeywordBiz;
@Autowired
private BookClockBiz bookClockBiz;
@Autowired
private BookGuideBiz bookGuideBiz;
/**
* 获取微信群某一动作动作关键词
* @param bookClockInfoId
* @param operation
* @return
* @throws BizException
*/
@Override
@RequestMapping(value = "getBookClockKeyword4Clock", method = RequestMethod.GET)
public ResponseEntity<ResponseDto<BookGroupClockKeywordDTO>> getBookClockKeyword4Clock(@RequestParam(value = "bookClockInfoId",required = false) Long bookClockInfoId,
@RequestParam("operation") String operation) throws BizException {
LOGGER.info("getBookClockKeyword4Clock,param->"+bookClockInfoId+",operation="+operation);
if(null == bookClockInfoId || StringUtil.isEmpty(operation)){
return null;
}
return ResponseHandleUtil.toResponse(bookClockKeywordBiz.getBookClockKeyword4Clock(bookClockInfoId,operation));
}
@Override
@RequestMapping(value = "sendBookClockGroupMessage", method = RequestMethod.POST)
public void sendBookClockGroupMessage(@RequestBody Map<String, Object> map) throws BizException {
LOGGER.info("内部接口群发消息被调用"+map.toString());
bookClockBiz.sendBookClockGroupMessage(map);
}
}
package com.pcloud.book.clock.set;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.book.clock.entity.BookGroupClock;
import java.util.List;
/**
* @Author: hzk
* @Date: 2019/5/27 10:39
* @Version 1.0
*/
public interface BookGroupClockSet {
/**
* 封装对象
* @param bookClockInfo
* @param isBookGroupId
* @param ids
* @return
*/
List<BookGroupClock> setData4BookGroupClock(BookClockInfo bookClockInfo, Boolean isBookGroupId, List<Long> ids);
/**
* 封装关键词对象
* @param bookClockInfoId
* @param sequence
* @param bookClockKeywordList
*/
void setData4BookClockKeyword(Long bookClockInfoId,Long adviserId,Long sequence,List<BookClockKeyword> bookClockKeywordList);
/**
* 根据作品/应用获取关联的社群书及分类集合
* @param bookClockInfoIds
* @return
*/
BookClockInfoDTO getGroupAndClassifyListByInfoIds(List<Long> bookClockInfoIds);
/**
* 创建定时任务
* @param bookClockInfo
*/
void createCronQuartz(BookClockInfo bookClockInfo);
/**
* 获取书集合与分类集合的重复部分
* @param bookGroupIds
* @param classifyIds
* @param returnBookId
* @return
*/
List<Long> getSameClassifyUnderBookGroup(List<Long> bookGroupIds,List<Long> classifyIds,boolean returnBookId);
}
package com.pcloud.book.clock.set.impl;
import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.dao.BookGroupClockDao;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.clock.dto.BookGroupClockDTO;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.clock.entity.BookClockKeyword;
import com.pcloud.book.clock.entity.BookGroupClock;
import com.pcloud.book.clock.set.BookGroupClockSet;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.facade.quartz.entity.CallBackParam;
import com.pcloud.facade.quartz.entity.ScheduleJob;
import com.pcloud.facade.quartz.service.ScheduleService;
import com.pcloud.message.config.exception.ConfigBizException;
import org.codehaus.jackson.JsonParseException;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author: hzk
* @Date: 2019/5/27 10:40
* @Version 1.0
*/
@Component("bookGroupClockSet")
public class BookGroupClockSetImpl implements BookGroupClockSet {
private static final Logger LOGGER = LoggerFactory.getLogger(BookGroupClockSetImpl.class);
@Autowired
private BookGroupClockDao bookGroupClockDao;
@Autowired
private BookGroupDao bookGroupDao;
@Autowired
private BookGroupClassifyDao bookGroupClassifyDao;
@Autowired
private ScheduleService scheduleService;
/**
* 封装bookGroupClock对象
* @param bookClockInfo
* @param isBookGroupId
* @param ids
* @return
*/
@Override
@ParamLog("封装bookGroupClock对象")
public List<BookGroupClock> setData4BookGroupClock(BookClockInfo bookClockInfo, Boolean isBookGroupId, List<Long> ids) {
List<BookGroupClock> bookGroupClockList = new ArrayList<>();
for (Long id:ids) {
BookGroupClock newBookGroupClock = new BookGroupClock();
newBookGroupClock.setBookClockInfoId(bookClockInfo.getBookClockInfoId());
newBookGroupClock.setChannelId(bookClockInfo.getChannelId());
if(isBookGroupId){
newBookGroupClock.setBookGroupId(id);
newBookGroupClock.setClassifyId(0L);
}else{
newBookGroupClock.setBookGroupId(0L);
newBookGroupClock.setClassifyId(id);
}
newBookGroupClock.setCreateUser(bookClockInfo.getCreateUser());
newBookGroupClock.setUpdateUser(bookClockInfo.getUpdateUser());
bookGroupClockList.add(newBookGroupClock);
}
return bookGroupClockList;
}
/**
* 封装关键词对象
* @param bookClockInfoId
* @param sequence
* @param bookClockKeywordList
*/
@Override
@ParamLog("封装关键词对象")
public void setData4BookClockKeyword(Long bookClockInfoId,Long adviserId, Long sequence,List<BookClockKeyword> bookClockKeywordList) {
for (BookClockKeyword bookClockKeyword:bookClockKeywordList) {
if(StringUtil.isEmpty(bookClockKeyword.getOperation()) || StringUtil.isEmpty(bookClockKeyword.getKeyword())
|| StringUtil.isEmpty(bookClockKeyword.getGuide())){
throw new BookBizException(BookBizException.ERROR,"关键词参数有误!");
}
bookClockKeyword.setBookClockInfoId(bookClockInfoId);
bookClockKeyword.setSequenceNum(++sequence);
bookClockKeyword.setCreateUser(adviserId);
bookClockKeyword.setUpdateUser(adviserId);
}
}
/**
* 根据作品/应用获取关联的社群书及分类集合
* @param bookClockInfoIds
* @return
*/
@Override
@ParamLog("根据作品/应用获取关联的社群书及分类集合")
public BookClockInfoDTO getGroupAndClassifyListByInfoIds(List<Long> bookClockInfoIds) {
BookClockInfoDTO bookClockInfoDTO = new BookClockInfoDTO();
//关联的社群码
List<BookGroupClockDTO> bookGroupClockDTOS = bookGroupClockDao.getInfoByInfoIds(bookClockInfoIds);
if(!ListUtils.isEmpty(bookGroupClockDTOS)){
List<Long> bookGroupIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getClassifyId()).map(BookGroupClockDTO::getBookGroupId).collect(Collectors.toList());
if(!ListUtils.isEmpty(bookGroupIds)){
bookClockInfoDTO.setBookGroupIdList(bookGroupIds);
List<BookGroupDTO> bookGroupDTOS = bookGroupDao.getBookBaseInfoByIds(bookGroupIds);
bookClockInfoDTO.setBookGroupDTOList(bookGroupDTOS);
}
List<Long> classifyIds = bookGroupClockDTOS.stream().filter(bookGroupClockDTO -> 0 == bookGroupClockDTO.getBookGroupId()).map(BookGroupClockDTO::getClassifyId).collect(Collectors.toList());
if(!ListUtils.isEmpty(classifyIds)){
bookClockInfoDTO.setClassifyIdList(classifyIds);
List<ClassifyDTO> classifyDTOS = bookGroupClassifyDao.getNameWithBookNameByIds(classifyIds);
bookClockInfoDTO.setClassifyDTOList(classifyDTOS);
}
}
return bookClockInfoDTO;
}
/**
* 创建定时任务
* @param bookClockInfo
*/
@Override
@ParamLog("创建定时任务")
public void createCronQuartz(BookClockInfo bookClockInfo) {
try {
ScheduleJob job = new ScheduleJob();
String jobName = "clockMsgConfig_" + bookClockInfo.getBookClockInfoId();
StringBuffer cron = new StringBuffer();
try {
String noticeTime = bookClockInfo.getNoticeTime();
int hour = Integer.parseInt(noticeTime.substring(0,2));
int minute = Integer.parseInt(noticeTime.substring(3,5));
int second = Integer.parseInt(noticeTime.substring(6,8));
cron.append(second).append(" ").append(minute).append(" ").append(hour)
.append(" ").append("*").append(" ").append("*").append(" ").append("?").append(" ").append("*");
} catch (Exception e) {
throw new BookBizException(BookBizException.ERROR, "时间格式错误");
}
//定时器任务
job.setJobName(jobName);
//cron表达式
job.setCronExpression(cron.toString());
//定时器分组
job.setJobGroup("book");
CallBackParam param = new CallBackParam();
//service名称
param.setBeanName("bookClockInfoService");
//回调内部接口方法名称
param.setMethodName("sendBookClockGroupMessage");
//设置回调参数
Map<String, Object> map = new HashMap<>();
map.put("bookClockInfoId", bookClockInfo.getBookClockInfoId());
param.setParamMap(map);
Map<String, Object> scheduleMap = new HashMap<>();
scheduleMap.put("scheduleJob", job);
scheduleMap.put("callBackParam", param);
scheduleService.addCronJob(scheduleMap);
} catch (JsonParseException e) {
LOGGER.error("----------调用定时器方法【addCronJob】出现异常:" + e.getMessage(), e);
throw new ConfigBizException(ConfigBizException.FAIL, "操作失败!");
} catch (SchedulerException e) {
LOGGER.error("----------调用定时器方法【addCronJob】出现异常:" + e.getMessage(), e);
throw new ConfigBizException(ConfigBizException.FAIL, "操作失败!");
}
}
/**
* 获取书集合与分类集合的重复部分
* @param bookGroupIds
* @param classifyIds
* @param returnBookId
* @return
*/
@Override
public List<Long> getSameClassifyUnderBookGroup(List<Long> bookGroupIds, List<Long> classifyIds, boolean returnBookId) {
if(ListUtils.isEmpty(bookGroupIds)){
return null;
}
if(ListUtils.isEmpty(classifyIds)){
return null;
}
List<Long> result = new ArrayList<>();
//获取书下分类集合
for (Long bookGroupId:bookGroupIds) {
List<Long> idByBookGroupIds = bookGroupClassifyDao.getIdByBookGroupIds(Lists.newArrayList(bookGroupId));
List<Long> sameEle = CommonUtils.getSameEle(idByBookGroupIds, classifyIds);
if(!ListUtils.isEmpty(sameEle)){
if(returnBookId){
result.add(bookGroupId);
}else{
result.addAll(sameEle);
}
}
}
return result;
}
}
package com.pcloud.book.clock.vo.response;
import com.pcloud.book.clock.dto.BookClockListDTO;
import lombok.Data;
import org.springframework.beans.BeanUtils;
/**
* @Describe: TODO
* @Author: zhangdongwei
* @Date: Create on 18:21 2019/5/28 0028
*/
@Data
public class ListBookGroupClockResponseVO {
private Long bookClockInfoId;
private Long originId;
private String originType;
private String originTitle;
private String originImg;
private String uniqueNumber;
/**
* 社群书数
*/
private Integer bookCount;
/**
* 群分类数
*/
private Integer classifyCount;
/**
* 群总数
*/
private Integer bookGroupQrcodeNum;
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
public Long getOriginId() {
return originId;
}
public void setOriginId(Long originId) {
this.originId = originId;
}
public String getOriginType() {
return originType;
}
public void setOriginType(String originType) {
this.originType = originType;
}
public String getOriginTitle() {
return originTitle;
}
public void setOriginTitle(String originTitle) {
this.originTitle = originTitle;
}
public String getOriginImg() {
return originImg;
}
public void setOriginImg(String originImg) {
this.originImg = originImg;
}
public String getUniqueNumber() {
return uniqueNumber;
}
public void setUniqueNumber(String uniqueNumber) {
this.uniqueNumber = uniqueNumber;
}
public Integer getBookCount() {
return bookCount;
}
public void setBookCount(Integer bookCount) {
this.bookCount = bookCount;
}
public Integer getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Integer classifyCount) {
this.classifyCount = classifyCount;
}
public Integer getBookGroupQrcodeNum() {
return bookGroupQrcodeNum;
}
public void setBookGroupQrcodeNum(Integer bookGroupQrcodeNum) {
this.bookGroupQrcodeNum = bookGroupQrcodeNum;
}
public static ListBookGroupClockResponseVO valueFromBookClockInfoDTO(BookClockListDTO dto){
ListBookGroupClockResponseVO vo = new ListBookGroupClockResponseVO();
BeanUtils.copyProperties(dto, vo);
//去掉社群书id为0的书
dto.getBookGroupIdList().remove(0L);
vo.setBookCount(dto.getBookGroupIdList().size());
return vo;
}
}
...@@ -4,6 +4,8 @@ import java.util.HashMap; ...@@ -4,6 +4,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.pcloud.common.utils.string.StringUtil;
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;
...@@ -79,6 +81,19 @@ public class ReaderConsr { ...@@ -79,6 +81,19 @@ public class ReaderConsr {
return JSONUtils.toJSONString(headUrls); return JSONUtils.toJSONString(headUrls);
} }
@ParamLog(value = "获取wechatUserId", isAfterReturn = false)
public Long getWechatUserId(String wxUserId,Long channelId) throws BizException {
if (channelId == null || StringUtil.isEmpty(wxUserId)) {
return null;
}
try {
return ResponseHandleUtil.parseResponse(wechatUserService.getWechatUserId(wxUserId,channelId), Long.class);
} catch (Exception e) {
LOGGER.error("获取wechatUserId失败[wechatUserService.getWechatUserId]:" + e.getMessage(), e);
}
return null;
}
} }
...@@ -7,6 +7,7 @@ import com.pcloud.book.base.exception.BookBizException; ...@@ -7,6 +7,7 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.resourcecenter.product.dto.ProDto;
import com.pcloud.resourcecenter.product.dto.Product4BookDTO; import com.pcloud.resourcecenter.product.dto.Product4BookDTO;
import com.pcloud.resourcecenter.product.dto.ProductDto; import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO; import com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO;
...@@ -18,6 +19,7 @@ import org.slf4j.LoggerFactory; ...@@ -18,6 +19,7 @@ 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 java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -211,4 +213,35 @@ public class ProductConsr { ...@@ -211,4 +213,35 @@ public class ProductConsr {
return resultMap; return resultMap;
} }
/**
* 获取商品基本信息(含编号)
* @param productId
* @return
* @throws BizException
*/
public ProDto getProBasesInfoById(Long productId)throws BizException{
LOGGER.info("【资源中心(消)】获取商品基本信息,<START>.[productIds]=" + productId + "]");
if (productId == null) {
return null;
}
try {
List<Long> productIds = new ArrayList<>();
productIds.add(productId);
Map<Long, ProDto> resultMap = ResponseHandleUtil.parseMapResponse(productService.getProBasesInfoByIds(productIds), Long.class,
ProDto.class);
if (null == resultMap){
return null;
}
return resultMap.get(productId);
} catch (BizException e) {
LOGGER.warn("【资源中心(消)】获取商品基本信息失败:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("【资源中心(消)】获取商品基本信息.[getProBasesInfoById]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【资源中心(消)】获取商品基本信息,<END>");
}
}
} }
...@@ -6,6 +6,7 @@ import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO; ...@@ -6,6 +6,7 @@ import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO; import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO; import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO; import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.vo.AddClassifyVO; import com.pcloud.book.group.vo.AddClassifyVO;
import com.pcloud.book.group.vo.BookGroupQrcodeStatisticVO; import com.pcloud.book.group.vo.BookGroupQrcodeStatisticVO;
import com.pcloud.book.group.vo.ClassifyAndGroupCountVO; import com.pcloud.book.group.vo.ClassifyAndGroupCountVO;
...@@ -22,6 +23,7 @@ import com.pcloud.book.group.vo.StatisticVO; ...@@ -22,6 +23,7 @@ import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.book.group.vo.UpdateClassifyVO; import com.pcloud.book.group.vo.UpdateClassifyVO;
import com.pcloud.book.group.vo.UpdateRankVO; import com.pcloud.book.group.vo.UpdateRankVO;
import com.pcloud.common.page.PageBeanNew; 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;
...@@ -177,4 +179,11 @@ public interface BookGroupClassifyBiz { ...@@ -177,4 +179,11 @@ public interface BookGroupClassifyBiz {
* @Date:2019/5/10 20:18 * @Date:2019/5/10 20:18
*/ */
ProAssocGroupAndUserNumberDTO getProAssocGroupAndUserNumber(Long productId); ProAssocGroupAndUserNumberDTO getProAssocGroupAndUserNumber(Long productId);
/**
* @Author:hzk
* @Desr:获取分类列表
* @Date:2019/4/17 15:53
*/
PageBeanNew<ClassifyDTO> listSimpleBookGroupClassify4Adviser(Long adviserId, BookGroupClassify bookGroupClassify, PageParam pageParam);
} }
...@@ -745,4 +745,23 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -745,4 +745,23 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
} }
} }
/**
* 获取社群书分类列表(编辑)
* @param adviserId
* @param bookGroupClassify
* @return
*/
@Override
@ParamLog("获取社群书分类列表(编辑)")
public PageBeanNew<ClassifyDTO> listSimpleBookGroupClassify4Adviser(Long adviserId, BookGroupClassify bookGroupClassify,PageParam pageParam) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("adviserId",adviserId);
if(!StringUtil.isEmpty(bookGroupClassify.getClassify())){
paramMap.put("classify",bookGroupClassify.getClassify());
}
if(!ListUtils.isEmpty(bookGroupClassify.getBookGroupIds())){
paramMap.put("bookGroupIds",bookGroupClassify.getBookGroupIds());
}
return bookGroupClassifyDao.listPageNew(pageParam,paramMap,"listSimpleBookGroupClassify4Adviser");
}
} }
...@@ -191,4 +191,32 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> { ...@@ -191,4 +191,32 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
* @Date:2019/5/14 15:52 * @Date:2019/5/14 15:52
*/ */
Integer getMaxRank(Long bookGroupId); Integer getMaxRank(Long bookGroupId);
/**
* 获取分类名称及对应社群码名称
* @param classifyIds
* @return
*/
List<ClassifyDTO> getNameWithBookNameByIds(List<Long> classifyIds);
/**
* 获取书下面分类ID集合
* @param bookGroupIdList
* @return
*/
List<Long> getIdByBookGroupIds(List<Long> bookGroupIdList);
/**
* 获取书下面分类ID集合
* @param bookGroupIdList
* @return
*/
Map<Long,List<Long>> getClassifyIdsByBookGroupIds(List<Long> bookGroupIdList);
/**
* 获取分类名称及对应社群码名称
* @param paramMap
* @return
*/
List<ClassifyDTO> getNameWithBookClockInfoIdByIds(Map<String,Object> paramMap);
} }
package com.pcloud.book.group.dao; package com.pcloud.book.group.dao;
import java.util.List; import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO; import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
...@@ -116,4 +118,11 @@ public interface BookGroupDao extends BaseDao<BookGroup> { ...@@ -116,4 +118,11 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
* @Date:2019/5/28 11:15 * @Date:2019/5/28 11:15
*/ */
Boolean isSpecialAgent(Long agentId); Boolean isSpecialAgent(Long agentId);
/**
* 获取社群书基本信息(包括书籍封面isbn号)
* @param paramMap
* @return
*/
List<BookGroupDTO> getBookInfoByIdsWithBookClockInfoId(Map<String,Object> paramMap);
} }
...@@ -129,4 +129,19 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> { ...@@ -129,4 +129,19 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
* @return * @return
*/ */
GroupQrcode getGroupQrcodeByGroupId(String wechatGroupId); GroupQrcode getGroupQrcodeByGroupId(String wechatGroupId);
/**
* @Author: zhangdongwei
* 根据群分类ids获取群总数
* @param classifyIds
* @return
*/
Integer countByClassifyIds(List<Long> classifyIds);
/**
* 根据群分类id集合查询群id集合
* @param classifyIds
* @return
*/
List<String> getWeixinGroupIdsByClassifyIdList(List<Long> classifyIds);
} }
...@@ -167,4 +167,24 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp ...@@ -167,4 +167,24 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
public ClassifyDTO getBaseInfoBySpecId(Long productSpecId) { public ClassifyDTO getBaseInfoBySpecId(Long productSpecId) {
return this.getSqlSession().selectOne(this.getStatement("getBaseInfoBySpecId"), productSpecId); return this.getSqlSession().selectOne(this.getStatement("getBaseInfoBySpecId"), productSpecId);
} }
@Override
public List<ClassifyDTO> getNameWithBookNameByIds(List<Long> classifyIds) {
return this.getSqlSession().selectList(this.getStatement("getNameWithBookNameByIds"), classifyIds);
}
@Override
public List<Long> getIdByBookGroupIds(List<Long> bookGroupIdList) {
return this.getSqlSession().selectList(this.getStatement("getIdByBookGroupIds"), bookGroupIdList);
}
@Override
public Map<Long,List<Long>> getClassifyIdsByBookGroupIds(List<Long> bookGroupIdList) {
return this.getSqlSession().selectMap(this.getStatement("getClassifyIdsByBookGroupIds"), bookGroupIdList,"bookGroupId");
}
@Override
public List<ClassifyDTO> getNameWithBookClockInfoIdByIds(Map<String,Object> paramMap) {
return this.getSqlSession().selectList(this.getStatement("getNameWithBookClockInfoIdByIds"), paramMap);
}
} }
...@@ -122,4 +122,9 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou ...@@ -122,4 +122,9 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
public Boolean isSpecialAgent(Long agentId) { public Boolean isSpecialAgent(Long agentId) {
return this.getSqlSession().selectOne(this.getStatement("isSpecialAgent"), agentId); return this.getSqlSession().selectOne(this.getStatement("isSpecialAgent"), agentId);
} }
@Override
public List<BookGroupDTO> getBookInfoByIdsWithBookClockInfoId(Map<String,Object> paramMap) {
return this.getSqlSession().selectList(this.getStatement("getBookInfoByIdsWithBookClockInfoId"), paramMap);
}
} }
...@@ -120,4 +120,13 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou ...@@ -120,4 +120,13 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
return this.getSqlSession().selectOne(this.getStatement("getGroupQrcodeByGroupId"), wechatGroupId); return this.getSqlSession().selectOne(this.getStatement("getGroupQrcodeByGroupId"), wechatGroupId);
} }
@Override
public Integer countByClassifyIds(List<Long> classifyIds) {
return this.getSqlSession().selectOne(this.getStatement("countByClassifyIds"), classifyIds);
}
@Override
public List<String> getWeixinGroupIdsByClassifyIdList(List<Long> classifyIds) {
return this.getSqlSession().selectList(this.getStatement("getWeixinGroupIdsByClassifyIdList"), classifyIds);
}
} }
...@@ -126,8 +126,12 @@ public class BookGroupDTO extends BaseDto { ...@@ -126,8 +126,12 @@ public class BookGroupDTO extends BaseDto {
*/ */
private String isbn; private String isbn;
private String bookName;
private String url; private String url;
private Long bookClockInfoId;
public String getUrl() { public String getUrl() {
return url; return url;
} }
...@@ -314,6 +318,22 @@ public class BookGroupDTO extends BaseDto { ...@@ -314,6 +318,22 @@ public class BookGroupDTO extends BaseDto {
this.isbn = isbn; this.isbn = isbn;
} }
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
@Override @Override
public String toString() { public String toString() {
return "BookGroupDTO{" + return "BookGroupDTO{" +
...@@ -339,6 +359,9 @@ public class BookGroupDTO extends BaseDto { ...@@ -339,6 +359,9 @@ public class BookGroupDTO extends BaseDto {
", bookInfo=" + bookInfo + ", bookInfo=" + bookInfo +
", bookImg='" + bookImg + '\'' + ", bookImg='" + bookImg + '\'' +
", isbn='" + isbn + '\'' + ", isbn='" + isbn + '\'' +
", bookName='" + bookName + '\'' +
", url='" + url + '\'' +
", bookClockInfoId=" + bookClockInfoId +
'}'; '}';
} }
} }
\ No newline at end of file
...@@ -80,6 +80,8 @@ public class ClassifyDTO implements Serializable { ...@@ -80,6 +80,8 @@ public class ClassifyDTO implements Serializable {
*/ */
private Integer rank; private Integer rank;
private Long bookClockInfoId;
public Integer getRank() { public Integer getRank() {
return rank; return rank;
} }
...@@ -184,6 +186,14 @@ public class ClassifyDTO implements Serializable { ...@@ -184,6 +186,14 @@ public class ClassifyDTO implements Serializable {
this.bookGroupName = bookGroupName; this.bookGroupName = bookGroupName;
} }
public Long getBookClockInfoId() {
return bookClockInfoId;
}
public void setBookClockInfoId(Long bookClockInfoId) {
this.bookClockInfoId = bookClockInfoId;
}
@Override @Override
public String toString() { public String toString() {
return "ClassifyDTO{" + return "ClassifyDTO{" +
...@@ -200,6 +210,7 @@ public class ClassifyDTO implements Serializable { ...@@ -200,6 +210,7 @@ public class ClassifyDTO implements Serializable {
", productSpecId=" + productSpecId + ", productSpecId=" + productSpecId +
", changeNumber=" + changeNumber + ", changeNumber=" + changeNumber +
", rank=" + rank + ", rank=" + rank +
", bookClockInfoId=" + bookClockInfoId +
'}'; '}';
} }
} }
...@@ -5,6 +5,7 @@ import com.pcloud.common.entity.BaseEntity; ...@@ -5,6 +5,7 @@ import com.pcloud.common.entity.BaseEntity;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author 戴兴 * @author 戴兴
...@@ -71,6 +72,11 @@ public class BookGroupClassify extends BaseEntity { ...@@ -71,6 +72,11 @@ public class BookGroupClassify extends BaseEntity {
private Integer rank; private Integer rank;
/** /**
* 已选书籍列表
*/
private List<Long> bookGroupIds;
/**
* 创建人 * 创建人
*/ */
private Long createUser; private Long createUser;
...@@ -94,6 +100,10 @@ public class BookGroupClassify extends BaseEntity { ...@@ -94,6 +100,10 @@ public class BookGroupClassify extends BaseEntity {
) )
private Date updateTime; private Date updateTime;
private Integer currentPage;
private Integer numPerPage;
@Override @Override
public Long getId() { public Long getId() {
return id; return id;
...@@ -184,6 +194,14 @@ public class BookGroupClassify extends BaseEntity { ...@@ -184,6 +194,14 @@ public class BookGroupClassify extends BaseEntity {
this.changeNumber = changeNumber; this.changeNumber = changeNumber;
} }
public List<Long> getBookGroupIds() {
return bookGroupIds;
}
public void setBookGroupIds(List<Long> bookGroupIds) {
this.bookGroupIds = bookGroupIds;
}
public Long getCreateUser() { public Long getCreateUser() {
return createUser; return createUser;
} }
...@@ -228,6 +246,22 @@ public class BookGroupClassify extends BaseEntity { ...@@ -228,6 +246,22 @@ public class BookGroupClassify extends BaseEntity {
this.updateTime = updateTime; this.updateTime = updateTime;
} }
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(Integer numPerPage) {
this.numPerPage = numPerPage;
}
@Override @Override
public String toString() { public String toString() {
return "BookGroupClassify{" + return "BookGroupClassify{" +
...@@ -242,11 +276,14 @@ public class BookGroupClassify extends BaseEntity { ...@@ -242,11 +276,14 @@ public class BookGroupClassify extends BaseEntity {
", productSpecId=" + productSpecId + ", productSpecId=" + productSpecId +
", changeNumber=" + changeNumber + ", changeNumber=" + changeNumber +
", rank=" + rank + ", rank=" + rank +
", bookGroupIds=" + bookGroupIds +
", createUser=" + createUser + ", createUser=" + createUser +
", updateUser=" + updateUser + ", updateUser=" + updateUser +
", isDelete=" + isDelete + ", isDelete=" + isDelete +
", createTime=" + createTime + ", createTime=" + createTime +
", updateTime=" + updateTime + ", updateTime=" + updateTime +
", currentPage=" + currentPage +
", numPerPage=" + numPerPage +
'}'; '}';
} }
} }
\ No newline at end of file
package com.pcloud.book.group.facade; package com.pcloud.book.group.facade;
import com.pcloud.book.group.entity.BookGroupClassify;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -169,6 +170,15 @@ public interface BookGroupFacade { ...@@ -169,6 +170,15 @@ public interface BookGroupFacade {
@RequestMapping(value = "getTotalBookGroupCount", method = RequestMethod.GET) @RequestMapping(value = "getTotalBookGroupCount", method = RequestMethod.GET)
ResponseDto<?> getTotalBookGroupCount(@RequestHeader("token") String token) throws BizException, PermissionException, JsonParseException; ResponseDto<?> getTotalBookGroupCount(@RequestHeader("token") String token) throws BizException, PermissionException, JsonParseException;
@ApiOperation(value = "获取社群书分类列表(编辑)", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "bookGroupClassify", value = "群分类实体", dataType = "BookGroupClassify", paramType = "body")
})
@RequestMapping(value = "listSimpleBookGroupClassify4Adviser", method = RequestMethod.POST)
ResponseDto<?> listSimpleBookGroupClassify4Adviser(@RequestHeader("token") String token,
@RequestBody BookGroupClassify bookGroupClassify) throws BizException, PermissionException;
@ApiOperation(value = "是否是特殊的出版社", httpMethod = "GET") @ApiOperation(value = "是否是特殊的出版社", httpMethod = "GET")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header") @ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header")
......
...@@ -2,6 +2,8 @@ package com.pcloud.book.group.facade.impl; ...@@ -2,6 +2,8 @@ package com.pcloud.book.group.facade.impl;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import io.swagger.annotations.ApiOperation;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -14,7 +16,9 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -14,7 +16,9 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.facade.BookGroupFacade; import com.pcloud.book.group.facade.BookGroupFacade;
import com.pcloud.book.group.vo.UpdateRankTypeVO; import com.pcloud.book.group.vo.UpdateRankTypeVO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -35,6 +39,8 @@ public class BookGroupFacadeImpl implements BookGroupFacade { ...@@ -35,6 +39,8 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
@Autowired @Autowired
private BookGroupBiz bookGroupBiz; private BookGroupBiz bookGroupBiz;
@Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz;
/** /**
* 获取社群书群二维码信息 * 获取社群书群二维码信息
...@@ -230,6 +236,26 @@ public class BookGroupFacadeImpl implements BookGroupFacade { ...@@ -230,6 +236,26 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID); Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(bookGroupBiz.getTotalBookGroupCount(adviserId)); return new ResponseDto<>(bookGroupBiz.getTotalBookGroupCount(adviserId));
} }
/**
* 获取社群书分类列表(编辑)
*/
@Override
@RequestMapping(value = "listSimpleBookGroupClassify4Adviser", method = RequestMethod.POST)
public ResponseDto<?> listSimpleBookGroupClassify4Adviser(@RequestHeader("token") String token,
@RequestBody BookGroupClassify bookGroupClassify)
throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if (null == bookGroupClassify) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误");
}
if (null == bookGroupClassify.getCurrentPage() || null == bookGroupClassify.getNumPerPage()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "分页参数有误");
}
PageParam pageParam = new PageParam(bookGroupClassify.getCurrentPage(), bookGroupClassify.getNumPerPage());
return new ResponseDto<>(bookGroupClassifyBiz.listSimpleBookGroupClassify4Adviser(adviserId, bookGroupClassify, pageParam));
}
@Override @Override
@RequestMapping(value = "isSpecialAgent", method = RequestMethod.GET) @RequestMapping(value = "isSpecialAgent", method = RequestMethod.GET)
public ResponseDto<Boolean> isSpecialAgent(@RequestHeader("token") String token) throws BizException, PermissionException { public ResponseDto<Boolean> isSpecialAgent(@RequestHeader("token") String token) throws BizException, PermissionException {
......
package com.pcloud.book.group.tools; package com.pcloud.book.group.tools;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.group.dto.SyncWeixinGroupIdRequestDTO; import com.pcloud.book.group.dto.SyncWeixinGroupIdRequestDTO;
import com.pcloud.book.group.dto.UpdateQrDTO; import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.keywords.dto.KeywordDTO; import com.pcloud.book.keywords.dto.KeywordDTO;
...@@ -351,4 +352,29 @@ public class SendWeixinRequestTools { ...@@ -351,4 +352,29 @@ public class SendWeixinRequestTools {
JedisClusterUtils.setJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, nickNames, 600); JedisClusterUtils.setJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, nickNames, 600);
return nameStr; return nameStr;
} }
@ParamLog("欢迎语中推送关键词信息")
public static void sendClockKeywordsInfo(List<BookClockKeywordDTO> keywords, String robotId, String weixinGroupId) {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setAltId(robotId);
sendTextMessageVO.setGroupId(weixinGroupId);
if (ListUtils.isEmpty(keywords)) return;
String content = "";
for (int i = 0; i < keywords.size(); i++) {
BookClockKeywordDTO bookClockKeywordDTO = keywords.get(i);
String keyword = "关键词【" + bookClockKeywordDTO.getKeyword() + "】\n" + " " + bookClockKeywordDTO.getGuide();
if (content.length() + keyword.length() > 300) {
sendTextMessageVO.setContent(content);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
content = keyword;
}else{
content = content + keyword;
}
if (i != keywords.size() - 1) {
content = content + "\n";
}
}
sendTextMessageVO.setContent(content);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
} }
package com.pcloud.book.keywords.biz.impl; package com.pcloud.book.keywords.biz.impl;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.check.BookClockCheck;
import com.pcloud.book.clock.dao.BookClockKeywordDao;
import com.pcloud.book.clock.dto.BookClockKeywordDTO;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr; import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
...@@ -37,7 +40,9 @@ import org.springframework.stereotype.Component; ...@@ -37,7 +40,9 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author lily * @author lily
...@@ -63,6 +68,10 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -63,6 +68,10 @@ public class BookGuideBizImpl implements BookGuideBiz {
private ProductConsr productConsr; private ProductConsr productConsr;
@Autowired @Autowired
private GroupQrcodeBiz groupQrcodeBiz; private GroupQrcodeBiz groupQrcodeBiz;
@Autowired
private BookClockCheck bookClockCheck;
@Autowired
private BookClockKeywordDao bookClockKeywordDao;
@Override @Override
@ParamLog("新增欢迎语") @ParamLog("新增欢迎语")
...@@ -218,6 +227,30 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -218,6 +227,30 @@ public class BookGuideBizImpl implements BookGuideBiz {
//推送公众号消息 //推送公众号消息
SendWeixinRequestTools.sendAccountMessage(weixinGroupId, bookGuide.getRecommendLanguage(), robotId, wechatInfo); SendWeixinRequestTools.sendAccountMessage(weixinGroupId, bookGuide.getRecommendLanguage(), robotId, wechatInfo);
} }
//校验该群是否与微信群打卡有关
List<Long> bookClockInfoIdList = bookClockCheck.checkGroupIsClock(classifyQrcodeInfo);
if(!ListUtils.isEmpty(bookClockInfoIdList)){
Map<String,Object> paramMap = new HashMap<>();
int i = 0;
List<BookClockKeywordDTO> bookClockKeywordDTOList = new ArrayList<>();
for (Long bookClockInfoId:bookClockInfoIdList) {
i++;
if(i >= 5){
break;
}
paramMap.put("bookClockInfoId",bookClockInfoId);
List<BookClockKeywordDTO> bookClockKeywordDTOS = bookClockKeywordDao.getKeywordsByInfoId(paramMap);
bookClockKeywordDTOList.addAll(bookClockKeywordDTOS);
if(i%2 == 0){
SendWeixinRequestTools.sendClockKeywordsInfo(bookClockKeywordDTOList, robotId, weixinGroupId);
bookClockKeywordDTOList.clear();
}else if(i == bookClockInfoIdList.size()){
SendWeixinRequestTools.sendClockKeywordsInfo(bookClockKeywordDTOList, robotId, weixinGroupId);
bookClockKeywordDTOList.clear();
}
}
}
} }
@ParamLog("处理地址") @ParamLog("处理地址")
......
...@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer; ...@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO; import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO; import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.clock.dto.PushBookClockKeywordDTO;
import com.pcloud.book.group.dto.PushAddUserMessageDTO; import com.pcloud.book.group.dto.PushAddUserMessageDTO;
public interface BookMQProducer { public interface BookMQProducer {
...@@ -11,4 +12,6 @@ public interface BookMQProducer { ...@@ -11,4 +12,6 @@ public interface BookMQProducer {
void sendUpdateBookNameTopic(BookNameUpdateDTO bookNameUpdateDTO); void sendUpdateBookNameTopic(BookNameUpdateDTO bookNameUpdateDTO);
void pushAddUserMessageTopic(PushAddUserMessageDTO pushAddUserMessageDTO); void pushAddUserMessageTopic(PushAddUserMessageDTO pushAddUserMessageDTO);
void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO);
} }
...@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer.impl; ...@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer.impl;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO; import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO; import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.clock.dto.PushBookClockKeywordDTO;
import com.pcloud.book.group.dto.PushAddUserMessageDTO; import com.pcloud.book.group.dto.PushAddUserMessageDTO;
import com.pcloud.book.mq.producer.BookMQProducer; import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.common.core.constant.MQTopicProducer; import com.pcloud.common.core.constant.MQTopicProducer;
...@@ -31,4 +32,9 @@ public class BookProducerImpl implements BookMQProducer { ...@@ -31,4 +32,9 @@ public class BookProducerImpl implements BookMQProducer {
public void pushAddUserMessageTopic(PushAddUserMessageDTO pushAddUserMessageDTO) { public void pushAddUserMessageTopic(PushAddUserMessageDTO pushAddUserMessageDTO) {
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.PUSH_ADD_USER_MESSAGE, pushAddUserMessageDTO); amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.PUSH_ADD_USER_MESSAGE, pushAddUserMessageDTO);
} }
@Override
public void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO) {
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.PUSH_BOOK_CLOCK_KEYWORD, pushBookClockKeywordDTO);
}
} }
...@@ -3,6 +3,7 @@ package com.pcloud.book.mq.topic; ...@@ -3,6 +3,7 @@ package com.pcloud.book.mq.topic;
import com.pcloud.appcenter.app.entity.App; import com.pcloud.appcenter.app.entity.App;
import com.pcloud.appcenter.base.enums.AppEnum; import com.pcloud.appcenter.base.enums.AppEnum;
import com.pcloud.book.clock.dao.BookClockInfoDao;
import com.pcloud.book.keywords.dao.BookGuideReplyDao; import com.pcloud.book.keywords.dao.BookGuideReplyDao;
import com.pcloud.book.keywords.dao.KeywordDao; import com.pcloud.book.keywords.dao.KeywordDao;
import com.pcloud.book.mq.config.MQTopicConumer; import com.pcloud.book.mq.config.MQTopicConumer;
...@@ -30,6 +31,9 @@ public class AppUpdateListener { ...@@ -30,6 +31,9 @@ public class AppUpdateListener {
@Autowired @Autowired
private BookGuideReplyDao bookGuideReplyDao; private BookGuideReplyDao bookGuideReplyDao;
@Autowired
private BookClockInfoDao bookClockInfoDao;
/** /**
* 接收消息 * 接收消息
*/ */
...@@ -43,6 +47,7 @@ public class AppUpdateListener { ...@@ -43,6 +47,7 @@ public class AppUpdateListener {
if(AppEnum.AUDIT_STATE_PASS.value.equals(app.getAuditState())){ if(AppEnum.AUDIT_STATE_PASS.value.equals(app.getAuditState())){
keywordDao.updateServeInfo(app.getAppId(), "APP", app.getTitle(), app.getSquareImg()); keywordDao.updateServeInfo(app.getAppId(), "APP", app.getTitle(), app.getSquareImg());
bookGuideReplyDao.updateServeInfo(app.getAppId(), "APP", app.getTitle(), app.getSquareImg()); bookGuideReplyDao.updateServeInfo(app.getAppId(), "APP", app.getTitle(), app.getSquareImg());
bookClockInfoDao.updateAppInfo(app.getAppId(),app.getTitle(),app.getSquareImg());
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("应用修改消息监听消费topic,<ERROR>:" + e.getMessage(), e); LOGGER.error("应用修改消息监听消费topic,<ERROR>:" + e.getMessage(), e);
......
package com.pcloud.book.mq.topic; package com.pcloud.book.mq.topic;
import com.pcloud.book.clock.dao.BookClockInfoDao;
import com.pcloud.book.keywords.dao.BookGuideReplyDao; import com.pcloud.book.keywords.dao.BookGuideReplyDao;
import com.pcloud.book.keywords.dao.KeywordDao; import com.pcloud.book.keywords.dao.KeywordDao;
import com.pcloud.book.mq.config.MQTopicConumer; import com.pcloud.book.mq.config.MQTopicConumer;
...@@ -26,6 +27,9 @@ public class ProductUpdateListener { ...@@ -26,6 +27,9 @@ public class ProductUpdateListener {
@Autowired @Autowired
private BookGuideReplyDao bookGuideReplyDao; private BookGuideReplyDao bookGuideReplyDao;
@Autowired
private BookClockInfoDao bookClockInfoDao;
/** /**
* 接收资源中心消息 * 接收资源中心消息
*/ */
...@@ -37,5 +41,6 @@ public class ProductUpdateListener { ...@@ -37,5 +41,6 @@ public class ProductUpdateListener {
} }
keywordDao.updateServeInfo(product.getProductId(), "PRODUCT", product.getProductName(), product.getCoverImg()); keywordDao.updateServeInfo(product.getProductId(), "PRODUCT", product.getProductName(), product.getCoverImg());
bookGuideReplyDao.updateServeInfo(product.getProductId(), "PRODUCT", product.getProductName(), product.getCoverImg()); bookGuideReplyDao.updateServeInfo(product.getProductId(), "PRODUCT", product.getProductName(), product.getCoverImg());
bookClockInfoDao.updateProductInfo(product.getProductId(),product.getProductName(),product.getCoverImg(),product.getUniqueNumber());
} }
} }
package com.pcloud.book.mq.topic; package com.pcloud.book.mq.topic;
import com.pcloud.book.clock.biz.BookClockKeywordBiz;
import com.pcloud.book.clock.check.BookClockCheck;
import com.pcloud.book.clock.dto.BookClockInfoDTO;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.keywords.biz.BookKeywordBiz; import com.pcloud.book.keywords.biz.BookKeywordBiz;
import com.pcloud.book.mq.config.MQTopicConumer; import com.pcloud.book.mq.config.MQTopicConumer;
...@@ -32,6 +35,10 @@ public class WxGroupSendTextListener { ...@@ -32,6 +35,10 @@ public class WxGroupSendTextListener {
private BookKeywordBiz bookKeywordBiz; private BookKeywordBiz bookKeywordBiz;
@Autowired @Autowired
private WechatGroupConsr wechatGroupConsr; private WechatGroupConsr wechatGroupConsr;
@Autowired
private BookClockKeywordBiz bookClockKeywordBiz;
@Autowired
private BookClockCheck bookClockCheck;
/** /**
* 接收微信用户进群消息 * 接收微信用户进群消息
...@@ -46,7 +53,12 @@ public class WxGroupSendTextListener { ...@@ -46,7 +53,12 @@ public class WxGroupSendTextListener {
//校验是否机器人账号 //校验是否机器人账号
List<String> allRobotWxIds = wechatGroupConsr.listAllRobotWxId(); List<String> allRobotWxIds = wechatGroupConsr.listAllRobotWxId();
if (!ListUtils.isEmpty(allRobotWxIds) && !allRobotWxIds.contains(wechatUserId) && !StringUtil.isEmpty(sendTextDTO.getTextContent())) { if (!ListUtils.isEmpty(allRobotWxIds) && !allRobotWxIds.contains(wechatUserId) && !StringUtil.isEmpty(sendTextDTO.getTextContent())) {
bookKeywordBiz.sendKeywordMessage(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId(), wechatUserId); BookClockInfoDTO bookClockInfoDTO = bookClockCheck.checkKeywordIsClock(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId());
if(null != bookClockInfoDTO){
bookClockKeywordBiz.sendKeywordMessage(bookClockInfoDTO, wechatUserId,sendTextDTO.getWechatGroupId());
}else{
bookKeywordBiz.sendKeywordMessage(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId(), wechatUserId);
}
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("接收用户发送文本消息失败" + e.getMessage(), e); LOGGER.error("接收用户发送文本消息失败" + e.getMessage(), e);
......
package com.pcloud.book.util.common; package com.pcloud.book.util.common;
import java.util.ArrayList; import java.util.*;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.pcloud.common.utils.DateNewUtils; import com.pcloud.common.utils.DateNewUtils;
import com.pcloud.common.utils.ListUtils;
/** /**
* @author PENG * @author PENG
...@@ -97,4 +96,36 @@ public class CommonUtils { ...@@ -97,4 +96,36 @@ public class CommonUtils {
Date endDate = DateNewUtils.getDateByStr(timeEnd); Date endDate = DateNewUtils.getDateByStr(timeEnd);
return collectLocalDates(startDate, endDate); return collectLocalDates(startDate, endDate);
} }
/**
* 获取两个集合中相同元素
* @param oldList
* @param newList
* @return
*/
public static List<Long> getSameEle(List<Long> oldList,List<Long> newList){
if(ListUtils.isEmpty(oldList)){
return null;
}
if(ListUtils.isEmpty(newList)){
return null;
}
List<Long> result = new LinkedList<>();
List<Long> maxList = oldList;
List<Long> minList = newList;
if(maxList.size() < minList.size()){
maxList = newList;
minList = oldList;
}
Map<Long, Integer> map = new HashMap<Long, Integer>(maxList.size());
for (Long id:maxList) {
map.put(id,1);
}
for (Long id:minList) {
if(null != map.get(id)){
result.add(id);
}
}
return result;
}
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.clock.dao.impl.BookClockInfoDaoImpl">
<!-- 微信群打卡实体 -->
<resultMap id="BaseResultMap" type="com.pcloud.book.clock.entity.BookClockInfo">
<id column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="origin_id" property="originId" jdbcType="BIGINT"/>
<result column="origin_type" property="originType" jdbcType="VARCHAR"/>
<result column="origin_title" property="originTitle" jdbcType="VARCHAR"/>
<result column="origin_img" property="originImg" jdbcType="VARCHAR"/>
<result column="unique_number" property="uniqueNumber" jdbcType="VARCHAR"/>
<result column="is_notice" property="isNotice" jdbcType="TINYINT"/>
<result column="notice_time" property="noticeTime" jdbcType="VARCHAR"/>
<result column="notice_content" property="noticeContent" jdbcType="VARCHAR"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<!-- 微信群打卡实体DTO -->
<resultMap id="BaseResultMapDTO" type="com.pcloud.book.clock.dto.BookClockInfoDTO">
<id column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="origin_id" property="originId" jdbcType="BIGINT"/>
<result column="origin_type" property="originType" jdbcType="VARCHAR"/>
<result column="origin_title" property="originTitle" jdbcType="VARCHAR"/>
<result column="origin_img" property="originImg" jdbcType="VARCHAR"/>
<result column="unique_number" property="uniqueNumber" jdbcType="VARCHAR"/>
<result column="is_notice" property="isNotice" jdbcType="TINYINT"/>
<result column="notice_time" property="noticeTime" jdbcType="VARCHAR"/>
<result column="notice_content" property="noticeContent" jdbcType="VARCHAR"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<!-- 微信群打卡列表实体DTO -->
<resultMap id="BaseResultListMapDTO" type="com.pcloud.book.clock.dto.BookClockListDTO">
<id column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="origin_id" property="originId" jdbcType="BIGINT"/>
<result column="origin_type" property="originType" jdbcType="VARCHAR"/>
<result column="origin_title" property="originTitle" jdbcType="VARCHAR"/>
<result column="origin_img" property="originImg" jdbcType="VARCHAR"/>
<result column="unique_number" property="uniqueNumber" jdbcType="VARCHAR"/>
<result column="bookCount" property="bookCount" jdbcType="INTEGER"/>
<result column="classifyCount" property="classifyCount" jdbcType="INTEGER"/>
<collection property="bookGroupIdList" ofType="java.lang.Long">
<id column="bgi" jdbcType="BIGINT"/>
</collection>
<collection property="classifyIdList" ofType="java.lang.Long">
<id column="ci" jdbcType="BIGINT"/>
</collection>
</resultMap>
<sql id="Base_Column_List">
book_clock_info_id, origin_id, origin_type, origin_title, origin_img, unique_number, is_notice, notice_time, notice_content,
create_user, create_time, update_user, update_time
</sql>
<!-- 新增书籍和编辑关联信息-->
<insert id="insert" parameterType="bookClockInfo" useGeneratedKeys="true" keyProperty="bookClockInfoId" flushCache="true">
INSERT INTO book_clock_info (
origin_id, origin_type, origin_title, origin_img, unique_number, is_notice, notice_time, notice_content,
create_user, create_time, update_user, update_time
)
VALUES (
#{originId, jdbcType=BIGINT}, #{originType, jdbcType=VARCHAR}, #{originTitle, jdbcType=VARCHAR}, #{originImg, jdbcType=VARCHAR},
#{uniqueNumber, jdbcType=VARCHAR}, #{isNotice, jdbcType=TINYINT}, #{noticeTime, jdbcType=VARCHAR}, #{noticeContent, jdbcType=VARCHAR},
#{createUser, jdbcType=BIGINT}, NOW(), #{updateUser, jdbcType=BIGINT}, NOW()
)
</insert>
<!-- 获取基本信息-->
<select id="getBaseInfoById" parameterType="long" resultMap="BaseResultMapDTO">
SELECT <include refid="Base_Column_List"/>
FROM book_clock_info
WHERE book_clock_info_id = #{bookClockInfoId}
LIMIT 1
</select>
<!-- 修改作品/应用-->
<update id="updateBaseInfo4AppType" parameterType="map">
UPDATE book_clock_info
<set>
<if test="newOriginId != null">
origin_id = #{newOriginId},
</if>
<if test="newOriginType != null">
origin_type = #{newOriginType},
</if>
<if test="originTitle != null">
origin_title = #{originTitle},
</if>
<if test="originImg != null">
origin_img = #{originImg},
</if>
unique_number = #{uniqueNumber}
</set>
WHERE book_clock_info_id = #{bookClockInfoId}
</update>
<!-- 修改基本信息(修改关键词)-->
<update id="updateBaseInfo4KeywordType" parameterType="map">
UPDATE book_clock_info
SET is_notice = #{isNotice},
notice_time = #{noticeTime},
notice_content = #{noticeContent}
WHERE book_clock_info_id = #{bookClockInfoId}
</update>
<!-- 获取基本信息-->
<select id="getBookGroupClockBaseInfo" parameterType="Long" resultMap="BaseResultMapDTO">
SELECT <include refid="Base_Column_List"/>
FROM book_clock_info
WHERE book_clock_info_id = #{bookClockInfoId}
</select>
<!-- 获取该编辑已选的超级作者作品及应用-->
<select id="getOriginIdAndTypeByAdviserId" parameterType="long" resultMap="BaseResultMapDTO">
SELECT origin_id,origin_type
FROM book_clock_info
WHERE create_user = #{adviserId}
</select>
<select id="listBookGroupClock" parameterType="map" resultMap="BaseResultListMapDTO">
select bci.*, bgc.book_group_id as bgi, bgc.classify_id as ci
from (
select book_clock_info_id, origin_id, origin_type, origin_title, origin_img, unique_number from book_clock_info where create_user = #{adviserId}
<if test="name != null">
and (origin_title like CONCAT('%', #{name}, '%') or unique_number like CONCAT('%', #{name}, '%'))
</if>
<if test="startDate != null and endDate != null">
and create_time between #{startDate} and #{endDate}
</if>
order by update_time desc
limit #{startNum}, #{numPerPage}
) bci
left join book_group_clock bgc on bci.book_clock_info_id = bgc.book_clock_info_id
</select>
<select id="countBookGroupClock" resultType="java.lang.Integer">
select count(1) totalCount from book_clock_info where create_user = #{adviserId}
<if test="name != null">
and (origin_title like CONCAT('%', #{name}, '%') or unique_number like CONCAT('%', #{name}, '%'))
</if>
<if test="startDate != null and endDate != null">
and create_time between #{startDate} and #{endDate}
</if>
order by update_time desc
</select>
<!-- 获取该作品/应用该编辑创建的基本信息-->
<select id="getBaseInfoByMap" parameterType="map" resultMap="BaseResultMapDTO">
SELECT <include refid="Base_Column_List"/>
FROM book_clock_info
WHERE origin_id = #{originId}
AND origin_type = #{originType}
AND create_user = #{adviserId}
</select>
<!-- 修改作品基本信息-->
<update id="updateProductInfo" parameterType="map">
UPDATE book_clock_info
<set>
<if test="title != null">
origin_title = #{title},
</if>
<if test="coverImg != null">
origin_img = #{coverImg},
</if>
unique_number = #{uniqueNumber},
</set>
WHERE origin_id = #{originId}
AND origin_type = "PRODUCT"
</update>
<!-- 修改应用基本信息-->
<update id="updateAppInfo" parameterType="map">
UPDATE book_clock_info
<set>
<if test="title != null">
origin_title = #{title},
</if>
<if test="coverImg != null">
origin_img = #{coverImg},
</if>
</set>
WHERE origin_id = #{originId}
AND origin_type = "APP"
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.clock.dao.impl.BookClockKeywordDaoImpl">
<!-- 微信群打卡实体 -->
<resultMap id="BaseResultMap" type="com.pcloud.book.clock.entity.BookClockKeyword">
<id column="book_clock_keyword_id" property="bookClockKeywordId" jdbcType="BIGINT"/>
<result column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="operation" property="operation" jdbcType="VARCHAR"/>
<result column="keyword" property="keyword" jdbcType="VARCHAR"/>
<result column="guide" property="guide" jdbcType="VARCHAR"/>
<result column="sequence_num" property="sequenceNum" jdbcType="INTEGER"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<!-- 微信群打卡实体DTO -->
<resultMap id="BaseResultMapDTO" type="com.pcloud.book.clock.dto.BookClockKeywordDTO">
<id column="book_clock_keyword_id" property="bookClockKeywordId" jdbcType="BIGINT"/>
<result column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="operation" property="operation" jdbcType="VARCHAR"/>
<result column="keyword" property="keyword" jdbcType="VARCHAR"/>
<result column="guide" property="guide" jdbcType="VARCHAR"/>
<result column="sequence_num" property="sequenceNum" jdbcType="INTEGER"/>
<result column="channel_id" property="channelId" jdbcType="BIGINT"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
book_clock_info_id, operation, keyword, guide, sequence_num, create_user, create_time, update_user, update_time
</sql>
<!-- 新增关键词信息-->
<insert id="insert" parameterType="bookClockKeyword" useGeneratedKeys="true" keyProperty="bookClockKeywordId" flushCache="true">
INSERT INTO book_clock_keyword (
book_clock_info_id, operation, keyword, guide, sequence_num, create_user, create_time, update_user, update_time
)
VALUES (
#{bookClockInfoId, jdbcType=BIGINT}, #{operation, jdbcType=VARCHAR}, #{keyword, jdbcType=VARCHAR},
#{guide, jdbcType=VARCHAR}, #{sequenceNum, jdbcType=BIGINT}, #{createUser, jdbcType=BIGINT}, NOW(), #{updateUser, jdbcType=BIGINT}, NOW()
)
</insert>
<!--校验关键词有无重复-->
<select id="checkKeywordHasExist" parameterType="map" resultType="long">
SELECT DISTINCT(book_clock_info_id)
FROM book_clock_keyword
WHERE create_user = #{adviserId}
AND keyword IN
<foreach collection="keyWords" open="(" close=")" item="item" separator=",">
#{item}
</foreach>
</select>
<!--获取该作品/应用操作最大排序值-->
<select id="getMaxSequence4Keyword" parameterType="Long" resultType="long">
SELECT sequence_num
FROM book_clock_keyword
WHERE book_clock_info_id = #{bookClockInfoId}
ORDER BY sequence_num DESC
LIMIT 1
</select>
<!--批量插入-->
<insert id="batchInsert" parameterType="bookClockKeyword" keyProperty="bookClockKeywordId" useGeneratedKeys="true" flushCache="true">
INSERT INTO book_clock_keyword (
book_clock_info_id, operation, keyword, guide, sequence_num, create_user, create_time, update_user, update_time
)
VALUES
<foreach collection="list" separator="," item="item" >
(#{item.bookClockInfoId,jdbcType=BIGINT},
#{item.operation,jdbcType=VARCHAR},
#{item.keyword,jdbcType=VARCHAR},
#{item.guide,jdbcType=VARCHAR},
#{item.sequenceNum,jdbcType=BIGINT},
#{item.createUser,jdbcType=BIGINT},
NOW(),
#{item.updateUser,jdbcType=BIGINT},
NOW())
</foreach>
</insert>
<!--删除旧的关键词-->
<delete id="deleteBookClockKeyword" parameterType="map">
DELETE FROM book_clock_keyword
WHERE book_clock_info_id = #{bookClockInfoId}
</delete>
<!--获取微信打卡作品/应用关键词-->
<select id="getKeywordsByInfoId" parameterType="map" resultMap="BaseResultMapDTO">
SELECT <include refid="Base_Column_List"/>
FROM book_clock_keyword
WHERE book_clock_info_id = #{bookClockInfoId}
</select>
<!--获取该关键词已关联的书及分类-->
<select id="getInfoIdByKeyword" parameterType="map" resultType="long">
SELECT book_clock_info_id
FROM book_clock_keyword
WHERE create_user = #{adviserId}
AND keyword = #{keyword}
</select>
<!--根据接收到的关键词获取对应的作品/应用ID-->
<select id="getInfoIdByKeywordAndweixinGroupId" parameterType="map" resultMap="BaseResultMapDTO">
SELECT
bck.book_clock_info_id,
bck.operation,
bck.keyword,
bck.guide,
bgc.channel_id
FROM
book_group_clock bgc
LEFT JOIN book_clock_keyword bck ON bgc.book_clock_info_id = bck.book_clock_info_id
WHERE
bck.keyword = #{keyword}
AND bck.create_user = #{adviserId}
AND (
bgc.book_group_id = #{bookGroupId} OR bgc.classify_id = #{classifyId})
LIMIT 1
</select>
<!--获取微信群打卡动作关键词-->
<select id="getBookClockKeyword4Clock" parameterType="map" resultType="com.pcloud.book.clock.dto.BookGroupClockKeywordDTO">
SELECT book_clock_info_id bookClockInfoId,
operation,
keyword,
guide,
sequence_num sequence,
create_user createUser
FROM book_clock_keyword
WHERE book_clock_info_id = #{bookClockInfoId}
AND operation = #{operation}
LIMIT 1
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.clock.dao.impl.BookGroupClockDaoImpl">
<!-- 微信群打卡实体 -->
<resultMap id="BaseResultMap" type="com.pcloud.book.clock.entity.BookGroupClock">
<id column="book_group_clock_id" property="bookGroupClockId" jdbcType="BIGINT"/>
<result column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="BIGINT"/>
<result column="book_group_id" property="bookGroupId" jdbcType="BIGINT"/>
<result column="classify_id" property="classifyId" jdbcType="BIGINT"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<!-- 微信群打卡实体DTO -->
<resultMap id="BaseResultMapDTO" type="com.pcloud.book.clock.dto.BookGroupClockDTO">
<id column="book_group_clock_id" property="bookGroupClockId" jdbcType="BIGINT"/>
<result column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="BIGINT"/>
<result column="book_group_id" property="bookGroupId" jdbcType="BIGINT"/>
<result column="classify_id" property="classifyId" jdbcType="BIGINT"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
book_group_clock_id, book_clock_info_id, channel_id, book_group_id, classify_id, create_user, create_time, update_user, update_time
</sql>
<!-- 新增书籍和编辑关联信息-->
<insert id="insert" parameterType="bookGroupClock" useGeneratedKeys="true" keyProperty="bookGroupClockId" flushCache="true">
INSERT INTO book_group_clock (
book_clock_info_id, book_clock_info_id, classify_id, create_user, create_time, update_user, update_time
)
VALUES (
#{bookClockInfoId, jdbcType=BIGINT}, #{channelId, jdbcType=BIGINT}, #{bookGroupId, jdbcType=BIGINT},
#{classifyId, jdbcType=BIGINT}, #{createUser, jdbcType=BIGINT}, NOW(), #{updateUser, jdbcType=BIGINT}, NOW()
)
</insert>
<insert id="batchInsert" parameterType="bookGroupClock" useGeneratedKeys="true" keyProperty="bookGroupClockId" flushCache="true">
insert into book_group_clock (
book_clock_info_id,
channel_id,
book_group_id,
classify_id,
create_user,
create_time,
update_user,
update_time
) values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.bookClockInfoId,jdbcType=BIGINT},
#{item.channelId,jdbcType=BIGINT},
#{item.bookGroupId,jdbcType=BIGINT},
#{item.classifyId,jdbcType=BIGINT},
#{item.createUser,jdbcType=BIGINT},
NOW(),
#{item.updateUser,jdbcType=BIGINT},
NOW()
)
</foreach>
</insert>
<!-- 删除关联的社群书-->
<delete id="deleteBookGroupId4AppType" parameterType="map">
DELETE FROM book_group_clock
WHERE book_clock_info_id = #{bookClockInfoId}
AND classify_id = 0
</delete>
<!-- 删除关联的分类-->
<delete id="deleteClassifyId4AppType" parameterType="map">
DELETE FROM book_group_clock
WHERE book_clock_info_id = #{bookClockInfoId}
AND book_group_id = 0
</delete>
<!-- 获取关联的社群码-->
<select id="getBookGroupClockIds" parameterType="map" resultMap="BaseResultMapDTO">
SELECT <include refid="Base_Column_List"/>
FROM book_group_clock
WHERE book_clock_info_id = #{bookClockInfoId}
</select>
<!-- 删除该作品/应用已关联的书下面的分类-->
<delete id="deleteClassifyIdByBookGroupIds" parameterType="map">
DELETE FROM book_group_clock
WHERE book_clock_info_id = #{bookClockInfoId}
AND classify_id IN
<foreach collection="classifyIds" open="(" close=")" separator="," item="item">
${item}
</foreach>
</delete>
<!--校验群是否为微信群打卡的群-->
<select id="getInfoIdByWeixinGroupId" parameterType="map" resultType="long">
SELECT
book_clock_info_id
FROM
book_group_clock
WHERE
create_user = #{adviserId}
AND (
book_group_id = #{bookGroupId} OR classify_id = #{classifyId}
)
ORDER BY book_clock_info_id DESC
</select>
<!--获取微信群打卡基本信息-->
<select id="getInfoByInfoIds" parameterType="list" resultMap="BaseResultMapDTO">
SELECT <include refid="Base_Column_List"/>
FROM
book_group_clock
WHERE book_clock_info_id IN
<foreach collection="list" open="(" item="item" close=")" separator=",">
${item}
</foreach>
</select>
<!--取消关联-->
<delete id="cancelSelected" parameterType="map">
DELETE FROM book_group_clock
WHERE book_clock_info_id = #{bookClockInfoId}
AND book_group_id = #{bookGroupId}
AND classify_id = #{classifyId}
</delete>
</mapper>
\ No newline at end of file
...@@ -19,6 +19,22 @@ ...@@ -19,6 +19,22 @@
<result column="is_delete" property="isDelete" jdbcType="TINYINT"/> <result column="is_delete" property="isDelete" jdbcType="TINYINT"/>
</resultMap> </resultMap>
<resultMap id="BaseResultMapDTO" type="com.pcloud.book.group.dto.ClassifyDTO">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="book_id" property="bookId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="BIGINT"/>
<result column="book_group_id" property="bookGroupId" jdbcType="BIGINT"/>
<result column="classify" property="classify" jdbcType="VARCHAR"/>
<result column="classify_introduce" property="classifyIntroduce" jdbcType="VARCHAR"/>
<result column="rank" property="rank" jdbcType="BIGINT"/>
<result column="price" property="price" jdbcType="DECIMAL"/>
<result column="product_id" property="productId" jdbcType="BIGINT"/>
<result column="product_spec_id" property="productSpecId" jdbcType="BIGINT"/>
<result column="change_number" property="changeNumber" jdbcType="BIGINT"/>
<result column="book_group_name" property="bookGroupName" jdbcType="VARCHAR"/>
<result column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
</resultMap>
<insert id="insert" parameterType="BookGroupClassify" useGeneratedKeys="true" <insert id="insert" parameterType="BookGroupClassify" useGeneratedKeys="true"
keyProperty="id"> keyProperty="id">
INSERT INTO book_group_classify INSERT INTO book_group_classify
...@@ -602,4 +618,89 @@ ...@@ -602,4 +618,89 @@
) and is_delete = 0 ) and is_delete = 0
</select> </select>
<!--获取社群书分类列表(编辑)-->
<select id="listSimpleBookGroupClassify4Adviser" parameterType="map" resultMap="BaseResultMapDTO">
SELECT
bgc.id,
bgc.book_id,
bgc.book_group_id,
bgc.classify,
bg.group_qrcode_name book_group_name
FROM
book_group_classify bgc
LEFT JOIN book_group bg ON bgc.book_group_id = bg.id
WHERE
bgc.create_user = #{adviserId}
<if test="classify != null">
AND bgc.classify LIKE CONCAT('%', #{classify},'%')
</if>
<if test="bookGroupIds != null and bookGroupIds.size > 0">
AND bgc.book_group_id NOT IN
<foreach collection="bookGroupIds" separator="," item="item" close=")" open="(">
${item}
</foreach>
</if>
</select>
<!--获取分类名称及对应社群码名称-->
<select id="getNameWithBookNameByIds" parameterType="list" resultMap="BaseResultMapDTO">
SELECT
bgc.id,
bgc.book_id,
bgc.book_group_id,
bgc.classify,
bg.group_qrcode_name book_group_name
FROM
book_group_classify bgc
LEFT JOIN book_group bg ON bgc.book_group_id = bg.id
WHERE bgc.id IN
<foreach collection="list" open="(" separator="," item="item" close=")">
${item}
</foreach>
</select>
<!--获取书下面分类ID集合-->
<select id="getIdByBookGroupIds" parameterType="list" resultType="long">
SELECT
DISTINCT(id)
FROM
book_group_classify
WHERE
book_group_id IN
<foreach collection="list" open="(" close=")" item="item" separator=",">
${item}
</foreach>
</select>
<!--获取书下面分类ID集合-->
<select id="getClassifyIdsByBookGroupIds" parameterType="list" resultType="map">
SELECT
book_group_id bookGroupId,id
FROM
book_group_classify
WHERE
book_group_id IN
<foreach collection="list" open="(" close=")" item="item" separator=",">
${item}
</foreach>
</select>
<!--获取分类名称及对应社群码名称-->
<select id="getNameWithBookClockInfoIdByIds" parameterType="map" resultMap="BaseResultMapDTO">
SELECT
bgc.id,
bgc.book_id,
bgc.book_group_id,
bgc.classify,
bg.group_qrcode_name book_group_name,
#{bookClockInfoId} book_clock_info_id
FROM
book_group_classify bgc
LEFT JOIN book_group bg ON bgc.book_group_id = bg.id
WHERE bgc.id IN
<foreach collection="list" open="(" separator="," item="item" close=")">
${item}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -39,6 +39,8 @@ ...@@ -39,6 +39,8 @@
<result column="is_delete" property="isDelete" jdbcType="BIT"/> <result column="is_delete" property="isDelete" jdbcType="BIT"/>
<result column="book_img" property="bookImg" jdbcType="VARCHAR"/> <result column="book_img" property="bookImg" jdbcType="VARCHAR"/>
<result column="isbn" property="isbn" jdbcType="VARCHAR"/> <result column="isbn" property="isbn" jdbcType="VARCHAR"/>
<result column="BOOK_NAME" property="bookName" jdbcType="VARCHAR"/>
<result column="book_clock_info_id" property="bookClockInfoId" jdbcType="BIGINT"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
...@@ -251,7 +253,8 @@ ...@@ -251,7 +253,8 @@
bg.book_id, bg.book_id,
bg.group_qrcode_name, bg.group_qrcode_name,
b.COVER_IMG book_img, b.COVER_IMG book_img,
b.ISBN b.ISBN,
b.BOOK_NAME
FROM FROM
book_group bg book_group bg
LEFT JOIN book b ON bg.book_id = b.BOOK_ID LEFT JOIN book b ON bg.book_id = b.BOOK_ID
...@@ -274,4 +277,23 @@ ...@@ -274,4 +277,23 @@
from book_special_agent from book_special_agent
where agent_id = #{_parameter} where agent_id = #{_parameter}
</select> </select>
<!--获取社群码基本信息(包括书籍信息,及BookClockInfoId)-->
<select id="getBookInfoByIdsWithBookClockInfoId" parameterType="map" resultMap="BookGroupDTO">
SELECT
bg.id,
bg.book_id,
bg.group_qrcode_name,
b.COVER_IMG book_img,
b.ISBN,
b.BOOK_NAME,
#{bookClockInfoId} book_clock_info_id
FROM
book_group bg
LEFT JOIN book b ON bg.book_id = b.BOOK_ID
where id in
<foreach collection="bookGroupIdList" open="(" close=")" item="item" separator=",">
${item}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -275,4 +275,27 @@ ...@@ -275,4 +275,27 @@
select <include refid="Base_Column_List"/> from book_group_qrcode select <include refid="Base_Column_List"/> from book_group_qrcode
where is_delete=0 and weixin_group_id=#{wechatGroupId} limit 1 where is_delete=0 and weixin_group_id=#{wechatGroupId} limit 1
</select> </select>
<select id="countByClassifyIds" parameterType="list" resultType="java.lang.Integer">
select count(1) from book_group_qrcode
where
is_delete = 0
AND classify_Id in
<foreach collection = "list" index="index" item = "item" open = "(" separator= "," close = ")">
${item}
</foreach>
</select>
<!--根据群分类id集合查询群id集合-->
<select id="getWeixinGroupIdsByClassifyIdList" parameterType="Long" resultType="String">
SELECT
DISTINCT t.weixin_group_id
FROM
book_group_qrcode t
WHERE
classify_id IN
<foreach collection="list" separator="," close=")" item="item" open="(">
${item}
</foreach>
</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