diff --git a/admin/.flattened-pom.xml b/admin/.flattened-pom.xml
index 4efeb67..05e627b 100644
--- a/admin/.flattened-pom.xml
+++ b/admin/.flattened-pom.xml
@@ -129,6 +129,11 @@
org.springframework.cloud
spring-cloud-loadbalancer
+
+ com.vdurmont
+ emoji-java
+ 4.0.0
+
diff --git a/admin/pom.xml b/admin/pom.xml
index 1fc9739..c5dd8e5 100644
--- a/admin/pom.xml
+++ b/admin/pom.xml
@@ -175,6 +175,12 @@
org.springframework.cloud
spring-cloud-loadbalancer
+
+
+ com.vdurmont
+ emoji-java
+ 4.0.0
+
diff --git a/admin/src/main/java/com/baiye/listener/AddFileFriendDataListener.java b/admin/src/main/java/com/baiye/listener/AddFileFriendDataListener.java
index bc59e57..c41825b 100644
--- a/admin/src/main/java/com/baiye/listener/AddFileFriendDataListener.java
+++ b/admin/src/main/java/com/baiye/listener/AddFileFriendDataListener.java
@@ -89,18 +89,20 @@ public class AddFileFriendDataListener extends AnalysisEventListener toList = Splitter.on
- (StrPool.COMMA).trimResults().splitToList(friendVO.getFlagArrays());
- friend.setLabelIds(toList);
+ if (StringUtils.isNotBlank(friendVO.getTargetSource())) {
+ if (StringUtils.isNotBlank(friendVO.getFlagArrays())) {
+ List toList = Splitter.on
+ (StrPool.COMMA).trimResults().splitToList(friendVO.getFlagArrays());
+ friend.setLabelIds(toList);
+ }
+ friend.setGreet(friendVO.getGreet());
+ friend.setTrumpetWechat(pollingWechat);
+ friend.setUserId(saveAddFriendDTO.getUserId());
+ friend.setTaskId(saveAddFriendDTO.getTaskId());
+ friend.setTargetWechat(friendVO.getTargetSource());
+ friend.setAddStatus(DefaultNumberConstants.ZERO_NUMBER);
+ list.add(friend);
}
- friend.setGreet(friendVO.getGreet());
- friend.setTrumpetWechat(pollingWechat);
- friend.setUserId(saveAddFriendDTO.getUserId());
- friend.setTaskId(saveAddFriendDTO.getTaskId());
- friend.setTargetWechat(friendVO.getTargetSource());
- friend.setAddStatus(DefaultNumberConstants.ZERO_NUMBER);
- list.add(friend);
}
addFriendService.saveBatch(list);
log.info("存储数据库成功!");
diff --git a/admin/src/main/java/com/baiye/listener/ComparisonAdditionalDataListener.java b/admin/src/main/java/com/baiye/listener/ComparisonAdditionalDataListener.java
new file mode 100644
index 0000000..bdd7d62
--- /dev/null
+++ b/admin/src/main/java/com/baiye/listener/ComparisonAdditionalDataListener.java
@@ -0,0 +1,104 @@
+package com.baiye.listener;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.util.ListUtils;
+import com.baiye.constant.DefaultNumberConstants;
+import com.baiye.modules.scrm.dto.SaveComparisonDTO;
+import com.baiye.modules.scrm.entity.ComparisonRecord;
+import com.baiye.modules.scrm.service.ComparisonRecordService;
+import com.baiye.modules.scrm.vo.ComparisonVO;
+import com.baiye.util.AESUtils;
+import com.google.common.collect.Sets;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/2
+ */
+@Slf4j
+public class ComparisonAdditionalDataListener extends AnalysisEventListener {
+
+ /**
+ * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收
+ */
+ private static final int BATCH_COUNT = 500;
+ /**
+ * 缓存的数据
+ */
+ private List cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
+
+ private final ComparisonRecordService comparisonRecordService;
+
+ private final SaveComparisonDTO saveComparisonDTO;
+
+ public ComparisonAdditionalDataListener(ComparisonRecordService comparisonRecordService, SaveComparisonDTO saveComparisonDTO) {
+ this.comparisonRecordService = comparisonRecordService;
+ this.saveComparisonDTO = saveComparisonDTO;
+ }
+
+
+ /**
+ * 这个每一条数据解析都会来调用
+ *
+ * @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+ * @param context
+ */
+ @Override
+ public void invoke(ComparisonVO data, AnalysisContext context) {
+ cachedDataList.add(data);
+ // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
+ if (cachedDataList.size() >= BATCH_COUNT) {
+ updateDate();
+ // 存储完成清理 list
+ cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
+ }
+ }
+
+ /**
+ * 所有数据解析完成了 都会来调用
+ *
+ * @param context
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ // 这里也要保存数据,确保最后遗留的数据也存储到数据库
+ if (CollUtil.isNotEmpty(cachedDataList)) {
+ updateDate();
+ }
+ cachedDataList.clear();
+ log.info("所有数据解析完成!");
+ }
+
+ /**
+ * 加上存储数据库
+ */
+ private void updateDate() {
+ Set set = Sets.newHashSet();
+ Map resultMap =
+ cachedDataList.stream().filter(c -> StringUtils.isNotBlank(c.getRedBookId()) && StringUtils.isNotBlank
+ (c.getPhone()) && c.getPhone().length() == DefaultNumberConstants.ELEVEN_NUMBER)
+ .collect(Collectors.toMap(ComparisonVO::getRedBookId, ComparisonVO::getPhone));
+ List recordList = comparisonRecordService.queryByTaskAndRedBookId(saveComparisonDTO.getTaskId(), resultMap.keySet());
+ if (CollUtil.isNotEmpty(recordList)) {
+ for (ComparisonRecord record : recordList) {
+ String comparisonResult = resultMap.get(record.getRedBookId());
+ if (StringUtils.isNotBlank(comparisonResult)) {
+ record.setConversionTime(DateUtil.date());
+ record.setComparisonResult(AESUtils.encrypt(comparisonResult, "==marketing-scrm="));
+ set.add(record);
+ }
+ }
+ comparisonRecordService.updateBatchById(set);
+ }
+ log.info("数据解析成功!");
+ }
+}
diff --git a/admin/src/main/java/com/baiye/listener/ComparisonRecordDataListener.java b/admin/src/main/java/com/baiye/listener/ComparisonRecordDataListener.java
new file mode 100644
index 0000000..e436d4e
--- /dev/null
+++ b/admin/src/main/java/com/baiye/listener/ComparisonRecordDataListener.java
@@ -0,0 +1,107 @@
+package com.baiye.listener;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.StrPool;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.util.ListUtils;
+import com.baiye.constant.DefaultNumberConstants;
+import com.baiye.modules.scrm.dto.SaveAddFriendDTO;
+import com.baiye.modules.scrm.dto.SaveComparisonDTO;
+import com.baiye.modules.scrm.entity.AddFriend;
+import com.baiye.modules.scrm.entity.ComparisonRecord;
+import com.baiye.modules.scrm.service.AddFriendService;
+import com.baiye.modules.scrm.service.ComparisonRecordService;
+import com.baiye.modules.scrm.vo.ComparisonVO;
+import com.baiye.modules.scrm.vo.FileAddFriendVO;
+import com.baiye.polling.QueueBalance;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Sets;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/2
+ */
+@Slf4j
+public class ComparisonRecordDataListener extends AnalysisEventListener {
+
+ /**
+ * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收
+ */
+ private static final int BATCH_COUNT = 500;
+ /**
+ * 缓存的数据
+ */
+ private List cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
+
+ private final ComparisonRecordService comparisonRecordService;
+
+ private final SaveComparisonDTO saveComparisonDTO;
+
+ public ComparisonRecordDataListener(ComparisonRecordService comparisonRecordService, SaveComparisonDTO saveComparisonDTO) {
+ this.comparisonRecordService = comparisonRecordService;
+ this.saveComparisonDTO = saveComparisonDTO;
+ }
+
+
+ /**
+ * 这个每一条数据解析都会来调用
+ *
+ * @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+ * @param context
+ */
+ @Override
+ public void invoke(ComparisonVO data, AnalysisContext context) {
+ cachedDataList.add(data);
+ // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
+ if (cachedDataList.size() >= BATCH_COUNT) {
+ saveData();
+ // 存储完成清理 list
+ cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
+ }
+ }
+
+ /**
+ * 所有数据解析完成了 都会来调用
+ *
+ * @param context
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ // 这里也要保存数据,确保最后遗留的数据也存储到数据库
+ if (CollUtil.isNotEmpty(cachedDataList)) {
+ saveData();
+ }
+ cachedDataList.clear();
+ log.info("所有数据解析完成!");
+ }
+
+ /**
+ * 加上存储数据库
+ */
+ private void saveData() {
+ log.info("{}条数据,开始存储数据库!", cachedDataList.size());
+ Set set = Sets.newHashSet();
+ // 随机添加微信
+ for (ComparisonVO vo : cachedDataList) {
+ ComparisonRecord record = new ComparisonRecord();
+ if (StringUtils.isNotBlank(vo.getRedBookId()) && StringUtils.isNotBlank(vo.getRedBookNo())){
+ record.setDateStr(vo.getDateStr());
+ record.setRedBookNo(vo.getRedBookNo());
+ record.setRedBookId(vo.getRedBookId());
+ record.setPhotograph(vo.getPhotograph());
+ record.setInstitution(vo.getInstitution());
+ record.setTaskId(saveComparisonDTO.getTaskId());
+ record.setUserId(saveComparisonDTO.getUserId());
+ set.add(record);
+ }
+ }
+ comparisonRecordService.saveBatch(set);
+ log.info("存储数据库成功!");
+ }
+}
diff --git a/admin/src/main/java/com/baiye/modules/customer/controller/CustomerInfoController.java b/admin/src/main/java/com/baiye/modules/customer/controller/CustomerInfoController.java
index 9ea5ae4..24d3c92 100644
--- a/admin/src/main/java/com/baiye/modules/customer/controller/CustomerInfoController.java
+++ b/admin/src/main/java/com/baiye/modules/customer/controller/CustomerInfoController.java
@@ -70,7 +70,6 @@ public class CustomerInfoController {
@Operation(summary = "获取主账号")
@GetMapping("listRobotByCustomerId")
public List listRobotBYCustomerId(Long customerId) {
-
return customerUserService.listRobotByCustomerId(customerId);
}
@@ -82,6 +81,13 @@ public class CustomerInfoController {
}
+ @Operation(summary = "获取次级账号")
+ @GetMapping(value = "acquisition/secondary")
+ public R> acquisitionSecondary(Long customerId) {
+ return R.ok(customerUserService.acquisitionSecondary(customerId));
+ }
+
+
@DeleteMapping("/{id}")
@Operation(summary = "删除客服")
public R deleteByUserId(@PathVariable("id") Long customerId) {
diff --git a/admin/src/main/java/com/baiye/modules/customer/controller/CustomerWxLabelController.java b/admin/src/main/java/com/baiye/modules/customer/controller/CustomerWxLabelController.java
index 470df64..da0cb1c 100644
--- a/admin/src/main/java/com/baiye/modules/customer/controller/CustomerWxLabelController.java
+++ b/admin/src/main/java/com/baiye/modules/customer/controller/CustomerWxLabelController.java
@@ -55,10 +55,10 @@ public class CustomerWxLabelController {
}
- @DeleteMapping("/del")
+ @DeleteMapping("/del/{id}")
@Operation(summary = "删除标签")
- public R deleteByUserId(@RequestBody Set ids) {
- return Boolean.TRUE.equals(customerRobotWxLabelService.del(ids)) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除失败");
+ public R deleteByUserId(@PathVariable("id") Long id) {
+ return Boolean.TRUE.equals(customerRobotWxLabelService.del(id)) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除失败");
}
diff --git a/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerJoinRobotMapper.java b/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerJoinRobotMapper.java
index 6024bc9..2930f1f 100644
--- a/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerJoinRobotMapper.java
+++ b/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerJoinRobotMapper.java
@@ -81,7 +81,7 @@ public interface CustomerJoinRobotMapper extends ExtendMapper
default Integer updateByCustomerIdAndRobotId(Long customerId, List list, Integer number) {
LambdaUpdateWrapper wrapper = WrappersX.lambdaUpdate(CustomerJoinRobot.class);
wrapper.set(CustomerJoinRobot::getDelFlag, number);
- wrapper.eq(CustomerJoinRobot::getCustomerId, customerId).in(CustomerJoinRobot::getRobotId, list);
+ wrapper.eq(CustomerJoinRobot::getCustomerId, customerId).in(CustomerJoinRobot::getId, list);
return update(null, wrapper);
}
}
diff --git a/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerRobotWxLabelMapper.java b/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerRobotWxLabelMapper.java
index 2491d26..ae94005 100644
--- a/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerRobotWxLabelMapper.java
+++ b/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerRobotWxLabelMapper.java
@@ -53,4 +53,10 @@ public interface CustomerRobotWxLabelMapper extends ExtendMapper wrapper = WrappersX.lambdaUpdate(CustomerRobotWxLabel.class);
+ wrapper.eq(CustomerRobotWxLabel::getLabelName, labelName).eq(CustomerRobotWxLabel::getUserId, userId);
+ return this.selectCount(wrapper);
+ }
}
diff --git a/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerUserInfoMapper.java b/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerUserInfoMapper.java
index f1ebd7b..519a499 100644
--- a/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerUserInfoMapper.java
+++ b/admin/src/main/java/com/baiye/modules/customer/mapper/CustomerUserInfoMapper.java
@@ -51,6 +51,7 @@ public interface CustomerUserInfoMapper extends ExtendMapper {
if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) {
wrapperX.between(CustomerUserInfo::getCreateTime, qo.getStartTime(), qo.getEndTime());
}
+ wrapperX.eqIfPresent(CustomerUserInfo::getUserId, qo.getUserId());
wrapperX.likeIfPresent(CustomerUserInfo::getAccount, qo.getAccount()).orderByDesc(CustomerUserInfo::getId);
this.selectPage(page, wrapperX);
IPage voPage = page.convert(CustomerUserConverter.INSTANCE::entityToVo);
diff --git a/admin/src/main/java/com/baiye/modules/customer/service/CustomerRobotWxLabelService.java b/admin/src/main/java/com/baiye/modules/customer/service/CustomerRobotWxLabelService.java
index 781b7b8..3c2a648 100644
--- a/admin/src/main/java/com/baiye/modules/customer/service/CustomerRobotWxLabelService.java
+++ b/admin/src/main/java/com/baiye/modules/customer/service/CustomerRobotWxLabelService.java
@@ -45,5 +45,5 @@ public interface CustomerRobotWxLabelService extends ExtendService ids);
+ Boolean del(Long id);
}
diff --git a/admin/src/main/java/com/baiye/modules/customer/service/CustomerUserService.java b/admin/src/main/java/com/baiye/modules/customer/service/CustomerUserService.java
index df47cfe..b6c9ea6 100644
--- a/admin/src/main/java/com/baiye/modules/customer/service/CustomerUserService.java
+++ b/admin/src/main/java/com/baiye/modules/customer/service/CustomerUserService.java
@@ -78,4 +78,11 @@ public interface CustomerUserService extends ExtendService {
* @return
*/
List listRobotByCustomerId(Long customerId);
+
+ /**
+ * 获取次级账号
+ * @param customerId
+ * @return
+ */
+ List acquisitionSecondary(Long customerId);
}
diff --git a/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerJoinRobotServiceImpl.java b/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerJoinRobotServiceImpl.java
index 2f70d65..3df4730 100644
--- a/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerJoinRobotServiceImpl.java
+++ b/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerJoinRobotServiceImpl.java
@@ -39,7 +39,7 @@ public class CustomerJoinRobotServiceImpl extends
List listByCustomerId = baseMapper.selectListByCustomerId(customerId, DefaultNumberConstants.ONE_NUMBER);
// 同步群成员
Map robotMap =
- listByCustomerId.stream().collect(Collectors.toMap(CustomerJoinRobot::getRobotId, robot -> robot));
+ listByCustomerId.stream().distinct().collect(Collectors.toMap(CustomerJoinRobot::getRobotId, robot -> robot));
for (WeChatAccount chatAccount : values) {
CustomerJoinRobot joinRobot = new CustomerJoinRobot();
CustomerJoinRobot customerJoinRobot = robotMap.get(chatAccount.getId());
diff --git a/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerRobotWxLabelServiceImpl.java b/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerRobotWxLabelServiceImpl.java
index 0c1d408..b1ddc6b 100644
--- a/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerRobotWxLabelServiceImpl.java
+++ b/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerRobotWxLabelServiceImpl.java
@@ -1,10 +1,11 @@
package com.baiye.modules.customer.service.impl;
import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult;
+import com.baiye.exception.BadRequestException;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.modules.customer.entity.CustomerRobotWxLabel;
import com.baiye.modules.customer.mapper.CustomerRobotWxLabelMapper;
@@ -16,16 +17,12 @@ import com.baiye.modules.scrm.service.WeChatService;
import com.baiye.modules.scrm.vo.CustomerWxLabelVO;
import com.baiye.modules.scrm.vo.WeChatAccountVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
/**
* @author Enzo
* @date : 2024/7/8
@@ -51,6 +48,10 @@ public class CustomerRobotWxLabelServiceImpl extends
@Override
public Boolean add(CustomerWxLabelDTO labelDTO, Long userId) {
+ Long count = baseMapper.selectCountByLabelNameAndUserId(labelDTO.getLabelName(), userId);
+ if (count > DefaultNumberConstants.ZERO_NUMBER) {
+ throw new BadRequestException("该标签已存在 请勿重复填写");
+ }
Integer weChatLabel = wechatService.addWeChatLabel(labelDTO.getWechatId(), labelDTO.getLabelName());
if (weChatLabel > DefaultNumberConstants.ZERO_NUMBER) {
CustomerRobotWxLabel wxLabel = new CustomerRobotWxLabel();
@@ -63,16 +64,11 @@ public class CustomerRobotWxLabelServiceImpl extends
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean del(Set ids) {
- List customerRobotWxLabels = baseMapper.selectBatchIds(ids);
- if (CollUtil.isNotEmpty(customerRobotWxLabels)){
- Map> listMap =
- customerRobotWxLabels.stream().collect(Collectors.groupingBy(CustomerRobotWxLabel::getWechatId));
- for (Map.Entry> entry : listMap.entrySet()) {
- List list = entry.getValue().stream().map(CustomerRobotWxLabel::getLabelId).collect(Collectors.toList());
- wechatService.deleteWeChatLabel(entry.getKey(), list);
- }
- return removeBatchByIds(ids);
+ public Boolean del(Long id) {
+ CustomerRobotWxLabel customerRobotWxLabel = baseMapper.selectById(id);
+ if (ObjectUtil.isNotNull(customerRobotWxLabel)) {
+ wechatService.deleteWeChatLabel(customerRobotWxLabel.getWechatId(), Lists.newArrayList(customerRobotWxLabel.getLabelId()));
+ return removeById(id);
}
return Boolean.FALSE;
}
diff --git a/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerUserServiceImpl.java b/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerUserServiceImpl.java
index 8f4f95f..8e1f998 100644
--- a/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerUserServiceImpl.java
+++ b/admin/src/main/java/com/baiye/modules/customer/service/impl/CustomerUserServiceImpl.java
@@ -12,12 +12,12 @@ import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.modules.customer.entity.CustomerJoinRobot;
import com.baiye.modules.customer.entity.CustomerUserInfo;
import com.baiye.modules.customer.feign.CustomerVisibleFeign;
+import com.baiye.modules.customer.mapper.CustomerUserInfoMapper;
import com.baiye.modules.customer.service.CustomerJoinRobotService;
import com.baiye.modules.customer.service.CustomerUserService;
import com.baiye.modules.scrm.dto.CustomerAddRobotDTO;
import com.baiye.modules.scrm.dto.CustomerUserInfoDTO;
import com.baiye.modules.scrm.entity.WeChatAccount;
-import com.baiye.modules.customer.mapper.CustomerUserInfoMapper;
import com.baiye.modules.scrm.qo.CustomerUserQo;
import com.baiye.modules.scrm.service.WechatAccountService;
import com.baiye.modules.scrm.vo.CustomerUserInfoVO;
@@ -35,7 +35,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -43,7 +42,6 @@ import java.util.stream.Collectors;
* @author Enzo
* @date : 2024/7/5
*/
-
@Slf4j
@Service
@RequiredArgsConstructor
@@ -66,7 +64,7 @@ public class CustomerUserServiceImpl extends ExtendServiceImpl robotIds = userInfoDTO.getRobotIds();
- CustomerUserInfo userInfo = customerUserInfoMapper.queryByAccount(userInfoDTO.getAccount());
+ CustomerUserInfo userInfo = customerUserInfoMapper.queryByAccount(userInfoDTO.getAccount().trim());
if (ObjectUtil.isNotNull(userInfo) && ObjectUtil.isNotNull(userInfo.getId()) && !userInfo.getId().equals(userInfoDTO.getId())) {
throw new BadRequestException("该账号已被使用!");
}
@@ -79,7 +77,7 @@ public class CustomerUserServiceImpl extends ExtendServiceImpl customerSet = weChatAccounts.stream().map(WeChatAccount::getCustomerId).filter(Objects::nonNull).collect(Collectors.toSet());
+ Set customerSet = weChatAccounts.stream().filter(k -> userInfo.getId().equals(k.getCustomerId())).map(WeChatAccount::getId).collect(Collectors.toSet());
// 去除主客服设备
saveAccountId = Sets.newHashSet(Sets.difference(Sets.newHashSet(robotIds), customerSet));
Set customerJoinRobots =
@@ -131,6 +129,8 @@ public class CustomerUserServiceImpl extends ExtendServiceImpl joinRobots = customerJoinRobotService.queryCustomerByCustomerId(result.getId());
List robotCustomerList = joinRobots.stream().map(CustomerJoinRobot::getRobotId).collect(Collectors.toList());
robotCustomerList.addAll(byCustomerId.stream().map(WeChatAccountVO::getId).collect(Collectors.toList()));
+ result.setRobotNum(Integer.valueOf(wechatAccountService.getCountByCustomerId(result.getId()).toString()));
+ result.setRobotSubNum(Integer.valueOf(customerJoinRobotService.getCountByCustomerId(result.getId()).toString()));
result.setRobotIds(robotCustomerList);
});
return pageResult;
@@ -151,16 +151,17 @@ public class CustomerUserServiceImpl extends ExtendServiceImpl weChatAccounts = wechatAccountService.listByIds(list);
+ customerJoinRobotService.saveCustomerJoinRobot(addRobot.getCustomerId(), userInfo.getAccount(), weChatAccounts);
}
if (Boolean.TRUE.equals(booleanListEntry.getKey())) {
// 取消所有次级
- customerJoinRobotService.cancelCustomerIdByIdsIn(userInfo.getId(), list);
wechatAccountService.updateByCustomerIdAndIds(userInfo.getId(), list);
+ customerJoinRobotService.cancelCustomerIdByIdsIn(userInfo.getId(), list);
}
}
}
- userInfo.setRobotNum(Integer.valueOf(wechatAccountService.getCountByCustomerId(addRobot.getCustomerId()).toString()));
+ userInfo.setRobotNum(Integer.valueOf(wechatAccountService.getCountByCustomerId(userInfo.getId()).toString()));
userInfo.setRobotSubNum(Integer.valueOf(customerJoinRobotService.getCountByCustomerId(userInfo.getId()).toString()));
return this.updateById(userInfo);
}
@@ -212,6 +213,11 @@ public class CustomerUserServiceImpl extends ExtendServiceImpl acquisitionSecondary(Long customerId) {
+ return customerJoinRobotService.queryWeAccountByCustomer(customerId);
+ }
+
@Override
public Map listMasterDetailByCustomerId(Long customerId) {
diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/CircleFriendTaskController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/CircleFriendTaskController.java
new file mode 100644
index 0000000..f959d89
--- /dev/null
+++ b/admin/src/main/java/com/baiye/modules/scrm/controller/CircleFriendTaskController.java
@@ -0,0 +1,65 @@
+package com.baiye.modules.scrm.controller;
+
+import com.baiye.constant.DefaultNumberConstants;
+import com.baiye.domain.PageParam;
+import com.baiye.domain.PageResult;
+import com.baiye.modules.scrm.entity.CircleFriendTask;
+import com.baiye.modules.scrm.qo.CircleFriendQO;
+import com.baiye.modules.scrm.qo.ComparisonQO;
+import com.baiye.modules.scrm.service.CircleFriendTaskService;
+import com.baiye.modules.scrm.vo.CircleFriendTaskVO;
+import com.baiye.modules.scrm.vo.ComparisonTaskVO;
+import com.baiye.result.BaseResultCode;
+import com.baiye.result.R;
+import com.baiye.security.util.SecurityUtils;
+import com.baiye.validation.group.CreateGroup;
+import com.baiye.validation.group.UpdateGroup;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author Enzo
+ * @date : 2024/8/15
+ */
+
+@Tag(name = "朋友圈")
+@Slf4j
+@RestController
+@RequestMapping(value = "/circle/friend")
+@AllArgsConstructor
+public class CircleFriendTaskController {
+
+
+ private final CircleFriendTaskService circleFriendTaskService;
+
+ @GetMapping("/page")
+ @Operation(summary = "分页查询记录")
+ public R> robotGroupPage(@Validated PageParam pageParam, CircleFriendQO qo) {
+ qo.setUserId(SecurityUtils.getCurrentUserId());
+ return R.ok(circleFriendTaskService.queryPage(pageParam, qo));
+ }
+
+ @PostMapping("/add")
+ public R