diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionNumberRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionNumberRepository.java index b38d1931..0e7c2a3a 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionNumberRepository.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionNumberRepository.java @@ -7,6 +7,8 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @author wujingtao * @date 2022/02/14 @@ -21,7 +23,7 @@ public interface ExtensionNumberRepository extends JpaRepository number); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionUserRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionUserRepository.java index 564c90e4..1f3cc548 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionUserRepository.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/ExtensionUserRepository.java @@ -6,6 +6,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @author wujingtao * @date 2022/02/14 @@ -17,4 +19,6 @@ public interface ExtensionUserRepository extends JpaRepository findByAndOrganizeId(Long organizationId); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/ExtensionNumberService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/ExtensionNumberService.java index bb6e60c3..61816dbf 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/ExtensionNumberService.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/ExtensionNumberService.java @@ -9,9 +9,21 @@ import com.baiye.modules.telemarkting.entity.ExtensionNumber; * @date 2022/02/14 */ public interface ExtensionNumberService { - void addNumbers(Integer minNumber, Integer maxNumber, Long display,Long companyId); + void addNumbers(Integer minNumber, Integer maxNumber, Long display, Long companyId); ExtensionNumber getExtension(Long memberId); + /** + * 分配分机号 + * @param organizeId + * @param memberId + * @return + */ CommonResponse assignExtensionNum(Long organizeId, Long memberId); + + /** + * 解绑分机号 + * @param organizeId + */ + void unbindExtension(Long organizeId); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/ExtensionNumberServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/ExtensionNumberServiceImpl.java index 1f7238a1..925f8668 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/ExtensionNumberServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/ExtensionNumberServiceImpl.java @@ -1,10 +1,9 @@ package com.baiye.modules.telemarkting.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.exception.BadRequestException; import com.baiye.http.CommonResponse; -import com.baiye.modules.system.domain.Organize; -import com.baiye.modules.system.repository.OrganizeRepository; import com.baiye.modules.telemarkting.dao.ExtensionNumberRepository; import com.baiye.modules.telemarkting.dao.ExtensionUserRepository; import com.baiye.modules.telemarkting.entity.ExtensionNumber; @@ -18,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author wujingtao @@ -28,9 +28,6 @@ import java.util.List; public class ExtensionNumberServiceImpl implements ExtensionNumberService { @Resource private ExtensionNumberRepository extensionNumberRepository; - - @Resource - private OrganizeRepository organizeRepository; @Resource private ExtensionUserRepository extensionUserRepository; @@ -50,29 +47,41 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService { @Transactional(rollbackFor = Exception.class) public CommonResponse assignExtensionNum(Long organizeId, Long memberId) { //查询组 - Integer numberByMemberId = extensionUserRepository.findNumberByMemberId(memberId); - if (numberByMemberId != null) { - log.info("用户 :{},已经分配分机号", memberId); - throw new BadRequestException("用户已经分配分机号,用户id:" + memberId); - } - //所属公司 - Long companyId = SecurityUtils.getCompanyId(); - //查一个分机号 - Integer idByStatus = extensionNumberRepository.findIdByStatusAndCompanyId(DefaultNumberConstants.ZERO_NUMBER, companyId); - ExtensionUser extensionUser = new ExtensionUser(); - extensionUser.setMemberId(memberId); - extensionUser.setNumber(idByStatus); - extensionUser.setOrganizeId(organizeId); - try { - extensionUserRepository.save(extensionUser); - extensionNumberRepository.updateStatusById(DefaultNumberConstants.ONE_NUMBER, idByStatus); - } catch (Exception e) { - log.error("分机号分配失败 memberId:{}", memberId); - throw new BadRequestException("分机号分配失败,用户id为:" + memberId); - } + Integer numberByMemberId = extensionUserRepository.findNumberByMemberId(memberId); + if (numberByMemberId != null) { + log.info("用户 :{},已经分配分机号", memberId); + throw new BadRequestException("用户已经分配分机号,用户id:" + memberId); + } + //所属公司 + Long companyId = SecurityUtils.getCompanyId(); + //查一个分机号 + Integer idByStatus = extensionNumberRepository.findIdByStatusAndCompanyId(DefaultNumberConstants.ZERO_NUMBER, companyId); + ExtensionUser extensionUser = new ExtensionUser(); + extensionUser.setMemberId(memberId); + extensionUser.setNumber(idByStatus); + extensionUser.setOrganizeId(organizeId); + try { + extensionUserRepository.save(extensionUser); + extensionNumberRepository.updateStatusById(DefaultNumberConstants.ONE_NUMBER, idByStatus); + } catch (Exception e) { + log.error("分机号分配失败 memberId:{}", memberId); + throw new BadRequestException("分机号分配失败,用户id为:" + memberId); + } return CommonResponse.createBySuccess(); } + @Override + @Transactional(rollbackFor = Exception.class) + public void unbindExtension(Long organizeId) { + List byAndOrganizeId = extensionUserRepository.findByAndOrganizeId(organizeId); + if (CollUtil.isNotEmpty(byAndOrganizeId)) { + List numbers = byAndOrganizeId.stream().map(ExtensionUser::getNumber).collect(Collectors.toList()); + extensionNumberRepository.updateByNumber(DefaultNumberConstants.ZERO_NUMBER, numbers); + extensionUserRepository.deleteByOrganizeId(organizeId); + } + } + + private List getNumbers(Integer minNumber, Integer maxNumber, Long display, Long companyId) { List list = new ArrayList<>(); for (int i = minNumber; i <= maxNumber; i++) {