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();
} }
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