From fb6122c961ad19fd0217732a1e52ca3b87e0210c Mon Sep 17 00:00:00 2001 From: pserimal Date: Sun, 25 Jun 2023 18:28:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9D=A2=E8=AF=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=90=8C=E6=97=B6=E4=BF=AE=E6=94=B9=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E5=AD=90=E6=B5=81=E7=A8=8B=E7=8A=B6=E6=80=81=E5=8F=8A=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=9D=A2=E8=AF=95=E6=88=BF=E9=97=B4=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E9=99=90=E5=88=B6=E9=83=A8=E5=88=86=E9=9D=A2=E8=AF=95=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/dao/HyInterviewDAO.java | 34 +++++++++++++++++++ .../HyPartnerCertificationInfoMapper.java | 8 +++++ .../mapper/HyPartnerInterviewMapper.java | 13 +++++++ .../mapper/HyPartnerInterviewPlanMapper.java | 7 ++++ .../store/mapper/HyPartnerLineInfoMapper.java | 7 ++-- .../HyPartnerCertificationInfoMapper.xml | 12 +++++++ .../mapper/HyPartnerInterviewMapper.xml | 27 ++++++++++++++- .../mapper/HyPartnerInterviewPlanMapper.xml | 7 ++++ .../mapper/HyPartnerLineInfoMapper.xml | 17 ++++++++++ .../store/service/impl/FlowServiceImpl.java | 23 +++++++------ .../service/impl/InterviewServiceImpl.java | 32 ++++++++++++++--- .../impl/PartnerInterviewServiceImpl.java | 12 ++++++- 12 files changed, 180 insertions(+), 19 deletions(-) create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java new file mode 100644 index 000000000..c0ebcce7f --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java @@ -0,0 +1,34 @@ +package com.cool.store.dao; + +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.mapper.HyPartnerInterviewMapper; +import com.cool.store.mapper.HyPartnerLineInfoMapper; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +@Repository +public class HyInterviewDAO { + + @Resource + private HyPartnerInterviewMapper interviewMapper; + + @Resource + private HyPartnerLineInfoMapper lineInfoMapper; + + /** + * 更新面试状态必须使用该方法 + * 需要同步更新面试状态和线索表中的子流程状态 + */ + @Transactional + public void updateInterviewWorkflowStatus(String interviewPlanId, WorkflowStatusEnum status) { + //修改面试状态 + interviewMapper.updateInterviewStatus(interviewPlanId, status.getCode()); + //获取对应的lineId + String lineId = interviewMapper.getLineId(interviewPlanId); + //修改线索表子流程状态 + lineInfoMapper.updateWorkflowStatus(lineId, status.getCode()); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java index ae1c3a009..d0d5cb52a 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java @@ -29,4 +29,12 @@ public interface HyPartnerCertificationInfoMapper { * @return 面试会议 id */ String getInterviewIdByQualifyVerifyId(@Param("qualifyVerifyId") String qualifyVerifyId); + + /** + * 根据资质审核流程 id 获取面试会议 id + * @param qualifyVerifyId 资质审核流程 id + * @return 面试会议计划 id + */ + String getInterviewPlanIdByQualifyVerifyId(String qualifyVerifyId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java index d2ca53cba..8a55371ab 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java @@ -70,4 +70,17 @@ public interface HyPartnerInterviewMapper { */ List getInterviewBaseInfoList(@Param("record") GetInterviewListReq request); void batchUpdateInterviewStatus(@Param("interviewIds") List interviewIdList, @Param("interviewStatus") Integer interviewStatus); + + HyPartnerInterviewDO getInterviewInfoByInterviewPlanId(@Param("interviewPlanId") String interviewPlanId); + + /** + * 修改面试状态 + */ + void updateInterviewStatus(@Param("interviewPlanId") String interviewPlanId, @Param("status") String status); + + /** + * 获取面试对应的线索id + */ + String getLineId(@Param("interviewPlanId") String interviewPlanId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java index 45d95b56f..71280f73f 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java @@ -135,4 +135,11 @@ public interface HyPartnerInterviewPlanMapper { * 修改面试实际开始时间 */ void updateActualStartTime(@Param("id") Long id, @Param("now") String now); + + /** + * 获取面试房间状态 + * @param interviewPlanId + */ + Integer getRoomStatus(@Param("interviewPlanId") String interviewPlanId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index dd6d151dd..666d50413 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -208,8 +208,11 @@ public interface HyPartnerLineInfoMapper { /** * 根据面试计划 id 查询战区 id - * @param interviewPlanId - * @return */ String getAffiliationZoneIdByInterviewPlanId(String interviewPlanId); + + /** + * 修改线索状态 + */ + void updateWorkflowStatus(@Param("lineId") String lineId, @Param("status") String status); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml index 254aaa261..ac4c6dc15 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml @@ -238,4 +238,16 @@ from hy_partner_certification_info where qualify_verify_id = #{qualifyVerifyId} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml index 21f331a51..29edaeaa1 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml @@ -373,7 +373,7 @@ - + + + + + + + + UPDATE hy_partner_interview + SET status = #{status} + WHERE interview_plan_id = #{interviewPlanId} + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 938afccc2..4a6ee975e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -462,4 +462,11 @@ from enterprise_user where user_id = #{userId} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 92b418ef9..53a3c7070 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -562,4 +562,21 @@ and partner_id = #{partner_id} + + + + + UPDATE hy_partner_line_info + SET workflow_status = #{status} + WHERE id = #{lineId} + + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index e808423f2..b9a73f109 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -1,11 +1,11 @@ package com.cool.store.service.impl; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dto.mdm.AccessTokenDTO; import com.cool.store.dto.response.MDMResultDTO; import com.cool.store.entity.*; @@ -81,6 +81,9 @@ public class FlowServiceImpl implements FlowService { @Autowired private OSSServer ossServer; + @Autowired + private HyInterviewDAO interviewDAO; + @Override @Transactional public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException { @@ -155,8 +158,9 @@ public class FlowServiceImpl implements FlowService { throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST); } hyPartnerInterviewDO.setUpdateTime(new Date()); - //更新 - hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_5.getCode())); + //更新面试信息 + //更新面试状态 + interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_5); hyPartnerInterviewDO.setAuthCode(authCode); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); @@ -177,16 +181,16 @@ public class FlowServiceImpl implements FlowService { log.error("MDM回调入参缺失,request{}", JSON.toJSONString(request)); throw new ServiceException("MDM回调错误!"); } - //根据审核流程 id 获取面试会议 id + //根据审核流程 id 获取面试会议相关 id String interviewId = hyPartnerCertificationInfoMapper.getInterviewIdByQualifyVerifyId(request.getInstanceId()); - if (StringUtils.isEmpty(interviewId)) { + String interviewPlanId = hyPartnerCertificationInfoMapper.getInterviewPlanIdByQualifyVerifyId(request.getInstanceId()); + if (StringUtils.isEmpty(interviewPlanId)) { throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST); } - HyPartnerInterviewDO interviewDO = new HyPartnerInterviewDO(); - interviewDO.setId(Long.parseLong(interviewId)); //审核通过 if ("FINISHED".equals(request.getSequenceStatus())) { - interviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_6.getCode())); + //更新面试状态 + interviewDAO.updateInterviewWorkflowStatus(interviewPlanId, WorkflowStatusEnum.INTERVIEW_6); //2. 准备需要的信息 String partnerName = request.getIntendedSigner(); String verifyCity = hyPartnerInterviewMapper.getVerifyCityByInterviewId(interviewId); @@ -207,9 +211,8 @@ public class FlowServiceImpl implements FlowService { genPassLetterAndUpdateDB(partnerName, verifyCity, passDate, interviewId); //审核未通过 } else if ("CANCELED".equals(request.getSequenceStatus())) { - interviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_7.getCode())); + interviewDAO.updateInterviewWorkflowStatus(interviewPlanId, WorkflowStatusEnum.INTERVIEW_7); } - hyPartnerInterviewMapper.updateByPrimaryKeySelective(interviewDO); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index f810c92f6..f052a8aa9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dto.calendar.*; import com.cool.store.dto.message.SendCardMessageDTO; import com.cool.store.dto.partner.EnterInterviewDto; @@ -86,6 +87,9 @@ public class InterviewServiceImpl implements InterviewService { @Autowired private HyPartnerLineInfoService hyPartnerLineInfoService; + @Autowired + private HyInterviewDAO interviewDAO; + @Override public List getInterviewList(GetInterviewListReq request) { List interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request); @@ -134,7 +138,11 @@ public class InterviewServiceImpl implements InterviewService { @Override @Transactional public void entrustOthers(EntrustOthersReq request) throws ApiException { - + //只有房间状态是待开放才可以委托他人 + Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId()); + if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) { + throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); + } InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); //如果面试信息为空,抛出异常 if (interviewInfo == null) { @@ -188,6 +196,11 @@ public class InterviewServiceImpl implements InterviewService { */ @Override public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException { + //只有房间状态是待开放才可以修改时间 + Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId()); + if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) { + throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); + } InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); //如果面试信息为空,抛出异常 if (interviewInfo == null) { @@ -223,7 +236,8 @@ public class InterviewServiceImpl implements InterviewService { //更新面试信息 HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(interviewInfo.getInterviewPlanId())); - hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode())); + interviewDAO.updateInterviewWorkflowStatus(interviewInfo.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_4); +// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode())); hyPartnerInterviewDO.setUpdateTime(now); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); } @@ -239,10 +253,16 @@ public class InterviewServiceImpl implements InterviewService { @Transactional public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) { try { + //如果面试间状态不是已开放,就不让进 + Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(dto.getInterviewPlanId()); + if (!roomStatus.equals(RoomStatus.OPEN.getCode())) { + throw new RuntimeException(); + } HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId())); //1. 将面试状态改为 --> 2已开始 - hyPartnerInterviewDO.setStatus(2); + interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3); +// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode())); //2. 修改加盟商或面试官进入面试时间 //加盟商 if (dto.getUserType().equals(2)) { @@ -392,7 +412,9 @@ public class InterviewServiceImpl implements InterviewService { //更新面试信息 HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId())); - hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_2.getCode())); + //更新面试状态和线索子流程状态 + interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_2); +// hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_2.getCode())); hyPartnerInterviewDO.setUpdateTime(new Date()); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); @@ -400,7 +422,7 @@ public class InterviewServiceImpl implements InterviewService { HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO(); hyPartnerLineDO.setId(request.getPartnerLineId()); hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.INTERVIEW.getCode()); - hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode()); +// hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode()); hyPartnerLineDO.setUpdateTime(new Date()); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); //异步发送短信给加盟商 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java index 18284b7eb..6893d66fd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java @@ -3,6 +3,7 @@ package com.cool.store.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.entity.HyPartnerInterviewPlanDO; @@ -39,6 +40,9 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { @Autowired private HyPartnerInterviewPlanMapper interviewPlanMapper; + @Autowired + private HyInterviewDAO interviewDAO; + @Value("${trtc.sdkAppId}") private Long sdkAppId; @@ -67,10 +71,16 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { @Transactional public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) { try { + //如果面试间状态不是已开放,就不让进 + Integer roomStatus = interviewPlanMapper.getRoomStatus(dto.getInterviewPlanId()); + if (!roomStatus.equals(RoomStatus.OPEN.getCode())) { + throw new RuntimeException(); + } HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId())); //1. 将面试状态改为 --> 2已开始 - hyPartnerInterviewDO.setStatus(2); + interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3); +// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode())); //2. 修改加盟商或面试官进入面试时间 //加盟商 if (dto.getUserType().equals(2)) {