|
|
|
@ -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<Object> 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<ExtensionUser> byAndOrganizeId = extensionUserRepository.findByAndOrganizeId(organizeId);
|
|
|
|
|
if (CollUtil.isNotEmpty(byAndOrganizeId)) {
|
|
|
|
|
List<Integer> numbers = byAndOrganizeId.stream().map(ExtensionUser::getNumber).collect(Collectors.toList());
|
|
|
|
|
extensionNumberRepository.updateByNumber(DefaultNumberConstants.ZERO_NUMBER, numbers);
|
|
|
|
|
extensionUserRepository.deleteByOrganizeId(organizeId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<ExtensionNumber> getNumbers(Integer minNumber, Integer maxNumber, Long display, Long companyId) {
|
|
|
|
|
List<ExtensionNumber> list = new ArrayList<>();
|
|
|
|
|
for (int i = minNumber; i <= maxNumber; i++) {
|
|
|
|
|