diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 7374ef0f7..1a8eb108f 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -63,8 +63,8 @@ public enum ErrorCodeEnum { PARTNER_BASE_INFO_NOT_EXIST(500009, "加盟商信息不存在!", null), LINE_STATUS_NOT_ALLOW_OPERATE(500010, "当前线索状态不允许该操作!", null), TASK_STATUS_NOT_ALLOW_OPERATE(500011, "当前任务状态不允许该操作!", null), + NO_TRANSFER_REQUIRED(500013, "招商经理现有私海线索无需转让!", null), DATELINE_BEFORE_NOW(500012, "截止时间不能早于当前时间!", null), - NO_TRANSFER_REQUIRED(500013, "招商经理现有私海线索无需转让,请检查后重试!", null), NO_BATCH_TRANSFER_REQUIRED(500014, "已选线索包含此招商经理现有私海线索,无需转让,请检查后重试!", null), PARTNER_MOBILE_EXIST(500010, "手机号码已存在,请核实!", null), @@ -83,6 +83,8 @@ public enum ErrorCodeEnum { INTERVIEW_LINE_ID_IS_NULL(1021113, "线索id为空!", null), INTERVIEW_INTERVIEW_TIME_IS_UNUSABLE(1021114, "当前预约时间不可用,请和线索用户协商其他时间后确定预约时间\n面试人:{0} 手机号:{1}", null), INTERVIEW_PARTNER_NOT_EXIST(1021115, "线索下的加盟商不存在!", null), + INTERVIEW_STATUS_NOT_TRANSFER(1021116, "当前面试状态不允许转让! 面试状态:{}", null), + ROOM_STATUS_ERROR(10211156, "当前面试房间状态不允许进行该操作!", null), MOBILE_APP_NOT_ONLINE_ERROR(10211157, "呼叫失败,请确认呼出号码正确并检查是否安装并打开呼叫插件", null), CALL_RECORD_NOT_EXIST_ERROR(10211158, "通话记录不存在!", null), diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/BatchTransferVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/BatchTransferVO.java new file mode 100644 index 000000000..9586fe670 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/BatchTransferVO.java @@ -0,0 +1,18 @@ +package com.cool.store.vo; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/8/30 15:16 + * @Version 1.0 + */ +@Data +public class BatchTransferVO { + + private String partnerUserName; + + private String partnerMobile; + + private String errorMessage; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java index d0d3edaa0..1f7fdc7ef 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java @@ -57,7 +57,7 @@ public interface HyPartnerLineInfoService { */ Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request,Boolean sendFlag) throws ApiException; - Boolean batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException; + List batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException; /** * 分配招商经理 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index dc1f1a220..cd1f7c6ba 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -177,8 +177,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { if (request.getUserId().equals(hyPartnerLineInfoDO.getInvestmentManager())){ throw new ServiceException(ErrorCodeEnum.NO_TRANSFER_REQUIRED); } - hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId())); - + //校验 合格资格面试阶段 面试状态已开始 不允许转让 + if(WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())&&WorkflowStatusEnum.INTERVIEW_3.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())){ + throw new ServiceException(ErrorCodeEnum.INTERVIEW_STATUS_NOT_TRANSFER,WorkflowStatusEnum.INTERVIEW_3.getMessage()); + } List userIdList = new ArrayList<>(); userIdList.add(request.getUserId()); if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){ @@ -193,6 +195,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { || (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())) && !WorkflowStatusEnum.RESERVATION_0.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) { workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request); } + //转让招商经理 + hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId())); //发送飞书工作通知 if (sendFlag){ String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7); @@ -224,30 +228,47 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } @Override - public Boolean batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException { + public List batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException { if (CollectionUtils.isEmpty(request.getLineIds())||StringUtils.isEmpty(request.getUserId())){ throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } - int num = request.getLineIds().size(); - List hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), request.getUserId()); - //如果选中的线索中有线索招商经理已经是被装让的招商经理,则不允许批量操作 - if (CollectionUtils.isNotEmpty(hyPartnerLineInfoList)){ - throw new ServiceException(ErrorCodeEnum.NO_BATCH_TRANSFER_REQUIRED); - } + List result = new ArrayList<>(); + List hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), null); + Map partnerMap = hyPartnerLineInfoList.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, HyPartnerLineInfoDO::getPartnerId)); + List partnerIdList = hyPartnerLineInfoList.stream().filter(x->StringUtils.isNotEmpty(x.getPartnerId())) + .map(HyPartnerLineInfoDO::getPartnerId).distinct().collect(Collectors.toList()); + List hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList); + Map partnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, x -> x)); + List successLineIds = new ArrayList<>(); for (Long lineId:request.getLineIds()) { TransferInvestmentManagerRequest transferInvestmentManagerRequest = new TransferInvestmentManagerRequest(); transferInvestmentManagerRequest.setUserId(request.getUserId()); transferInvestmentManagerRequest.setLineId(lineId); try { - this.transferInvestmentManager(user,transferInvestmentManagerRequest,num<=1?true:false); - } catch (ApiException e) { + this.transferInvestmentManager(user,transferInvestmentManagerRequest,Boolean.FALSE); + successLineIds.add(lineId); + } catch (Exception e) { log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{}",lineId); + HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(lineId)); + BatchTransferVO batchTransferVO = new BatchTransferVO(); + batchTransferVO.setErrorMessage(e.getMessage()); + batchTransferVO.setPartnerMobile(hyPartnerUserInfoDO.getMobile()); + batchTransferVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername()); + result.add(batchTransferVO); } } - if (num>1){ - noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),num,DateUtil.format(new Date(),CoolDateUtils.DATE_FORMAT_SEC_7)); + try { + if (successLineIds.size()>1){ + noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),successLineIds.size(),DateUtil.format(new Date(),CoolDateUtils.DATE_FORMAT_SEC_7)); + }else if (successLineIds.size()==1){ + String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7); + HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(successLineIds.get(0))); + noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile()); + } + } catch (Exception e) { + log.info("batchTransferInvestmentManager_error:{}",e.getMessage()); } - return Boolean.TRUE; + return result; } @Override diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java index 9f655c7fe..8cfab7848 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java @@ -201,7 +201,7 @@ public class DeskController { @PostMapping(path = "/batchTransferInvestmentManager") @ApiOperation("批量转让招商经理") - public ResponseResult batchTransferInvestmentManager(@RequestBody BatchTransferInvestmentManagerRequest request) throws ApiException { + public ResponseResult> batchTransferInvestmentManager(@RequestBody BatchTransferInvestmentManagerRequest request) throws ApiException { return ResponseResult.success(hyPartnerLineInfoService.batchTransferInvestmentManager(CurrentUserHolder.getUser(),request )); } diff --git a/coolstore-partner-webb/src/main/resources/bootstrap.properties b/coolstore-partner-webb/src/main/resources/bootstrap.properties index ed2256673..e8cb5a145 100644 --- a/coolstore-partner-webb/src/main/resources/bootstrap.properties +++ b/coolstore-partner-webb/src/main/resources/bootstrap.properties @@ -1,5 +1,5 @@ spring.application.name=hsay-partner-webb -spring.profiles.active=@profileActive@ +spring.profiles.active=dev server.port=31000 server.servlet.context-path=/partner/pc diff --git a/coolstore-partner-webc/src/main/resources/bootstrap.properties b/coolstore-partner-webc/src/main/resources/bootstrap.properties index e54d1e5b3..4317ac307 100644 --- a/coolstore-partner-webc/src/main/resources/bootstrap.properties +++ b/coolstore-partner-webc/src/main/resources/bootstrap.properties @@ -1,5 +1,5 @@ spring.application.name=hsay-partner-webc -spring.profiles.active=@profileActive@ +spring.profiles.active=dev server.port=30900 server.servlet.context-path=/partner/mini/program