提交 ee422d06 编写于 作者: Y YaoYuHang

社群运营 - 代码优化、新客获取详情问题解决

上级 844e64a4
......@@ -84,7 +84,7 @@ public class WeCommunityPresTagGroupController extends BaseController {
if (StringUtils.isNull(taskVo)) {
return AjaxResult.error(HttpStatus.NOT_FOUND, "群活码不存在");
}
return AjaxResult.success();
return AjaxResult.success(taskVo);
}
/**
......
......@@ -2,6 +2,7 @@ package com.linkwechat.wecom.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -11,6 +12,7 @@ import lombok.NoArgsConstructor;
* @Date 2021/3/26 14:21
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WeGroupCodeVo {
......
......@@ -2,6 +2,7 @@ package com.linkwechat.wecom.factory.impl.customer;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.linkwechat.common.config.CosConfig;
import com.linkwechat.common.constant.WeConstans;
import com.linkwechat.common.enums.MediaType;
import com.linkwechat.common.utils.StringUtils;
......@@ -49,6 +50,12 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
private IWeTaskFissionService weTaskFissionService;
private ThreadLocal<WeFlowerCustomerRel> weFlowerCustomerRelThreadLocal = new ThreadLocal<>();
@Autowired
private IWeGroupCodeService weGroupCodeService;
@Autowired
private CosConfig cosConfig;
@Override
public void eventHandle(WxCpXmlMessageVO message) {
if (message.getExternalUserId() != null) {
......@@ -61,7 +68,7 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
if (message.getState() != null && message.getWelcomeCode() != null) {
if (isFission(message.getState())) {
taskFissionRecordHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId());
}else {
} else {
empleCodeHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId());
}
}
......@@ -123,15 +130,17 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
log.info("执行发送欢迎语>>>>>>>>>>>>>>>");
WeWelcomeMsg.WeWelcomeMsgBuilder weWelcomeMsgBuilder = WeWelcomeMsg.builder().welcome_code(wecomCode);
WeEmpleCodeDto messageMap = weEmpleCodeService.selectWelcomeMsgByState(state);
if (messageMap != null) {
if (StringUtils.isNotNull(messageMap)) {
String empleCodeId = messageMap.getEmpleCodeId();
//查询活码对应标签
List<WeEmpleCodeTag> tagList = weEmpleCodeTagService.list(new LambdaQueryWrapper<WeEmpleCodeTag>()
.eq(WeEmpleCodeTag::getEmpleCodeId, empleCodeId));
//查询外部联系人与通讯录关系数据
WeFlowerCustomerRel weFlowerCustomerRel = weFlowerCustomerRelService.getOne(new LambdaQueryWrapper<WeFlowerCustomerRel>()
.eq(WeFlowerCustomerRel::getUserId, userId)
.eq(WeFlowerCustomerRel::getExternalUserid, externalUserId));
WeFlowerCustomerRel weFlowerCustomerRel = weFlowerCustomerRelService
.getOne(new LambdaQueryWrapper<WeFlowerCustomerRel>()
.eq(WeFlowerCustomerRel::getUserId, userId)
.eq(WeFlowerCustomerRel::getExternalUserid, externalUserId));
//为外部联系人添加员工活码标签
List<WeFlowerCustomerTagRel> weFlowerCustomerTagRels = new ArrayList<>();
Optional.ofNullable(weFlowerCustomerRel).ifPresent(weFlowerCustomerRel1 -> {
......@@ -146,22 +155,24 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
});
weFlowerCustomerTagRelService.saveOrUpdateBatch(weFlowerCustomerTagRels);
});
// 发送欢迎语
log.debug(">>>>>>>>>欢迎语查询结果:{}", JSONObject.toJSONString(messageMap));
if (messageMap != null) {
if (StringUtils.isNotEmpty(messageMap.getWelcomeMsg())) {
weWelcomeMsgBuilder.text(WeWelcomeMsg.Text.builder()
.content(messageMap.getWelcomeMsg()).build());
}
if (StringUtils.isNotEmpty(messageMap.getCategoryId())) {
WeMediaDto weMediaDto = weMaterialService
.uploadTemporaryMaterial(messageMap.getMaterialUrl(), MediaType.IMAGE.getMediaType(),messageMap.getMaterialName());
Optional.ofNullable(weMediaDto).ifPresent(media -> {
weWelcomeMsgBuilder.image(WeWelcomeMsg.Image.builder().media_id(media.getMedia_id())
.pic_url(media.getUrl()).build());
});
}
weCustomerService.sendWelcomeMsg(weWelcomeMsgBuilder.build());
// 设定欢迎语文字
if (StringUtils.isNotEmpty(messageMap.getWelcomeMsg())) {
weWelcomeMsgBuilder.text(WeWelcomeMsg.Text.builder().content(messageMap.getWelcomeMsg()).build());
}
// 设置欢迎语图片
// 新客拉群创建的员工活码欢迎语图片(群活码图片)
String codeUrl = weGroupCodeService.selectGroupCodeUrlByEmplCodeState(state);
if (StringUtils.isNotNull(codeUrl)) {
buildWelcomeMsgImg(weWelcomeMsgBuilder, codeUrl, codeUrl.replaceAll(cosConfig.getImgUrlPrefix(), ""));
}
// 普通员工活码欢迎语图片
else if (StringUtils.isNotEmpty(messageMap.getCategoryId())) {
buildWelcomeMsgImg(weWelcomeMsgBuilder, messageMap.getMaterialUrl(), messageMap.getMaterialName());
}
weCustomerService.sendWelcomeMsg(weWelcomeMsgBuilder.build());
}
} catch (Exception e) {
e.printStackTrace();
......@@ -170,11 +181,20 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
}
private boolean isFission(String str) {
if (str.indexOf(WeConstans.FISSION_PREFIX) != -1){
return true;
}
return false;
return str.contains(WeConstans.FISSION_PREFIX);
}
/**
* 构建欢迎语的图片部分
*
* @param builder 欢迎语builder
* @param picUrl 图片链接
* @param fileName 图片名称
*/
private void buildWelcomeMsgImg(WeWelcomeMsg.WeWelcomeMsgBuilder builder, String picUrl, String fileName) {
WeMediaDto weMediaDto = weMaterialService.uploadTemporaryMaterial(picUrl, MediaType.IMAGE.getMediaType(), fileName);
Optional.ofNullable(weMediaDto).ifPresent(media -> {
builder.image(WeWelcomeMsg.Image.builder().media_id(media.getMedia_id()).pic_url(media.getUrl()).build());
});
}
}
......@@ -101,4 +101,11 @@ public interface WeGroupCodeMapper extends BaseMapper<WeGroupCode>
* @return 总扫码次数
*/
int selectScanTimesByGroupCodeId(Long groupCodeId);
/**
* 通过员工活码获取群活码,用于新客自动拉群。
* @param state 员工活码state
* @return 群活码URL
*/
String selectGroupCodeUrlByEmplCodeState(String state);
}
......@@ -94,4 +94,11 @@ public interface IWeGroupCodeService extends IService<WeGroupCode> {
*/
WeGroupCode getWeGroupByUuid(String uuid);
/**
* 通过员工活码获取群活码,用于新客自动拉群。
* @param state 员工活码state
* @return 群活码URL
*/
String selectGroupCodeUrlByEmplCodeState(String state);
}
......@@ -53,10 +53,9 @@ public interface IWePresTagGroupTaskService {
/**
* 更新老客户标签建群任务
*
* @param taskId 待更新任务id
* @param wePresTagGroupTaskDto 更新数据
* @return 结果
* @taskId 待更新任务id
* @return 更新条数
*/
int updateTask(Long taskId, WePresTagGroupTaskDto wePresTagGroupTaskDto);
......
package com.linkwechat.wecom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.wecom.domain.WeGroupCode;
......@@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
......@@ -58,7 +59,7 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl<WeKeywordG
taskVo.setKeywordList(taskKeywordList);
}
// 群活码信息
taskVo.setGroupCodeInfo(this.getGroupVoByTaskId(taskVo.getGroupCodeId()));
setGroupCodeVoByTask(taskVo);
// 通过群活码id查询对应的群
List<String> groupNameList = taskMapper.getGroupNameListByTaskId(taskVo.getTaskId());
groupNameList.removeIf(Objects::isNull);
......@@ -83,7 +84,7 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl<WeKeywordG
taskVo.setKeywordList(keywordList);
}
// 群活码
taskVo.setGroupCodeInfo(this.getGroupVoByTaskId(taskVo.getGroupCodeId()));
setGroupCodeVoByTask(taskVo);
// 群聊名称列表
List<String> groupNameList = taskMapper.getGroupNameListByTaskId(taskVo.getTaskId());
groupNameList.removeIf(Objects::isNull);
......@@ -127,9 +128,9 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl<WeKeywordG
public int updateTask(WeKeywordGroupTask task, String[] keywords) {
if (taskMapper.updateById(task) == 1) {
// 删除原有的关键词
QueryWrapper<WeKeywordGroupTaskKeyword> taskKwQueryWrapper = new QueryWrapper<>();
taskKwQueryWrapper.eq("task_id", task.getTaskId());
taskKwMapper.delete(taskKwQueryWrapper);
LambdaQueryWrapper<WeKeywordGroupTaskKeyword> keywordWrapper = new LambdaQueryWrapper<>();
keywordWrapper.eq(WeKeywordGroupTaskKeyword::getTaskId, task.getTaskId());
taskKwMapper.delete(keywordWrapper);
// 再重新插入新的关键词
List<WeKeywordGroupTaskKeyword> taskKeywordList = Arrays
.stream(keywords)
......@@ -153,14 +154,17 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl<WeKeywordG
@Transactional
public int batchRemoveTaskByIds(Long[] ids) {
// 移除其所有关键词对象
QueryWrapper<WeKeywordGroupTaskKeyword> taskKwQueryWrapper = new QueryWrapper<>();
taskKwQueryWrapper.in("task_id", Arrays.asList(ids));
taskKwMapper.delete(taskKwQueryWrapper);
QueryWrapper<WeKeywordGroupTask> taskQueryWrapper = new QueryWrapper<>();
taskKwQueryWrapper.in("task_id", Arrays.asList(ids));
return taskMapper.delete(taskQueryWrapper);
LambdaQueryWrapper<WeKeywordGroupTaskKeyword> keywordWrapper = new LambdaQueryWrapper<>();
keywordWrapper.in(WeKeywordGroupTaskKeyword::getTaskId, Arrays.asList(ids));
taskKwMapper.delete(keywordWrapper);
LambdaQueryWrapper<WeKeywordGroupTask> taskWrapper = new LambdaQueryWrapper<>();
taskWrapper.in(WeKeywordGroupTask::getTaskId, Arrays.asList(ids));
return taskMapper.delete(taskWrapper);
}
/*
*/
/**
* 检测任务名是否唯一
*
......@@ -186,7 +190,7 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl<WeKeywordG
taskVo.setKeywordList(this.getTaskKeywordList(taskVo.getTaskId()));
List<String> groupNameList = taskMapper.getGroupNameListByTaskId(taskVo.getTaskId());
// 群活码
taskVo.setGroupCodeInfo(this.getGroupVoByTaskId(taskVo.getGroupCodeId()));
setGroupCodeVoByTask(taskVo);
// 群名称列表
groupNameList.removeIf(StringUtils::isNull);
taskVo.setGroupNameList(groupNameList);
......@@ -200,23 +204,23 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl<WeKeywordG
* @param taskId 任务id
*/
private List<WeKeywordGroupTaskKeyword> getTaskKeywordList(Long taskId) {
QueryWrapper<WeKeywordGroupTaskKeyword> taskKeywordQueryWrapper = new QueryWrapper<>();
taskKeywordQueryWrapper.eq("task_id", taskId);
return taskKwMapper.selectList(taskKeywordQueryWrapper);
LambdaQueryWrapper<WeKeywordGroupTaskKeyword> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WeKeywordGroupTaskKeyword::getTaskId, taskId);
return taskKwMapper.selectList(wrapper);
}
/**
* 获取群活码简略信息
*
* @param groupCodeId 群活码id
* @return 群活码简略信息
* @param taskVo 关键词任务信息
*/
private WeGroupCodeVo getGroupVoByTaskId(Long groupCodeId) {
WeGroupCode groupCode = groupCodeMapper.selectWeGroupCodeById(groupCodeId);
WeGroupCodeVo groupCodeVo = new WeGroupCodeVo();
groupCodeVo.setId(groupCode.getId());
groupCodeVo.setCodeUrl(groupCode.getCodeUrl());
groupCodeVo.setUuid(groupCode.getUuid());
return groupCodeVo;
private void setGroupCodeVoByTask(WeKeywordGroupTaskVo taskVo) {
WeGroupCode groupCode = groupCodeMapper.selectWeGroupCodeById(taskVo.getGroupCodeId());
Optional.ofNullable(groupCode).ifPresent(code -> {
WeGroupCodeVo groupCodeVo = new WeGroupCodeVo();
groupCodeVo.setId(code.getId());
groupCodeVo.setCodeUrl(code.getCodeUrl());
groupCodeVo.setUuid(code.getUuid());
taskVo.setGroupCodeInfo(groupCodeVo);
});
}
}
package com.linkwechat.wecom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.enums.WeEmpleCodeType;
import com.linkwechat.common.exception.wecom.WeComException;
......@@ -162,7 +162,7 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl<WeCommunityNewGr
// 更新员工活码以及其对应的 "联系我" 配置
WeEmpleCode weEmplCode = weEmpleCodeMapper.selectWeEmpleCodeById(communityNewGroup.getEmplCodeId());
// 更改员工活码的扫码标签、使用员工
getScopsAndTags(weEmplCode, communityNewGroupDto);
setScopsAndTags(weEmplCode, communityNewGroupDto);
// 更新使用场景、欢迎语、是否验证
weEmplCode.setScenario(communityNewGroupDto.getCodeName());
weEmplCode.setWelcomeMsg(communityNewGroupDto.getWelcomeMsg());
......@@ -210,8 +210,8 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl<WeCommunityNewGr
WeEmpleCode weEmpleCode = new WeEmpleCode();
// 获取员工和扫码标签
getScopsAndTags(weEmpleCode, communityNewGroupDto);
// 设置员工和扫码标签
setScopsAndTags(weEmpleCode, communityNewGroupDto);
// 固定为多人类型
weEmpleCode.setCodeType(WeEmpleCodeType.MULTI.getType());
......@@ -231,10 +231,15 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl<WeCommunityNewGr
return weEmpleCode;
}
private void getScopsAndTags(WeEmpleCode weEmpleCode, WeCommunityNewGroupDto communityNewGroupDto) {
/**
* 设置员工活码的标签列表和员工列表
* @param weEmpleCode 员工活码
* @param communityNewGroupDto 新客拉群信息
*/
private void setScopsAndTags(WeEmpleCode weEmpleCode, WeCommunityNewGroupDto communityNewGroupDto) {
// 获取活码员工列表 TODO user_id是对应business_id?
QueryWrapper<WeUser> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.in("user_id", communityNewGroupDto.getEmplList());
LambdaQueryWrapper<WeUser> userQueryWrapper = new LambdaQueryWrapper<>();
userQueryWrapper.in(WeUser::getUserId, communityNewGroupDto.getEmplList());
List<WeUser> weUserList = weUserMapper.selectList(userQueryWrapper);
List<WeEmpleCodeUseScop> weEmpleCodeUseScopList = weUserList.stream().map(e -> {
WeEmpleCodeUseScop scop = new WeEmpleCodeUseScop();
......@@ -248,8 +253,8 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl<WeCommunityNewGr
// 获取活码标签
List<String> tagIdList = communityNewGroupDto.getTagList();
QueryWrapper<WeTag> tagQueryWrapper = new QueryWrapper<>();
tagQueryWrapper.in("tag_id", tagIdList);
LambdaQueryWrapper<WeTag> tagQueryWrapper = new LambdaQueryWrapper<>();
tagQueryWrapper.in(WeTag::getTagId, tagIdList);
List<WeTag> weTagList = weTagMapper.selectList(tagQueryWrapper);
List<WeEmpleCodeTag> weEmpleCodeTagList = weTagList.stream().map(e -> {
WeEmpleCodeTag tag = new WeEmpleCodeTag();
......@@ -267,21 +272,32 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl<WeCommunityNewGr
* @param vo 新客自动拉群
*/
private void getCompleteEmplCodeInfo(WeCommunityNewGroupVo vo) {
// 获取群活码信息
// 设置员工活码信息
WeEmpleCode empleCode = weEmpleCodeMapper.selectWeEmpleCodeById(vo.getEmplCodeId());
Optional.ofNullable(empleCode).ifPresent(e -> {
vo.setEmplCodeUrl(e.getQrCode());
vo.setWelcomeMsg(e.getWelcomeMsg());
vo.setSkipVerify(e.getSkipVerify());
});
// 设置群活码信息
WeGroupCode weGroupCode = weGroupCodeMapper.selectWeGroupCodeById(vo.getGroupCodeId());
WeGroupCodeVo weGroupCodeVo = new WeGroupCodeVo();
BeanUtils.copyProperties(weGroupCode, weGroupCodeVo);
vo.setGroupCodeInfo(weGroupCodeVo);
Optional.ofNullable(weGroupCode).ifPresent(e -> {
WeGroupCodeVo groupCodeVo = WeGroupCodeVo
.builder()
.id(e.getId())
.codeUrl(e.getCodeUrl())
.uuid(e.getUuid())
.build();
BeanUtils.copyProperties(e, groupCodeVo);
vo.setGroupCodeInfo(groupCodeVo);
});
// 获取员工列表信息
List<WeEmpleCodeUseScop> empleCodeUseScopList = empleCodeUseScopMapper.selectWeEmpleCodeUseScopListById(vo.getEmplCodeId());
vo.setEmplList(empleCodeUseScopList);
// 获取员工活码信息
WeEmpleCode empleCode = weEmpleCodeMapper.selectWeEmpleCodeById(vo.getEmplCodeId());
vo.setEmplCodeUrl(empleCode.getQrCode());
vo.setWelcomeMsg(empleCode.getWelcomeMsg());
// 获取相关群聊信息
List<WeGroup> groupList = weGroupCodeMapper.selectWeGroupListByGroupCodeId(vo.getGroupCodeId());
vo.setGroupList(groupList);
......@@ -289,7 +305,5 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl<WeCommunityNewGr
// 获取标签信息
List<WeEmpleCodeTag> tagList = empleCodeTagMapper.selectWeEmpleCodeTagListById(vo.getEmplCodeId());
vo.setTagList(tagList);
vo.setSkipVerify(empleCode.getSkipVerify());
}
}
......@@ -4,7 +4,6 @@ import java.util.List;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.config.CosConfig;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.wecom.domain.WeGroupCodeActual;
import com.linkwechat.wecom.mapper.WeCommunityNewGroupMapper;
......@@ -151,7 +150,7 @@ public class WeGroupCodeServiceImpl extends ServiceImpl<WeGroupCodeMapper,WeGrou
@Transactional(rollbackFor = Exception.class)
public int deleteWeGroupCodeById(Long id)
{
// 需要删除新拉群信息
// 需要删除新拉群信息
communityNewGroupMapper.removeWeCommunityNewGroupByGroupCodeId(id);
return weGroupCodeMapper.deleteWeGroupCodeById(id);
}
......@@ -178,4 +177,14 @@ public class WeGroupCodeServiceImpl extends ServiceImpl<WeGroupCodeMapper,WeGrou
public WeGroupCode getWeGroupByUuid(String uuid) {
return weGroupCodeMapper.getWeGroupByUuid(uuid);
}
/**
* 通过员工活码获取群活码,用于新客自动拉群。
* @param state 员工活码state
* @return 群活码URL
*/
@Override
public String selectGroupCodeUrlByEmplCodeState(String state) {
return weGroupCodeMapper.selectGroupCodeUrlByEmplCodeState(state);
}
}
package com.linkwechat.wecom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.core.domain.entity.WeCorpAccount;
import com.linkwechat.common.enums.CommunityTaskType;
......@@ -139,8 +139,8 @@ public class WeGroupSopServiceImpl extends ServiceImpl<WeGroupSopMapper, WeGroup
// 再插入新数据
this.saveChatAndMaterialBinds(ruleId, groupIdList, materialIdList);
// 删除旧图片
QueryWrapper<WeGroupSopPic> queryWrapper = new QueryWrapper<>();
sopPicMapper.delete(queryWrapper.eq("rule_id", ruleId));
LambdaQueryWrapper<WeGroupSopPic> queryWrapper = new LambdaQueryWrapper<>();
sopPicMapper.delete(queryWrapper.eq(WeGroupSopPic::getRuleId, ruleId));
// 保留新上传的图片
List<WeGroupSopPic> sopPicList = picUrlList.stream().map(picUrl -> new WeGroupSopPic(ruleId, picUrl)).collect(Collectors.toList());
......@@ -164,16 +164,17 @@ public class WeGroupSopServiceImpl extends ServiceImpl<WeGroupSopMapper, WeGroup
int affectedRows = groupSopMapper.deleteBatchIds(Arrays.asList(ids));
if (affectedRows > 0) {
// 解除群聊和素材关联
QueryWrapper<WeGroupSopChat> sopGroupQueryWrapper = new QueryWrapper<>();
sopGroupQueryWrapper.in("rule_id", Arrays.asList(ids));
sopChatMapper.delete(sopGroupQueryWrapper);
QueryWrapper<WeGroupSopMaterial> sopMaterialQueryWrapper = new QueryWrapper<>();
sopMaterialQueryWrapper.in("rule_id", Arrays.asList(ids));
sopMaterialMapper.delete(sopMaterialQueryWrapper);
LambdaQueryWrapper<WeGroupSopChat> groupQueryWrapper = new LambdaQueryWrapper<>();
groupQueryWrapper.in(WeGroupSopChat::getRuleId, Arrays.asList(ids));
sopChatMapper.delete(groupQueryWrapper);
LambdaQueryWrapper<WeGroupSopMaterial> materialQueryWrapper = new LambdaQueryWrapper<>();
materialQueryWrapper.in(WeGroupSopMaterial::getRuleId, Arrays.asList(ids));
sopMaterialMapper.delete(materialQueryWrapper);
// 删除手动上传的图片
QueryWrapper<WeGroupSopPic> picQueryWrapper = new QueryWrapper<>();
picQueryWrapper.in("rule_id", Arrays.asList(ids));
LambdaQueryWrapper<WeGroupSopPic> picQueryWrapper = new LambdaQueryWrapper<>();
picQueryWrapper.in(WeGroupSopPic::getRuleId, Arrays.asList(ids));
sopPicMapper.delete(picQueryWrapper);
}
return affectedRows;
......@@ -216,8 +217,8 @@ public class WeGroupSopServiceImpl extends ServiceImpl<WeGroupSopMapper, WeGroup
}
// 设置图片列表
QueryWrapper<WeGroupSopPic> picQueryWrapper = new QueryWrapper<>();
picQueryWrapper.eq("rule_id", ruleId);
LambdaQueryWrapper<WeGroupSopPic> picQueryWrapper = new LambdaQueryWrapper<>();
picQueryWrapper.eq(WeGroupSopPic::getRuleId, ruleId);
List<WeGroupSopPic> sopPicList = sopPicMapper.selectList(picQueryWrapper);
if (StringUtils.isNotEmpty(sopPicList)) {
List<String> picUrlList = sopPicList.stream().map(WeGroupSopPic::getPicUrl).collect(Collectors.toList());
......@@ -255,12 +256,14 @@ public class WeGroupSopServiceImpl extends ServiceImpl<WeGroupSopMapper, WeGroup
* @param ruleId 规则id
*/
private void deleteChatAndMaterialBinds(Long ruleId) {
QueryWrapper<WeGroupSopChat> sopChatQueryWrapper = new QueryWrapper<>();
sopChatQueryWrapper.eq("rule_id", ruleId);
sopChatMapper.delete(sopChatQueryWrapper);
QueryWrapper<WeGroupSopMaterial> sopMaterialQueryWrapper = new QueryWrapper<>();
sopMaterialQueryWrapper.eq("rule_id", ruleId);
sopMaterialMapper.delete(sopMaterialQueryWrapper);
// 删除群聊绑定
LambdaQueryWrapper<WeGroupSopChat> chatQueryWrapper = new LambdaQueryWrapper<>();
chatQueryWrapper.eq(WeGroupSopChat::getRuleId, ruleId);
sopChatMapper.delete(chatQueryWrapper);
// 删除素材绑定
LambdaQueryWrapper<WeGroupSopMaterial> materialQueryWrapper = new LambdaQueryWrapper<>();
materialQueryWrapper.eq(WeGroupSopMaterial::getRuleId, ruleId);
sopMaterialMapper.delete(materialQueryWrapper);
}
/**
......@@ -306,11 +309,11 @@ public class WeGroupSopServiceImpl extends ServiceImpl<WeGroupSopMapper, WeGroup
* @return 群聊信息列表
*/
private List<WeGroup> getGroupListByRuleId(Long ruleId) {
QueryWrapper<WeGroup> groupQueryWrapper = new QueryWrapper<>();
LambdaQueryWrapper<WeGroup> groupQueryWrapper = new LambdaQueryWrapper<>();
List<String> chatIdList = groupSopMapper.getChatIdListByRuleId(ruleId);
List<WeGroup> groupList = new ArrayList<>();
if (StringUtils.isNotEmpty(chatIdList)) {
groupQueryWrapper.in("chat_id", chatIdList);
groupQueryWrapper.in(WeGroup::getChatId, chatIdList);
groupList = groupMapper.selectList(groupQueryWrapper);
}
return groupList;
......@@ -326,10 +329,13 @@ public class WeGroupSopServiceImpl extends ServiceImpl<WeGroupSopMapper, WeGroup
// 构造请求参数
WeMessagePushDto pushDto = new WeMessagePushDto();
// 查询群聊列表,获取群主列表
QueryWrapper<WeGroup> queryWrapper = new QueryWrapper<>();
queryWrapper.in("chat_id", groupIdList);
LambdaQueryWrapper<WeGroup> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(WeGroup::getChatId, groupIdList);
List<WeGroup> groupList = groupMapper.selectList(queryWrapper);
String toUser = groupList.stream().map(WeGroup::getOwner).collect(Collectors.joining("|"));
String toUser = groupList
.stream()
.map(WeGroup::getOwner)
.collect(Collectors.joining("|"));
pushDto.setTouser(toUser);
// 获取agentId
......
......@@ -2,8 +2,8 @@ package com.linkwechat.wecom.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.core.domain.entity.WeCorpAccount;
import com.linkwechat.common.enums.ChatType;
......@@ -159,30 +159,29 @@ public class WePresTagGroupTaskServiceImpl extends ServiceImpl<WePresTagGroupTas
List<Long> ids = Arrays.asList(idList);
// 解除关联的标签
QueryWrapper<WePresTagGroupTaskTag> taskTagQueryWrapper = new QueryWrapper<>();
taskTagQueryWrapper.in("task_id", ids);
taskTagMapper.delete(taskTagQueryWrapper);
LambdaQueryWrapper<WePresTagGroupTaskTag> tagQueryWrapper = new LambdaQueryWrapper<>();
tagQueryWrapper.in(WePresTagGroupTaskTag::getTaskId, ids);
taskTagMapper.delete(tagQueryWrapper);
// 解除关联的员工
QueryWrapper<WePresTagGroupTaskScope> taskScopeQueryWrapper = new QueryWrapper<>();
taskScopeQueryWrapper.in("task_id", ids);
taskScopeMapper.delete(taskScopeQueryWrapper);
LambdaQueryWrapper<WePresTagGroupTaskScope> scopeQueryWrapper = new LambdaQueryWrapper<>();
scopeQueryWrapper.in(WePresTagGroupTaskScope::getTaskId, ids);
taskScopeMapper.delete(scopeQueryWrapper);
// 删除其用户统计
QueryWrapper<WePresTagGroupTaskStat> statQueryWrapper = new QueryWrapper<>();
statQueryWrapper.in("task_id", ids);
LambdaQueryWrapper<WePresTagGroupTaskStat> statQueryWrapper = new LambdaQueryWrapper<>();
statQueryWrapper.in(WePresTagGroupTaskStat::getTaskId, ids);
taskStatMapper.delete(statQueryWrapper);
// 删除task
QueryWrapper<WePresTagGroupTask> taskQueryWrapper = new QueryWrapper<>();
taskQueryWrapper.in("task_id", ids);
// 最后删除task
LambdaQueryWrapper<WePresTagGroupTask> taskQueryWrapper = new LambdaQueryWrapper<>();
taskQueryWrapper.in(WePresTagGroupTask::getTaskId, ids);
return taskMapper.delete(taskQueryWrapper);
}
/**
* 更新老客户标签建群任务
*
* @param taskId 待更新任务id
* @param wePresTagGroupTaskDto 更新数据
* @return 结果
* @taskId 待更新任务id
* @return 更新条数
*/
@Override
@Transactional(rollbackFor = RuntimeException.class)
......@@ -192,22 +191,25 @@ public class WePresTagGroupTaskServiceImpl extends ServiceImpl<WePresTagGroupTas
wePresTagGroupTask.setTaskId(taskId);
wePresTagGroupTask.setUpdateBy(SecurityUtils.getUsername());
if (taskMapper.updateTask(wePresTagGroupTask) > 0) {
// 更新标签
// 先删除旧标签
QueryWrapper<WePresTagGroupTaskTag> taskTagQueryWrapper = new QueryWrapper<>();
taskTagQueryWrapper.eq("task_id", taskId);
// 更新标签 - 先删除旧标签
LambdaUpdateWrapper<WePresTagGroupTaskTag> taskTagQueryWrapper = new LambdaUpdateWrapper<>();
taskTagQueryWrapper.eq(WePresTagGroupTaskTag::getTaskId, taskId);
taskTagMapper.delete(taskTagQueryWrapper);
// 再添加新标签
// 更新标签 - 再添加新标签
List<String> tagIdList = wePresTagGroupTaskDto.getTagList();
if (CollectionUtil.isNotEmpty(tagIdList)) {
List<WePresTagGroupTaskTag> wePresTagGroupTaskTagList = tagIdList.stream().map(id -> new WePresTagGroupTaskTag(taskId, id)).collect(Collectors.toList());
List<WePresTagGroupTaskTag> wePresTagGroupTaskTagList = tagIdList
.stream()
.map(id -> new WePresTagGroupTaskTag(taskId, id))
.collect(Collectors.toList());
taskTagMapper.batchBindsTaskTags(wePresTagGroupTaskTagList);
}
// 先解除旧的员工绑定信息
QueryWrapper<WePresTagGroupTaskScope> taskScopeQueryWrapper = new QueryWrapper<>();
taskScopeQueryWrapper.eq("task_id", taskId);
taskScopeMapper.delete(taskScopeQueryWrapper);
LambdaUpdateWrapper<WePresTagGroupTaskScope> scopeQueryWrapper = new LambdaUpdateWrapper<>();
scopeQueryWrapper.eq(WePresTagGroupTaskScope::getTaskId, taskId);
taskScopeMapper.delete(scopeQueryWrapper);
// 再重新绑定员工信息
List<String> userIdList = wePresTagGroupTaskDto.getScopeList();
......@@ -380,7 +382,7 @@ public class WePresTagGroupTaskServiceImpl extends ServiceImpl<WePresTagGroupTas
text.setContent(task.getWelcomeMsg());
queryData.setText(text);
// 群活码图片(上传临时文件获取media_id) TODO 过期问题?
// 群活码图片(上传临时文件获取media_id)
ImageMessageDto image = new ImageMessageDto();
WeGroupCode groupCode = groupCodeMapper.selectWeGroupCodeById(task.getGroupCodeId());
WeMediaDto mediaDto = materialService.uploadTemporaryMaterial(groupCode.getCodeUrl(), MediaType.IMAGE.getMediaType(), "临时文件");
......@@ -397,9 +399,9 @@ public class WePresTagGroupTaskServiceImpl extends ServiceImpl<WePresTagGroupTas
SendMessageResultDto resultDto = customerMessagePushClient.sendCustomerMessageToUser(queryData);
// 设定该任务的msgid
UpdateWrapper<WePresTagGroupTask> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("task_id", task.getTaskId());
updateWrapper.set("msgid", resultDto.getMsgid());
LambdaUpdateWrapper<WePresTagGroupTask> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(WePresTagGroupTask::getTaskId, task.getTaskId());
updateWrapper.set(WePresTagGroupTask::getMsgid, resultDto.getMsgid());
this.update(updateWrapper);
} catch (Exception e) {
e.printStackTrace();
......
......@@ -51,7 +51,6 @@
IFNULL((SELECT count(1) FROM we_group_code_actual WHERE group_code_id = w.id AND TIMESTAMPDIFF(DAY, sysdate(), effect_time ) &lt; 3), 0) AS about_to_expire_codes
FROM
we_group_code w
</sql>
<select id="selectWeGroupCodeList" parameterType="WeGroupCode" resultMap="WeGroupCodeResult">
......@@ -116,6 +115,20 @@
wgc.id = #{groupCodeId}
</select>
<select id="selectGroupCodeUrlByEmplCodeState" parameterType="String" resultType="String">
SELECT DISTINCT
wgc.code_url
FROM
we_group_code wgc
LEFT JOIN we_community_new_group wcn ON wgc.id = wcn.group_code_id
LEFT JOIN we_emple_code wec ON wec.id = wcn.empl_code_id
WHERE
wgc.del_flag = 0
AND wcn.del_flag = 0
AND wec.del_flag = 0
AND wec.state = #{state}
</select>
<select id="checkActivityNameUnique" parameterType="String" resultType="int">
select count(1) from we_group_code where activity_name = #{activityName} limit 1
</select>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册