Commit b1b0e011 by 裴大威

Merge branch 'feat-1002351' into 'master'

复制

See merge request rays/pcloud-book!406
parents 510c9df7 27d095f7
......@@ -20,4 +20,6 @@ public interface PcloudGuideBiz {
void create4Robot(Create4RobotVO create4RobotVO);
void setSilenceDuration(RobotSilenceVO robotSilenceVO);
void copyGuideSetting(String fromRobotWxId, String toRobotWxId);
}
......@@ -18,4 +18,6 @@ public interface PcloudRobotWakeUpBiz {
void doJob();
List<PcloudRobotClassifyResponseVO> listAllClassify();
void copyRobotWakeUp(String sourceWxId, String targetWxId);
}
......@@ -164,4 +164,23 @@ public class PcloudGuideBizImpl implements PcloudGuideBiz {
}
pcloudRobotSilenceMapper.setSilenceDuration(robotSilenceVO.getRobotWxId(), robotSilenceVO.getSilenceDuration());
}
/**
* 复制小号的引导语相关设置
*/
@Override
public void copyGuideSetting(String fromRobotWxId, String toRobotWxId) {
List<Integer> pcloudGuideIds = pcloudGuideMapper.listPcloudGuideIds(fromRobotWxId);
if (!ListUtils.isEmpty(pcloudGuideIds)) {
Create4RobotVO create4RobotVO = new Create4RobotVO();
create4RobotVO.setRobotWxId(toRobotWxId);
create4RobotVO.setPcloudGuideIds(pcloudGuideIds);
create4Robot(create4RobotVO);
}
//设置缄默时长
Integer silenceDurationByRobotWxId = pcloudRobotSilenceMapper.getSilenceDurationByRobotWxId(fromRobotWxId);
if (null != silenceDurationByRobotWxId) {
pcloudRobotSilenceMapper.setSilenceDuration(toRobotWxId, silenceDurationByRobotWxId);
}
}
}
......@@ -14,6 +14,7 @@ import com.pcloud.book.guide.vo.RobotWakeUpMsgVO;
import com.pcloud.book.guide.vo.RobotWakeUpShowVO;
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.pcloudkeyword.facade.response.PcloudRobotClassifyResponseVO;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
......@@ -34,8 +35,7 @@ import org.springframework.stereotype.Component;
import java.util.*;
import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.PCLOUD_ROBOT_WAKE_UP_SUFFIX;
import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.PCLOUD_WAKE_UP_CRON_JOB;
import static com.pcloud.book.guide.constant.PcloudGuideRedisConstant.*;
@Component("pcloudRobotWakeUpBiz")
@Slf4j
......@@ -97,8 +97,8 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz {
pcloudWakeupMessage.setType("image");
pcloudWakeupMessage.setImgUrl(robotWakeUpMsgVO.getPicUrl());
} else if (robotWakeUpMsgVO.getReplyType() == 5) {
String code = StringUtil.isEmpty(robotWakeUpMsgVO.getResourceTypeCode())?" ":robotWakeUpMsgVO.getResourceTypeCode();
String size = StringUtil.isEmpty(robotWakeUpMsgVO.getSize())?" ":robotWakeUpMsgVO.getSize();
String code = StringUtil.isEmpty(robotWakeUpMsgVO.getResourceTypeCode()) ? " " : robotWakeUpMsgVO.getResourceTypeCode();
String size = StringUtil.isEmpty(robotWakeUpMsgVO.getSize()) ? " " : robotWakeUpMsgVO.getSize();
List<String> infos = new ArrayList<>();
infos.add(code);
infos.add(size);
......@@ -197,7 +197,7 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz {
robotWakeUpMsgVO.setPicUrl(pcloudWakeupMessage.getImgUrl());
} else if ("file".equals(pcloudWakeupMessage.getType())) {
List<String> array = JSONObject.parseArray(pcloudWakeupMessage.getTextContent(), String.class);
if (array.size()>1){
if (array.size() > 1) {
robotWakeUpMsgVO.setResourceTypeCode(array.get(0));
robotWakeUpMsgVO.setSize(array.get(1));
}
......@@ -226,10 +226,10 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz {
if (ListUtils.isEmpty(list)) {
return;
}
log.info("[开始自动唤醒 推送消息] msg: {}",JSONObject.toJSONString(list));
log.info("[开始自动唤醒 推送消息] msg: {}", JSONObject.toJSONString(list));
for (String robot : allRobot) {
Map<String, String> userInfo = JedisClusterUtils.hgetAll(robot+PCLOUD_ROBOT_WAKE_UP_SUFFIX);
Map<String, String> userInfo = JedisClusterUtils.hgetAll(robot + PCLOUD_ROBOT_WAKE_UP_SUFFIX);
if (userInfo.isEmpty()) {
return;
}
......@@ -283,4 +283,17 @@ public class PcloudRobotWakeUpBizImpl implements PcloudRobotWakeUpBiz {
return pcloudRobotWakeupMapper.listAllClassify();
}
@Override
public void copyRobotWakeUp(String sourceWxId, String targetWxId) {
PcloudRobot sourceRobot = pcloudRobotDao.getByWxId(sourceWxId);
if (sourceRobot == null) {
throw new BookBizException(BookBizException.ERROR, "源个人号未录入!");
}
if (sourceRobot.getRobotType() != null && sourceRobot.getWakeUp() == 1) {
pcloudRobotDao.updateWakeUpByClassifyIds(Collections.singletonList(sourceRobot.getRobotType()));
}
}
}
......@@ -33,4 +33,6 @@ public interface PcloudGuideMapper {
List<PcloudGuide> listByRobotId(String robotId);
PcloudGuide getFirstByRobotId(@Param("robotId") String robotId, @Param("num") int num);
List<Integer> listPcloudGuideIds(String robotWxId);
}
\ No newline at end of file
......@@ -55,4 +55,7 @@ public interface PcloudRobotBiz {
String getTdKeyword();
void copyRobotWelcome(String sourceRobotWxId, String targetRobotWxId);
void copyRobotConfiguration(String sourceRobotWxId, String targetRobotWxId);
}
......@@ -2,28 +2,31 @@ 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.group.dto.LargeTempletDTO;
import com.pcloud.book.group.enums.LargeTempletEnum;
import com.pcloud.book.guide.biz.PcloudGuideBiz;
import com.pcloud.book.guide.biz.PcloudRobotWakeUpBiz;
import com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper;
import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotClassifyBiz;
import com.pcloud.book.pcloudkeyword.dao.PcloudClassifyTemplateDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordClassifyDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordNameDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotQrcodeDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotWelcomeDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudTdDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudTdRecordDao;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdDTO;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdReplyDTO;
import com.pcloud.book.pcloudkeyword.entity.PcloudClassifyTemplate;
import com.pcloud.book.pcloudkeyword.entity.PcloudKeywordClassify;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotQrcode;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.book.pcloudkeyword.dao.*;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdDTO;
import com.pcloud.book.pcloudkeyword.dto.PcloudTdReplyDTO;
import com.pcloud.book.pcloudkeyword.entity.*;
import com.pcloud.book.pcloudkeyword.entity.PcloudTd;
import com.pcloud.book.pcloudkeyword.entity.PcloudTdRecord;
import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum;
import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotClassifyResponseVO;
import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
......@@ -34,7 +37,11 @@ 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.sdk.wxgroup.*;
import com.sdk.wxgroup.SendFileVO;
import com.sdk.wxgroup.SendMessageTypeEnum;
import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
......@@ -74,6 +81,12 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
private PcloudTdRecordDao pcloudTdRecordDao;
@Autowired
private PcloudKeywordNameDao pcloudKeywordNameDao;
@Autowired
private SelfPushBiz selfPushBiz;
@Autowired
private PcloudRobotWakeUpBiz pcloudRobotWakeUpBiz;
@Autowired
private PcloudGuideBiz pcloudGuideBiz;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -393,6 +406,42 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
return StringUtil.isEmpty(tdKeyword) ? "" : tdKeyword;
}
@Override
public void copyRobotWelcome(String sourceRobotWxId, String targetRobotWxId) {
PcloudRobot sourceRobot = pcloudRobotDao.getByWxId(sourceRobotWxId);
if(sourceRobot == null) {
throw new BookBizException(BookBizException.ERROR,"源个人号未录入!");
}
PcloudRobot targetRobot = pcloudRobotDao.getByWxId(targetRobotWxId);
if(targetRobot == null) {
throw new BookBizException(BookBizException.ERROR,"目标个人号未录入!");
}
targetRobot.setClassifyId(sourceRobot.getClassifyId());
targetRobot.setKeywordClassifyId(sourceRobot.getKeywordClassifyId());
pcloudRobotDao.update(targetRobot);
List<PcloudRobotWelcome> sourceWelcomeList = pcloudRobotWelcomeDao.getRobotWelcomeListByPcloudRobotId(sourceRobot.getId());
List<PcloudRobotWelcome> targetWelcomeList = new ArrayList<>();
for(PcloudRobotWelcome sourceWelcome : sourceWelcomeList) {
PcloudRobotWelcome targetWelcome = new PcloudRobotWelcome();
BeanUtils.copyProperties(sourceWelcome, targetWelcome);
targetWelcome.setPcloudRobotId(targetRobot.getId());
targetWelcomeList.add(targetWelcome);
}
pcloudRobotWelcomeDao.batchInsert(targetWelcomeList);
}
@Override
public void copyRobotConfiguration(String sourceRobotWxId, String targetRobotWxId) {
//欢迎语
copyRobotWelcome(sourceRobotWxId, targetRobotWxId);
//全部好友设置的群发复制
selfPushBiz.copyRobotData(sourceRobotWxId, targetRobotWxId);
// 复制自动唤醒配置
pcloudRobotWakeUpBiz.copyRobotWakeUp(sourceRobotWxId,targetRobotWxId);
//复制引导语
pcloudGuideBiz.copyGuideSetting(sourceRobotWxId, targetRobotWxId);
}
private void sendTdReplyMessage(String ip, String robotWxId, String userWxId, List<PcloudTdReplyDTO> replyDTOS) {
for (PcloudTdReplyDTO tdReplyDTO : replyDTOS) {
Integer replyType = tdReplyDTO.getReplyType();
......
......@@ -170,4 +170,14 @@ public class PcloudRobotFacade {
return new ResponseDto<>();
}
@ApiOperation("复制小号配置(欢迎语/引导语/群发/自动唤醒)")
@GetMapping("/copyRobotConfiguration")
ResponseDto<?> copyRobotConfiguration(
@RequestParam(value = "sourceRobotWxId") @ApiParam("源小号wxid") String sourceRobotWxId,
@RequestParam(value = "targetRobotWxId") @ApiParam("目的小号wxid") String targetRobotWxId
) throws BizException, PermissionException {
pcloudRobotBiz.copyRobotConfiguration(sourceRobotWxId,targetRobotWxId);
return new ResponseDto<>();
}
}
......@@ -47,4 +47,11 @@ public interface SelfPushBiz {
* @param pushId
*/
void deleteByPushId(Long pushId);
/**
* 复制配置到另一个小号
* @param originRobot
* @param targetRobot
*/
void copyRobotData(String originRobot, String targetRobot);
}
......@@ -25,6 +25,7 @@ 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;
......@@ -558,9 +559,41 @@ public class SelfPushBizImpl implements SelfPushBiz {
@Override
public void deleteByPushId(Long pushId) {
SelfPush selfPush = selfPushDao.getById(pushId);
selfPushDao.deleteById(pushId);
selfPushItemDao.deleteByPushId(pushId);
selfPushUserDao.deleteByPushId(pushId);
try {
scheduleService.deleteJob(self_push_SCHEDULE_PRE + pushId, "book");
} catch (Exception e) {
log.error("删除定时任务失败,selfPushId+" + pushId);
}
}
@Override
@ParamLog("全部好友设置的群发复制")
public void copyRobotData(String originRobot, String targetRobot) {
List<SelfPush> selfPushList = selfPushDao.getUnclosedByRobot(originRobot);
if (ListUtils.isEmpty(selfPushList)){
return;
}
for (SelfPush selfPush :selfPushList){
List<SelfPushItem> selfPushItemList = selfPushItemDao.getByPushId(selfPush.getId());
List<String> userList = selfPushUserDao.getUserIdListByPushId(selfPush.getId());
SelfPushAddParamDTO addParamDTO = new SelfPushAddParamDTO();
addParamDTO.setAltId(targetRobot);
addParamDTO.setSystemCode(SystemCode.pcloud.code);
addParamDTO.setPushItemList(selfPushItemList);
addParamDTO.setSendAll(true);
addParamDTO.setSendNow(false);
addParamDTO.setUserIdList(userList);
addParamDTO.setPushType(selfPush.getPushType());
addParamDTO.setWeekDays(selfPush.getWeekDays());
addParamDTO.setSendTime(selfPush.getPushSendTime());
if (null != selfPush.getStartTime()){
addParamDTO.setStartTime(DateUtils.formatDate(selfPush.getStartTime()));
addParamDTO.setEndTime(DateUtils.formatDate(selfPush.getEndTime()));
}
createSelfPush(selfPush.getCreateUser(), addParamDTO);
}
}
}
......@@ -3,6 +3,8 @@ package com.pcloud.book.push.dao;
import com.pcloud.book.push.entity.SelfPush;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @描述:个人号群发
* @作者:zhuyajie
......@@ -10,4 +12,6 @@ import com.pcloud.common.core.dao.BaseDao;
* @版本:1.0
*/
public interface SelfPushDao extends BaseDao<SelfPush>{
List<SelfPush> getUnclosedByRobot(String altId);
}
......@@ -6,6 +6,8 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @描述:个人号群发
* @作者:zhuyajie
......@@ -14,4 +16,8 @@ import org.springframework.stereotype.Component;
*/
@Component("selfPushDao")
public class SelfPushDaoImpl extends BaseDaoImpl<SelfPush> implements SelfPushDao {
@Override
public List<SelfPush> getUnclosedByRobot(String altId) {
return getSessionTemplate().selectList(getStatement("getUnclosedByRobot"), altId);
}
}
......@@ -198,4 +198,8 @@
seq_num ASC
LIMIT #{num}, 1
</select>
<select id="listPcloudGuideIds" resultType="Integer">
select id from pcloud_guide where robot_wx_id = #{robotWxId}
</select>
</mapper>
\ No newline at end of file
......@@ -50,4 +50,19 @@
WHERE id= #{id}
</delete>
<select id="getUnclosedByRobot" parameterType="string" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM
self_push
WHERE
send_all = 1
AND send_now = 0
AND (
send_time > CURTIME()
OR CURTIME() BETWEEN start_time
AND end_time
)
AND alt_id = #{altId}
</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