Commit 37983128 by 1244575290@qq.com

全局退订

parent 7461c1ba
...@@ -12,6 +12,7 @@ import com.pcloud.book.guide.vo.ClassifyInfoVO; ...@@ -12,6 +12,7 @@ import com.pcloud.book.guide.vo.ClassifyInfoVO;
import com.pcloud.book.guide.vo.RobotWakeUpConfigVO; import com.pcloud.book.guide.vo.RobotWakeUpConfigVO;
import com.pcloud.book.guide.vo.RobotWakeUpMsgVO; import com.pcloud.book.guide.vo.RobotWakeUpMsgVO;
import com.pcloud.book.guide.vo.RobotWakeUpShowVO; import com.pcloud.book.guide.vo.RobotWakeUpShowVO;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao; import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotClassifyResponseVO; import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotClassifyResponseVO;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
...@@ -52,6 +53,9 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz { ...@@ -52,6 +53,9 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz {
@Autowired @Autowired
private ScheduleService scheduleService; private ScheduleService scheduleService;
@Autowired
private PcloudRobotBiz pcloudRobotBiz;
@Override @Override
public void robotWakeUpConfig(RobotWakeUpConfigVO robotWakeUpConfigVO) { public void robotWakeUpConfig(RobotWakeUpConfigVO robotWakeUpConfigVO) {
Integer cycle = robotWakeUpConfigVO.getCycle(); Integer cycle = robotWakeUpConfigVO.getCycle();
...@@ -236,6 +240,8 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz { ...@@ -236,6 +240,8 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz {
Date date = dto.getTime(); Date date = dto.getTime();
String ip = dto.getIp(); String ip = dto.getIp();
if (DateUtils.getDateDiff(date, new Date()) > pcloudRobotWakeup.getLast()) { if (DateUtils.getDateDiff(date, new Date()) > pcloudRobotWakeup.getLast()) {
//修改全局订阅状态
pcloudRobotBiz.updateUserTdState(robot, wxid, 0);
for (PcloudWakeupMessage msg : list) { for (PcloudWakeupMessage msg : list) {
if ("text".equals(msg.getType())) { if ("text".equals(msg.getType())) {
SendTextMessageVO txt = new SendTextMessageVO(); SendTextMessageVO txt = new SendTextMessageVO();
......
...@@ -62,6 +62,7 @@ import com.pcloud.book.keywords.vo.QrWeixinParam; ...@@ -62,6 +62,7 @@ import com.pcloud.book.keywords.vo.QrWeixinParam;
import com.pcloud.book.keywords.vo.SetKeywordVO; import com.pcloud.book.keywords.vo.SetKeywordVO;
import com.pcloud.book.keywords.vo.SetRankVO; import com.pcloud.book.keywords.vo.SetRankVO;
import com.pcloud.book.keywords.vo.UpdateKeywordVO; import com.pcloud.book.keywords.vo.UpdateKeywordVO;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordClassifyDao; import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordClassifyDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordDao; import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordReplyDao; import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordReplyDao;
...@@ -220,6 +221,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz { ...@@ -220,6 +221,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
@Value("${wechat.group.link.prefix}") @Value("${wechat.group.link.prefix}")
private String wechatGroupLinkPrefix; private String wechatGroupLinkPrefix;
@Autowired
private PcloudRobotBiz pcloudRobotBiz;
/** /**
* 字符串切割长度 * 字符串切割长度
*/ */
...@@ -555,6 +558,11 @@ public class BookKeywordBizImpl implements BookKeywordBiz { ...@@ -555,6 +558,11 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
//判断是否是平台端配置的小号,如果是,走平台端 //判断是否是平台端配置的小号,如果是,走平台端
PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(sendTextDTO.getWxId()); PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(sendTextDTO.getWxId());
if (pcloudRobot!=null){ if (pcloudRobot!=null){
//如果是全局退订关键词
if(sendTextDTO.getTextContent().equals(pcloudRobotBiz.getTdKeyword())) {
pcloudRobotBiz.handlePcloudTdReply(sendTextDTO);
return;
}
// 小睿对话索要出版社信息 // 小睿对话索要出版社信息
boolean _continue = replySelfKeywordTemplate(sendTextDTO); boolean _continue = replySelfKeywordTemplate(sendTextDTO);
// 判断是否需要继续走下去 // 判断是否需要继续走下去
......
package com.pcloud.book.pcloudkeyword.biz; package com.pcloud.book.pcloudkeyword.biz;
import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO; import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdDTO;
import com.pcloud.book.pcloudkeyword.entity.PcloudClassifyTemplate; import com.pcloud.book.pcloudkeyword.entity.PcloudClassifyTemplate;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot; import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome; import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.wechatgroup.message.dto.SendTextDTO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -38,4 +40,17 @@ public interface PcloudRobotBiz { ...@@ -38,4 +40,17 @@ public interface PcloudRobotBiz {
List<RobotClassifyDTO> getAllPcloudRobot(); List<RobotClassifyDTO> getAllPcloudRobot();
PcloudRobot getPcloudRobotByWxId(String robotId); PcloudRobot getPcloudRobotByWxId(String robotId);
void editPcloudTd(PcloudTdDTO pcloudTdDTO);
PcloudTdDTO getPcloudTdInfo();
void handlePcloudTdReply(SendTextDTO sendTextDTO);
void updateUserTdState(String robotWxId, String userWxId, Integer tdState);
Integer getUserTdState(String robotWxId, String userWxId);
String getTdKeyword();
} }
...@@ -18,29 +18,34 @@ import com.pcloud.book.pcloudkeyword.entity.PcloudKeywordClassify; ...@@ -18,29 +18,34 @@ import com.pcloud.book.pcloudkeyword.entity.PcloudKeywordClassify;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot; import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotQrcode; import com.pcloud.book.pcloudkeyword.entity.PcloudRobotQrcode;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome; import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.book.pcloudkeyword.dao.*;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdDTO;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdReplyDTO;
import com.pcloud.book.pcloudkeyword.entity.*;
import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum; import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum;
import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotClassifyResponseVO; import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotClassifyResponseVO;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.QrcodeUtils; import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.httpclient.UrlUtils; import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.contentcenter.resource.dto.ResourceDTO; import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.sdk.wxgroup.SendFileVO; import com.pcloud.wechatgroup.message.dto.SendTextDTO;
import com.sdk.wxgroup.SendMessageTypeEnum; import com.sdk.wxgroup.*;
import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; 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;
import java.util.stream.Collectors;
@Component("pcloudRobotBiz") @Component("pcloudRobotBiz")
public class PcloudRobotBizImpl implements PcloudRobotBiz { public class PcloudRobotBizImpl implements PcloudRobotBiz {
...@@ -63,6 +68,12 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz { ...@@ -63,6 +68,12 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
private PcloudClassifyTemplateDao pcloudClassifyTemplateDao; private PcloudClassifyTemplateDao pcloudClassifyTemplateDao;
@Autowired @Autowired
private PcloudRobotClassifyBiz pcloudRobotClassifyBiz; private PcloudRobotClassifyBiz pcloudRobotClassifyBiz;
@Autowired
private PcloudTdDao pcloudTdDao;
@Autowired
private PcloudTdRecordDao pcloudTdRecordDao;
@Autowired
private PcloudKeywordNameDao pcloudKeywordNameDao;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -254,7 +265,149 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz { ...@@ -254,7 +265,149 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
@Override @Override
public PcloudRobot getPcloudRobotByWxId(String robotId) { public PcloudRobot getPcloudRobotByWxId(String robotId) {
return pcloudRobotDao.getByWxId(robotId); return pcloudRobotDao.getByWxId(robotId);
}
@ParamLog("编辑全局退订信息")
public void editPcloudTd(PcloudTdDTO pcloudTdDTO) {
if(StringUtil.isEmpty(pcloudTdDTO.getTdKeyword()) || StringUtil.isEmpty(pcloudTdDTO.getTdGuide())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL,"引导语或关键词为空!");
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("keywordName", pcloudTdDTO.getTdKeyword());
Object obj = pcloudKeywordNameDao.getBy(paramMap, "getByKeywordName");
if(obj != null) {
throw new BookBizException(BookBizException.ERROR,"退订关键词与全平台关键词冲突!");
}
pcloudTdDao.deleteAll();
List<PcloudTdReplyDTO> replyDTOList = pcloudTdDTO.getTdReplyDTOS();
List<PcloudTd> pcloudTdList = new ArrayList<>();
if(!CollectionUtils.isEmpty(replyDTOList)) {
for(PcloudTdReplyDTO replyDTO : replyDTOList) {
PcloudTd pcloudTd = new PcloudTd();
BeanUtils.copyProperties(replyDTO, pcloudTd);
pcloudTd.setTdGuide(pcloudTdDTO.getTdGuide());
pcloudTd.setTdKeyword(pcloudTdDTO.getTdKeyword());
pcloudTdList.add(pcloudTd);
}
} else {
PcloudTd pcloudTd = new PcloudTd();
pcloudTd.setTdGuide(pcloudTdDTO.getTdGuide());
pcloudTd.setTdKeyword(pcloudTdDTO.getTdKeyword());
pcloudTdList.add(pcloudTd);
}
pcloudTdDao.batchInsert(pcloudTdList);
}
@Override
@ParamLog("获取全局退订信息")
public PcloudTdDTO getPcloudTdInfo() {
List<PcloudTd> pcloudTdList = pcloudTdDao.listAll();
PcloudTd pcloudTd = pcloudTdList.get(0);
PcloudTdDTO pcloudTdDTO = new PcloudTdDTO();
pcloudTdDTO.setTdGuide(pcloudTd.getTdGuide());
pcloudTdDTO.setTdKeyword(pcloudTd.getTdKeyword());
List<PcloudTdReplyDTO> replyDTOS = new ArrayList<>();
for(PcloudTd td : pcloudTdList) {
PcloudTdReplyDTO replyDTO = new PcloudTdReplyDTO();
BeanUtils.copyProperties(td, replyDTO);
replyDTOS.add(replyDTO);
}
this.fillTdReplyResource(replyDTOS);
pcloudTdDTO.setTdReplyDTOS(replyDTOS);
return pcloudTdDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void handlePcloudTdReply(SendTextDTO sendTextDTO) {
String robotWxId = sendTextDTO.getWxId();
String userWxId = sendTextDTO.getWechatUserId();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("robotWxId", robotWxId);
paramMap.put("userWxId", userWxId);
PcloudTdRecord pcloudTdRecord = (PcloudTdRecord)pcloudTdRecordDao.getBy(paramMap, "getByUserAndRobotWxId");
if(pcloudTdRecord != null && pcloudTdRecord.getTdState() == 1) {
return;
}
//修改退订记录
PcloudTdRecord tdRecord = new PcloudTdRecord();
tdRecord.setRobotWxId(robotWxId);
tdRecord.setUserWxId(userWxId);
tdRecord.setTdState(1);
if(pcloudTdRecord == null) {
pcloudTdRecordDao.insert(tdRecord);
} else {
pcloudTdRecordDao.updateUserTdState(tdRecord);
}
//发送退订回复
List<PcloudTd> pcloudTdList = pcloudTdDao.listAll();
List<PcloudTdReplyDTO> replyDTOS = new ArrayList<>();
for(PcloudTd td : pcloudTdList) {
PcloudTdReplyDTO replyDTO = new PcloudTdReplyDTO();
BeanUtils.copyProperties(td, replyDTO);
replyDTOS.add(replyDTO);
}
this.fillTdReplyResource(replyDTOS);
this.sendTdReplyMessage(sendTextDTO.getIp(), robotWxId, userWxId, replyDTOS);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateUserTdState(String robotWxId, String userWxId, Integer tdState) {
//修改退订记录
PcloudTdRecord tdRecord = new PcloudTdRecord();
tdRecord.setRobotWxId(robotWxId);
tdRecord.setUserWxId(userWxId);
tdRecord.setTdState(tdState);
pcloudTdRecordDao.updateUserTdState(tdRecord);
}
@Override
public Integer getUserTdState(String robotWxId, String userWxId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("robotWxId", robotWxId);
paramMap.put("userWxId", userWxId);
Integer tdState = (Integer) pcloudTdRecordDao.getBy(paramMap, "getUserTdState");
return tdState == null ? 0 : tdState;
}
@Override
public String getTdKeyword() {
String tdKeyword = pcloudTdDao.getTdKeyword();
return StringUtil.isEmpty(tdKeyword) ? "" : tdKeyword;
}
private void sendTdReplyMessage(String ip, String robotWxId, String userWxId, List<PcloudTdReplyDTO> replyDTOS) {
for (PcloudTdReplyDTO tdReplyDTO : replyDTOS) {
Integer replyType = tdReplyDTO.getReplyType();
if(WelcomeReplyTypeEnum.TEXT.value.equals(replyType)) {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(tdReplyDTO.getContent());
sendTextMessageVO.setAltId(robotWxId);
sendTextMessageVO.setWxGroupId(userWxId);
sendTextMessageVO.setIp(ip);
sendTextMessageVO.setCode(SendMessageTypeEnum.SELF.getCode());
WxGroupSDK.sendTextMessage(sendTextMessageVO);
} else if(WelcomeReplyTypeEnum.IMAGE.value.equals(replyType)) {
SendPicMessageVO sendPicMessageVO = new SendPicMessageVO();
sendPicMessageVO.setWxGroupId(userWxId);
sendPicMessageVO.setAltId(robotWxId);
sendPicMessageVO.setPicUrl(tdReplyDTO.getPicUrl());
sendPicMessageVO.setIp(ip);
sendPicMessageVO.setCode(SendMessageTypeEnum.SELF.getCode());
WxGroupSDK.sendPicMessage(sendPicMessageVO);
} else if(WelcomeReplyTypeEnum.RESOURCE.value.equals(replyType)) {
SendFileVO sendFileVO = new SendFileVO();
sendFileVO.setFileUrl(tdReplyDTO.getResourceUrl());
sendFileVO.setFileName(tdReplyDTO.getResourceName());
sendFileVO.setIp(ip);
sendFileVO.setAltId(robotWxId);
sendFileVO.setWxId(userWxId);
sendFileVO.setCode(SendMessageTypeEnum.SELF.getCode());
WxGroupSDK.sendFile(sendFileVO);
}
}
} }
@ParamLog("填充欢迎语回复") @ParamLog("填充欢迎语回复")
...@@ -290,4 +443,27 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz { ...@@ -290,4 +443,27 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
} }
} }
} }
private void fillTdReplyResource(List<PcloudTdReplyDTO> tdReplyDTOS) {
if(ListUtils.isEmpty(tdReplyDTOS)){
return;
}
List<Long> resourceIds = tdReplyDTOS.stream().filter(s -> s.getResourceId() != null).map(PcloudTdReplyDTO::getResourceId).distinct().collect(Collectors.toList());
if (!ListUtils.isEmpty(resourceIds)){
Map<Long, ResourceDTO> resourceDTOMap = resourceConsr.mapByIds(resourceIds);
for (PcloudTdReplyDTO replyDTO : tdReplyDTOS){
if (replyDTO.getReplyType() != null && WelcomeReplyTypeEnum.RESOURCE.value.equals(replyDTO.getReplyType())){
ResourceDTO resourceDTO = resourceDTOMap.get(replyDTO.getResourceId());
if (resourceDTO != null){
replyDTO.setResourceName(resourceDTO.getResourceName());
replyDTO.setResourceUrl(resourceDTO.getFileUrl());
replyDTO.setResourceTypeCode(resourceDTO.getTypeCode());
replyDTO.setResourceTypeName(resourceDTO.getTypeName());
replyDTO.setFileType(resourceDTO.getFileType());
replyDTO.setFileSize(resourceDTO.getFileSize());
}
}
}
}
}
} }
package com.pcloud.book.pcloudkeyword.dao;
import com.pcloud.book.pcloudkeyword.entity.PcloudTd;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface PcloudTdDao extends BaseDao<PcloudTd> {
void deleteAll();
Integer batchInsert(List<PcloudTd> pcloudTdList);
List<PcloudTd> listAll();
String getTdKeyword();
}
package com.pcloud.book.pcloudkeyword.dao;
import com.pcloud.book.pcloudkeyword.entity.PcloudTdRecord;
import com.pcloud.common.core.dao.BaseDao;
public interface PcloudTdRecordDao extends BaseDao<PcloudTdRecord> {
void updateUserTdState(PcloudTdRecord tdRecord);
}
package com.pcloud.book.pcloudkeyword.dao.impl;
import com.pcloud.book.pcloudkeyword.dao.PcloudTdDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudTd;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
@Component("pcloudTdDao")
public class PcloudTdDaoImpl extends BaseDaoImpl<PcloudTd> implements PcloudTdDao {
@Override
public void deleteAll() {
super.getSqlSession().delete(getStatement("deleteAll"));
}
@Override
public Integer batchInsert(List<PcloudTd> list) {
return super.getSqlSession().insert(getStatement("batchInsert"), list);
}
@Override
public List<PcloudTd> listAll() {
return super.getSqlSession().selectList(getStatement("listAll"));
}
@Override
public String getTdKeyword() {
return super.getSqlSession().selectOne(getStatement("getTdKeyword"));
}
}
package com.pcloud.book.pcloudkeyword.dao.impl;
import com.pcloud.book.pcloudkeyword.dao.PcloudTdRecordDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudTdRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
@Component("pcloudTdRecordDao")
public class PcloudTdRecordDaoImpl extends BaseDaoImpl<PcloudTdRecord> implements PcloudTdRecordDao {
@Override
public void updateUserTdState(PcloudTdRecord tdRecord) {
super.getSessionTemplate().update(getStatement("updateUserTdState"), tdRecord);
}
}
package com.pcloud.book.pcloudkeyword.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.wechatgroup.base.dto.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel("全平台关键词分类")
public class PcloudTdDTO extends BaseDTO {
private String tdGuide;
private String tdKeyword;
private List<PcloudTdReplyDTO> tdReplyDTOS;
}
package com.pcloud.book.pcloudkeyword.dto;
import com.pcloud.wechatgroup.base.dto.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("全平台退订回复")
public class PcloudTdReplyDTO extends BaseDTO {
@ApiModelProperty("回复类型")
private Integer replyType;
@ApiModelProperty("文本内容")
private String content;
@ApiModelProperty("图片url")
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("文件大小")
private Long fileSize;
}
package com.pcloud.book.pcloudkeyword.entity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("全平台退订")
public class PcloudTd extends BaseEntity {
private String tdGuide;
private String tdKeyword;
private Integer replyType;
private String content;
private String picUrl;
private Long resourceId;
}
package com.pcloud.book.pcloudkeyword.entity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel("全平台退订记录")
public class PcloudTdRecord extends BaseEntity {
private String robotWxId;
private String userWxId;
private Integer tdState;
}
package com.pcloud.book.pcloudkeyword.facade; package com.pcloud.book.pcloudkeyword.facade;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz; import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdDTO;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot; import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome; import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException; import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil; import com.pcloud.common.utils.SessionUtil;
import com.pcloud.wechatgroup.message.dto.SendTextDTO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
...@@ -130,4 +132,31 @@ public class PcloudRobotFacade { ...@@ -130,4 +132,31 @@ public class PcloudRobotFacade {
) throws BizException, PermissionException{ ) throws BizException, PermissionException{
return new ResponseDto<>(pcloudRobotBiz.getTemplateByClassifyId(classifyId)); return new ResponseDto<>(pcloudRobotBiz.getTemplateByClassifyId(classifyId));
} }
@ApiOperation("修改平台退订")
@PostMapping("/editPcloudTd")
ResponseDto<?> editPcloudTd(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestBody @ApiParam("全局退订") PcloudTdDTO pcloudTdDTO
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
pcloudRobotBiz.editPcloudTd(pcloudTdDTO);
return new ResponseDto<>();
}
@ApiOperation("获取退订信息")
@GetMapping("/getPcloudTdInfo")
ResponseDto<?> getPcloudTd(
@RequestHeader("token") @ApiParam("token信息") String token) throws BizException, PermissionException{
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(pcloudRobotBiz.getPcloudTdInfo());
}
@PostMapping("/handlePcloudTdReply")
ResponseDto<?> handlePcloudTdReply(
@RequestBody SendTextDTO sendTextDTO) throws BizException, PermissionException {
pcloudRobotBiz.handlePcloudTdReply(sendTextDTO);
return new ResponseDto<>();
}
} }
...@@ -12,6 +12,7 @@ import com.pcloud.book.group.dto.SelfRobotBookGroupDTO; ...@@ -12,6 +12,7 @@ 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.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.push.biz.SelfPushBiz; import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.book.push.constant.PushConstant; import com.pcloud.book.push.constant.PushConstant;
import com.pcloud.book.push.dao.SelfPushDao; import com.pcloud.book.push.dao.SelfPushDao;
...@@ -83,6 +84,8 @@ public class SelfPushBizImpl implements SelfPushBiz { ...@@ -83,6 +84,8 @@ public class SelfPushBizImpl implements SelfPushBiz {
private BookGroupDao bookGroupDao; private BookGroupDao bookGroupDao;
@Autowired @Autowired
private PartyConsr partyConsr; private PartyConsr partyConsr;
@Autowired
private PcloudRobotBiz pcloudRobotBiz;
private static final String self_push_SCHEDULE_PRE = "self_push_"; private static final String self_push_SCHEDULE_PRE = "self_push_";
...@@ -359,6 +362,9 @@ public class SelfPushBizImpl implements SelfPushBiz { ...@@ -359,6 +362,9 @@ public class SelfPushBizImpl implements SelfPushBiz {
if (StringUtil.isEmpty(userWxId) || StringUtil.isEmpty(altId)){ if (StringUtil.isEmpty(userWxId) || StringUtil.isEmpty(altId)){
return; return;
} }
if(pcloudRobotBiz.getUserTdState(altId, userWxId) == 1) {
return;
}
Integer code = SendMessageTypeEnum.SELF.getCode(); Integer code = SendMessageTypeEnum.SELF.getCode();
Integer itemType = selfPushItem.getItemType(); Integer itemType = selfPushItem.getItemType();
if (ItemTypeEnum.TEXT.value.equals(itemType)) { if (ItemTypeEnum.TEXT.value.equals(itemType)) {
......
...@@ -95,4 +95,11 @@ ...@@ -95,4 +95,11 @@
AND k.id != #{keywordId} AND k.id != #{keywordId}
</if> </if>
</select> </select>
<select id="getByKeywordName" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from pcloud_keyword_name
where name = #{keywordName}
limit 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -136,6 +136,7 @@ ...@@ -136,6 +136,7 @@
select <include refid="Base_Column_List"/> select <include refid="Base_Column_List"/>
from pcloud_robot from pcloud_robot
where robot_type = #{robotType} where robot_type = #{robotType}
and state = 1
limit 1 limit 1
</select> </select>
......
<?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.pcloudkeyword.dao.impl.PcloudTdDaoImpl" >
<resultMap id="BaseResultMap" type="PcloudTd" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="td_guide" jdbcType="VARCHAR" property="tdGuide" />
<result column="td_keyword" jdbcType="VARCHAR" property="tdKeyword" />
<result column="reply_type" jdbcType="INTEGER" property="replyType" />
<result column="content" jdbcType="VARCHAR" property="content" />
<result column="pic_url" jdbcType="VARCHAR" property="picUrl" />
<result column="resource_id" jdbcType="INTEGER" property="resourceId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Base_Column_List" >
id, td_guide, td_keyword, reply_type, content, pic_url, resource_id, create_time
</sql>
<insert id="batchInsert" parameterType="PcloudTd" useGeneratedKeys="true" keyProperty="id">
insert into pcloud_td (
td_guide,
td_keyword,
reply_type,
content,
pic_url,
resource_id,
create_time
) values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.tdGuide,jdbcType=VARCHAR},
#{item.tdKeyword,jdbcType=VARCHAR},
#{item.replyType,jdbcType=INTEGER},
#{item.content,jdbcType=VARCHAR},
#{item.picUrl,jdbcType=VARCHAR},
#{item.resourceId,jdbcType=INTEGER},
NOW()
)
</foreach>
</insert>
<delete id="deleteAll" >
delete from pcloud_td
</delete>
<select id="listAll" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from pcloud_td
</select>
<select id="getTdKeyword" resultType="string">
select td_keyword
from pcloud_td
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.pcloudkeyword.dao.impl.PcloudTdRecordDaoImpl" >
<resultMap id="BaseResultMap" type="PcloudTdRecord" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="robot_wx_id" jdbcType="VARCHAR" property="robotWxId" />
<result column="user_wx_id" jdbcType="VARCHAR" property="userWxId" />
<result column="td_state" jdbcType="INTEGER" property="tdState" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List" >
id, robot_wx_id, user_wx_id, td_state, create_time, update_time
</sql>
<insert id="insert" parameterType="PcloudTdRecord" useGeneratedKeys="true" keyProperty="id">
insert into pcloud_td_record (
robot_wx_id,
user_wx_id,
td_state,
create_time,
update_time
)
values
(
#{robotWxId,jdbcType=VARCHAR},
#{userWxId,jdbcType=VARCHAR},
#{tdState,jdbcType=INTEGER},
NOW(),
NOW()
)
</insert>
<update id="updateUserTdState" parameterType="PcloudTdRecord">
update pcloud_td_record
set
td_state = #{tdState,jdbcType=INTEGER},
update_time = NOW()
where
robot_wx_id = #{robotWxId,jdbcType=VARCHAR}
and user_wx_id = #{userWxId,jdbcType=VARCHAR}
</update>
<select id="getUserTdState" resultType="int">
select td_state
from pcloud_td_record
where
robot_wx_id = #{robotWxId,jdbcType=VARCHAR}
and user_wx_id = #{userWxId,jdbcType=VARCHAR}
</select>
<select id="getByUserAndRobotWxId" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from pcloud_td_record
where
robot_wx_id = #{robotWxId}
and user_wx_id = #{userWxId,}
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment