Merge remote-tracking branch 'origin/dev/feat/partner1.3_20230904' into dev/feat/partner1.3_20230904

This commit is contained in:
feng.li
2023-08-31 17:23:58 +08:00
8 changed files with 63 additions and 19 deletions

View File

@@ -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),

View File

@@ -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;
}

View File

@@ -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<BatchTransferVO> batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException;
/**
* 分配招商经理

View File

@@ -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<String> 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<BatchTransferVO> 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<HyPartnerLineInfoDO> hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), request.getUserId());
//如果选中的线索中有线索招商经理已经是被装让的招商经理,则不允许批量操作
if (CollectionUtils.isNotEmpty(hyPartnerLineInfoList)){
throw new ServiceException(ErrorCodeEnum.NO_BATCH_TRANSFER_REQUIRED);
}
List<BatchTransferVO> result = new ArrayList<>();
List<HyPartnerLineInfoDO> hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), null);
Map<Long, String> partnerMap = hyPartnerLineInfoList.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, HyPartnerLineInfoDO::getPartnerId));
List<String> partnerIdList = hyPartnerLineInfoList.stream().filter(x->StringUtils.isNotEmpty(x.getPartnerId()))
.map(HyPartnerLineInfoDO::getPartnerId).distinct().collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList);
Map<String, HyPartnerUserInfoDO> partnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, x -> x));
List<Long> 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

View File

@@ -71,6 +71,9 @@ public class TimeSlotGenerator {
//循环打印半小时的时间段
for (int hour = 10; hour < 17; hour++) {
if(hour == 12){
continue;
}
String startTime = String.format("%02d:00", hour);
String endTime = String.format("%02d:30", hour);
//默认空闲

View File

@@ -201,7 +201,7 @@ public class DeskController {
@PostMapping(path = "/batchTransferInvestmentManager")
@ApiOperation("批量转让招商经理")
public ResponseResult<Boolean> batchTransferInvestmentManager(@RequestBody BatchTransferInvestmentManagerRequest request) throws ApiException {
public ResponseResult<List<BatchTransferVO>> batchTransferInvestmentManager(@RequestBody BatchTransferInvestmentManagerRequest request) throws ApiException {
return ResponseResult.success(hyPartnerLineInfoService.batchTransferInvestmentManager(CurrentUserHolder.getUser(),request ));
}

View File

@@ -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

View File

@@ -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