Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
pserimal
2023-06-20 14:55:41 +08:00
31 changed files with 279 additions and 119 deletions

View File

@@ -35,4 +35,11 @@ public interface EnterpriseUserService {
List<EnterpriseUserSingleInfoVO> getDevelopmentDirectorList(String wantShopArea);
/**
* 根据意向区域获取开发主管
* @param zoneId
* @return
*/
EnterpriseUserDO getDevelopmentByZoneId(Long zoneId);
}

View File

@@ -130,6 +130,14 @@ public interface HyPartnerLineInfoService {
*/
Boolean assignFollowUser(Long lineId);
/**
* 线索状态
* @param wantShopAreaId
* @param acceptAdjustType
* @return
*/
Boolean getLineStatus(Long wantShopAreaId,Integer acceptAdjustType);

View File

@@ -54,7 +54,7 @@ public interface InterviewService {
* @param request
* @return
*/
CreateAppointmentVO createAppointment(CreateAppointmentReq request);
CreateAppointmentVO createAppointment(CreateAppointmentReq request) throws ApiException;
/**
* 同意面试预约

View File

@@ -13,6 +13,7 @@ import com.cool.store.service.ZoneService;
import com.cool.store.vo.EnterpriseUserSingleInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@@ -82,15 +83,7 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
if (CommonConstants.TRANSFER.equals(type)){
enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(regionList), keyword, Boolean.TRUE);
}
List<EnterpriseUserSingleInfoVO> enterpriseUserSingleInfoVOS = new ArrayList<>();
enterpriseUserDOS.forEach(x->{
EnterpriseUserSingleInfoVO enterpriseUserSingleInfoVO = new EnterpriseUserSingleInfoVO();
enterpriseUserSingleInfoVO.setUserId(x.getUserId());
enterpriseUserSingleInfoVO.setUserName(x.getName());
enterpriseUserSingleInfoVO.setMobile(x.getMobile());
enterpriseUserSingleInfoVOS.add(enterpriseUserSingleInfoVO);
});
return enterpriseUserSingleInfoVOS;
return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS);
}
@Override
@@ -125,7 +118,7 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
result.setInvestmentUserIds(userList);
}
//开发区域
List<String> developmentList = zoneInfoList.stream().filter(o -> "developement".equals(o.getType())).flatMap(o->JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList());
List<String> developmentList = zoneInfoList.stream().filter(o -> "dev".equals(o.getType())).flatMap(o->JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(developmentList)){
//获取负责的区域
developmentList.retainAll(subRegionIds);
@@ -138,6 +131,23 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
@Override
public List<EnterpriseUserSingleInfoVO> getDevelopmentDirectorList(String wantShopArea) {
return null;
List<HyIntendDevZoneInfoDO> devList = hyIntendDevZoneInfoDAO.getHyIntendDevZoneInfoList("dev");
List<String> regionIds = ListUtils.emptyIfNull(devList).stream().flatMap(o -> JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList());
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserListByDeptLeaders(regionIds);
return EnterpriseUserSingleInfoVO.convertVO(userList);
}
@Override
public EnterpriseUserDO getDevelopmentByZoneId(Long zoneId) {
HyIntendDevZoneInfoDO zoneInfo = hyIntendDevZoneInfoDAO.selectById(zoneId);
if(Objects.isNull(zoneInfo)){
throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST);
}
List<String> regionIds = JSONObject.parseArray(zoneInfo.getAssociatedRegionId(), String.class);
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserListByDeptLeaders(regionIds);
if(CollectionUtils.isEmpty(userList)){
return null;
}
return userList.stream().findAny().get();
}
}

View File

@@ -4,11 +4,13 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.cool.store.dto.calendar.UserFreeBusyInfoDTO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.request.GetFreeBusyListReq;
import com.cool.store.service.FeiShuService;
import com.cool.store.vo.interview.CalendarInfo;
@@ -36,6 +38,9 @@ public class FeiShuServiceImpl implements FeiShuService {
@Autowired
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
@Autowired
private HyPartnerLineInfoMapper hyPartnerLineInfoMapper;
@Override
public GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request) throws ApiException {
GetFreeBusyListVO freeBusyListVO = new GetFreeBusyListVO();
@@ -43,21 +48,24 @@ public class FeiShuServiceImpl implements FeiShuService {
String endDate = request.getEndDate();//结束日期
String partnerId = request.getPartnerId();//加盟商用户ID
String interviewerId = request.getInterviewerId();//面试官ID
String lineId = request.getLineId();//线索id
//如果加盟商用户ID为空且面试官ID为空返回错误信息
if (StringUtils.isEmpty(partnerId) && StringUtils.isEmpty(interviewerId)) {
if (!(StringUtils.isNotEmpty(partnerId) && StringUtils.isNotEmpty(lineId)) && StringUtils.isEmpty(interviewerId)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_AND_PARTNER_ID_IS_NULL);
}
//如果加盟商用户ID不为空且面试官ID为空
if (StringUtils.isNotEmpty(partnerId) && StringUtils.isEmpty(interviewerId)) {
if (StringUtils.isNotEmpty(partnerId) && StringUtils.isNotEmpty(lineId)) {
//根据加盟商用户ID查询面试官ID
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerId(partnerId);
List<HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
//如果查询结果为空,返回错误信息
//如果查询结果为空,则去线索中获取招商经理,面试官只有两个阶段,一个是在第一次申请时不存在面试安排直接取招商经理,第二个时面试信息中可修改面试官信息,这个时候以面试信息中为准
if (CollectionUtils.isEmpty(hyPartnerInterviewPlanDOS)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_IS_NULL);
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(Long.valueOf(lineId));
interviewerId = hyPartnerLineInfoDO.getInvestmentManager();
}else {
interviewerId = hyPartnerInterviewPlanDOS.get(0).getInterviewer();
}
interviewerId = hyPartnerInterviewPlanDOS.get(0).getInterviewer();
}
long startTime = 0L;
long endTime = 0L;

View File

@@ -247,20 +247,20 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public PageInfo<PublicSeaLineListVo> publicSeaLineList(String userId, LineRequest lineRequest) {
//确认是招商经理还是部门负责人
EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId);
List<String> userIds = new ArrayList<>();
if (userInfo.getIsLeader()){
if (StringUtil.isNotEmpty(userInfo.getLeaderDeptIds())){
List<String> regionIds = JSONObject.parseArray(userInfo.getLeaderDeptIds(), String.class);
List<EnterpriseUserDO> enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(regionIds, null, true);
userIds =enterpriseUserDOS.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
}
}else {
userIds = Arrays.asList(userId);
}
// EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId);
// List<String> userIds = new ArrayList<>();
// if (userInfo.getIsLeader()){
// if (StringUtil.isNotEmpty(userInfo.getLeaderDeptIds())){
// List<String> regionIds = JSONObject.parseArray(userInfo.getLeaderDeptIds(), String.class);
// List<EnterpriseUserDO> enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(regionIds, null, true);
// userIds =enterpriseUserDOS.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
// }
// }else {
// userIds = Arrays.asList(userId);
// }
PageHelper.startPage(lineRequest.getPageNum(),lineRequest.getPageSize());
PageInfo publicSeaLineList = new PageInfo(hyPartnerLineInfoDAO.getPublicSeaLineList(lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(),
lineRequest.getIntentArea(), lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), userIds));
lineRequest.getIntentArea(), lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null));
List<PublicSeaLineDTO> list = publicSeaLineList.getList();
if (CollectionUtils.isEmpty(list)){
@@ -395,21 +395,34 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
return Boolean.FALSE;
}
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()));
Boolean lineStatus = getLineStatus(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()), hyPartnerUserInfoDO.getAcceptAdjustType());
return lineStatus;
}
/**
* 线索状态
* @param wantShopAreaId
* @param acceptAdjustType
* @return
*/
@Override
public Boolean getLineStatus(Long wantShopAreaId,Integer acceptAdjustType){
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(wantShopAreaId);
if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){
return Boolean.TRUE;
}
if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){
if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(acceptAdjustType)){
return Boolean.FALSE;
}
//全国调剂 默认分配呗 有啥好说的
if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
return Boolean.TRUE;
}
//省内调剂 有重点或者开放的 分配
if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
Integer apply = hyOpenAreaInfoDAO.getChildrenCount("apply", hyOpenAreaInfoDO.getId());
if (apply>CommonConstants.ZERO){
return Boolean.TRUE;
@@ -417,7 +430,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
return Boolean.FALSE;
}
//市内调剂 不分配
if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
return Boolean.FALSE;
}
}

View File

@@ -28,11 +28,11 @@ import com.cool.store.vo.EnterpriseUserBaseInfoVO;
import com.cool.store.vo.interview.CreateAppointmentVO;
import com.cool.store.vo.interview.InterviewVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Arrays;
@@ -207,7 +207,14 @@ public class InterviewServiceImpl implements InterviewService {
}
@Override
public CreateAppointmentVO createAppointment(CreateAppointmentReq request) {
@Transactional
public CreateAppointmentVO createAppointment(CreateAppointmentReq request) throws ApiException {
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId());
List<HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
if(CollectionUtils.isNotEmpty(hyPartnerInterviewPlanDOS)){
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_ALREADY_EXIST);
}
CreateAppointmentVO vo = new CreateAppointmentVO();
//1.创建面试计划
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
@@ -226,14 +233,21 @@ public class InterviewServiceImpl implements InterviewService {
record.setRoomId(StringUtil.generateRoomId(startBookingTime));
record.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode());
record.setDeleted(false);
long interviewPlanId = hyPartnerInterviewPlanMapper.insertSelective(record);
record.setApplicationApproved(0);
hyPartnerInterviewPlanMapper.insertSelective(record);
List<HyPartnerInterviewPlanDO> interviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
if(CollectionUtils.isEmpty(interviewPlanDOS)){
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
}
Long interviewPlanId = interviewPlanDOS.get(0).getId();
vo.setInterviewPlanId(String.valueOf(interviewPlanId));
//2.创建面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(interviewPlanId);
hyPartnerInterviewDO.setPartnerId(request.getPartnerId());
hyPartnerInterviewDO.setPartnerLineId(request.getPartnerLineId());
hyPartnerInterviewDO.setPartnerId(request.getPartnerId());
hyPartnerInterviewDO.setInterviewer(request.getInterviewerId());
hyPartnerInterviewDO.setCreateTime(new Date());
hyPartnerInterviewDO.setUpdateTime(new Date());
@@ -245,6 +259,7 @@ public class InterviewServiceImpl implements InterviewService {
@Override
public void approveAppointment(ApproveAppointmentReq request) throws ApiException {
//查询面试计划信息
InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试计划不存在,抛出异常

View File

@@ -86,7 +86,7 @@ public class ZoneServiceImpl implements ZoneService {
hyIntendDevZoneInfoDO.setId(intentAreaSettingRequest.getId());
hyIntendDevZoneInfoDO.setZoneName(intentAreaSettingRequest.getZoneName());
hyIntendDevZoneInfoDO.setUpdateUserId(userId);
hyIntendDevZoneInfoDO.setAssociatedRegionId(CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())?JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()):"");
hyIntendDevZoneInfoDO.setAssociatedRegionId(CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())?JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()):null);
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
//添加战区映射的意向区域
hyIntendDevMappingDAO.deleteByOpenAreaIds(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType());
@@ -202,7 +202,7 @@ public class ZoneServiceImpl implements ZoneService {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
//查询已经绑定战区的 意向区域
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByMappingIdList(intentAreaSettingRequest.getOpenAreaIdList());
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByOpenAreaMappingIdList(intentAreaSettingRequest.getOpenAreaIdList());
List<Long> openAreaIdList = list.stream().map(ZoneCheckDTO::getOpenAreaMappingId).collect(Collectors.toList());
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = openAreaInfoDAO.selectByIds(openAreaIdList);
Map<Long, String> areaNameMap = hyOpenAreaInfoDOList.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, HyOpenAreaInfoDO::getAreaName));