Commit bd24f8fb by 阮思源

Merge branch 'feat-1002433' into 'master'

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

See merge request rays/pcloud-book!459
parents dea79956 bebf8666
package com.pcloud.book.mq.delay;
import com.pcloud.book.personalstage.biz.PersonalStageBiz;
import com.pcloud.book.personalstage.biz.PersonalStageJumpBiz;
import com.pcloud.book.personalstage.constant.PersonalStageConstant;
import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.core.mq.MQQueueConstants;
......@@ -25,6 +26,8 @@ public class DelayReceiver {
@Autowired
private PersonalStageBiz personalStageBiz;
@Autowired
private PersonalStageJumpBiz personalStageJumpBiz;
@RabbitHandler
public void onMessage(DelayQueueDTO dto) {
......@@ -38,6 +41,8 @@ public class DelayReceiver {
personalStageBiz.dealDelayWakeup(dto);
} else if (PersonalStageConstant.PERSONALSTAGE_DELAY_FUSING.equals(dto.getType())) {
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;
import com.pcloud.book.personalstage.enums.JumpTypeEnum;
import com.pcloud.book.personalstage.vo.request.CreateStageJumpRequestVO;
import com.pcloud.book.personalstage.vo.request.UpdateStageJumpRequestVO;
import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.page.PageBeanNew;
public interface PersonalStageJumpBiz {
......@@ -35,4 +36,5 @@ public interface PersonalStageJumpBiz {
*/
Boolean handlePersonalStageJump(String userWxId, String robotWxId, String content, JumpTypeEnum jumpTypeEnum);
void dealDelayLinkup(DelayQueueDTO dto);
}
......@@ -6,17 +6,20 @@ import com.google.common.collect.Maps;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.WeixinQrcodeBiz;
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.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotClassify;
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.dao.PersonalStageJumpDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpEmailDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpKeywordDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpLinkupDao;
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.PersonalStageJumpKeywordDto;
import com.pcloud.book.personalstage.entity.PersonalStage;
......@@ -34,6 +37,7 @@ import com.pcloud.book.util.common.YesOrNoEnums;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.biz.MessageBiz;
import com.pcloud.common.core.dto.SendEmailDto;
import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
......@@ -88,6 +92,8 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
private MessageBiz messageBiz;
@Autowired
private PcloudGuideBiz pcloudGuideBiz;
@Autowired
private DelayMessageSender delayMessageSender;
@Override
@ParamLog("新增阶段跳转")
......@@ -328,6 +334,24 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
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("发送阶段跳转邮件")
private void sendEmail(String userWxId, String robotWxId, String content, PersonalStageJumpKeywordDto jumpKeywordDto) {
try {
......@@ -398,13 +422,24 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
return;
}
for (PersonalStageJumpLinkup jumpLinkup : linkups){
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);
if (jumpLinkup.getToStageStartTime()!=null&&jumpLinkup.getToStageStartTime()>0){
LinkupDelayDTO linkupDelayDTO=new LinkupDelayDTO();
linkupDelayDTO.setPersonalStageJumpLinkupId(jumpLinkup.getId());
linkupDelayDTO.setRobotId(robotWxId);
linkupDelayDTO.setWxId(userWxId);
linkupDelayDTO.setIp(ip);
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 {
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 {
@ApiModelProperty("衔接语")
private String linkupContent;
@ApiModelProperty("距离阶段开始时间")
private Integer toStageStartTime;
}
\ No newline at end of file
......@@ -38,7 +38,7 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO {
private List<String> emails;
@Size(max = 5, message = "衔接语不能超过5个")
private List<String> linkupContents;
private List<PersonalStageJumpLinkup> linkups;
public static List<PersonalStageJumpKeyword> valueToJumpKeywords(BaseStageJumpRequestVO vo, Long personalStageJumpId){
List<String> keywords = vo.getKeywords();
......@@ -72,15 +72,16 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO {
}
public static List<PersonalStageJumpLinkup> valueToJumpLinkups(BaseStageJumpRequestVO vo, Long personalStageJumpId){
List<String> linkupContents = vo.getLinkupContents();
if (ListUtils.isEmpty(linkupContents)){
List<PersonalStageJumpLinkup> linkups = vo.getLinkups();
if (ListUtils.isEmpty(linkups)){
return new ArrayList<>();
}
List<PersonalStageJumpLinkup> jumpLinkups = new ArrayList<>();
for (String linkupContent : linkupContents){
for (PersonalStageJumpLinkup linkup : linkups){
PersonalStageJumpLinkup jumpLinkup = new PersonalStageJumpLinkup();
jumpLinkup.setLinkupContent(linkupContent);
jumpLinkup.setLinkupContent(linkup.getLinkupContent());
jumpLinkup.setPersonalStageJumpId(personalStageJumpId);
jumpLinkup.setToStageStartTime(linkup.getToStageStartTime());
jumpLinkups.add(jumpLinkup);
}
return jumpLinkups;
......
......@@ -6,10 +6,11 @@
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="personalStageJumpId" column="personal_stage_jump_id" jdbcType="BIGINT"/>
<result property="linkupContent" column="linkup_content" jdbcType="VARCHAR"/>
<result property="toStageStartTime" column="to_stage_start_time" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id, personal_stage_jump_id, linkup_content
id, personal_stage_jump_id, linkup_content, to_stage_start_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
......@@ -50,11 +51,13 @@
insert into personal_stage_jump_linkup
<trim prefix="(" suffix=")" suffixOverrides=",">
personal_stage_jump_id,
linkup_content
linkup_content,
to_stage_start_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{personalStageJumpId,jdbcType=BIGINT},
#{linkupContent,jdbcType=VARCHAR}
#{linkupContent,jdbcType=VARCHAR},
#{toStageStartTime,jdbcType=INTEGER}
</trim>
</insert>
......@@ -62,13 +65,15 @@
insert into personal_stage_jump_linkup
<trim prefix="(" suffix=")" suffixOverrides=",">
personal_stage_jump_id,
linkup_content
linkup_content,
to_stage_start_time
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
#{item.personalStageJumpId,jdbcType=BIGINT},
#{item.linkupContent,jdbcType=VARCHAR}
#{item.linkupContent,jdbcType=VARCHAR},
#{item.toStageStartTime,jdbcType=INTEGER}
</trim>
</foreach>
</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