Commit bebf8666 by 阮思源

【ID1002433】跳转阶段衔接语延时

parent dea79956
package com.pcloud.book.mq.delay; package com.pcloud.book.mq.delay;
import com.pcloud.book.personalstage.biz.PersonalStageBiz; import com.pcloud.book.personalstage.biz.PersonalStageBiz;
import com.pcloud.book.personalstage.biz.PersonalStageJumpBiz;
import com.pcloud.book.personalstage.constant.PersonalStageConstant; import com.pcloud.book.personalstage.constant.PersonalStageConstant;
import com.pcloud.common.core.mq.DelayQueueDTO; import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.core.mq.MQQueueConstants; import com.pcloud.common.core.mq.MQQueueConstants;
...@@ -25,6 +26,8 @@ public class DelayReceiver { ...@@ -25,6 +26,8 @@ public class DelayReceiver {
@Autowired @Autowired
private PersonalStageBiz personalStageBiz; private PersonalStageBiz personalStageBiz;
@Autowired
private PersonalStageJumpBiz personalStageJumpBiz;
@RabbitHandler @RabbitHandler
public void onMessage(DelayQueueDTO dto) { public void onMessage(DelayQueueDTO dto) {
...@@ -38,6 +41,8 @@ public class DelayReceiver { ...@@ -38,6 +41,8 @@ public class DelayReceiver {
personalStageBiz.dealDelayWakeup(dto); personalStageBiz.dealDelayWakeup(dto);
} else if (PersonalStageConstant.PERSONALSTAGE_DELAY_FUSING.equals(dto.getType())) { } else if (PersonalStageConstant.PERSONALSTAGE_DELAY_FUSING.equals(dto.getType())) {
personalStageBiz.dealDelayFusingFinish(dto); personalStageBiz.dealDelayFusingFinish(dto);
} else if (PersonalStageConstant.PERSONALSTAGE_DELAY_LINKUP.equals(dto.getType())) {
personalStageJumpBiz.dealDelayLinkup(dto);
} }
} }
} }
...@@ -4,6 +4,7 @@ import com.pcloud.book.personalstage.dto.PersonalStageJumpDto; ...@@ -4,6 +4,7 @@ import com.pcloud.book.personalstage.dto.PersonalStageJumpDto;
import com.pcloud.book.personalstage.enums.JumpTypeEnum; import com.pcloud.book.personalstage.enums.JumpTypeEnum;
import com.pcloud.book.personalstage.vo.request.CreateStageJumpRequestVO; import com.pcloud.book.personalstage.vo.request.CreateStageJumpRequestVO;
import com.pcloud.book.personalstage.vo.request.UpdateStageJumpRequestVO; import com.pcloud.book.personalstage.vo.request.UpdateStageJumpRequestVO;
import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
public interface PersonalStageJumpBiz { public interface PersonalStageJumpBiz {
...@@ -35,4 +36,5 @@ public interface PersonalStageJumpBiz { ...@@ -35,4 +36,5 @@ public interface PersonalStageJumpBiz {
*/ */
Boolean handlePersonalStageJump(String userWxId, String robotWxId, String content, JumpTypeEnum jumpTypeEnum); Boolean handlePersonalStageJump(String userWxId, String robotWxId, String content, JumpTypeEnum jumpTypeEnum);
void dealDelayLinkup(DelayQueueDTO dto);
} }
...@@ -6,17 +6,20 @@ import com.google.common.collect.Maps; ...@@ -6,17 +6,20 @@ import com.google.common.collect.Maps;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.WeixinQrcodeBiz; import com.pcloud.book.group.biz.WeixinQrcodeBiz;
import com.pcloud.book.guide.biz.PcloudGuideBiz; import com.pcloud.book.guide.biz.PcloudGuideBiz;
import com.pcloud.book.mq.delay.DelayMessageSender;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotClassifyDao; import com.pcloud.book.pcloudkeyword.dao.PcloudRobotClassifyDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao; import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot; import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotClassify; import com.pcloud.book.pcloudkeyword.entity.PcloudRobotClassify;
import com.pcloud.book.personalstage.biz.PersonalStageBiz; import com.pcloud.book.personalstage.biz.PersonalStageBiz;
import com.pcloud.book.personalstage.biz.PersonalStageJumpBiz; import com.pcloud.book.personalstage.biz.PersonalStageJumpBiz;
import com.pcloud.book.personalstage.constant.PersonalStageConstant;
import com.pcloud.book.personalstage.dao.PersonalStageJumpDao; import com.pcloud.book.personalstage.dao.PersonalStageJumpDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpEmailDao; import com.pcloud.book.personalstage.dao.PersonalStageJumpEmailDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpKeywordDao; import com.pcloud.book.personalstage.dao.PersonalStageJumpKeywordDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpLinkupDao; import com.pcloud.book.personalstage.dao.PersonalStageJumpLinkupDao;
import com.pcloud.book.personalstage.dao.PersonalStageUserDao; import com.pcloud.book.personalstage.dao.PersonalStageUserDao;
import com.pcloud.book.personalstage.dto.LinkupDelayDTO;
import com.pcloud.book.personalstage.dto.PersonalStageJumpDto; import com.pcloud.book.personalstage.dto.PersonalStageJumpDto;
import com.pcloud.book.personalstage.dto.PersonalStageJumpKeywordDto; import com.pcloud.book.personalstage.dto.PersonalStageJumpKeywordDto;
import com.pcloud.book.personalstage.entity.PersonalStage; import com.pcloud.book.personalstage.entity.PersonalStage;
...@@ -34,6 +37,7 @@ import com.pcloud.book.util.common.YesOrNoEnums; ...@@ -34,6 +37,7 @@ import com.pcloud.book.util.common.YesOrNoEnums;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.biz.MessageBiz; import com.pcloud.common.core.biz.MessageBiz;
import com.pcloud.common.core.dto.SendEmailDto; import com.pcloud.common.core.dto.SendEmailDto;
import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
...@@ -88,6 +92,8 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz { ...@@ -88,6 +92,8 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
private MessageBiz messageBiz; private MessageBiz messageBiz;
@Autowired @Autowired
private PcloudGuideBiz pcloudGuideBiz; private PcloudGuideBiz pcloudGuideBiz;
@Autowired
private DelayMessageSender delayMessageSender;
@Override @Override
@ParamLog("新增阶段跳转") @ParamLog("新增阶段跳转")
...@@ -328,6 +334,24 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz { ...@@ -328,6 +334,24 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
return true; return true;
} }
@ParamLog("处理衔接语跳转延时")
@Override
public void dealDelayLinkup(DelayQueueDTO dto) {
LinkupDelayDTO linkupDelayDTO=(LinkupDelayDTO)dto.getMsg();
PersonalStageJumpLinkup jumpLinkup = personalStageJumpLinkupDao.getById(linkupDelayDTO.getPersonalStageJumpLinkupId());
if (jumpLinkup==null){
LOGGER.info("没有该跳转衔接语!");
return;
}
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(jumpLinkup.getLinkupContent());
sendTextMessageVO.setAltId(linkupDelayDTO.getRobotId());
sendTextMessageVO.setWxGroupId(dto.getKey());
sendTextMessageVO.setIp(linkupDelayDTO.getIp());
sendTextMessageVO.setCode(SendMessageTypeEnum.SELF.getCode());
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
@ParamLog("发送阶段跳转邮件") @ParamLog("发送阶段跳转邮件")
private void sendEmail(String userWxId, String robotWxId, String content, PersonalStageJumpKeywordDto jumpKeywordDto) { private void sendEmail(String userWxId, String robotWxId, String content, PersonalStageJumpKeywordDto jumpKeywordDto) {
try { try {
...@@ -398,13 +422,24 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz { ...@@ -398,13 +422,24 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
return; return;
} }
for (PersonalStageJumpLinkup jumpLinkup : linkups){ for (PersonalStageJumpLinkup jumpLinkup : linkups){
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO(); if (jumpLinkup.getToStageStartTime()!=null&&jumpLinkup.getToStageStartTime()>0){
sendTextMessageVO.setContent(jumpLinkup.getLinkupContent()); LinkupDelayDTO linkupDelayDTO=new LinkupDelayDTO();
sendTextMessageVO.setAltId(robotWxId); linkupDelayDTO.setPersonalStageJumpLinkupId(jumpLinkup.getId());
sendTextMessageVO.setWxGroupId(userWxId); linkupDelayDTO.setRobotId(robotWxId);
sendTextMessageVO.setIp(ip); linkupDelayDTO.setWxId(userWxId);
sendTextMessageVO.setCode(SendMessageTypeEnum.SELF.getCode()); linkupDelayDTO.setIp(ip);
WxGroupSDK.sendTextMessage(sendTextMessageVO); DelayQueueDTO delayQueueDTO = DelayQueueDTO.builder().key(userWxId).type(PersonalStageConstant.PERSONALSTAGE_DELAY_LINKUP).msg(linkupDelayDTO).timeout(jumpLinkup.getToStageStartTime()*60*1000).build();
delayMessageSender.send(delayQueueDTO);
LOGGER.info("增加跳转衔接语延时"+delayQueueDTO.toString());
}else {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(jumpLinkup.getLinkupContent());
sendTextMessageVO.setAltId(robotWxId);
sendTextMessageVO.setWxGroupId(userWxId);
sendTextMessageVO.setIp(ip);
sendTextMessageVO.setCode(SendMessageTypeEnum.SELF.getCode());
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
} }
} }
......
...@@ -9,4 +9,6 @@ public class PersonalStageConstant { ...@@ -9,4 +9,6 @@ public class PersonalStageConstant {
public static final String USER_SEND_KEYWORD_COUNT_LOCK="USER_SEND_KEYWORD_COUNT_LOCK"; public static final String USER_SEND_KEYWORD_COUNT_LOCK="USER_SEND_KEYWORD_COUNT_LOCK";
public static final String PERSONALSTAGE_DELAY_LINKUP="PERSONALSTAGE_DELAY_LINKUP";
} }
package com.pcloud.book.personalstage.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("衔接语延时dto")
public class LinkupDelayDTO implements Serializable {
@ApiModelProperty("衔接语id")
private Long personalStageJumpLinkupId;
@ApiModelProperty("机器人id")
private String robotId;
@ApiModelProperty("用户wxId")
private String wxId;
@ApiModelProperty("ip地址")
private String ip;
}
...@@ -15,4 +15,7 @@ public class PersonalStageJumpLinkup extends BaseEntity { ...@@ -15,4 +15,7 @@ public class PersonalStageJumpLinkup extends BaseEntity {
@ApiModelProperty("衔接语") @ApiModelProperty("衔接语")
private String linkupContent; private String linkupContent;
@ApiModelProperty("距离阶段开始时间")
private Integer toStageStartTime;
} }
\ No newline at end of file
...@@ -38,7 +38,7 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO { ...@@ -38,7 +38,7 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO {
private List<String> emails; private List<String> emails;
@Size(max = 5, message = "衔接语不能超过5个") @Size(max = 5, message = "衔接语不能超过5个")
private List<String> linkupContents; private List<PersonalStageJumpLinkup> linkups;
public static List<PersonalStageJumpKeyword> valueToJumpKeywords(BaseStageJumpRequestVO vo, Long personalStageJumpId){ public static List<PersonalStageJumpKeyword> valueToJumpKeywords(BaseStageJumpRequestVO vo, Long personalStageJumpId){
List<String> keywords = vo.getKeywords(); List<String> keywords = vo.getKeywords();
...@@ -72,15 +72,16 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO { ...@@ -72,15 +72,16 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO {
} }
public static List<PersonalStageJumpLinkup> valueToJumpLinkups(BaseStageJumpRequestVO vo, Long personalStageJumpId){ public static List<PersonalStageJumpLinkup> valueToJumpLinkups(BaseStageJumpRequestVO vo, Long personalStageJumpId){
List<String> linkupContents = vo.getLinkupContents(); List<PersonalStageJumpLinkup> linkups = vo.getLinkups();
if (ListUtils.isEmpty(linkupContents)){ if (ListUtils.isEmpty(linkups)){
return new ArrayList<>(); return new ArrayList<>();
} }
List<PersonalStageJumpLinkup> jumpLinkups = new ArrayList<>(); List<PersonalStageJumpLinkup> jumpLinkups = new ArrayList<>();
for (String linkupContent : linkupContents){ for (PersonalStageJumpLinkup linkup : linkups){
PersonalStageJumpLinkup jumpLinkup = new PersonalStageJumpLinkup(); PersonalStageJumpLinkup jumpLinkup = new PersonalStageJumpLinkup();
jumpLinkup.setLinkupContent(linkupContent); jumpLinkup.setLinkupContent(linkup.getLinkupContent());
jumpLinkup.setPersonalStageJumpId(personalStageJumpId); jumpLinkup.setPersonalStageJumpId(personalStageJumpId);
jumpLinkup.setToStageStartTime(linkup.getToStageStartTime());
jumpLinkups.add(jumpLinkup); jumpLinkups.add(jumpLinkup);
} }
return jumpLinkups; return jumpLinkups;
......
...@@ -6,10 +6,11 @@ ...@@ -6,10 +6,11 @@
<id property="id" column="id" jdbcType="BIGINT"/> <id property="id" column="id" jdbcType="BIGINT"/>
<result property="personalStageJumpId" column="personal_stage_jump_id" jdbcType="BIGINT"/> <result property="personalStageJumpId" column="personal_stage_jump_id" jdbcType="BIGINT"/>
<result property="linkupContent" column="linkup_content" jdbcType="VARCHAR"/> <result property="linkupContent" column="linkup_content" jdbcType="VARCHAR"/>
<result property="toStageStartTime" column="to_stage_start_time" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, personal_stage_jump_id, linkup_content id, personal_stage_jump_id, linkup_content, to_stage_start_time
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long"> <select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
...@@ -50,11 +51,13 @@ ...@@ -50,11 +51,13 @@
insert into personal_stage_jump_linkup insert into personal_stage_jump_linkup
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
personal_stage_jump_id, personal_stage_jump_id,
linkup_content linkup_content,
to_stage_start_time
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{personalStageJumpId,jdbcType=BIGINT}, #{personalStageJumpId,jdbcType=BIGINT},
#{linkupContent,jdbcType=VARCHAR} #{linkupContent,jdbcType=VARCHAR},
#{toStageStartTime,jdbcType=INTEGER}
</trim> </trim>
</insert> </insert>
...@@ -62,13 +65,15 @@ ...@@ -62,13 +65,15 @@
insert into personal_stage_jump_linkup insert into personal_stage_jump_linkup
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
personal_stage_jump_id, personal_stage_jump_id,
linkup_content linkup_content,
to_stage_start_time
</trim> </trim>
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
#{item.personalStageJumpId,jdbcType=BIGINT}, #{item.personalStageJumpId,jdbcType=BIGINT},
#{item.linkupContent,jdbcType=VARCHAR} #{item.linkupContent,jdbcType=VARCHAR},
#{item.toStageStartTime,jdbcType=INTEGER}
</trim> </trim>
</foreach> </foreach>
</insert> </insert>
......
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