Commit ca1ef6ce by 阮思源

C1001733 1v1模式优化,缩短路径

parent c4fafc09
......@@ -247,4 +247,5 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
List<ClassifyQrcodeVO> getQrcodeByClassifyId(Long classifyId);
List<GroupQrcode> getListByBookGroupIds(List<Long> bookGroupIds);
}
......@@ -29,4 +29,6 @@ public interface JoinGroupCipherDao extends BaseDao<JoinGroupCipher> {
BigDecimal getPayPrice(String wxId, Long qrcodeId);
JoinGroupCipher getByCondition(Long wechatUserId, Long bookGroupId, Integer type);
List<JoinGroupCipher> getListByAltIdAndWxIdAndType(String robotId, String userWxId, Integer code);
}
......@@ -227,6 +227,11 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
}
@Override
public List<GroupQrcode> getListByBookGroupIds(List<Long> bookGroupIds) {
return this.getSqlSession().selectList(this.getStatement("getListByBookGroupIds"), bookGroupIds);
}
@Override
public List<Long> getIdsByBookId(Long bookId) {
return getSessionTemplate().selectList(getStatement("getIdsByBookId"), bookId);
}
......
......@@ -78,4 +78,13 @@ public class JoinGroupCipherDaoImpl extends BaseDaoImpl<JoinGroupCipher> impleme
map.put("type",type);
return this.getSqlSession().selectOne(this.getStatement("getByCondition"), map);
}
@Override
public List<JoinGroupCipher> getListByAltIdAndWxIdAndType(String robotId, String userWxId, Integer type) {
Map<String,Object> map=new HashMap<>();
map.put("robotId",robotId);
map.put("userWxId",userWxId);
map.put("type",type);
return this.getSqlSession().selectOne(this.getStatement("getListByAltIdAndWxIdAndType"), map);
}
}
......@@ -18,11 +18,14 @@ import com.pcloud.book.group.dao.AppTouchRecordDao;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dao.JoinGroupCipherDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.JoinGroupCipherDTO;
import com.pcloud.book.group.entity.AppTouchRecord;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.entity.JoinGroupCipher;
import com.pcloud.book.group.enums.CipherTypeEnum;
import com.pcloud.book.group.enums.QrcodeStatusEnum;
import com.pcloud.book.group.enums.TouchTypeEnum;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
......@@ -69,6 +72,7 @@ import com.pcloud.resourcecenter.product.dto.ProductTypeDto;
import com.pcloud.wechatgroup.group.dto.RobotReplyDTO;
import com.pcloud.wechatgroup.message.dto.SendTextDTO;
import com.sdk.wxgroup.ChangeNameVO;
import com.sdk.wxgroup.SendGroupInviteVO;
import com.sdk.wxgroup.SendMessageTypeEnum;
import com.sdk.wxgroup.WxGroupSDK;
......@@ -134,6 +138,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
private BookGroupBiz bookGroupBiz;
@Autowired
private GroupQrcodeBiz groupQrcodeBiz;
@Autowired
private JoinGroupCipherDao joinGroupCipherDao;
@Override
@ParamLog("新增关键词")
......@@ -456,6 +462,14 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
this.sendKeywordMessageToGroup(sendTextDTO);
return;
}
if (SendMessageTypeEnum.SELF.getCode().equals(sendTextDTO.getCode())) {
//根据机器人id和wxId和类型获取暗号信息
List<JoinGroupCipher> joinGroupCiphers = joinGroupCipherDao.getListByAltIdAndWxIdAndType(robotId, userWxId, CipherTypeEnum.BOOK_GROUP_CIPHER.code);
if (!ListUtils.isEmpty(joinGroupCiphers)) {
inviteToGroupByKeyword(sendTextDTO, joinGroupCiphers);
}
}
//个人机器人接收消息的时候,weixinGroupId就是userWxId,也就是用户的id,robotId是接收的机器人的id
//简单过滤非关键词的词
if (StringUtil.isEmpty(content) || content.length() > 20) {
......@@ -563,6 +577,28 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
}
@ParamLog("根据关键词判断关键词是否为1V1社群群名称")
private void inviteToGroupByKeyword(SendTextDTO sendTextDTO, List<JoinGroupCipher> joinGroupCiphers) {
List<Long> bookGroupIds = joinGroupCiphers.stream().filter(s -> s.getBookGroupId() != null).map(JoinGroupCipher::getBookGroupId).collect(Collectors.toList());
if (!ListUtils.isEmpty(bookGroupIds)) {
List<GroupQrcode> groupQrcodes = groupQrcodeDao.getListByBookGroupIds(bookGroupIds);
if (!ListUtils.isEmpty(groupQrcodes)){
for (GroupQrcode groupQrcode:groupQrcodes){
if (groupQrcode.getGroupName().equals(sendTextDTO.getTextContent())){
//发送邀请入群
SendGroupInviteVO sendGroupInviteVO = new SendGroupInviteVO();
sendGroupInviteVO.setAltId(sendTextDTO.getWxId());
sendGroupInviteVO.setWxId(sendTextDTO.getWechatUserId());
sendGroupInviteVO.setWxGroupId(groupQrcode.getWeixinGroupId());
sendGroupInviteVO.setIp(sendTextDTO.getIp());
WxGroupSDK.sendGroupInvite(sendGroupInviteVO);
log.info("[同意加好友发送欢迎语] 发送进群链接 sendGroupInviteVO:{}", sendGroupInviteVO);
}
}
}
}
}
private boolean insertBookKeywordRecord(String weixinGroupId, String userWxId, ReplyKeywordDTO replyKeywordDTO, GroupClassifyQrcodeDTO dto, String redisContent) {
if (redisContent != null) {
insertBookKeywordRecord(dto, replyKeywordDTO.getKeywordId(), userWxId, weixinGroupId, false);
......
......@@ -664,4 +664,34 @@
from book_group_qrcode where classify_id = #{classifyId} and is_delete = 0
</select>
<!--根据社群码id集合获取-->
<select id="getListByBookGroupIds" parameterType="list" resultMap="BaseResultMap">
SELECT
t.id,
t.classify_id,
t.group_name,
t.group_seq,
t.user_number,
t.weixin_qrcode_id,
t.weixin_group_id,
t.qrcode_url,
t.use_state,
t.qrcode_state,
t.create_user,
t.create_time,
t.update_time,
t.is_delete,
t.riddle_open
FROM
book_group_qrcode t
INNER JOIN book_group_classify t1 ON t.classify_id = t1.id
WHERE
t1.book_group_id IN
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
AND t.is_delete = 0
AND t1.is_delete = 0
GROUP BY t.id
</select>
</mapper>
\ No newline at end of file
......@@ -117,4 +117,14 @@
book_group_id=#{bookGroupId} and
type=#{type}
</select>
<!--根据用户微信id、机器人id、类型获取暗号集合-->
<select id="getListByAltIdAndWxIdAndType" parameterType="map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from join_group_cipher
where wx_id=#{userWxId} and
alt_id=#{robotId} and
type=#{type}
</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