Commit cb3064c9 by 章春雨

Merge branch 'fix-zp1002473' into 'master'

重置体验非关键词缓存数量清空

See merge request rays/pcloud-book!492
parents b6cb1c6a a7f7c7eb
......@@ -56,4 +56,6 @@ public interface BookGuideBiz {
void sendGuideMessage(PushAddUserMessageDTO pushAddUserMessageDTO);
Map<String, Object> getGuideMessage(String weixinGroupId, String wexinGroupName);
void sendGuideNew(AgreeAddUserDTO agreeAddUserDTO);
}
......@@ -57,6 +57,7 @@ import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.personalstage.biz.PersonalStageBiz;
import com.pcloud.book.personalstage.constant.PersonalStageConstant;
import com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
......@@ -264,6 +265,124 @@ public class BookGuideBizImpl implements BookGuideBiz {
}
}
@ParamLog("重置体验同意加好友发送欢迎语")
@Override
public void sendGuideNew(AgreeAddUserDTO agreeAddUserDTO) {
if(null == agreeAddUserDTO || StringUtil.isBlank(agreeAddUserDTO.getRobotWxId()) || StringUtil.isBlank(agreeAddUserDTO.getUserWxId())) {
log.info("[同意加好友发送欢迎语] 参数为空 agreeAddUserDTO:{}", agreeAddUserDTO);
return ;
}
String cipher = agreeAddUserDTO.getCipher();
//如果暗号为空,表示直接加好友,需要发送统一欢迎语
if (cipher == null) {
//发送配置欢迎语 create by lihao 2020.2.7
//判断是否是平台端小号
PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(agreeAddUserDTO.getRobotWxId());
if (pcloudRobot!=null){
pcloudRobotBiz.sendWelcomeReply(agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp());
//好友引导语
sendFriendGuide(null, agreeAddUserDTO);
if (personalStageBiz.isPersonalStageUser(agreeAddUserDTO.getRobotWxId())){
Long personalStageId = personalStageBiz.createAddUserStageUser(agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp());
//清空缓存中该阶段的非关键词数量
//刪除发送非关键词次数緩存
JedisClusterUtils.del(PersonalStageConstant.USER_SEND_KEYWORD_COUNT_LOCK + personalStageId + "_" + agreeAddUserDTO.getUserWxId());
}
return;
}
SendTextMessageVO vo = new SendTextMessageVO();
vo.setContent("终于和您见面了!\n请告诉我您在读哪本书?\n如果您在上一步中复制了暗号,\n您可以把暗号粘贴在下方对话框内,以微信聊天的形式发给我。" +
"\n如果在上一步中,没有提示您复制暗号,\n您可以在【书中二维码旁】找到本书的简称及年份,\n在下方对话框内输入本书简称及年份,以微信聊天的形式发给我。");
vo.setCode(SendMessageTypeEnum.SELF.getCode());
vo.setWxId(agreeAddUserDTO.getRobotWxId());
vo.setAltId(agreeAddUserDTO.getRobotWxId());
vo.setWxGroupId(agreeAddUserDTO.getUserWxId());
vo.setIp(agreeAddUserDTO.getIp());
WxGroupSDK.sendTextMessage(vo);
return;
}
if (StringUtil.isBlank(cipher)) {
cipher = wechatGroupConsr.getCipherByRobotAndUserWxId(agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId());
}
if (StringUtil.isBlank(cipher)) {
log.info("[同意加好友发送欢迎语] 暗号为空 agreeAddUserDTO:{}", agreeAddUserDTO);
return;
}
final JoinGroupCipherDTO dto = joinGroupCipherDao.getDTOByCipher(cipher);
//获取群
GroupQrcodeBaseInfoVO wxGroup = bookGroupClassifyBiz.getWxGroupIdByClassifyIdAndWechatId(dto.getClassifyId(), dto.getWechatUserId());
//判断是否是品牌方进具体群,如果是,从暗号表获取已经定好的群
if ((!StringUtil.isEmpty(agreeAddUserDTO.getCipher())) && agreeAddUserDTO.getCipher().contains("RAYS_")) {
JoinGroupCipher jgc = joinGroupCipherDao.getByCipher(agreeAddUserDTO.getCipher());
if (CipherTypeEnum.QRCODE_CIPHER.code.equals(jgc.getType())) {
wxGroup = groupQrcodeDao.getBaseById(jgc.getQrcodeId());
}
}
if (null == wxGroup) {
log.error("[同意加好友发送欢迎语] : bookGroupClassifyBiz.getWxGroupIdByClassifyIdAndWechatId dto:{}");
throw new BookBizException(BookBizException.ID_NOT_EXIST, "群不存在");
}
String wxGroupId = wxGroup.getWeixinGroupId();
if (agreeAddUserDTO.getFirst() != null && agreeAddUserDTO.getFirst()) {
// 如果是第一次就只发欢迎文案
SendTextMessageVO vo = new SendTextMessageVO();
// vo.setContent("你好,我是本书智能小助手,请回复你的进群暗号,获取本书资源服务,以及入群链接如果忘了进群暗号,请重新扫描书上的二维码,点击入群即可获取");
vo.setContent("你好,我是本书智能小助手。请输入关键词获取本书相应的资源服务。");
vo.setCode(SendMessageTypeEnum.SELF.getCode());
vo.setWxId(agreeAddUserDTO.getRobotWxId());
vo.setAltId(agreeAddUserDTO.getRobotWxId());
vo.setWxGroupId(agreeAddUserDTO.getUserWxId());
vo.setIp(agreeAddUserDTO.getIp());
log.info("[同意加好友发送欢迎语] : {}", vo);
WxGroupSDK.sendTextMessage(vo);
}
// 如果不是第一次就发关键词
// 根据暗号获取分类id和bookGroupId推送关键词欢迎语
List<KeywordDTO> keywords = bookKeywordBiz.listFiveKeyword(dto.getClassifyId(), dto.getBookGroupId());
//发主打资源
sendMainKeyword(keywords,agreeAddUserDTO,dto,wxGroupId);
//发关键词列表
SendWeixinRequestTools.sendKeywordsInfoToSelf(keywords, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp());
// 拉群
// final Integer peopleCounts = wxGroup.getUserNumber();
// 邀请好友进群有次数限制,目前测试为每天只能拉30-40人就操作频繁,所以在此加判断,超过30人或者群人数超过30人就发送邀请链接
final String num = JedisClusterUtils.get(BookConstant.WXGROUP_ADD_USER_NUM + agreeAddUserDTO.getRobotWxId());
log.info("[同意加好友发送欢迎语] 拉群 agreeAddUserDTO:{}, wxGroup:{}, num:{}", agreeAddUserDTO, wxGroup, num);
if (StringUtil.isBlank(wxGroupId)) {
log.info("[同意加好友发送欢迎语] 拉群 没有找到群 bookGroupClassifyBiz.getGroupQrcode4ClassifyWechat JoinGroupCipherDTO :{}", dto);
return;
}
// 1001666 刘娜需求-1v1客服机器人,不直接拉人,30人以下也发邀请链接
// 生产环境限制30,其它5和10,全部使用群链接
// final boolean isPro = "pro".equalsIgnoreCase(BookProps.getSystemEnv());
// if ((!StringUtil.isBlank(num) && Integer.parseInt(num) >= (isPro ? 30 : 5)) || peopleCounts >= (isPro ? 30 : 10)) {
SendGroupInviteVO sendGroupInviteVO = new SendGroupInviteVO();
sendGroupInviteVO.setAltId(agreeAddUserDTO.getRobotWxId());
sendGroupInviteVO.setWxId(agreeAddUserDTO.getUserWxId());
sendGroupInviteVO.setWxGroupId(wxGroupId);
sendGroupInviteVO.setIp(agreeAddUserDTO.getIp());
WxGroupSDK.sendGroupInvite(sendGroupInviteVO);
log.info("[同意加好友发送欢迎语] 发送进群链接 sendGroupInviteVO:{}", sendGroupInviteVO);
// 进群之后更新群qrCodeId
// updateQrcodeForCipher(wxGroupId, cipher, agreeAddUserDTO.getUserWxId());
// return;
// }
// AddToGroupVO vo1 = new AddToGroupVO();
// vo1.setWxGroupId(wxGroupId);
// vo1.setWxId(agreeAddUserDTO.getUserWxId());
// vo1.setAltId(agreeAddUserDTO.getRobotWxId());
// vo1.setIp(agreeAddUserDTO.getIp());
// log.info("[同意加好友发送欢迎语 拉群] AddToGroupVO :{}", vo1);
// WxGroupSDK.addToGroup(vo1);
// 进群之后更新群qrCodeId
updateQrcodeForCipher(wxGroupId, cipher, agreeAddUserDTO.getUserWxId());
// 拉一次+1
if (StringUtil.isBlank(num)) {
JedisClusterUtils.getSet(BookConstant.WXGROUP_ADD_USER_NUM + agreeAddUserDTO.getRobotWxId(), "1", 3600 * 24);
} else {
JedisClusterUtils.incr(BookConstant.WXGROUP_ADD_USER_NUM + agreeAddUserDTO.getRobotWxId());
}
}
/**
* 推好友引导语
* @param bookGroupId
......
......@@ -99,7 +99,7 @@ public class WxGroupSendTextListener {
agreeAddUserDTO.setRobotWxId( sendTextDTO.getWxId());
agreeAddUserDTO.setUserWxId(sendTextDTO.getWechatGroupId());
agreeAddUserDTO.setFirst(false);
bookGuideBiz.sendGuide(agreeAddUserDTO);
bookGuideBiz.sendGuideNew(agreeAddUserDTO);
return;
}
// 更新群人数和群名称
......
......@@ -44,7 +44,7 @@ public interface PersonalStageBiz {
Boolean isPersonalStageUser(String robotId);
void createAddUserStageUser(String robotId, String userWxId, String ip);
Long createAddUserStageUser(String robotId, String userWxId, String ip);
void dealDelayWakeup(DelayQueueDTO dto);
......
......@@ -41,7 +41,6 @@ import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK;
import org.apache.commons.collections.MapUtils;
import org.elasticsearch.index.mapper.MapperUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -416,15 +415,16 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
@ParamLog("加好友时插入初始状态")
@Override
public void createAddUserStageUser(String robotId, String userWxId, String ip) {
public Long createAddUserStageUser(String robotId, String userWxId, String ip) {
//查询第一个阶段
PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(robotId);
Long robotClassifyId=pcloudRobot.getRobotType().longValue();
PersonalStage firstStage = personalStageDao.getFirstStage(robotClassifyId);
if (firstStage==null){
return;
return null;
}
nextStageAddStageUserAndWakeupDelay (robotId, userWxId, ip, firstStage.getId());
return firstStage.getId();
}
@ParamLog("处理延时唤醒")
......
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