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 add(@Validated({CreateGroup.class}) @RequestBody CircleFriendTask entity) { + circleFriendTaskService.create(entity); + return R.ok(); + } + + @PostMapping("/update") + public R update(@Validated({UpdateGroup.class}) @RequestBody CircleFriendTask entity) { + circleFriendTaskService.update(entity); + return R.ok(); + } + + + @DeleteMapping("/{id}") + @Operation(summary = "ID删除任务") + public R deleteByUserId(@PathVariable("id") Long taskId) { + return Boolean.TRUE.equals(circleFriendTaskService.del(taskId)) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除失败"); + } + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/ComparisonTaskController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/ComparisonTaskController.java new file mode 100644 index 0000000..c7bba3f --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/controller/ComparisonTaskController.java @@ -0,0 +1,72 @@ +package com.baiye.modules.scrm.controller; + +import cn.hutool.json.JSONUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.modules.scrm.dto.CreateAddFriendTaskDTO; +import com.baiye.modules.scrm.qo.ComparisonQO; +import com.baiye.modules.scrm.qo.RobotGroupQo; +import com.baiye.modules.scrm.service.ComparisonTaskService; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import com.baiye.modules.scrm.vo.RobotGroupVO; +import com.baiye.result.R; +import com.baiye.security.util.SecurityUtils; +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.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * @author Enzo + * @date : 2024/8/16 + */ +@Tag(name = "对比任务") +@Slf4j +@RestController +@RequestMapping(value = "/comparison/task") +@AllArgsConstructor +public class ComparisonTaskController { + + private final ComparisonTaskService comparisonTaskService; + + + @GetMapping("/page") + @Operation(summary = "分页查询记录") + public R> robotGroupPage(@Validated PageParam pageParam, ComparisonQO qo) { + qo.setUserId(SecurityUtils.getWhichUserId() == + DefaultNumberConstants.ONE_NUMBER ? SecurityUtils.getCurrentUserId() : SecurityUtils.getWhichUserId()); + return R.ok(comparisonTaskService.queryPage(pageParam, qo)); + } + + + + @PostMapping("/create/task") + @Operation(summary = "创建任务") + public R createTestTask(MultipartFile file, String taskName,String remark) { + return Boolean.TRUE.equals(comparisonTaskService.createTask(file, taskName, remark)) ? R.ok() : R.failed("创建任务失败"); + } + + + @PostMapping("/additional") + @Operation(summary = "追加任务") + public R createTestTask(MultipartFile file, Long taskId,Boolean isComplete) { + return Boolean.TRUE.equals(comparisonTaskService.additionalTask(file, taskId, isComplete)) ? R.ok() : R.failed("追加任务失败"); + } + + + @GetMapping("/export") + @Operation(summary = "导出数据") + public void export(HttpServletResponse response, Long taskId) { + comparisonTaskService.exportByTaskId(response, taskId); + } + + + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/LoginEquipmentController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/LoginEquipmentController.java index 1c0defc..ba84484 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/controller/LoginEquipmentController.java +++ b/admin/src/main/java/com/baiye/modules/scrm/controller/LoginEquipmentController.java @@ -2,6 +2,7 @@ package com.baiye.modules.scrm.controller; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; +import com.baiye.modules.scrm.dto.PacketDTO; import com.baiye.modules.scrm.qo.AccountQo; import com.baiye.modules.scrm.service.LoginEquipmentService; import com.baiye.modules.scrm.vo.WeChatAccountVO; @@ -11,9 +12,9 @@ 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.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * @author Enzo diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/RobotGroupController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/RobotGroupController.java new file mode 100644 index 0000000..45b4302 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/controller/RobotGroupController.java @@ -0,0 +1,73 @@ +package com.baiye.modules.scrm.controller; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.modules.scrm.entity.RobotGroup; +import com.baiye.modules.scrm.qo.RobotGroupQo; +import com.baiye.modules.scrm.service.RobotGroupService; +import com.baiye.modules.scrm.vo.RobotGroupVO; +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.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/14 + */ + +@RestController +@Tag(name = "分组管理") +@RequestMapping("/robot/group") +@RequiredArgsConstructor +public class RobotGroupController { + + private final RobotGroupService robotGroupService; + + + @GetMapping("/page") + @Operation(summary = "分页查询记录") + public R> robotGroupPage(@Validated PageParam pageParam, RobotGroupQo qo) { + qo.setUserId(SecurityUtils.getCurrentUserId()); + return R.ok(robotGroupService.queryPage(pageParam, qo)); + } + + + @PostMapping("/add") + public R add(@Validated({CreateGroup.class}) @RequestBody RobotGroup entity) { + robotGroupService.create(entity); + return R.ok(); + } + + @PostMapping("/update") + public R update(@Validated({ UpdateGroup.class }) @RequestBody RobotGroup entity) { + robotGroupService.update(entity); + return R.ok(); + } + + + + @DeleteMapping("/{id}") + @Operation(summary = "ID删除任务") + public R deleteByUserId(@PathVariable("id") Long groupId) { + return Boolean.TRUE.equals(robotGroupService.del(groupId)) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除失败"); + } + + + @GetMapping("/list") + @Operation(summary = "查询所有数据") + public R> robotGroupList() { + return R.ok(robotGroupService.queryByUserId(SecurityUtils.getCurrentUserId())); + } + + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/StaticResourceController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/StaticResourceController.java index ac23fc0..004770f 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/controller/StaticResourceController.java +++ b/admin/src/main/java/com/baiye/modules/scrm/controller/StaticResourceController.java @@ -55,6 +55,6 @@ public class StaticResourceController { @DeleteMapping("/{id}") @Operation(summary = "ID删除任务") public R deleteByUserId(@PathVariable("id") Long resourceId) { - return staticResourceService.del(resourceId) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除失败"); + return Boolean.TRUE.equals(staticResourceService.del(resourceId)) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除失败"); } } diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatAccountController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatAccountController.java new file mode 100644 index 0000000..b2fdafa --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatAccountController.java @@ -0,0 +1,31 @@ +package com.baiye.modules.scrm.controller; + +import com.baiye.modules.scrm.dto.PacketDTO; +import com.baiye.modules.scrm.service.WechatAccountService; +import com.baiye.result.R; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Enzo + * @date : 2024/8/16 + */ +@Slf4j +@RestController +@RequestMapping("/wechat/account") +@RequiredArgsConstructor +public class WeChatAccountController { + + private final WechatAccountService wechatAccountService; + + @PostMapping("/update/packet") + @Operation(summary = "修改分组") + public R updatePacketById(@RequestBody PacketDTO dto) { + return R.ok(wechatAccountService.updatePacketById(dto)); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatController.java b/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatController.java index 1f64cd7..6facad1 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatController.java +++ b/admin/src/main/java/com/baiye/modules/scrm/controller/WeChatController.java @@ -3,6 +3,7 @@ package com.baiye.modules.scrm.controller; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.modules.scrm.dto.CreateCodeDTO; +import com.baiye.modules.scrm.dto.PacketDTO; import com.baiye.modules.scrm.dto.PushCodeDTO; import com.baiye.modules.scrm.dto.WeChatStatisticsDTO; import com.baiye.modules.scrm.qo.AccountQo; @@ -68,8 +69,8 @@ public class WeChatController { @GetMapping("/create/equipment") @Operation(summary = "创建设备") - public R createEquipment(Integer num) { - return Boolean.TRUE.equals(weChatService.createEquipment(num, SecurityUtils.getCurrentUserId())) ? R.ok() : R.failed("创建设备失败"); + public R createEquipment(Integer num, Long packetId) { + return Boolean.TRUE.equals(weChatService.createEquipment(num, packetId, SecurityUtils.getCurrentUserId())) ? R.ok() : R.failed("创建设备失败"); } @@ -128,4 +129,6 @@ public class WeChatController { } + + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/converter/CircleFriendTaskConverter.java b/admin/src/main/java/com/baiye/modules/scrm/converter/CircleFriendTaskConverter.java new file mode 100644 index 0000000..1644817 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/converter/CircleFriendTaskConverter.java @@ -0,0 +1,26 @@ +package com.baiye.modules.scrm.converter; + +import com.baiye.modules.scrm.entity.CircleFriendTask; +import com.baiye.modules.scrm.entity.ComparisonTask; +import com.baiye.modules.scrm.vo.CircleFriendTaskVO; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author Enzo + * @date : 2024/3/28 + */ +@Mapper +public interface CircleFriendTaskConverter { + + CircleFriendTaskConverter INSTANCE = Mappers.getMapper(CircleFriendTaskConverter.class); + + /** + * 实体转vo + * + * @param circleFriendTask + * @return + */ + CircleFriendTaskVO entityToVo(CircleFriendTask circleFriendTask); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/converter/ComparisonConverter.java b/admin/src/main/java/com/baiye/modules/scrm/converter/ComparisonConverter.java new file mode 100644 index 0000000..344573f --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/converter/ComparisonConverter.java @@ -0,0 +1,27 @@ +package com.baiye.modules.scrm.converter; + +import com.baiye.modules.scrm.entity.ComparisonTask; +import com.baiye.modules.scrm.entity.PayOrder; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import com.baiye.modules.scrm.vo.ComparisonVO; +import com.baiye.modules.scrm.vo.PayOrderVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author Enzo + * @date : 2024/3/28 + */ +@Mapper +public interface ComparisonConverter { + + ComparisonConverter INSTANCE = Mappers.getMapper(ComparisonConverter.class); + + /** + * 实体转vo + * + * @param comparisonTask + * @return + */ + ComparisonTaskVO entityToVo(ComparisonTask comparisonTask); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/converter/RobotGroupConverter.java b/admin/src/main/java/com/baiye/modules/scrm/converter/RobotGroupConverter.java new file mode 100644 index 0000000..9811bdf --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/converter/RobotGroupConverter.java @@ -0,0 +1,24 @@ +package com.baiye.modules.scrm.converter; + +import com.baiye.modules.scrm.entity.RobotGroup; +import com.baiye.modules.scrm.vo.RobotGroupVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author Enzo + * @date : 2024/3/28 + */ +@Mapper +public interface RobotGroupConverter { + + RobotGroupConverter INSTANCE = Mappers.getMapper(RobotGroupConverter.class); + + /** + * 实体转vo + * + * @param robotGroup + * @return + */ + RobotGroupVO entityToVo(RobotGroup robotGroup); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/dto/AddFriendDTO.java b/admin/src/main/java/com/baiye/modules/scrm/dto/AddFriendDTO.java index fd088f0..f9bb971 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/dto/AddFriendDTO.java +++ b/admin/src/main/java/com/baiye/modules/scrm/dto/AddFriendDTO.java @@ -19,11 +19,11 @@ public class AddFriendDTO { private String greet; @Schema(title = "微信小号") - private String trumpetWechat; + private List trumpetWechat; @Schema(title = "标签ID") private List labelIds; - @Schema(title = "小号微信") + @Schema(title = "对方微信") private String targetWechat; } diff --git a/admin/src/main/java/com/baiye/modules/scrm/dto/AfterPassingDTO.java b/admin/src/main/java/com/baiye/modules/scrm/dto/AfterPassingDTO.java new file mode 100644 index 0000000..5d9e928 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/dto/AfterPassingDTO.java @@ -0,0 +1,15 @@ +package com.baiye.modules.scrm.dto; + +import lombok.Data; + +/** + * @author Enzo + * @date : 2024/8/5 + */ +@Data +public class AfterPassingDTO { + + private String passGreetMessage; + + private Integer type; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/dto/CreateAddFriendTaskDTO.java b/admin/src/main/java/com/baiye/modules/scrm/dto/CreateAddFriendTaskDTO.java index a245d5a..1d7e091 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/dto/CreateAddFriendTaskDTO.java +++ b/admin/src/main/java/com/baiye/modules/scrm/dto/CreateAddFriendTaskDTO.java @@ -1,19 +1,11 @@ package com.baiye.modules.scrm.dto; import cn.hutool.core.date.DatePattern; -import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; -import com.baiye.validation.group.UpdateGroup; -import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.multipart.MultipartFile; -import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; @@ -78,8 +70,7 @@ public class CreateAddFriendTaskDTO { @Schema(title = "添加对象") private List addFriendDTOList; - @Schema(title = "通过之后好友语句") - private List passGreetMessage; + private List afterPassing; } diff --git a/admin/src/main/java/com/baiye/modules/scrm/dto/CustomerAddRobotDTO.java b/admin/src/main/java/com/baiye/modules/scrm/dto/CustomerAddRobotDTO.java index e6dd3d2..835b21e 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/dto/CustomerAddRobotDTO.java +++ b/admin/src/main/java/com/baiye/modules/scrm/dto/CustomerAddRobotDTO.java @@ -53,6 +53,8 @@ public class CustomerAddRobotDTO implements Serializable { private Long id; + private Long robotId; + private Boolean isPrimary; } diff --git a/admin/src/main/java/com/baiye/modules/scrm/dto/PacketDTO.java b/admin/src/main/java/com/baiye/modules/scrm/dto/PacketDTO.java new file mode 100644 index 0000000..e0b33b4 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/dto/PacketDTO.java @@ -0,0 +1,16 @@ +package com.baiye.modules.scrm.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/15 + */ +@Data +public class PacketDTO { + private List idList; + + private Long packetId; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/dto/SaveComparisonDTO.java b/admin/src/main/java/com/baiye/modules/scrm/dto/SaveComparisonDTO.java new file mode 100644 index 0000000..034bdca --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/dto/SaveComparisonDTO.java @@ -0,0 +1,26 @@ +package com.baiye.modules.scrm.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/6/13 + */ +@Data +@Builder +public class SaveComparisonDTO { + + + /** + * 用户ID + */ + private Long userId; + + /** + * 任务id + */ + private Long taskId; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/ActiveAddFriedRecord.java b/admin/src/main/java/com/baiye/modules/scrm/entity/ActiveAddFriedRecord.java index da7f34d..018eca6 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/entity/ActiveAddFriedRecord.java +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/ActiveAddFriedRecord.java @@ -2,14 +2,14 @@ package com.baiye.modules.scrm.entity; import com.baiye.extend.mybatis.plus.alias.TableAlias; import com.baiye.validation.group.UpdateGroup; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; /** * @author Enzo @@ -26,7 +26,7 @@ public class ActiveAddFriedRecord implements Serializable { @NotNull(message = "ID不能为空", groups = { UpdateGroup.class }) private Long id; - @Schema(title = "上传ID") + @Schema(title = "微信id") private Long addFriendId; @Schema(title = "任务id") @@ -66,8 +66,88 @@ public class ActiveAddFriedRecord implements Serializable { @Schema(title = "用户名") private String userName; + @Schema(title = "添加状态") private Integer addStatus; + /** + * 联系人微信ID + */ + @TableField("friend_id") + private String friendId; + + + /** + * 联系人微信账号 + */ + @TableField("friend_no") + private String friendNo; + + /** + * 推荐人微信id + */ + @TableField("source_user_name") + private String sourceUserName; + + /** + * 推荐人昵称 + */ + @TableField("source_nick_name") + private String sourceNickName; + + /** + * 微信备注 + */ + @TableField("memo") + private String memo; + + /** + * 好友类型 1-主动添加;2-被动添加 + */ + @TableField("add_friend_type") + private Integer addFriendType; + + + + /** + * 用于验证请求数据 + */ + @TableField("ticket") + private String ticket; + + + /** + * 添加好友的场景用于验证请求 + */ + @TableField("scene") + private Integer scene; + + /** + * 用于验证请求数据 + */ + @TableField("encrypt_username") + private String encryptUsername; + + + @TableField(fill = FieldFill.INSERT) + @Schema(title = "创建时间") + private LocalDateTime createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(title = "修改时间") + private LocalDateTime updateTime; + + /** + * 通过时间 + */ + @TableField("tg_time") + private Date tgTime; + + + @TableField("create_by") + private String createBy; + + + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriend.java b/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriend.java index 2a5e0e4..5056dd7 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriend.java +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriend.java @@ -50,7 +50,7 @@ public class AddFriend { @Schema(title = "对方微信") private String targetWechat; - @Schema(title = "添加状态") + @Schema(title = "添加状态 0未添加 1 已添加 3添加失败 4 好友通过") private Integer addStatus; diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriendPassGreetMessage.java b/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriendPassGreetMessage.java new file mode 100644 index 0000000..0b9f335 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/AddFriendPassGreetMessage.java @@ -0,0 +1,39 @@ +package com.baiye.modules.scrm.entity; + +import com.baiye.entity.BaseEntity; +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +/** + * @author Enzo + * @date : 2024/8/5 + */ +@Getter +@Setter +@ToString +@TableName(value = "tb_add_friend_pass_greet_message") +@Schema(title = "添加之后语句") +@TableAlias("am") +public class AddFriendPassGreetMessage extends BaseEntity { + + @TableId(type = IdType.AUTO) + @Schema(title = "ID") + @NotNull(message = "ID不能为空", groups = { UpdateGroup.class }) + private Long id; + + private Long taskId; + + private Integer type; + + @Schema(title = "通过之后消息") + private String passGreetMessage; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/CircleFriendTask.java b/admin/src/main/java/com/baiye/modules/scrm/entity/CircleFriendTask.java new file mode 100644 index 0000000..84291cb --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/CircleFriendTask.java @@ -0,0 +1,85 @@ +package com.baiye.modules.scrm.entity; + +import com.baiye.entity.LogicDeletedBaseEntity; +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/13 + */ +@Getter +@Setter +@ToString +@TableName(value = "tb_circle_friend_task") +@Schema(title = "朋友圈任务") +@TableAlias("ct") +public class CircleFriendTask extends LogicDeletedBaseEntity { + + + @TableId(type = IdType.AUTO) + @Schema(title = "ID") + @NotNull(message = "ID不能为空", groups = { UpdateGroup.class }) + private Long id; + + @Schema(title = "任务名称") + private String taskName; + + @Schema(title = "标题") + private String title; + + @Schema(title = "发送状态") + private Integer sendStatus; + + @Schema(title = "用户ID") + private Long userId; + + @Schema(title = "内容") + private String content; + + @Schema(title = "类型") + private Integer type; + + @Schema(title = "延后时间") + private Integer deferredTime; + + + @Schema(title = "是否现在执行") + private Boolean isNow; + + @Schema(title = "执行时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date executionTime; + + @Schema(title = "资源地址") + private String sourcePath; + + + @Schema(title = "延后评论") + @TableField(value = "deferred_comment", typeHandler = JsonStringArrayTypeHandler.class) + private List deferredComment; + + @Schema(title = "图片地址") + @TableField(value = "picture_list", typeHandler = JsonStringArrayTypeHandler.class) + private List pictureList; + + + @TableField(value = "execute_wechat_list", typeHandler = JsonStringArrayTypeHandler.class) + @Schema(title = "执行微信号") + private List executeWechatList; + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonRecord.java b/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonRecord.java new file mode 100644 index 0000000..5f3b11d --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonRecord.java @@ -0,0 +1,84 @@ +package com.baiye.modules.scrm.entity; + +import com.baiye.entity.BaseEntity; +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.Objects; + +/** + * @author Enzo + * @date : 2024/8/19 + * + */ +@Getter +@Setter +@ToString +@TableName(value = "tb_comparison_record", autoResultMap = true) +@Schema(title = "对比记录") +@TableAlias("cr") +public class ComparisonRecord extends BaseEntity { + + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.INPUT) + @Schema(title = "线索ID") + @NotNull(message = "id") + private Long id; + + @Schema(title = "任务ID") + private Long taskId; + + + @Schema(title = "用户ID") + private Long userId; + + + @Schema(description = "日期") + private String dateStr; + + + @Schema(description = "小红书ID") + private String redBookId; + + + @Schema(description = "小红书号") + private String redBookNo; + + + @Schema(description = "项目") + private String photograph; + + + @Schema( description = "机构") + private String institution; + + @Schema( description = "建模时间") + private Date conversionTime; + + + @Schema( description = "对比结果") + private String comparisonResult; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ComparisonRecord that = (ComparisonRecord) o; + return Objects.equals(redBookId, that.redBookId) && Objects.equals(redBookNo, that.redBookNo); + } + + @Override + public int hashCode() { + return Objects.hash(redBookId, redBookNo); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonTask.java b/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonTask.java new file mode 100644 index 0000000..bf3b37b --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonTask.java @@ -0,0 +1,51 @@ +package com.baiye.modules.scrm.entity; + +import com.baiye.entity.BaseEntity; +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +/** + * @author Enzo + * @date : 2024/8/16 + */ + +@Getter +@Setter +@ToString +@TableName(value = "tb_comparison_task", autoResultMap = true) +@Schema(title = "对比") +@TableAlias("ct") +public class ComparisonTask extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.INPUT) + @Schema(title = "线索ID") + @NotNull(message = "分发ID不能为空", groups = {UpdateGroup.class}) + private Long id; + + @Schema(title = "任务名称") + private String taskName; + + + @Schema(title = "用户ID") + private Long userId; + + @Schema(title = "父类ID") + private Long parentId; + + @Schema(title = "线索备注") + private String remark; + + @Schema(title = "是否完成") + private Boolean isComplete; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonTaskLog.java b/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonTaskLog.java new file mode 100644 index 0000000..bf5841e --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/ComparisonTaskLog.java @@ -0,0 +1,43 @@ +package com.baiye.modules.scrm.entity; + +import com.baiye.entity.BaseEntity; +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +/** + * @author Enzo + * @date : 2024/8/16 + */ + +@Getter +@Setter +@ToString +@TableName(value = "tb_down_comparison_log", autoResultMap = true) +@Schema(title = "下载日志") +@TableAlias("cl") +public class ComparisonTaskLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.INPUT) + @Schema(title = "线索ID") + @NotNull(message = "分发ID不能为空", groups = {UpdateGroup.class}) + private Long id; + + @Schema(title = "任务名称") + private Long taskId; + + + @Schema(title = "任务名称") + private Long userId; + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/LoginEquipment.java b/admin/src/main/java/com/baiye/modules/scrm/entity/LoginEquipment.java index b886028..f71344d 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/entity/LoginEquipment.java +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/LoginEquipment.java @@ -47,4 +47,8 @@ public class LoginEquipment extends BaseEntity { @Schema(name = "expiration_time") private Date expirationTime; + + @Schema(name = "packet_id") + private Long packetId; + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/RobotGroup.java b/admin/src/main/java/com/baiye/modules/scrm/entity/RobotGroup.java new file mode 100644 index 0000000..0899f8d --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/RobotGroup.java @@ -0,0 +1,45 @@ +package com.baiye.modules.scrm.entity; + +import com.baiye.entity.LogicDeletedBaseEntity; +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author Enzo + * @date : 2024/8/14 + */ +@Getter +@Setter +@TableAlias("rg") +@TableName(value = "tb_robot_group") +public class RobotGroup extends LogicDeletedBaseEntity { + + + @TableId(type = IdType.AUTO) + @Schema(title = "分组ID") + @NotNull(message = "分组ID", groups = { UpdateGroup.class }) + private Long id; + + @Schema(title = "user_id") + private Long userId; + + @TableField("group_type") + private Integer groupType; + + @Schema(title = "name") + @NotBlank + private String name; + + @TableField + private String remark; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/entity/WeChatAccount.java b/admin/src/main/java/com/baiye/modules/scrm/entity/WeChatAccount.java index 38fa130..e9ae573 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/entity/WeChatAccount.java +++ b/admin/src/main/java/com/baiye/modules/scrm/entity/WeChatAccount.java @@ -75,4 +75,7 @@ public class WeChatAccount extends LogicDeletedBaseEntity { @Schema(title = "客服ID") private Long customerId; + @Schema(title = "分组ID") + private Long packetId; + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/ActiveAddFriendRecordMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/ActiveAddFriendRecordMapper.java index 5645040..dc8344b 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/mapper/ActiveAddFriendRecordMapper.java +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/ActiveAddFriendRecordMapper.java @@ -1,8 +1,10 @@ package com.baiye.modules.scrm.mapper; +import cn.hutool.core.date.DateTime; import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; import com.baiye.extend.mybatis.plus.toolkit.WrappersX; import com.baiye.modules.scrm.entity.ActiveAddFriedRecord; +import com.baiye.modules.scrm.entity.AddFriend; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -21,11 +23,23 @@ public interface ActiveAddFriendRecordMapper extends ExtendMapper selectByFromUsernameAndToUsername(String nickName, String wxId, Integer number) { + default List selectByFromUsernameAndToUsername(String nickName, String wxId, Integer number, Integer type) { return selectList(WrappersX.lambdaQueryX(ActiveAddFriedRecord.class).eq - (ActiveAddFriedRecord::getRobotWxId, wxId).eq(ActiveAddFriedRecord::getNickName, nickName).eq - (ActiveAddFriedRecord::getAddStatus, number).orderByDesc(ActiveAddFriedRecord::getId)); + (ActiveAddFriedRecord::getRobotWxId, wxId).like(ActiveAddFriedRecord::getNickName, nickName).eq + (ActiveAddFriedRecord::getAddStatus, number).eq(ActiveAddFriedRecord::getType, type).orderByDesc(ActiveAddFriedRecord::getId)); + } + + /** + * @param taskId + * @param startTime + * @param endTime + * @return + */ + default Long selectCountByTaskIdAndDate(String taskId, DateTime startTime, DateTime endTime) { + return selectCount(WrappersX.lambdaQueryX(ActiveAddFriedRecord.class).eq + (ActiveAddFriedRecord::getTaskId, taskId).gt(ActiveAddFriedRecord::getCreateTime, startTime).lt(ActiveAddFriedRecord::getCreateTime, endTime)); } } diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendMapper.java index 70a6a5a..0ca1242 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendMapper.java +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendMapper.java @@ -65,12 +65,14 @@ public interface AddFriendMapper extends ExtendMapper { * 时间任务查询数据 * * @param taskId + * @param number * @param startTime * @param endTime * @return */ - default Long selectCountByTime(String taskId, DateTime startTime, DateTime endTime) { - return selectCount(WrappersX.lambdaQueryX(AddFriend.class).eq(AddFriend::getTaskId, taskId).gt(AddFriend::getCreateTime, startTime).lt(AddFriend::getCreateTime, endTime)); + default Long selectCountByTime(String taskId, Integer number, DateTime startTime, DateTime endTime) { + return selectCount(WrappersX.lambdaQueryX(AddFriend.class).eq(AddFriend::getTaskId, taskId).gt(AddFriend::getAddStatus,number). + gt(AddFriend::getCreateTime, startTime).lt(AddFriend::getCreateTime, endTime)); } diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendPassGreetMessageMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendPassGreetMessageMapper.java new file mode 100644 index 0000000..4f25094 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/AddFriendPassGreetMessageMapper.java @@ -0,0 +1,28 @@ +package com.baiye.modules.scrm.mapper; + +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.scrm.entity.AddFriendPassGreetMessage; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/5 + */ +@Mapper +public interface AddFriendPassGreetMessageMapper extends ExtendMapper { + default List selectListByTaskId(Long taskId){ + return this.selectList(WrappersX.lambdaQueryX(AddFriendPassGreetMessage.class).eq + (AddFriendPassGreetMessage::getTaskId, taskId).orderByAsc(AddFriendPassGreetMessage::getId)); + } + + default Boolean deleteByTaskId(Long id){ + LambdaUpdateWrapper wrapper = WrappersX.lambdaUpdate(AddFriendPassGreetMessage.class); + wrapper.eq(AddFriendPassGreetMessage::getTaskId, id); + return SqlHelper.retBool(this.delete(wrapper)); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/CircleFriendTaskMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/CircleFriendTaskMapper.java new file mode 100644 index 0000000..1abbd54 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/CircleFriendTaskMapper.java @@ -0,0 +1,45 @@ +package com.baiye.modules.scrm.mapper; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.scrm.converter.CircleFriendTaskConverter; +import com.baiye.modules.scrm.converter.ComparisonConverter; +import com.baiye.modules.scrm.entity.CircleFriendTask; +import com.baiye.modules.scrm.entity.ComparisonTask; +import com.baiye.modules.scrm.qo.CircleFriendQO; +import com.baiye.modules.scrm.qo.ComparisonQO; +import com.baiye.modules.scrm.vo.CircleFriendTaskVO; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author Enzo + * @date : 2024/8/13 + */ +@Mapper +public interface CircleFriendTaskMapper extends ExtendMapper { + + /** + * 分页查询数据 + * + * @param pageParam + * @param qo + * @return + */ + default PageResult queryPage(PageParam pageParam, CircleFriendQO qo){ + IPage page = this.prodPage(pageParam); + LambdaQueryWrapperX wrapperX = WrappersX.lambdaQueryX(CircleFriendTask.class); + if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) { + wrapperX.between(CircleFriendTask::getCreateTime, qo.getStartTime(), qo.getEndTime()); + } + wrapperX.eqIfPresent(CircleFriendTask::getUserId, qo.getUserId()).orderByDesc(CircleFriendTask::getId); + this.selectPage(page, wrapperX); + IPage voPage = page.convert(CircleFriendTaskConverter.INSTANCE::entityToVo); + return new PageResult<>(voPage.getRecords(), voPage.getTotal()); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonRecordMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonRecordMapper.java new file mode 100644 index 0000000..885aaa2 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonRecordMapper.java @@ -0,0 +1,35 @@ +package com.baiye.modules.scrm.mapper; + +import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.scrm.entity.ComparisonRecord; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Set; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Mapper +public interface ComparisonRecordMapper extends ExtendMapper { + + + default List selectListByTaskId(Long taskId, Boolean flag){ + LambdaQueryWrapperX wrapperX = WrappersX.lambdaQueryX(ComparisonRecord.class); + if (Boolean.FALSE.equals(flag)){ + wrapperX.select(ComparisonRecord::getRedBookId); + } + wrapperX.eq(ComparisonRecord::getTaskId, taskId); + return selectList(wrapperX); + } + + default List selectListByTaskIdAndRedBookId(Long taskId, Set strings){ + LambdaQueryWrapperX wrapperX = WrappersX.lambdaQueryX(ComparisonRecord.class); + wrapperX.eq(ComparisonRecord::getTaskId, taskId).in(ComparisonRecord::getRedBookId, strings); + return selectList(wrapperX); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonTaskLogMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonTaskLogMapper.java new file mode 100644 index 0000000..72db12e --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonTaskLogMapper.java @@ -0,0 +1,19 @@ +package com.baiye.modules.scrm.mapper; + +import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.scrm.entity.ComparisonTaskLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Mapper +public interface ComparisonTaskLogMapper extends ExtendMapper { + default Long countByUserAndTaskId(Long taskId, Long currentUserId){ + LambdaQueryWrapperX wrapperX = WrappersX.lambdaQueryX(); + return this.selectCount(wrapperX.eq(ComparisonTaskLog::getTaskId, taskId).eq(ComparisonTaskLog::getUserId, currentUserId)); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonTaskMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonTaskMapper.java new file mode 100644 index 0000000..3bc8a46 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/ComparisonTaskMapper.java @@ -0,0 +1,45 @@ +package com.baiye.modules.scrm.mapper; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.scrm.converter.ComparisonConverter; +import com.baiye.modules.scrm.entity.ComparisonTask; +import com.baiye.modules.scrm.qo.ComparisonQO; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author Enzo + * @date : 2024/8/16 + */ +@Mapper +public interface ComparisonTaskMapper extends ExtendMapper { + /** + * 分页查询数据 + * + * @param pageParam + * @param qo + * @return + */ + default PageResult queryPage(PageParam pageParam, ComparisonQO qo) { + IPage page = this.prodPage(pageParam); + LambdaQueryWrapperX wrapperX = WrappersX.lambdaQueryX(ComparisonTask.class); + if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) { + wrapperX.between(ComparisonTask::getCreateTime, qo.getStartTime(), qo.getEndTime()); + } + wrapperX.eqIfPresent(ComparisonTask::getParentId, qo.getUserId()).orderByDesc(ComparisonTask::getId); + this.selectPage(page, wrapperX); + IPage voPage = page.convert(ComparisonConverter.INSTANCE::entityToVo); + return new PageResult<>(voPage.getRecords(), voPage.getTotal()); + } + + default int setCompleteById(Long taskId) { + return this.update(null, WrappersX.lambdaUpdate(ComparisonTask.class).eq + (ComparisonTask::getId, taskId).set(ComparisonTask::getIsComplete, Boolean.TRUE)); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/LoginEquipmentMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/LoginEquipmentMapper.java index 420fcfa..8b5b076 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/mapper/LoginEquipmentMapper.java +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/LoginEquipmentMapper.java @@ -11,8 +11,10 @@ import com.baiye.modules.scrm.entity.WeChatAccount; import com.baiye.modules.scrm.qo.AccountQo; import com.baiye.modules.scrm.vo.WeChatAccountVO; import com.baiye.modules.scrm.vo.WeChatAddFriendVo; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -35,7 +37,7 @@ public interface LoginEquipmentMapper extends ExtendMapper { } wrapperX.likeIfPresent(WeChatAccount::getNickname, qo.getNickname()).likeIfPresent (WeChatAccount::getWxId, qo.getWxId()).eqIfPresent(WeChatAccount::getUserId, qo.getUserId()).likeIfPresent(WeChatAccount::getWxId, qo.getWxId()); - this.selectByPage(page, qo.getStartTime(), qo.getEndTime(), qo.getNickname(), qo.getWxId(), qo.getUserId()); + this.selectByPage(page, qo.getStartTime(), qo.getEndTime(), qo.getNickname(), qo.getWxId(), qo.getUserId(), qo.getPacketId()); return new PageResult<>(page.getRecords(), page.getTotal()); } @@ -48,10 +50,12 @@ public interface LoginEquipmentMapper extends ExtendMapper { * @param username * @param wxId * @param userId + * @param packetId * @return */ IPage selectByPage(IPage page, - @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("username") String username, @Param("wxId") String wxId, @Param("userId") Long userId); + @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("username") String username, + @Param("wxId") String wxId, @Param("userId") Long userId, @Param("packetId") Long packetId); /** @@ -104,4 +108,20 @@ public interface LoginEquipmentMapper extends ExtendMapper { default List selectListByTime(DateTime date) { return this.selectList(WrappersX.lambdaQueryX(LoginEquipment.class).gt(LoginEquipment::getExpirationTime, date)); } + + default int deleteByGroupId(Long groupId) { + return delete(WrappersX.lambdaUpdate(LoginEquipment.class).eq(LoginEquipment::getPacketId, groupId)); + } + + default int updatePacketById(List idList, Long packetId) { + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() + .set(LoginEquipment::getPacketId, packetId).in(LoginEquipment::getId, idList); + return this.update(null, wrapper); + } + + default Long countByRobotId(Long id){ + return selectCount(WrappersX.lambdaQueryX(LoginEquipment.class).eq(LoginEquipment::getPacketId, id)); + } + + List queryByPacketId(@Param("packetId") Long id); } diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/RobotGroupMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/RobotGroupMapper.java new file mode 100644 index 0000000..7f30f50 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/RobotGroupMapper.java @@ -0,0 +1,61 @@ +package com.baiye.modules.scrm.mapper; + +import cn.hutool.core.convert.Convert; +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.scrm.converter.RobotGroupConverter; +import com.baiye.modules.scrm.entity.RobotGroup; +import com.baiye.modules.scrm.qo.RobotGroupQo; +import com.baiye.modules.scrm.vo.RobotGroupVO; +import com.baiye.modules.scrm.vo.WeChatAccountVO; +import com.baiye.security.userdetails.User; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/14 + */ +@Mapper +public interface RobotGroupMapper extends ExtendMapper { + + /** + * 条件分页查询数据 + * + * @param pageParam + * @param qo + * @return + */ + default PageResult queryPage(PageParam pageParam, RobotGroupQo qo) { + IPage page = this.prodPage(pageParam); + LambdaQueryWrapperX wrapperX = WrappersX.lambdaQueryX(RobotGroup.class); + + wrapperX.eqIfPresent(RobotGroup::getUserId, qo.getUserId()).likeIfPresent(RobotGroup::getName, qo.getName()).orderByDesc(RobotGroup::getId); + this.selectPage(page, wrapperX); + IPage voPage = page.convert(RobotGroupConverter.INSTANCE::entityToVo); + return new PageResult<>(voPage.getRecords(), voPage.getTotal()); + } + + /** + * 名称 + * + * @param name + * @param currentUserId + * @return + */ + default List findByName(String name, Long currentUserId) { + return this.selectList(WrappersX.lambdaUpdate(RobotGroup.class).eq + (RobotGroup::getName, name).eq(RobotGroup::getUserId, currentUserId)); + } + + default List selectListByUserId(Long currentUserId){ + List groupList = this.selectList(WrappersX.lambdaUpdate(RobotGroup.class).eq + (RobotGroup::getUserId, currentUserId).eq(RobotGroup::getUserId, currentUserId)); + return Convert.toList(RobotGroupVO.class, groupList); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/StaticResourceMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/StaticResourceMapper.java index 8db8761..a73d150 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/mapper/StaticResourceMapper.java +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/StaticResourceMapper.java @@ -36,6 +36,7 @@ public interface StaticResourceMapper extends ExtendMapper { if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) { wrapperX.between(StaticResource::getCreateTime, qo.getStartTime(), qo.getEndTime()); } + wrapperX.eqIfPresent(StaticResource::getUserId, qo.getUserId()); wrapperX.likeIfPresent(StaticResource::getTitle, qo.getTitle()).orderByDesc(StaticResource::getId); this.selectPage(page, wrapperX); IPage voPage = page.convert(StaticResourceConverter.INSTANCE::entityToVo); diff --git a/admin/src/main/java/com/baiye/modules/scrm/mapper/WeChatAccountMapper.java b/admin/src/main/java/com/baiye/modules/scrm/mapper/WeChatAccountMapper.java index 4c19731..32ab9a9 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/mapper/WeChatAccountMapper.java +++ b/admin/src/main/java/com/baiye/modules/scrm/mapper/WeChatAccountMapper.java @@ -9,6 +9,7 @@ import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; import com.baiye.extend.mybatis.plus.toolkit.WrappersX; import com.baiye.modules.scrm.converter.WeChatAccountConverter; +import com.baiye.modules.scrm.entity.LoginEquipment; import com.baiye.modules.scrm.entity.WeChatAccount; import com.baiye.modules.scrm.qo.AccountQo; import com.baiye.modules.scrm.vo.WeChatAccountVO; @@ -58,7 +59,7 @@ public interface WeChatAccountMapper extends ExtendMapper { wrapperX.between(WeChatAccount::getCreateTime, qo.getStartTime(), qo.getEndTime()); } wrapperX.likeIfPresent(WeChatAccount::getNickname, qo.getNickname()).likeIfPresent(WeChatAccount::getWxId, qo.getWxId()). - eqIfPresent(WeChatAccount::getUserId, qo.getUserId()).orderByDesc(WeChatAccount::getId); + eqIfPresent(WeChatAccount::getUserId, qo.getUserId()).eqIfPresent(WeChatAccount::getPacketId,qo.getPacketId()).orderByDesc(WeChatAccount::getId); this.selectPage(page, wrapperX); IPage voPage = page.convert(WeChatAccountConverter.INSTANCE::entityToVo); return new PageResult<>(voPage.getRecords(), voPage.getTotal()); @@ -209,4 +210,15 @@ public interface WeChatAccountMapper extends ExtendMapper { wrapperX.eq(WeChatAccount::getWxId, wxId); return SqlHelper.retBool(update(null, wrapperX)); } + + default List selectListByWechatId(List executeWechatList){ + LambdaUpdateWrapper wrapperX = WrappersX.lambdaUpdate(WeChatAccount.class); + return Convert.toList(WeChatAccountVO.class, this.selectList(wrapperX.in(WeChatAccount::getWxId, executeWechatList))); + } + + default int updatePacketIdByList(List idList, Long packetId){ + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() + .set(WeChatAccount::getPacketId, packetId).in(WeChatAccount::getId, idList); + return this.update(null, wrapper); + } } diff --git a/admin/src/main/java/com/baiye/modules/scrm/qo/AccountQo.java b/admin/src/main/java/com/baiye/modules/scrm/qo/AccountQo.java index 370a215..3d8a95f 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/qo/AccountQo.java +++ b/admin/src/main/java/com/baiye/modules/scrm/qo/AccountQo.java @@ -27,6 +27,9 @@ public class AccountQo { @Schema(title = "微信id") private String wxId; + @Schema(title = "分组ID") + private Long packetId; + @Schema(title = "查询类型 1:查询标签") private Integer queryType; diff --git a/admin/src/main/java/com/baiye/modules/scrm/qo/CircleFriendQO.java b/admin/src/main/java/com/baiye/modules/scrm/qo/CircleFriendQO.java new file mode 100644 index 0000000..3353a7c --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/qo/CircleFriendQO.java @@ -0,0 +1,20 @@ +package com.baiye.modules.scrm.qo; + +import io.swagger.v3.oas.annotations.Parameter; +import lombok.Data; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Data +public class CircleFriendQO { + @Parameter(description = "用户ID") + private Long userId; + + @Parameter(description = "开始时间") + private String startTime; + + @Parameter(description = "结束时间") + private String endTime; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/qo/ComparisonQO.java b/admin/src/main/java/com/baiye/modules/scrm/qo/ComparisonQO.java new file mode 100644 index 0000000..4673fc4 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/qo/ComparisonQO.java @@ -0,0 +1,20 @@ +package com.baiye.modules.scrm.qo; + +import io.swagger.v3.oas.annotations.Parameter; +import lombok.Data; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Data +public class ComparisonQO { + @Parameter(description = "用户ID") + private Long userId; + + @Parameter(description = "开始时间") + private String startTime; + + @Parameter(description = "结束时间") + private String endTime; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/qo/RobotGroupQo.java b/admin/src/main/java/com/baiye/modules/scrm/qo/RobotGroupQo.java new file mode 100644 index 0000000..08d4a4d --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/qo/RobotGroupQo.java @@ -0,0 +1,18 @@ +package com.baiye.modules.scrm.qo; + +import lombok.Data; + +/** + * @author Enzo + * @date 2024-7-11 + * 机器人客服号码 + */ + +@Data +public class RobotGroupQo { + + private Long userId; + + private String name; + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/ActiveAddFriendService.java b/admin/src/main/java/com/baiye/modules/scrm/service/ActiveAddFriendService.java index 539636e..d87003f 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/ActiveAddFriendService.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/ActiveAddFriendService.java @@ -1,5 +1,6 @@ package com.baiye.modules.scrm.service; +import cn.hutool.core.date.DateTime; import com.baiye.extend.mybatis.plus.service.ExtendService; import com.baiye.modules.scrm.entity.ActiveAddFriedRecord; @@ -18,7 +19,18 @@ public interface ActiveAddFriendService extends ExtendService selectByFromUsernameAndToUsername(String nickName, String wxId, Integer number); + List selectByFromUsernameAndToUsername(String nickName, String wxId, Integer number,Integer type); + + + /** + * 查询今日数量 + * @param taskId + * @param dateTime + * @param dateTime1 + * @return + */ + Long countByTaskAndDate(String taskId, DateTime dateTime, DateTime dateTime1); } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendPassGreetMessageService.java b/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendPassGreetMessageService.java new file mode 100644 index 0000000..f31892b --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendPassGreetMessageService.java @@ -0,0 +1,37 @@ +package com.baiye.modules.scrm.service; + +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.dto.AfterPassingDTO; +import com.baiye.modules.scrm.entity.AddFriendPassGreetMessage; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/5 + */ +public interface AddFriendPassGreetMessageService extends ExtendService { + + /** + * 添加之后消息 + * @param taskId + * @param afterPassing + * @return + */ + Boolean addAfterMessage(Long taskId, List afterPassing); + + /** + * 任务ID查询 + * @param taskId + * @return + */ + List findByTaskId(Long taskId); + + /** + * 修改参数 + * @param id + * @param afterPassing + * @return + */ + Boolean updatePassGreetByTaskId(Long id, List afterPassing); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendService.java b/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendService.java index 957ccf2..9a66676 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendService.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/AddFriendService.java @@ -38,12 +38,14 @@ public interface AddFriendService extends ExtendService { /** * 查询当天记录 + * * @param taskId + * @param number * @param dateTime * @param dateTime1 * @return */ - Long countByTaskAndDate(String taskId, DateTime dateTime, DateTime dateTime1); + Long countByTaskAndDate(String taskId, Integer number, DateTime dateTime, DateTime dateTime1); /** * 分页查询数据 diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/CircleFriendTaskService.java b/admin/src/main/java/com/baiye/modules/scrm/service/CircleFriendTaskService.java new file mode 100644 index 0000000..45210e4 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/CircleFriendTaskService.java @@ -0,0 +1,49 @@ +package com.baiye.modules.scrm.service; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.service.ExtendService; +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.vo.CircleFriendTaskVO; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; + +/** + * @author Enzo + * @date : 2024/8/14 + */ +public interface CircleFriendTaskService extends ExtendService { + /** + * 创建朋友圈任务 + * + * @param entity + * @return + */ + Boolean create(CircleFriendTask entity); + + /** + * 修改任务 + * + * @param entity + * @return + */ + Boolean update(CircleFriendTask entity); + + /** + * 删除任务 + * + * @param taskId + * @return + */ + Boolean del(Long taskId); + + /** + * 分页查询数据 + * @param pageParam + * @param qo + * @return + */ + + PageResult queryPage(PageParam pageParam, CircleFriendQO qo); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonRecordService.java b/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonRecordService.java new file mode 100644 index 0000000..54184f0 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonRecordService.java @@ -0,0 +1,30 @@ +package com.baiye.modules.scrm.service; + +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.entity.ComparisonRecord; + +import java.util.List; +import java.util.Set; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +public interface ComparisonRecordService extends ExtendService { + /** + * 任务ID查询数据 + * @param taskId + * @param flag + * @return + */ + List selectListByTaskId(Long taskId, Boolean flag); + + /** + * id与任务ID查询 + * @param taskId + * @param strings + * @return + */ + List queryByTaskAndRedBookId(Long taskId, Set strings); + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonTaskLogService.java b/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonTaskLogService.java new file mode 100644 index 0000000..9817168 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonTaskLogService.java @@ -0,0 +1,27 @@ +package com.baiye.modules.scrm.service; + +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.entity.ComparisonTaskLog; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +public interface ComparisonTaskLogService extends ExtendService { + + /** + * 任务ID和用户查询 + * @param taskId + * @param currentUserId + * @return + */ + Long countByUserAndTaskId(Long taskId, Long currentUserId); + + /** + * 创建记录 + * @param taskId + * @param currentUserId + * @return + */ + Boolean createTaskLogByTaskIdAndUserId(Long taskId, Long currentUserId); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonTaskService.java b/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonTaskService.java new file mode 100644 index 0000000..acad5bf --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/ComparisonTaskService.java @@ -0,0 +1,53 @@ +package com.baiye.modules.scrm.service; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.entity.ComparisonTask; +import com.baiye.modules.scrm.qo.ComparisonQO; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * @author Enzo + * @date : 2024/8/16 + */ +public interface ComparisonTaskService extends ExtendService { + /** + * 创建对比任务 + * + * @param file + * @param taskName + * @param remark + * @return + */ + Boolean createTask(MultipartFile file, String taskName, String remark); + + /** + * 查询分页数据 + * @param pageParam + * @param qo + * @return + */ + PageResult queryPage(PageParam pageParam, ComparisonQO qo); + + /** + * 上传文件追加任务 + * + * @param file + * @param taskId + * @param isComplete + * @return + */ + Boolean additionalTask(MultipartFile file, Long taskId, Boolean isComplete); + + /** + * 导出数据 + * + * @param response + * @param taskId + */ + void exportByTaskId(HttpServletResponse response, Long taskId); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/LoginEquipmentService.java b/admin/src/main/java/com/baiye/modules/scrm/service/LoginEquipmentService.java index 21eb8b9..7ae4099 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/LoginEquipmentService.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/LoginEquipmentService.java @@ -3,6 +3,7 @@ package com.baiye.modules.scrm.service; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.dto.PacketDTO; import com.baiye.modules.scrm.entity.LoginEquipment; import com.baiye.modules.scrm.qo.AccountQo; import com.baiye.modules.scrm.vo.WeChatAccountVO; @@ -22,7 +23,6 @@ public interface LoginEquipmentService extends ExtendService { * @param qo * @return */ - PageResult queryPage(PageParam pageParam, AccountQo qo); /** @@ -71,4 +71,33 @@ public interface LoginEquipmentService extends ExtendService { * @return */ List findExpiredAccount(); + + /** + * 根据分组ID删除数据 + * @param groupId + * @return + */ + Boolean deleteByGroupId(Long groupId); + + /** + * 修改分组 + * + * @param dto + * @return + */ + Boolean updatePacketById(PacketDTO dto); + + /** + * 分组ID查询数量 + * @param id + * @return + */ + Long countByRobotId(Long id); + + /** + * 分组ID查询数据 + * @param id + * @return + */ + List queryByPacketId(Long id); } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/RobotGroupService.java b/admin/src/main/java/com/baiye/modules/scrm/service/RobotGroupService.java new file mode 100644 index 0000000..de34680 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/RobotGroupService.java @@ -0,0 +1,53 @@ +package com.baiye.modules.scrm.service; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.entity.RobotGroup; +import com.baiye.modules.scrm.entity.StaticResource; +import com.baiye.modules.scrm.qo.RobotGroupQo; +import com.baiye.modules.scrm.vo.RobotGroupVO; + +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/14 + */ +public interface RobotGroupService extends ExtendService { + + /** + * 条件查询分组 + * @param pageParam + * @param qo + * @return + */ + PageResult queryPage(PageParam pageParam, RobotGroupQo qo); + + /** + * 查询总数据 + * @param currentUserId + * @return + */ + List queryByUserId(Long currentUserId); + + /** + * 新增數據 + * @param entity + */ + Boolean create(RobotGroup entity); + + /** + * 修改分组 + * @param entity + * @return + */ + Boolean update(RobotGroup entity); + + /** + * 删除分组 + * @param groupId + * @return + */ + Boolean del(Long groupId); +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/WeChatService.java b/admin/src/main/java/com/baiye/modules/scrm/service/WeChatService.java index b296e0c..c05ec56 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/WeChatService.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/WeChatService.java @@ -2,7 +2,6 @@ package com.baiye.modules.scrm.service; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; -import com.baiye.extend.mybatis.plus.service.ExtendService; import com.baiye.modules.scrm.dto.*; import com.baiye.modules.scrm.entity.WeChatAccount; import com.baiye.modules.scrm.qo.AccountQo; @@ -49,10 +48,11 @@ public interface WeChatService { * 创建设备 * * @param num - * @param userId + * @param packetId + * @param currentUserId * @return */ - Boolean createEquipment(Integer num , Long userId); + Boolean createEquipment(Integer num , Long packetId, Long currentUserId); /** * 弹窗登录 @@ -147,12 +147,12 @@ public interface WeChatService { /** * 发送消息 * - * @param passGreetMessage + * @param sendTextMessage * @param wxId * @param fromUserName * @return */ - Boolean sendTextMessage(List passGreetMessage, String wxId, String fromUserName); + Boolean sendTextMessage(String sendTextMessage, String wxId, String fromUserName); /** * 获取信息 @@ -191,4 +191,61 @@ public interface WeChatService { * @return */ Boolean deleteWeChatLabel(String wechatId, List list); + + /** + * 发送图片 + * @param passGreetMessage + * @param wxId + * @param fromUserName + * @return + */ + Boolean sendPictureMessage(String passGreetMessage, String wxId, String fromUserName); + + /** + * 查询好友 + * @param wxId + * @param fromUserName + * @return + */ + WechatMemberDTO queryByWechatId(String wxId, String fromUserName); + + /** + * 发送朋友圈 + * @param wechat + * @param pictures + * @param title + * @param comments + * @param blackList + * @param labelIds + */ + Boolean sendTextCircleFriends(String wechat, List pictures, String title, List comments, List blackList, List labelIds); + + /** + * 发送视频信息 + * @param wechat + * @param reqUrl + * @param content + * @param coverUrl + * @param comments + * @param blackList + * @param labelIds + * @return + */ + Boolean sendVideoCircleFriends(String wechat, String reqUrl, String content, String coverUrl, List comments, List blackList, List labelIds); + + /** + * + * @param wechat + * @param reqUrl + * @param title + * @param content + * @param coverUrl + * @param comments + * @param blackList + * @param labelIds + * @return + */ + Boolean sendLinkCircleFriends(String wechat, String reqUrl, String title, String content, String coverUrl, List comments, List blackList, List labelIds); + + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/WechatAccountService.java b/admin/src/main/java/com/baiye/modules/scrm/service/WechatAccountService.java index c9864d6..6aef6ba 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/WechatAccountService.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/WechatAccountService.java @@ -1,6 +1,7 @@ package com.baiye.modules.scrm.service; import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.scrm.dto.PacketDTO; import com.baiye.modules.scrm.entity.StaticResource; import com.baiye.modules.scrm.entity.WeChatAccount; import com.baiye.modules.scrm.vo.WeChatAccountVO; @@ -58,4 +59,18 @@ public interface WechatAccountService extends ExtendService { * @return */ Long getCountByCustomerId(Long customerId); + + /** + * 微信ID查询账号 + * @param executeWechatList + * @return + */ + List queryByWeChatId(List executeWechatList); + + /** + * 修改分组 + * @param dto + * @return + */ + Boolean updatePacketById(PacketDTO dto); } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/ActiveAddFriendRecordServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ActiveAddFriendRecordServiceImpl.java index 95fa2d1..f55b29b 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/ActiveAddFriendRecordServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ActiveAddFriendRecordServiceImpl.java @@ -1,5 +1,6 @@ package com.baiye.modules.scrm.service.impl; +import cn.hutool.core.date.DateTime; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; import com.baiye.modules.scrm.entity.ActiveAddFriedRecord; import com.baiye.modules.scrm.mapper.ActiveAddFriendRecordMapper; @@ -21,7 +22,16 @@ public class ActiveAddFriendRecordServiceImpl extends ExtendServiceImpl selectByFromUsernameAndToUsername(String nickName, String wxId, Integer number) { - return baseMapper.selectByFromUsernameAndToUsername(nickName, wxId, number); + public List selectByFromUsernameAndToUsername(String nickName, String wxId, Integer number,Integer type) { + return baseMapper.selectByFromUsernameAndToUsername(nickName, wxId, number, type); } + + + + @Override + public Long countByTaskAndDate(String taskId, DateTime startTime, DateTime endTime) { + return baseMapper.selectCountByTaskIdAndDate(taskId, startTime, endTime); + } + + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendPassGreetMessageServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendPassGreetMessageServiceImpl.java new file mode 100644 index 0000000..0a3748e --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendPassGreetMessageServiceImpl.java @@ -0,0 +1,52 @@ +package com.baiye.modules.scrm.service.impl; + +import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import com.baiye.modules.scrm.dto.AfterPassingDTO; +import com.baiye.modules.scrm.entity.AddFriendPassGreetMessage; +import com.baiye.modules.scrm.mapper.AddFriendPassGreetMessageMapper; +import com.baiye.modules.scrm.service.AddFriendPassGreetMessageService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @author Enzo + * @date : 2024/6/2 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AddFriendPassGreetMessageServiceImpl extends + ExtendServiceImpl implements AddFriendPassGreetMessageService { + + + @Override + public Boolean addAfterMessage(Long taskId, List afterPassing) { + for (AfterPassingDTO afterPassingDTO : afterPassing) { + AddFriendPassGreetMessage message = new AddFriendPassGreetMessage(); + message.setTaskId(taskId); + message.setType(afterPassingDTO.getType()); + message.setPassGreetMessage(afterPassingDTO.getPassGreetMessage()); + baseMapper.insert(message); + } + return Boolean.TRUE; + } + + @Override + public List findByTaskId(Long taskId) { + return baseMapper.selectListByTaskId(taskId); + } + + @Override + public Boolean updatePassGreetByTaskId(Long id, List afterPassing) { + Boolean aBoolean = baseMapper.deleteByTaskId(id); + if (Boolean.TRUE.equals(aBoolean)){ + return addAfterMessage(id, afterPassing); + } + return Boolean.FALSE; + } + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendServiceImpl.java index 2206ff8..a689ef6 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/AddFriendServiceImpl.java @@ -4,7 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.http.HttpUtil; +import cn.hutool.extra.emoji.EmojiUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; @@ -14,7 +14,7 @@ import com.baiye.modules.scrm.dto.WeChatFriendDTO; import com.baiye.modules.scrm.dto.WechatMemberDTO; import com.baiye.modules.scrm.entity.ActiveAddFriedRecord; import com.baiye.modules.scrm.entity.AddFriend; -import com.baiye.modules.scrm.entity.AddFriendTask; +import com.baiye.modules.scrm.entity.AddFriendPassGreetMessage; import com.baiye.modules.scrm.mapper.AddFriendMapper; import com.baiye.modules.scrm.mapper.AddFriendTaskMapper; import com.baiye.modules.scrm.qo.AddFriendQo; @@ -24,6 +24,7 @@ import com.baiye.system.properties.FileProperties; import com.baiye.util.FileUtil; import com.baiye.util.PictureUtil; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; @@ -31,6 +32,7 @@ import org.opencv.imgproc.Imgproc; import org.springframework.stereotype.Service; import java.util.List; +import java.util.concurrent.TimeUnit; /** * @author Enzo @@ -41,6 +43,8 @@ import java.util.List; @RequiredArgsConstructor public class AddFriendServiceImpl extends ExtendServiceImpl implements AddFriendService { + private final AddFriendPassGreetMessageService addFriendPassGreetMessageService; + private final ActiveAddFriendService activeAddFriendService; private final WechatFriendService wechatFriendService; @@ -54,36 +58,47 @@ public class AddFriendServiceImpl extends ExtendServiceImpl queryAddSourceByTaskIdAndStatus(String taskId, Integer addFriendNum, Integer taskStatus) { return baseMapper.queryByTaskIdAndStatus(taskId, addFriendNum, taskStatus); } + @Override + @SneakyThrows public Boolean addFriendSuccessfully(OtherInformationDTO dto, String wxId) { String fromUserName = dto.getFromUserName(); WechatMemberDTO targetWxInfo = dto.getTargetWxInfo(); - WeChatFriendDTO weChatFriendDTO = new WeChatFriendDTO(); - BeanUtil.copyProperties(targetWxInfo, weChatFriendDTO); - weChatFriendDTO.setRobotWxId(wxId); - weChatFriendDTO.setFriendId(targetWxInfo.getUserName()); - weChatFriendDTO.setAddAcceptTime(System.currentTimeMillis()); - weChatFriendDTO.setAddFriendType(DefaultNumberConstants.TWO_NUMBER); - // 昵称查询数据 + if (ObjectUtil.isNull(targetWxInfo) || ObjectUtil.isNull(targetWxInfo.getNickName())) { + int reNum = DefaultNumberConstants.THREE_NUMBER; + while (ObjectUtil.isNull(targetWxInfo) && reNum > DefaultNumberConstants.ZERO_NUMBER) { + targetWxInfo = weChatService.queryByWechatId(wxId, fromUserName); + TimeUnit.SECONDS.sleep(DefaultNumberConstants.THIRTY); + reNum--; + } + } + log.info("============= json as {} ==================", targetWxInfo); if (ObjectUtil.isNotNull(targetWxInfo) && ObjectUtil.isNotNull(targetWxInfo.getNickName())) { + WeChatFriendDTO weChatFriendDTO = new WeChatFriendDTO(); + BeanUtil.copyProperties(targetWxInfo, weChatFriendDTO); + weChatFriendDTO.setRobotWxId(wxId); + weChatFriendDTO.setFriendId(targetWxInfo.getUserName()); + weChatFriendDTO.setAddAcceptTime(System.currentTimeMillis()); + weChatFriendDTO.setAddFriendType(DefaultNumberConstants.TWO_NUMBER); + // 昵称查询数据 List addFriedRecords = - activeAddFriendService.selectByFromUsernameAndToUsername(targetWxInfo.getNickName(), wxId, DefaultNumberConstants.ZERO_NUMBER); + activeAddFriendService.selectByFromUsernameAndToUsername(EmojiUtil.toAlias(targetWxInfo.getNickName()), wxId, + DefaultNumberConstants.ZERO_NUMBER, DefaultNumberConstants.ZERO_NUMBER); if (addFriedRecords.size() == DefaultNumberConstants.ONE_NUMBER) { ActiveAddFriedRecord friedRecord = addFriedRecords.get(DefaultNumberConstants.ZERO_NUMBER); AddFriend addFriend = baseMapper.selectById(friedRecord.getAddFriendId()); processingInitiativeAddFriend(wxId, friedRecord, addFriend, fromUserName, weChatFriendDTO); } if (addFriedRecords.size() > DefaultNumberConstants.ONE_NUMBER) { - String contrastPicture = FileUtil.downLoadFromUrl(dto.getTargetWxInfo().getBigHeadImgUrl(), fileProperties.getPath().getAvatar(),dto.getTargetWxInfo().getNickName()); + String contrastPicture = FileUtil.downLoadFromUrl(dto.getTargetWxInfo().getBigHeadImgUrl(), fileProperties.getPath().getAvatar(), dto.getTargetWxInfo().getNickName()); for (ActiveAddFriedRecord addFriedRecord : addFriedRecords) { // 下载图片 - String recordPath = FileUtil.downLoadFromUrl(addFriedRecord.getBigHeadImgUrl(), fileProperties.getPath().getAvatar(),addFriedRecord.getNickName()); + String recordPath = FileUtil.downLoadFromUrl(addFriedRecord.getBigHeadImgUrl(), fileProperties.getPath().getAvatar(), addFriedRecord.getNickName()); nu.pattern.OpenCV.loadLocally(); // 读取两张图像。准备比对的图片 Mat image1 = Imgcodecs.imread(contrastPicture); @@ -100,13 +115,15 @@ public class AddFriendServiceImpl extends ExtendServiceImpl messageList = addFriendPassGreetMessageService.findByTaskId(addFriedRecord.getTaskId()); // 发送消息 - if (CollUtil.isNotEmpty(friendTask.getPassGreetMessage())) { - weChatService.sendTextMessage(friendTask.getPassGreetMessage(), wxId, fromUserName); + if (CollUtil.isNotEmpty(messageList)) { + for (AddFriendPassGreetMessage message : messageList) { + if (message.getType() == DefaultNumberConstants.ONE_NUMBER) { + weChatService.sendTextMessage(message.getPassGreetMessage(), wxId, fromUserName); + } + if (message.getType() == DefaultNumberConstants.TWO_NUMBER) { + weChatService.sendPictureMessage(message.getPassGreetMessage(), wxId, fromUserName); + } + } } } + addFriend.setAddStatus(DefaultNumberConstants.FOUR_NUMBER); + baseMapper.updateById(addFriend); // 设置通过 addFriedRecord.setAddStatus(DefaultNumberConstants.ONE_NUMBER); weChatFriendDTO.setAddFriendType(DefaultNumberConstants.ONE_NUMBER); @@ -132,8 +158,8 @@ public class AddFriendServiceImpl extends ExtendServiceImpl list = Lists.newArrayList(); List addFriendDTOList = createAddFriendTaskDTO.getAddFriendDTOList(); // 雪花算法id long taskId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); @@ -90,14 +101,17 @@ public class AddFriendTaskServiceImpl extends ExtendServiceImpl listList = addFriendDTOList.stream().map - (AddFriendDTO::getTrumpetWechat).collect(Collectors.toList()); + addFriendDTOList.forEach(dto -> list.addAll(dto.getTrumpetWechat())); + + if (CollUtil.isNotEmpty(createAddFriendTaskDTO.getAfterPassing())) { + addFriendPassGreetMessageService.addAfterMessage(taskId, createAddFriendTaskDTO.getAfterPassing()); + } // 创建任务 AddFriendTask friendTask = new AddFriendTask(); BeanUtil.copyProperties(createAddFriendTaskDTO, friendTask); friendTask.setId(taskId); - friendTask.setExecuteWechatList(listList); + friendTask.setExecuteWechatList(list); friendTask.setCronExpression(generatedCronByTime); friendTask.setTaskStatus(DefaultNumberConstants.ONE_NUMBER); friendTask.setEndTime(DateUtil.endOfDay(createAddFriendTaskDTO.getEndTime())); @@ -106,7 +120,7 @@ public class AddFriendTaskServiceImpl extends ExtendServiceImpl targetWechat = createAddFriendTaskDTO.getAddFriendType() == DefaultNumberConstants.ONE_NUMBER ? + List targetWechat = createAddFriendTaskDTO.getAddFriendType() == DefaultNumberConstants.ONE_NUMBER ? JSONUtil.toList(addFriendDTO.getTargetWechat(), String.class) : - Splitter.on(StrPool.COMMA).omitEmptyStrings().trimResults().splitToList(addFriendDTO.getTargetWechat()); + Splitter.on(StrPool.COMMA).omitEmptyStrings().trimResults().splitToList(addFriendDTO.getTargetWechat()); + // 随机添加微信 + QueueBalance balance = new QueueBalance<>(); for (String string : targetWechat) { if (StringUtils.isNotBlank(string)) { + String pollingWechat = balance.chooseOne(list); friend = new AddFriend(); friend.setTaskId(taskId); friend.setUserId(currentUserId); friend.setTargetWechat(string.trim()); + friend.setTrumpetWechat(pollingWechat); friend.setGreet(addFriendDTO.getGreet()); friend.setLabelIds(addFriendDTO.getLabelIds()); - friend.setTrumpetWechat(addFriendDTO.getTrumpetWechat()); friend.setAddStatus(DefaultNumberConstants.ZERO_NUMBER); saveSet.add(friend); } @@ -136,7 +153,7 @@ public class AddFriendTaskServiceImpl extends ExtendServiceImpl addFriendService.saveBatch(saveSet)); } - elasticJobHandler.addJob(createAddFriendTaskDTO.getTaskName().concat(StrPool.DASHED).concat(String.valueOf(taskId)), generatedCronByTime, DefaultNumberConstants.ONE_NUMBER, addFriendTask, String.valueOf(taskId), CharSequenceUtil.EMPTY); + elasticJobHandler.addJob(createAddFriendTaskDTO.getTaskName().concat(StrPool.DASHED).concat(String.valueOf(taskId)), generatedCronByTime, DefaultNumberConstants.ONE_NUMBER, addFriendJob, String.valueOf(taskId), CharSequenceUtil.EMPTY); return Boolean.TRUE; } return Boolean.FALSE; @@ -148,9 +165,13 @@ public class AddFriendTaskServiceImpl extends ExtendServiceImpl queryPage(PageParam pageParam, TaskQo qo) { qo.setUserId(SecurityUtils.getCurrentUserId()); - return baseMapper.queryPage(pageParam, qo); + PageResult queryPage = baseMapper.queryPage(pageParam, qo); + queryPage.getRecords().forEach(c -> { + List executeWechatList = c.getExecuteWechatList(); + List list = wechatAccountService.queryByWeChatId(executeWechatList); + c.setExecuteWechatNicknameList(list.stream().map(WeChatAccountVO::getNickname).collect(Collectors.toList())); + }); + return queryPage; } } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/AliPayServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/AliPayServiceImpl.java index e8ad811..b82d154 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/AliPayServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/AliPayServiceImpl.java @@ -88,7 +88,7 @@ public class AliPayServiceImpl extends ExtendServiceImpl implements CircleFriendTaskService { + + @Value("${snowflake.workerId}") + private int workerId; + + @Value("${snowflake.datacenterId}") + private int datacenterId; + + private final WeChatService weChatService; + + private final ElasticJobHandler elasticJobHandler; + + private final SendCircleFriendTaskJob sendCircleFriendTaskJob; + + @Override + public Boolean create(CircleFriendTask entity) { + long taskId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + if (Boolean.TRUE.equals(entity.getIsNow())) { + for (String targetWechat : entity.getExecuteWechatList()) { + // 发送文本 + if (entity.getType() == DefaultNumberConstants.ONE_NUMBER) { + weChatService.sendTextCircleFriends + (targetWechat, entity.getPictureList(), entity.getTitle(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + } + // 发送图文链接 + if (entity.getType() == DefaultNumberConstants.TWO_NUMBER) { + weChatService.sendLinkCircleFriends + (targetWechat, entity.getSourcePath(), entity.getTitle(), entity.getContent(), entity.getPictureList().get(DefaultNumberConstants.ZERO_NUMBER), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + } + // 发送视频 + if (entity.getType() == DefaultNumberConstants.THREE_NUMBER) { + weChatService.sendVideoCircleFriends + (targetWechat, entity.getSourcePath(), entity.getTitle(), entity.getPictureList().get(DefaultNumberConstants.ZERO_NUMBER), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + } + + log.info("============= send text circle friends {} type as {} ============", targetWechat, entity.getType()); + } + return save(entity); + } + String generatedCronByTime = CronUtil.getCron(entity.getExecutionTime()); + elasticJobHandler.addJob(entity.getTaskName().concat(StrPool.DASHED).concat(String.valueOf(taskId)), generatedCronByTime, DefaultNumberConstants.ONE_NUMBER, sendCircleFriendTaskJob, String.valueOf(taskId), CharSequenceUtil.EMPTY); + return save(entity); + } + + @Override + public Boolean update(CircleFriendTask entity) { + return null; + } + + @Override + public Boolean del(Long taskId) { + return null; + } + + @Override + public PageResult queryPage(PageParam pageParam, CircleFriendQO qo) { + return baseMapper.queryPage(pageParam, qo); + } + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonRecordServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonRecordServiceImpl.java new file mode 100644 index 0000000..88606c5 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonRecordServiceImpl.java @@ -0,0 +1,34 @@ +package com.baiye.modules.scrm.service.impl; + +import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import com.baiye.modules.scrm.entity.ComparisonRecord; +import com.baiye.modules.scrm.mapper.ComparisonRecordMapper; +import com.baiye.modules.scrm.service.ComparisonRecordService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ComparisonRecordServiceImpl extends ExtendServiceImpl implements ComparisonRecordService { + @Override + public List selectListByTaskId(Long taskId, Boolean flag) { + return baseMapper.selectListByTaskId(taskId, flag); + } + + @Override + public List queryByTaskAndRedBookId(Long taskId, Set strings) { + return baseMapper.selectListByTaskIdAndRedBookId(taskId, strings); + } + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonTaskLogServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonTaskLogServiceImpl.java new file mode 100644 index 0000000..fbf89f5 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonTaskLogServiceImpl.java @@ -0,0 +1,31 @@ +package com.baiye.modules.scrm.service.impl; + +import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import com.baiye.modules.scrm.entity.ComparisonTaskLog; +import com.baiye.modules.scrm.mapper.ComparisonTaskLogMapper; +import com.baiye.modules.scrm.service.ComparisonTaskLogService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ComparisonTaskLogServiceImpl extends ExtendServiceImpl implements ComparisonTaskLogService { + @Override + public Long countByUserAndTaskId(Long taskId, Long currentUserId) { + return baseMapper.countByUserAndTaskId(taskId, currentUserId); + } + + @Override + public Boolean createTaskLogByTaskIdAndUserId(Long taskId, Long currentUserId) { + ComparisonTaskLog taskLog = new ComparisonTaskLog(); + taskLog.setTaskId(taskId); + taskLog.setUserId(currentUserId); + return this.save(taskLog); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonTaskServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonTaskServiceImpl.java new file mode 100644 index 0000000..e7ae14c --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/ComparisonTaskServiceImpl.java @@ -0,0 +1,153 @@ +package com.baiye.modules.scrm.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.IdUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.EasyExcelFactory; +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.listener.ComparisonAdditionalDataListener; +import com.baiye.listener.ComparisonRecordDataListener; +import com.baiye.modules.scrm.dto.SaveComparisonDTO; +import com.baiye.modules.scrm.entity.ComparisonRecord; +import com.baiye.modules.scrm.entity.ComparisonTask; +import com.baiye.modules.scrm.mapper.ComparisonTaskMapper; +import com.baiye.modules.scrm.qo.ComparisonQO; +import com.baiye.modules.scrm.service.ComparisonRecordService; +import com.baiye.modules.scrm.service.ComparisonTaskLogService; +import com.baiye.modules.scrm.service.ComparisonTaskService; +import com.baiye.modules.scrm.vo.ComparisonRecordVO; +import com.baiye.modules.scrm.vo.ComparisonSummaryVO; +import com.baiye.modules.scrm.vo.ComparisonTaskVO; +import com.baiye.modules.scrm.vo.ComparisonVO; +import com.baiye.security.userdetails.User; +import com.baiye.security.util.SecurityUtils; +import com.baiye.util.AESUtils; +import com.baiye.util.FileUtil; +import com.baiye.util.RedisUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/16 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ComparisonTaskServiceImpl extends ExtendServiceImpl implements ComparisonTaskService { + + @Value("${snowflake.workerId}") + private int workerId; + + @Value("${snowflake.datacenterId}") + private int datacenterId; + + private final RedisUtils redisUtils; + + private final ComparisonRecordService comparisonRecordService; + + private final ComparisonTaskLogService comparisonTaskLogService; + + + @Override + public Boolean createTask(MultipartFile file, String taskName, String remark) { + User user = SecurityUtils.getUser(); + Long userId = user.getUserId(); + Long whichUserId = user.getWhichUserId(); + ComparisonTask task = new ComparisonTask(); + // 雪花算法id + long taskId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + SaveComparisonDTO comparisonDTO = + SaveComparisonDTO.builder().taskId(taskId).userId(user.getUserId()).build(); + // 解析 文件 + File upload = FileUtil.multiToFile(file); + EasyExcelFactory.read(upload, ComparisonVO.class, + new ComparisonRecordDataListener(comparisonRecordService, comparisonDTO)).build().readAll(); + task.setParentId(whichUserId); + task.setTaskName(taskName); + task.setRemark(remark); + task.setUserId(userId); + task.setId(taskId); + return this.save(task); + } + + @Override + public PageResult queryPage(PageParam pageParam, ComparisonQO qo) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + PageResult pageResult = baseMapper.queryPage(pageParam, qo); + pageResult.getRecords().forEach(r -> { + Long count = comparisonTaskLogService.countByUserAndTaskId(r.getId(), currentUserId); + r.setIsDown(count > DefaultNumberConstants.ZERO_NUMBER); + }); + return pageResult; + } + + @Override + public Boolean additionalTask(MultipartFile file, Long taskId, Boolean isComplete) { + User user = SecurityUtils.getUser(); + SaveComparisonDTO comparisonDTO = + SaveComparisonDTO.builder().taskId(taskId).userId(user.getUserId()).build(); + // 解析 文件 + File upload = FileUtil.multiToFile(file); + EasyExcelFactory.read(upload, ComparisonVO.class, + new ComparisonAdditionalDataListener(comparisonRecordService, comparisonDTO)).build().readAll(); + if (Boolean.TRUE.equals(isComplete)) { + baseMapper.setCompleteById(taskId); + } + return Boolean.TRUE; + } + + + @Override + public void exportByTaskId(HttpServletResponse response, Long taskId) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + // 创建一个唯一的锁标识,例如用户ID和表单ID的组合 + String lockKey = taskId + ":" + currentUserId; + + // 尝试获取锁,如果锁不存在,则设置锁并执行业务逻辑 + if (Boolean.TRUE.equals(redisUtils.acquireKey(lockKey))) { + try { + Long count = comparisonTaskLogService.countByUserAndTaskId(taskId, currentUserId); + if (count > DefaultNumberConstants.ZERO_NUMBER) { + throw new BadRequestException("当前记录已下载,请勿重复下载!"); + } + Boolean flag = SecurityUtils.getWhichUserId() == DefaultNumberConstants.ONE_NUMBER; + + List recordList = this.comparisonRecordService.selectListByTaskId(taskId, flag); + // 设置字符编码 + response.setCharacterEncoding("utf-8"); + // 设置文本内省 + response.setContentType("application/vnd.ms-excel"); + // 设置响应头 + response.setHeader("Content-disposition", "attachment;filename=" + System.currentTimeMillis() + ".xlsx"); + if (Boolean.TRUE.equals(flag)) { + recordList.forEach(comparisonRecord -> comparisonRecord.setComparisonResult(AESUtils.decrypt(comparisonRecord.getComparisonResult(), "==marketing-scrm="))); + List voList = Convert.toList(ComparisonSummaryVO.class, recordList); + EasyExcel.write(response.getOutputStream(), ComparisonSummaryVO.class).sheet("总表记录").doWrite(voList); + } + if (Boolean.FALSE.equals(flag)) { + List voList = Convert.toList(ComparisonRecordVO.class, recordList); + EasyExcel.write(response.getOutputStream(), ComparisonRecordVO.class).sheet("上传记录").doWrite(voList); + } + comparisonTaskLogService.createTaskLogByTaskIdAndUserId(taskId, currentUserId); + } catch (IOException e) { + log.error(" ================== exception as {} ==================", e.getMessage()); + } finally { + redisUtils.del(lockKey); + } + } + } + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/LoginEquipmentServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/LoginEquipmentServiceImpl.java index d6fe342..09c4a6a 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/LoginEquipmentServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/LoginEquipmentServiceImpl.java @@ -2,33 +2,24 @@ package com.baiye.modules.scrm.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.http.HttpStatus; -import cn.hutool.http.HttpUtil; -import cn.hutool.json.JSONUtil; -import com.baiye.constant.DefaultNumberConstants; -import com.baiye.constant.url.WeChatPersonRequest; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; import com.baiye.extend.mybatis.plus.toolkit.WrappersX; -import com.baiye.modules.scrm.dto.WeChatOnlineStatusDTO; +import com.baiye.modules.scrm.dto.PacketDTO; import com.baiye.modules.scrm.entity.LoginEquipment; import com.baiye.modules.scrm.mapper.LoginEquipmentMapper; import com.baiye.modules.scrm.qo.AccountQo; import com.baiye.modules.scrm.service.LoginEquipmentService; import com.baiye.modules.scrm.vo.WeChatAccountVO; import com.baiye.modules.scrm.vo.WeChatAddFriendVo; -import com.baiye.result.WeChatResponse; import com.baiye.security.util.SecurityUtils; -import com.baiye.system.properties.WeChatProperties; -import com.google.common.collect.ImmutableMap; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Map; /** * @author Enzo @@ -40,30 +31,12 @@ import java.util.Map; public class LoginEquipmentServiceImpl extends ExtendServiceImpl implements LoginEquipmentService { - private final WeChatProperties weChatProperties; @Override public PageResult queryPage(PageParam pageParam, AccountQo qo) { qo.setUserId(SecurityUtils.getCurrentUserId()); - PageResult queryPage = baseMapper.queryPage(pageParam, qo); - /*queryPage.getRecords().forEach(accountVO -> { - // 默认离线状态 - accountVO.setStatus(DefaultNumberConstants.TWO_NUMBER); - if (StringUtils.isNotBlank(accountVO.getWxId())) { - Map map = ImmutableMap.of - ("wechat", accountVO.getWxId(), "loginType", DefaultNumberConstants.ONE_NUMBER, "needDetailInfo", Boolean.FALSE); - String result = HttpUtil.post - (weChatProperties.getRequestUrl().concat(WeChatPersonRequest.ONLINE_STATUS), map); - log.info("================= the response as {} =================", result); - if (JSONUtil.isTypeJSON(result)) { - WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); - WeChatOnlineStatusDTO statusDTO = JSONUtil.toBean(JSONUtil.toJsonStr(weChatResponse.getData()), WeChatOnlineStatusDTO.class); - accountVO.setStatus(statusDTO.getStatus()); - } - } - });*/ - return queryPage; + return baseMapper.queryPage(pageParam, qo); } @Override @@ -106,5 +79,25 @@ public class LoginEquipmentServiceImpl extends ExtendServiceImpl queryByPacketId(Long id) { + return baseMapper.queryByPacketId(id); + } + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/RobotGroupServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/RobotGroupServiceImpl.java new file mode 100644 index 0000000..ae47f0d --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/RobotGroupServiceImpl.java @@ -0,0 +1,96 @@ +package com.baiye.modules.scrm.service.impl; + +import cn.hutool.core.collection.CollUtil; +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.scrm.entity.RobotGroup; +import com.baiye.modules.scrm.mapper.RobotGroupMapper; +import com.baiye.modules.scrm.qo.RobotGroupQo; +import com.baiye.modules.scrm.service.LoginEquipmentService; +import com.baiye.modules.scrm.service.RobotGroupService; +import com.baiye.modules.scrm.vo.RobotGroupVO; +import com.baiye.modules.scrm.vo.WeChatAccountVO; +import com.baiye.security.util.SecurityUtils; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.google.common.collect.Maps; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * @author Enzo + * @date : 2024/8/14 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class RobotGroupServiceImpl extends ExtendServiceImpl implements RobotGroupService { + + private final RobotGroupMapper robotGroupMapper; + + private final LoginEquipmentService loginEquipmentService; + + @Override + public PageResult queryPage(PageParam pageParam, RobotGroupQo qo) { + PageResult pageResult = robotGroupMapper.queryPage(pageParam, qo); + pageResult.getRecords().forEach(record -> record.setAccountNum(loginEquipmentService.countByRobotId(record.getId()))); + return pageResult; + } + + + @Override + public List queryByUserId(Long currentUserId) { + List groupVOList = robotGroupMapper.selectListByUserId(currentUserId); + for (RobotGroupVO groupVO : groupVOList) { + List voList = loginEquipmentService.queryByPacketId(groupVO.getId()); + Map map = Maps.newConcurrentMap(); + Iterator iterator = voList.iterator(); + while (iterator.hasNext()) { + WeChatAccountVO vo = iterator.next(); + if (StringUtils.isBlank(vo.getWxId())) { + iterator.remove(); + continue; + } + if (map.containsKey(vo.getWxId())) { + iterator.remove(); + } + map.put(vo.getWxId(), vo.getWxId()); + } + groupVO.setChildren(voList); + } + return groupVOList; + } + + @Override + public Boolean create(RobotGroup entity) { + + List byName = robotGroupMapper.findByName(entity.getName(), SecurityUtils.getCurrentUserId()); + if (CollUtil.isNotEmpty(byName)) { + throw new BadRequestException("该名称已存在!"); + } + entity.setUserId(SecurityUtils.getCurrentUserId()); + return this.save(entity); + } + + @Override + public Boolean update(RobotGroup entity) { + List byName = robotGroupMapper.findByName(entity.getName(), SecurityUtils.getCurrentUserId()); + if (CollUtil.isNotEmpty(byName)) { + throw new BadRequestException("该名称已存在!"); + } + return this.updateById(entity); + } + + @Override + public Boolean del(Long groupId) { + loginEquipmentService.deleteByGroupId(groupId); + return SqlHelper.retBool(baseMapper.deleteById(groupId)); + } +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WeChatServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WeChatServiceImpl.java index 03895ed..9ce16e6 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WeChatServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WeChatServiceImpl.java @@ -2,25 +2,23 @@ package com.baiye.modules.scrm.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.net.URLEncodeUtil; +import cn.hutool.core.text.CharPool; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.StrPool; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; +import cn.hutool.extra.emoji.EmojiUtil; import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.baiye.constant.AddFriendConstant; import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.enums.ResponseCode; -import com.baiye.constant.url.WeChatAccountRequest; -import com.baiye.constant.url.WeChatFriendRequest; -import com.baiye.constant.url.WeChatPersonRequest; -import com.baiye.constant.url.WeChatSendMessageRequest; +import com.baiye.constant.url.*; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.enums.PackageEnum; @@ -52,6 +50,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; import java.util.List; import java.util.Map; @@ -128,6 +127,8 @@ public class WeChatServiceImpl implements WeChatService { friedRecord.setAddFriendId(addFriendId); friedRecord.setRobotWxId(weChatFriendDTO.getWechat()); friedRecord.setAddStatus(DefaultNumberConstants.ZERO_NUMBER); + friedRecord.setAddFriendType(DefaultNumberConstants.ONE_NUMBER); + friedRecord.setNickName(EmojiUtil.toAlias(friedRecord.getNickName())); activeAddFriendService.save(friedRecord); // 添加成功 return DefaultNumberConstants.ONE_NUMBER; @@ -149,13 +150,16 @@ public class WeChatServiceImpl implements WeChatService { } @Override - public Boolean createEquipment(Integer num, Long userId) { - long pit = IdUtil.getSnowflake().nextId(); - // 创建账号 - LoginEquipment equipment = new LoginEquipment(); - equipment.setUserId(userId); - equipment.setPit(String.valueOf(pit)); - loginEquipmentService.save(equipment); + public Boolean createEquipment(Integer num, Long packetId, Long currentUserId) { + for (int i = 0; i < num; i++) { + long pit = IdUtil.getSnowflake().nextId(); + // 创建账号 + LoginEquipment equipment = new LoginEquipment(); + equipment.setPacketId(packetId); + equipment.setUserId(currentUserId); + equipment.setPit(String.valueOf(pit)); + loginEquipmentService.save(equipment); + } return Boolean.TRUE; } @@ -391,18 +395,17 @@ public class WeChatServiceImpl implements WeChatService { } @Override - public Boolean sendTextMessage(List passGreetMessage, String toUserName, String fromUserName) { - for (String sendMessage : passGreetMessage) { - if (StringUtils.isNotBlank(sendMessage)) { - Map map = ImmutableMap.of("wechat", toUserName, - "content", sendMessage, "tagetWxId", fromUserName); - String result = HttpUtil.post - (weChatProperties.getRequestUrl().concat(WeChatSendMessageRequest.SEND_TEXT_MESSAGE), map); - if (JSONUtil.isTypeJSON(result)) { - WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); - if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { - return Boolean.TRUE; - } + public Boolean sendTextMessage(String message, String toUserName, String fromUserName) { + if (StringUtils.isNotBlank(message)) { + Map map = ImmutableMap.of("wechat", toUserName, + "content", message, "tagetWxId", fromUserName); + String result = HttpUtil.post + (weChatProperties.getRequestUrl().concat(WeChatSendMessageRequest.SEND_TEXT_MESSAGE), map); + log.info("========== the send text message as {} ==========", result); + if (JSONUtil.isTypeJSON(result)) { + WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Boolean.TRUE; } } } @@ -492,4 +495,106 @@ public class WeChatServiceImpl implements WeChatService { return Boolean.FALSE; } + @Override + public Boolean sendPictureMessage(String passGreetMessage, String wxId, String fromUserName) { + if (StringUtils.isNotBlank(passGreetMessage)) { + Map map = ImmutableMap.of("wechat", wxId, + "parhUrl", passGreetMessage, "tagetWxId", fromUserName); + String result = HttpUtil.post + (weChatProperties.getRequestUrl().concat(WeChatSendMessageRequest.SEND_PICTURE_MESSAGE), map); + log.info("========== the picture text message as {} ==========", result); + if (JSONUtil.isTypeJSON(result)) { + WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Boolean.TRUE; + } + } + } + return Boolean.FALSE; + } + + @Override + public WechatMemberDTO queryByWechatId(String wxId, String targetWechat) { + Map map = ImmutableMap.of("wechat", wxId, + "targetWx", targetWechat, "type", DefaultNumberConstants.ONE_NUMBER); + String result = HttpUtil.post((weChatProperties.getRequestUrl() + .concat(WeChatAccountRequest.WE_CHAT_FRIEND_INFO)), map); + log.info("============== the request friend info as {} ==============", result); + if (JSONUtil.isTypeJSON(result)) { + WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + if (ObjectUtil.isNotNull(weChatResponse.getData())) { + String jsonStr = JSONUtil.toJsonStr(weChatResponse.getData()); + return JSONUtil.toBean(jsonStr, WechatMemberDTO.class); + } + } + } + return null; + } + + @Override + public Boolean sendTextCircleFriends(String wechat, List pictures, String title, List comments, List blackList, List labelIds) { + Map hashMap = Maps.newHashMap(); + hashMap.put("wechat", wechat); + hashMap.put("pictures[]", StringUtils.join(pictures, CharPool.COMMA)); + hashMap.put("title", title); + hashMap.put("comments[]", comments); + hashMap.put("blackList", StringUtils.join(blackList, CharPool.COMMA)); + hashMap.put("labelIds", StringUtils.join(labelIds, CharPool.COMMA)); + String result = HttpUtil.post((weChatProperties.getRequestUrl() + .concat(WechatCircleFriendRequest.TEXT_CIRCLE_FRIEND)), hashMap); + log.info("============== the send circle friend as {} ==============", result); + if (JSONUtil.isTypeJSON(result)) { + WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } + + @Override + public Boolean sendVideoCircleFriends(String wechat, String reqUrl, String content, String coverUrl, List comments, List blackList, List labelIds) { + Map hashMap = Maps.newHashMap(); + hashMap.put("wechat", wechat); + hashMap.put("reqUrl", reqUrl); + hashMap.put("content", content); + hashMap.put("coverUrl", coverUrl); + hashMap.put("comments[]", comments); + hashMap.put("blackList", StringUtils.join(blackList, CharPool.COMMA)); + hashMap.put("labelIds", StringUtils.join(labelIds, CharPool.COMMA)); + String result = HttpUtil.post((weChatProperties.getRequestUrl() + .concat(WechatCircleFriendRequest.VIDEO_CIRCLE_FRIEND)), hashMap); + log.info("============== the send video circle friend as {} ==============", result); + if (JSONUtil.isTypeJSON(result)) { + WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } + + @Override + public Boolean sendLinkCircleFriends(String wechat, String reqUrl, String title, String content, String coverUrl, List comments, List blackList, List labelIds) { + Map hashMap = Maps.newHashMap(); + hashMap.put("wechat", wechat); + hashMap.put("reqUrl", reqUrl); + hashMap.put("title", title); + hashMap.put("content", content); + hashMap.put("coverUrl", coverUrl); + hashMap.put("comments[]", comments); + hashMap.put("blackList", StringUtils.join(blackList, CharPool.COMMA)); + hashMap.put("labelIds", StringUtils.join(labelIds, CharPool.COMMA)); + String result = HttpUtil.post((weChatProperties.getRequestUrl() + .concat(WechatCircleFriendRequest.VIDEO_CIRCLE_FRIEND)), hashMap); + log.info("============== the send link circle friend as {} ==============", result); + if (JSONUtil.isTypeJSON(result)) { + WeChatResponse weChatResponse = JSONUtil.toBean(result, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatAccountServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatAccountServiceImpl.java index faecdef..52acdac 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatAccountServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatAccountServiceImpl.java @@ -1,6 +1,8 @@ package com.baiye.modules.scrm.service.impl; +import cn.hutool.core.convert.Convert; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import com.baiye.modules.scrm.dto.PacketDTO; import com.baiye.modules.scrm.entity.WeChatAccount; import com.baiye.modules.scrm.mapper.WeChatAccountMapper; import com.baiye.modules.scrm.service.WechatAccountService; @@ -10,6 +12,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; /** @@ -50,4 +53,14 @@ public class WechatAccountServiceImpl extends ExtendServiceImpl public Long getCountByCustomerId(Long customerId) { return baseMapper.selectCountByCustomerId(customerId); } + + @Override + public List queryByWeChatId(List executeWechatList) { + return baseMapper.selectListByWechatId(executeWechatList); + } + + @Override + public Boolean updatePacketById(PacketDTO dto) { + return SqlHelper.retBool(baseMapper.updatePacketIdByList(dto.getIdList(), dto.getPacketId())); + } } diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatCallbackServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatCallbackServiceImpl.java index 5313413..a1994d0 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatCallbackServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatCallbackServiceImpl.java @@ -141,6 +141,7 @@ public class WechatCallbackServiceImpl implements WechatCallbackService { WeChatAccount byWxId = weChatService.findByWxId(wxId); if (ObjectUtil.isNotNull(byWxId) && ObjectUtil.isNotNull(byWxId.getId())) { for (GroupCallbackDTO dto : groupCallbackDTOList) { + log.info("========= the group id as {} ===========",dto.getUserName()); Long syncedGroup = weChatGroupService.syncGroup(byWxId, dto); // 插入群 if (syncedGroup > DefaultNumberConstants.ZERO_NUMBER @@ -215,6 +216,7 @@ public class WechatCallbackServiceImpl implements WechatCallbackService { String groupJson = weChatGroupService.queryGroupUserList(weChatResponse.getWxId(), wechatMemberDTO.getUserName()); List groupCallbackDTOList = JSONUtil.toList(groupJson, GroupCallbackDTO.class); + // 异步方式同步群成员信息 CompletableFuture.runAsync(() -> syncGroupMember(weChatResponse.getWxId(), groupCallbackDTOList)); continue; diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatFriendServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatFriendServiceImpl.java index 1479996..1146c4b 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatFriendServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatFriendServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.domain.PageResult; import com.baiye.enums.StatisticsEnum; @@ -54,7 +53,7 @@ public class WechatFriendServiceImpl extends ExtendServiceImpl for (WeChatAccountVO vo : voList) { Long count = this.baseMapper.selectCount(WrappersX.lambdaQueryX(WeChatFriedRecord.class).eq (WeChatFriedRecord::getRobotWxId, weChatFriendDTO.getRobotWxId()).eq - (WeChatFriedRecord::getFriendId, weChatFriendDTO.getFriendId()).eq(WeChatFriedRecord::getUserId, vo.getUserId())); + (WeChatFriedRecord::getFriendId, weChatFriendDTO.getFriendId()).eq(WeChatFriedRecord::getUserId, vo.getUserId())); if (count == DefaultNumberConstants.ZERO_NUMBER && vo.getWxId().equals(weChatFriendDTO.getRobotWxId())) { WeChatFriedRecord weChatFriedRecord = new WeChatFriedRecord(); diff --git a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatGroupServiceImpl.java b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatGroupServiceImpl.java index ad02f2f..0b55afd 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatGroupServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/scrm/service/impl/WechatGroupServiceImpl.java @@ -71,31 +71,28 @@ public class WechatGroupServiceImpl extends ExtendServiceImpl @Override public Long syncGroup(WeChatAccount byWxId, GroupCallbackDTO dto) { - if (StringUtils.isNotBlank(dto.getNickName())) { - WeChatGroup weChatGroup = this.baseMapper.queryByUsername(dto.getUserName()); - if (ObjectUtil.isNull(weChatGroup) || ObjectUtil.isNull(weChatGroup.getId())) { - // 雪花算法id - long groupId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); - weChatGroup = new WeChatGroup(); - weChatGroup.setId(groupId); - weChatGroup.setUserId(byWxId.getUserId()); - weChatGroup.setWechatId(byWxId.getWxId()); - weChatGroup.setChatRoomId(dto.getUserName()); - weChatGroup.setChatRoomNick(dto.getNickName()); - weChatGroup.setChatRoomIcon - (StringUtils.isEmpty(dto.getBigHeadImgUrl()) ? dto.getSmallHeadImgUrl() : dto.getBigHeadImgUrl()); - weChatGroup.setChatRoomOwner(dto.getChatRoomOwner()); - this.save(weChatGroup); - return groupId; - } + WeChatGroup weChatGroup = this.baseMapper.queryByUsername(dto.getUserName()); + if (ObjectUtil.isNull(weChatGroup) || ObjectUtil.isNull(weChatGroup.getId())) { + // 雪花算法id + long groupId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + weChatGroup = new WeChatGroup(); + weChatGroup.setId(groupId); + weChatGroup.setUserId(byWxId.getUserId()); + weChatGroup.setWechatId(byWxId.getWxId()); + weChatGroup.setChatRoomId(dto.getUserName()); weChatGroup.setChatRoomNick(dto.getNickName()); weChatGroup.setChatRoomIcon (StringUtils.isEmpty(dto.getBigHeadImgUrl()) ? dto.getSmallHeadImgUrl() : dto.getBigHeadImgUrl()); weChatGroup.setChatRoomOwner(dto.getChatRoomOwner()); - this.updateById(weChatGroup); - return weChatGroup.getId(); + this.save(weChatGroup); + return groupId; } - return (long) DefaultNumberConstants.ZERO_NUMBER; + weChatGroup.setChatRoomNick(StringUtils.isNotBlank(dto.getNickName()) ? dto.getNickName() : "群聊"); + weChatGroup.setChatRoomIcon + (StringUtils.isEmpty(dto.getBigHeadImgUrl()) ? dto.getSmallHeadImgUrl() : dto.getBigHeadImgUrl()); + weChatGroup.setChatRoomOwner(dto.getChatRoomOwner()); + this.updateById(weChatGroup); + return weChatGroup.getId(); } @Override diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/AddFriendTaskVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/AddFriendTaskVO.java index f52ccad..7a466fe 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/vo/AddFriendTaskVO.java +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/AddFriendTaskVO.java @@ -90,4 +90,7 @@ public class AddFriendTaskVO { private List executeWechatList; + @Schema(title = "执行微信号昵称") + private List executeWechatNicknameList; + } diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/CircleFriendTaskVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/CircleFriendTaskVO.java new file mode 100644 index 0000000..c6af24b --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/CircleFriendTaskVO.java @@ -0,0 +1,66 @@ +package com.baiye.modules.scrm.vo; + +import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + * @author Enzo + * @date : 2024/8/20 + */ +@Data +public class CircleFriendTaskVO { + + @TableId(type = IdType.AUTO) + @Schema(title = "ID") + @NotNull(message = "ID不能为空", groups = { UpdateGroup.class }) + private Long id; + + @Schema(title = "任务名称") + private String taskName; + + @Schema(title = "标题") + private String title; + + @Schema(title = "发送状态") + private Integer sendStatus; + + @Schema(title = "用户ID") + private Long userId; + + @Schema(title = "内容") + private String content; + + @Schema(title = "类型") + private Integer type; + + @Schema(title = "延后时间") + private Integer deferredTime; + + @Schema(title = "延后评论") + private String deferredComment; + + @Schema(title = "是否现在执行") + private Boolean isNow; + + @Schema(title = "执行时间") + private Date executionTime; + + @Schema(title = "资源地址") + private String sourcePath; + + @Schema(title = "图片地址") + private List pictureList; + + + @Schema(title = "执行微信号") + private List executeWechatList; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonRecordVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonRecordVO.java new file mode 100644 index 0000000..f8739b8 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonRecordVO.java @@ -0,0 +1,28 @@ +package com.baiye.modules.scrm.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentFontStyle; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +/** + * @author Enzo + * @date : 2024/8/19 + */ + +@Data +@HeadRowHeight(30) +@ContentRowHeight(15) +@ColumnWidth(18) +@ContentFontStyle(fontHeightInPoints = (short) 12) +public class ComparisonRecordVO { + + + @ExcelProperty("小红书ID") + @ColumnWidth(20) + private String redBookId; + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonSummaryVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonSummaryVO.java new file mode 100644 index 0000000..1f76ee9 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonSummaryVO.java @@ -0,0 +1,64 @@ +package com.baiye.modules.scrm.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentFontStyle; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Getter +@Setter +@HeadRowHeight(30) +@ContentRowHeight(15) +@ColumnWidth(18) +@ContentFontStyle(fontHeightInPoints = (short) 12) +public class ComparisonSummaryVO { + @ExcelProperty("id") + @ColumnWidth(20) + private Long id; + + @ExcelProperty("收集日期") + @ColumnWidth(20) + private String dateStr; + + @ExcelProperty(value = "上传日期") + @ColumnWidth(20) + @DateTimeFormat("yyyy-MM-dd") + private Date createTime; + + @ExcelProperty(value = "建模日期") + @ColumnWidth(20) + @DateTimeFormat("yyyy-MM-dd") + private Date conversionTime; + + @ExcelProperty(value = "小红书ID") + @ColumnWidth(20) + private String redBookId; + + @ExcelProperty(value = "小红书号") + @ColumnWidth(20) + private String redBookNo; + + + @ExcelProperty(value = "项目") + @ColumnWidth(20) + private String photograph; + + + @ExcelProperty(value = "对标医生/机构") + @ColumnWidth(20) + private String institution; + + @ExcelProperty(value = "手机号") + @ColumnWidth(20) + private String comparisonResult; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonTaskVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonTaskVO.java new file mode 100644 index 0000000..0b104d8 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonTaskVO.java @@ -0,0 +1,52 @@ +package com.baiye.modules.scrm.vo; + +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +/** + * @author Enzo + * @date : 2024/8/19 + */ +@Data +public class ComparisonTaskVO { + + @TableId(type = IdType.INPUT) + @Schema(title = "线索ID") + @NotNull(message = "分发ID不能为空", groups = {UpdateGroup.class}) + private Long id; + + @Schema(title = "任务名称") + private String taskName; + + + @Schema(title = "用户ID") + private Long userId; + + @Schema(title = "父类ID") + private Long parentId; + + @Schema(title = "线索备注") + private String remark; + + @Schema(title = "是否下载完成") + private Boolean isDown; + + @Schema(title = "是否完成") + private Boolean isComplete; + + + @Schema(title = "创建时间") + private LocalDateTime createTime; + + + @Schema(title = "修改时间") + private LocalDateTime updateTime; +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonVO.java new file mode 100644 index 0000000..09cf6c8 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/ComparisonVO.java @@ -0,0 +1,57 @@ +package com.baiye.modules.scrm.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Enzo + * @date : 2024/6/2 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ComparisonVO { + + + /** + * 日期 + */ + @ExcelProperty(value = "日期") + private String dateStr; + + /** + * 小红书ID + */ + @ExcelProperty(value = "小红书ID") + private String redBookId; + + /** + * 小红书号 + */ + @ExcelProperty(value = "小红书号") + private String redBookNo; + + /** + * 项目 + */ + @ExcelProperty(value = "项目") + private String photograph; + + /** + * 机构 + */ + @ExcelProperty(value = "对标医生/机构") + private String institution; + + /** + * 手机号 + */ + @ExcelProperty(value = "手机号") + private String phone; + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/RobotGroupVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/RobotGroupVO.java new file mode 100644 index 0000000..36bd9ad --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/RobotGroupVO.java @@ -0,0 +1,42 @@ +package com.baiye.modules.scrm.vo; + +import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author Enzo + * 分组返回结果 + */ +@Data +public class RobotGroupVO { + + @TableId(type = IdType.AUTO) + @Schema(title = "分组ID") + @NotNull(message = "分组ID", groups = {UpdateGroup.class}) + private Long id; + + @Schema(title = "user_id") + private Long userId; + + @Schema() + private Integer groupType; + + @Schema(title = "name") + private String name; + + @Schema + private String remark; + + private Long accountNum; + + private List children; + + +} diff --git a/admin/src/main/java/com/baiye/modules/scrm/vo/WeChatAccountVO.java b/admin/src/main/java/com/baiye/modules/scrm/vo/WeChatAccountVO.java index f51903d..f48396b 100644 --- a/admin/src/main/java/com/baiye/modules/scrm/vo/WeChatAccountVO.java +++ b/admin/src/main/java/com/baiye/modules/scrm/vo/WeChatAccountVO.java @@ -14,13 +14,15 @@ import java.util.Date; public class WeChatAccountVO { @Schema(title = "id") - private Long id; @Schema(title = "用户id") private Long userId; + @Schema(title = "分组ID") + private Long packetId; + @Schema(title = "设备信息") private String deviceInformation; @@ -55,7 +57,7 @@ public class WeChatAccountVO { @Schema(name = "拥有者") private Long ownerId; - @Schema(name = "微信号") + @Schema(name = "别名") private String alias; @@ -94,4 +96,7 @@ public class WeChatAccountVO { @Schema(title = "标签数") private Integer labelNum; + @Schema(title = "客服ID") + private Long customerId; + } diff --git a/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java b/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java index b381a19..bd5a86a 100644 --- a/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java +++ b/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java @@ -1,25 +1,23 @@ package com.baiye.schedule.handler; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.text.StrPool; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; -import cn.hutool.http.HttpUtil; import com.baiye.common.job.handler.ElasticJobHandler; import com.baiye.constant.DefaultNumberConstants; -import com.baiye.constant.url.WeChatFriendRequest; import com.baiye.modules.scrm.dto.WeChatAddFriendDTO; import com.baiye.modules.scrm.entity.AddFriend; import com.baiye.modules.scrm.entity.AddFriendFrequentlyRecord; import com.baiye.modules.scrm.entity.AddFriendTask; import com.baiye.modules.scrm.mapper.AddFriendTaskMapper; +import com.baiye.modules.scrm.service.ActiveAddFriendService; import com.baiye.modules.scrm.service.AddFriendFrequentlyRecordService; import com.baiye.modules.scrm.service.AddFriendService; import com.baiye.modules.scrm.service.WeChatService; import com.baiye.util.CronUtil; +import com.baiye.validation.ValidationUtil; import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.api.simple.SimpleJob; import lombok.RequiredArgsConstructor; @@ -30,6 +28,7 @@ import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; + /** * @author Enzo * @date : 2024/6/2 @@ -41,6 +40,8 @@ public class AddFriendJob implements SimpleJob { private final AddFriendFrequentlyRecordService addFriendFrequentlyRecordService; + private final ActiveAddFriendService activeAddFriendService; + private final AddFriendTaskMapper addFriendTaskMapper; private final ElasticJobHandler elasticJobHandler; @@ -74,7 +75,8 @@ public class AddFriendJob implements SimpleJob { DateUtil.offsetMinute(byTaskId.getLastExecutionTime(), byTaskId.getAddIntervalStart()).after(now)) { return; } - Long countByDate = addFriendService.countByTaskAndDate(taskId, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)); + Long countByDate = activeAddFriendService.countByTaskAndDate + (taskId, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)); long dayLimit = byTaskId.getAddFriendMax() - countByDate; if (dayLimit > DefaultNumberConstants.ZERO_NUMBER) { // 查询资源 @@ -100,15 +102,15 @@ public class AddFriendJob implements SimpleJob { // 添加好友 WeChatAddFriendDTO addFriendDTO = WeChatAddFriendDTO.builder().wechat (addFriend.getTrumpetWechat()).tagetWxId(addFriend.getTargetWechat()).helloContent - (StringUtils.isNotBlank(addFriend.getGreet()) ? addFriend.getGreet() : "你好,很高兴认识你!" ).type(addFriend.getTargetWechat().length() == DefaultNumberConstants.ELEVEN_NUMBER ? - DefaultNumberConstants.FIFTEEN_NUMBER : DefaultNumberConstants.THREE_NUMBER).build(); + (StringUtils.isNotBlank(addFriend.getGreet()) ? addFriend.getGreet() : "你好,很高兴认识你!").type + (ValidationUtil.isNumber(addFriend.getTargetWechat()) ? DefaultNumberConstants.FIFTEEN_NUMBER : DefaultNumberConstants.THREE_NUMBER).build(); Integer addedFriend = weChatService.addFriend(Long.parseLong(taskId), addFriend.getId(), addFriendDTO); addFriend.setAddStatus(addedFriend); addFriend.setExecutionTime(DateUtil.date()); addFriendService.updateById(addFriend); } String generatedCronByTime = CronUtil.generateCronByTime - (byTaskId.getStartTime(), byTaskId.getEndTime(), byTaskId.getAddIntervalStart(), byTaskId.getAddIntervalEnd(),byTaskId.getLastExecutionTime()); + (byTaskId.getStartTime(), byTaskId.getEndTime(), byTaskId.getAddIntervalStart(), byTaskId.getAddIntervalEnd(), byTaskId.getLastExecutionTime()); // 修改定时任务随机时间 elasticJobHandler.updateJob(jobName, generatedCronByTime); // 修改最后执行时间 @@ -119,5 +121,4 @@ public class AddFriendJob implements SimpleJob { } log.info("{}定时添加好友end...", DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MS_PATTERN)); } - } diff --git a/admin/src/main/java/com/baiye/schedule/handler/DynamicJob.java b/admin/src/main/java/com/baiye/schedule/handler/DynamicJob.java index 2fac3c1..5821dcc 100644 --- a/admin/src/main/java/com/baiye/schedule/handler/DynamicJob.java +++ b/admin/src/main/java/com/baiye/schedule/handler/DynamicJob.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.api.simple.SimpleJob; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; import java.util.Date; diff --git a/admin/src/main/java/com/baiye/schedule/handler/SendCircleFriendTaskJob.java b/admin/src/main/java/com/baiye/schedule/handler/SendCircleFriendTaskJob.java new file mode 100644 index 0000000..e89572c --- /dev/null +++ b/admin/src/main/java/com/baiye/schedule/handler/SendCircleFriendTaskJob.java @@ -0,0 +1,59 @@ +package com.baiye.schedule.handler; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.modules.scrm.entity.CircleFriendTask; +import com.baiye.modules.scrm.mapper.CircleFriendTaskMapper; +import com.baiye.modules.scrm.service.WeChatService; +import com.dangdang.ddframe.job.api.ShardingContext; +import com.dangdang.ddframe.job.api.simple.SimpleJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.Date; + +/** + * @author Enzo + * @date : 2024/8/16 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SendCircleFriendTaskJob implements SimpleJob { + + private final WeChatService weChatService; + + private final CircleFriendTaskMapper circleFriendTaskMapper; + + @Override + public void execute(ShardingContext shardingContext) { + Date now = DateUtil.date(); + String jobName = shardingContext.getJobName(); + String taskId = shardingContext.getJobParameter(); + log.info("{}定时发送朋友圈start task name {} task id {} ...", DateUtil.format(now, DatePattern.NORM_DATETIME_MS_PATTERN), jobName, taskId); + if (ObjectUtil.isNotNull(taskId)) { + CircleFriendTask circleFriendTask = circleFriendTaskMapper.selectById(Long.parseLong(taskId)); + if (ObjectUtil.isNotNull(circleFriendTask) && ObjectUtil.isNotNull(circleFriendTask.getId())) { + // 判断是否过期 + if (circleFriendTask.getExecutionTime().before(now)) { + circleFriendTask.setSendStatus(DefaultNumberConstants.ONE_NUMBER); + circleFriendTaskMapper.updateById(circleFriendTask); + return; + } + for (String targetWechat : circleFriendTask.getExecuteWechatList()) { + Boolean result = weChatService.sendTextCircleFriends + (targetWechat, circleFriendTask.getPictureList(), circleFriendTask.getTitle(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + log.info("============= send text circle friends {} success {} ============", targetWechat, result); + } + circleFriendTask.setSendStatus(DefaultNumberConstants.ONE_NUMBER); + circleFriendTaskMapper.updateById(circleFriendTask); + } + } + log.info("{}定时发送朋友圈end...", DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MS_PATTERN)); + } +} diff --git a/admin/src/main/resources/application-prod.yml b/admin/src/main/resources/application-prod.yml index 2f76f8a..ba4d407 100644 --- a/admin/src/main/resources/application-prod.yml +++ b/admin/src/main/resources/application-prod.yml @@ -5,7 +5,7 @@ spring: password: 'k12BDmcsvk.' redis: host: localhost - password: + password: 5FyJUj35jnzy port: 6379 @@ -49,4 +49,4 @@ minio: feign: request: - url: http://127.0.0.1:8082 + url: http://172.17.34.99:8082 diff --git a/admin/src/main/resources/mapper/LoginEquipmentMapper.xml b/admin/src/main/resources/mapper/LoginEquipmentMapper.xml index 822aa33..8bab8fe 100644 --- a/admin/src/main/resources/mapper/LoginEquipmentMapper.xml +++ b/admin/src/main/resources/mapper/LoginEquipmentMapper.xml @@ -15,6 +15,7 @@ le.create_time, le.update_time, wa.user_id, + wa.packet_id, le.id, le.pit, le.robot_id, @@ -46,6 +47,10 @@ and wa.create_time <= #{endTime,jdbcType=TIMESTAMP} + + + and wa.packet_id = #{packetId,jdbcType=BIGINT} + order by le.id desc @@ -79,4 +84,17 @@ LEFT join tb_wechat_account wa on wa.id = we.account_id where wa.wx_id = #{wxId} + + diff --git a/admin/src/test/java/FeignTest.java b/admin/src/test/java/FeignTest.java index 27038e8..90620f5 100644 --- a/admin/src/test/java/FeignTest.java +++ b/admin/src/test/java/FeignTest.java @@ -1,5 +1,11 @@ +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; import com.baiye.AdminApplication; +import com.baiye.constant.url.WeChatGroupRequest; import com.baiye.modules.customer.feign.CustomerInfoFeign; +import com.baiye.system.properties.WeChatProperties; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.junit.Test; @@ -8,7 +14,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author Enzo @@ -24,6 +33,9 @@ public class FeignTest { @Resource CustomerInfoFeign customerInfoFeign; + @Resource + WeChatProperties weChatProperties; + @Test public void getSetting() { @@ -32,4 +44,30 @@ public class FeignTest { customerInfoFeign.getUsers("aaa"); } + + @Test + public void fileTest(){ + List newed = Lists.newArrayList(); + newed.add("wxid_zbrfto9s8p7822"); + String[] array = newed.toArray(new String[0]); + Map map = ImmutableMap.of("wechat", "wxid_mhm4bqgb9gpg21", + "groupid", "52494312484@chatroom", "members[]",array); + System.out.println(JSONUtil.toJsonStr(map)); + String userListResult = HttpUtil.post + ("http://test.ipad.ecofanli.com/wechat/v1/addgroup", map); + + System.out.println(userListResult); + } + + @Test + public void down(){ + + Map map = ImmutableMap.of("wechat", "wxid_mhm4bqgb9gpg21", + "len", "4861", "msgId","1230003955","isSync","false"); + String userListResult = HttpUtil.post + ("http://test.ipad.ecofanli.com/wechat/v1/downVoiceMsg", map); + + System.out.println(userListResult); + } + } diff --git a/admin/src/test/java/FileTest.java b/admin/src/test/java/FileTest.java index f565f19..2da5cbf 100644 --- a/admin/src/test/java/FileTest.java +++ b/admin/src/test/java/FileTest.java @@ -19,4 +19,6 @@ public class FileTest { @Test public void fileTest(){ } + + } diff --git a/admin/target/classes/application-prod.yml b/admin/target/classes/application-prod.yml index 2f76f8a..ba4d407 100644 --- a/admin/target/classes/application-prod.yml +++ b/admin/target/classes/application-prod.yml @@ -5,7 +5,7 @@ spring: password: 'k12BDmcsvk.' redis: host: localhost - password: + password: 5FyJUj35jnzy port: 6379 @@ -49,4 +49,4 @@ minio: feign: request: - url: http://127.0.0.1:8082 + url: http://172.17.34.99:8082 diff --git a/admin/target/classes/mapper/LoginEquipmentMapper.xml b/admin/target/classes/mapper/LoginEquipmentMapper.xml index 822aa33..8bab8fe 100644 --- a/admin/target/classes/mapper/LoginEquipmentMapper.xml +++ b/admin/target/classes/mapper/LoginEquipmentMapper.xml @@ -15,6 +15,7 @@ le.create_time, le.update_time, wa.user_id, + wa.packet_id, le.id, le.pit, le.robot_id, @@ -46,6 +47,10 @@ and wa.create_time <= #{endTime,jdbcType=TIMESTAMP} + + + and wa.packet_id = #{packetId,jdbcType=BIGINT} + order by le.id desc @@ -79,4 +84,17 @@ LEFT join tb_wechat_account wa on wa.id = we.account_id where wa.wx_id = #{wxId} + + diff --git a/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/PayOrderConverterImpl.java b/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/PayOrderConverterImpl.java index 8924072..e2da3c9 100644 --- a/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/PayOrderConverterImpl.java +++ b/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/PayOrderConverterImpl.java @@ -6,7 +6,7 @@ import javax.annotation.Generated; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2024-07-26T16:31:38+0800", + date = "2024-08-20T18:13:12+0800", comments = "version: 1.5.3.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)" ) public class PayOrderConverterImpl implements PayOrderConverter { diff --git a/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/WeChatAccountConverterImpl.java b/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/WeChatAccountConverterImpl.java index 482d1aa..629b724 100644 --- a/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/WeChatAccountConverterImpl.java +++ b/admin/target/generated-sources/annotations/com/baiye/modules/scrm/converter/WeChatAccountConverterImpl.java @@ -6,7 +6,7 @@ import javax.annotation.Generated; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2024-07-26T16:31:39+0800", + date = "2024-08-20T18:13:12+0800", comments = "version: 1.5.3.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)" ) public class WeChatAccountConverterImpl implements WeChatAccountConverter { @@ -21,6 +21,7 @@ public class WeChatAccountConverterImpl implements WeChatAccountConverter { weChatAccountVO.setId( weChatAccount.getId() ); weChatAccountVO.setUserId( weChatAccount.getUserId() ); + weChatAccountVO.setPacketId( weChatAccount.getPacketId() ); weChatAccountVO.setDeviceInformation( weChatAccount.getDeviceInformation() ); weChatAccountVO.setUsername( weChatAccount.getUsername() ); weChatAccountVO.setNickname( weChatAccount.getNickname() ); @@ -34,6 +35,7 @@ public class WeChatAccountConverterImpl implements WeChatAccountConverter { weChatAccountVO.setUpdateTime( weChatAccount.getUpdateTime() ); weChatAccountVO.setStatus( weChatAccount.getStatus() ); weChatAccountVO.setRemark( weChatAccount.getRemark() ); + weChatAccountVO.setCustomerId( weChatAccount.getCustomerId() ); return weChatAccountVO; } diff --git a/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 80621b0..7a6ba32 100644 --- a/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -5,26 +5,35 @@ com\baiye\modules\scrm\service\impl\WeChatLabelServiceImpl.class com\baiye\modules\scrm\dto\EquipmentDTO.class com\baiye\modules\scrm\service\impl\PayOrderServiceImpl.class com\baiye\modules\scrm\entity\StaticResource.class +com\baiye\modules\scrm\vo\ComparisonVO.class +com\baiye\modules\scrm\converter\CircleFriendTaskConverter.class +com\baiye\modules\scrm\vo\ComparisonRecordVO.class com\baiye\modules\customer\controller\CustomerVisibleRangeController.class com\baiye\modules\scrm\entity\WeChatGroup.class com\baiye\modules\scrm\controller\WeChatLabelController.class com\baiye\modules\scrm\entity\WeChatGroupMember.class +com\baiye\listener\ComparisonAdditionalDataListener.class com\baiye\modules\scrm\entity\AddFriendTask.class +com\baiye\modules\scrm\dto\AfterPassingDTO.class +com\baiye\modules\scrm\dto\SaveComparisonDTO$SaveComparisonDTOBuilder.class com\baiye\properties\PayConfig.class com\baiye\schedule\handler\AddFriendJob.class com\baiye\modules\scrm\mapper\RobotCustomerMapper.class com\baiye\modules\scrm\service\impl\ActiveAddFriendRecordServiceImpl.class +com\baiye\modules\scrm\service\impl\ComparisonTaskServiceImpl.class com\baiye\modules\scrm\service\impl\WeChatServiceImpl.class com\baiye\modules\scrm\dto\CustomerAddRobotDTO.class com\baiye\captcha\config\KaptchaTextCreator.class com\baiye\modules\customer\entity\CustomerRobotWxLabel.class com\baiye\modules\scrm\converter\PayOrderConverterImpl.class com\baiye\modules\scrm\converter\RobotCustomerConverter.class +com\baiye\modules\scrm\vo\CircleFriendTaskVO.class com\baiye\modules\scrm\service\WeChatService.class com\baiye\modules\customer\service\impl\CustomerRobotWxLabelServiceImpl.class com\baiye\modules\customer\service\impl\CustomerUserServiceImpl.class com\baiye\modules\scrm\entity\LoginEquipment.class com\baiye\modules\scrm\dto\AliPayPcDTO.class +com\baiye\modules\scrm\mapper\CircleFriendTaskMapper.class com\baiye\modules\customer\converter\CustomerRobotWxLabelConverter.class com\baiye\modules\customer\service\CustomerJoinRobotService.class com\baiye\modules\scrm\qo\RobotWxLabelQO.class @@ -37,14 +46,21 @@ com\baiye\modules\scrm\converter\AddFriendTaskConverter.class com\baiye\modules\scrm\converter\WeChatAccountConverterImpl.class com\baiye\modules\scrm\vo\WeChatAddFriendVo.class com\baiye\modules\scrm\converter\WeChatAccountConverter.class +com\baiye\modules\scrm\entity\ComparisonTask.class com\baiye\modules\scrm\service\impl\LoginEquipmentServiceImpl.class com\baiye\modules\scrm\dto\SaveAddFriendDTO$SaveAddFriendDTOBuilder.class com\baiye\modules\scrm\converter\AddFriendConverter.class +com\baiye\modules\scrm\converter\ComparisonConverterImpl.class +com\baiye\modules\scrm\service\ComparisonTaskLogService.class com\baiye\modules\scrm\entity\AddFriendFrequentlyRecord.class +com\baiye\modules\scrm\entity\AddFriendPassGreetMessage.class +com\baiye\modules\scrm\service\ComparisonTaskService.class com\baiye\modules\customer\mapper\CustomerVisibleRangeMapper.class +com\baiye\modules\scrm\entity\ComparisonTaskLog.class com\baiye\constant\ResponseConstant.class com\baiye\modules\scrm\controller\PayOrderController.class com\baiye\modules\scrm\entity\WeChatFriedRecord.class +com\baiye\modules\scrm\service\RobotGroupService.class com\baiye\modules\scrm\dto\UpdateTaskDTO.class com\baiye\modules\scrm\dto\CreateCodeDTO.class com\baiye\modules\scrm\entity\PayOrder.class @@ -52,8 +68,10 @@ com\baiye\modules\scrm\vo\AccountStatisticsVO.class com\baiye\captcha\config\ArithmeticCaptchaAbstractRewrite.class com\baiye\captcha\config\KaptchaTextCreator$1.class com\baiye\modules\scrm\service\PayOrderService.class +com\baiye\modules\scrm\mapper\ComparisonTaskLogMapper.class com\baiye\modules\scrm\mapper\WeChatAccountMapper.class com\baiye\modules\scrm\vo\StatisticsFriendVO.class +com\baiye\modules\scrm\service\AddFriendPassGreetMessageService.class com\baiye\modules\scrm\qo\ResourceQo.class com\baiye\modules\customer\converter\CustomerUserConverter.class com\baiye\schedule\handler\ScanDynamicJobHandler.class @@ -69,11 +87,17 @@ com\baiye\modules\customer\service\CustomerRobotWxLabelService.class com\baiye\schedule\entity\JobDynamicTask.class com\baiye\modules\scrm\dto\GroupMemberDTO.class com\baiye\modules\scrm\service\WeChatLabelService.class +com\baiye\modules\scrm\vo\ComparisonSummaryVO.class com\baiye\modules\customer\entity\CustomerVisibleRange.class +com\baiye\modules\scrm\dto\PacketDTO.class com\baiye\modules\scrm\vo\PayOrderVO.class +com\baiye\modules\scrm\qo\CircleFriendQO.class com\baiye\modules\scrm\service\WechatAccountService.class com\baiye\constant\PrefixKeyConstant.class +com\baiye\modules\scrm\service\impl\AddFriendPassGreetMessageServiceImpl.class +com\baiye\modules\scrm\vo\RobotGroupVO.class com\baiye\modules\scrm\dto\PushCodeDTO.class +com\baiye\modules\scrm\mapper\RobotGroupMapper.class com\baiye\modules\scrm\qo\PayOrderQo.class com\baiye\modules\scrm\qo\TaskQo.class com\baiye\modules\scrm\qo\AddFriendQo.class @@ -81,6 +105,7 @@ com\baiye\modules\customer\feign\CustomerInfoFeign.class com\baiye\modules\scrm\controller\WeChatController.class com\baiye\listener\AddFileFriendDataListener.class com\baiye\captcha\enums\CaptchaEnum.class +com\baiye\modules\scrm\controller\ComparisonTaskController.class com\baiye\modules\scrm\service\impl\WechatFriendServiceImpl.class com\baiye\modules\scrm\dto\CreateAddFriendTaskDTO.class com\baiye\modules\customer\controller\CustomerInfoController.class @@ -94,6 +119,9 @@ com\baiye\modules\scrm\service\AliPayService.class com\baiye\modules\customer\mapper\CustomerJoinRobotMapper.class com\baiye\schedule\service\ElasticJobService.class com\baiye\modules\scrm\mapper\AddFriendTaskMapper.class +com\baiye\modules\scrm\entity\ComparisonRecord.class +com\baiye\modules\scrm\service\ComparisonRecordService.class +com\baiye\schedule\handler\SendCircleFriendTaskJob.class com\baiye\modules\scrm\dto\WeChatFriendDTO.class com\baiye\modules\customer\mapper\CustomerRobotWxLabelMapper.class com\baiye\constant\GroupConstant.class @@ -111,6 +139,8 @@ com\baiye\modules\scrm\service\impl\WechatCallbackServiceImpl.class com\baiye\modules\scrm\vo\RobotCustomerVO.class com\baiye\modules\scrm\mapper\ActiveAddFriendRecordMapper.class com\baiye\modules\scrm\controller\LoginEquipmentController.class +com\baiye\modules\scrm\entity\CircleFriendTask.class +com\baiye\modules\scrm\vo\ComparisonTaskVO.class com\baiye\event\system\RootApplication.class com\baiye\schedule\DynamicController.class com\baiye\modules\scrm\converter\PayOrderConverter.class @@ -121,13 +151,19 @@ com\baiye\modules\scrm\dto\WechatMemberDTO.class com\baiye\modules\scrm\dto\WeChatAccountDTO.class com\baiye\modules\scrm\service\ActiveAddFriendService.class com\baiye\modules\scrm\dto\CustomerAddRobotDTO$ChangePrimaryDTO.class +com\baiye\modules\scrm\converter\CircleFriendTaskConverterImpl.class +com\baiye\modules\scrm\mapper\ComparisonRecordMapper.class com\baiye\modules\scrm\dto\SaveAddFriendDTO.class +com\baiye\modules\scrm\vo\ComparisonVO$ComparisonVOBuilder.class com\baiye\modules\scrm\dto\CustomerVisibleRangeDTO$SelectRobotWxInfoVo.class +com\baiye\modules\scrm\mapper\AddFriendPassGreetMessageMapper.class com\baiye\modules\scrm\dto\WeChatAddFriendDTO.class com\baiye\modules\scrm\vo\FileAddFriendVO.class +com\baiye\modules\scrm\service\impl\CircleFriendTaskServiceImpl.class com\baiye\modules\scrm\vo\AddFriendTaskVO.class com\baiye\modules\scrm\vo\AddFriendVo$FriendDTO.class com\baiye\modules\customer\entity\CustomerJoinRobot.class +com\baiye\modules\scrm\entity\RobotGroup.class com\baiye\modules\scrm\service\impl\AddFriendServiceImpl.class com\baiye\modules\scrm\controller\WeChatGroupController.class com\baiye\modules\scrm\dto\WeChatStatisticsDTO.class @@ -137,7 +173,10 @@ com\baiye\captcha\CaptchaController.class com\baiye\constant\CaptchaConstant.class com\baiye\modules\customer\controller\CustomerWxLabelController.class com\baiye\modules\scrm\qo\CustomerUserQo.class +com\baiye\modules\scrm\dto\SaveComparisonDTO.class com\baiye\modules\scrm\service\impl\AddFriendTaskServiceImpl.class +com\baiye\modules\scrm\converter\RobotGroupConverter.class +com\baiye\modules\scrm\service\impl\RobotGroupServiceImpl.class com\baiye\modules\scrm\qo\RobotCustomerQo.class com\baiye\modules\scrm\service\RobotCustomerService.class com\baiye\modules\scrm\mapper\WeChatGroupMapper.class @@ -152,22 +191,34 @@ com\baiye\modules\customer\feign\CustomerVisibleFeign.class com\baiye\modules\scrm\entity\AddFriend.class com\baiye\modules\scrm\vo\WeChatGroupMemberVo.class com\baiye\modules\customer\service\CustomerUserService.class +com\baiye\modules\scrm\controller\RobotGroupController.class +com\baiye\modules\scrm\mapper\ComparisonTaskMapper.class +com\baiye\modules\scrm\qo\ComparisonQO.class +com\baiye\modules\scrm\converter\RobotGroupConverterImpl.class com\baiye\modules\scrm\entity\ActiveAddFriedRecord.class com\baiye\modules\scrm\service\AddFriendService.class com\baiye\modules\scrm\controller\StaticResourceController.class com\baiye\modules\scrm\vo\GroupVO.class com\baiye\AdminApplication.class +com\baiye\modules\scrm\controller\WeChatAccountController.class com\baiye\modules\scrm\converter\StaticResourceConverter.class com\baiye\modules\scrm\dto\WeChatLabelDTO.class +com\baiye\modules\scrm\service\impl\ComparisonTaskLogServiceImpl.class com\baiye\schedule\handler\DynamicJob.class com\baiye\properties\ConfigurationBeanFactoryMetadata.class +com\baiye\listener\ComparisonRecordDataListener.class com\baiye\modules\scrm\converter\RobotCustomerConverterImpl.class com\baiye\modules\scrm\entity\RobotCustomer.class com\baiye\modules\scrm\dto\WeChatUserLoginDTO.class +com\baiye\modules\scrm\controller\CircleFriendTaskController.class com\baiye\captcha\config\CaptchaConfig.class +com\baiye\modules\scrm\service\CircleFriendTaskService.class com\baiye\modules\customer\converter\CustomerUserConverterImpl.class +com\baiye\modules\scrm\service\impl\ComparisonRecordServiceImpl.class com\baiye\modules\customer\service\impl\CustomerJoinRobotServiceImpl.class com\baiye\modules\scrm\controller\AliPayController.class +com\baiye\modules\scrm\converter\ComparisonConverter.class +com\baiye\modules\scrm\qo\RobotGroupQo.class com\baiye\modules\scrm\dto\GroupCallbackDTO.class com\baiye\modules\scrm\vo\AddFriendPageVO.class com\baiye\schedule\service\impl\ElasticJobServiceImpl.class diff --git a/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 9491055..0c30c4f 100644 --- a/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,176 +1,222 @@ -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\GroupCallbackDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\WechatCallbackController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WechatCallbackService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\SaveComparisonDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\AliPayService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\AddFriendDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\converter\CustomerRobotWxLabelConverter.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\mapper\CustomerVisibleRangeMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\config\ArithmeticCaptchaRewrite.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AddFriendFrequentlyRecordServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\ComparisonTaskServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\controller\CustomerInfoController.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WeChatLabelService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\PayOrderMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WechatAccountServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\AddFriendTaskMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\AddFriendTaskConverter.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatEquipment.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\StaticResource.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\handler\SendCircleFriendTaskJob.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\AddFriendFrequentlyRecordService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\RobotGroupQo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\PayOrder.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\ComparisonTaskService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\AddFriendFrequentlyRecord.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WechatFriendService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WechatCallbackServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\RobotWxLabelQO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\WeChatLabelController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\TaskQo.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\LoginEquipmentServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\WeChatAccountController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\listener\ComparisonAdditionalDataListener.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WechatGroupServiceImpl.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\AddFriendMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\entity\CustomerVisibleRange.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\ComparisonSummaryVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\CircleFriendTaskServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\feign\CustomerInfoFeign.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CustomerWxLabelDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\aspect\SysUserAspect.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\ResponseConstant.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerVisibleRangeService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\AddFriendController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CreateAddFriendTaskDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\mapper\CustomerUserInfoMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerRobotWxLabelService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\AliPayController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\PacketDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WechatAccountService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\config\ArithmeticCaptchaAbstractRewrite.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\LoginEquipmentController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\UpdateTaskDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\ActiveAddFriendRecordServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\CircleFriendTaskController.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\RobotCustomerServiceImpl.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\entity\JobDynamicTask.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\impl\CustomerJoinRobotServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatUserLoginDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CustomerUserInfoDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\LoginEquipment.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\PushCodeDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\RobotCustomerController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ComparisonRecord.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\AddFriendFrequentlyRecordMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WeChatLabelServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\PayOrderService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\WeChatGroupController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\impl\ValidateCodeServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\AddFriendConverter.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\LoginEquipmentService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatGroupMember.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\AddFriendPassGreetMessageMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\ComparisonTaskMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AddFriendServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\RobotCustomerService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\PayOrderVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\ComparisonTaskLogServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\WeChatAccountConverter.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatOnlineStatusDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\ResourceQo.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\controller\CustomerVisibleRangeController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\RobotGroup.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatFriendMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\feign\CustomerVisibleFeign.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\AddFriendPageVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\impl\CustomerVisibleRangeServiceImpl.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\RobotCustomerVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\RobotCustomerConverter.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatLabelDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatAccountDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatAddFriendDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\mapper\JobDynamicTaskMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WechatFriendServiceImpl.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\listener\AddFileFriendDataListener.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\UploadTemplateHeadConstant.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\AddFriendTask.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\StaticResourceVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\CustomerWxLabelVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\PayOrderServiceImpl.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\CaptchaConstant.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerUserService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\enums\CaptchaEnum.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\impl\CustomerRobotWxLabelServiceImpl.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\OtherInformationDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\AdminApplication.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\handler\ScanDynamicJobHandler.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\impl\CustomerUserServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\FileController.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatFriedRecord.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\PrefixKeyConstant.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\handler\AddFriendJob.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\PayConstants.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\RobotCustomerQo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatAccount.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CustomerVisibleRangeDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WeChatGroupService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\UrlConstant.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\RobotGroupConverter.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CustomerAddRobotDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\StatisticsFriendVO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\properties\PayConfig.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\entity\CustomerRobotWxLabel.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\PayOrderController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\ComparisonTaskVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatGroupMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\AddFriendQo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\mapper\CustomerRobotWxLabelMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\controller\CustomerWxLabelController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AddFriendTaskServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\RobotCustomerMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WeChatGroupMemberService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\CustomerUserInfoVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\PayOrderConverter.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ComparisonTask.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\ActiveAddFriendRecordMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\service\impl\ElasticJobServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\PayOrderQo.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\RobotGroupService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatInformationDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ActiveAddFriedRecord.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\LoginEquipmentMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\AddFriendService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatFriendDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\ComparisonTaskLogService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\FileAddFriendVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ComparisonTaskLog.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatStatisticsDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\ComparisonVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\AccountStatisticsVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\RobotCustomer.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\ComparisonQO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\WeChatGroupMemberVo.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatGroupMemberMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\handler\DynamicJob.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\AddFriend.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\AddFriendPassGreetMessageService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\RobotGroupServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\StaticResourceController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatEquipmentMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\AddFriendTaskVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\ComparisonTaskLogMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WechatMemberDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\service\ElasticJobService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\event\system\RootApplication.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\CaptchaController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ClueEntity.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\StaticResourceMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatLoginInfoDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatGroup.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\properties\ConfigurationBeanFactoryMetadata.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\GroupCallbackDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\WechatCallbackController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WechatCallbackService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\converter\CustomerRobotWxLabelConverter.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\config\ArithmeticCaptchaRewrite.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AddFriendFrequentlyRecordServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\PayOrderMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WechatAccountServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\CircleFriendTaskConverter.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\AddFriendTaskConverter.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\RobotGroupMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WechatFriendService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\ComparisonRecordVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WechatCallbackServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\ComparisonRecordServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\ComparisonTaskController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\TaskQo.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\LoginEquipmentServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\AddFriendMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\entity\CustomerVisibleRange.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\ResponseConstant.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerVisibleRangeService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CreateAddFriendTaskDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerRobotWxLabelService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\config\ArithmeticCaptchaAbstractRewrite.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\UpdateTaskDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\ActiveAddFriendRecordServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\CircleFriendTaskVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\entity\JobDynamicTask.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\impl\CustomerJoinRobotServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CustomerUserInfoDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\PushCodeDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\RobotCustomerController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\impl\ValidateCodeServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\LoginEquipmentService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatGroupMember.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\PayOrderVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\ResourceQo.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\controller\CustomerVisibleRangeController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\feign\CustomerVisibleFeign.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\RobotCustomerVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatLabelDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\mapper\JobDynamicTaskMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\listener\AddFileFriendDataListener.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\UploadTemplateHeadConstant.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\AddFriendTask.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\CaptchaConstant.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerUserService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\impl\CustomerRobotWxLabelServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\RobotGroupVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\OtherInformationDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\CircleFriendTaskService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\PrefixKeyConstant.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\CircleFriendTask.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WeChatGroupService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\UrlConstant.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\AddFriendPassGreetMessage.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\properties\PayConfig.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\entity\CustomerRobotWxLabel.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\AddFriendQo.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AddFriendTaskServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WeChatGroupMemberService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\CustomerUserInfoVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\CreateCodeDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\ActiveAddFriendService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\PayOrderQo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\config\CaptchaConfig.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\AddFriendTaskService.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\ComparisonRecordMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\entity\CustomerJoinRobot.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatInformationDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ActiveAddFriedRecord.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\LoginEquipmentMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AliPayServiceImpl.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\ComparisonRecordService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\CustomerUserQo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\WeChatController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\AddFriendService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatFriendDTO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\AddFriendPassGreetMessageServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\converter\CustomerUserConverter.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\DynamicController.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\StaticResourceConverter.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\config\KaptchaTextCreator.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\constant\GroupConstant.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\FileAddFriendVO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\RobotGroupController.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\StaticResourceServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\GroupVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\mapper\CustomerJoinRobotMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatStatisticsDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\AccountStatisticsVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\AliPayPcDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\RobotCustomer.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\WeChatService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\EquipmentDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\WeChatGroupMemberVo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatAccountMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatGroupMemberMapper.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\listener\ComparisonRecordDataListener.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\entity\CustomerUserInfo.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\handler\DynamicJob.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\AddFriend.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\controller\StaticResourceController.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\CircleFriendQO.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\AfterPassingDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\SaveAddFriendDTO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\StaticResourceDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\WeChatEquipmentMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\AddFriendTaskVO.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\StaticResourceService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\WeChatAccountVO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WechatMemberDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\schedule\service\ElasticJobService.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\event\system\RootApplication.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\qo\AccountQo.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\captcha\CaptchaController.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\ClueEntity.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\converter\ComparisonConverter.java +F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\CircleFriendTaskMapper.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WeChatGroupMemberServiceImpl.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\WeChatAddFriendVo.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\GroupMemberDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\mapper\StaticResourceMapper.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\dto\WeChatLoginInfoDTO.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\entity\WeChatGroup.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\vo\AddFriendVo.java -F:\idea\marketing-scrm\admin\src\main\java\com\baiye\properties\ConfigurationBeanFactoryMetadata.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\customer\service\CustomerJoinRobotService.java F:\idea\marketing-scrm\admin\src\main\java\com\baiye\modules\scrm\service\impl\WeChatServiceImpl.java diff --git a/marketing-scrm-admin/admin-core/target/maven-archiver/pom.properties b/marketing-scrm-admin/admin-core/target/maven-archiver/pom.properties index 2fe11ab..64be899 100644 --- a/marketing-scrm-admin/admin-core/target/maven-archiver/pom.properties +++ b/marketing-scrm-admin/admin-core/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Fri Jul 26 16:31:31 CST 2024 +#Tue Aug 20 18:13:04 CST 2024 version=1.0.0 groupId=com.baiye artifactId=admin-core diff --git a/marketing-scrm-admin/admin-websocket/target/maven-archiver/pom.properties b/marketing-scrm-admin/admin-websocket/target/maven-archiver/pom.properties index 63b402f..2895229 100644 --- a/marketing-scrm-admin/admin-websocket/target/maven-archiver/pom.properties +++ b/marketing-scrm-admin/admin-websocket/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Fri Jul 26 16:31:33 CST 2024 +#Tue Aug 20 18:13:06 CST 2024 version=1.0.0 groupId=com.baiye artifactId=admin-websocket diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java index 816c0a3..d76a3fc 100644 --- a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java +++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java @@ -29,8 +29,6 @@ public interface WeChatAccountRequest { - - /** * 全局设置 */ @@ -80,6 +78,13 @@ public interface WeChatAccountRequest { String DELETE_WE_CHAT_LABEL = "/wechat/v1/delLabelList"; + /** + * 微信好友信息 + */ + String WE_CHAT_FRIEND_INFO = "/wechat/v1/friendinfo"; + + + diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java index f992ae0..2619a17 100644 --- a/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java +++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java @@ -1,6 +1,5 @@ package com.baiye.util; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.StrPool; @@ -9,7 +8,11 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.pojo.CronModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; @@ -29,6 +32,8 @@ import java.util.Date; public class CronUtil { + private static final Logger log = LoggerFactory.getLogger(CronUtil.class); + /** * 构建Cron表达式 * 目前支持三种常用的cron表达式 @@ -39,7 +44,6 @@ public class CronUtil { public static String createCronExpression(CronModel cronModel) { - StringBuilder cronExp = new StringBuilder(); if (null == cronModel.getJobType()) { @@ -223,22 +227,64 @@ public class CronUtil { } + /** + * 日期转化为cron表达式 + * + * @param date + * @return + */ + public static String getCron(Date date) { + String dateFormat = "ss mm HH dd MM ? yyyy"; + return fmtDateToStr(date, dateFormat); + } - - public static void main(String[] args) { - for (int i = 0; i < 100; i++) { - DateTime parse = DateUtil.parse("2024-6-4 18:32:49"); - + /** + * cron表达式转为日期 + * + * @param cron + * @return + */ + public static Date getCronToDate(String cron) { + String dateFormat = "ss mm HH dd MM ? yyyy"; + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + Date date; + try { + date = sdf.parse(cron); + } catch (ParseException e) { + return null; } + return date; + } + /** + * Description:格式化日期,String字符串转化为Date + * + * @param date + * @param dtFormat 例如:yyyy-MM-dd HH:mm:ss yyyyMMdd + * @return + */ + public static String fmtDateToStr(Date date, String dtFormat) { + if (date == null) { + return CharSequenceUtil.EMPTY; + } + try { + SimpleDateFormat dateFormat = new SimpleDateFormat(dtFormat); + return dateFormat.format(date); + } catch (Exception e) { + log.error("error", e); + return CharSequenceUtil.EMPTY; + } } + + public static String generateCronByTime(Date startDate, Date endDate, Integer startIntervalTime, Integer endIntervalTime, Date lastExecutionTime) { Integer startHour = DateUtil.hour(startDate, Boolean.TRUE); int endHour = DateUtil.hour(endDate, Boolean.TRUE); String hourStr = startHour + StrPool.DASHED + (endHour == DefaultNumberConstants.ZERO_NUMBER ? DefaultNumberConstants.TWENTY_THREE : endHour); int randomInt = RandomUtil.randomInt(startIntervalTime, endIntervalTime); + randomInt = randomInt > DefaultNumberConstants.SIXTY ? randomInt % DefaultNumberConstants.SIXTY : randomInt; if (ObjectUtil.isNotNull(lastExecutionTime)) { int minute = DateUtil.minute(lastExecutionTime); int num = randomInt + minute; diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/util/RedisUtils.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/util/RedisUtils.java index d68d631..f1ec4a3 100644 --- a/marketing-scrm-common/common-core/src/main/java/com/baiye/util/RedisUtils.java +++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/util/RedisUtils.java @@ -207,6 +207,18 @@ public class RedisUtils { return resultList; } + /** + * 批量获取 + * + * @param keys + * @return + */ + public Boolean acquireKey(String key) { + redisTemplate.opsForValue().setIfAbsent(key, "locked", 300, TimeUnit.SECONDS); + + return Boolean.TRUE; + } + /** * 普通缓存放入 * diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/validation/ValidationUtil.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/validation/ValidationUtil.java new file mode 100644 index 0000000..3fc7722 --- /dev/null +++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/validation/ValidationUtil.java @@ -0,0 +1,52 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.baiye.validation; + +import cn.hutool.core.util.ObjectUtil; +import com.baiye.exception.BadRequestException; +import org.hibernate.validator.internal.constraintvalidators.hv.EmailValidator; + +import java.util.regex.Pattern; + +/** + * 验证工具 + * @author Zheng Jie + * @date 2018-11-23 + */ +public class ValidationUtil { + + /** + * 验证空 + */ + public static void isNull(Object obj, String entity, String parameter , Object value){ + if(ObjectUtil.isNull(obj)){ + String msg = entity + " 不存在: "+ parameter +" is "+ value; + throw new BadRequestException(msg); + } + } + + + public static boolean isNumber(String str) { + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + return pattern.matcher(str).matches(); + } + /** + * 验证是否为邮箱 + */ + public static boolean isEmail(String email) { + return new EmailValidator().isValid(email, null); + } +} diff --git a/marketing-scrm-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java b/marketing-scrm-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java index 139bc1b..6286b6d 100644 --- a/marketing-scrm-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java +++ b/marketing-scrm-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java @@ -82,10 +82,12 @@ public class SysUserController { @PreAuthorize("@per.hasPermission('system:user:read')") @Operation(summary = "分页查询系统用户(tree树结构)") public R> getUserPage(@Validated PageParam pageParam, SysUserQO qo) { + qo.setWhichUserId((long) DefaultNumberConstants.ONE_NUMBER); if (SecurityUtils.getCurrentUserId() != 1) { - throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR, "非超级管理员不能查询"); + // throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR, "非超级管理员不能查询"); + qo.setWhichUserId(SecurityUtils.getCurrentUserId()); } - qo.setWhichUserId((long) DefaultNumberConstants.ONE_NUMBER); + return R.ok(sysUserService.queryPage(pageParam, qo)); }