Merge remote-tracking branch 'origin/cc_partner_init' into cc_partner_init
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.entity.HyPartnerLabelDO;
|
||||
import com.cool.store.entity.LineInfoDO;
|
||||
import com.cool.store.vo.BaseInfoVO;
|
||||
import com.cool.store.vo.desk.IntendPendingVO;
|
||||
import com.cool.store.vo.desk.InterviewPendingVO;
|
||||
import com.cool.store.vo.desk.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -36,6 +36,52 @@ public interface DeskService {
|
||||
*/
|
||||
PageInfo<InterviewPendingVO> interviewPendingList(Integer pageNum, Integer pageSize,String userId);
|
||||
|
||||
/**
|
||||
* 一审面试待处理
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
PageInfo<InterviewPendingVO> firstInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* 二审面试待处理
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
PageInfo<InterviewPendingVO> secondInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* payStagePendingList
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
PageInfo<PayStagePendingVO> payStagePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
|
||||
|
||||
|
||||
/**
|
||||
* signingPendingList
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
PageInfo<SigningPendingVO> signingPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* storeExperiencePendingList
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
PageInfo<StoreExperiencePendingVO> storeExperiencePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* convertToBaseInfoVO
|
||||
* @param lineInfoDO
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.AuditResultRequest;
|
||||
|
||||
public interface KdzApiService {
|
||||
boolean auditResult(AuditResultRequest request);
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.request.AddTagsRequest;
|
||||
import com.cool.store.request.ChangeInvestmentRequest;
|
||||
import com.cool.store.request.LineListRequest;
|
||||
import com.cool.store.request.PublicLineListRequest;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.vo.LineInfoVO;
|
||||
import com.cool.store.vo.LineListVO;
|
||||
import com.cool.store.vo.PartnerListVO;
|
||||
import com.cool.store.vo.PublicLineListVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
@@ -43,6 +41,16 @@ public interface LineService {
|
||||
*/
|
||||
PageInfo<PublicLineListVO> getPublicLineList(PublicLineListRequest publicLineListRequest, LoginUserInfo loginUserInfo);
|
||||
|
||||
|
||||
/**
|
||||
* 我负责的加盟商 or 团队负责的加盟商
|
||||
* @param partnerRequest
|
||||
* @param loginUserInfo
|
||||
* @param teamFlag
|
||||
* @return
|
||||
*/
|
||||
PageInfo<PartnerListVO> getPartnerList(PartnerRequest partnerRequest, LoginUserInfo loginUserInfo, Boolean teamFlag);
|
||||
|
||||
/**
|
||||
* 添加标签
|
||||
* @param userInfo
|
||||
|
||||
@@ -1,24 +1,20 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.cool.store.dao.HyOpenAreaInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerLabelDAO;
|
||||
import com.cool.store.dao.LineInfoDAO;
|
||||
import com.cool.store.dao.LineInterviewDAO;
|
||||
import com.cool.store.entity.HyOpenAreaInfoDO;
|
||||
import com.cool.store.entity.HyPartnerLabelDO;
|
||||
import com.cool.store.entity.LineInfoDO;
|
||||
import com.cool.store.entity.LineInterviewDO;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.InterviewTypeEnum;
|
||||
import com.cool.store.enums.WorkflowSubStageStatusEnum;
|
||||
import com.cool.store.mapper.IntentAgreementMapper;
|
||||
import com.cool.store.mapper.LineInterviewMapper;
|
||||
import com.cool.store.mapper.TrainingExperienceMapper;
|
||||
import com.cool.store.service.DeskService;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.utils.poi.DateUtils;
|
||||
import com.cool.store.vo.BaseInfoVO;
|
||||
import com.cool.store.vo.LabelBaseInfoVO;
|
||||
import com.cool.store.vo.desk.IntendPendingVO;
|
||||
import com.cool.store.vo.desk.InterviewPendingVO;
|
||||
import com.cool.store.vo.desk.*;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -44,11 +40,17 @@ public class DeskServiceImpl implements DeskService {
|
||||
HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
|
||||
@Resource
|
||||
LineInterviewDAO lineInterviewDAO;
|
||||
@Resource
|
||||
LinePayDAO linePayDAO;
|
||||
@Resource
|
||||
IntentAgreementMapper intentAgreementMapper;
|
||||
@Resource
|
||||
TrainingExperienceMapper trainingExperienceMapper;
|
||||
|
||||
@Override
|
||||
public PageInfo<IntendPendingVO> intendPendingList(Integer pageNum, Integer pageSize,String userId) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId, WorkflowSubStageStatusEnum.INTENT_5.getCode());
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId, Arrays.asList(WorkflowSubStageStatusEnum.INTENT_5.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
@@ -68,7 +70,7 @@ public class DeskServiceImpl implements DeskService {
|
||||
@Override
|
||||
public PageInfo<InterviewPendingVO> interviewPendingList(Integer pageNum, Integer pageSize, String userId) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId,WorkflowSubStageStatusEnum.INTENT_5.getCode());
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId,Arrays.asList(WorkflowSubStageStatusEnum.INVITING_INTERVIEWS_20.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
@@ -92,6 +94,155 @@ public class DeskServiceImpl implements DeskService {
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<InterviewPendingVO> firstInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo userInfo) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInterview(userInfo.getUserId(),InterviewTypeEnum.INTERVIEW.getCode(),
|
||||
Arrays.asList(WorkflowSubStageStatusEnum.FIRST_INTERVIEWS_35.getCode(),
|
||||
WorkflowSubStageStatusEnum.FIRST_INTERVIEWS_40.getCode(),
|
||||
WorkflowSubStageStatusEnum.FIRST_INTERVIEWS_30.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
|
||||
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
|
||||
List<LineInterviewDO> interviewByLindIds = lineInterviewDAO.getInterviewByLindIds(lineIds, InterviewTypeEnum.MEET);
|
||||
Map<Long, LineInterviewDO> interviewDOMap = interviewByLindIds.stream().collect(Collectors.toMap(LineInterviewDO::getLineId, x -> x, (k1, k2) -> k1));
|
||||
|
||||
List<InterviewPendingVO> list = new ArrayList<>();
|
||||
lineInfoDOS.forEach(x->{
|
||||
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
|
||||
InterviewPendingVO interviewPendingVO = new InterviewPendingVO(baseInfoVO);
|
||||
LineInterviewDO lineInterviewDO = interviewDOMap.get(x.getId());
|
||||
if (lineInterviewDO != null){
|
||||
interviewPendingVO.setStartTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,lineInterviewDO.getStartTime()));
|
||||
interviewPendingVO.setEndTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_END,lineInterviewDO.getEndTime()));
|
||||
interviewPendingVO.setInterviewer(userInfo.getName());
|
||||
}
|
||||
list.add(interviewPendingVO);
|
||||
});
|
||||
page.setList(list);
|
||||
return page;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PageInfo<InterviewPendingVO> secondInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo userInfo) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInterview(userInfo.getUserId(),InterviewTypeEnum.SECOND_INTERVIEW.getCode(),
|
||||
Arrays.asList(WorkflowSubStageStatusEnum.SECOND_INTERVIEWS_105.getCode(),
|
||||
WorkflowSubStageStatusEnum.SECOND_INTERVIEWS_110.getCode(),
|
||||
WorkflowSubStageStatusEnum.SECOND_INTERVIEWS_115.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
|
||||
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
|
||||
List<LineInterviewDO> interviewByLindIds = lineInterviewDAO.getInterviewByLindIds(lineIds, InterviewTypeEnum.MEET);
|
||||
Map<Long, LineInterviewDO> interviewDOMap = interviewByLindIds.stream().collect(Collectors.toMap(LineInterviewDO::getLineId, x -> x, (k1, k2) -> k1));
|
||||
|
||||
List<InterviewPendingVO> list = new ArrayList<>();
|
||||
lineInfoDOS.forEach(x->{
|
||||
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
|
||||
InterviewPendingVO interviewPendingVO = new InterviewPendingVO(baseInfoVO);
|
||||
LineInterviewDO lineInterviewDO = interviewDOMap.get(x.getId());
|
||||
if (lineInterviewDO != null){
|
||||
interviewPendingVO.setStartTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,lineInterviewDO.getStartTime()));
|
||||
interviewPendingVO.setEndTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_END,lineInterviewDO.getEndTime()));
|
||||
interviewPendingVO.setInterviewer(userInfo.getName());
|
||||
}
|
||||
list.add(interviewPendingVO);
|
||||
});
|
||||
page.setList(list);
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<PayStagePendingVO> payStagePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(user.getUserId(), Arrays.asList(WorkflowSubStageStatusEnum.PAY_DEPOSIT_50.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
|
||||
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
|
||||
Map<Long, LinePayDO> payMap = linePayDAO.getLinePayByLineIds(lineIds);
|
||||
List<PayStagePendingVO> list = new ArrayList<>();
|
||||
lineInfoDOS.forEach(x->{
|
||||
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
|
||||
PayStagePendingVO payStagePendingVO = new PayStagePendingVO(baseInfoVO);
|
||||
LinePayDO linePayDO = payMap.get(x.getId());
|
||||
if (linePayDO != null && linePayDO.getPayTime() != null){
|
||||
payStagePendingVO.setPayTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,linePayDO.getPayTime()));
|
||||
}
|
||||
|
||||
list.add(payStagePendingVO);
|
||||
});
|
||||
page.setList(list);
|
||||
return page ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<SigningPendingVO> signingPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(user.getUserId(),
|
||||
Arrays.asList(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode(),
|
||||
WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_70.getCode(),
|
||||
WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_80.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
|
||||
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
|
||||
List<SigningBaseInfoDO> signingBaseInfoDOS = intentAgreementMapper.selectByLineIds(lineIds);
|
||||
Map<Long, Date> dateMap = signingBaseInfoDOS.stream().collect(Collectors.toMap(SigningBaseInfoDO::getId, SigningBaseInfoDO::getCreateTime));
|
||||
List<SigningPendingVO> list = new ArrayList<>();
|
||||
lineInfoDOS.forEach(x->{
|
||||
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
|
||||
SigningPendingVO signingPendingVO = new SigningPendingVO(baseInfoVO);
|
||||
Date date = dateMap.get(x.getId());
|
||||
if (date != null){
|
||||
signingPendingVO.setSubmitTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,date));
|
||||
}
|
||||
list.add(signingPendingVO);
|
||||
});
|
||||
page.setList(list);
|
||||
return page ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<StoreExperiencePendingVO> storeExperiencePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(user.getUserId(),
|
||||
Arrays.asList(WorkflowSubStageStatusEnum.STORE_EXPERIENCE_85.getCode(),
|
||||
WorkflowSubStageStatusEnum.STORE_EXPERIENCE_95.getCode()));
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
|
||||
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
|
||||
Map<Long, LeaseBaseInfoDO> infoDOMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(lineIds)){
|
||||
List<LeaseBaseInfoDO> leaseBaseInfoDOS = trainingExperienceMapper.selectByLineIds(lineIds);
|
||||
infoDOMap = leaseBaseInfoDOS.stream().collect(Collectors.toMap(LeaseBaseInfoDO::getLineId, x -> x));
|
||||
}
|
||||
List<StoreExperiencePendingVO> list = new ArrayList<>();
|
||||
Map<Long, LeaseBaseInfoDO> finalInfoDOMap = infoDOMap;
|
||||
lineInfoDOS.forEach(x->{
|
||||
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
|
||||
StoreExperiencePendingVO storeExperiencePendingVO = new StoreExperiencePendingVO(baseInfoVO);
|
||||
LeaseBaseInfoDO date = finalInfoDOMap.get(x.getId());
|
||||
if (date != null && date.getExperienceStartTime() != null && date.getExperienceEndTime() != null){
|
||||
storeExperiencePendingVO.setExperienceStartTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1,date.getExperienceStartTime()));
|
||||
storeExperiencePendingVO.setExperienceEndTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_2,date.getExperienceEndTime()));
|
||||
}
|
||||
list.add(storeExperiencePendingVO);
|
||||
});
|
||||
page.setList(list);
|
||||
return page ;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* convertToBaseInfoVO
|
||||
* @param lineInfoDO
|
||||
|
||||
@@ -89,8 +89,8 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
|
||||
@Override
|
||||
protected Boolean auditPass(Long auditId, LineInfoDO lineInfo) {
|
||||
//校验是否是审核节点
|
||||
if ((lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) ||
|
||||
lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode()))){
|
||||
if (!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) &&
|
||||
!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode())){
|
||||
throw new ServiceException(ErrorCodeEnum.NOT_APPROVE_NODE);
|
||||
}
|
||||
//待审核code 63 处理逻辑
|
||||
@@ -104,14 +104,22 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
|
||||
WorkflowSubStageEnum nextStage = workflowSubStageEnum.getNextStage();
|
||||
//更新线索阶段
|
||||
lineInfoDAO.updateWorkflowStage(lineInfo.getId(), nextStage, nextStage.getInitStatus());
|
||||
//更新auditId
|
||||
SigningBaseInfoDO signingBaseInfoDO = intentAgreementMapper.selectByPartnerIdOrLineId(null, lineInfo.getId());
|
||||
if (Objects.nonNull(signingBaseInfoDO)){
|
||||
intentAgreementMapper.updateAuditId(lineInfo.getId(),auditId);
|
||||
}else {
|
||||
throw new ServiceException("无法更新,没有对应的签约基本信息");
|
||||
}
|
||||
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean auditReject(Long auditId, LineInfoDO lineInfo) {
|
||||
if ((lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) ||
|
||||
lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode()))){
|
||||
if ((!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) &&
|
||||
!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode()))){
|
||||
throw new ServiceException(ErrorCodeEnum.NOT_APPROVE_NODE);
|
||||
}
|
||||
//待审核code 63 处理逻辑
|
||||
@@ -123,6 +131,8 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
|
||||
if(lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode())){
|
||||
lineInfo.setWorkflowSubStageStatus(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_80.getCode());
|
||||
lineInfoDAO.updateLineInfo(lineInfo);
|
||||
//更新auditId
|
||||
intentAgreementMapper.updateAuditId(lineInfo.getId(),auditId);
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.entity.LineInfoDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.LineInfoMapper;
|
||||
import com.cool.store.request.AuditPassRequest;
|
||||
import com.cool.store.request.AuditRejectRequest;
|
||||
import com.cool.store.request.AuditResultRequest;
|
||||
import com.cool.store.service.KdzApiService;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.utils.poi.constant.Constants;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class KdzApiServiceImpl implements KdzApiService {
|
||||
|
||||
@Resource
|
||||
LineInfoMapper lineInfoMapper;
|
||||
|
||||
@Resource
|
||||
private CommonService commonService;
|
||||
|
||||
@Override
|
||||
public boolean auditResult(AuditResultRequest request) {
|
||||
if (Objects.isNull(request) || StringUtil.isBlank(request.getKdzBusinessId())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
|
||||
}
|
||||
String kdzBusinessId = request.getKdzBusinessId();
|
||||
String lineId = splitMethod(kdzBusinessId);
|
||||
if (StringUtil.isBlank(lineId)){
|
||||
throw new ServiceException("kdzBusinessId解析异常,请检查");
|
||||
}
|
||||
LineInfoDO lineInfoDO = lineInfoMapper.getByLineId(Long.valueOf(lineId));
|
||||
try {
|
||||
if (request.getAuditResult() == 1){
|
||||
AuditPassRequest auditPassRequest = new AuditPassRequest();
|
||||
auditPassRequest.setLineId(lineInfoDO.getId());
|
||||
auditPassRequest.setPassReason(request.getCause());
|
||||
auditPassRequest.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage());
|
||||
commonService.getLineFlowService(auditPassRequest.getWorkflowSubStage()).auditPass(auditPassRequest);
|
||||
}else if (request.getAuditResult() == 0){
|
||||
AuditRejectRequest auditRejectRequest = new AuditRejectRequest();
|
||||
auditRejectRequest.setLineId(lineInfoDO.getId());
|
||||
auditRejectRequest.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage());
|
||||
auditRejectRequest.setRejectPublicReason(request.getCause());
|
||||
auditRejectRequest.setRejectRealReason(request.getFailureCause());
|
||||
commonService.getLineFlowService(auditRejectRequest.getWorkflowSubStage()).auditReject(auditRejectRequest);
|
||||
}
|
||||
}catch (Exception e){
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static String splitMethod(String kdzBusinessId){
|
||||
String[] split = kdzBusinessId.split(Constants.D_LINE);
|
||||
if (split.length >= 2){
|
||||
return split[0];
|
||||
}else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.LineAuditInfoDAO;
|
||||
import com.cool.store.dao.LineInfoDAO;
|
||||
import com.cool.store.entity.LineAuditInfoDO;
|
||||
@@ -11,6 +12,8 @@ import com.cool.store.enums.LineStatusEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.AuditPassRequest;
|
||||
import com.cool.store.request.AuditRejectRequest;
|
||||
import com.cool.store.request.LineFollowLogRequest;
|
||||
import com.cool.store.service.LineFollowService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -29,6 +32,8 @@ public abstract class LineFlowService {
|
||||
private LineAuditInfoDAO lineAuditInfoDAO;
|
||||
@Resource
|
||||
private LineInfoDAO lineInfoDAO;
|
||||
@Resource
|
||||
private LineFollowService lineFollowService;
|
||||
|
||||
/**
|
||||
* 审核通过
|
||||
@@ -81,7 +86,7 @@ public abstract class LineFlowService {
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean auditClose(AuditRejectRequest request){
|
||||
public Boolean auditClose(AuditRejectRequest request, LoginUserInfo user){
|
||||
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(request.getLineId());
|
||||
if(!lineInfo.getWorkflowSubStage().equals(request.getWorkflowSubStage())){
|
||||
throw new ServiceException(ErrorCodeEnum.WORK_FLOW_STAGE_PASS_ERROR);
|
||||
@@ -99,6 +104,10 @@ public abstract class LineFlowService {
|
||||
updateLineInfo.setId(request.getLineId());
|
||||
updateLineInfo.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
|
||||
lineInfoDAO.updateLineInfo(updateLineInfo);
|
||||
LineFollowLogRequest lineFollowLogRequest = new LineFollowLogRequest();
|
||||
lineFollowLogRequest.setLineId(request.getLineId());
|
||||
lineFollowLogRequest.setMessage(String.format("结束跟进原因:%s", request.getRejectRealReason()));
|
||||
lineFollowService.addFollowLog(lineFollowLogRequest,user.getUserId(),user.getName());
|
||||
return auditClose(auditId, lineInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,19 +8,14 @@ import com.cool.store.dao.*;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.*;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.IntentAgreementMapper;
|
||||
import com.cool.store.mapper.RegionMapper;
|
||||
import com.cool.store.request.AddTagsRequest;
|
||||
import com.cool.store.request.ChangeInvestmentRequest;
|
||||
import com.cool.store.request.LineListRequest;
|
||||
import com.cool.store.request.PublicLineListRequest;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.utils.poi.DateUtils;
|
||||
import com.cool.store.vo.BaseInfoVO;
|
||||
import com.cool.store.vo.LineInfoVO;
|
||||
import com.cool.store.vo.LineListVO;
|
||||
import com.cool.store.vo.PublicLineListVO;
|
||||
import com.cool.store.vo.*;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -59,6 +54,8 @@ public class LineServiceImpl implements LineService {
|
||||
UserAuthMappingService userAuthMappingService;
|
||||
@Resource
|
||||
TransferLogService transferLogService;
|
||||
@Resource
|
||||
IntentAgreementMapper intentAgreementMapper;
|
||||
|
||||
@Override
|
||||
public LineInfoVO getLineInfo(Long lineId) {
|
||||
@@ -167,6 +164,67 @@ public class LineServiceImpl implements LineService {
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<PartnerListVO> getPartnerList(PartnerRequest partnerRequest, LoginUserInfo loginUserInfo, Boolean teamFlag) {
|
||||
|
||||
List<Long> wantShopAreaIds = new ArrayList<>();
|
||||
String userId = null;
|
||||
if(!teamFlag){
|
||||
userId = loginUserInfo.getUserId();
|
||||
}
|
||||
if (teamFlag && !sysRoleService.checkIsAdmin(loginUserInfo.getUserId())){
|
||||
List<Long> list = userAuthMappingService.listWantShopAreaIdByUserId(loginUserInfo.getUserId());
|
||||
if (CollectionUtils.isNotEmpty(list)){
|
||||
wantShopAreaIds = list;
|
||||
}else {
|
||||
userId = loginUserInfo.getUserId();
|
||||
}
|
||||
}
|
||||
String areaName = null;
|
||||
if (partnerRequest.getWantShopAreaId() != null){
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(partnerRequest.getWantShopAreaId());
|
||||
areaName = hyOpenAreaInfoDO.getAreaName();
|
||||
}
|
||||
PageHelper.startPage(partnerRequest.getPageNum(), partnerRequest.getPageSize());
|
||||
List<LineInfoDO> lineInfoDOS = lineInfoDAO.partnerList(partnerRequest,areaName, userId, wantShopAreaIds);
|
||||
PageInfo page = new PageInfo(lineInfoDOS);
|
||||
Map<Long, HyPartnerLabelDO> userPortraitMap = deskService.getUserPortraitMap(lineInfoDOS);
|
||||
List<Long> wantShopAreaIdList = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
|
||||
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIdList);
|
||||
List<Integer> lineSourceIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getLineSource() != null).map(LineInfoDO::getLineSource).collect(Collectors.toList());
|
||||
Map<Integer, String> channelMapByIds = hyPartnerUserChannelDAO.getChannelMapByIds(lineSourceIds);
|
||||
|
||||
List<String> userIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getInvestmentManager() != null).map(LineInfoDO::getInvestmentManager).collect(Collectors.toList());
|
||||
userIds.addAll(lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getDevelopmentManager() != null).map(LineInfoDO::getDevelopmentManager).collect(Collectors.toList()));
|
||||
userIds.addAll(lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getUpdateUserId() != null).map(LineInfoDO::getUpdateUserId).collect(Collectors.toList()));
|
||||
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(userIds);
|
||||
|
||||
|
||||
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
|
||||
List<SigningBaseInfoDO> signingBaseInfoDOS = intentAgreementMapper.selectByLineIds(lineIds);
|
||||
Map<Long, Date> dateMap = signingBaseInfoDOS.stream().collect(Collectors.toMap(SigningBaseInfoDO::getId, SigningBaseInfoDO::getCreateTime));
|
||||
|
||||
List<PartnerListVO> result = new ArrayList<>();
|
||||
lineInfoDOS.forEach(x->{
|
||||
BaseInfoVO baseInfoVO = deskService.convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
|
||||
PartnerListVO partnerListVO = new PartnerListVO(baseInfoVO);
|
||||
Date date = dateMap.get(x.getId());
|
||||
if (date != null){
|
||||
partnerListVO.setJoinTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, date));
|
||||
}
|
||||
partnerListVO.setUpdateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, x.getUpdateTime()));
|
||||
partnerListVO.setLineSourceName(channelMapByIds.get(x.getLineSource()));
|
||||
partnerListVO.setJoinStatus(x.getJoinStatus());
|
||||
partnerListVO.setInvestmentManagerUserName(userNameMap.get(x.getInvestmentManager()));
|
||||
partnerListVO.setUpdateUserName(userNameMap.get(x.getUpdateUserId()));
|
||||
partnerListVO.setDevelopmentManagerUserName(userNameMap.get(x.getDevelopmentManager()));
|
||||
partnerListVO.setWantShopNum(x.getWantShopNum());
|
||||
result.add(partnerListVO);
|
||||
});
|
||||
page.setList(result);
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean addTags(LoginUserInfo user, AddTagsRequest addTagsRequest) {
|
||||
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(addTagsRequest.getLineId());
|
||||
|
||||
@@ -10,12 +10,15 @@ import com.cool.store.mapper.RegionMapper;
|
||||
import com.cool.store.mapper.SysRoleMapper;
|
||||
import com.cool.store.mapper.UserAuthMappingMapper;
|
||||
import com.cool.store.service.UserAuthMappingService;
|
||||
import com.cool.store.utils.RedisConstantUtil;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.vo.SysRoleVO;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -46,6 +49,11 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
|
||||
@Resource
|
||||
private EnterpriseUserDAO enterpriseUserDAO;
|
||||
|
||||
@Resource
|
||||
private RedisUtilPool redisUtilPool;
|
||||
|
||||
@Autowired
|
||||
private RedisConstantUtil redisConstantUtil;
|
||||
|
||||
@Override
|
||||
public List<UserAuthMappingDO> listUserAuthMappingByUserId(String userId) {
|
||||
@@ -63,24 +71,40 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
|
||||
*/
|
||||
@Override
|
||||
public EnterpriseUserDO getUserByRoleNameAndAreaId(String roleName, Long wantShopAreaId) {
|
||||
if(StringUtils.isBlank(roleName) || wantShopAreaId == null){
|
||||
if(StringUtils.isBlank(roleName) || Objects.isNull(wantShopAreaId)){
|
||||
return null;
|
||||
}
|
||||
List<SysRoleDO> roleList = sysRoleMapper.getRolesByName(roleName);
|
||||
if (CollectionUtils.isEmpty(roleList)) {
|
||||
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName)){
|
||||
// 找大区经理 找不到找战区经理,再找不到找大区经理?
|
||||
String suitableUserId = null;
|
||||
String investmentManagerKey = redisConstantUtil.getInvestmentManagerKey(wantShopAreaId);
|
||||
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName)){
|
||||
suitableUserId = redisUtilPool.rpopStr(investmentManagerKey);
|
||||
if(StringUtils.isNotBlank(suitableUserId)){
|
||||
EnterpriseUserDO userDO = enterpriseUserDAO.getUserInfoById(suitableUserId);
|
||||
return userDO;
|
||||
}
|
||||
}
|
||||
Long roleId = roleList.get(0).getId();
|
||||
SysRoleDO sysRoleDO = sysRoleMapper.getRolesByNameAndSource(roleName, RoleSourceEnum.CREATE.getCode());
|
||||
Long roleId = sysRoleDO.getId();
|
||||
List<String> hasRoleUserIdList = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId)));
|
||||
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName) && CollectionUtils.isEmpty(hasRoleUserIdList)){
|
||||
// 找大区经理 找不到找战区经理,再找不到找大区经理?
|
||||
sysRoleDO = sysRoleMapper.getRolesByNameAndSource(UserRoleEnum.REGION_MANAGER.getDesc(), RoleSourceEnum.CREATE.getCode());
|
||||
roleId = sysRoleDO.getId();
|
||||
hasRoleUserIdList = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId)));
|
||||
}
|
||||
Long warRegionId = regionAreaConfigDao.getByWantShopAreaId(wantShopAreaId);
|
||||
// 查找有战区权限的人
|
||||
List<String> authWarRegionUserIdList = authWarRegionUser(warRegionId);
|
||||
List<String> userIds = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId)));
|
||||
authWarRegionUserIdList.retainAll(userIds);
|
||||
List<EnterpriseUserDO> userDOList = enterpriseUserDAO.getUserInfoByUserIds(authWarRegionUserIdList);
|
||||
// 用redis实现 用户列表轮询返回
|
||||
return userDOList.get(0);
|
||||
authWarRegionUserIdList.retainAll(hasRoleUserIdList);
|
||||
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName)){
|
||||
// 按工号排序后放入redis
|
||||
redisUtilPool.listPushTail(investmentManagerKey, authWarRegionUserIdList.toArray(new String[authWarRegionUserIdList.size()]));
|
||||
suitableUserId = redisUtilPool.rpopStr(investmentManagerKey);
|
||||
}else {
|
||||
suitableUserId = authWarRegionUserIdList.get(0);
|
||||
}
|
||||
EnterpriseUserDO userDO = enterpriseUserDAO.getUserInfoById(suitableUserId);
|
||||
return userDO;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,6 +114,13 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
|
||||
*/
|
||||
@Override
|
||||
public List<Long> listWantShopAreaIdByUserId(String userId) {
|
||||
//如果在缓存中存在,从缓存中去取
|
||||
String userWantAreaListKey = redisConstantUtil.getUserWantAreaListKey(userId);
|
||||
List<String> userWantAreaList = redisUtilPool.listGetAll(userWantAreaListKey);
|
||||
if (CollectionUtils.isNotEmpty(userWantAreaList)) {
|
||||
List<Long> authRegionIdListFromCache = userWantAreaList.stream().map(regionId -> Long.valueOf(regionId)).collect(Collectors.toList());
|
||||
return authRegionIdListFromCache;
|
||||
}
|
||||
List<UserAuthMappingDO> userAuthList = this.listUserAuthMappingByUserId(userId);
|
||||
List<String> authRegionIds = ListUtils.emptyIfNull(userAuthList)
|
||||
.stream().map(UserAuthMappingDO::getMappingId)
|
||||
@@ -99,6 +130,11 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
|
||||
List<Long> wantShopAreaIdList = ListUtils.emptyIfNull(regionAreaConfigDOList)
|
||||
.stream().map(RegionAreaConfigDO::getWantShopAreaId)
|
||||
.collect(Collectors.toList());
|
||||
List<String> wantShopAreaIdStrList = wantShopAreaIdList.stream().map(areaId -> String.valueOf(areaId)).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(wantShopAreaIdStrList)) {
|
||||
redisUtilPool.listPushTail(userWantAreaListKey, wantShopAreaIdStrList.toArray(new String[wantShopAreaIdList.size()]));
|
||||
redisUtilPool.expire(userWantAreaListKey, 5 * 60);
|
||||
}
|
||||
return wantShopAreaIdList;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||
|
||||
public static String SPECIAL_DATE_START = "yyyy年MM月dd日 HH:mm";
|
||||
|
||||
public static String SPECIAL_DATE_START_1 = "yyyy年MM月dd日";
|
||||
|
||||
public static String SPECIAL_DATE_START_2 = "dd日";
|
||||
|
||||
public static String SPECIAL_DATE_END = "HH:mm";
|
||||
|
||||
private static String[] parsePatterns = {
|
||||
|
||||
Reference in New Issue
Block a user