Commit ea8cb2cd by zhuyajie

音视频独立

parent f6d45231
package com.pcloud.book.base.dto;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("回复统一参数")
public class ReplyParamDTO extends BaseDto {
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer replyType;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("图片地址")
private String picUrl;
@ApiModelProperty("应用或作品id")
private Long serveId;
@ApiModelProperty("应用或作品类型")
private String serveType;
@ApiModelProperty("链接地址")
private String linkUrl;
@ApiModelProperty("资源id")
private Long resourceId;
@ApiModelProperty("描述")
private String description;
}
...@@ -14,4 +14,6 @@ public class PcloudGuideMessageVO implements Serializable { ...@@ -14,4 +14,6 @@ public class PcloudGuideMessageVO implements Serializable {
private String content; private String content;
private String picUrl; private String picUrl;
private Long resourceId;
} }
package com.pcloud.book.guide.biz; package com.pcloud.book.guide.biz;
import com.pcloud.book.guide.dto.PcloudGuideDTO;
import com.pcloud.book.guide.vo.*; import com.pcloud.book.guide.vo.*;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
...@@ -11,9 +12,9 @@ public interface PcloudGuideBiz { ...@@ -11,9 +12,9 @@ public interface PcloudGuideBiz {
void updatePcloudGuide(UpdatePcloudGuideVO updatePcloudGuideVO); void updatePcloudGuide(UpdatePcloudGuideVO updatePcloudGuideVO);
PcloudGuideVO getPcloudGuide(Integer pcloudGuideId); PcloudGuideDTO getPcloudGuide(Integer pcloudGuideId);
PageBeanNew<PcloudGuideVO> listPcloudGuide(Integer currentPage, Integer numPerPage, String robotWxId, String search, Integer pcloudClassfyId); PageBeanNew<PcloudGuideDTO> listPcloudGuide(Integer currentPage, Integer numPerPage, String robotWxId, String search, Integer pcloudClassfyId);
void updateSeqNum(UpdateSeqNumVO updateSeqNumVO); void updateSeqNum(UpdateSeqNumVO updateSeqNumVO);
......
package com.pcloud.book.guide.biz.impl; package com.pcloud.book.guide.biz.impl;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.guide.biz.PcloudGuideBiz; import com.pcloud.book.guide.biz.PcloudGuideBiz;
import com.pcloud.book.guide.dto.PcloudGuideDTO;
import com.pcloud.book.guide.dto.PcloudGuideMessageDTO;
import com.pcloud.book.guide.entity.PcloudGuide; import com.pcloud.book.guide.entity.PcloudGuide;
import com.pcloud.book.guide.entity.PcloudGuideMessage; import com.pcloud.book.guide.entity.PcloudGuideMessage;
import com.pcloud.book.guide.entity.PcloudRobotSilence; import com.pcloud.book.guide.entity.PcloudRobotSilence;
...@@ -9,16 +12,21 @@ import com.pcloud.book.guide.mapper.PcloudGuideMapper; ...@@ -9,16 +12,21 @@ import com.pcloud.book.guide.mapper.PcloudGuideMapper;
import com.pcloud.book.guide.mapper.PcloudGuideMessageMapper; import com.pcloud.book.guide.mapper.PcloudGuideMessageMapper;
import com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper; import com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper;
import com.pcloud.book.guide.vo.*; import com.pcloud.book.guide.vo.*;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.utils.BeanUtils; import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component("pcloudGuideBiz") @Component("pcloudGuideBiz")
public class PcloudGuideBizImpl implements PcloudGuideBiz { public class PcloudGuideBizImpl implements PcloudGuideBiz {
...@@ -32,6 +40,9 @@ public class PcloudGuideBizImpl implements PcloudGuideBiz { ...@@ -32,6 +40,9 @@ public class PcloudGuideBizImpl implements PcloudGuideBiz {
@Autowired @Autowired
private PcloudRobotSilenceMapper pcloudRobotSilenceMapper; private PcloudRobotSilenceMapper pcloudRobotSilenceMapper;
@Autowired
private ResourceConsr resourceConsr;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Integer addPcloudGuide(CreatePcloudGuideVO createPcloudGuideVO) { public Integer addPcloudGuide(CreatePcloudGuideVO createPcloudGuideVO) {
...@@ -100,30 +111,77 @@ public class PcloudGuideBizImpl implements PcloudGuideBiz { ...@@ -100,30 +111,77 @@ public class PcloudGuideBizImpl implements PcloudGuideBiz {
} }
@Override @Override
public PcloudGuideVO getPcloudGuide(Integer pcloudGuideId) { public PcloudGuideDTO getPcloudGuide(Integer pcloudGuideId) {
PcloudGuideVO pcloudGuideVO = new PcloudGuideVO(); PcloudGuideDTO pcloudGuideVO = new PcloudGuideDTO();
PcloudGuide pcloudGuide = pcloudGuideMapper.selectByPrimaryKey(pcloudGuideId); PcloudGuide pcloudGuide = pcloudGuideMapper.selectByPrimaryKey(pcloudGuideId);
if (null != pcloudGuide) { if (null != pcloudGuide) {
pcloudGuideVO.setPcloudGuideId(pcloudGuideId); pcloudGuideVO.setPcloudGuideId(pcloudGuideId);
pcloudGuideVO.setSeqNum(pcloudGuide.getSeqNum()); pcloudGuideVO.setSeqNum(pcloudGuide.getSeqNum());
pcloudGuideVO.setTimeSpan(pcloudGuide.getTimeSpan()); pcloudGuideVO.setTimeSpan(pcloudGuide.getTimeSpan());
List<PcloudGuideMessageVO> list = pcloudGuideMessageMapper.listByGuideId(pcloudGuideId); List<PcloudGuideMessageVO> list = pcloudGuideMessageMapper.listByGuideId(pcloudGuideId);
pcloudGuideVO.setMessageVOList(list); List<PcloudGuideMessageDTO> messageDTOS = new ArrayList<>();
if (!ListUtils.isEmpty(list)){
for (PcloudGuideMessageVO messageVO: list){
PcloudGuideMessageDTO messageDTO = new PcloudGuideMessageDTO();
BeanUtils.copyProperties(messageVO, messageDTO);
messageDTOS.add(messageDTO);
}
}
fillFile(messageDTOS);
pcloudGuideVO.setMessageDTOS(messageDTOS);
} }
return pcloudGuideVO; return pcloudGuideVO;
} }
private void fillFile(List<PcloudGuideMessageDTO> list){
if (ListUtils.isEmpty(list)){
return;
}
List<Long> resourceIds = list.stream().filter(s->s.getReplyType().equals(ReplyTypeEnum.RESOURCE.value)).map(PcloudGuideMessageDTO::getResourceId).distinct().collect(Collectors.toList());
Map<Long, ResourceDTO> resourceDTOMap=new HashMap<>();
if (!ListUtils.isEmpty(resourceIds)){
resourceDTOMap = resourceConsr.mapByIds(resourceIds);
}
for (PcloudGuideMessageDTO messageDTO:list){
if (ReplyTypeEnum.RESOURCE.value.equals(messageDTO.getReplyType())){
ResourceDTO resourceDTO = resourceDTOMap.get(messageDTO.getResourceId());
if (resourceDTO!=null){
messageDTO.setResourceName(resourceDTO.getResourceName());
messageDTO.setResourceUrl(resourceDTO.getFileUrl());
messageDTO.setResourceTypeCode(resourceDTO.getTypeCode());
messageDTO.setResourceTypeName(resourceDTO.getTypeName());
messageDTO.setFileType(resourceDTO.getFileType());
messageDTO.setResourcePdfItems(resourceDTO.getResourcePdfItems());
messageDTO.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
messageDTO.setFileSize(resourceDTO.getFileSize());
}
}
}
}
@Override @Override
public PageBeanNew<PcloudGuideVO> listPcloudGuide(Integer currentPage, Integer numPerPage, String robotWxId, String search, Integer pcloudClassfyId) { public PageBeanNew<PcloudGuideDTO> listPcloudGuide(Integer currentPage, Integer numPerPage, String robotWxId, String search, Integer pcloudClassfyId) {
Integer count = pcloudGuideMapper.getCount(robotWxId, search, pcloudClassfyId); Integer count = pcloudGuideMapper.getCount(robotWxId, search, pcloudClassfyId);
List<PcloudGuideVO> list = new ArrayList<>(); List<PcloudGuideDTO> list = new ArrayList<>();
if (count <= 0) { if (count <= 0) {
return new PageBeanNew<>(currentPage, numPerPage, list); return new PageBeanNew<PcloudGuideDTO>(currentPage, numPerPage, list);
} }
list = pcloudGuideMapper.listPcloudGuide(currentPage * numPerPage, numPerPage, robotWxId, search, pcloudClassfyId); list = pcloudGuideMapper.listPcloudGuide(currentPage * numPerPage, numPerPage, robotWxId, search, pcloudClassfyId);
list.forEach(item -> { if (!ListUtils.isEmpty(list)){
item.setMessageVOList(pcloudGuideMessageMapper.listByGuideId(item.getPcloudGuideId())); for (PcloudGuideDTO guideDTO : list){
}); List<PcloudGuideMessageDTO> messageDTOS = new ArrayList<>();
List<PcloudGuideMessageVO> messageList=pcloudGuideMessageMapper.listByGuideId(guideDTO.getPcloudGuideId());
if (!ListUtils.isEmpty(messageList)){
for (PcloudGuideMessageVO messageVO: messageList){
PcloudGuideMessageDTO messageDTO = new PcloudGuideMessageDTO();
BeanUtils.copyProperties(messageVO, messageDTO);
messageDTOS.add(messageDTO);
}
fillFile(messageDTOS);
}
guideDTO.setMessageDTOS(messageDTOS);
}
}
return new PageBeanNew<>(currentPage, numPerPage, count, list); return new PageBeanNew<>(currentPage, numPerPage, count, list);
} }
......
package com.pcloud.book.guide.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class PcloudGuideDTO implements Serializable {
private Integer pcloudGuideId;
private Integer type;
private Integer timeSpan;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private List<PcloudGuideMessageDTO> messageDTOS;
private Integer seqNum;
}
package com.pcloud.book.guide.dto;
import com.pcloud.common.dto.BaseDto;
import com.pcloud.contentcenter.resource.dto.ResourceOfficeItemDTO;
import com.pcloud.contentcenter.resource.dto.ResourcePdfItemDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Size;
import java.util.List;
@Data
public class PcloudGuideMessageDTO extends BaseDto {
private Integer replyType;
@Size(max = 500)
private String content;
private String picUrl;
@ApiModelProperty("资源id")
private Long resourceId;
@ApiModelProperty("资源链接")
private String resourceUrl;
@ApiModelProperty("资源名称")
private String resourceName;
@ApiModelProperty("资源类型编码")
private String resourceTypeCode;
@ApiModelProperty("资源类型名称")
private String resourceTypeName;
@ApiModelProperty("文件类型")
private String fileType;
@ApiModelProperty("pdf转码后的单张图片集合")
private List<ResourcePdfItemDTO> resourcePdfItems;
@ApiModelProperty("文件转码后的单张图片集合")
private List<ResourceOfficeItemDTO> resourceOfficeItemDTOs;
@ApiModelProperty("文件大小")
private Long fileSize;
}
...@@ -20,4 +20,5 @@ public class PcloudGuideMessage { ...@@ -20,4 +20,5 @@ public class PcloudGuideMessage {
private Date updateTime; private Date updateTime;
private Long resourceId;
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.pcloud.book.guide.facade.impl; ...@@ -2,6 +2,7 @@ package com.pcloud.book.guide.facade.impl;
import com.pcloud.book.guide.biz.PcloudGuideBiz; import com.pcloud.book.guide.biz.PcloudGuideBiz;
import com.pcloud.book.guide.dto.PcloudGuideDTO;
import com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper; import com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper;
import com.pcloud.book.guide.vo.Create4ClassifyVO; import com.pcloud.book.guide.vo.Create4ClassifyVO;
import com.pcloud.book.guide.vo.Create4RobotVO; import com.pcloud.book.guide.vo.Create4RobotVO;
...@@ -72,7 +73,7 @@ public class PcloudGuideFacadeImpl { ...@@ -72,7 +73,7 @@ public class PcloudGuideFacadeImpl {
@RequestParam(value = "robotWxId", required = false) String robotWxId, @RequestParam(value = "search", required = false) String search, @RequestParam(value = "robotWxId", required = false) String robotWxId, @RequestParam(value = "search", required = false) String search,
@RequestParam(value = "pcloudClassfyId", required = false) Integer pcloudClassfyId) throws PermissionException { @RequestParam(value = "pcloudClassfyId", required = false) Integer pcloudClassfyId) throws PermissionException {
SessionUtil.getInfoToken4Redis(token); SessionUtil.getInfoToken4Redis(token);
PageBeanNew<PcloudGuideVO> page = pcloudGuideBiz.listPcloudGuide(currentPage, numPerPage, robotWxId, search, pcloudClassfyId); PageBeanNew<PcloudGuideDTO> page = pcloudGuideBiz.listPcloudGuide(currentPage, numPerPage, robotWxId, search, pcloudClassfyId);
return new ResponseDto<>(page); return new ResponseDto<>(page);
} }
......
package com.pcloud.book.guide.mapper; package com.pcloud.book.guide.mapper;
import com.pcloud.book.guide.dto.PcloudGuideDTO;
import com.pcloud.book.guide.entity.PcloudGuide; import com.pcloud.book.guide.entity.PcloudGuide;
import com.pcloud.book.guide.vo.PcloudGuideVO; import com.pcloud.book.guide.vo.PcloudGuideVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -25,8 +26,8 @@ public interface PcloudGuideMapper { ...@@ -25,8 +26,8 @@ public interface PcloudGuideMapper {
Integer getCount(@Param("robotWxId") String robotWxId, @Param("search") String search, @Param("pcloudClassifyId") Integer pcloudClassifyId); Integer getCount(@Param("robotWxId") String robotWxId, @Param("search") String search, @Param("pcloudClassifyId") Integer pcloudClassifyId);
List<PcloudGuideVO> listPcloudGuide(@Param("pageNum") Integer pageNum, @Param("numPerPage") Integer numPerPage, List<PcloudGuideDTO> listPcloudGuide(@Param("pageNum") Integer pageNum, @Param("numPerPage") Integer numPerPage,
@Param("robotWxId") String robotWxId, @Param("search") String search, @Param("pcloudClassifyId") Integer pcloudClassifyId); @Param("robotWxId") String robotWxId, @Param("search") String search, @Param("pcloudClassifyId") Integer pcloudClassifyId);
void updateSeqNum(@Param("id") Integer pcloudGuideId, @Param("seqNum") Integer seqNum); void updateSeqNum(@Param("id") Integer pcloudGuideId, @Param("seqNum") Integer seqNum);
......
package com.pcloud.book.guide.runner; package com.pcloud.book.guide.runner;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.guide.dto.PcloudGuideDelayDto; import com.pcloud.book.guide.dto.PcloudGuideDelayDto;
import com.pcloud.book.guide.entity.PcloudGuide; import com.pcloud.book.guide.entity.PcloudGuide;
import com.pcloud.book.guide.mapper.PcloudGuideMapper; import com.pcloud.book.guide.mapper.PcloudGuideMapper;
...@@ -12,6 +13,8 @@ import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO; ...@@ -12,6 +13,8 @@ import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao; import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.sdk.wxgroup.SendFileVO;
import com.sdk.wxgroup.SendPicMessageVO; import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO; import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK; import com.sdk.wxgroup.WxGroupSDK;
...@@ -21,10 +24,7 @@ import org.springframework.boot.ApplicationArguments; ...@@ -21,10 +24,7 @@ import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.PCLOUD_GUIDE_LOCK; import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.PCLOUD_GUIDE_LOCK;
import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.PCLOUD_GUIDE_SUFFIX; import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.PCLOUD_GUIDE_SUFFIX;
...@@ -44,7 +44,8 @@ public class PcloudGuideSilenceRunnerImpl implements ApplicationRunner { ...@@ -44,7 +44,8 @@ public class PcloudGuideSilenceRunnerImpl implements ApplicationRunner {
private PcloudGuideMessageMapper pcloudGuideMessageMapper; private PcloudGuideMessageMapper pcloudGuideMessageMapper;
@Autowired @Autowired
private PcloudRobotDao pcloudRobotDao; private PcloudRobotDao pcloudRobotDao;
@Autowired
private ResourceConsr resourceConsr;
@Override @Override
public void run(ApplicationArguments applicationArguments) throws Exception { public void run(ApplicationArguments applicationArguments) throws Exception {
...@@ -100,6 +101,26 @@ public class PcloudGuideSilenceRunnerImpl implements ApplicationRunner { ...@@ -100,6 +101,26 @@ public class PcloudGuideSilenceRunnerImpl implements ApplicationRunner {
sendPicMessageVO.setCode(pcloudGuideDelayDto.getCode()); sendPicMessageVO.setCode(pcloudGuideDelayDto.getCode());
WxGroupSDK.sendPicMessage(sendPicMessageVO); WxGroupSDK.sendPicMessage(sendPicMessageVO);
} }
if (ReplyTypeEnum.RESOURCE.value.equals(replyType)) {
SendFileVO sendFileVO = new SendFileVO();
Map<Long, ResourceDTO> map = resourceConsr.mapByIds(Arrays.asList(message.getResourceId()));
ResourceDTO resourceDTO = map.get(message.getResourceId());
if (resourceDTO != null) {
sendFileVO.setFileUrl(resourceDTO.getFileUrl());
String fileName = resourceDTO.getResourceName();
String fileType = resourceDTO.getFileType();
log.info("fileName=" + fileName + "+fileType+" + fileType);
if (fileName.contains(fileType)) {//去掉后缀
fileName = fileName.substring(0, fileName.indexOf(fileType) - 1);
}
log.info("fileName=" + fileName);
sendFileVO.setFileName(fileName);
}
sendFileVO.setIp(pcloudGuideDelayDto.getIp());
sendFileVO.setAltId(pcloudGuideDelayDto.getRobotWxId());
sendFileVO.setWxId(userId);
WxGroupSDK.sendFile(sendFileVO);
}
} }
// 向缓存中写入下一条 // 向缓存中写入下一条
......
...@@ -21,9 +21,6 @@ public class SelfRobotKeyword extends BaseEntity { ...@@ -21,9 +21,6 @@ public class SelfRobotKeyword extends BaseEntity {
@ApiModelProperty("社群码id") @ApiModelProperty("社群码id")
private Long bookGroupId; private Long bookGroupId;
// @ApiModelProperty("引导语")
private String guide;
@ApiModelProperty("关键词") @ApiModelProperty("关键词")
private String keyword; private String keyword;
......
...@@ -245,7 +245,12 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz { ...@@ -245,7 +245,12 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
} else if (WelcomeReplyTypeEnum.RESOURCE.value.equals(replyType)) { } else if (WelcomeReplyTypeEnum.RESOURCE.value.equals(replyType)) {
SendFileVO sendFileVO = new SendFileVO(); SendFileVO sendFileVO = new SendFileVO();
sendFileVO.setFileUrl(robotWelcome.getResourceUrl()); sendFileVO.setFileUrl(robotWelcome.getResourceUrl());
sendFileVO.setFileName(robotWelcome.getResourceName()); String fileName = robotWelcome.getResourceName();
String fileType = robotWelcome.getFileType();
if (fileName.contains(fileType)) {//去掉后缀
fileName = fileName.substring(0, fileName.indexOf(fileType) - 1);
}
sendFileVO.setFileName(fileName);
sendFileVO.setIp(ip); sendFileVO.setIp(ip);
sendFileVO.setAltId(robotWxId); sendFileVO.setAltId(robotWxId);
sendFileVO.setWxId(userWxId); sendFileVO.setWxId(userWxId);
...@@ -388,6 +393,7 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz { ...@@ -388,6 +393,7 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ParamLog("全局退订回复")
public void handlePcloudTdReply(SendTextDTO sendTextDTO) { public void handlePcloudTdReply(SendTextDTO sendTextDTO) {
String robotWxId = sendTextDTO.getWxId(); String robotWxId = sendTextDTO.getWxId();
String userWxId = sendTextDTO.getWechatUserId(); String userWxId = sendTextDTO.getWechatUserId();
...@@ -559,9 +565,14 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz { ...@@ -559,9 +565,14 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
sendPicMessageVO.setCode(SendMessageTypeEnum.SELF.getCode()); sendPicMessageVO.setCode(SendMessageTypeEnum.SELF.getCode());
WxGroupSDK.sendPicMessage(sendPicMessageVO); WxGroupSDK.sendPicMessage(sendPicMessageVO);
} else if(WelcomeReplyTypeEnum.RESOURCE.value.equals(replyType)) { } else if(WelcomeReplyTypeEnum.RESOURCE.value.equals(replyType)) {
String fileName = tdReplyDTO.getResourceName();
String fileType = tdReplyDTO.getFileType();
if (fileName.contains(fileType)) {//去掉后缀
fileName = fileName.substring(0, fileName.indexOf(fileType) - 1);
}
SendFileVO sendFileVO = new SendFileVO(); SendFileVO sendFileVO = new SendFileVO();
sendFileVO.setFileUrl(tdReplyDTO.getResourceUrl()); sendFileVO.setFileUrl(tdReplyDTO.getResourceUrl());
sendFileVO.setFileName(tdReplyDTO.getResourceName()); sendFileVO.setFileName(fileName);
sendFileVO.setIp(ip); sendFileVO.setIp(ip);
sendFileVO.setAltId(robotWxId); sendFileVO.setAltId(robotWxId);
sendFileVO.setWxId(userWxId); sendFileVO.setWxId(userWxId);
......
...@@ -73,9 +73,10 @@ public class PcloudKeywordCheck { ...@@ -73,9 +73,10 @@ public class PcloudKeywordCheck {
if (reply==null){ if (reply==null){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"回复为空!"); throw new BookBizException(BookBizException.PARAM_IS_NULL,"回复为空!");
} }
if (reply.getType()==null){ if (reply.getReplyType()==null){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"回复类型为空!"); throw new BookBizException(BookBizException.PARAM_IS_NULL,"回复类型为空!");
} }
reply.setType(reply.getReplyType());
if (ReplyTypeEnum.TEXT.value.equals(reply.getType())&&StringUtil.isEmpty(reply.getContent())){ if (ReplyTypeEnum.TEXT.value.equals(reply.getType())&&StringUtil.isEmpty(reply.getContent())){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"回复内容为空!"); throw new BookBizException(BookBizException.PARAM_IS_NULL,"回复内容为空!");
} }
......
...@@ -17,6 +17,9 @@ public class PcloudKeywordReply extends BaseEntity { ...@@ -17,6 +17,9 @@ public class PcloudKeywordReply extends BaseEntity {
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材") @ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer type; private Integer type;
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer replyType;
@ApiModelProperty("内容") @ApiModelProperty("内容")
private String content; private String content;
......
...@@ -19,7 +19,7 @@ public class PcloudRobotWelcome extends BaseEntity { ...@@ -19,7 +19,7 @@ public class PcloudRobotWelcome extends BaseEntity {
@ApiModelProperty("全平台分类id") @ApiModelProperty("全平台分类id")
private Long pcloudClassifyId; private Long pcloudClassifyId;
@ApiModelProperty("类型 1 文字 2 图片 3音频 4PDF") @ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer replyType; private Integer replyType;
@ApiModelProperty("内容") @ApiModelProperty("内容")
......
package com.pcloud.book.push.biz.impl; package com.pcloud.book.push.biz.impl;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.consumer.user.PartyConsr; import com.pcloud.book.consumer.user.PartyConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.dao.BookGroupCipherUserDao; import com.pcloud.book.group.dao.BookGroupCipherUserDao;
...@@ -11,6 +12,8 @@ import com.pcloud.book.group.dto.SelfRobotBookGroupDTO; ...@@ -11,6 +12,8 @@ import com.pcloud.book.group.dto.SelfRobotBookGroupDTO;
import com.pcloud.book.group.entity.WeixinQrcodeGeneration; import com.pcloud.book.group.entity.WeixinQrcodeGeneration;
import com.pcloud.book.group.set.GroupSet; import com.pcloud.book.group.set.GroupSet;
import com.pcloud.book.group.vo.UserBookInfoVO; import com.pcloud.book.group.vo.UserBookInfoVO;
import com.pcloud.book.guide.dto.PcloudGuideMessageDTO;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO; import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz; import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.push.biz.SelfPushBiz; import com.pcloud.book.push.biz.SelfPushBiz;
...@@ -33,6 +36,7 @@ import com.pcloud.common.page.PageParam; ...@@ -33,6 +36,7 @@ import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.pcloud.facade.quartz.entity.CallBackParam; import com.pcloud.facade.quartz.entity.CallBackParam;
import com.pcloud.facade.quartz.entity.ScheduleJob; import com.pcloud.facade.quartz.entity.ScheduleJob;
import com.pcloud.facade.quartz.service.ScheduleService; import com.pcloud.facade.quartz.service.ScheduleService;
...@@ -86,6 +90,8 @@ public class SelfPushBizImpl implements SelfPushBiz { ...@@ -86,6 +90,8 @@ public class SelfPushBizImpl implements SelfPushBiz {
private PartyConsr partyConsr; private PartyConsr partyConsr;
@Autowired @Autowired
private PcloudRobotBiz pcloudRobotBiz; private PcloudRobotBiz pcloudRobotBiz;
@Autowired
private ResourceConsr resourceConsr;
private static final String self_push_SCHEDULE_PRE = "self_push_"; private static final String self_push_SCHEDULE_PRE = "self_push_";
...@@ -405,6 +411,26 @@ public class SelfPushBizImpl implements SelfPushBiz { ...@@ -405,6 +411,26 @@ public class SelfPushBizImpl implements SelfPushBiz {
WxGroupSDK.sendPicMessage(sendPicMessageVO); WxGroupSDK.sendPicMessage(sendPicMessageVO);
return; return;
} }
if (ItemTypeEnum.RESOURCE.value.equals(itemType)) {
SendFileVO sendFileVO = new SendFileVO();
Map<Long, ResourceDTO> map = resourceConsr.mapByIds(Arrays.asList(selfPushItem.getResourceId()));
ResourceDTO resourceDTO = map.get(selfPushItem.getResourceId());
if (resourceDTO != null) {
sendFileVO.setFileUrl(resourceDTO.getFileUrl());
String fileName = resourceDTO.getResourceName();
String fileType = resourceDTO.getFileType();
log.info("fileName=" + fileName + "+fileType+" + fileType);
if (fileName.contains(fileType)) {//去掉后缀
fileName = fileName.substring(0, fileName.indexOf(fileType) - 1);
}
log.info("fileName=" + fileName);
sendFileVO.setFileName(fileName);
}
sendFileVO.setIp(getIpByRobot(altId));
sendFileVO.setAltId(altId);
sendFileVO.setWxId(userWxId);
WxGroupSDK.sendFile(sendFileVO);
}
} }
/** /**
...@@ -484,6 +510,7 @@ public class SelfPushBizImpl implements SelfPushBiz { ...@@ -484,6 +510,7 @@ public class SelfPushBizImpl implements SelfPushBiz {
dto.setRealSendTime(DateUtils.formatDate(dto.getSendTime(),"yyyy-MM-dd HH:mm:ss")); dto.setRealSendTime(DateUtils.formatDate(dto.getSendTime(),"yyyy-MM-dd HH:mm:ss"));
} }
List<SelfPushItem> selfPushItemList = selfPushItemDao.getByPushId(dto.getPushId()); List<SelfPushItem> selfPushItemList = selfPushItemDao.getByPushId(dto.getPushId());
this.fillItem(selfPushItemList);
dto.setSelfPushItemList(selfPushItemList); dto.setSelfPushItemList(selfPushItemList);
} }
...@@ -535,6 +562,45 @@ public class SelfPushBizImpl implements SelfPushBiz { ...@@ -535,6 +562,45 @@ public class SelfPushBizImpl implements SelfPushBiz {
return pageBeanNew; return pageBeanNew;
} }
private void fillItem(List<SelfPushItem> list) {
if (ListUtils.isEmpty(list)){
return;
}
List<Long> resourceIds = list.stream().filter(s->s.getItemType().equals(ItemTypeEnum.RESOURCE.value)).map(SelfPushItem::getResourceId).distinct().collect(Collectors.toList());
Map<Long, ResourceDTO> resourceDTOMap=new HashMap<>();
if (!ListUtils.isEmpty(resourceIds)){
resourceDTOMap = resourceConsr.mapByIds(resourceIds);
}
for (SelfPushItem selfPushItem:list){
if (ItemTypeEnum.RESOURCE.value.equals(selfPushItem.getItemType())){
selfPushItem.setReplyType(ReplyTypeEnum.RESOURCE.value);
ResourceDTO resourceDTO = resourceDTOMap.get(selfPushItem.getResourceId());
if (resourceDTO!=null){
selfPushItem.setResourceName(resourceDTO.getResourceName());
selfPushItem.setResourceUrl(resourceDTO.getFileUrl());
selfPushItem.setResourceTypeCode(resourceDTO.getTypeCode());
selfPushItem.setResourceTypeName(resourceDTO.getTypeName());
selfPushItem.setFileType(resourceDTO.getFileType());
selfPushItem.setResourcePdfItems(resourceDTO.getResourcePdfItems());
selfPushItem.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
selfPushItem.setFileSize(resourceDTO.getFileSize());
}
}
if (ItemTypeEnum.TEXT.value.equals(selfPushItem.getItemType())){
selfPushItem.setReplyType(ReplyTypeEnum.TEXT.value);
}
if (ItemTypeEnum.LINK.value.equals(selfPushItem.getItemType())){
selfPushItem.setReplyType(ReplyTypeEnum.LINK.value);
}
if (ItemTypeEnum.APP.value.equals(selfPushItem.getItemType())){
selfPushItem.setReplyType(ReplyTypeEnum.APP.value);
}
if (ItemTypeEnum.IMAGE.value.equals(selfPushItem.getItemType())){
selfPushItem.setReplyType(ReplyTypeEnum.IMAGE.value);
}
}
}
@Override @Override
public void sendSelfMsgQuartz(Long pushId) { public void sendSelfMsgQuartz(Long pushId) {
SelfPush selfPush = selfPushDao.getById(pushId); SelfPush selfPush = selfPushDao.getById(pushId);
......
package com.pcloud.book.push.check; package com.pcloud.book.push.check;
import com.pcloud.book.base.dto.ReplyParamDTO;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.push.dto.SelfPushAddParamDTO; import com.pcloud.book.push.dto.SelfPushAddParamDTO;
import com.pcloud.book.push.entity.MorningEveningNews; import com.pcloud.book.push.entity.MorningEveningNews;
import com.pcloud.book.push.entity.Push; import com.pcloud.book.push.entity.Push;
...@@ -334,41 +336,87 @@ public class PushCheck { ...@@ -334,41 +336,87 @@ public class PushCheck {
} }
if (ListUtils.isEmpty(addParamDTO.getPushItemList())) { if (ListUtils.isEmpty(addParamDTO.getReplyParamDTOS())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "发送消息为空"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "发送消息为空");
} }
if (addParamDTO.getPushItemList().size() > 4) { if (addParamDTO.getReplyParamDTOS().size() > 4) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "发送消息数量不能超过4条"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "发送消息数量不能超过4条");
} }
if (!ListUtils.isEmpty(addParamDTO.getUserIdList()) && addParamDTO.getUserIdList().size() > 100) { if (!ListUtils.isEmpty(addParamDTO.getUserIdList()) && addParamDTO.getUserIdList().size() > 100) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "好友数量不能超过100"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "好友数量不能超过100");
} }
for (SelfPushItem pushItem : addParamDTO.getPushItemList()) { for (ReplyParamDTO replyParamDTO : addParamDTO.getReplyParamDTOS()) {
if (pushItem == null) { if (replyParamDTO == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项不能为空!");
} }
if (pushItem.getItemType() == null) { if (replyParamDTO.getReplyType() == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型不能为空!");
} }
if (ItemTypeEnum.TEXT.value.equals(pushItem.getItemType()) && StringUtil.isEmpty(pushItem.getTextContent())) { if (ReplyTypeEnum.TEXT.value.equals(replyParamDTO.getReplyType()) && StringUtil.isEmpty(replyParamDTO.getContent())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为文本时,文本不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为文本时,文本不能为空!");
} }
if (ItemTypeEnum.LINK.value.equals(pushItem.getItemType()) && StringUtil.isEmpty(pushItem.getLinkUrl())) { if (ReplyTypeEnum.LINK.value.equals(replyParamDTO.getReplyType()) && StringUtil.isEmpty(replyParamDTO.getLinkUrl())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为链接时,链接不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为链接时,链接不能为空!");
} }
if (ItemTypeEnum.APP.value.equals(pushItem.getItemType()) && (pushItem.getAppId() == null && pushItem.getProductId() == null)) { if (ReplyTypeEnum.APP.value.equals(replyParamDTO.getReplyType())){
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为应用或作品时,应用id或作品id不能为空!"); if (StringUtil.isEmpty(replyParamDTO.getServeType()) || null ==replyParamDTO.getServeId()
} || StringUtil.isEmpty(replyParamDTO.getLinkUrl())){
if (ItemTypeEnum.APP.value.equals(pushItem.getItemType()) && pushItem.getAppId() != null && StringUtil.isEmpty(pushItem.getAppUrl())) { throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为应用或作品时,id或链接不能为空!");
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为应用时,应用链接不能为空!"); }
}
if (ItemTypeEnum.APP.value.equals(pushItem.getItemType()) && pushItem.getProductId() != null && StringUtil.isEmpty(pushItem.getProductUrl())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为作品时,作品链接不能为空!");
} }
if (ItemTypeEnum.IMAGE.value.equals(pushItem.getItemType()) && StringUtil.isEmpty(pushItem.getImageUrl())) { if (ReplyTypeEnum.IMAGE.value.equals(replyParamDTO.getReplyType()) && StringUtil.isEmpty(replyParamDTO.getPicUrl())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为图片时,图片不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为图片时,图片不能为空!");
} }
if (ReplyTypeEnum.RESOURCE.value.equals(replyParamDTO.getReplyType()) && null == replyParamDTO.getResourceId()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "发送消息项内容类型为文件时,文件id不能为空!");
}
//参数转换
List<SelfPushItem> items = paramChange(addParamDTO.getReplyParamDTOS());
addParamDTO.setPushItemList(items);
} }
} }
/**
* 参数转换
* @param paramDTOS
* @return
*/
List<SelfPushItem> paramChange(List<ReplyParamDTO> paramDTOS){
List<SelfPushItem> itemList = new ArrayList<>();
for (ReplyParamDTO paramDTO : paramDTOS){
SelfPushItem item = new SelfPushItem();
if (ReplyTypeEnum.TEXT.value.equals(paramDTO.getReplyType())){
item.setTextContent(paramDTO.getContent());
item.setItemType(ItemTypeEnum.TEXT.value);
}
if (ReplyTypeEnum.LINK.value.equals(paramDTO.getReplyType())){
item.setLinkUrl(paramDTO.getLinkUrl());
item.setLinkTitle(paramDTO.getContent());
item.setLinkDescription(paramDTO.getDescription());
item.setLinkImageUrl(paramDTO.getPicUrl());
item.setItemType(ItemTypeEnum.LINK.value);
}
if (ReplyTypeEnum.IMAGE.value.equals(paramDTO.getReplyType())){
item.setImageUrl(paramDTO.getPicUrl());
item.setItemType(ItemTypeEnum.IMAGE.value);
}
if (ReplyTypeEnum.RESOURCE.value.equals(paramDTO.getReplyType())){
item.setResourceId(paramDTO.getResourceId());
item.setItemType(ItemTypeEnum.RESOURCE.value);
}
if (ReplyTypeEnum.APP.value.equals(paramDTO.getReplyType())){
if ("APP".equalsIgnoreCase(paramDTO.getServeType())) {
item.setAppId(paramDTO.getServeId());
item.setAppUrl(paramDTO.getLinkUrl());
}
if ("PRODUCT".equalsIgnoreCase(paramDTO.getServeType())){
item.setProductId(paramDTO.getServeId());
item.setProductUrl(paramDTO.getLinkUrl());
}
}
itemList.add(item);
}
return itemList;
}
} }
package com.pcloud.book.push.dto; package com.pcloud.book.push.dto;
import com.pcloud.book.base.dto.ReplyParamDTO;
import com.pcloud.book.push.entity.SelfPushItem; import com.pcloud.book.push.entity.SelfPushItem;
import lombok.Data; import lombok.Data;
...@@ -27,8 +28,10 @@ public class SelfPushAddParamDTO { ...@@ -27,8 +28,10 @@ public class SelfPushAddParamDTO {
private List<String> userIdList; private List<String> userIdList;
/** /**
* 推送信息 * 统一入参
*/ */
private List<ReplyParamDTO> replyParamDTOS;
private List<SelfPushItem> pushItemList; private List<SelfPushItem> pushItemList;
/** /**
* 立即发送 * 立即发送
......
...@@ -124,7 +124,8 @@ public class SelfPushRecordDTO extends BaseDto{ ...@@ -124,7 +124,8 @@ public class SelfPushRecordDTO extends BaseDto{
@ApiModelProperty("小号编号") @ApiModelProperty("小号编号")
private String uniqueNumber; private String uniqueNumber;
@ApiModelProperty("资源id")
private Long resourceId;
} }
...@@ -4,20 +4,27 @@ import com.fasterxml.jackson.annotation.JsonFormat; ...@@ -4,20 +4,27 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity; import com.pcloud.common.entity.BaseEntity;
import java.util.Date; import java.util.Date;
import java.util.List;
import com.pcloud.contentcenter.resource.dto.ResourceOfficeItemDTO;
import com.pcloud.contentcenter.resource.dto.ResourcePdfItemDTO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ApiModel("个人号群发项") @ApiModel("个人号群发项")
@Data
public class SelfPushItem extends BaseEntity{ public class SelfPushItem extends BaseEntity{
@ApiModelProperty("推送id") @ApiModelProperty("推送id")
private Long pushId; private Long pushId;
@ApiModelProperty("推送内容项类型:1文本,2链接,3应用,4图片") @ApiModelProperty("推送内容项类型:1文本,2链接,3应用,4图片5素材")
private Integer itemType; private Integer itemType;
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer replyType;
@ApiModelProperty("文本内容") @ApiModelProperty("文本内容")
private String textContent; private String textContent;
...@@ -69,151 +76,33 @@ public class SelfPushItem extends BaseEntity{ ...@@ -69,151 +76,33 @@ public class SelfPushItem extends BaseEntity{
@ApiModelProperty("发送时间") @ApiModelProperty("发送时间")
private Date sendTime; private Date sendTime;
public Long getPushId() { @ApiModelProperty("资源id")
return pushId; private Long resourceId;
}
public void setPushId(Long pushId) { @ApiModelProperty("资源链接")
this.pushId = pushId; private String resourceUrl;
}
public Integer getItemType() { @ApiModelProperty("资源名称")
return itemType; private String resourceName;
}
public void setItemType(Integer itemType) { @ApiModelProperty("资源类型编码")
this.itemType = itemType; private String resourceTypeCode;
}
public String getTextContent() { @ApiModelProperty("资源类型名称")
return textContent; private String resourceTypeName;
}
public void setTextContent(String textContent) { @ApiModelProperty("文件类型")
this.textContent = textContent; private String fileType;
}
public String getLinkUrl() { @ApiModelProperty("pdf转码后的单张图片集合")
return linkUrl; private List<ResourcePdfItemDTO> resourcePdfItems;
}
public void setLinkUrl(String linkUrl) { @ApiModelProperty("文件转码后的单张图片集合")
this.linkUrl = linkUrl; private List<ResourceOfficeItemDTO> resourceOfficeItemDTOs;
}
public String getLinkTitle() { @ApiModelProperty("文件大小")
return linkTitle; private Long fileSize;
}
public void setLinkTitle(String linkTitle) {
this.linkTitle = linkTitle;
}
public String getLinkDescription() {
return linkDescription;
}
public void setLinkDescription(String linkDescription) {
this.linkDescription = linkDescription;
}
public String getLinkImageUrl() {
return linkImageUrl;
}
public void setLinkImageUrl(String linkImageUrl) {
this.linkImageUrl = linkImageUrl;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public String getAppUrl() {
return appUrl;
}
public void setAppUrl(String appUrl) {
this.appUrl = appUrl;
}
public String getProductUrl() {
return productUrl;
}
public void setProductUrl(String productUrl) {
this.productUrl = productUrl;
}
public Integer getPushStatus() {
return pushStatus;
}
public void setPushStatus(Integer pushStatus) {
this.pushStatus = pushStatus;
}
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 Date getSendTime() {
return sendTime;
}
public void setSendTime(Date sendTime) {
this.sendTime = sendTime;
}
} }
\ No newline at end of file
...@@ -22,7 +22,11 @@ public enum ItemTypeEnum { ...@@ -22,7 +22,11 @@ public enum ItemTypeEnum {
/** /**
* 图片 * 图片
*/ */
IMAGE(4); IMAGE(4),
/**
* 资源
*/
RESOURCE(5);
public final Integer value; public final Integer value;
......
...@@ -43,9 +43,10 @@ public class PcloudSkillCheck { ...@@ -43,9 +43,10 @@ public class PcloudSkillCheck {
if (null == reply.getSubType()) { if (null == reply.getSubType()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "订阅类型不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "订阅类型不能为空!");
} }
if (null == reply.getType()) { if (null == reply.getReplyType()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "回复类型不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "回复类型不能为空!");
} }
reply.setType(reply.getReplyType());
Integer type = reply.getType(); Integer type = reply.getType();
if (ReplyTypeEnum.TEXT.value.equals(type) && StringUtil.isEmpty(reply.getContent())) { if (ReplyTypeEnum.TEXT.value.equals(type) && StringUtil.isEmpty(reply.getContent())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "内容不能为空!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "内容不能为空!");
......
...@@ -22,6 +22,9 @@ public class PcloudSubReply extends BaseEntity { ...@@ -22,6 +22,9 @@ public class PcloudSubReply extends BaseEntity {
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材") @ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer type; private Integer type;
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
private Integer replyType;
@ApiModelProperty("内容") @ApiModelProperty("内容")
private String content; private String content;
......
...@@ -328,9 +328,15 @@ public class TaskSubscribeBizImpl implements TaskSubscribeBiz { ...@@ -328,9 +328,15 @@ public class TaskSubscribeBizImpl implements TaskSubscribeBiz {
break; break;
case "file" : case "file" :
// 发送文件 // 发送文件
String fileUrl= replyMessage.getFileUrl();
String fileName = replyMessage.getFileName();
String fileType = fileUrl.substring(fileUrl.lastIndexOf("."),fileUrl.length());
if (!StringUtil.isEmpty(fileType) && fileName.contains(fileType)) {//去掉后缀
fileName = fileName.substring(0, fileName.indexOf(fileType) - 1);
}
SendFileVO sendFileVO = new SendFileVO(); SendFileVO sendFileVO = new SendFileVO();
sendFileVO.setFileUrl(replyMessage.getFileUrl()); sendFileVO.setFileUrl(fileUrl);
sendFileVO.setFileName(replyMessage.getFileName()); sendFileVO.setFileName(fileName);
sendFileVO.setIp(ip); sendFileVO.setIp(ip);
sendFileVO.setAltId(robotWxId); sendFileVO.setAltId(robotWxId);
sendFileVO.setWxId(wxUserId); sendFileVO.setWxId(wxUserId);
......
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
) s ) s
</select> </select>
<select id="listPcloudGuide" resultType="com.pcloud.book.guide.vo.PcloudGuideVO"> <select id="listPcloudGuide" resultType="com.pcloud.book.guide.dto.PcloudGuideDTO">
SELECT SELECT
a.id pcloudGuideId, a.id pcloudGuideId,
a.type, a.type,
......
...@@ -9,9 +9,10 @@ ...@@ -9,9 +9,10 @@
<result column="pic_url" property="picUrl" jdbcType="VARCHAR" /> <result column="pic_url" property="picUrl" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="resource_id" property="resourceId" jdbcType="BIGINT"/>
</resultMap> </resultMap>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id, pcloud_guide_id, reply_type, content, pic_url, create_time, update_time id, pcloud_guide_id, reply_type, content, pic_url, create_time, update_time, resource_id
</sql> </sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select select
...@@ -26,10 +27,10 @@ ...@@ -26,10 +27,10 @@
<insert id="insert" parameterType="com.pcloud.book.guide.entity.PcloudGuideMessage" > <insert id="insert" parameterType="com.pcloud.book.guide.entity.PcloudGuideMessage" >
insert into pcloud_guide_message (id, pcloud_guide_id, reply_type, insert into pcloud_guide_message (id, pcloud_guide_id, reply_type,
content, pic_url, create_time, content, pic_url, create_time,
update_time) update_time, resource_id)
values (#{id,jdbcType=INTEGER}, #{pcloudGuideId,jdbcType=INTEGER}, #{replyType,jdbcType=INTEGER}, values (#{id,jdbcType=INTEGER}, #{pcloudGuideId,jdbcType=INTEGER}, #{replyType,jdbcType=INTEGER},
#{content,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{content,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}) #{updateTime,jdbcType=TIMESTAMP}, #{resourceId})
</insert> </insert>
<insert id="insertSelective" parameterType="com.pcloud.book.guide.entity.PcloudGuideMessage" > <insert id="insertSelective" parameterType="com.pcloud.book.guide.entity.PcloudGuideMessage" >
insert into pcloud_guide_message insert into pcloud_guide_message
...@@ -111,16 +112,17 @@ ...@@ -111,16 +112,17 @@
content = #{content,jdbcType=VARCHAR}, content = #{content,jdbcType=VARCHAR},
pic_url = #{picUrl,jdbcType=VARCHAR}, pic_url = #{picUrl,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP}, create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP} update_time = #{updateTime,jdbcType=TIMESTAMP},
resource_id = #{resourceId}
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</update> </update>
<insert id="batchInsert" parameterType="com.pcloud.book.guide.entity.PcloudGuideMessage"> <insert id="batchInsert" parameterType="com.pcloud.book.guide.entity.PcloudGuideMessage">
insert into pcloud_guide_message (pcloud_guide_id, reply_type, insert into pcloud_guide_message (pcloud_guide_id, reply_type,
content, pic_url, create_time) content, pic_url, create_time, resource_id)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.pcloudGuideId}, #{item.replyType}, #{item.content}, #{item.picUrl}, now()) (#{item.pcloudGuideId}, #{item.replyType}, #{item.content}, #{item.picUrl}, now(), #{item.resourceId})
</foreach> </foreach>
</insert> </insert>
...@@ -132,7 +134,8 @@ ...@@ -132,7 +134,8 @@
SELECT SELECT
reply_type replyType, reply_type replyType,
content, content,
pic_url picUrl pic_url picUrl,
resource_id resourceId
FROM FROM
`pcloud_guide_message` `pcloud_guide_message`
WHERE WHERE
...@@ -143,7 +146,8 @@ ...@@ -143,7 +146,8 @@
SELECT SELECT
reply_type replyType, reply_type replyType,
content, content,
pic_url picUrl pic_url picUrl,
resource_id resourceId
FROM FROM
pcloud_guide a pcloud_guide a
LEFT JOIN pcloud_guide_message b ON a.id = b.pcloud_guide_id LEFT JOIN pcloud_guide_message b ON a.id = b.pcloud_guide_id
......
...@@ -21,12 +21,13 @@ ...@@ -21,12 +21,13 @@
<result column="update_user" property="updateUser" jdbcType="BIGINT" /> <result column="update_user" property="updateUser" jdbcType="BIGINT" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="send_time" property="sendTime" jdbcType="TIMESTAMP" /> <result column="send_time" property="sendTime" jdbcType="TIMESTAMP" />
<result column="resource_id" property="resourceId" jdbcType="BIGINT"/>
</resultMap> </resultMap>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id, push_id, item_type, text_content, link_url, link_title, link_description, id, push_id, item_type, text_content, link_url, link_title, link_description,
link_image_url, image_url, app_id, app_url, product_id, product_url, push_status, link_image_url, image_url, app_id, app_url, product_id, product_url, push_status,
create_user, create_time, update_user, update_time, send_time create_user, create_time, update_user, update_time, send_time, resource_id
</sql> </sql>
<insert id="insert" parameterType="com.pcloud.book.push.entity.SelfPushItem" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="com.pcloud.book.push.entity.SelfPushItem" useGeneratedKeys="true" keyProperty="id">
...@@ -35,14 +36,14 @@ ...@@ -35,14 +36,14 @@
link_description, link_image_url, image_url, link_description, link_image_url, image_url,
app_id, app_url, product_id, app_id, app_url, product_id,
product_url, push_status, create_user, product_url, push_status, create_user,
create_time, update_user, update_time, send_time create_time, update_user, update_time, send_time, resource_id
) )
values (#{pushId,jdbcType=BIGINT}, #{itemType,jdbcType=INTEGER}, values (#{pushId,jdbcType=BIGINT}, #{itemType,jdbcType=INTEGER},
#{textContent,jdbcType=VARCHAR}, #{linkUrl,jdbcType=VARCHAR}, #{linkTitle,jdbcType=VARCHAR}, #{textContent,jdbcType=VARCHAR}, #{linkUrl,jdbcType=VARCHAR}, #{linkTitle,jdbcType=VARCHAR},
#{linkDescription,jdbcType=VARCHAR}, #{linkImageUrl,jdbcType=VARCHAR}, #{imageUrl,jdbcType=VARCHAR}, #{linkDescription,jdbcType=VARCHAR}, #{linkImageUrl,jdbcType=VARCHAR}, #{imageUrl,jdbcType=VARCHAR},
#{appId,jdbcType=BIGINT}, #{appUrl,jdbcType=VARCHAR}, #{productId,jdbcType=BIGINT}, #{appId,jdbcType=BIGINT}, #{appUrl,jdbcType=VARCHAR}, #{productId,jdbcType=BIGINT},
#{productUrl,jdbcType=VARCHAR}, #{pushStatus,jdbcType=INTEGER}, #{createUser,jdbcType=BIGINT}, #{productUrl,jdbcType=VARCHAR}, #{pushStatus,jdbcType=INTEGER}, #{createUser,jdbcType=BIGINT},
now(), #{updateUser,jdbcType=BIGINT}, now(), #{sendTime} now(), #{updateUser,jdbcType=BIGINT}, now(), #{sendTime}, #{resourceId}
) )
</insert> </insert>
...@@ -66,7 +67,8 @@ ...@@ -66,7 +67,8 @@
create_time, create_time,
update_user, update_user,
update_time, update_time,
send_time send_time,
resource_id
) values ) values
<foreach collection="list" item="item" index="index" separator=","> <foreach collection="list" item="item" index="index" separator=",">
( (
...@@ -87,7 +89,8 @@ ...@@ -87,7 +89,8 @@
NOW(), NOW(),
#{item.updateUser,jdbcType=BIGINT}, #{item.updateUser,jdbcType=BIGINT},
NOW(), NOW(),
#{item.sendTime} #{item.sendTime},
#{item.resourceId}
) )
</foreach> </foreach>
</insert> </insert>
...@@ -119,7 +122,8 @@ ...@@ -119,7 +122,8 @@
p.end_time endTime, p.end_time endTime,
p.push_send_time pushSendTime, p.push_send_time pushSendTime,
p.week_days weekDays, p.week_days weekDays,
p.push_type pushType p.push_type pushType,
i.resource_id resourceId
FROM FROM
self_push_item i self_push_item i
LEFT JOIN self_push p ON i.push_id = p.id LEFT JOIN self_push p ON i.push_id = p.id
......
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