This commit is contained in:
苏竹红
2023-06-14 20:00:22 +08:00
parent ef6d92df1a
commit f0f54a929e
18 changed files with 109 additions and 329 deletions

View File

@@ -0,0 +1,49 @@
package com.cool.store.service;
import com.cool.store.vo.InterviewPlanVO;
import com.cool.store.vo.InterviewScheduleInfoVO;
import com.cool.store.vo.StageCountVO;
import java.util.Date;
/**
* @Author suzhuhong
* @Date 2023/6/8 14:45
* @Version 1.0
*/
public interface DeskService {
/**
* 是否有临期线索与面试
* @param userId
* @return
*/
InterviewPlanVO getInterviewPlan(String userId);
/**
* 面试日程
* @param userId
* @param selectedData
* @return
*/
InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData);
/**
* 招商经理 各阶段 待处理 待跟进数量
* @param userId
* @param type
* @return
*/
StageCountVO getStageCountByType(String userId,String type);
}

View File

@@ -0,0 +1,19 @@
package com.cool.store.service;
import com.cool.store.request.AddTagsRequest;
/**
* @Author suzhuhong
* @Date 2023/6/13 21:37
* @Version 1.0
*/
public interface HyPartnerBaseInfoService {
/**
* 添加标签
* @param addTagsRequest
* @return
*/
Boolean addTags(AddTagsRequest addTagsRequest);
}

View File

@@ -0,0 +1,39 @@
package com.cool.store.service;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.vo.PartnerIntentApplyInfoVO;
import com.github.pagehelper.PageInfo;
/**
* @Author suzhuhong
* @Date 2023/6/9 14:54
* @Version 1.0
*/
public interface HyPartnerIntentInfoService {
/**
* 招商经理 意向申请阶段 待处理 待跟进列表
* @param userId
* @param type
* @param pageSize
* @param pageNumber
* @return
*/
PageInfo<PartnerIntentApplyInfoVO> getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber);
/**
* 根据线索查询加盟商意向申请信息
* @param lineId
* @return
*/
PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId);
/**
* 员工端 修改加盟商意向信息
* @param baseUserInfoRequest
* @return
*/
Boolean updatePartnerIntentInfo(BaseUserInfoRequest baseUserInfoRequest);
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.service;
import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.PartnerInterviewInfoVO;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/8 19:32
* @Version 1.0
*/
public interface HyPartnerInterviewPlanService {
/**
* 招商经理今日面试列表
* @param userId
* @return
*/
List<InterviewDetailInfoVO> getInterviewPlanList(String userId);
/**
* getPartnerInterviewInfoList
* @param userId
* @param pageSize
* @param pageNumber
* @return
*/
PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId,Integer pageSize,Integer pageNumber);
/**
* getQualifiedInterviewList
* @param userId
* @param type
* @param pageSize
* @param pageNumber
* @return
*/
PageInfo<PartnerInterviewInfoVO> getQualifiedInterviewList(String userId,String type,Integer pageSize,Integer pageNumber);
}

View File

@@ -0,0 +1,103 @@
package com.cool.store.service;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest;
import com.cool.store.vo.BlackListVO;
import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO;
import com.cool.store.vo.PartnerLineInfoVO;
import com.cool.store.vo.StageCountVO;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/9 10:30
* @Version 1.0
*/
public interface HyPartnerLineInfoService {
/**
* 查询招商经理 待处理
* @param userId
* @return
*/
StageCountVO selectStagePendingCount(String userId);
/**
* 查询招商经理 待跟进
* @param userId
* @return
*/
StageCountVO selectStageFollowCount(String userId);
/**
* 查询加盟商线索详情之一 线索信息与基本信息
* @param lineId
* @return
*/
PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId);
/**
* 最近30天结束的线索
* @param userId
* @param pageSize
* @param pageNumber
* @return
*/
PageInfo<PartnerLineInfoVO> lastMonthCloseLine(String userId,Integer pageSize,Integer pageNumber);
/**
* 转让招商经理
* @param userId
* @param lineId
* @return
*/
Boolean transferInvestmentManager(String userId,Long lineId);
/**
* 分配招商经理
* @param userId
* @param lineIdList
* @return
*/
Boolean allocationInvestmentManager(String userId, List<Long> lineIdList);
/**
* 黑名单列表
* @param LineRequest LineRequest
* @return
*/
PageInfo<BlackListVO> getBlackList(LineRequest LineRequest);
/**
* 加入或者移除 黑名单
* @param lineId
* @param status
* @param joinReason
* @return
*/
Boolean joinBlackList( Long lineId, Integer status, String joinReason);
/**
* 移除黑名单
* @param lineId
* @param status
* @param removeReason
* @return
*/
Boolean removeBlackList( Long lineId, Integer status, String removeReason);
/**
* 结束或者通过线索
* @param userId
* @param closeFollowRequest
* @return
*/
Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest);
}

View File

@@ -0,0 +1,56 @@
package com.cool.store.service;
import com.cool.store.request.OpenAreaRequest;
import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO;
import com.cool.store.vo.OpenProvinceVO;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/13 22:11
* @Version 1.0
*/
public interface OpenAreaService {
/**
* 根据关键字搜索
* @param keyword
* @return
*/
List<OpenAreaTreeVO> queryByKeyword(String keyword,Boolean flag);
/**
* 查询字列表
* @param type
* @param parentId
* @return
*/
List<OpenAreaVO> getChildrenList(String type, Long parentId);
/**
*
* @param userId
* @param openAreaRequest
* @return
*/
Boolean batchUpdate(String userId, OpenAreaRequest openAreaRequest);
PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber);
/**
* 查询可申请区域 可预约区域
* @return
*/
OpenProvinceVO getOpenProvince();
}

View File

@@ -0,0 +1,66 @@
package com.cool.store.service;
import com.cool.store.request.IntentAreaSettingRequest;
import com.cool.store.vo.ZoneCheckVO;
import com.cool.store.vo.ZoneVO;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/14 14:26
* @Version 1.0
*/
public interface ZoneService {
/**
* 新增战区
* @param userId
* @param intentAreaSettingRequest
* @return
*/
Boolean addZone(String userId,IntentAreaSettingRequest intentAreaSettingRequest);
/**
* 编辑战区
* @param userId
* @param intentAreaSettingRequest
* @return
*/
Boolean updateZone(String userId,IntentAreaSettingRequest intentAreaSettingRequest);
/**
* 战区列表
* @param type
* @param pageSize
* @param pageNum
* @return
*/
PageInfo<ZoneVO> getZoneList(String type, Integer pageSize ,Integer pageNum);
/**
* 战区详情
* @param zoneId
* @return
*/
ZoneVO zoneDetail(Long zoneId);
/**
* 删除战区
* @param id
* @return
*/
Boolean deletedZone(Long id);
/**
* 校验是否绑定其他战区
* @param intentAreaSettingRequest
* @return
*/
List<ZoneCheckVO> checkZone(IntentAreaSettingRequest intentAreaSettingRequest);
}

View File

@@ -0,0 +1,90 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.service.DeskService;
import com.cool.store.service.HyPartnerInterviewPlanService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.InterviewPlanVO;
import com.cool.store.vo.InterviewScheduleInfoVO;
import com.cool.store.vo.StageCountVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/8 14:45
* @Version 1.0
*/
@Service
public class DeskServiceImpl implements DeskService {
@Resource
HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO;
@Resource
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Resource
HyPartnerInterviewPlanService hyPartnerInterviewPlanService;
@Resource
HyPartnerLineInfoService hyPartnerLineInfoService;
@Override
public InterviewPlanVO getInterviewPlan(String userId) {
InterviewPlanVO interviewPlanVO = new InterviewPlanVO();
String currentDate = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY);
Integer currentDateInterviewCount = hyPartnerInterviewPlanDAO.getCurrentDateInterviewCount(userId, currentDate);
interviewPlanVO.setHasInterview(currentDateInterviewCount>0);
//临期数量
Integer adventLineCount = hyPartnerLineInfoDAO.getAdventLineCount(userId, currentDate);
interviewPlanVO.setHasAdventLine(adventLineCount>0);
return interviewPlanVO;
}
@Override
public InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData) {
if (StringUtils.isEmpty(userId)||selectedData==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
InterviewScheduleInfoVO interviewScheduleInfoVO = new InterviewScheduleInfoVO();
//查询面试数量
String currentDate = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_DAY);
String startTime = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_SEC);
String endTime = DateUtil.format(CoolDateUtils.getDateBefore(selectedData, 7), CoolDateUtils.DATE_FORMAT_SEC);
SpecialDateRangeInterviewCountDTO interviewCount = hyPartnerInterviewPlanDAO.getInterviewCount(userId, currentDate, startTime, endTime);
interviewScheduleInfoVO.setCurrentDayInterviewCount(interviewCount.getCurrentDayInterviewCount());
interviewScheduleInfoVO.setLastSevenDayInterviewCount(interviewCount.getLastSevenDayInterviewCount());
//查询面试列表
//当天时间 与入参无关
List<InterviewDetailInfoVO> interviewPlanList = hyPartnerInterviewPlanService.getInterviewPlanList(userId);
interviewScheduleInfoVO.setInterviewDetailInfoVOS(interviewPlanList);
return interviewScheduleInfoVO;
}
@Override
public StageCountVO getStageCountByType(String userId, String type) {
if (CommonConstants.PENDING.equals(type)){
return hyPartnerLineInfoService.selectStagePendingCount(userId);
}
if (CommonConstants.FOLLOW.equals(type)){
return hyPartnerLineInfoService.selectStageFollowCount(userId);
}
return null;
}
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.HyPartnerBaseInfoDAO;
import com.cool.store.entity.HyPartnerBaseInfoDO;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.service.HyPartnerBaseInfoService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author suzhuhong
* @Date 2023/6/13 21:37
* @Version 1.0
*/
@Service
public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
@Resource
HyPartnerBaseInfoDAO hyPartnerBaseInfoDAO;
@Override
public Boolean addTags(AddTagsRequest addTagsRequest) {
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = new HyPartnerBaseInfoDO();
hyPartnerBaseInfoDO.setId(addTagsRequest.getPartnerBaseInfoId());
hyPartnerBaseInfoDO.setUserPortrait(CollectionUtils.isNotEmpty(addTagsRequest.getTags())? JSONObject.toJSONString(addTagsRequest.getTags()):"");
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(hyPartnerBaseInfoDO);
return Boolean.TRUE;
}
}

View File

@@ -0,0 +1,124 @@
package com.cool.store.service.impl;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerBaseInfoDAO;
import com.cool.store.dao.HyPartnerIntentInfoDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.service.HyPartnerIntentInfoService;
import com.cool.store.vo.PartnerIntentApplyInfoVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/6/9 15:00
* @Version 1.0
*/
@Service
public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoService {
@Resource
HyPartnerIntentInfoDAO hyPartnerIntentInfoDAO;
@Resource
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Resource
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Resource
HyPartnerBaseInfoDAO hyPartnerBaseInfoDAO;
@Override
public PageInfo<PartnerIntentApplyInfoVO> getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber) {
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO();
String workflowStatus = "";
if (CommonConstants.PENDING.equals(type)) {
workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode();
}
if (CommonConstants.FOLLOW.equals(type)) {
workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode();
}
PageHelper.startPage(pageNumber,pageSize);
PageInfo partnerIntentApplyInfo = hyPartnerIntentInfoDAO.selectPartnerIntentApplyInfoList(userId, WorkflowStageEnum.INTENT.getCode(), workflowStatus);
if (partnerIntentApplyInfo==null){
return new PageInfo<>();
}
List<PartnerIntentApplyInfoDTO> list = partnerIntentApplyInfo.getList();
List<String> partnerIds = list.stream().map(PartnerIntentApplyInfoDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
Map<String, HyPartnerUserInfoDO> infoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
List<PartnerIntentApplyInfoVO> result = new ArrayList<>();
list.stream().forEach(x->{
PartnerIntentApplyInfoVO pat = partnerIntentApplyInfoDTOToVo(x);
HyPartnerUserInfoDO infoDOMapOrDefault = infoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO());
pat.setPartnerUserName(infoDOMapOrDefault.getUsername());
pat.setPartnerUserPhone(infoDOMapOrDefault.getMobile());
result.add(pat);
});
partnerIntentApplyInfo.setList(result);
return partnerIntentApplyInfo;
}
@Override
public PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId) {
PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO= hyPartnerIntentInfoDAO.selectByLineId(lineId);
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = partnerIntentApplyInfoDTOToVo(partnerIntentApplyInfoDTO);
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
partnerIntentApplyInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
partnerIntentApplyInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
//todo su 手机号归属地 意向申请区域名称
return partnerIntentApplyInfoVO;
}
@Override
public Boolean updatePartnerIntentInfo(BaseUserInfoRequest baseUserInfoRequest) {
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(String.valueOf(baseUserInfoRequest.getPartnerId()));
if (hyPartnerUserInfoDO==null){
throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST);
}
hyPartnerUserInfoDO.setUsername(baseUserInfoRequest.getUsername());
hyPartnerUserInfoDO.setMobile(baseUserInfoRequest.getMobile());
hyPartnerUserInfoDO.setLiveArea(baseUserInfoRequest.getLiveArea());
hyPartnerUserInfoDO.setWantShopArea(baseUserInfoRequest.getWantShopArea());
hyPartnerUserInfoDO.setAcceptAdjustType(baseUserInfoRequest.getAcceptAdjustType());
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
//修改意向申请信息中的加盟商名称与手机号
hyPartnerBaseInfoDAO.updateByPartnerId(baseUserInfoRequest.getUsername(),baseUserInfoRequest.getMobile(),baseUserInfoRequest.getPartnerId());
return Boolean.TRUE;
}
/**
* partnerIntentApplyInfoDTOToVo
* @param partnerIntentApplyInfoDTO
* @return
*/
private PartnerIntentApplyInfoVO partnerIntentApplyInfoDTOToVo(PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO){
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO();
partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId());
partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
partnerIntentApplyInfoVO.setPartnerLineId(partnerIntentApplyInfoDTO.getPartnerLineId());
partnerIntentApplyInfoVO.setPartnerSubmitTime(partnerIntentApplyInfoDTO.getPartnerSubmitTime());
partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType());
partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea());
partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea());
partnerIntentApplyInfoVO.setDeadline(partnerIntentApplyInfoDTO.getDeadline());
return partnerIntentApplyInfoVO;
}
}

View File

@@ -0,0 +1,144 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.service.HyPartnerInterviewPlanService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.PartnerInterviewInfoVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/6/8 19:32
* @Version 1.0
*/
@Service
public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlanService {
@Resource
HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO;
@Resource
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Override
public List<InterviewDetailInfoVO> getInterviewPlanList(String userId) {
String currentTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY);
List<HyPartnerInterviewPlanDO> interviewPlanList = hyPartnerInterviewPlanDAO.getInterviewPlanList(userId, currentTime);
if (CollectionUtils.isEmpty(interviewPlanList)){
return Lists.newArrayList();
}
List<String> partnerIdList = interviewPlanList.stream().map(HyPartnerInterviewPlanDO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList);
Map<String, HyPartnerUserInfoDO> hyPartnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
List<InterviewDetailInfoVO> result = new ArrayList<>();
interviewPlanList.stream().forEach(x->{
InterviewDetailInfoVO interviewDetailInfoVO = convertDoToInterviewDetailInfoVO(x);
HyPartnerUserInfoDO userInfoDO = hyPartnerUserInfoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO());
interviewDetailInfoVO.setUserId(userInfoDO.getPartnerId());
interviewDetailInfoVO.setUserName(userInfoDO.getUsername());
interviewDetailInfoVO.setUserPhone(userInfoDO.getMobile());
result.add(interviewDetailInfoVO);
});
return result;
}
@Override
public PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId ,Integer pageSize,Integer pageNumber) {
PageHelper.startPage(pageNumber,pageSize);
//查询预约面试列表
PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode());
List<PartnerInterviewInfoDTO> list = partnerInterviewInfoList.getList();
if (CollectionUtils.isEmpty(list)){
return partnerInterviewInfoList;
}
List<PartnerInterviewInfoVO> result = new ArrayList<>();
list.stream().forEach(x->{
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
result.add(partnerInterviewInfoVO);
});
partnerInterviewInfoList.setList(result);
return partnerInterviewInfoList;
}
@Override
public PageInfo<PartnerInterviewInfoVO> getQualifiedInterviewList(String userId, String type, Integer pageSize, Integer pageNumber) {
String workflowStatus = "";
if (CommonConstants.PENDING.equals(type)) {
workflowStatus = WorkflowStatusEnum.INTERVIEW_3.getCode();
}
if (CommonConstants.FOLLOW.equals(type)) {
workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode();
}
PageHelper.startPage(pageNumber,pageSize);
//查询预约面试列表
PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.INTERVIEW.getCode(),workflowStatus);
List<PartnerInterviewInfoDTO> list = partnerInterviewInfoList.getList();
if (CollectionUtils.isEmpty(list)){
return partnerInterviewInfoList;
}
List<PartnerInterviewInfoVO> result = new ArrayList<>();
list.stream().forEach(x->{
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
result.add(partnerInterviewInfoVO);
});
partnerInterviewInfoList.setList(result);
return partnerInterviewInfoList;
}
/**
* convertDoToInterviewDetailInfoVO
* @param hyPartnerInterviewPlanDO
* @return
*/
private InterviewDetailInfoVO convertDoToInterviewDetailInfoVO(HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO){
InterviewDetailInfoVO interviewDetailInfoVO = new InterviewDetailInfoVO();
if (hyPartnerInterviewPlanDO==null){
return interviewDetailInfoVO;
}
interviewDetailInfoVO.setLineId(hyPartnerInterviewPlanDO.getPartnerLineId());
interviewDetailInfoVO.setStartTime(hyPartnerInterviewPlanDO.getStartTime());
return interviewDetailInfoVO;
}
/**
* PartnerInterviewInfoDTOToVo
* @param partnerInterviewInfoDTO
* @return
*/
private PartnerInterviewInfoVO convertPartnerInterviewInfoDTOToVo(PartnerInterviewInfoDTO partnerInterviewInfoDTO){
PartnerInterviewInfoVO partnerInterviewInfoVO = new PartnerInterviewInfoVO();
partnerInterviewInfoVO.setInterviewId(partnerInterviewInfoDTO.getInterviewId());
partnerInterviewInfoVO.setPartnerId(partnerInterviewInfoDTO.getPartnerId());
partnerInterviewInfoVO.setInterviewerId(partnerInterviewInfoDTO.getInterviewer());
partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo());
partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId());
partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus());
partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC));
return partnerInterviewInfoVO;
}
}

View File

@@ -0,0 +1,283 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerBlackListDTO;
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
import com.cool.store.dto.partner.StageCountDTO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.LineStatusEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.StringUtil;
import com.cool.store.vo.BlackListVO;
import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO;
import com.cool.store.vo.PartnerLineInfoVO;
import com.cool.store.vo.StageCountVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/6/9 10:30
* @Version 1.0
*/
@Service
public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Resource
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Resource
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Override
public StageCountVO selectStagePendingCount(String userId) {
StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStagePendingCount(userId);
return stageCountDTOToVo(stageCountDTO);
}
@Override
public StageCountVO selectStageFollowCount(String userId) {
StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStageFollowCount(userId);
return stageCountDTOToVo(stageCountDTO);
}
@Override
public PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId) {
PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO = hyPartnerLineInfoDAO.selectPartnerLineInfoAndBaseInfo(lineId);
if (partnerLineInfoAndBaseInfoDTO==null){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = convertPartnerLineInfoAndBaseInfoDTOToVo(partnerLineInfoAndBaseInfoDTO);
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerLineInfoAndBaseInfoVO.getPartnerUserId());
if (hyPartnerUserInfoDO!=null){
partnerLineInfoAndBaseInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
partnerLineInfoAndBaseInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
}
//todo su 1、招商经理名称 手机号归属地 2、加盟商手机号归属地
return partnerLineInfoAndBaseInfoVO;
}
@Override
public PageInfo<PartnerLineInfoVO> lastMonthCloseLine(String userId, Integer pageSize, Integer pageNumber) {
PageHelper.startPage(pageNumber,pageSize);
String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(),-30), CoolDateUtils.DATE_FORMAT_SEC);
PageInfo hyPartnerLineInfoDOPageInfo = hyPartnerLineInfoDAO.lastMonthCloseLine(userId, lastMonthTodayDate);
List<HyPartnerLineInfoDO> list = hyPartnerLineInfoDOPageInfo.getList();
List<PartnerLineInfoVO> result = new ArrayList<>();
list.stream().forEach(x->{
PartnerLineInfoVO partnerLineInfoVO = new PartnerLineInfoVO();
BeanUtils.copyProperties(x,partnerLineInfoVO);
result.add(partnerLineInfoVO);
});
hyPartnerLineInfoDOPageInfo.setList(result);
return hyPartnerLineInfoDOPageInfo;
}
@Override
public Boolean transferInvestmentManager(String userId, Long lineId) {
if (StringUtil.isBlank(userId)||lineId==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
hyPartnerLineInfoDAO.updateInvestmentManager(userId, Arrays.asList(lineId));
return Boolean.TRUE;
}
@Override
public Boolean allocationInvestmentManager(String userId, List<Long> lineIdList) {
if (StringUtil.isBlank(userId)|| CollectionUtils.isEmpty(lineIdList)){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
//加盟上线索集合
List<HyPartnerLineInfoDO> partnerLineInfoList= hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList);
//过滤出已结束的线索 这块线索需要重新生成新的线索
List<HyPartnerLineInfoDO> closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList());
List<Long> closeLineIdList = closeLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
//已结束的线索 需要重新生成一条新的线索
List<HyPartnerLineInfoDO> list = new ArrayList<>();
closeLineList.stream().forEach(x->{
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setPartnerId(x.getPartnerId());
hyPartnerLineInfoDO.setInvestmentManager(userId);
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
hyPartnerLineInfoDO.setLineStatus(1);
list.add(hyPartnerLineInfoDO);
});
hyPartnerLineInfoDAO.batchInsert(list);
//将老的线索置为删除状态
hyPartnerLineInfoDAO.batchDeleted(closeLineIdList);
//没有结束的线索直接分配招商经理
List<HyPartnerLineInfoDO> otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList());
List<Long> otherLineIdList = otherLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
hyPartnerLineInfoDAO.updateInvestmentManager(userId, otherLineIdList);
return null;
}
@Override
public PageInfo<BlackListVO> getBlackList(LineRequest LineRequest) {
PageHelper.startPage(LineRequest.getPageNum(),LineRequest.getPageSize());
PageInfo blackListDTOPageInfo = hyPartnerLineInfoDAO.getBlackList(LineRequest.getKeyWord(), LineRequest.getIntentArea(), LineRequest.getAcceptAdjustType());
List<PartnerBlackListDTO> list = blackListDTOPageInfo.getList();
List<BlackListVO> result = new ArrayList<>();
list.stream().forEach(x->{
BlackListVO blackListVO = convertPartnerBlackListDTOToVo(x);
//todo su 员工名称手机号 手机号归属地
result.add(blackListVO);
});
blackListDTOPageInfo.setList(result);
return blackListDTOPageInfo;
}
@Override
public Boolean joinBlackList(Long lineId, Integer status, String joinReason) {
if (lineId==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
//加入黑名单 阶段回到第一步待提交状态
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setId(lineId);
hyPartnerLineInfoDO.setLineStatus(status);
hyPartnerLineInfoDO.setJoinBlackReason(joinReason);
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
return Boolean.TRUE;
}
@Override
public Boolean removeBlackList(Long lineId, Integer status, String removeReason) {
//移除黑名单 黑名单线索置为删除状态 新增一条线索
if (lineId==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setId(lineId);
hyPartnerLineInfoDO.setLineStatus(status);
hyPartnerLineInfoDO.setRemoveBlackReason(removeReason);
hyPartnerLineInfoDO.setDeleted(Boolean.TRUE);
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
HyPartnerLineInfoDO newHyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setPartnerId(hyPartnerLineInfoDO.getPartnerId());
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
hyPartnerLineInfoDO.setLineStatus(0);
hyPartnerLineInfoDAO.batchInsert(Arrays.asList(newHyPartnerLineInfoDO));
return Boolean.TRUE;
}
@Override
public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
if (hyPartnerLineInfoDO==null){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())){
throw new ServiceException(ErrorCodeEnum.WORK_FLOW_STAGE_PASS_ERROR);
}
//通过
if ("pass".equals(closeFollowRequest.getType())){
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode());
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode());
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateFormatDay(2));
hyPartnerLineInfoDO.setPassReason(closeFollowRequest.getPassReason());
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
}
}
//拒绝
if ("reject".equals(closeFollowRequest.getType())){
//当前节点 拒绝的子状态
String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage());
hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus);
//15天 冷静期
// TODO: 2023/6/13 冷静期
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15));
hyPartnerLineInfoDO.setRejectPublicReason(closeFollowRequest.getRejectPublicReason());
hyPartnerLineInfoDO.setRejectRealReason(closeFollowRequest.getRejectRealReason());
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
}
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
}
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
return Boolean.TRUE;
}
/**
* convertPartnerBlackListDTOToVo
* @param partnerBlackListDTO
* @return
*/
public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO){
BlackListVO blackListVO = new BlackListVO();
blackListVO.setId(partnerBlackListDTO.getLineId());
blackListVO.setPartnerUserId(partnerBlackListDTO.getPartnerId());
blackListVO.setPartnerUserName(partnerBlackListDTO.getPartnerUserName());
blackListVO.setPartnerUserPhone(partnerBlackListDTO.getMobile());
blackListVO.setCreateTime(partnerBlackListDTO.getCreateTime());
blackListVO.setCloseTime(partnerBlackListDTO.getCloseTime());
blackListVO.setJoinBlackReason(partnerBlackListDTO.getJoinBlackReason());
blackListVO.setCloseUserId(partnerBlackListDTO.getCloseUserId());
return blackListVO;
}
/**
* convertPartnerLineInfoAndBaseInfoDTOToVo
* @param partnerLineInfoAndBaseInfoDTO
* @return
*/
private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO){
PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = new PartnerLineInfoAndBaseInfoVO();
partnerLineInfoAndBaseInfoVO.setId(partnerLineInfoAndBaseInfoDTO.getId());
partnerLineInfoAndBaseInfoVO.setPartnerUserId(partnerLineInfoAndBaseInfoDTO.getPartnerId());
partnerLineInfoAndBaseInfoVO.setInvestmentManager(partnerLineInfoAndBaseInfoDTO.getInvestmentManager());
partnerLineInfoAndBaseInfoVO.setUserPortrait(partnerLineInfoAndBaseInfoDTO.getUserPortrait());
partnerLineInfoAndBaseInfoVO.setPartnerBaseInfoId(partnerLineInfoAndBaseInfoDTO.getPartnerBaseInfoId());
partnerLineInfoAndBaseInfoVO.setWorkflowStage(partnerLineInfoAndBaseInfoDTO.getWorkflowStage());
partnerLineInfoAndBaseInfoVO.setWorkflowStatus(partnerLineInfoAndBaseInfoDTO.getWorkflowStatus());
return partnerLineInfoAndBaseInfoVO;
}
/**
* stageCountDTOToVo
* @param stageCountDTO
* @return
*/
private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO){
StageCountVO stageCountVO = new StageCountVO();
stageCountVO.setQualifiedInterviewCount(stageCountDTO.getQualifiedInterviewCount());
stageCountVO.setIntentApplyApproveCount(stageCountDTO.getIntentApplyApproveCount());
stageCountVO.setReservationInterviewCount(stageCountDTO.getReservationInterviewCount());
return stageCountVO;
}
}

View File

@@ -0,0 +1,195 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.dto.partner.ApplyReservationProvinceDTO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.request.OpenAreaRequest;
import com.cool.store.service.OpenAreaService;
import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO;
import com.cool.store.vo.OpenProvinceVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/6/13 22:11
* @Version 1.0
*/
@Service
public class OpenAreaServiceImpl implements OpenAreaService {
@Resource
HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Override
public List<OpenAreaTreeVO> queryByKeyword(String keyword,Boolean flag) {
//先查出所有的一级菜单
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
//查询关键字下所有的数据 原始的数据
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,flag);
Set<Long> longSet = hyOpenAreaInfoDOS.stream().map(HyOpenAreaInfoDO::getId).collect(Collectors.toSet());
hyOpenAreaInfoDOS.stream().forEach(x->{
Long parentId = x.getParentId();
if (parentId!=null&&!longSet.contains(parentId)){
//添加到集合中
longSet.add(x.getParentId());
HyOpenAreaInfoDO hyOpenAreaInfoDO = longHyOpenAreaInfoDOMap.get(parentId);
hyOpenAreaInfoDOS.add(hyOpenAreaInfoDO);
}
});
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" );
List<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
return openAreaTreeVOS;
}
@Override
public List<OpenAreaVO> getChildrenList(String type, Long parentId) {
List<HyOpenAreaInfoDO> childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId);
List<OpenAreaVO> result = new ArrayList<>();
childrenList.stream().forEach(x->{
OpenAreaVO openAreaVO = convertDoToVo(x);
result.add(openAreaVO);
});
return result;
}
@Override
public Boolean batchUpdate(String userId, OpenAreaRequest request) {
//修改选择的区域
hyOpenAreaInfoDAO.batchUpdateById(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
//修改选择区域的子区域
hyOpenAreaInfoDAO.batchUpdateByParentId(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
return Boolean.TRUE;
}
@Override
public PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) {
PageHelper.startPage(pageNumber,pageSize);
PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea();
if (hyOpenAreaInfoDOPageInfo==null){
return new PageInfo<>();
}
List<OpenAreaVO> list = new ArrayList<>();
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList();
hyOpenAreaInfoDOList.stream().forEach(x->{
list.add(convertDoToVo(x));
});
hyOpenAreaInfoDOPageInfo.setList(list);
return hyOpenAreaInfoDOPageInfo;
}
@Override
public OpenProvinceVO getOpenProvince() {
//先查出所有的一级菜单
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
List<ApplyReservationProvinceDTO> applyReservationProvinceCount = hyOpenAreaInfoDAO.getApplyReservationProvinceCount();
Map<String, Integer> applyMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getApplyCount));
Map<String, Integer> reservationMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getReservationCount));
List<OpenAreaVO> applyProvinceList = new ArrayList<>();
List<OpenAreaVO> reservationProvinceList = new ArrayList<>();
openArea.stream().forEach(x->{
String areaName = x.getAreaName();
if (applyMap.getOrDefault(areaName,0)>0){
applyProvinceList.add(convertDoToVo(x));
}
if (reservationMap.getOrDefault(areaName,0)>0){
reservationProvinceList.add(convertDoToVo(x));
}
});
OpenProvinceVO openProvinceVO = new OpenProvinceVO();
openProvinceVO.setApplyProvinceList(applyProvinceList);
openProvinceVO.setReservationProvinceList(reservationProvinceList);
return openProvinceVO;
}
private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){
OpenAreaVO openAreaVO = new OpenAreaVO();
openAreaVO.setId(hyOpenAreaInfoDO.getId());
openAreaVO.setAreaName(hyOpenAreaInfoDO.getAreaName());
openAreaVO.setParentId(hyOpenAreaInfoDO.getParentId());
openAreaVO.setAreaPath(hyOpenAreaInfoDO.getAreaPath());
openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus());
openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner());
openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner());
return openAreaVO;
}
/**
* 构建树
* @param arr
* @param id
* @param pid
* @param child
* @return
*/
public static JSONArray buildTree(JSONArray arr, String id, String pid, String child) {
//新建一个JSONArray来接收组装成树形结构的返回值
JSONArray jsonArray = new JSONArray();
//新建一个JSONObject对象
JSONObject hash = new JSONObject();
//将数组转换为object格式
for (int i = 0; i < arr.size(); i++) {
//获取当前的JSON对象
JSONObject json = (JSONObject) arr.get(i);
//把当前id作为键当前JSON对象作为值 put回hash这个Object对象中
//这里的put方法类似于map的put方法
hash.put(json.getString(id), json);
}
//遍历结果集
for (int j = 0; j < arr.size(); j++) {
//单条记录
JSONObject aVal = (JSONObject) arr.get(j);
//在hash中取出key为单条记录中pid的值
String pidStr = "";
//如果父级id不等于null
if (aVal.get(pid) != null) {
pidStr = aVal.get(pid).toString();
}
//从hash这个对象中获取父级对象 parent
JSONObject hashParent = (JSONObject) hash.get(pidStr);
//如果记录的pid存在则说明它有父节点将她添加到孩子节点的集合中
if (hashParent != null) {
//检查是否有child属性
if (hashParent.get(child) != null) {
//有子节点 则先将子节点取出
JSONArray children = (JSONArray) hashParent.get(child);
//然后把当前这个对象放进子节点之中
children.add(aVal);
//最后把子节点在放回父节点之中
hashParent.put(child, children);
} else {
//无子节点 则新建一个子节点
JSONArray children = new JSONArray();
//然后再把当前对象放进去
children.add(aVal);
//最后在放回父节点之中
hashParent.put(child, children);
}
} else {
jsonArray.add(aVal);
}
}
return jsonArray;
}
}

View File

@@ -0,0 +1,173 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyIntendDevMappingDAO;
import com.cool.store.dao.HyIntendDevZoneInfoDAO;
import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.dto.partner.ZoneCheckDTO;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.entity.HyIntendDevZoneInfoDO;
import com.cool.store.entity.HyIntendDevelopementMappingDO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.IntentAreaSettingRequest;
import com.cool.store.service.ZoneService;
import com.cool.store.vo.ZoneCheckVO;
import com.cool.store.vo.ZoneVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/6/14 14:26
* @Version 1.0
*/
@Service
public class ZoneServiceImpl implements ZoneService {
@Resource
HyIntendDevZoneInfoDAO hyIntendDevZoneInfoDAO;
@Resource
HyIntendDevMappingDAO hyIntendDevMappingDAO;
@Resource
HyOpenAreaInfoDAO openAreaInfoDAO;
@Resource
EnterpriseUserDAO enterpriseUserDAO;
@Override
public Boolean addZone(String userId, IntentAreaSettingRequest intentAreaSettingRequest) {
if (CollectionUtils.isEmpty(intentAreaSettingRequest.getOpenAreaIdList())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = new HyIntendDevZoneInfoDO();
hyIntendDevZoneInfoDO.setZoneName(intentAreaSettingRequest.getZoneName());
if (CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())){
hyIntendDevZoneInfoDO.setAssociatedRegionId(JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()));
}
hyIntendDevZoneInfoDO.setCreateUserId(userId);
hyIntendDevZoneInfoDO.setType(intentAreaSettingRequest.getType());
hyIntendDevZoneInfoDAO.insertSelective(hyIntendDevZoneInfoDO);
//添加战区映射的意向区域
hyIntendDevMappingDAO.deleteByOpenAreaIds(intentAreaSettingRequest.getOpenAreaIdList(),hyIntendDevZoneInfoDO.getType());
List<Long> openAreaIdList = intentAreaSettingRequest.getOpenAreaIdList();
List<HyIntendDevelopementMappingDO> list = new ArrayList<>();
openAreaIdList.stream().forEach(x->{
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = new HyIntendDevelopementMappingDO();
hyIntendDevelopementMappingDO.setType(intentAreaSettingRequest.getType());
hyIntendDevelopementMappingDO.setOpenAreaMappingId(String.valueOf(x));
hyIntendDevelopementMappingDO.setMappingId(String.valueOf(hyIntendDevZoneInfoDO.getId()));
list.add(hyIntendDevelopementMappingDO);
});
hyIntendDevMappingDAO.batchInsert(list);
return Boolean.TRUE;
}
@Override
public Boolean updateZone(String userId, IntentAreaSettingRequest intentAreaSettingRequest) {
if (CollectionUtils.isEmpty(intentAreaSettingRequest.getOpenAreaIdList())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = new HyIntendDevZoneInfoDO();
hyIntendDevZoneInfoDO.setId(intentAreaSettingRequest.getId());
hyIntendDevZoneInfoDO.setZoneName(intentAreaSettingRequest.getZoneName());
hyIntendDevZoneInfoDO.setAssociatedRegionId(CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())?JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()):"");
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
//添加战区映射的意向区域
hyIntendDevMappingDAO.deleteByOpenAreaIds(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType());
List<Long> openAreaIdList = intentAreaSettingRequest.getOpenAreaIdList();
List<HyIntendDevelopementMappingDO> list = new ArrayList<>();
openAreaIdList.stream().forEach(x->{
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = new HyIntendDevelopementMappingDO();
hyIntendDevelopementMappingDO.setType(intentAreaSettingRequest.getType());
hyIntendDevelopementMappingDO.setOpenAreaMappingId(String.valueOf(x));
hyIntendDevelopementMappingDO.setMappingId(String.valueOf(hyIntendDevZoneInfoDO.getId()));
list.add(hyIntendDevelopementMappingDO);
});
hyIntendDevMappingDAO.batchInsert(list);
return Boolean.TRUE;
}
@Override
public PageInfo<ZoneVO> getZoneList(String type, Integer pageSize, Integer pageNum) {
PageHelper.startPage(pageNum,pageSize);
PageInfo hyIntendDevZoneInfoList = hyIntendDevZoneInfoDAO.getHyIntendDevZoneInfoList(type);
List<ZoneVO> result = new ArrayList<>();
List<HyIntendDevZoneInfoDO> list = hyIntendDevZoneInfoList.getList();
if (CollectionUtils.isEmpty(list)){
return hyIntendDevZoneInfoList;
}
List<String> updateUserIdList = list.stream().map(HyIntendDevZoneInfoDO::getUpdateUserId).collect(Collectors.toList());
List<EnterpriseUserDO> updateUserList = enterpriseUserDAO.getUserInfoByUserIds(updateUserIdList);
Map<String, String> updateUserNameMap = updateUserList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName));
list.forEach(x->{
ZoneVO zoneVO = new ZoneVO();
zoneVO.setZoneName(x.getZoneName());
zoneVO.setId(x.getId());
zoneVO.setUpdateTime(x.getUpdateTime());
zoneVO.setUpdateUserId(x.getUpdateUserId());
zoneVO.setUpdateUserName(updateUserNameMap.get(x.getUpdateUserId()));
});
hyIntendDevZoneInfoList.setList(result);
return hyIntendDevZoneInfoList;
}
@Override
public ZoneVO zoneDetail(Long zoneId) {
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(zoneId);
if (hyIntendDevZoneInfoDO==null){
throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST);
}
return null;
}
@Override
public Boolean deletedZone(Long id) {
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(id);
if (hyIntendDevZoneInfoDO==null){
throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST);
}
hyIntendDevZoneInfoDO.setDeleted(1);
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
hyIntendDevMappingDAO.deleteByMappingIds(Arrays.asList(id),hyIntendDevZoneInfoDO.getType());
return Boolean.TRUE;
}
@Override
public List<ZoneCheckVO> checkZone(IntentAreaSettingRequest intentAreaSettingRequest) {
if (CollectionUtils.isEmpty(intentAreaSettingRequest.getOpenAreaIdList())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
//查询已经绑定战区的 意向区域
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByMappingIdList(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));
List<ZoneCheckVO> reslut = new ArrayList<>();
list.forEach(x->{
ZoneCheckVO zoneCheckVO = new ZoneCheckVO();
zoneCheckVO.setZoneName(x.getZoneName());
String areaName = areaNameMap.get(x.getOpenAreaMappingId());
zoneCheckVO.setAreaName(areaName);
});
return reslut;
}
}