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

This commit is contained in:
pserimal
2023-06-27 18:58:10 +08:00
17 changed files with 200 additions and 80 deletions

View File

@@ -69,7 +69,7 @@ public enum ErrorCodeEnum {
FEISHU_DELETE_SCHEDULE_ERROR(1021108, "删除原面试安排失败!", null), FEISHU_DELETE_SCHEDULE_ERROR(1021108, "删除原面试安排失败!", null),
CREATE_CALENDAR_EVENT_FAIL(1021109, "创建面试安排失败!", null), CREATE_CALENDAR_EVENT_FAIL(1021109, "创建面试安排失败!", null),
FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "修改面试安排失败!", null), FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "修改面试安排失败!", null),
INTERVIEW_STATUS_ERROR(1021111, "当前面试状态不允许修改面试时间", null), INTERVIEW_STATUS_ERROR(1021111, "当前面试状态不允许该操作", null),
INTERVIEW_PLAN_ALREADY_EXIST(1021112, "面试计划已存在,请勿重复申请!", null), INTERVIEW_PLAN_ALREADY_EXIST(1021112, "面试计划已存在,请勿重复申请!", null),
INTERVIEW_LINE_ID_IS_NULL(1021113, "线索id为空", null), INTERVIEW_LINE_ID_IS_NULL(1021113, "线索id为空", null),
INTERVIEW_INTERVIEW_TIME_IS_UNUSABLE(1021114, "当前预约时间不可用,请和线索用户协商其他时间后确定预约时间\n面试人{0} 手机号:{1}", null), INTERVIEW_INTERVIEW_TIME_IS_UNUSABLE(1021114, "当前预约时间不可用,请和线索用户协商其他时间后确定预约时间\n面试人{0} 手机号:{1}", null),

View File

@@ -153,4 +153,6 @@ public interface HyPartnerInterviewPlanMapper {
*/ */
HyPartnerInterviewPlanDO getInterviewPlanById(String interviewPlanId); HyPartnerInterviewPlanDO getInterviewPlanById(String interviewPlanId);
HyPartnerInterviewPlanDO getInterviewPlanByLineId(Long lineId);
} }

View File

@@ -454,7 +454,7 @@
</select> </select>
<select id="selectInterviewIdByLineId" resultType="java.lang.Long"> <select id="selectInterviewIdByLineId" resultType="java.lang.Long">
select id from hy_partner_interview_plan where partner_line_id = #{lineId} select id from hy_partner_interview_plan where partner_line_id = #{lineId} and deleted = '0'
</select> </select>
<!-- 查询用户基本信息 --> <!-- 查询用户基本信息 -->
@@ -484,4 +484,9 @@
from hy_partner_interview_plan from hy_partner_interview_plan
where id = #{interviewPlanId} where id = #{interviewPlanId}
</select> </select>
<select id="getInterviewPlanByLineId" resultType="com.cool.store.entity.HyPartnerInterviewPlanDO">
select <include refid="Base_Column_List"></include>
from hy_partner_interview_plan
where partner_line_id = #{lineId} and deleted = 0
</select>
</mapper> </mapper>

View File

@@ -34,11 +34,11 @@ public class PartnerLineBaseInfoVO {
private String workflowStatus; private String workflowStatus;
@ApiModelProperty("当前阶段截止时间") @ApiModelProperty("当前阶段截止时间")
@JsonFormat(pattern = "yyyy.MM.dd HH:mm", timezone = "GMT+8") @JsonFormat(pattern = "yyyy.MM.dd HH:mm:ss", timezone = "GMT+8")
private Date deadline; private Date deadline;
@ApiModelProperty("结束跟进时间 冷静期使用 计算15天还剩多少天") @ApiModelProperty("结束跟进时间 冷静期使用 计算15天还剩多少天")
@JsonFormat(pattern = "yyyy.MM.dd HH:mm", timezone = "GMT+8") @JsonFormat(pattern = "yyyy.MM.dd HH:mm:ss", timezone = "GMT+8")
private Date closeTime; private Date closeTime;
@ApiModelProperty("冷静期首次登录标识 true-是首次") @ApiModelProperty("冷静期首次登录标识 true-是首次")

View File

@@ -45,7 +45,7 @@ public interface HyPartnerIntentInfoService {
String submitWantShopInfo(PartnerWantShopInfoRequest request); String submitWantShopInfo(PartnerWantShopInfoRequest request);
String submitIndustryCognitionInfo(IndustryCognitionInfoRequest request); Boolean submitIndustryCognitionInfo(IndustryCognitionInfoRequest request);
PartnerIntentInfoVO queryPartnerIntentInfo(PartnerUserInfoVO userInfoVO, Long lineId); PartnerIntentInfoVO queryPartnerIntentInfo(PartnerUserInfoVO userInfoVO, Long lineId);

View File

@@ -63,7 +63,9 @@ public interface InterviewService {
*/ */
void approveAppointment(ApproveAppointmentReq request) throws ApiException; void approveAppointment(ApproveAppointmentReq request) throws ApiException;
void reInterview(ReInterviewReq request) throws ApiException; void reInterview(ReInterviewReq request) throws ApiException;
void rejectInterview(RejectInterviewReq request) throws ApiException; // void rejectInterview(RejectInterviewReq request) throws ApiException;
public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException; public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException;
public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile);
} }

View File

@@ -1,6 +1,7 @@
package com.cool.store.service; package com.cool.store.service;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.request.TransferInvestmentManagerRequest;
@@ -24,6 +25,6 @@ public interface WorkFlowService {
* @param workflowStage * @param workflowStage
* @param request * @param request
*/ */
void transferInvestmentManager(WorkflowStageEnum workflowStage,TransferInvestmentManagerRequest request); void transferInvestmentManager(WorkflowStageEnum workflowStage,TransferInvestmentManagerRequest request) throws ApiException;
} }

View File

@@ -195,7 +195,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
} }
@Override @Override
public String submitIndustryCognitionInfo(IndustryCognitionInfoRequest request) { public Boolean submitIndustryCognitionInfo(IndustryCognitionInfoRequest request) {
log.info("HyPartnerClerkServiceImpl#submitPartnerIntentInfo request:{}", JSONObject.toJSONString(request)); log.info("HyPartnerClerkServiceImpl#submitPartnerIntentInfo request:{}", JSONObject.toJSONString(request));
if (StringUtil.isBlank(request.getPartnerId()) || Objects.isNull(request.getPartnerLineId())){ if (StringUtil.isBlank(request.getPartnerId()) || Objects.isNull(request.getPartnerLineId())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
@@ -204,7 +204,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
if(!request.getSubmitFlag()){ if(!request.getSubmitFlag()){
// 自动保存时 // 自动保存时
redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS); redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS);
return ""; return true;
} }
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId()); HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId());
if(intentInfoDO == null){ if(intentInfoDO == null){
@@ -216,7 +216,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
hyPartnerIntentInfoDAO.updateByPrimaryKeySelective(intentInfoDO); hyPartnerIntentInfoDAO.updateByPrimaryKeySelective(intentInfoDO);
} }
redisUtilPool.delKey(cacheKey); redisUtilPool.delKey(cacheKey);
return null; return true;
} }
@Override @Override

View File

@@ -24,6 +24,7 @@ import com.cool.store.vo.*;
import com.cool.store.vo.interview.InterviewVO; import com.cool.store.vo.interview.InterviewVO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
* @Version 1.0 * @Version 1.0
*/ */
@Service @Service
@Slf4j
public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Resource @Resource
@@ -567,7 +569,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
// 15天之后可以继续填写意向信息把之前的线索删除 // 15天之后可以继续填写意向信息把之前的线索删除
if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null && if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null &&
hyPartnerLineInfoDO.getDeadline().before(new Date())){ DateUtil.offsetSecond(hyPartnerLineInfoDO.getDeadline(), -2).before(new Date())){
//将老的线索置为删除状态 //将老的线索置为删除状态
hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId())); hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId()));
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId()); HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());

View File

@@ -191,17 +191,17 @@ public class InterviewServiceImpl implements InterviewService {
} }
/** /**
* PC端修改面试时间目前和小程序端逻辑一致,后续可能扩展 * PC端修改面试时间和小程序端逻辑一致,PC端修改需要修改日程信息
* @param request * @param request
* @throws ApiException * @throws ApiException
*/ */
@Override @Override
public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException { public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException {
//只有房间状态是待开放才可以修改时间 //只有房间状态是待开放才可以修改时间
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId()); // Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) { // if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); // throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
} // }
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试信息为空,抛出异常 //如果面试信息为空,抛出异常
if (interviewInfo == null) { if (interviewInfo == null) {
@@ -211,11 +211,43 @@ public class InterviewServiceImpl implements InterviewService {
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
} }
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO(); HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
if(StringUtils.isNotEmpty(interviewInfo.getFeishuCalendarId())&&StringUtils.isNotEmpty(interviewInfo.getFeishuScheduleId())) {
//1.原面试官日程删除
DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
if (userCalendarsEventDTO == null) {
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
}
//2.新面试官日程新增
CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
createCalendarEventDTO.setStartTime(DateUtil.parse(request.getNewStartBookingTime()).getTime());
createCalendarEventDTO.setEndTime(DateUtil.parse(request.getNewEndBookingTime()).getTime());
createCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
createCalendarEventDTO.setJoinUserIds(Arrays.asList(interviewInfo.getInterviewerId()));
createCalendarEventDTO.setSummary(generateInterviewTitle(interviewInfo.getPartnerLineId()));
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
if (userCalendarEvent == null) {
throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
}
record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
record.setFeishuScheduleId(userCalendarEvent.getEventId());
}
record.setId(Long.valueOf(request.getInterviewPlanId())); record.setId(Long.valueOf(request.getInterviewPlanId()));
record.setStartTime(Convert.toDate(request.getNewStartBookingTime())); record.setStartTime(Convert.toDate(request.getNewStartBookingTime()));
record.setEndTime(Convert.toDate(request.getNewEndBookingTime())); record.setEndTime(Convert.toDate(request.getNewEndBookingTime()));
record.setUpdateTime(new Date()); record.setUpdateTime(new Date());
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record); hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
//更新面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(request.getInterviewPlanId()));
hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId());
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
} }
@Override @Override
@@ -461,64 +493,38 @@ public class InterviewServiceImpl implements InterviewService {
if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
} }
//更新面试信息 rejectInterviewAndSuspendLine(Long.parseLong(interviewVO.getInterviewId()),Long.parseLong(request.getInterviewPlanId()),request.getCertifyFile());
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId()));
hyPartnerInterviewDO.setDeleted(true);
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewDO.setSummary(request.getReason());
hyPartnerInterviewDO.setCertifyFile(request.getCertifyFile());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//更新面试计划信息
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setId(Long.valueOf(request.getInterviewPlanId()));
hyPartnerInterviewPlanDO.setDeleted(true);
hyPartnerInterviewPlanDO.setUpdateTime(new Date());
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
//更新线索状态 //更新线索状态
HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO(); HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO();
hyPartnerLineDO.setId(Long.valueOf(request.getInterviewPlanId())); hyPartnerLineDO.setId(interviewVO.getPartnerLineId());
hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode()); hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode());
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode()); hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode());
hyPartnerLineDO.setUpdateTime(new Date()); hyPartnerLineDO.setUpdateTime(new Date());
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO);
} }
@Override // @Override
@Transactional // @Transactional
public void rejectInterview(RejectInterviewReq request) throws ApiException { // public void rejectInterview(RejectInterviewReq request) throws ApiException {
//查询面试计划信息 //查询面试计划信息
InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); // InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试计划不存在,抛出异常 // //如果面试计划不存在,抛出异常
if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { // if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); // throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
} // }
//更新面试信息 //
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); // rejectInterviewAndSuspendLine(Long.parseLong(request.getInterviewId()),Long.parseLong(request.getInterviewPlanId()),request.getCertifyFile())
hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId())); // //更新线索状态
hyPartnerInterviewDO.setDeleted(true); // CloseFollowRequest closeFollowRequest = new CloseFollowRequest();
hyPartnerInterviewDO.setUpdateTime(new Date()); // closeFollowRequest.setRejectPublicReason(request.getRejectPublicReason());
hyPartnerInterviewDO.setCertifyFile(request.getCertifyFile()); // closeFollowRequest.setRejectRealReason(request.getRejectRealReason());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); // closeFollowRequest.setLineId(Long.valueOf(request.getLineId()));
//更新面试计划信息 // closeFollowRequest.setType("reject");
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); // if(StringUtils.isNotEmpty(request.getCertifyFile())){
hyPartnerInterviewPlanDO.setId(Long.valueOf(request.getInterviewPlanId())); // closeFollowRequest.setCertifyFile(Arrays.asList(request.getCertifyFile().split(",")));
hyPartnerInterviewPlanDO.setDeleted(true); // }
hyPartnerInterviewPlanDO.setUpdateTime(new Date()); // hyPartnerLineInfoService.closeOrPassFollow(request.getOperatorId(),closeFollowRequest);
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); // }
//更新线索状态
CloseFollowRequest closeFollowRequest = new CloseFollowRequest();
closeFollowRequest.setRejectPublicReason(request.getRejectPublicReason());
closeFollowRequest.setRejectRealReason(request.getRejectRealReason());
closeFollowRequest.setLineId(Long.valueOf(request.getLineId()));
closeFollowRequest.setType("reject");
if(StringUtils.isNotEmpty(request.getCertifyFile())){
closeFollowRequest.setCertifyFile(Arrays.asList(request.getCertifyFile().split(",")));
}
hyPartnerLineInfoService.closeOrPassFollow(request.getOperatorId(),closeFollowRequest);
}
public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime){ public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime){
//"您有一个【面试预约申请】待处理预约人【姓名】手机号【13xxxxxxxxx】预约面试时间【YYYY年MM月DD日 hh:mm】请及时处理】" //"您有一个【面试预约申请】待处理预约人【姓名】手机号【13xxxxxxxxx】预约面试时间【YYYY年MM月DD日 hh:mm】请及时处理】"
@@ -556,4 +562,24 @@ public class InterviewServiceImpl implements InterviewService {
return "意向 "+partnerBaseInfo.getUsername()+" 线上面试"; return "意向 "+partnerBaseInfo.getUsername()+" 线上面试";
} }
//拒绝面试更新相关信息
@Override
public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile){
//更新面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setId(iterviewId);
hyPartnerInterviewDO.setDeleted(true);
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_7.getCode()));
hyPartnerInterviewDO.setCertifyFile(certifyFile);
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//更新面试计划信息
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setId(interviewPlanId);
hyPartnerInterviewPlanDO.setDeleted(true);
hyPartnerInterviewPlanDO.setUpdateTime(new Date());
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
}
} }

View File

@@ -1,6 +1,7 @@
package com.cool.store.service.impl; package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.constants.RedisConstant;
import com.cool.store.dao.HyOpenAreaInfoDAO; import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO; import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.entity.HyOpenAreaInfoDO; import com.cool.store.entity.HyOpenAreaInfoDO;
@@ -9,11 +10,14 @@ import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.request.PartnerUserInfoRequest; import com.cool.store.request.PartnerUserInfoRequest;
import com.cool.store.request.PartnerWantShopInfoRequest;
import com.cool.store.service.HyPartnerBaseInfoService; import com.cool.store.service.HyPartnerBaseInfoService;
import com.cool.store.service.HyPartnerLineInfoService; import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.service.PartnerUserInfoService; import com.cool.store.service.PartnerUserInfoService;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.vo.ApplyBaseInfoVO; import com.cool.store.vo.ApplyBaseInfoVO;
import com.cool.store.vo.InviteCodeDetailVO; import com.cool.store.vo.InviteCodeDetailVO;
import com.cool.store.vo.PartnerIntentInfoVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -21,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.MessageFormat;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -39,7 +44,8 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
@Resource @Resource
HyOpenAreaInfoDAO hyOpenAreaInfoDAO; HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Resource
private RedisUtilPool redisUtilPool;
@Override @Override
public HyPartnerUserInfoDO selectByPartnerId(String partnerId) { public HyPartnerUserInfoDO selectByPartnerId(String partnerId) {
@@ -106,6 +112,14 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
applyBaseInfoVO.setProvinceHasOpenArea(true); applyBaseInfoVO.setProvinceHasOpenArea(true);
} }
applyBaseInfoVO.setLineStatus(hyPartnerLineInfoDO.getLineStatus()); applyBaseInfoVO.setLineStatus(hyPartnerLineInfoDO.getLineStatus());
String cacheKey = MessageFormat.format(RedisConstant.PARTNER_WANTSHOPINFO_CACHE_KEY, partnerUserInfoRequest.getPartnerId(), hyPartnerLineInfoDO.getId());
if (StringUtils.isNotBlank(redisUtilPool.getString(cacheKey))) {
PartnerWantShopInfoRequest request = JSONObject.parseObject(redisUtilPool.getString(cacheKey), PartnerWantShopInfoRequest.class);
if(!partnerUserInfoRequest.getWantShopArea().equals(request.getWantShopArea())){
request.setWantShopArea(partnerUserInfoRequest.getWantShopArea());
}
redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS);
}
return applyBaseInfoVO; return applyBaseInfoVO;
} }

View File

@@ -1,6 +1,7 @@
package com.cool.store.service.impl; package com.cool.store.service.impl;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.service.WorkFlowService; import com.cool.store.service.WorkFlowService;
@@ -39,7 +40,7 @@ public class WorkFlowServiceImpl implements WorkFlowService{
} }
@Override @Override
public void transferInvestmentManager(WorkflowStageEnum workflowStage, TransferInvestmentManagerRequest request) { public void transferInvestmentManager(WorkflowStageEnum workflowStage, TransferInvestmentManagerRequest request) throws ApiException {
getWorkflowService(workflowStage).transferInvestmentManager(request); getWorkflowService(workflowStage).transferInvestmentManager(request);
} }
} }

View File

@@ -1,11 +1,33 @@
package com.cool.store.service.impl.workflow; package com.cool.store.service.impl.workflow;
import cn.hutool.core.date.DateUtil;
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.RoomStatus;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.EntrustOthersReq;
import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.service.InterviewService;
import com.cool.store.vo.interview.InterviewVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
* @FileName: InterviewWorkFlowService * @FileName: InterviewWorkFlowService
@@ -16,18 +38,62 @@ import org.springframework.stereotype.Service;
@Service @Service
public class InterviewWorkFlowService extends WorkFlowBaseService { public class InterviewWorkFlowService extends WorkFlowBaseService {
@Autowired
private HyPartnerInterviewMapper hyPartnerInterviewMapper;
@Autowired
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
@Autowired
private InterviewService interviewService;
@Autowired
private ISVHttpRequest isvHttpRequest;
@Override @Override
public WorkflowStageEnum getWorkFlowStage() { public WorkflowStageEnum getWorkFlowStage() {
return WorkflowStageEnum.RESERVATION; return WorkflowStageEnum.RESERVATION;
} }
@Override @Override
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) throws ServiceException{
log.info("面试结束~"); Long lineId = request.getLineId();
//根据线索id查询面试信息
List<HyPartnerInterviewDO> interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId));
if (CollectionUtils.isEmpty(interviewBaseInfos)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null);
} }
@Override @Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) { public void transferInvestmentManager(TransferInvestmentManagerRequest request) throws ServiceException, ApiException {
log.info("转让招商经理~"); Long lineId = request.getLineId();
//根据线索id查询面试信息
List<HyPartnerInterviewDO> interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId));
if (CollectionUtils.isEmpty(interviewBaseInfos)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(String.valueOf(interviewBaseInfo.getInterviewPlanId()));
if(null == interviewInfo){
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
Integer status = interviewInfo.getStatus();
Date now = new Date();
if (status == Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()) ||
(interviewInfo.getRoomStatus()!=null && String.valueOf(RoomStatus.OPEN.getCode()).equals(interviewInfo.getRoomStatus())) ||
(DateUtil.compare(DateUtil.parse(interviewInfo.getStartTime()), now) <= 0
&& DateUtil.compare(DateUtil.parse(interviewInfo.getEndTime()), now) >= 0)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_STATUS_ERROR);
} else if (status == Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode())
&&(interviewInfo.getRoomStatus()!=null && String.valueOf(RoomStatus.WAIT_FOR_OPEN.getCode()).equals(interviewInfo.getRoomStatus()))
&& DateUtil.compare(DateUtil.parse(interviewInfo.getStartTime()), now) < 0) {
EntrustOthersReq entrustOthersReq = new EntrustOthersReq();
entrustOthersReq.setInterviewPlanId(interviewInfo.getInterviewPlanId());
entrustOthersReq.setNewInterviewerId(interviewInfo.getInterviewerId());
entrustOthersReq.setPartnerLineId(interviewInfo.getPartnerLineId());
interviewService.entrustOthers(entrustOthersReq);
}
} }
} }

View File

@@ -1,6 +1,7 @@
package com.cool.store.service.impl.workflow; package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.request.TransferInvestmentManagerRequest;
@@ -28,5 +29,5 @@ public abstract class WorkFlowBaseService {
* 转让招商经理 * 转让招商经理
* @param request * @param request
*/ */
public abstract void transferInvestmentManager(TransferInvestmentManagerRequest request); public abstract void transferInvestmentManager(TransferInvestmentManagerRequest request) throws ApiException;
} }

View File

@@ -27,7 +27,7 @@ public class CorsFilter implements Filter {
response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS, GET, DELETE, PUT"); response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS, GET, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "36000"); response.setHeader("Access-Control-Max-Age", "36000");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Origin, Authorization, content-type, XMLHttpRequest, Authorization, User-Agent, Cookie, accessToken"); response.setHeader("Access-Control-Allow-Headers", "*");
if (reqs.getMethod().equals("OPTIONS") || reqs.getMethod().equals("HEAD")) { if (reqs.getMethod().equals("OPTIONS") || reqs.getMethod().equals("HEAD")) {
response.setStatus(HttpStatus.HTTP_OK); response.setStatus(HttpStatus.HTTP_OK);
return; return;

View File

@@ -88,10 +88,10 @@ public class InterviewController {
return ResponseResult.success(); return ResponseResult.success();
} }
@PostMapping("/reject") // @PostMapping("/reject")
@ApiOperation("拒绝面试") // @ApiOperation("拒绝面试")
public ResponseResult reInterview(@RequestBody RejectInterviewReq request) throws ApiException { // public ResponseResult reInterview(@RequestBody RejectInterviewReq request) throws ApiException {
interviewService.rejectInterview(request); // interviewService.rejectInterview(request);
return ResponseResult.success(); // return ResponseResult.success();
} // }
} }

View File

@@ -118,7 +118,7 @@ public class PartnerController {
@PostMapping(path = "/submitIndustryCognitionInfo") @PostMapping(path = "/submitIndustryCognitionInfo")
@ApiOperation("提意向书行业认知") @ApiOperation("提意向书行业认知")
public ResponseResult<String> submitIndustryCognitionInfo(@RequestBody IndustryCognitionInfoRequest request){ public ResponseResult<Boolean> submitIndustryCognitionInfo(@RequestBody IndustryCognitionInfoRequest request){
return ResponseResult.success(hyPartnerIntentInfoService.submitIndustryCognitionInfo(request)); return ResponseResult.success(hyPartnerIntentInfoService.submitIndustryCognitionInfo(request));
} }