Commit 6e41f8a3 by 阮思源

Merge branch 'feat-1002380' into 'master'

feat-1002380: 个人号群发选择小睿页面新增展示编号与页面优化

See merge request rays/pcloud-book!423
parents da97c757 a22ea45b
......@@ -637,4 +637,15 @@ public class WechatGroupConsr {
}
return pageBeanNew;
}
@ParamLog(value = "根据大类获取个人号", isAfterReturn = false)
public List<RobotBaseInfoDTO> getRobotInfoByTemplet(Integer largeTemplet){
List<RobotBaseInfoDTO> list = new ArrayList<>();
try {
list = ResponseHandleUtil.parseList(selfRobotService.getRobotInfoByTemplet(largeTemplet), RobotBaseInfoDTO.class);
}catch (Exception e){
log.error("[selfRobotService.getRobotInfoByTemplet]调用失败" + e.getMessage(), e);
}
return list;
}
}
......@@ -5,6 +5,7 @@ import com.pcloud.book.pcloudkeyword.dto.PcloudTdDTO;
import com.pcloud.book.pcloudkeyword.entity.PcloudClassifyTemplate;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotResponseVO;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.wechatgroup.message.dto.SendTextDTO;
......@@ -62,4 +63,10 @@ public interface PcloudRobotBiz {
void copyRobotWelcome(String sourceRobotWxId, String targetRobotWxId);
void copyRobotConfiguration(String sourceRobotWxId, String targetRobotWxId);
/**
* 根据分类获取个人号
* @return
*/
PageBeanNew<PcloudRobotResponseVO> listSelfRobotByClassify(Integer largeTemplet, Long classifyId, String keyword, Integer currentPage, Integer numPerPage);
}
......@@ -2,6 +2,7 @@ package com.pcloud.book.pcloudkeyword.biz.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.guide.biz.PcloudGuideBiz;
import com.pcloud.book.guide.biz.PcloudRobotWakeUpBiz;
import com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper;
......@@ -21,6 +22,7 @@ import com.pcloud.book.pcloudkeyword.dto.PcloudTdReplyDTO;
import com.pcloud.book.pcloudkeyword.entity.*;
import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum;
import com.pcloud.book.pcloudkeyword.set.PcloudRobotSet;
import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotResponseVO;
import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.aspect.ParamLog;
......@@ -33,6 +35,7 @@ import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.pcloud.wechatgroup.message.dto.SendTextDTO;
import com.pcloud.wechatgroup.selfrobot.dto.RobotBaseInfoDTO;
import com.sdk.wxgroup.SendFileVO;
import com.sdk.wxgroup.SendMessageTypeEnum;
import com.sdk.wxgroup.SendPicMessageVO;
......@@ -90,6 +93,8 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
private PcloudGuideBiz pcloudGuideBiz;
@Autowired
private PcloudRobotSet pcloudRobotSet;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -474,6 +479,63 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
pcloudGuideBiz.copyGuideSetting(sourceRobotWxId, targetRobotWxId);
}
@Override
public PageBeanNew<PcloudRobotResponseVO> listSelfRobotByClassify(Integer largeTemplet, Long classifyId, String keyword, Integer currentPage, Integer numPerPage) {
List<PcloudRobotResponseVO> vos = new ArrayList<>();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("classifyId", classifyId);
paramMap.put("keyword", keyword);
if (!new Integer(6).equals(largeTemplet)){
List<RobotBaseInfoDTO> baseInfoDTOList = wechatGroupConsr.getRobotInfoByTemplet(largeTemplet);
if (ListUtils.isEmpty(baseInfoDTOList)){
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>());
}
List<String> wxIds = baseInfoDTOList.stream().map(RobotBaseInfoDTO::getWxId).collect(Collectors.toList());
if (null == classifyId && StringUtil.isEmpty(keyword)){
Integer totalCount = baseInfoDTOList.size();
if (wxIds.size() <= numPerPage*currentPage){
return new PageBeanNew<>(currentPage, numPerPage, totalCount, new ArrayList<>());
}
if (wxIds.size() >= numPerPage*(currentPage+1)){
baseInfoDTOList = baseInfoDTOList.subList(numPerPage*currentPage, numPerPage*(currentPage+1));
}else {
baseInfoDTOList = baseInfoDTOList.subList(numPerPage*currentPage, baseInfoDTOList.size());
}
wxIds = baseInfoDTOList.stream().map(RobotBaseInfoDTO::getWxId).collect(Collectors.toList());
Map<String, RobotClassifyDTO> robotClassifyDTOMap = pcloudRobotDao.mapByIds4Classify(wxIds);
for (RobotBaseInfoDTO dto : baseInfoDTOList){
PcloudRobotResponseVO pcloudRobotResponseVO = new PcloudRobotResponseVO();
pcloudRobotResponseVO.setWxId(dto.getWxId());
pcloudRobotResponseVO.setNickName(dto.getNickName());
RobotClassifyDTO robotClassifyDTO = robotClassifyDTOMap.get(dto.getWxId());
if (null != robotClassifyDTO){
pcloudRobotResponseVO.setClassifyId(robotClassifyDTO.getClassifyId());
pcloudRobotResponseVO.setClassifyName(robotClassifyDTO.getClassifyName());
pcloudRobotResponseVO.setUniqueNum(robotClassifyDTO.getUniqueNumber());
}
vos.add(pcloudRobotResponseVO);
}
return new PageBeanNew<>(currentPage, numPerPage, totalCount, vos);
}
paramMap.put("wxIds", wxIds);
}
PageBeanNew<RobotClassifyDTO> pageBeanNew = pcloudRobotDao.listPageNew(new PageParam(currentPage, numPerPage),paramMap, "listSelfRobotByClassify");
List<RobotClassifyDTO> robotClassifyDTOS = pageBeanNew.getRecordList();
if (ListUtils.isEmpty(robotClassifyDTOS)) {
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>());
}
for (RobotClassifyDTO e : robotClassifyDTOS) {
PcloudRobotResponseVO pcloudRobotResponseVO = new PcloudRobotResponseVO();
pcloudRobotResponseVO.setWxId(e.getWxId());
pcloudRobotResponseVO.setNickName(e.getNickName());
pcloudRobotResponseVO.setClassifyId(e.getClassifyId());
pcloudRobotResponseVO.setClassifyName(e.getClassifyName());
pcloudRobotResponseVO.setUniqueNum(e.getUniqueNumber());
vos.add(pcloudRobotResponseVO);
}
return new PageBeanNew<>(currentPage, numPerPage, pageBeanNew.getTotalCount(), vos);
}
private void sendTdReplyMessage(String ip, String robotWxId, String userWxId, List<PcloudTdReplyDTO> replyDTOS) {
for (PcloudTdReplyDTO tdReplyDTO : replyDTOS) {
Integer replyType = tdReplyDTO.getReplyType();
......
......@@ -34,4 +34,5 @@ public interface PcloudRobotDao extends BaseDao<PcloudRobot> {
void updateRobotState(Map<String, Object> map);
List<RobotClassifyDTO> listSelfRobotByClassify(Map<String, Object> paramMap);
}
......@@ -63,4 +63,9 @@ public class PcloudRobotDaoImpl extends BaseDaoImpl<PcloudRobot> implements Pclo
this.getSessionTemplate().update(this.getStatement("updateRobotState"), map);
}
@Override
public List<RobotClassifyDTO> listSelfRobotByClassify(Map<String, Object> paramMap) {
return this.getSessionTemplate().selectList(this.getStatement("listSelfRobotByClassify"), paramMap);
}
}
......@@ -193,4 +193,18 @@ public class PcloudRobotFacade {
return new ResponseDto<>();
}
@ApiOperation(value = "根据小号分类获取小号列表")
@GetMapping("/listSelfRobotByClassify")
ResponseDto<?> listSelfRobotByClassify(
@RequestHeader("token") String token,
@RequestParam(value = "largeTemplet") Integer largeTemplet,
@RequestParam(value = "classifyId", required = false) Long classifyId,
@RequestParam(value = "keyword", required = false) String keyword,
@RequestParam(value = "currentPage") Integer currentPage,
@RequestParam(value = "numPerPage") Integer numPerPage
) throws BizException, PermissionException{
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(pcloudRobotBiz.listSelfRobotByClassify(largeTemplet, classifyId, keyword, currentPage, numPerPage));
}
}
package com.pcloud.book.pcloudkeyword.facade.response;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PcloudRobotResponseVO {
private String wxId;
private String nickName;
private Boolean resourceOpen;
private Integer classifyId;
private String classifyName;
private String uniqueNum;
}
package com.pcloud.book.push.biz.impl;
import com.pcloud.book.advertising.enums.PutTypeEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.user.PartyConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
......@@ -12,6 +11,7 @@ import com.pcloud.book.group.dto.SelfRobotBookGroupDTO;
import com.pcloud.book.group.entity.WeixinQrcodeGeneration;
import com.pcloud.book.group.set.GroupSet;
import com.pcloud.book.group.vo.UserBookInfoVO;
import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.book.push.constant.PushConstant;
......@@ -25,7 +25,6 @@ import com.pcloud.book.push.entity.SelfPushItem;
import com.pcloud.book.push.entity.SelfPushUser;
import com.pcloud.book.push.enums.ItemTypeEnum;
import com.pcloud.book.push.enums.PushStatusEnum;
import com.pcloud.book.reading.constant.ReadingActivityConstant;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.SystemCode;
......@@ -490,9 +489,12 @@ public class SelfPushBizImpl implements SelfPushBiz {
}
List<String> wxIds = pageBeanNew.getRecordList().stream().filter(s -> !StringUtil.isEmpty(s.getAltId())).map(SelfPushRecordDTO::getAltId).distinct().collect(Collectors.toList());
Map<String, GroupUserDTO> robotMap = new HashMap<>();
Map<String, RobotClassifyDTO> robotClassifyDTOMap =new HashMap<>();
if (!ListUtils.isEmpty(wxIds)){
robotMap = wechatGroupConsr.mapRobotInfoByIdList(wxIds);
robotClassifyDTOMap=pcloudRobotBiz.mapByIds4Classify(wxIds);
}
List<Long> pcloudPartyIds = pageBeanNew.getRecordList().stream().filter(s->!StringUtil.isEmpty(s.getAltId())).map(SelfPushRecordDTO::getCreateUser).distinct().collect(Collectors.toList());
Map<Long, UserLogin> loginMap = new HashMap<>();
if (!ListUtils.isEmpty(pcloudPartyIds)){
......@@ -511,6 +513,12 @@ public class SelfPushBizImpl implements SelfPushBiz {
GroupUserDTO userDTO = robotMap.get(dto.getAltId());
dto.setRobotName(userDTO.getNickName());
}
if (!MapUtils.isEmpty(robotClassifyDTOMap) && !StringUtil.isEmpty(dto.getAltId()) && robotClassifyDTOMap.containsKey(dto.getAltId())) {
RobotClassifyDTO robotClassifyDTO = robotClassifyDTOMap.get(dto.getAltId());
dto.setClassifyId(null!=robotClassifyDTO?robotClassifyDTO.getClassifyId():null);
dto.setClassifyName(null!=robotClassifyDTO?robotClassifyDTO.getClassifyName():null);
dto.setUniqueNumber(null!=robotClassifyDTO?robotClassifyDTO.getUniqueNumber():null);
}
if (null != dto.getBookGroupId()){
BookGroupDTO bookGroupDTO = bookGroupDao.getBookBaseInfoById(dto.getBookGroupId());
dto.setBookName(bookGroupDTO.getBookName());
......
......@@ -3,13 +3,12 @@ package com.pcloud.book.push.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.push.entity.SelfPushItem;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @描述:个人号群发记录
* @作者:zhuyajie
......@@ -116,6 +115,15 @@ public class SelfPushRecordDTO extends BaseDto{
@ApiModelProperty("发送内容列表")
private List<SelfPushItem> selfPushItemList;
@ApiModelProperty("分类名称")
private String classifyName;
@ApiModelProperty("小号分类id")
private Integer classifyId;
@ApiModelProperty("小号编号")
private String uniqueNumber;
......
......@@ -262,4 +262,30 @@
where id=#{id}
</update>
<select id="listSelfRobotByClassify" parameterType="map" resultType="com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO">
select
p.wx_id wxId,
p.nick_name nickName,
p.robot_type classifyId,
p.unique_number uniqueNumber,
pr.classify_name classifyName
from
pcloud_robot p
left join pcloud_robot_classify pr
on p.robot_type = pr.id
where
pr.is_delete = 0
<if test="classifyId != null">
AND p.robot_type = #{classifyId}
</if>
<if test="keyword != null">
AND (p.wx_id = #{keyword} OR p.unique_number like concat('%', #{keyword}, '%'))
</if>
<if test="wxIds != null and wxIds.size > 0">
AND p.wx_id in
<foreach collection="wxIds" item="item" open="(" close=")" separator=",">
'${item}'
</foreach>
</if>
</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