diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java index 8e42e4cb4..d209d59ef 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java @@ -57,6 +57,7 @@ public class HyPartnerLineInfoDAO { } public int updateByPrimaryKeySelective(HyPartnerLineInfoDO hyPartnerLineInfoDO){ + hyPartnerLineInfoDO.setUpdateTime(new Date()); return hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java index 90a8ee108..7670ff35e 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java @@ -28,4 +28,7 @@ public interface HyPartnerUserChannelMapper { List getAllUserChannel(); List getUserChannelByIds(List userChannelIds); + + HyPartnerUserChannelDO selectByChannel(@Param("channelId") Long channelId,@Param("channelName") String channelName); + } \ 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 22ae26950..7fb492a2a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -335,22 +335,22 @@ and hpli.investment_manager = #{userId} - + order by hpli.create_time - + order by hpli.update_time - + order by hpli.create_time - + order by hpli.update_time - + order by hpli.create_time - + order by hpli.update_time diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 6ee410e29..f6af2ba0b 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -918,6 +918,11 @@ AND hpuinfo.user_channel_id is null + + + #{userId} + + #{developmentManager} diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserChannelMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserChannelMapper.xml index c0d72e331..25529e754 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserChannelMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserChannelMapper.xml @@ -105,4 +105,10 @@ + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java index 5a008e469..3306bb895 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java @@ -38,8 +38,8 @@ public class CreateQualifyVerifyReq { @ApiModelProperty(value = "加盟商类型", required = true) private KeyText fraType; - @ApiModelProperty(value = "加盟类型", required = true, allowableValues = "1: {StandardStore: 4.0标准版店铺} 2: {LiteEditionStore: 轻享版店铺}") - private KeyText franchiseType; + @ApiModelProperty(value = "加盟类型", required = true, allowableValues = "1: {HSAY: 沪上阿姨} 2: {HSLIGHT: 沪上阿姨(轻享)}") + private KeyText innerbrandtype; @ApiModelProperty(value = "请求来源", required = true) private KeyText fraSource; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/RpcCreateQualifyVerifyReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/RpcCreateQualifyVerifyReq.java index 5e02098e9..8fa4d399d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/RpcCreateQualifyVerifyReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/RpcCreateQualifyVerifyReq.java @@ -61,8 +61,8 @@ public class RpcCreateQualifyVerifyReq { @ApiModelProperty(value = "加盟商类型", required = true) private KeyText fraType; - @ApiModelProperty(value = "加盟类型", required = true, allowableValues = "1: {StandardStore: 4.0标准版店铺} 2: {LiteEditionStore: 轻享版店铺}") - private KeyText franchiseType; + @ApiModelProperty(value = "加盟类型", required = true, allowableValues = "1: {HSAY: 沪上阿姨} 2: {HSLIGHT: 沪上阿姨(轻享)}") + private KeyText innerbrandtype; @ApiModelProperty(value = "意向人email", required = true) private String intendedEmail; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java index 040daafee..dc4f5b24d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java @@ -127,7 +127,7 @@ public class EcSyncServiceImpl implements EcSyncService { UserSourceResponse userSourceResponse = JSONObject.parseObject(s, UserSourceResponse.class); for (UserSourceResponse.ChannelSource channelSource : userSourceResponse.getData()) { Long id = channelSource.getId(); - HyPartnerUserChannelDO selectByChannel = hyPartnerUserChannelMapper.selectByChannelId(id); + HyPartnerUserChannelDO selectByChannel = hyPartnerUserChannelMapper.selectByChannel(id,channelSource.getName()); HyPartnerUserChannelDO hyPartnerUserChannel = new HyPartnerUserChannelDO(); hyPartnerUserChannel.setChannelId(channelSource.getId()).setChannelName(channelSource.getName()); //有就更新 没有插入 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 c3db27c96..8e7d50dd2 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 @@ -533,6 +533,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { //作废待完成&已逾期的任务 hyFollowTaskDAO.cancelUndoFollowTask(closeFollowRequest.getLineId()); } + hyPartnerLineInfoDO.setUpdateTime(new Date()); + hyPartnerLineInfoDO.setUpdateUserId(user.getUserId()); hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); @@ -986,9 +988,18 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { public LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest request, Boolean allPrivateSeaFlag) { request.setPageNum((int) Math.ceil((double) request.getPageNum() / request.getPageSize())); //allPrivateSeaFlag 为true的时候 查询全量私海 + // V1.5.2 修改allPrivateSeaFlag 为False 查询我的线索 为true时根据是否是超管或者主管查询数据 UserPositionAndUserScopeDTO userIdsByScope = new UserPositionAndUserScopeDTO(); - if (!allPrivateSeaFlag) { - userIdsByScope = enterpriseUserService.getUserIdsByScope(userId); + //如果是查询团队线索 判断是否是超管 不是超管 判断是是否是主管 + if (allPrivateSeaFlag){ + //如果不是超管 查询个人数据或者主管数据 如果是超管 查询所有数据 + if (!isSuperAdmin(userId)){ + userIdsByScope = enterpriseUserService.getUserIdsByScope(userId); + } + }else { + //如果是查询我的线索 只需要查询招商经理或者开发经理是我的线索 + userIdsByScope.setDevelopmentUserIds(Arrays.asList(userId)); + userIdsByScope.setInvestmentUserIds(Arrays.asList(userId)); } String intentAreaName = getIntentAreaName(request.getIntentAreaId()); Integer pageNum = request.getPageNum(); @@ -1004,7 +1015,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } if (PageTurnTypeEnum.NEXT.getText().equals(request.getPageTurn())) { //下一页 - return first.get() +1>linePageInfoVo.size()?null:linePageInfoVo.get(first.get() +1); + return first.get() +1>=linePageInfoVo.size()?null:linePageInfoVo.get(first.get() +1); } if (PageTurnTypeEnum.PREVIOUS.getText().equals(request.getPageTurn())) { //上一页 @@ -1029,7 +1040,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } if (PageTurnTypeEnum.NEXT.getText().equals(lineRequest.getPageTurn())) { //下一页 - return first.get() +1>linePageInfoVoList.size()?null:linePageInfoVoList.get(first.get() +1); + return first.get() +1>=linePageInfoVoList.size()?null:linePageInfoVoList.get(first.get() +1); } if (PageTurnTypeEnum.PREVIOUS.getText().equals(lineRequest.getPageTurn())) { //上一页 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 688004144..029562dda 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 @@ -78,6 +78,9 @@ public class InterviewServiceImpl implements InterviewService { @Autowired private HyPartnerBaseInfoMapper hyPartnerBaseInfoMapper; + @Autowired + private HyInterviewDAO hyInterviewDAO; + @Autowired private EnterpriseUserService enterpriseUserService; // @Autowired @@ -264,11 +267,6 @@ 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) { @@ -277,6 +275,16 @@ public class InterviewServiceImpl implements InterviewService { if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){ throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); } + + //是否需要直接开始面试 + //需要在同意预约操作以后,面试变为待开始后修改面试时间才需要直接打开面试 + Date now = new Date(); + boolean whetherBeginInterview = false; + DateTime interviewStartTime = DateUtil.offsetMinute(DateUtil.parseDateTime(request.getNewStartBookingTime()), -5); + if (interviewStartTime.isBeforeOrEquals(now) && interviewInfo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()))) { + whetherBeginInterview = true; + } + HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO(); //1.5.2 后不再使用飞书日程 // //被委托或者因转让导致的面试官变更的线索不操作日程 @@ -316,27 +324,35 @@ public class InterviewServiceImpl implements InterviewService { record.setStartTime(Convert.toDate(request.getNewStartBookingTime())); record.setInterviewDate(Convert.toDate(request.getNewStartBookingTime())); record.setEndTime(Convert.toDate(request.getNewEndBookingTime())); - record.setUpdateTime(new Date()); + record.setUpdateTime(now); + //是否要将面试修改为已开始阶段 + if (whetherBeginInterview) { + record.setRoomStatus(RoomStatus.OPEN.getCode()); + } hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record); //更新面试信息 HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(request.getInterviewPlanId())); hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId()); - hyPartnerInterviewDO.setUpdateTime(new Date()); + hyPartnerInterviewDO.setUpdateTime(now); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); + //是否要将线索子流程状态修改为面试已开始阶段 + if (whetherBeginInterview) { + hyInterviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3); + } //如果是待面试阶段修改面试时间需要发短信通知 if (interviewInfo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()))) { HyPartnerBaseInfoDO partnerBaseInfo = hyPartnerBaseInfoMapper.getByPartnerLineId(interviewInfo.getPartnerLineId()); //异步发送短信给加盟商 - eventCenterHttpRequest.sendSmsVariable(partnerBaseInfo.getMobile(), SMSMsgEnum.INTERVIEW_APPOINTMENT_PASS,DateUtil.format(DateUtil.parse(interviewInfo.getStartTime()), DatePattern.NORM_DATETIME_MINUTE_PATTERN),wechatMiniAppService.getMiniAppUrl()); + eventCenterHttpRequest.sendSmsVariable(partnerBaseInfo.getMobile(), SMSMsgEnum.INTERVIEW_APPOINTMENT_PASS,DateUtil.format(record.getStartTime(), DatePattern.NORM_DATETIME_MINUTE_PATTERN),wechatMiniAppService.getMiniAppUrl()); } //记录日志 LoginUserInfo operator = CurrentUserHolder.getUser(); ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()) - .operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .operateTime(DateUtil.format(now, CoolDateUtils.DATE_FORMAT_SEC)) .beforeInterviewTime(interviewInfo.getStartTime()).afterInterviewTime(request.getNewStartBookingTime()).build(); logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.MODIFY_INTERVIEW_TIME,log); } @@ -450,9 +466,9 @@ public class InterviewServiceImpl implements InterviewService { throw new ApiException(ErrorCodeEnum.INTERVIEW_LINE_ID_IS_NULL); } //如果开始时间小于当前时间需要报错 - if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){ - throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR); - } +// if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){ +// throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR); +// } HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId()); hyPartnerInterviewPlanDO.setDeleted(false); @@ -538,7 +554,6 @@ public class InterviewServiceImpl implements InterviewService { @Override @Transactional public void approveAppointment(ApproveAppointmentReq request) throws ApiException { - //查询面试计划信息 InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); //如果面试计划不存在,抛出异常 @@ -810,10 +825,6 @@ public class InterviewServiceImpl implements InterviewService { if(request.getPartnerLineId() == null || request.getPartnerLineId()<=0){ throw new ApiException(ErrorCodeEnum.INTERVIEW_LINE_ID_IS_NULL); } - //如果开始时间小于当前时间需要报错 - if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){ - throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR); - } HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId()); hyPartnerInterviewPlanDO.setDeleted(false); @@ -825,8 +836,15 @@ public class InterviewServiceImpl implements InterviewService { if(StringUtils.isEmpty(interviewrId)){ interviewrId = getInterviewerByPartner(request.getPartnerId(),String.valueOf(request.getPartnerLineId())); } - //1.创建面试计划 Date now = new Date(); + //主动预约时是否是当前时间段的面试 + boolean whetherBeginInterview = false; + DateTime interviewStartTime = DateUtil.offsetMinute(DateUtil.parseDateTime(request.getStartBookingTime()), -5); + if (interviewStartTime.isBeforeOrEquals(now)) { + whetherBeginInterview = true; + } + + //1.创建面试计划 HyPartnerInterviewPlanDO interviewPlanDO = new HyPartnerInterviewPlanDO(); String startBookingTime = request.getStartBookingTime(); String startDate = startBookingTime.substring(0, 10); @@ -842,13 +860,23 @@ public class InterviewServiceImpl implements InterviewService { interviewPlanDO.setApplicationApproved(1); //1.2 生成房间号 interviewPlanDO.setRoomId(StringUtil.generateRoomId(startBookingTime)); - interviewPlanDO.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode()); + //1.3 如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段 + if (whetherBeginInterview) { + interviewPlanDO.setRoomStatus(RoomStatus.OPEN.getCode()); + } else { + interviewPlanDO.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode()); + } hyPartnerInterviewPlanMapper.insertSelective(interviewPlanDO); //2.创建面试信息 HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); hyPartnerInterviewDO.setInterviewPlanId(interviewPlanDO.getId()); - hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode())); + //2.1 如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段 + if (whetherBeginInterview) { + hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode())); + } else { + hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode())); + } hyPartnerInterviewDO.setPartnerLineId(request.getPartnerLineId()); hyPartnerInterviewDO.setPartnerId(request.getPartnerId()); hyPartnerInterviewDO.setInterviewer(interviewrId); @@ -863,7 +891,12 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerLineDO.setId(request.getPartnerLineId()); hyPartnerLineDO.setUpdateTime(now); hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.INTERVIEW.getCode()); - hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode()); + //3.1 如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段 + if (whetherBeginInterview) { + hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_3.getCode()); + } else { + hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode()); + } hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); //4. 异步发送短信给加盟商 diff --git a/coolstore-partner-webb/pom.xml b/coolstore-partner-webb/pom.xml index 438aed42e..b97685bc5 100644 --- a/coolstore-partner-webb/pom.xml +++ b/coolstore-partner-webb/pom.xml @@ -43,6 +43,11 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config + + + com.github.danielwegener + logback-kafka-appender + diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java index 701ab6839..25e0ade9d 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java @@ -27,6 +27,7 @@ import com.cool.store.vo.cuser.IdentityCardInfoVO; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -67,6 +68,15 @@ public class TestController { @Autowired private WechatMiniAppService wechatMiniAppService; + @Value("${logging.config}") + private String loggingConfig; + + @GetMapping("/log/config") + public String testLoggingConfig() { + log.debug("Test"); + return loggingConfig; + } + @PostMapping("/post") public ResponseResult get(@RequestBody List testRequestList){ log.info(JSONObject.toJSONString(testRequestList)); diff --git a/coolstore-partner-webc/pom.xml b/coolstore-partner-webc/pom.xml index ff2e9d8fc..b0c30e7de 100644 --- a/coolstore-partner-webc/pom.xml +++ b/coolstore-partner-webc/pom.xml @@ -43,6 +43,11 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config + + + com.github.danielwegener + logback-kafka-appender + diff --git a/pom.xml b/pom.xml index 0f1be8e9e..0844a3c91 100644 --- a/pom.xml +++ b/pom.xml @@ -229,6 +229,12 @@ poi-ooxml 3.17 + + + com.github.danielwegener + logback-kafka-appender + 0.2.0-RC2 +