From 027e972482636488b75e64299623fac9f0ded757 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Tue, 7 Nov 2023 22:41:00 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=90=84=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E6=97=B6=E9=97=B4=E6=AE=B5=E9=A2=84=E7=BA=A6=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerInterviewPlanMapper.java | 11 +++ .../mapper/HyPartnerInterviewPlanMapper.xml | 28 ++++++ .../HyPartnerInterviewBookSituation.java | 33 +++++++ .../store/request/GetFreeBusyListReq.java | 2 + .../cool/store/vo/interview/FreeBusyInfo.java | 30 +++++++ .../com/cool/store/service/FeiShuService.java | 5 ++ .../cool/store/service/InterviewService.java | 7 ++ .../store/service/impl/FeiShuServiceImpl.java | 8 ++ .../service/impl/InterviewServiceImpl.java | 88 +++++++++++++++++-- .../store/service/impl/TimeSlotGenerator.java | 52 ++++++++++- .../store/controller/FeiShuController.java | 6 ++ .../store/controller/InterviewController.java | 9 ++ 12 files changed, 273 insertions(+), 6 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java 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 6df52fa5a..6fb122077 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 @@ -1,10 +1,12 @@ package com.cool.store.mapper; +import com.cool.store.dto.calendar.UserFreeBusyInfoDTO; import com.cool.store.dto.message.RemindInterviewMsgDTO; import com.cool.store.dto.partner.AdvanceLineDTO; import com.cool.store.dto.partner.PartnerInterviewInfoDTO; import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO; import com.cool.store.entity.HyInterviewRemindDO; +import com.cool.store.entity.HyPartnerInterviewBookSituation; import com.cool.store.entity.HyPartnerInterviewPlanDO; import com.cool.store.request.GetInterviewListReq; import com.cool.store.vo.EnterpriseUserBaseInfoVO; @@ -185,4 +187,13 @@ public interface HyPartnerInterviewPlanMapper { * @return */ List remindInterviewStartMinutes(); + + /** + * 获取招商经理各时段预约情况 + * @param interviewerId 招商经理 id + * @param startTimeStr 开始时间点 + * @param endTimeStr 结束时间点 + * @return + */ + List getInterviewBookSituation(@Param("interviewerId") String interviewerId, @Param("startTime") String startTimeStr, @Param("endTime") String endTimeStr); } \ 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 b6d12c7bf..4a1314474 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -569,4 +569,32 @@ AND t1.update_time <= NOW() + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java new file mode 100644 index 000000000..be5dbe355 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java @@ -0,0 +1,33 @@ +package com.cool.store.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author Fun Li 2023/11/7 17:06 + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HyPartnerInterviewBookSituation { + + @ApiModelProperty("预约人数") + private Integer bookingCount; + + @ApiModelProperty("预约的面试开始时间") + private String startTime; + + @ApiModelProperty("预约的面试结束时间") + private String endTime; + + @ApiModelProperty("是否已被预定") + private Boolean booked; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java index 1e82f2859..83f97bbaf 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java @@ -22,4 +22,6 @@ public class GetFreeBusyListReq { private String partnerId; @ApiModelProperty("面试官ID(B端使用,如果该字段传了,就查询该面试官的日程忙闲信息,否则查询加盟商对应的面试官的信息)") private String interviewerId; + @ApiModelProperty("是否是PC端请求") + private Boolean whetherPC; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java index 745d7f49e..5b30268b9 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java @@ -17,6 +17,12 @@ public class FreeBusyInfo { @ApiModelProperty("是否空闲") private boolean isFree; + @ApiModelProperty("预约人数") + private Integer appointmentCount; + + @ApiModelProperty("是否被预约") + private Boolean booked; + public FreeBusyInfo(String startTime, String endTime, boolean isFree) { this.startTime = startTime; this.endTime = endTime; @@ -29,6 +35,14 @@ public class FreeBusyInfo { this.isFree = isFree; } + public FreeBusyInfo(String startTime, String endTime, boolean isFree, Integer appointmentCount, Boolean booked) { + this.startTime = startTime; + this.endTime = endTime; + this.isFree = isFree; + this.appointmentCount = appointmentCount; + this.booked = booked; + } + public String getStartTime() { return startTime; } @@ -52,4 +66,20 @@ public class FreeBusyInfo { public void setFree(boolean free) { isFree = free; } + + public Integer getAppointmentCount() { + return appointmentCount; + } + + public void setAppointmentCount(Integer appointmentCount) { + this.appointmentCount = appointmentCount; + } + + public Boolean getBooked() { + return booked; + } + + public void setBooked(Boolean booked) { + this.booked = booked; + } } \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/FeiShuService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/FeiShuService.java index b2822345b..3a48f6320 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/FeiShuService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/FeiShuService.java @@ -14,6 +14,11 @@ import javax.annotation.Resource; * @Description: */ public interface FeiShuService { + + /** + * @deprecated {@link com.cool.store.service.InterviewService#getFreeBusyList} + */ + @Deprecated GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request) throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java index 819c12804..df727c1ec 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java @@ -5,6 +5,7 @@ import com.cool.store.exception.ApiException; import com.cool.store.request.*; import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.interview.CreateAppointmentVO; +import com.cool.store.vo.interview.GetFreeBusyListVO; import com.cool.store.vo.interview.InterviewVO; import java.util.List; @@ -71,4 +72,10 @@ public interface InterviewService { public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime); + /** + * 获取预约时间段的预约信息 + * @param request {@link GetFreeBusyListReq} + * @return {@link GetFreeBusyListVO} + */ + GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java index 032923666..454ef06c3 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java @@ -42,6 +42,14 @@ public class FeiShuServiceImpl implements FeiShuService { @Autowired private InterviewService interviewService; + /** + * + * @param request + * @return + * @throws ApiException + * @deprecated {@link com.cool.store.service.impl.InterviewServiceImpl#getFreeBusyList} + */ + @Deprecated @Override public GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request) throws ApiException { GetFreeBusyListVO freeBusyListVO = new GetFreeBusyListVO(); 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 27c1e4a93..ca8e40f8a 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,8 +5,6 @@ import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.context.PartnerUserHolder; @@ -15,7 +13,6 @@ import com.cool.store.dao.HyIntendDevMappingDAO; import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dto.calendar.*; import com.cool.store.dto.log.*; -import com.cool.store.dto.message.SendCardMessageDTO; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.entity.*; import com.cool.store.enums.*; @@ -32,8 +29,7 @@ import com.cool.store.utils.TRTCUtils; import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.EnterpriseUserBaseInfoVO; import com.cool.store.vo.PartnerUserInfoVO; -import com.cool.store.vo.interview.CreateAppointmentVO; -import com.cool.store.vo.interview.InterviewVO; +import com.cool.store.vo.interview.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -692,4 +688,86 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); } + @Override + public GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request) { + //1. 处理数据 + //1.1 传参整理 + GetFreeBusyListVO freeBusyListVO = new GetFreeBusyListVO(); + String startDate = request.getStartDate();//开始日期 + String endDate = request.getEndDate();//结束日期 + String partnerId = request.getPartnerId();//加盟商用户ID + String interviewerId = null;//面试官ID + String lineId = request.getLineId();//线索id + //如果加盟商用户ID为空且面试官ID为空,返回错误信息 + if (!(StringUtils.isNotEmpty(partnerId) && StringUtils.isNotEmpty(lineId)) && StringUtils.isEmpty(interviewerId)) { + throw new ServiceException(ErrorCodeEnum.INTERVIEW_AND_PARTNER_ID_IS_NULL); + } + //如果加盟商用户ID不为空且面试官ID为空 + if (StringUtils.isNotEmpty(partnerId) && StringUtils.isNotEmpty(lineId)) { + interviewerId = getInterviewerByPartner(partnerId, lineId); + } + //1.2 时间转换 + DateTime startDateTime = null; + DateTime endDateTime = null; + if (!StringUtils.isEmpty(startDate)&&!StringUtils.isEmpty(endDate)) { + startDateTime = DateUtil.beginOfDay(DateUtil.parse(startDate)); + endDateTime = DateUtil.endOfDay(DateUtil.parse(endDate)); + } + //1.3 校验时间 + if (startDateTime.isAfter(endDateTime)) { + throw new ServiceException(ErrorCodeEnum.DATE_PARAMS_IS_ERROR); + } + + //2. 查询招商经理各个已被预约时间段(成功或未成功)的预约情况 + //2.1 PC 端和小程序查询的开始和结束时间不同 + String startTimeSuffix = " 10:00:00"; + String endTimeSuffix = " 17:00:00"; + if (request.getWhetherPC()) { + startTimeSuffix = " 00:00:00"; + endTimeSuffix = " 23:59:59"; + } + String startTimeStr = DateUtil.format(startDateTime, "yyyy-MM-dd") + startTimeSuffix; + String endTimeStr = DateUtil.format(endDateTime, "yyyy-MM-dd") + endTimeSuffix; + List bookSituations = hyPartnerInterviewPlanMapper.getInterviewBookSituation(interviewerId, startTimeStr, endTimeStr); + + //3. 把数据装到各个时间槽里 + //3.1 创建时间槽 + // PC 端创建 8:00-24:00 的时间槽 + // 小程序端创建 10:00-17:00 的时间槽并且不包含中午 12:00-13:00 + List daySlots; + if (request.getWhetherPC().equals(Boolean.TRUE)) { + daySlots = TimeSlotGenerator.generateDaySlotsForPc(startTimeStr, endTimeStr); + } else { + daySlots = TimeSlotGenerator.generateDaySlots(startTimeStr, endTimeStr); + } + freeBusyListVO.setCalendarList(daySlots); + + //3.2 如果查询结果为空,则直接返回全部时间段都是空闲的 + if (org.springframework.util.CollectionUtils.isEmpty(bookSituations)) { + return freeBusyListVO; + } + + //3.3 装到槽里并返回 + //3.3.1 外层循环每一天 + for (CalendarInfo daySlot : daySlots) { + //3.3.2 内存循环每一天的每个时间段 + List freeBusyList = daySlot.getFreeBusyList(); + for (FreeBusyInfo freeBusyInfo : freeBusyList) { + //把日期和时间拼接成yyyy-MM-dd HH:mm格式 + String startStr = daySlot.getDateStr() + " " + freeBusyInfo.getStartTime(); + String endStr = daySlot.getDateStr() + " " + freeBusyInfo.getEndTime(); + for (HyPartnerInterviewBookSituation bookSituation : bookSituations) { + //比较两个时间段是否有重叠,重叠的就 set 数据进去 + if (startStr.compareTo(bookSituation.getStartTime()) >= 0 && endStr.compareTo(bookSituation.getEndTime()) <= 0) { + freeBusyInfo.setFree(Boolean.FALSE); + freeBusyInfo.setBooked(Boolean.TRUE); + freeBusyInfo.setAppointmentCount(bookSituation.getBookingCount()); + break; + } + } + } + } + return freeBusyListVO; + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java index b6caf8823..833537af6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java @@ -52,6 +52,36 @@ public class TimeSlotGenerator { return daySlots; } + public static List generateDaySlotsForPc(String startDate, String endDate) { + List daySlots = new ArrayList<>(); + + Date start = DateUtil.parse(startDate); + Date end = DateUtil.parse(endDate); + + Calendar startCal = DateUtil.calendar(start); + Calendar endCal = DateUtil.calendar(end); + + while (!startCal.after(endCal)) { + int year = startCal.get(Calendar.YEAR); + int month = startCal.get(Calendar.MONTH) + 1; + int day = startCal.get(Calendar.DAY_OF_MONTH); + int dayOfWeek = startCal.get(Calendar.DAY_OF_WEEK); + + List hourSlots = generateHalfHourSlotsForPC(); + CalendarInfo daySlot = new CalendarInfo(transDayOfWeek(dayOfWeek), + String.valueOf(year), + StringUtil.addZeroForNum(String.valueOf(month),2), + StringUtil.addZeroForNum(String.valueOf(day),2), + DateUtil.format(startCal.getTime(), "yyyy-MM-dd"), + hourSlots); + daySlots.add(daySlot); + + startCal.add(Calendar.DATE, 1); + } + + return daySlots; + } + private static List generateHourSlots() { List hourSlots = new ArrayList<>(); @@ -83,7 +113,27 @@ public class TimeSlotGenerator { String startTime2 = String.format("%02d:30", hour); String endTime2 = String.format("%02d:00", hour + 1); //默认空闲 - FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true); + FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); + hourSlots.add(hourSlot2); + } + return hourSlots; + } + + private static List generateHalfHourSlotsForPC() { + List hourSlots = new ArrayList<>(); + + //循环打印半小时的时间段 + for (int hour = 8; hour < 24; hour++) { + String startTime = String.format("%02d:00", hour); + String endTime = String.format("%02d:30", hour); + //默认空闲 + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true); + hourSlots.add(hourSlot); + + String startTime2 = String.format("%02d:30", hour); + String endTime2 = String.format("%02d:00", hour + 1); + //默认空闲,预约人数为 0 + FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); hourSlots.add(hourSlot2); } return hourSlots; diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/FeiShuController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/FeiShuController.java index 399ac1f5c..ced7dedd2 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/FeiShuController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/FeiShuController.java @@ -17,16 +17,22 @@ import org.springframework.web.bind.annotation.RestController; * @Author: young.yu * @Date: 2023-06-16 13:06 * @Description: + * @deprecated {@link com.cool.store.controller.InterviewController} */ @Api(tags = "飞书相关接口") @RestController @RequestMapping({"/feishu"}) +@Deprecated public class FeiShuController { + /** + * @deprecated {@link com.cool.store.controller.InterviewController#getFreeBusyList(GetFreeBusyListReq)} + */ @Autowired private FeiShuService feiShuService; @PostMapping("/interviewer/freebusy/list") @ApiOperation("查询日程忙闲信息") + @Deprecated public ResponseResult getFreeBusyList(@RequestBody GetFreeBusyListReq request) throws ApiException { GetFreeBusyListVO getFreeBusyListVO= feiShuService.getFreeBusyList(request); return ResponseResult.success(getFreeBusyListVO); diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java index b89b78d3f..52e2d093f 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java @@ -4,8 +4,10 @@ import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.exception.ApiException; import com.cool.store.request.*; import com.cool.store.response.ResponseResult; +import com.cool.store.service.FeiShuService; import com.cool.store.service.InterviewService; import com.cool.store.vo.EnterInterviewVO; +import com.cool.store.vo.interview.GetFreeBusyListVO; import com.cool.store.vo.interview.InterviewVO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -54,6 +56,13 @@ public class InterviewController { return ResponseResult.success(); } + @PostMapping("/interviewer/freebusy/list") + @ApiOperation("查询各预约时间段情况") + public ResponseResult getFreeBusyList(@RequestBody GetFreeBusyListReq request) throws ApiException { + GetFreeBusyListVO getFreeBusyListVO= interviewService.getFreeBusyList(request); + return ResponseResult.success(getFreeBusyListVO); + } + @PostMapping("/modifyInterviewTime") @ApiOperation("修改面试时间") public ResponseResult modifyInterviewTime(@RequestBody ModifyInterviewTimeReq request) throws ApiException { From 790846c5d892bfbb2452845cf8e7d069ca26d9e2 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Wed, 8 Nov 2023 14:27:57 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=90=84=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E6=97=B6=E9=97=B4=E6=AE=B5=E9=A2=84=E7=BA=A6=E6=83=85?= =?UTF-8?q?=E5=86=B5bug-fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/vo/interview/FreeBusyInfo.java | 17 ++++++------ .../service/impl/InterviewServiceImpl.java | 2 +- .../store/service/impl/TimeSlotGenerator.java | 26 +++++++++---------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java index 5b30268b9..5df3e5098 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java @@ -15,7 +15,7 @@ public class FreeBusyInfo { private String endTime; @ApiModelProperty("是否空闲") - private boolean isFree; + private boolean free; @ApiModelProperty("预约人数") private Integer appointmentCount; @@ -23,22 +23,21 @@ public class FreeBusyInfo { @ApiModelProperty("是否被预约") private Boolean booked; - public FreeBusyInfo(String startTime, String endTime, boolean isFree) { + public FreeBusyInfo(String startTime, String endTime, boolean free) { this.startTime = startTime; this.endTime = endTime; - this.isFree = isFree; + this.free = free; } public FreeBusyInfo(String startTime, String endTime) { this.startTime = startTime; this.endTime = endTime; - this.isFree = isFree; } - public FreeBusyInfo(String startTime, String endTime, boolean isFree, Integer appointmentCount, Boolean booked) { + public FreeBusyInfo(String startTime, String endTime, boolean free, Integer appointmentCount, Boolean booked) { this.startTime = startTime; this.endTime = endTime; - this.isFree = isFree; + this.free = free; this.appointmentCount = appointmentCount; this.booked = booked; } @@ -59,12 +58,12 @@ public class FreeBusyInfo { this.endTime = endTime; } - public boolean isFree() { - return isFree; + public boolean getFree() { + return free; } public void setFree(boolean free) { - isFree = free; + this.free = free; } public Integer getAppointmentCount() { 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 ca8e40f8a..3cf1fb57f 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 @@ -722,7 +722,7 @@ public class InterviewServiceImpl implements InterviewService { //2.1 PC 端和小程序查询的开始和结束时间不同 String startTimeSuffix = " 10:00:00"; String endTimeSuffix = " 17:00:00"; - if (request.getWhetherPC()) { + if (Boolean.TRUE.equals(request.getWhetherPC())) { startTimeSuffix = " 00:00:00"; endTimeSuffix = " 23:59:59"; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java index 833537af6..b6fa26f70 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java @@ -86,10 +86,10 @@ public class TimeSlotGenerator { List hourSlots = new ArrayList<>(); for (int hour = 10; hour < 17; hour++) { - String startTime = String.format("%02d:00", hour); - String endTime = String.format("%02d:00", hour + 1); + String startTime = String.format("%02d:00:00", hour); + String endTime = String.format("%02d:00:00", hour + 1); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); hourSlots.add(hourSlot); } @@ -104,14 +104,14 @@ public class TimeSlotGenerator { if(hour == 12){ continue; } - String startTime = String.format("%02d:00", hour); - String endTime = String.format("%02d:30", hour); + String startTime = String.format("%02d:00:00", hour); + String endTime = String.format("%02d:30:00", hour); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); hourSlots.add(hourSlot); - String startTime2 = String.format("%02d:30", hour); - String endTime2 = String.format("%02d:00", hour + 1); + String startTime2 = String.format("%02d:30:00", hour); + String endTime2 = String.format("%02d:00:00", hour + 1); //默认空闲 FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); hourSlots.add(hourSlot2); @@ -124,14 +124,14 @@ public class TimeSlotGenerator { //循环打印半小时的时间段 for (int hour = 8; hour < 24; hour++) { - String startTime = String.format("%02d:00", hour); - String endTime = String.format("%02d:30", hour); + String startTime = String.format("%02d:00:00", hour); + String endTime = String.format("%02d:30:00", hour); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); hourSlots.add(hourSlot); - String startTime2 = String.format("%02d:30", hour); - String endTime2 = String.format("%02d:00", hour + 1); + String startTime2 = String.format("%02d:30:00", hour); + String endTime2 = String.format("%02d:00:00", hour + 1); //默认空闲,预约人数为 0 FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); hourSlots.add(hourSlot2); From f1c458a280b7aed3ca846703bce527f9bd56fff6 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Wed, 8 Nov 2023 17:13:02 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E6=8B=9B=E5=95=86=E7=BB=8F=E7=90=86?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E9=A2=84=E7=BA=A6=E9=9D=A2=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/OperateTypeEnum.java | 1 + .../store/request/CreateAppointmentReq.java | 2 +- .../vo/interview/CreateAppointmentVO.java | 7 ++ .../cool/store/service/InterviewService.java | 6 ++ .../service/impl/InterviewServiceImpl.java | 78 ++++++++++++++++++- .../store/controller/InterviewController.java | 9 ++- 6 files changed, 100 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java index b5f46e902..83b02d491 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java @@ -21,6 +21,7 @@ public enum OperateTypeEnum { CLOSE_FOLLOW("close_follow", "结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON, REJECT_REAL_REASON, CERTIFY_FILE)), TRANSFER_INVESTMENT_MANAGER("transfer_investment_manager", "转让招商经理", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INVESTMENT_MANAGER_USERNAME, BEFORE_INVESTMENT_MANAGER_MOBILE, AFTER_INVESTMENT_MANAGER_USERNAME, AFTER_INVESTMENT_MANAGER_MOBILE)), INTERVIEW_APPOINTMENT("interview_appointment", "预约面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), + INTERVIEWER_BOOK_INTERVIEW("interviewer_book_interview", "招商经理主动预约面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), MODIFY_INTERVIEW_TIME("modify_interview_time", "修改面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INTERVIEW_TIME, AFTER_INTERVIEW_TIME)), ENTRUST_OTHERS("entrust_others", "委托他人", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, BEFORE_INTERVIEWR_NAME, AFTER_INTERVIEWR_NAME, BEFORE_INTERVIEWR_MOBILE, AFTER_INTERVIEWR_MOBILE)), diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/CreateAppointmentReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/CreateAppointmentReq.java index 8b07dd714..a9c238c42 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/CreateAppointmentReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/CreateAppointmentReq.java @@ -7,7 +7,7 @@ import io.swagger.annotations.ApiModelProperty; public class CreateAppointmentReq { @ApiModelProperty(value = "加盟商用户ID", required = true) private String partnerId; - @ApiModelProperty(value = "面试官id") + @ApiModelProperty(value = "面试官id,PC 端招商经理主动预约可以不传") private String interviewerId; @ApiModelProperty(value = "预约开始时间 (YYYY-MM-DD hh:mm:ss)", required = true) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CreateAppointmentVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CreateAppointmentVO.java index 0042e04b4..0d4e28f9a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CreateAppointmentVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CreateAppointmentVO.java @@ -13,6 +13,13 @@ public class CreateAppointmentVO { @ApiModelProperty("面试安排id") private String interviewPlanId; + public CreateAppointmentVO() { + } + + public CreateAppointmentVO(String interviewPlanId) { + this.interviewPlanId = interviewPlanId; + } + public String getInterviewPlanId() { return interviewPlanId; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java index df727c1ec..d4c76f3c0 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java @@ -78,4 +78,10 @@ public interface InterviewService { * @return {@link GetFreeBusyListVO} */ GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request); + + /** + * 招商经理主动预约面试 + * @param request {@link com.cool.store.request.CreateAppointmentReq} + */ + CreateAppointmentVO bookInterview(CreateAppointmentReq request) throws ApiException; } 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 3cf1fb57f..fcc7e2650 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 @@ -79,7 +79,6 @@ public class InterviewServiceImpl implements InterviewService { @Autowired private EnterpriseUserService enterpriseUserService; - // @Autowired // private SmsService smsService; @@ -770,4 +769,81 @@ public class InterviewServiceImpl implements InterviewService { return freeBusyListVO; } + @Transactional + @Override + public CreateAppointmentVO bookInterview(CreateAppointmentReq request) throws ApiException { + 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); + List hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO); + if(CollectionUtils.isNotEmpty(hyPartnerInterviewPlanDOS)&&hyPartnerInterviewPlanDOS.get(0).getId()!=null){ + throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_ALREADY_EXIST); + } + String interviewrId = request.getInterviewerId(); + if(StringUtils.isEmpty(interviewrId)){ + interviewrId = getInterviewerByPartner(request.getPartnerId(),String.valueOf(request.getPartnerLineId())); + } + //1.创建面试计划 + Date now = new Date(); + HyPartnerInterviewPlanDO interviewPlanDO = new HyPartnerInterviewPlanDO(); + String startBookingTime = request.getStartBookingTime(); + String startDate = startBookingTime.substring(0, 10); + interviewPlanDO.setInterviewDate(Convert.toDate(startDate)); + interviewPlanDO.setCreateTime(now); + interviewPlanDO.setUpdateTime(now); + interviewPlanDO.setStartTime(Convert.toDate(request.getStartBookingTime())); + interviewPlanDO.setEndTime(Convert.toDate(request.getEndBookingTime())); + interviewPlanDO.setPartnerId(request.getPartnerId()); + interviewPlanDO.setPartnerLineId(request.getPartnerLineId()); + interviewPlanDO.setInterviewer(interviewrId); + interviewPlanDO.setIsPartnerInterview(0); + interviewPlanDO.setApplicationApproved(1); + //1.2 生成房间号 + interviewPlanDO.setRoomId(StringUtil.generateRoomId(startBookingTime)); + 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())); + hyPartnerInterviewDO.setPartnerLineId(request.getPartnerLineId()); + hyPartnerInterviewDO.setPartnerId(request.getPartnerId()); + hyPartnerInterviewDO.setInterviewer(interviewrId); + hyPartnerInterviewDO.setCreateTime(now); + hyPartnerInterviewDO.setUpdateTime(now); + hyPartnerInterviewDO.setDeleted(false); + HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO(); + hyPartnerInterviewDO.setUpdateTime(now); + hyPartnerInterviewMapper.insertSelective(hyPartnerInterviewDO); + + //3. 修改线索流程状态 + hyPartnerLineDO.setId(request.getPartnerLineId()); + hyPartnerLineDO.setUpdateTime(now); + hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.INTERVIEW.getCode()); + hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode()); + hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); + + //4. 异步发送短信给加盟商 + HyPartnerBaseInfoDO partnerBaseInfo = hyPartnerBaseInfoMapper.getByPartnerLineId(request.getPartnerLineId()); + if(partnerBaseInfo == null){ + throw new ServiceException(ErrorCodeEnum.INTERVIEW_PARTNER_NOT_EXIST); + } + eventCenterHttpRequest.sendSmsVariable(partnerBaseInfo.getMobile(), SMSMsgEnum.INTERVIEW_APPOINTMENT_PASS, DateUtil.format(DateUtil.parseDateTime(request.getStartBookingTime()), DatePattern.NORM_DATETIME_MINUTE_PATTERN), wechatMiniAppService.getMiniAppUrl()); + + //5. 记录日志 + PartnerUserInfoVO operator = PartnerUserHolder.getUser(); + LogBasicDTO log = LogBasicDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).mobile(operator.getMobile()).build(); + logService.recordPartnerBizLog(operator, request.getPartnerLineId(), OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW,log); + + return new CreateAppointmentVO(interviewPlanDO.getId().toString()); + } + } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java index 52e2d093f..793299e75 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java @@ -7,6 +7,7 @@ import com.cool.store.response.ResponseResult; import com.cool.store.service.FeiShuService; import com.cool.store.service.InterviewService; import com.cool.store.vo.EnterInterviewVO; +import com.cool.store.vo.interview.CreateAppointmentVO; import com.cool.store.vo.interview.GetFreeBusyListVO; import com.cool.store.vo.interview.InterviewVO; import com.github.pagehelper.PageHelper; @@ -56,13 +57,19 @@ public class InterviewController { return ResponseResult.success(); } - @PostMapping("/interviewer/freebusy/list") + @PostMapping("/freebusy/list") @ApiOperation("查询各预约时间段情况") public ResponseResult getFreeBusyList(@RequestBody GetFreeBusyListReq request) throws ApiException { GetFreeBusyListVO getFreeBusyListVO= interviewService.getFreeBusyList(request); return ResponseResult.success(getFreeBusyListVO); } + @PostMapping("/appointment/booking") + @ApiOperation("招商经理主动预约面试") + public ResponseResult bookInterview(@RequestBody CreateAppointmentReq request) throws ApiException { + return ResponseResult.success(interviewService.bookInterview(request)); + } + @PostMapping("/modifyInterviewTime") @ApiOperation("修改面试时间") public ResponseResult modifyInterviewTime(@RequestBody ModifyInterviewTimeReq request) throws ApiException { From e0577b1ddca877c6f8e3e0e2d536ebb0c4ac0733 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Wed, 8 Nov 2023 17:49:21 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=AE=B5=E9=A2=84=E7=BA=A6=E6=83=85=E5=86=B5?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9&=E6=9F=A5=E8=AF=A2SQL=E9=94=99=E8=AF=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerInterviewPlanMapper.xml | 35 +++++++++---------- .../service/impl/InterviewServiceImpl.java | 5 +-- .../store/service/impl/TimeSlotGenerator.java | 20 +++++------ 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 4a1314474..efe48dc7e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -572,27 +572,26 @@ 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 fcc7e2650..61face107 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 @@ -753,14 +753,15 @@ public class InterviewServiceImpl implements InterviewService { List freeBusyList = daySlot.getFreeBusyList(); for (FreeBusyInfo freeBusyInfo : freeBusyList) { //把日期和时间拼接成yyyy-MM-dd HH:mm格式 - String startStr = daySlot.getDateStr() + " " + freeBusyInfo.getStartTime(); - String endStr = daySlot.getDateStr() + " " + freeBusyInfo.getEndTime(); + String startStr = daySlot.getDateStr() + " " + freeBusyInfo.getStartTime() + ":00"; + String endStr = daySlot.getDateStr() + " " + freeBusyInfo.getEndTime() + ":00"; for (HyPartnerInterviewBookSituation bookSituation : bookSituations) { //比较两个时间段是否有重叠,重叠的就 set 数据进去 if (startStr.compareTo(bookSituation.getStartTime()) >= 0 && endStr.compareTo(bookSituation.getEndTime()) <= 0) { freeBusyInfo.setFree(Boolean.FALSE); freeBusyInfo.setBooked(Boolean.TRUE); freeBusyInfo.setAppointmentCount(bookSituation.getBookingCount()); + bookSituations.remove(bookSituation); break; } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java index b6fa26f70..a6c028562 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java @@ -86,8 +86,8 @@ public class TimeSlotGenerator { List hourSlots = new ArrayList<>(); for (int hour = 10; hour < 17; hour++) { - String startTime = String.format("%02d:00:00", hour); - String endTime = String.format("%02d:00:00", hour + 1); + String startTime = String.format("%02d:00", hour); + String endTime = String.format("%02d:00", hour + 1); //默认空闲 FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); hourSlots.add(hourSlot); @@ -104,14 +104,14 @@ public class TimeSlotGenerator { if(hour == 12){ continue; } - String startTime = String.format("%02d:00:00", hour); - String endTime = String.format("%02d:30:00", hour); + String startTime = String.format("%02d:00", hour); + String endTime = String.format("%02d:30", hour); //默认空闲 FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); hourSlots.add(hourSlot); - String startTime2 = String.format("%02d:30:00", hour); - String endTime2 = String.format("%02d:00:00", hour + 1); + String startTime2 = String.format("%02d:30", hour); + String endTime2 = String.format("%02d:00", hour + 1); //默认空闲 FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); hourSlots.add(hourSlot2); @@ -124,14 +124,14 @@ public class TimeSlotGenerator { //循环打印半小时的时间段 for (int hour = 8; hour < 24; hour++) { - String startTime = String.format("%02d:00:00", hour); - String endTime = String.format("%02d:30:00", hour); + String startTime = String.format("%02d:00", hour); + String endTime = String.format("%02d:30", hour); //默认空闲 FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); hourSlots.add(hourSlot); - String startTime2 = String.format("%02d:30:00", hour); - String endTime2 = String.format("%02d:00:00", hour + 1); + String startTime2 = String.format("%02d:30", hour); + String endTime2 = String.format("%02d:00", hour + 1); //默认空闲,预约人数为 0 FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); hourSlots.add(hourSlot2); From bc986590e968a141ed6cf52db097656ae2d5f5de Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 10:15:21 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E4=B8=BB=E5=8A=A8=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E9=9D=A2=E8=AF=95=E8=8E=B7=E5=8F=96tips=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=B8=BA=E7=A9=BAfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/service/impl/CommonServiceImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java index e1eb3a19a..a0268e0ce 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java @@ -57,13 +57,21 @@ public class CommonServiceImpl implements CommonService { Long partnerLineId = hyPartnerLineInfoDO.getId(); if ((workflowStage.equals(WorkflowStageEnum.RESERVATION.getCode()) && workflowStatus.equals(WorkflowStatusEnum.RESERVATION_1.getCode()))|| (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_2.getCode()))) { - return getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); + String interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); + if (StringUtils.isEmpty(interviewAppointmentTips)) { + interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW, "提交面试预约时间"); + } + return interviewAppointmentTips; } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_3.getCode())) { String tips = getInterviewTips(partnerLineId, OperateTypeEnum.MODIFY_INTERVIEW_TIME, ""); if (StringUtils.isNotEmpty(tips)) { return tips + ("修改面试预约时间"); } else { - return getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); + String interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); + if (StringUtils.isEmpty(interviewAppointmentTips)) { + interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW, "提交面试预约时间"); + } + return interviewAppointmentTips; } } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_4.getCode())) { return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "结束面试"); From 80f0f5b6d2394042c7a3369bd083a3fee58a4a90 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 14:43:56 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E9=9D=A2=E8=AF=95=E5=BE=85=E5=AE=A1=E6=A0=B8=E7=9A=84?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E5=BA=94=E6=97=B6=E6=AE=B5=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E6=83=85=E5=86=B5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerInterviewPlanMapper.xml | 4 ++-- .../HyPartnerInterviewBookSituation.java | 7 +++++++ .../cool/store/vo/PartnerInterviewInfoVO.java | 7 +++++++ .../HyPartnerInterviewPlanServiceImpl.java | 21 +++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index efe48dc7e..7a762c2d7 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -570,10 +570,10 @@ + select + from super_admin_config where + id = #{id,jdbcType=BIGINT} + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/test/resources/mybatis-generator.xml b/coolstore-partner-dao/src/test/resources/mybatis-generator.xml index 880e6e523..9c65c42b8 100644 --- a/coolstore-partner-dao/src/test/resources/mybatis-generator.xml +++ b/coolstore-partner-dao/src/test/resources/mybatis-generator.xml @@ -29,7 +29,7 @@ -
diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SuperAdminConfigDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SuperAdminConfigDO.java new file mode 100644 index 000000000..aed084113 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SuperAdminConfigDO.java @@ -0,0 +1,43 @@ +package com.cool.store.entity; + +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author zhangchenbiao + * @date 2023-11-09 02:24 + */ +@Table(name = "super_admin_config") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SuperAdminConfigDO implements Serializable { + @ApiModelProperty("") + private Long id; + + @ApiModelProperty("超管用户ID") + private String superAdminUserId; + + @ApiModelProperty("删除标志 0-正常 1-删除") + private Integer deleted; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; + + @ApiModelProperty("新建人ID") + private String createUserId; + + @ApiModelProperty("更新人ID") + private String updateUserId; +} \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java index 8d5d0addf..42f600de8 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java @@ -33,6 +33,7 @@ public interface EnterpriseUserService { + List getDevelopmentDirectorList(String wantShopArea); /** 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 fc2781e21..422ef86f6 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 @@ -98,6 +98,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { HyFollowTaskDAO hyFollowTaskDAO; @Resource private HyPartnerIntentInfoDAO hyPartnerIntentInfoDAO; + @Resource + SuperAdminConfigDAO superAdminConfigDAO; @Autowired private WechatMiniAppService wechatMiniAppService; @@ -633,8 +635,16 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { public PageInfo privateSeaLineList(String userId, PrivateSeaLineListRequest request,Boolean allPrivateSeaFlag) { //allPrivateSeaFlag 为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()); PageHelper.startPage(request.getPageNum(),request.getPageSize()); @@ -671,6 +681,15 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { return privateLineList; } + private Boolean isSuperAdmin(String userId){ + SuperAdminConfigDO superAdmin = superAdminConfigDAO.isSuperAdmin(userId); + if (superAdmin!=null){ + return Boolean.TRUE; + } + return Boolean.FALSE; + } + + @Override public PartnerLineBaseInfoVO getPartnerLinBaseInfo(String partnerId) { PartnerLineBaseInfoVO lineBaseInfoVO = new PartnerLineBaseInfoVO(); From 2053b62d7629fe0b2e78ab39f5cc1d96982dbd3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 9 Nov 2023 15:08:27 +0800 Subject: [PATCH 08/23] =?UTF-8?q?=E7=A7=81=E6=B5=B7=E5=88=97=E8=A1=A8=20?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=20=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/service/impl/HyPartnerLineInfoServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 422ef86f6..b1b6459e5 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 @@ -634,6 +634,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public PageInfo privateSeaLineList(String userId, PrivateSeaLineListRequest request,Boolean allPrivateSeaFlag) { //allPrivateSeaFlag 为true的时候 查询全量私海 + // V1.5.2 修改allPrivateSeaFlag 为False 查询我的线索 为true时根据是否是超管或者主管查询数据 UserPositionAndUserScopeDTO userIdsByScope = new UserPositionAndUserScopeDTO(); //如果是查询团队线索 判断是否是超管 不是超管 判断是是否是主管 if (allPrivateSeaFlag){ From ff86296106b1060cbb5ffed1c016a45bd98fbd59 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 16:19:02 +0800 Subject: [PATCH 09/23] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E6=9C=AC?= =?UTF-8?q?=E4=BA=BA=E9=A2=84=E7=BA=A6=E6=97=B6=E6=AE=B5=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HyPartnerInterviewBookSituation.java | 2 +- .../cool/store/vo/PartnerInterviewInfoVO.java | 2 +- .../cool/store/vo/interview/CalendarInfo.java | 2 +- .../cool/store/vo/interview/FreeBusyInfo.java | 26 ++++++++++++++++++- .../service/impl/InterviewServiceImpl.java | 17 ++++++++++-- .../store/service/impl/TimeSlotGenerator.java | 10 +++---- 6 files changed, 48 insertions(+), 11 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java index bbf51f499..265390466 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java @@ -27,7 +27,7 @@ public class HyPartnerInterviewBookSituation { @ApiModelProperty("预约的面试结束时间") private String endTime; - @ApiModelProperty("是否已被预定") + @ApiModelProperty("是否已被预定成功") private Boolean booked; @ApiModelProperty("预约成功人的 partnerId") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java index 856558ca8..f8f810187 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java @@ -85,7 +85,7 @@ public class PartnerInterviewInfoVO { @ApiModelProperty("来源名称") private String userChannelName; - @ApiModelProperty("是否已被预约") + @ApiModelProperty("是否已被预约成功") private Boolean booked; @ApiModelProperty("该时间段面试预约人数") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java index 925107d5a..59ac84d88 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java @@ -27,7 +27,7 @@ public class CalendarInfo { @ApiModelProperty("日期字符串") private String dateStr; - @ApiModelProperty("飞书日程忙闲清单") + @ApiModelProperty("忙闲清单") private List freeBusyList; public CalendarInfo(Integer dayOfWeek, String year, String month, String day, String dateStr, List freeBusyList) { diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java index 5df3e5098..b5e307e93 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java @@ -20,9 +20,12 @@ public class FreeBusyInfo { @ApiModelProperty("预约人数") private Integer appointmentCount; - @ApiModelProperty("是否被预约") + @ApiModelProperty("是否被成功预约") private Boolean booked; + @ApiModelProperty("是否是自己预约的时间段") + private Boolean selfBooked; + public FreeBusyInfo(String startTime, String endTime, boolean free) { this.startTime = startTime; this.endTime = endTime; @@ -42,6 +45,15 @@ public class FreeBusyInfo { this.booked = booked; } + public FreeBusyInfo(String startTime, String endTime, boolean free, Integer appointmentCount, Boolean booked, Boolean selfBooked) { + this.startTime = startTime; + this.endTime = endTime; + this.free = free; + this.appointmentCount = appointmentCount; + this.booked = booked; + this.selfBooked = selfBooked; + } + public String getStartTime() { return startTime; } @@ -81,4 +93,16 @@ public class FreeBusyInfo { public void setBooked(Boolean booked) { this.booked = booked; } + + public boolean isFree() { + return free; + } + + public Boolean getSelfBooked() { + return selfBooked; + } + + public void setSelfBooked(Boolean selfBooked) { + this.selfBooked = selfBooked; + } } \ No newline at end of file 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 61face107..44a90e5d5 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 @@ -39,6 +39,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -728,6 +729,17 @@ public class InterviewServiceImpl implements InterviewService { String startTimeStr = DateUtil.format(startDateTime, "yyyy-MM-dd") + startTimeSuffix; String endTimeStr = DateUtil.format(endDateTime, "yyyy-MM-dd") + endTimeSuffix; List bookSituations = hyPartnerInterviewPlanMapper.getInterviewBookSituation(interviewerId, startTimeStr, endTimeStr); + //2.2 查询该线索已有的面试预约开始时间 + HyPartnerInterviewPlanDO interviewPlanDO = new HyPartnerInterviewPlanDO(); + interviewPlanDO.setPartnerId(request.getPartnerId()); + interviewPlanDO.setDeleted(false); + List hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(interviewPlanDO); + String partnerAppointStartTime = ""; + if (CollectionUtils.isNotEmpty(hyPartnerInterviewPlanDOS)) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + interviewPlanDO = hyPartnerInterviewPlanDOS.get(0); + partnerAppointStartTime = dateFormat.format(interviewPlanDO.getStartTime()); + } //3. 把数据装到各个时间槽里 //3.1 创建时间槽 @@ -758,8 +770,9 @@ public class InterviewServiceImpl implements InterviewService { for (HyPartnerInterviewBookSituation bookSituation : bookSituations) { //比较两个时间段是否有重叠,重叠的就 set 数据进去 if (startStr.compareTo(bookSituation.getStartTime()) >= 0 && endStr.compareTo(bookSituation.getEndTime()) <= 0) { - freeBusyInfo.setFree(Boolean.FALSE); - freeBusyInfo.setBooked(Boolean.TRUE); + freeBusyInfo.setBooked(bookSituation.getBooked()); + freeBusyInfo.setSelfBooked(partnerAppointStartTime.equals(bookSituation.getStartTime())); + freeBusyInfo.setFree(!bookSituation.getBooked()); freeBusyInfo.setAppointmentCount(bookSituation.getBookingCount()); bookSituations.remove(bookSituation); break; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java index a6c028562..1d4cab7f4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java @@ -89,7 +89,7 @@ public class TimeSlotGenerator { String startTime = String.format("%02d:00", hour); String endTime = String.format("%02d:00", hour + 1); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false, false); hourSlots.add(hourSlot); } @@ -107,13 +107,13 @@ public class TimeSlotGenerator { String startTime = String.format("%02d:00", hour); String endTime = String.format("%02d:30", hour); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false, false); hourSlots.add(hourSlot); String startTime2 = String.format("%02d:30", hour); String endTime2 = String.format("%02d:00", hour + 1); //默认空闲 - FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); + FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false, false); hourSlots.add(hourSlot2); } return hourSlots; @@ -127,13 +127,13 @@ public class TimeSlotGenerator { String startTime = String.format("%02d:00", hour); String endTime = String.format("%02d:30", hour); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false, false); hourSlots.add(hourSlot); String startTime2 = String.format("%02d:30", hour); String endTime2 = String.format("%02d:00", hour + 1); //默认空闲,预约人数为 0 - FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); + FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false, false); hourSlots.add(hourSlot2); } return hourSlots; From 18bec32568a7361c7e12517f04463622205b9450 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 17:03:30 +0800 Subject: [PATCH 10/23] =?UTF-8?q?=E9=9D=A2=E8=AF=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A2=84=E7=BA=A6=E6=83=85=E5=86=B5=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/vo/interview/InterviewVO.java | 9 ++++++++ .../service/impl/InterviewServiceImpl.java | 21 ++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java index 6d70c7dff..a8d640fef 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java @@ -127,4 +127,13 @@ public class InterviewVO { @ApiModelProperty("所属战区id") private String affiliationZone; + @ApiModelProperty("该时间段是否被预约成功") + private Boolean booked; + + @ApiModelProperty("该时间段面试预约人数") + private Integer appointmentCount; + + @ApiModelProperty("该时段是否是自己预约的(不一定代表预约成功)") + private Boolean selfBooked; + } 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 44a90e5d5..99fdb5b74 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 @@ -121,7 +121,7 @@ public class InterviewServiceImpl implements InterviewService { vo.setVideoList(split); vo.setProcessInfo(""); } - //查询面试官和记录人信息(面试官必须有) + //1. 查询面试官和记录人信息(面试官必须有) EnterpriseUserBaseInfoVO interviewerInfo = hyPartnerInterviewPlanMapper.getEnterpriseUserBaseInfo(vo.getInterviewerId()); vo.setInterviewerName(interviewerInfo.getName()); vo.setInterviewerMobile(interviewerInfo.getMobile()); @@ -132,10 +132,10 @@ public class InterviewServiceImpl implements InterviewService { vo.setRecorderMobile(recorderInfo.getMobile()); } } - //查询开发主管信息 + + //2. 查询开发主管信息 if (request.getNeedDevelopmentDirector() != null && request.getNeedDevelopmentDirector()) { //查询所属战区 - String wantShopArea = hyPartnerLineInfoMapper.getAffiliationZoneIdByInterviewPlanId(interviewPlanId); HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea), "dev"); if (hyIntendDevelopementMappingDO == null) { @@ -145,6 +145,21 @@ public class InterviewServiceImpl implements InterviewService { EnterpriseUserDO development = enterpriseUserService.getDevelopmentByZoneId(hyIntendDevelopementMappingDO.getMappingId()); vo.setDevelopmentDirector(development); } + + //3. 查询该时段预约情况 + //如果还未提交预约申请就没有预约情况,面试完成以后也必要查询了 + if (!vo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode())) + && !vo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode())) + && !vo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.RESERVATION_1.getCode()))) { + return vo; + } + List bookSituations = hyPartnerInterviewPlanMapper.getInterviewBookSituation(vo.getInterviewerId(), vo.getStartTime(), vo.getEndTime()); + if (CollectionUtils.isNotEmpty(bookSituations)) { + HyPartnerInterviewBookSituation bookSituation = bookSituations.get(0); + vo.setBooked(bookSituation.getBooked()); + vo.setSelfBooked(Boolean.TRUE); + vo.setAppointmentCount(bookSituation.getBookingCount()); + } return vo; } From b8a159fb588623c25c57113a539e349ff64501ea Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 17:17:03 +0800 Subject: [PATCH 11/23] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=8E=89=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=9D=A2=E8=AF=95=E9=A2=84=E7=BA=A6=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/job/JobHandler.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java index 1cadde5b7..15fc747d3 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java @@ -47,8 +47,9 @@ public class JobHandler { @XxlJob("updateInterviewOverTime") public void updateInterviewOverTime(){ try { - log.info("面试超时预约定时任务开始"); - hyPartnerInterviewPlanService.updateInterviewOverTime(); + log.info("面试超时预约定时任务已取消,请勿再执行"); + XxlJobHelper.log("面试超时预约定时任务已取消,请勿再执行"); +// hyPartnerInterviewPlanService.updateInterviewOverTime(); log.info("面试超时预约定时任务结束"); XxlJobHelper.handleSuccess(); }catch (Exception e){ From 0e623604e4a4ca6fb6f7bdaf074112047ad0649f Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 17:43:11 +0800 Subject: [PATCH 12/23] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=AF=B9=E9=A3=9E?= =?UTF-8?q?=E4=B9=A6=E6=97=A5=E7=A8=8B=E7=9A=84=E4=BB=BB=E4=BD=95=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=EF=BC=88=E9=99=A4=E5=B7=A5=E4=BD=9C=E5=8F=B0=E6=97=A5?= =?UTF-8?q?=E5=8E=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/http/ISVHttpRequest.java | 10 ++ .../service/impl/InterviewServiceImpl.java | 149 +++++++++--------- .../workflow/InterviewWorkFlowService.java | 17 +- 3 files changed, 93 insertions(+), 83 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java index 92ab1ae8c..200ef5364 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java @@ -233,8 +233,10 @@ public class ISVHttpRequest { * @param userId * @param startTime 开始时间 毫秒时间戳 * @param endTime 截止时间 毫秒时间戳 + * @deprecated 1.5.2 后取消飞书日程的任何使用 * @return */ + @Deprecated public List getFreeBusyList(String userId, long startTime, long endTime) throws ApiException{ String url = isvDomain + "/user/getFreeBusyList"; HashMap requestMap = new HashMap(); @@ -259,8 +261,10 @@ public class ISVHttpRequest { * 创建飞书日程 * @param param * @return + * @deprecated 1.5.2 后取消操作飞书日程 * @throws ApiException */ + @Deprecated public UserCalendarsEventDTO createUserCalendarEvent(CreateCalendarEventDTO param) throws ApiException{ String url = isvDomain + "/user/createUserCalendarEvent"; ResultDTO responseEntity = null; @@ -281,8 +285,10 @@ public class ISVHttpRequest { * 更新飞书日程 * @param param * @return + * @deprecated 1.5.2 后取消操作飞书日程 * @throws ApiException */ + @Deprecated public UserCalendarsEventDTO updateUserCalendarEvent(UpdateCalendarEventDTO param) throws ApiException{ String url = isvDomain + "/user/updateUserCalendarEvent"; ResultDTO responseEntity = null; @@ -303,8 +309,10 @@ public class ISVHttpRequest { * 取消飞书日程 * @param param * @return + * @deprecated 1.5.2 后取消操作飞书日程 * @throws ApiException */ + @Deprecated public UserCalendarsEventDTO deleteUserCalendarEvent(DeleteCalendarEventDTO param) throws ApiException { String url = isvDomain + "/user/deleteUserCalendarEvent"; ResultDTO responseEntity = null; @@ -352,7 +360,9 @@ public class ISVHttpRequest { /** * 发送飞书卡片消息 * @param param + * @deprecated {@link EventCenterHttpRequest#sendFeiShuNotice(FeiShuNoticeMsgEnum, List, Object...)} */ + @Deprecated @Async public void sendFeiShuCardMessage(SendCardMessageDTO param) throws ApiException{ if(CollectionUtils.isEmpty(param.getUserIds()) || StringUtils.isAnyBlank(param.getTitle(), param.getContent(), param.getMessageUrl()) || Objects.isNull(param.getMessageType())){ 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 99fdb5b74..11784851c 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 @@ -198,35 +198,36 @@ public class InterviewServiceImpl implements InterviewService { // throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR); // } + //1.5.2 后不再使用飞书日程 //有可能还未同意面试预约,这时候没有建立日程,只需要修改面试官 //1.4 优化多次转让,线索转让次数 >= 1 无需添加日程,只转让线索的招商经理及面试官 - Integer transferTimes = hyPartnerLineInfoMapper.getTransferTimes(request.getPartnerLineId()); - if (interviewInfo.getFeishuCalendarId() != null && interviewInfo.getFeishuScheduleId() != null - && transferTimes < 1) { - //V1.3 需求变更为将新面试官拉入原面试官日程,而非删除和新增日程 - //1. 原面试官面试日程信息 - String oldInterviewerId = CurrentUserHolder.getUserId(); - UpdateCalendarEventDTO updateCalendarEventDTO = new UpdateCalendarEventDTO(); - updateCalendarEventDTO.setUserId(oldInterviewerId); - updateCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId()); - updateCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId()); - updateCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime()); - updateCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime()); - updateCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId())); - - //2. 邀请新面试官加入日程 - List list = new ArrayList(); - list.add(request.getNewInterviewerId()); - //当前招商经理不是面试官,但是日程在招商经理这里 - if (!oldInterviewerId.equals(list.get(0))) { - list.add(oldInterviewerId); - } - updateCalendarEventDTO.setJoinUserIds(list); - UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.updateUserCalendarEvent(updateCalendarEventDTO); - if(userCalendarsEventDTO == null ){ - throw new ApiException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR); - } - } +// Integer transferTimes = hyPartnerLineInfoMapper.getTransferTimes(request.getPartnerLineId()); +// if (interviewInfo.getFeishuCalendarId() != null && interviewInfo.getFeishuScheduleId() != null +// && transferTimes < 1) { +// //V1.3 需求变更为将新面试官拉入原面试官日程,而非删除和新增日程 +// //1. 原面试官面试日程信息 +// String oldInterviewerId = CurrentUserHolder.getUserId(); +// UpdateCalendarEventDTO updateCalendarEventDTO = new UpdateCalendarEventDTO(); +// updateCalendarEventDTO.setUserId(oldInterviewerId); +// updateCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId()); +// updateCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId()); +// updateCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime()); +// updateCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime()); +// updateCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId())); +// +// //2. 邀请新面试官加入日程 +// List list = new ArrayList(); +// list.add(request.getNewInterviewerId()); +// //当前招商经理不是面试官,但是日程在招商经理这里 +// if (!oldInterviewerId.equals(list.get(0))) { +// list.add(oldInterviewerId); +// } +// updateCalendarEventDTO.setJoinUserIds(list); +// UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.updateUserCalendarEvent(updateCalendarEventDTO); +// if(userCalendarsEventDTO == null ){ +// throw new ApiException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR); +// } +// } // 3.面试信息计划变更 HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO(); @@ -277,38 +278,39 @@ public class InterviewServiceImpl implements InterviewService { throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); } HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO(); - //被委托或者因转让导致的面试官变更的线索不操作日程 - Integer transferTimes = hyPartnerLineInfoMapper.getTransferTimes(interviewInfo.getPartnerLineId()); - if(transferTimes==0&&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()); - List list = Arrays.asList(interviewInfo.getInterviewerId()); - //可能当前招商经理不是面试官,但是日程在招商经理这里 - String userId = CurrentUserHolder.getUserId(); - if (!userId.equals(list.get(0))) { - list.add(userId); - } - createCalendarEventDTO.setJoinUserIds(list); - 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()); - } + //1.5.2 后不再使用飞书日程 +// //被委托或者因转让导致的面试官变更的线索不操作日程 +// Integer transferTimes = hyPartnerLineInfoMapper.getTransferTimes(interviewInfo.getPartnerLineId()); +// if(transferTimes==0&&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()); +// List list = Arrays.asList(interviewInfo.getInterviewerId()); +// //可能当前招商经理不是面试官,但是日程在招商经理这里 +// String userId = CurrentUserHolder.getUserId(); +// if (!userId.equals(list.get(0))) { +// list.add(userId); +// } +// createCalendarEventDTO.setJoinUserIds(list); +// 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.setStartTime(Convert.toDate(request.getNewStartBookingTime())); @@ -541,26 +543,23 @@ public class InterviewServiceImpl implements InterviewService { throw new ServiceException(ErrorCodeEnum.INTERVIEW_PARTNER_NOT_EXIST); } - List userFreeBusyInfoList = isvHttpRequest.getFreeBusyList(request.getInterviewerId(), DateUtil.parse(interviewVO.getStartTime()).getTime(), DateUtil.parse(interviewVO.getEndTime()).getTime()); - if (CollectionUtils.isNotEmpty(userFreeBusyInfoList)) { - throw new ServiceException(ErrorCodeEnum.INTERVIEW_INTERVIEW_TIME_IS_UNUSABLE,partnerBaseInfo.getUsername(),partnerBaseInfo.getMobile()); - } + //创建日程信息 - CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO(); - createCalendarEventDTO.setStartTime(DateUtil.parse(interviewVO.getStartTime()).getTime()); - createCalendarEventDTO.setEndTime(DateUtil.parse(interviewVO.getEndTime()).getTime()); - createCalendarEventDTO.setUserId(request.getInterviewerId()); - createCalendarEventDTO.setJoinUserIds(Arrays.asList(request.getInterviewerId())); - createCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId())); - UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO); - if (userCalendarEvent == null || StringUtil.isEmpty(userCalendarEvent.getEventId())) { - throw new ServiceException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL); - } +// CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO(); +// createCalendarEventDTO.setStartTime(DateUtil.parse(interviewVO.getStartTime()).getTime()); +// createCalendarEventDTO.setEndTime(DateUtil.parse(interviewVO.getEndTime()).getTime()); +// createCalendarEventDTO.setUserId(request.getInterviewerId()); +// createCalendarEventDTO.setJoinUserIds(Arrays.asList(request.getInterviewerId())); +// createCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId())); +// UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO); +// if (userCalendarEvent == null || StringUtil.isEmpty(userCalendarEvent.getEventId())) { +// throw new ServiceException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL); +// } //更新面试计划信息 HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO(); record.setId(Long.valueOf(request.getInterviewPlanId())); - record.setFeishuCalendarId(userCalendarEvent.getCalendarId()); - record.setFeishuScheduleId(userCalendarEvent.getEventId()); +// record.setFeishuCalendarId(userCalendarEvent.getCalendarId()); +// record.setFeishuScheduleId(userCalendarEvent.getEventId()); record.setApplicationApproved(1); //如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段 DateTime interviewStartTime = DateUtil.offsetMinute(DateUtil.parseDateTime(interviewVO.getStartTime()), -5); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java index aad9d5d9a..29d8edd8c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java @@ -88,15 +88,16 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { && StringUtils.isNotEmpty(interviewInfo.getFeishuCalendarId()) && StringUtils.isNotEmpty(interviewInfo.getFeishuScheduleId()) && interviewInfo.getInterviewerId().equals(operator.getUserId())){ + //1.5.2 后不再使用飞书日程 // 原面试官日程删除 - 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); - } +// 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); +// } } else if (Integer.parseInt(WorkflowStatusEnum.INTERVIEW_6.getCode()) == interviewBaseInfo.getStatus()) { //删除稽核信息 HyInspectionDO rawHyInspection = inspectionMapper.selectByInterviewPlanId(interviewBaseInfo.getInterviewPlanId()); From 87a957ddcd876cbba388a88ec1ba990806bc6560 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 18:06:59 +0800 Subject: [PATCH 13/23] =?UTF-8?q?=E5=8F=91=E8=B5=B7800=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=8A=A0=E7=9B=9F=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/request/CreateQualifyVerifyReq.java | 4 ++-- .../com/cool/store/request/RpcCreateQualifyVerifyReq.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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; From 081c0944b274d44915203a7a9415a4590abcae94 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Fri, 10 Nov 2023 11:03:08 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E5=BE=85?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=A2=84=E7=BA=A6=E9=9D=A2=E8=AF=95=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E4=B8=8D=E5=86=8D-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/HyPartnerInterviewPlanServiceImpl.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index 804fe3185..53a1ac7db 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -174,10 +174,8 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan if (CommonConstants.PENDING.equals(type)) { //设置对应时间段的被预约情况 HyPartnerInterviewBookSituation bookSituation = orderSituationMap.getOrDefault(partnerInterviewInfoVO.getStartTime().replace("/", "-"), new HyPartnerInterviewBookSituation(0, Boolean.FALSE)); - Integer appointmentCount = bookSituation.getBookingCount(); - //预约人数需要减去自己 - appointmentCount = appointmentCount == 0 ? appointmentCount : appointmentCount - 1; - partnerInterviewInfoVO.setAppointmentCount(appointmentCount); + //预约人数 + partnerInterviewInfoVO.setAppointmentCount(bookSituation.getBookingCount()); //是否被预约 partnerInterviewInfoVO.setBooked(bookSituation.getBooked()); } From fcd0b44f34b973556515079a206485b378fc25cc Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Fri, 10 Nov 2023 16:08:02 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=AB=AF?= =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=97=B6=E9=97=B4=E5=88=97=E8=A1=A8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/request/GetFreeBusyListReq.java | 8 ++++---- .../store/service/PartnerInterviewService.java | 9 ++++++++- .../impl/PartnerInterviewServiceImpl.java | 18 ++++++++++++++++++ .../store/controller/FeiShuController.java | 6 ++++++ .../store/controller/InterviewController.java | 9 +++++++++ 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java index 83f97bbaf..d64656c6e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/GetFreeBusyListReq.java @@ -16,12 +16,12 @@ public class GetFreeBusyListReq { private String startDate; @ApiModelProperty(value = "结束时间",required = true) private String endDate; - @ApiModelProperty("线索id(C端使用)") + @ApiModelProperty(value = "线索id", required = true) private String lineId; - @ApiModelProperty("加盟商用户ID(C端使用,与面试官id两个字段中必传一个,该字段传值时,线索id必传)") + @ApiModelProperty(value = "加盟商用户ID", required = true) private String partnerId; - @ApiModelProperty("面试官ID(B端使用,如果该字段传了,就查询该面试官的日程忙闲信息,否则查询加盟商对应的面试官的信息)") + @ApiModelProperty(value = "面试官ID", required = false) private String interviewerId; - @ApiModelProperty("是否是PC端请求") + @ApiModelProperty(value = "是否是PC端请求", required = true) private Boolean whetherPC; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java index fc090431c..e196ecba5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java @@ -3,10 +3,12 @@ package com.cool.store.service; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.dto.partner.LineQueryInterviewDto; import com.cool.store.exception.ApiException; +import com.cool.store.request.GetFreeBusyListReq; import com.cool.store.request.ModifyInterviewTimeReq; import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerPassLetterDetailVO; +import com.cool.store.vo.interview.GetFreeBusyListVO; public interface PartnerInterviewService { @@ -39,5 +41,10 @@ public interface PartnerInterviewService { void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException; - + /** + * 获取面试预约时间列表 + * @param request {@link GetFreeBusyListReq} + * @return {@link GetFreeBusyListVO} + */ + GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request); } 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 1d43cc19c..61c3e7f57 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 @@ -8,6 +8,7 @@ import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dto.log.ModifyInterviewTimeDTO; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.dto.partner.LineQueryInterviewDto; +import com.cool.store.entity.HyPartnerInterviewBookSituation; import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.entity.HyPartnerInterviewPlanDO; import com.cool.store.enums.ErrorCodeEnum; @@ -18,7 +19,9 @@ import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; import com.cool.store.mapper.HyPartnerInterviewMapper; import com.cool.store.mapper.HyPartnerInterviewPlanMapper; +import com.cool.store.request.GetFreeBusyListReq; import com.cool.store.request.ModifyInterviewTimeReq; +import com.cool.store.service.InterviewService; import com.cool.store.service.LogService; import com.cool.store.service.PartnerInterviewService; import com.cool.store.utils.CoolDateUtils; @@ -27,14 +30,21 @@ import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerPassLetterDetailVO; import com.cool.store.vo.PartnerUserInfoVO; +import com.cool.store.vo.interview.CalendarInfo; +import com.cool.store.vo.interview.FreeBusyInfo; +import com.cool.store.vo.interview.GetFreeBusyListVO; import com.cool.store.vo.interview.InterviewVO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; @Service @Slf4j @@ -49,6 +59,9 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { @Autowired private HyInterviewDAO interviewDAO; + @Autowired + private InterviewService interviewService; + @Value("${trtc.sdkAppId}") private Long sdkAppId; @@ -204,4 +217,9 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { logService.recordPartnerBizLog(operator,interviewInfo.getPartnerLineId(), OperateTypeEnum.MODIFY_INTERVIEW_TIME,log); } + @Override + public GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request) { + return interviewService.getFreeBusyList(request); + } + } diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/FeiShuController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/FeiShuController.java index 399ac1f5c..5184a8154 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/FeiShuController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/FeiShuController.java @@ -17,16 +17,22 @@ import org.springframework.web.bind.annotation.RestController; * @Author: young.yu * @Date: 2023-06-16 13:06 * @Description: + * @deprecated {@link InterviewController} */ @Api(tags = "飞书相关接口") @RestController @RequestMapping({"/feishu"}) +@Deprecated public class FeiShuController { + /** + * @deprecated {@link InterviewController#getFreeBusyList(GetFreeBusyListReq)} + */ @Autowired private FeiShuService feiShuService; @PostMapping("/interviewer/freebusy/list") @ApiOperation("查询日程忙闲信息") + @Deprecated public ResponseResult getFreeBusyList(@RequestBody GetFreeBusyListReq request) throws ApiException { GetFreeBusyListVO getFreeBusyListVO= feiShuService.getFreeBusyList(request); return ResponseResult.success(getFreeBusyListVO); diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java index ad22ef790..1a9d45055 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java @@ -6,6 +6,7 @@ import com.cool.store.dto.partner.PartnerGetPassLetterDetailDto; import com.cool.store.dto.partner.PartnerQueryInterviewDto; import com.cool.store.exception.ApiException; import com.cool.store.request.CreateAppointmentReq; +import com.cool.store.request.GetFreeBusyListReq; import com.cool.store.request.ModifyInterviewTimeReq; import com.cool.store.response.ResponseResult; import com.cool.store.service.InterviewService; @@ -14,6 +15,7 @@ import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerPassLetterDetailVO; import com.cool.store.vo.interview.CreateAppointmentVO; +import com.cool.store.vo.interview.GetFreeBusyListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -37,6 +39,13 @@ public class InterviewController { // return ResponseResult.success(interviewService.queryByPartnerId(dto.getPartnerId())); // } + @PostMapping("/freebusy/list") + @ApiOperation("查询各预约时间段情况") + public ResponseResult getFreeBusyList(@RequestBody GetFreeBusyListReq request) throws ApiException { + GetFreeBusyListVO getFreeBusyListVO= interviewService.getFreeBusyList(request); + return ResponseResult.success(getFreeBusyListVO); + } + @PostMapping("/queryByPartnerLineId") @ApiOperation("根据线索id查询面试信息") public ResponseResult queryByPartnerLineId(@RequestBody LineQueryInterviewDto dto) throws ApiException { From 53eb52227a4c0edcfe94e780cad89364fb0d6a22 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Mon, 13 Nov 2023 10:41:15 +0800 Subject: [PATCH 16/23] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=AC=E6=B5=B7?= =?UTF-8?q?=E7=A7=81=E6=B5=B7=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/enums/PageTurnTypeEnum.java | 23 ++ .../cool/store/dao/HyPartnerLineInfoDAO.java | 18 +- .../store/mapper/HyPartnerLineInfoMapper.java | 53 ++- .../mapper/HyPartnerIntentInfoMapper.xml | 19 +- .../mapper/HyPartnerInterviewPlanMapper.xml | 18 + .../mapper/HyPartnerLineInfoMapper.xml | 219 +++++++++- .../PartnerLineInfoAndBaseInfoDTO.java | 3 + .../store/dto/partner/PrivateSeaLineDTO.java | 2 + .../store/entity/HyPartnerIntentInfoDO.java | 3 + .../com/cool/store/request/LineRequest.java | 9 + .../request/PartnerIntentInfoRequest.java | 3 + .../request/PrivateSeaLineListRequest.java | 23 ++ .../com/cool/store/vo/LinePageInfoVo.java | 22 + .../cool/store/vo/PartnerIntentInfoVO.java | 3 + .../vo/PartnerLineInfoAndBaseInfoVO.java | 3 + .../cool/store/vo/PrivateSeaLineListVo.java | 3 + .../service/HyPartnerLineInfoService.java | 5 + .../impl/HyPartnerIntentInfoServiceImpl.java | 5 + .../impl/HyPartnerLineInfoServiceImpl.java | 382 ++++++++++-------- .../cool/store/controller/DeskController.java | 19 + 20 files changed, 657 insertions(+), 178 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/PageTurnTypeEnum.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/LinePageInfoVo.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/PageTurnTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/PageTurnTypeEnum.java new file mode 100644 index 000000000..5341a25b5 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/PageTurnTypeEnum.java @@ -0,0 +1,23 @@ +package com.cool.store.enums; + + +public enum PageTurnTypeEnum { + + PREVIOUS("previous"), + NEXT("next"); + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + private String text; + + PageTurnTypeEnum(String text) { + this.text = text; + } + +} 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 b334b8542..2dcd07adb 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 @@ -5,6 +5,7 @@ import com.cool.store.constants.CommonConstants; import com.cool.store.dto.partner.*; import com.cool.store.entity.HyPartnerLineInfoDO; import com.cool.store.mapper.HyPartnerLineInfoMapper; +import com.cool.store.vo.LinePageInfoVo; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; @@ -137,10 +138,10 @@ public class HyPartnerLineInfoDAO { String intentAreaName, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List userIdList, List developmentManagerList,List userPortraitIdList,List userChannelIdList, String updateStartTime, String updateEndTime ,String partnerName,String partnerMobile,String investmentManagerId,String userPortraitQueryType - ,String intentAreaQueryType,String lineStartTime,String lineEndTime,String userChannelQueryType){ + ,String intentAreaQueryType,String lineStartTime,String lineEndTime,String userChannelQueryType,String sortField,String sortOrder){ return hyPartnerLineInfoMapper.getPrivateSeaLineList( keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd, intentAreaName, acceptAdjustType, storeKeyword, storeKeywordType, userIdList,developmentManagerList,userPortraitIdList,userChannelIdList, updateStartTime, updateEndTime - ,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType); + ,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType,sortField,sortOrder); } @@ -211,5 +212,18 @@ public class HyPartnerLineInfoDAO { } return hyPartnerLineInfoMapper.getHyPartnerLineInfoList(lineIds,investmentManager); } + public LinePageInfoVo getPublicSeaPageInfoNext(Long lineId, String userNameKeyword, String phoneKeyword, String intentAreaName, Integer acceptAdjustType, String updateStartTime, String updateEndTime, List userIdList, String createStartTime, String createEndTime,String pageTurn){ + return hyPartnerLineInfoMapper.getPublicSeaPageInfoNext(lineId,userNameKeyword,phoneKeyword,intentAreaName,acceptAdjustType,updateStartTime,updateEndTime,userIdList, createStartTime, createEndTime,pageTurn); + } + + public List getPrivateSeaPageInfoNext(Long lineId,String keyword, String keywordType, String workflowStage, String workflowStatus, String deadlineStart, String deadlineEnd, + String intentAreaName, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List userIdList, + List developmentManagerList,List userPortraitIdList,List userChannelIdList, String updateStartTime, String updateEndTime + ,String partnerName,String partnerMobile,String investmentManagerId,String userPortraitQueryType + ,String intentAreaQueryType,String lineStartTime,String lineEndTime,String userChannelQueryType,String sortField,String sortOrder,Integer limit1,Integer limit2){ + return hyPartnerLineInfoMapper.getPrivateSeaPageInfoNext(lineId,keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd, + intentAreaName, acceptAdjustType, storeKeyword, storeKeywordType, userIdList,developmentManagerList,userPortraitIdList,userChannelIdList, updateStartTime, updateEndTime + ,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType,sortField,sortOrder,limit1,limit2); + } } 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 1f2453282..cd1acb64c 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 @@ -5,6 +5,7 @@ import com.cool.store.dto.partner.PartnerBlackListDTO; import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; import com.cool.store.dto.partner.StageCountDTO; import com.cool.store.entity.HyPartnerLineInfoDO; +import com.cool.store.vo.LinePageInfoVo; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -189,7 +190,9 @@ public interface HyPartnerLineInfoMapper { @Param("intentAreaQueryType") String intentAreaQueryType, @Param("lineStartTime") String lineStartTime, @Param("lineEndTime") String lineEndTime, - @Param("userChannelQueryType") String userChannelQueryType); + @Param("userChannelQueryType") String userChannelQueryType, + @Param("sortField") String sortField, + @Param("sortOrder") String sortOrder); /** @@ -262,4 +265,52 @@ public interface HyPartnerLineInfoMapper { * @return 线索转让次数 */ Integer getTransferTimes(@Param("lineId") Long partnerLineId); + + + /** + * + * @return + */ + List getPrivateSeaPageInfoNext(@Param("lineId") Long lineId,@Param("keyword") String keyword, + @Param("keywordType") String keywordType, + @Param("workflowStage") String workflowStage, + @Param("workflowStatus") String workflowStatus, + @Param("deadlineStart") String deadlineStart, + @Param("deadlineEnd") String deadlineEnd, + @Param("intentAreaName") String intentAreaName, + @Param("acceptAdjustType") Integer acceptAdjustType, + @Param("storeKeyword") String storeKeyword, + @Param("storeKeywordType") String storeKeywordType, + @Param("userIdList") List userIdList, + @Param("developmentManagerList") List developmentManagerList, + @Param("userPortraitIdList") List userPortraitIdList, + @Param("userChannelIdList") List userChannelIdList, + @Param("updateStartTime") String updateStartTime, + @Param("updateEndTime") String updateEndTime, + @Param("partnerName") String partnerName, + @Param("partnerMobile") String partnerMobile, + @Param("investmentManagerId") String investmentManagerId, + @Param("userPortraitQueryType") String userPortraitQueryType, + @Param("intentAreaQueryType") String intentAreaQueryType, + @Param("lineStartTime") String lineStartTime, + @Param("lineEndTime") String lineEndTime, + @Param("userChannelQueryType") String userChannelQueryType, + @Param("sortField") String sortField, + @Param("sortOrder") String sortOrder, + @Param("limit1") Integer limit1, + @Param("limit2") Integer limit2 + ); + + LinePageInfoVo getPublicSeaPageInfoNext(@Param("lineId") Long lineId,@Param("userNameKeyword") String userNameKeyword, + @Param("phoneKeyword") String phoneKeyword, + @Param("intentAreaName") String intentAreaName, + @Param("acceptAdjustType") Integer acceptAdjustType, + @Param("updateStartTime") String updateStartTime, + @Param("updateEndTime") String updateEndTime, + @Param("userIdList") List userIdList, + @Param("createStartTime") String createStartTime, + @Param("createEndTime") String createEndTime, + @Param("pageTurn") String pageTurn + ); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml index 5cbedfa80..fb2ef946e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml @@ -13,6 +13,7 @@ + @@ -35,7 +36,7 @@ id, partner_id, partner_line_id, live_area, want_shop_area, accept_adjust_type, is_have_want_shop, want_shop_info, max_budget, money_source, money_prove, education, work_year, is_have_work_exp, - work_exp, is_consumer, other_band, brand_strength, need_improve, strength, weakness, + work_exp, is_consumer, other_band, brand_strength, need_improve, strength, weakness,credit_prove, create_time, update_time,detailed_address,email ,acquaintance_flag,acquaintance_name,acquaintance_relationship_type,other_relationship_type @@ -428,6 +438,9 @@ money_prove = #{record.moneyProve}, + + credit_prove = #{record.creditProve}, + education = #{record.education}, diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index b6d12c7bf..8845dac30 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -335,6 +335,24 @@ 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 + @@ -787,5 +817,190 @@ and partner_line_id = #{lineId} -- and deleted = 0 + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java index e9f9b6b8e..6b6259fa2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java @@ -71,6 +71,9 @@ public class PartnerLineInfoAndBaseInfoDTO { @ApiModelProperty("意向开店区域") private String wantShopArea; + @ApiModelProperty("EC意向开店区域") + private String ecWantShopArea; + @ApiModelProperty("意向开店区域名称") private String wantShopAreaName; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PrivateSeaLineDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PrivateSeaLineDTO.java index e9e7f83e2..7f1797d8a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PrivateSeaLineDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PrivateSeaLineDTO.java @@ -83,4 +83,6 @@ public class PrivateSeaLineDTO { private String ecWantShopArea; + private String allotTime; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerIntentInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerIntentInfoDO.java index cf6ae8651..6e50ea613 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerIntentInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerIntentInfoDO.java @@ -105,6 +105,9 @@ public class HyPartnerIntentInfoDO implements Serializable { @ApiModelProperty("邮箱地址") private String email; + @ApiModelProperty("征信证明") + private String creditProve; + private Integer acquaintanceFlag; private String acquaintanceName; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java index 00326d61f..7dfe7979e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java @@ -41,6 +41,15 @@ public class LineRequest extends PageInfoRequest{ @ApiModelProperty("创建结束时间") private String createEndTime; + @ApiModelProperty("线索id") + private Long lineId; + + + /** + * pageTurn: previous(上一页) next(下一页) + */ + @ApiModelProperty("排序顺序") + private String pageTurn; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerIntentInfoRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerIntentInfoRequest.java index 87a603404..adaad2a43 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerIntentInfoRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerIntentInfoRequest.java @@ -54,6 +54,9 @@ public class PartnerIntentInfoRequest { @ApiModelProperty("资金证明") private List moneyProve; + @ApiModelProperty("征信证明") + private List creditProve; + @ApiModelProperty("学历") private String education; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/PrivateSeaLineListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/PrivateSeaLineListRequest.java index 81b9e74f4..64490145c 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/PrivateSeaLineListRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/PrivateSeaLineListRequest.java @@ -80,5 +80,28 @@ public class PrivateSeaLineListRequest extends PageInfoRequest { @ApiModelProperty("创建时间_结束") private String lineEndTime; + @ApiModelProperty("线索id") + private Long lineId; + + /** + * deadline 截至时间 + * updateTime 更新时间 + * allotTime 分配时间 + */ + @ApiModelProperty("排序字段") + private String sortField; + + /** + * sortOrder: descend(降序) ascend(升序) + */ + @ApiModelProperty("排序顺序") + private String sortOrder; + + /** + * pageTurn: previous(上一页) next(下一页) + */ + @ApiModelProperty("排序顺序") + private String pageTurn; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/LinePageInfoVo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/LinePageInfoVo.java new file mode 100644 index 000000000..6cee107ae --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/LinePageInfoVo.java @@ -0,0 +1,22 @@ +package com.cool.store.vo; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +/** + * @Author hxd + */ +@Data +@ApiModel +@Slf4j +public class LinePageInfoVo { + + @ApiModelProperty("线索ID") + private Long lineId; + + @ApiModelProperty("加盟商用户ID") + private String partnerId; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentInfoVO.java index 5f8965dcc..52d1fba2a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentInfoVO.java @@ -66,6 +66,9 @@ public class PartnerIntentInfoVO { @ApiModelProperty("资金证明") private List moneyProve; + @ApiModelProperty("征信证明") + private List creditProve; + @ApiModelProperty("学历") private String education; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java index a62494424..e84e1a590 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java @@ -106,4 +106,7 @@ public class PartnerLineInfoAndBaseInfoVO { private String developmentDirectorName; @ApiModelProperty("开发主管手机号") private String developmentDirectorMobile; + + @ApiModelProperty("EC意向开店区域名称") + private String ecWantShopAreaName; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PrivateSeaLineListVo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PrivateSeaLineListVo.java index e81f37b4f..043c09f4b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PrivateSeaLineListVo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PrivateSeaLineListVo.java @@ -96,6 +96,8 @@ public class PrivateSeaLineListVo { private Date startTime; + private String allotTime; + private String investmentManagerMobile; @ApiModelProperty("用户画像") @@ -136,6 +138,7 @@ public class PrivateSeaLineListVo { privateSeaLineListVo.setRecommendPartnerName(x.getRecommendPartnerName()); privateSeaLineListVo.setRecommendPartnerMobile(x.getRecommendPartnerMobile()); privateSeaLineListVo.setWorkflowStage(x.getWorkflowStage()); + privateSeaLineListVo.setAllotTime(x.getAllotTime()); privateSeaLineListVo.setWantShopArea(x.getWantShopArea()); privateSeaLineListVo.setWorkflowStage(x.getWorkflowStage()); privateSeaLineListVo.setStartTime(hyPartnerInterviewPlanDOMap.getOrDefault(x.getLineId(),new HyPartnerInterviewPlanDO()).getStartTime()); 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 a4ca3c46e..1528c4c22 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 @@ -176,4 +176,9 @@ public interface HyPartnerLineInfoService { * @return */ PartnerSimpleBaseInfoVO queryBaseInfo(Long partnerLineId); + + LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest privateSeaLineListRequest, Boolean aFalse); + + LinePageInfoVo publicSeaPageDetailNext(String userId, LineRequest lineRequest); + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java index b242f7d31..d355eaf99 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java @@ -475,6 +475,9 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic if(CollectionUtils.isNotEmpty(request.getMoneyProve())){ intentInfoDO.setMoneyProve(JSONObject.toJSONString(request.getMoneyProve())); } + if(CollectionUtils.isNotEmpty(request.getCreditProve())){ + intentInfoDO.setCreditProve(JSONObject.toJSONString(request.getCreditProve())); + } intentInfoDO.setEducation(request.getEducation()); intentInfoDO.setWorkYear(request.getWorkYear()); intentInfoDO.setIsHaveWorkExp(request.getIsHaveWorkExp()); @@ -510,6 +513,8 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic partnerIntentInfoVO.setIsHaveWorkExp(hyPartnerIntentInfoDO.getIsHaveWorkExp()); partnerIntentInfoVO.setMoneyProve(StringUtil.isEmpty(hyPartnerIntentInfoDO.getMoneyProve())? Lists.newArrayList(): JSONObject.parseArray(hyPartnerIntentInfoDO.getMoneyProve(),String.class)); + partnerIntentInfoVO.setCreditProve(StringUtil.isEmpty(hyPartnerIntentInfoDO.getCreditProve())? + Lists.newArrayList(): JSONObject.parseArray(hyPartnerIntentInfoDO.getCreditProve(),String.class)); partnerIntentInfoVO.setMoneySource(hyPartnerIntentInfoDO.getMoneySource()); partnerIntentInfoVO.setWorkYear(hyPartnerIntentInfoDO.getWorkYear()); partnerIntentInfoVO.setWorkExp(hyPartnerIntentInfoDO.getWorkExp()); 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 fc2781e21..76af43a01 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 @@ -37,6 +37,7 @@ import javax.annotation.Resource; import java.text.MessageFormat; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Author suzhuhong @@ -84,7 +85,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Resource HyPartnerUserChannelDAO hyPartnerUserChannelDAO; -// @Autowired + // @Autowired // private NoticeService noticeService; @Autowired private EventCenterHttpRequest eventCenterHttpRequest; @@ -101,6 +102,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Autowired private WechatMiniAppService wechatMiniAppService; + @Override public StageCountVO selectStagePendingCount(String userId) { StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStagePendingCount(userId); @@ -116,13 +118,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId) { PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO = hyPartnerLineInfoDAO.selectPartnerLineInfoAndBaseInfo(lineId); - if (partnerLineInfoAndBaseInfoDTO==null){ + if (partnerLineInfoAndBaseInfoDTO == null) { throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); } PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = convertPartnerLineInfoAndBaseInfoDTOToVo(partnerLineInfoAndBaseInfoDTO); String userPortrait = partnerLineInfoAndBaseInfoDTO.getUserPortrait(); - if (StringUtils.isNotEmpty(userPortrait)){ + if (StringUtils.isNotEmpty(userPortrait)) { Map userPortraitMap = labelService.getUserPortraitMap(Arrays.asList(userPortrait)); List userPortraitDTOS = userPortraitMap.entrySet().stream() @@ -132,42 +134,42 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } List userIds = new ArrayList<>(); - if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getPassUserId())){ + if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getPassUserId())) { userIds.add(partnerLineInfoAndBaseInfoDTO.getPassUserId()); } - if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getInvestmentManager())){ + if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getInvestmentManager())) { userIds.add(partnerLineInfoAndBaseInfoVO.getInvestmentManager()); } - if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector())){ + if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector())) { userIds.add(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector()); } List userList = enterpriseUserDAO.getUserInfoByUserIds(userIds); Map userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data)); - partnerLineInfoAndBaseInfoVO.setPassUserName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(),new EnterpriseUserDO()).getName()); - partnerLineInfoAndBaseInfoVO.setPassUserMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(),new EnterpriseUserDO()).getMobile()); - partnerLineInfoAndBaseInfoVO.setInvestmentManagerName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(),new EnterpriseUserDO()).getName()); - partnerLineInfoAndBaseInfoVO.setInvestmentManagerPhone(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(),new EnterpriseUserDO()).getMobile()); - partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(),new EnterpriseUserDO()).getName()); - partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(),new EnterpriseUserDO()).getMobile()); - if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getWantShopArea())){ - HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(partnerLineInfoAndBaseInfoDTO.getWantShopArea())); - partnerLineInfoAndBaseInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/"," ")); + partnerLineInfoAndBaseInfoVO.setPassUserName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(), new EnterpriseUserDO()).getName()); + partnerLineInfoAndBaseInfoVO.setPassUserMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(), new EnterpriseUserDO()).getMobile()); + partnerLineInfoAndBaseInfoVO.setInvestmentManagerName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(), new EnterpriseUserDO()).getName()); + partnerLineInfoAndBaseInfoVO.setInvestmentManagerPhone(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(), new EnterpriseUserDO()).getMobile()); + partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(), new EnterpriseUserDO()).getName()); + partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(), new EnterpriseUserDO()).getMobile()); + if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getWantShopArea())) { + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(partnerLineInfoAndBaseInfoDTO.getWantShopArea())); + partnerLineInfoAndBaseInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/", " ")); } return partnerLineInfoAndBaseInfoVO; } @Override public PageInfo lastMonthCloseLine(String userId, Integer pageSize, Integer pageNumber) { - PageHelper.startPage(pageNumber,pageSize); - String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(),-30), CoolDateUtils.DATE_FORMAT_SEC); + PageHelper.startPage(pageNumber, pageSize); + String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(), -30), CoolDateUtils.DATE_FORMAT_SEC); PageInfo hyPartnerLineInfoDOPageInfo = new PageInfo(hyPartnerLineInfoDAO.lastMonthCloseLine(userId, lastMonthTodayDate)); List list = hyPartnerLineInfoDOPageInfo.getList(); List closeUserIds = list.stream().filter(o -> Objects.nonNull(o.getCloseUserId())).map(HyPartnerLineInfoDO::getCloseUserId).distinct().collect(Collectors.toList()); Map userNamePhoneMap = enterpriseUserDAO.getUserNameAndMobile(closeUserIds); List partnerIdList = list.stream().map(HyPartnerLineInfoDO::getPartnerId).collect(Collectors.toList()); List hyPartnerList = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList); - Map partnerMap = hyPartnerList.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data->data)); + Map partnerMap = hyPartnerList.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data)); List resultList = PartnerLineInfoVO.convertList(list, userNamePhoneMap, partnerMap); hyPartnerLineInfoDOPageInfo.setList(resultList); return hyPartnerLineInfoDOPageInfo; @@ -175,22 +177,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override @Transactional - public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request,Boolean sendFlag) throws ApiException { - if (StringUtil.isBlank(request.getUserId())||request.getLineId()==null){ + public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request, Boolean sendFlag) throws ApiException { + if (StringUtil.isBlank(request.getUserId()) || request.getLineId() == null) { throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getLineId()); //如果招商经理是当前登录用户,则无需转让 - if (request.getUserId().equals(hyPartnerLineInfoDO.getInvestmentManager())){ + if (request.getUserId().equals(hyPartnerLineInfoDO.getInvestmentManager())) { throw new ServiceException(ErrorCodeEnum.NO_TRANSFER_REQUIRED); } //校验 合格资格面试阶段 面试状态已开始 不允许转让 - 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()); + 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())){ + if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())) { userIdList.add(hyPartnerLineInfoDO.getInvestmentManager()); } List userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList); @@ -198,9 +200,9 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { //更新面试官(预约面试全阶段和合作资格面试待面试阶段都需要变更面试官) //待预约状态及之前还未生成面试信息,因此不做变更面试官操作 - if ( (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) - || (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())) && !WorkflowStatusEnum.RESERVATION_0.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) { - workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request); + if ((WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) + || (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())); @@ -210,15 +212,15 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { Map feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(userIds); List feishuUserIds = new ArrayList<>(feishuUserIdsByUserIds.values()); //发送飞书工作通知 - if (sendFlag){ - eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,feishuUserIds,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile()); + if (sendFlag) { + eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER, feishuUserIds, dateTime, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile()); } //如果是面试预约待审批阶段还要发送面试预约申请通知 if (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.RESERVATION_1.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) { HyPartnerInterviewPlanDO interviewPlanByLine = hyPartnerInterviewPlanDAO.getInterviewPlanByLineId(request.getLineId()); - if (interviewPlanByLine!=null && interviewPlanByLine.getStartTime()!=null ){ + if (interviewPlanByLine != null && interviewPlanByLine.getStartTime() != null) { String startTime = DateUtil.format(interviewPlanByLine.getStartTime(), CoolDateUtils.DATE_FORMAT_SEC_7); - eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT, feishuUserIds, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile(),startTime); + eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT, feishuUserIds, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile(), startTime); } } @@ -231,10 +233,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()), hyPartnerLineInfoDO.getWorkflowStatus(), ""); TransferInvestmentManagerLogDTO logDTO = TransferInvestmentManagerLogDTO.builder().operateUserId(user.getUserId()).operateUsername(user.getName()) - .beforeInvestmentManagerUsername(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getName()) - .beforeInvestmentManagerMobile(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getMobile()) - .afterInvestmentManagerMobile(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getMobile()) - .afterInvestmentManagerUsername(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getName()) + .beforeInvestmentManagerUsername(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(), new EnterpriseUserDO()).getName()) + .beforeInvestmentManagerMobile(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(), new EnterpriseUserDO()).getMobile()) + .afterInvestmentManagerMobile(userDOMap.getOrDefault(request.getUserId(), new EnterpriseUserDO()).getMobile()) + .afterInvestmentManagerUsername(userDOMap.getOrDefault(request.getUserId(), new EnterpriseUserDO()).getName()) .mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build(); lineLogInfo.setData(logDTO); hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); @@ -243,31 +245,31 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public List batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException { - if (CollectionUtils.isEmpty(request.getLineIds())||StringUtils.isEmpty(request.getUserId())){ + if (CollectionUtils.isEmpty(request.getLineIds()) || StringUtils.isEmpty(request.getUserId())) { throw new ServiceException(ErrorCodeEnum.PARAMS_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())) + 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()) { + for (Long lineId : request.getLineIds()) { TransferInvestmentManagerRequest transferInvestmentManagerRequest = new TransferInvestmentManagerRequest(); transferInvestmentManagerRequest.setUserId(request.getUserId()); transferInvestmentManagerRequest.setLineId(lineId); try { - this.transferInvestmentManager(user,transferInvestmentManagerRequest,Boolean.FALSE); + this.transferInvestmentManager(user, transferInvestmentManagerRequest, Boolean.FALSE); successLineIds.add(lineId); } catch (Exception e) { - log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{},e:{}",lineId,e.getMessage()); + log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{},e:{}", lineId, e.getMessage()); HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(lineId)); BatchTransferVO batchTransferVO = new BatchTransferVO(); batchTransferVO.setErrorMessage(e.getMessage()); - if (e instanceof ServiceException){ - batchTransferVO.setErrorMessage(((ServiceException)e).getErrorMessage()); + if (e instanceof ServiceException) { + batchTransferVO.setErrorMessage(((ServiceException) e).getErrorMessage()); } batchTransferVO.setPartnerMobile(hyPartnerUserInfoDO.getMobile()); batchTransferVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername()); @@ -277,37 +279,37 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { Map feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(Arrays.asList(request.getUserId())); ArrayList feishuUserIds = new ArrayList<>(feishuUserIdsByUserIds.values()); try { - if (successLineIds.size()>1){ - eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER,feishuUserIds,successLineIds.size(),DateUtil.format(new Date(),CoolDateUtils.DATE_FORMAT_SEC_7)); - }else if (successLineIds.size()==1){ + if (successLineIds.size() > 1) { + eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER, feishuUserIds, 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))); - eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,feishuUserIds,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile()); + eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER, feishuUserIds, dateTime, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile()); } } catch (Exception e) { - log.info("batchTransferInvestmentManager_error:{}",e.getMessage()); + log.info("batchTransferInvestmentManager_error:{}", e.getMessage()); } return result; } @Override - public Boolean allocationInvestmentManager(LoginUserInfo operateUser,String userId, List lineIdList) { - if (StringUtils.isEmpty(userId)|| CollectionUtils.isEmpty(lineIdList)){ + public Boolean allocationInvestmentManager(LoginUserInfo operateUser, String userId, List lineIdList) { + if (StringUtils.isEmpty(userId) || CollectionUtils.isEmpty(lineIdList)) { throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } EnterpriseUserDO user = enterpriseUserDAO.getUserInfoById(userId); - if (user==null){ + if (user == null) { throw new ServiceException(ErrorCodeEnum.INVESTMENT_MANAGER_NOT_EXIST); } //加盟上线索集合 - List partnerLineInfoList= hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList); + List partnerLineInfoList = hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList); //过滤出已结束的线索 这块线索需要重新生成新的线索 - List closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList()); + List closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList()); List closeLineIdList = closeLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList()); //已结束的线索 需要重新生成一条新的线索 List list = new ArrayList<>(); - closeLineList.stream().forEach(x->{ + closeLineList.stream().forEach(x -> { HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); hyPartnerLineInfoDO.setPartnerId(x.getPartnerId()); hyPartnerLineInfoDO.setInvestmentManager(userId); @@ -318,7 +320,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { }); hyPartnerLineInfoDAO.batchInsert(list); List hyPartnerBaseInfoDOS = new ArrayList<>(); - list.forEach(x->{ + list.forEach(x -> { HyPartnerBaseInfoDO newHyPartnerBaseInfoDO = new HyPartnerBaseInfoDO(); newHyPartnerBaseInfoDO.setPartnerId(x.getPartnerId()); newHyPartnerBaseInfoDO.setPartnerLineId(x.getId()); @@ -328,7 +330,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { //将老的线索置为删除状态 hyPartnerLineInfoDAO.batchDeleted(closeLineIdList); //没有结束的线索直接分配招商经理 - List otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList()); + List otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList()); List otherLineIdList = otherLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList()); hyPartnerLineInfoDAO.updateInvestmentManager(userId, otherLineIdList); //添加日志 @@ -357,13 +359,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public PageInfo getBlackList(LineRequest LineRequest) { String intentAreaName = getIntentAreaName(LineRequest.getIntentArea()); - PageHelper.startPage(LineRequest.getPageNum(),LineRequest.getPageSize()); - PageInfo blackListDTOPageInfo = new PageInfo(hyPartnerLineInfoDAO.getBlackList(LineRequest.getUserNameKeyword(), LineRequest.getPhoneKeyword(),intentAreaName, LineRequest.getAcceptAdjustType())); + PageHelper.startPage(LineRequest.getPageNum(), LineRequest.getPageSize()); + PageInfo blackListDTOPageInfo = new PageInfo(hyPartnerLineInfoDAO.getBlackList(LineRequest.getUserNameKeyword(), LineRequest.getPhoneKeyword(), intentAreaName, LineRequest.getAcceptAdjustType())); List list = blackListDTOPageInfo.getList(); List closeUserIdList = list.stream().map(PartnerBlackListDTO::getCloseUserId).collect(Collectors.toList()); Map userPhoneMap = enterpriseUserDAO.getUserNameAndMobile(closeUserIdList); List result = new ArrayList<>(); - list.stream().forEach(x->{ + list.stream().forEach(x -> { BlackListVO blackListVO = convertPartnerBlackListDTOToVo(x); blackListVO.setCloseUserPhone(userPhoneMap.get(x.getCloseUserId())); blackListVO.setCloseUserName(userPhoneMap.get(x.getCloseUserId())); @@ -375,7 +377,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason) throws ApiException { - if (lineId==null){ + if (lineId == null) { throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } HyPartnerLineInfoDO line = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); @@ -393,11 +395,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { hyFollowTaskDAO.cancelUndoFollowTask(lineId); //公海线索不需要处理子流程线索 - if (!LineStatusEnum.PUBLIC_SEAS.getCode().equals(lineStatus)){ + if (!LineStatusEnum.PUBLIC_SEAS.getCode().equals(lineStatus)) { CloseFollowRequest closeFollowRequest = new CloseFollowRequest(); closeFollowRequest.setLineId(lineId); closeFollowRequest.setRejectRealReason(joinReason); - workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()),closeFollowRequest); + workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()), closeFollowRequest); } //添加日志 @@ -410,13 +412,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { lineLogInfo.setData(logDTO); hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); - return Boolean.TRUE; + return Boolean.TRUE; } @Override - public Boolean removeBlackList(LoginUserInfo user,Long lineId, Integer status, String removeReason) { + public Boolean removeBlackList(LoginUserInfo user, Long lineId, Integer status, String removeReason) { //移除黑名单 黑名单线索置为删除状态 新增一条线索 - if (lineId==null){ + if (lineId == null) { throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } HyPartnerLineInfoDO hyPartnerLineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); @@ -456,53 +458,53 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override @Transactional(rollbackFor = Exception.class) - public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) throws ApiException { + public Boolean closeOrPassFollow(LoginUserInfo user, CloseFollowRequest closeFollowRequest) throws ApiException { //该方法中user可能为空,注意处理空指针的情况 - if(user == null){ + if (user == null) { user = new LoginUserInfo(); } HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId()); - if (hyPartnerLineInfoDO==null){ + if (hyPartnerLineInfoDO == null) { throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); } - if (hyPartnerLineInfoDO.getLineStatus()==0){ + if (hyPartnerLineInfoDO.getLineStatus() == 0) { throw new ServiceException(ErrorCodeEnum.PUBLIC_LINE_NOT_OPERATE); } String oldWorkflowStage = hyPartnerLineInfoDO.getWorkflowStage(); String oldWorkflowStatus = hyPartnerLineInfoDO.getWorkflowStatus(); //通过 - if ("pass".equals(closeFollowRequest.getType())){ + if ("pass".equals(closeFollowRequest.getType())) { hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode()); hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode()); - hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateFormatDay(new Date(),2)); + hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateFormatDay(new Date(), 2)); hyPartnerLineInfoDO.setPassReason(closeFollowRequest.getPassReason()); - if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){ + if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())) { hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile())); } HyPartnerBaseInfoDO hy = hyPartnerBaseInfoDAO.getByPartnerLineId(hyPartnerLineInfoDO.getId()); hy.setPassReason(closeFollowRequest.getPassReason()); hy.setPassTime(new Date()); hy.setPassUserId(user.getUserId()); - if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){ + if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())) { hy.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile())); } hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(hy); - eventCenterHttpRequest.sendSmsVariable(hy.getMobile(), SMSMsgEnum.INTENTION_APPLY_PASS,DateUtil.formatDateTime(hyPartnerLineInfoDO.getDeadline()),wechatMiniAppService.getMiniAppUrl()); + eventCenterHttpRequest.sendSmsVariable(hy.getMobile(), SMSMsgEnum.INTENTION_APPLY_PASS, DateUtil.formatDateTime(hyPartnerLineInfoDO.getDeadline()), wechatMiniAppService.getMiniAppUrl()); } //拒绝 - if ("reject".equals(closeFollowRequest.getType())){ + if ("reject".equals(closeFollowRequest.getType())) { //当前节点 拒绝的子状态 String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage()); hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus); //15天 冷静期 String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId()); - redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest)); - hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15)); + redisUtilPool.setString(coolingPeriodFirstLoginCacheKey, JSONObject.toJSONString(closeFollowRequest)); + hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(), 15)); hyPartnerLineInfoDO.setRejectPublicReason(closeFollowRequest.getRejectPublicReason()); hyPartnerLineInfoDO.setRejectRealReason(closeFollowRequest.getRejectRealReason()); - if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){ + if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())) { hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile())); } hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode()); @@ -511,17 +513,17 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { //作废待完成&已逾期的任务 hyFollowTaskDAO.cancelUndoFollowTask(closeFollowRequest.getLineId()); //各阶段单独的逻辑 - workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),closeFollowRequest); + workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()), closeFollowRequest); } //面试超时 - if ("overtime_interview".equals(closeFollowRequest.getType())){ + if ("overtime_interview".equals(closeFollowRequest.getType())) { //面试超时未预约 hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_8.getCode()); //15天 冷静期 String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId()); - redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest)); - hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15)); + redisUtilPool.setString(coolingPeriodFirstLoginCacheKey, JSONObject.toJSONString(closeFollowRequest)); + hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(), 15)); hyPartnerLineInfoDO.setRejectPublicReason(closeFollowRequest.getRejectPublicReason()); hyPartnerLineInfoDO.setRejectRealReason(closeFollowRequest.getRejectRealReason()); hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode()); @@ -533,7 +535,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { //通过 拒绝添加日志 - if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())&&"reject".equals(closeFollowRequest.getType())){ + if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && "reject".equals(closeFollowRequest.getType())) { LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(), user.getName(), OperateTypeEnum.CLOSE_FOLLOW, WorkflowStageEnum.getWorkflowStageByCode(oldWorkflowStage), @@ -548,7 +550,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } - @Override public PageInfo publicSeaLineList(String userId, LineRequest lineRequest) { //确认是招商经理还是部门负责人 @@ -564,12 +565,12 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { // userIds = Arrays.asList(userId); // } String intentAreaName = getIntentAreaName(lineRequest.getIntentArea()); - PageHelper.startPage(lineRequest.getPageNum(),lineRequest.getPageSize()); + PageHelper.startPage(lineRequest.getPageNum(), lineRequest.getPageSize()); PageInfo publicSeaLineList = new PageInfo(hyPartnerLineInfoDAO.getPublicSeaLineList(lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(), intentAreaName, lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null, lineRequest.getCreateStartTime(), lineRequest.getCreateEndTime())); List list = publicSeaLineList.getList(); - if (CollectionUtils.isEmpty(list)){ + if (CollectionUtils.isEmpty(list)) { return new PageInfo<>(); } //上一次结束的线索 @@ -578,7 +579,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { List investmentManagerIds = partnerLastLine.stream().map(HyPartnerLineInfoDO::getInvestmentManager).collect(Collectors.toList()); List userInfoList = enterpriseUserDAO.getUserInfoByUserIds(investmentManagerIds); Map nameMobileMap = userInfoList.stream().filter(x -> - StringUtil.isNotEmpty(x.getMobile())).collect(Collectors.toMap(EnterpriseUserDO::getUserId, v-> v.getName() + " "+ v.getMobile())); + StringUtil.isNotEmpty(x.getMobile())).collect(Collectors.toMap(EnterpriseUserDO::getUserId, v -> v.getName() + " " + v.getMobile())); Map hyPartnerLineInfoDOMap = partnerLastLine.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getPartnerId, data -> data)); List followCountList = hyPartnerLineInfoDAO.getFollowCountList(partnerIdList); @@ -590,26 +591,26 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { List userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PublicSeaLineDTO::getUserChannelId).collect(Collectors.toList()); Map channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds); - List userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PublicSeaLineDTO::getUserPortrait).collect(Collectors.toList()); + List userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait())).map(PublicSeaLineDTO::getUserPortrait).collect(Collectors.toList()); Map userPortraitMap = labelService.getUserPortraitMap(userPortraitList); List result = new ArrayList<>(); - list.forEach(x->{ + list.forEach(x -> { PublicSeaLineListVo publicSeaLineListVo = new PublicSeaLineListVo(); publicSeaLineListVo.setPartnerId(x.getPartnerId()); - publicSeaLineListVo.setCreateTime(DateUtil.format(x.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC_2)); + publicSeaLineListVo.setCreateTime(DateUtil.format(x.getCreateTime(), CoolDateUtils.DATE_FORMAT_SEC_2)); publicSeaLineListVo.setPartnerUserName(x.getUserName()); publicSeaLineListVo.setPartnerUserPhone(x.getMobile()); String phoneAddress = x.getPhoneAddress(); - if (StringUtils.isEmpty(phoneAddress)){ + if (StringUtils.isEmpty(phoneAddress)) { phoneAddress = hyPhoneLocationService.handleHyPhoneAddress(x.getMobile()); } publicSeaLineListVo.setPhoneAddress(phoneAddress); publicSeaLineListVo.setWantShopArea(x.getWantShopArea()); publicSeaLineListVo.setEcWantShopArea(x.getEcWantShopArea()); - publicSeaLineListVo.setUpdateTime(DateUtil.format(x.getUpdateTime(),CoolDateUtils.DATE_FORMAT_SEC_2)); + publicSeaLineListVo.setUpdateTime(DateUtil.format(x.getUpdateTime(), CoolDateUtils.DATE_FORMAT_SEC_2)); publicSeaLineListVo.setId(x.getLineId()); publicSeaLineListVo.setAcceptAdjustType(x.getAcceptAdjustType()); - publicSeaLineListVo.setFollowCount(countMap.getOrDefault(x.getPartnerId(),0)); + publicSeaLineListVo.setFollowCount(countMap.getOrDefault(x.getPartnerId(), 0)); HyPartnerLineInfoDO hy = hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerLineInfoDO()); publicSeaLineListVo.setRejectPublicReason(hy.getRejectPublicReason()); publicSeaLineListVo.setRejectRealReason(hy.getRejectRealReason()); @@ -627,8 +628,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } - - @Override public PageInfo privateSeaLineList(String userId, PrivateSeaLineListRequest request,Boolean allPrivateSeaFlag) { //allPrivateSeaFlag 为true的时候 查询全量私海 @@ -642,7 +641,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(), intentAreaName, request.getAcceptAdjustType(), request.getStoreKeyword(), request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(),userIdsByScope.getDevelopmentUserIds(),request.getUserPortraitIdList(),request.getUserChannelIdList() , request.getUpdateStartTime(), request.getUpdateEndTime(), request.getPartnerName(),request.getPartnerMobile(),request.getInvestmentManagerId(),request.getUserPortraitQueryType() - ,request.getIntentAreaQueryType(),request.getLineStartTime(),request.getLineEndTime(),request.getUserChannelQueryType())); + ,request.getIntentAreaQueryType(),request.getLineStartTime(),request.getLineEndTime(),request.getUserChannelQueryType(),request.getSortField(),request.getSortOrder())); List list = privateLineList.getList(); if (CollectionUtils.isEmpty(list)){ return privateLineList; @@ -653,20 +652,20 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { Map devManagerMap = new HashMap<>(); List devManagerIdList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getDevelopmentManager())).map(PrivateSeaLineDTO::getDevelopmentManager).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(devManagerIdList)){ + if (CollectionUtils.isNotEmpty(devManagerIdList)) { List devManagerList = enterpriseUserDAO.getUserInfoByUserIds(devManagerIdList); devManagerMap = devManagerList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName)); } - List wantShopAreaList = list.stream().filter(x->StringUtils.isNotEmpty(x.getWantShopArea())).map(PrivateSeaLineDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList()); + List wantShopAreaList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getWantShopArea())).map(PrivateSeaLineDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList()); Map wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList); List userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PrivateSeaLineDTO::getUserChannelId).collect(Collectors.toList()); Map channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds); - List userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PrivateSeaLineDTO::getUserPortrait).collect(Collectors.toList()); + List userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait())).map(PrivateSeaLineDTO::getUserPortrait).collect(Collectors.toList()); Map userPortraitMap = labelService.getUserPortraitMap(userPortraitList); - List result = PrivateSeaLineListVo.convertList(list, devManagerMap, wantShopAreaNameMap,hyPartnerInterviewPlanDOMap,channelMap,userPortraitMap); + List result = PrivateSeaLineListVo.convertList(list, devManagerMap, wantShopAreaNameMap, hyPartnerInterviewPlanDOMap, channelMap, userPortraitMap); privateLineList.setList(result); return privateLineList; } @@ -689,14 +688,14 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public List getLineFollowHistory(String partnerId) { List lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId); - if (CollectionUtils.isEmpty(lineFollowHistoryList)){ + if (CollectionUtils.isEmpty(lineFollowHistoryList)) { return new ArrayList<>(); } List result = new ArrayList<>(); - lineFollowHistoryList.forEach(x->{ + lineFollowHistoryList.forEach(x -> { LineFollowHistoryVO lineFollowHistoryVO = new LineFollowHistoryVO(); lineFollowHistoryVO.setCloseCause(x.getRejectRealReason()); - lineFollowHistoryVO.setCloseTime( DateUtil.format(x.getCloseTime(), CoolDateUtils.DATE_FORMAT_SEC_2)); + lineFollowHistoryVO.setCloseTime(DateUtil.format(x.getCloseTime(), CoolDateUtils.DATE_FORMAT_SEC_2)); lineFollowHistoryVO.setStartTime(DateUtil.format(x.getCreateTime(), CoolDateUtils.DATE_FORMAT_SEC_2)); result.add(lineFollowHistoryVO); }); @@ -704,93 +703,94 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } @Override - public Boolean assignFollowUser(String partnerId, String wantShopArea, Integer acceptAdjustType,Boolean flag) { - log.info("assignFollowUser partnerId:{},wantShopArea:{},acceptAdjustType:{}",partnerId,wantShopArea,acceptAdjustType); + public Boolean assignFollowUser(String partnerId, String wantShopArea, Integer acceptAdjustType, Boolean flag) { + log.info("assignFollowUser partnerId:{},wantShopArea:{},acceptAdjustType:{}", partnerId, wantShopArea, acceptAdjustType); - if (!flag){ + if (!flag) { return Boolean.FALSE; } List lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId); //如果跟进次数大于1 直接使用上一次的招商经理 - if (CollectionUtils.isNotEmpty(lineFollowHistoryList)){ + if (CollectionUtils.isNotEmpty(lineFollowHistoryList)) { return Boolean.TRUE; } //当前加盟商线索 HyPartnerLineInfoDO HyPartnerLineInfo = hyPartnerLineInfoDAO.getByPartnerId(partnerId); //如果意向区域没有绑定战区 不分配招商经理 HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea), "intent"); - if (hyIntendDevelopementMappingDO==null){ + if (hyIntendDevelopementMappingDO == null) { log.info("如果意向区域没有绑定战区 不分配招商经理"); return Boolean.FALSE; } - List result = new ArrayList<>(); - if (hyIntendDevelopementMappingDO!=null){ + List result = new ArrayList<>(); + if (hyIntendDevelopementMappingDO != null) { HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(hyIntendDevelopementMappingDO.getMappingId()); - if (hyIntendDevZoneInfoDO!=null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) { + if (hyIntendDevZoneInfoDO != null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) { List list = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class); result.addAll(list); } } List userListByRegionIds = enterpriseUserDAO.getUserListByRegionIds(result); - if (CollectionUtils.isEmpty(userListByRegionIds)){ + if (CollectionUtils.isEmpty(userListByRegionIds)) { log.info("意向区域绑定战区 但是战区绑定的组织机构下没人 不分配"); return Boolean.FALSE; } //如果是私海线索 不需要重新分配招商经理 - if ((HyPartnerLineInfo != null && HyPartnerLineInfo.getLineStatus()==1)){ - log.info("如果是私海线索 不需要重新分配招商经理 或者跟进次数大于等于1 lineStatus:{}",HyPartnerLineInfo.getLineStatus()); + if ((HyPartnerLineInfo != null && HyPartnerLineInfo.getLineStatus() == 1)) { + log.info("如果是私海线索 不需要重新分配招商经理 或者跟进次数大于等于1 lineStatus:{}", HyPartnerLineInfo.getLineStatus()); return Boolean.FALSE; } - if(HyPartnerLineInfo == null){ + if (HyPartnerLineInfo == null) { Boolean lineStatus = getLineStatus(Long.valueOf(wantShopArea), acceptAdjustType); return lineStatus; } HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId); Boolean lineStatus = getLineStatus(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()), hyPartnerUserInfoDO.getAcceptAdjustType()); - log.info("lineStatus:{}",lineStatus); + log.info("lineStatus:{}", lineStatus); return lineStatus; } /** * 线索状态 + * * @param wantShopAreaId * @param acceptAdjustType * @return */ @Override - public Boolean getLineStatus(Long wantShopAreaId,Integer acceptAdjustType){ + public Boolean getLineStatus(Long wantShopAreaId, Integer acceptAdjustType) { HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(wantShopAreaId); - if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){ + if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())) { return Boolean.TRUE; } - if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){ - if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(acceptAdjustType)){ + if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())) { + if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(acceptAdjustType)) { return Boolean.FALSE; } //全国调剂 默认分配呗 有啥好说的 - if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){ + if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(acceptAdjustType)) { return Boolean.TRUE; } //省内调剂 有重点或者开放的 分配 - if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){ - List hyOpenAreaInfoDOList= new ArrayList<>(); - if(hyOpenAreaInfoDO != null){ + if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)) { + List hyOpenAreaInfoDOList = new ArrayList<>(); + if (hyOpenAreaInfoDO != null) { String areaPath = hyOpenAreaInfoDO.getAreaPath(); String province = areaPath.substring(0, areaPath.indexOf("/", areaPath.indexOf("/") + 1)); hyOpenAreaInfoDOList = hyOpenAreaInfoDAO.queryByKeyword(province, true, null, true); //过滤一级目录 - hyOpenAreaInfoDOList = hyOpenAreaInfoDOList.stream().filter(x->x.getParentId()!=null).collect(Collectors.toList()); + hyOpenAreaInfoDOList = hyOpenAreaInfoDOList.stream().filter(x -> x.getParentId() != null).collect(Collectors.toList()); } - if (hyOpenAreaInfoDOList.size()>CommonConstants.ZERO){ + if (hyOpenAreaInfoDOList.size() > CommonConstants.ZERO) { return Boolean.TRUE; } return Boolean.FALSE; } //市内调剂 不分配 - if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){ + if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(acceptAdjustType)) { return Boolean.FALSE; } } @@ -799,22 +799,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override - public String getAssignFollowUser(String partnerId,String type) { + public String getAssignFollowUser(String partnerId, String type) { //查询意向区域 HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId); List lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId); //如果跟进次数大于1 直接使用上一次的招商经理 - if (CollectionUtils.isNotEmpty(lineFollowHistoryList)){ + if (CollectionUtils.isNotEmpty(lineFollowHistoryList)) { return lineFollowHistoryList.get(0).getInvestmentManager(); } //意向区域 String wantShopArea = hyPartnerUserInfoDO.getWantShopArea(); //查询意向区域绑定的组织架构 没有绑定战区 分配空 - HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea),type); - List result = new ArrayList<>(); - if (hyIntendDevelopementMappingDO!=null){ + HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea), type); + List result = new ArrayList<>(); + if (hyIntendDevelopementMappingDO != null) { HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(hyIntendDevelopementMappingDO.getMappingId()); - if (hyIntendDevZoneInfoDO!=null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) { + if (hyIntendDevZoneInfoDO != null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) { List list = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class); result.addAll(list); } @@ -822,16 +822,16 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { String userId = ""; List userListByRegionIds = enterpriseUserDAO.getUserListByRegionIds(result); HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(hyIntendDevelopementMappingDO.getMappingId()); - if (CollectionUtils.isNotEmpty(userListByRegionIds)){ + if (CollectionUtils.isNotEmpty(userListByRegionIds)) { List userIdList = userListByRegionIds.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()); int i = userIdList.indexOf(hyIntendDevZoneInfoDO.getLastAllotUserId()); - if (i==(userListByRegionIds.size()-1)){ - i = -1; + if (i == (userListByRegionIds.size() - 1)) { + i = -1; } - userId = userIdList.get(++i); + userId = userIdList.get(++i); } //上次分配的招商经理 记录 - if ("intent".equals(type)){ + if ("intent".equals(type)) { hyIntendDevZoneInfoDO.setLastAllotUserId(userId); hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO); } @@ -839,33 +839,34 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } @Override - public InterviewVO getInterviewInfo(Long lineId,Boolean needDevelopmentDirector) throws ApiException { + public InterviewVO getInterviewInfo(Long lineId, Boolean needDevelopmentDirector) throws ApiException { Long interviewId = hyPartnerInterviewPlanDAO.selectInterviewIdByLineId(lineId); QueryByInterviewPlanIdReq queryByInterviewPlanIdReq = new QueryByInterviewPlanIdReq(); - if (interviewId!=null){ + if (interviewId != null) { queryByInterviewPlanIdReq.setInterviewPlanId(String.valueOf(interviewId)); queryByInterviewPlanIdReq.setNeedDevelopmentDirector(needDevelopmentDirector); return interviewService.getInterviewInfo(queryByInterviewPlanIdReq); } return null; } + @Override - public HyPartnerLineInfoDO generateDefaultLineInfo(String partnerId, String wantShopArea, Integer acceptAdjustType,Boolean assignFlag,String investmentManagerId) throws ApiException { + public HyPartnerLineInfoDO generateDefaultLineInfo(String partnerId, String wantShopArea, Integer acceptAdjustType, Boolean assignFlag, String investmentManagerId) throws ApiException { // 生成一条线索 HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(partnerId); //短信拼接了招商经理 直接使用 不需要走自动分配的逻辑 其他方式 走自动分配 String investmentManager = null; Boolean flag = Boolean.FALSE; - if (StringUtils.isNotEmpty(investmentManagerId)){ + if (StringUtils.isNotEmpty(investmentManagerId)) { investmentManager = investmentManagerId; flag = Boolean.TRUE; - }else { - flag = this.assignFollowUser(partnerId, wantShopArea, acceptAdjustType,assignFlag); - if (flag){ + } else { + flag = this.assignFollowUser(partnerId, wantShopArea, acceptAdjustType, assignFlag); + if (flag) { investmentManager = getAssignFollowUser(partnerId, "intent"); } } - if(hyPartnerLineInfoDO == null){ + if (hyPartnerLineInfoDO == null) { hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); hyPartnerLineInfoDO.setPartnerId(partnerId); hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()); @@ -873,22 +874,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode()); hyPartnerLineInfoDO.setInvestmentManager(investmentManager); hyPartnerLineInfoDAO.insertSelective(hyPartnerLineInfoDO); - }else { - if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())){ + } else { + if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())) { hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode()); hyPartnerLineInfoDO.setInvestmentManager(investmentManager); hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } } //发送飞书工作通知 - if(flag){ + if (flag) { List userIdList = new ArrayList<>(); userIdList.add(investmentManager); Map feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(userIdList); ArrayList feishuUserIds = new ArrayList<>(feishuUserIdsByUserIds.values()); HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId); String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7); - eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,feishuUserIds,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile()); + eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER, feishuUserIds, dateTime, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile()); } return hyPartnerLineInfoDO; } @@ -897,13 +898,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { public Long checkGenerateNewLineId(Long lineId) throws ApiException { HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); // 15天之后可以继续填写意向信息,把之前的线索删除 - if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null && - DateUtil.offsetSecond(hyPartnerLineInfoDO.getDeadline(), -2).before(new Date())){ + if (hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null && + DateUtil.offsetSecond(hyPartnerLineInfoDO.getDeadline(), -2).before(new Date())) { //将老的线索置为删除状态 hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId())); HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId()); // 生成一条新线索 生成新线索的时候不需要公海到私海 - HyPartnerLineInfoDO newLineInfoDO = this.generateDefaultLineInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerUserInfoDO.getWantShopArea(), hyPartnerUserInfoDO.getAcceptAdjustType(),Boolean.FALSE,null); + HyPartnerLineInfoDO newLineInfoDO = this.generateDefaultLineInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerUserInfoDO.getWantShopArea(), hyPartnerUserInfoDO.getAcceptAdjustType(), Boolean.FALSE, null); // 生成一条意向基本信息 HyPartnerBaseInfoDO oldBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(hyPartnerUserInfoDO.getPartnerId(), lineId); hyPartnerBaseInfoService.generateBaseInfo(hyPartnerUserInfoDO, newLineInfoDO.getId(), oldBaseInfoDO.getUserPortrait()); @@ -916,11 +917,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Transactional(rollbackFor = Exception.class) public Integer editBaseInfo(EditBaseInfoRequest request) { HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getPartnerLineId()); - if(Objects.isNull(lineInfo)){ + if (Objects.isNull(lineInfo)) { throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); } HyPartnerUserInfoDO partnerUserInfo = hyPartnerUserInfoDAO.selectByMobile(request.getMobile()); - if(Objects.nonNull(partnerUserInfo) && !lineInfo.getPartnerId().equals(partnerUserInfo.getPartnerId())){ + if (Objects.nonNull(partnerUserInfo) && !lineInfo.getPartnerId().equals(partnerUserInfo.getPartnerId())) { throw new ServiceException(ErrorCodeEnum.PARTNER_MOBILE_EXIST_0); } HyPartnerUserInfoDO update = new HyPartnerUserInfoDO(); @@ -942,16 +943,16 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public PartnerSimpleBaseInfoVO queryBaseInfo(Long partnerLineId) { HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(partnerLineId); - if(Objects.isNull(lineInfo)){ + if (Objects.isNull(lineInfo)) { return null; } HyPartnerUserInfoDO partnerUserInfo = hyPartnerUserInfoDAO.selectByPartnerId(lineInfo.getPartnerId()); HyPartnerBaseInfoDO partnerBaseInfo = hyPartnerBaseInfoDAO.getByPartnerLineId(partnerLineId); PartnerSimpleBaseInfoVO result = PartnerSimpleBaseInfoVO.convertVO(partnerLineId, partnerUserInfo); - String userPortrait = Optional.ofNullable(partnerBaseInfo).map(o->o.getUserPortrait()).orElse(null); - Long partnerBaseInfoId = Optional.ofNullable(partnerBaseInfo).map(o->o.getId()).orElse(null); + String userPortrait = Optional.ofNullable(partnerBaseInfo).map(o -> o.getUserPortrait()).orElse(null); + Long partnerBaseInfoId = Optional.ofNullable(partnerBaseInfo).map(o -> o.getId()).orElse(null); result.setPartnerBaseInfoId(partnerBaseInfoId); - if (StringUtils.isNotEmpty(userPortrait) && Objects.nonNull(result)){ + if (StringUtils.isNotEmpty(userPortrait) && Objects.nonNull(result)) { Map userPortraitMap = labelService.getUserPortraitMap(Arrays.asList(userPortrait)); List userPortraitList = userPortraitMap.entrySet().stream() .map(entry -> new UserPortraitDTO(entry.getKey(), entry.getValue())) @@ -961,13 +962,53 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { return result; } + @Override + public LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest request, Boolean allPrivateSeaFlag) { + //allPrivateSeaFlag 为true的时候 查询全量私海 + UserPositionAndUserScopeDTO userIdsByScope = new UserPositionAndUserScopeDTO(); + if (!allPrivateSeaFlag) { + userIdsByScope = enterpriseUserService.getUserIdsByScope(userId); + } + String intentAreaName = getIntentAreaName(request.getIntentAreaId()); + Integer pageNum = request.getPageNum(); + Integer pageSize = request.getPageSize(); + List linePageInfoVo = hyPartnerLineInfoDAO.getPrivateSeaPageInfoNext(request.getLineId(), request.getKeyword(), request.getKeywordType(), request.getWorkflowStage(), + request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(), intentAreaName, request.getAcceptAdjustType(), request.getStoreKeyword(), + request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(), userIdsByScope.getDevelopmentUserIds(), request.getUserPortraitIdList(), request.getUserChannelIdList() + , request.getUpdateStartTime(), request.getUpdateEndTime(), request.getPartnerName(), request.getPartnerMobile(), request.getInvestmentManagerId(), request.getUserPortraitQueryType() + , request.getIntentAreaQueryType(), request.getLineStartTime(), request.getLineEndTime(), request.getUserChannelQueryType(), request.getSortField(), request.getSortOrder(), (pageNum - 1) * pageSize == 0 ? 0 : (pageNum - 1) * pageSize - 1, pageSize + 2); + Optional first = Stream.iterate(0, i -> i + 1).limit(linePageInfoVo.size()).filter(item -> request.getLineId().equals(linePageInfoVo.get(item).getLineId())).findFirst(); + if (!first.isPresent()) { + return null; + } + if (PageTurnTypeEnum.NEXT.getText().equals(request.getPageTurn())) { + //下一页 + return first.get() +1>linePageInfoVo.size()?null:linePageInfoVo.get(first.get() +1); + } + if (PageTurnTypeEnum.PREVIOUS.getText().equals(request.getPageTurn())) { + //上一页 + return first.get() - 1<0?null:linePageInfoVo.get(first.get() - 1); + } + return null; + } + + + @Override + public LinePageInfoVo publicSeaPageDetailNext(String userId, LineRequest lineRequest) { + String intentAreaName = getIntentAreaName(lineRequest.getIntentArea()); + LinePageInfoVo linePageInfoVo = hyPartnerLineInfoDAO.getPublicSeaPageInfoNext(lineRequest.getLineId(), lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(), + intentAreaName, lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null, lineRequest.getCreateStartTime(), lineRequest.getCreateEndTime(),lineRequest.getPageTurn()); + return linePageInfoVo; + } + /** * convertPartnerBlackListDTOToVo + * * @param partnerBlackListDTO * @return */ - public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO){ + public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO) { BlackListVO blackListVO = new BlackListVO(); blackListVO.setId(partnerBlackListDTO.getLineId()); blackListVO.setPartnerId(partnerBlackListDTO.getPartnerId()); @@ -980,7 +1021,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { blackListVO.setJoinBlackReason(partnerBlackListDTO.getJoinBlackReason()); blackListVO.setCloseUserId(partnerBlackListDTO.getCloseUserId()); String phoneAddress = partnerBlackListDTO.getPhoneAddress(); - if (StringUtils.isEmpty(phoneAddress)){ + if (StringUtils.isEmpty(phoneAddress)) { phoneAddress = hyPhoneLocationService.handleHyPhoneAddress(partnerBlackListDTO.getMobile()); } blackListVO.setPhoneAddress(phoneAddress); @@ -990,14 +1031,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } - - /** * convertPartnerLineInfoAndBaseInfoDTOToVo + * * @param partnerLineInfoAndBaseInfoDTO * @return */ - private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO){ + private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO) { PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = new PartnerLineInfoAndBaseInfoVO(); partnerLineInfoAndBaseInfoVO.setId(partnerLineInfoAndBaseInfoDTO.getId()); partnerLineInfoAndBaseInfoVO.setPartnerUserId(partnerLineInfoAndBaseInfoDTO.getPartnerId()); @@ -1007,7 +1047,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { partnerLineInfoAndBaseInfoVO.setWorkflowStatus(partnerLineInfoAndBaseInfoDTO.getWorkflowStatus()); partnerLineInfoAndBaseInfoVO.setPassCause(partnerLineInfoAndBaseInfoDTO.getPassCause()); String phoneAddress = partnerLineInfoAndBaseInfoDTO.getPhoneAddress(); - if (StringUtils.isEmpty(phoneAddress)){ + if (StringUtils.isEmpty(phoneAddress)) { phoneAddress = hyPhoneLocationService.handleHyPhoneAddress(partnerLineInfoAndBaseInfoDTO.getPartnerUserPhone()); } partnerLineInfoAndBaseInfoVO.setPhoneAddress(phoneAddress); @@ -1017,29 +1057,30 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { partnerLineInfoAndBaseInfoVO.setPartnerUserName(partnerLineInfoAndBaseInfoDTO.getPartnerUserName()); partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType()); partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea()); + partnerLineInfoAndBaseInfoVO.setEcWantShopAreaName(partnerLineInfoAndBaseInfoDTO.getEcWantShopArea()); partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea()); partnerLineInfoAndBaseInfoVO.setDetailedAddress(partnerLineInfoAndBaseInfoDTO.getDetailedAddress()); partnerLineInfoAndBaseInfoVO.setEmail(partnerLineInfoAndBaseInfoDTO.getEmail()); partnerLineInfoAndBaseInfoVO.setIdCard(partnerLineInfoAndBaseInfoDTO.getIdCard()); partnerLineInfoAndBaseInfoVO.setChannelName(partnerLineInfoAndBaseInfoDTO.getChannelName()); partnerLineInfoAndBaseInfoVO.setDevelopmentDirector(partnerLineInfoAndBaseInfoDTO.getDevelopmentDirector()); - if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())){ + if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())) { partnerLineInfoAndBaseInfoVO.setPassCertifyFile(JSONObject.parseArray(partnerLineInfoAndBaseInfoDTO.getCertifyFile(), String.class)); } partnerLineInfoAndBaseInfoVO.setPassUserId(partnerLineInfoAndBaseInfoDTO.getPassUserId()); partnerLineInfoAndBaseInfoVO.setEducation(partnerLineInfoAndBaseInfoDTO.getEducation()); - partnerLineInfoAndBaseInfoVO.setPassTime(DateUtil.format(partnerLineInfoAndBaseInfoDTO.getPassTime(),CoolDateUtils.DATE_FORMAT_SEC_2)); + partnerLineInfoAndBaseInfoVO.setPassTime(DateUtil.format(partnerLineInfoAndBaseInfoDTO.getPassTime(), CoolDateUtils.DATE_FORMAT_SEC_2)); return partnerLineInfoAndBaseInfoVO; } - /** * stageCountDTOToVo + * * @param stageCountDTO * @return */ - private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO){ + private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO) { StageCountVO stageCountVO = new StageCountVO(); stageCountVO.setQualifiedInterviewCount(stageCountDTO.getQualifiedInterviewCount()); stageCountVO.setIntentApplyApproveCount(stageCountDTO.getIntentApplyApproveCount()); @@ -1049,12 +1090,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { /** * getIntentAreaName + * * @param intentArea * @return */ - private String getIntentAreaName(String intentArea){ + private String getIntentAreaName(String intentArea) { String intentAreaName = null; - if (StringUtils.isNotEmpty(intentArea)){ + if (StringUtils.isNotEmpty(intentArea)) { HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(intentArea)); intentAreaName = hyOpenAreaInfoDO.getAreaName(); } 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 ff961ce50..ca57954a2 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 @@ -220,6 +220,25 @@ public class DeskController { return ResponseResult.success(hyPartnerLineInfoService.privateSeaLineList(CurrentUserHolder.getUserId(),privateSeaLineListRequest,Boolean.FALSE)); } + @PostMapping(path = "/getPrivateSeaPageDetailNext") + @ApiOperation("私海列表详情翻页") + public ResponseResult getPrivateSeaPageDetailNext(@RequestBody PrivateSeaLineListRequest privateSeaLineListRequest){ + return ResponseResult.success(hyPartnerLineInfoService.privateSeaPageDetailNext(CurrentUserHolder.getUserId(),privateSeaLineListRequest,Boolean.FALSE)); + } + + + + @PostMapping(path = "/getPrivateAllSeaPageDetailNext") + @ApiOperation("全量私海列表详情翻页") + public ResponseResult getPrivateAllSeaPageDetailNext(@RequestBody PrivateSeaLineListRequest privateSeaLineListRequest){ + return ResponseResult.success(hyPartnerLineInfoService.privateSeaPageDetailNext(CurrentUserHolder.getUserId(),privateSeaLineListRequest,Boolean.TRUE)); + } + + @PostMapping(path = "/getPublicSeaPageDetailNext") + @ApiOperation("公海列表详情翻页") + public ResponseResult getPublicSeaPageDetailNext(@RequestBody LineRequest LineRequest){ + return ResponseResult.success(hyPartnerLineInfoService.publicSeaPageDetailNext(CurrentUserHolder.getUserId(),LineRequest)); + } @PostMapping(path = "/queryAllPrivateSeqLineList") @ApiOperation("全量私海") From 7b877e7cdafcfca0632cf87d81d49ed17139c361 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Mon, 13 Nov 2023 13:37:58 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=85=AC=E6=B5=B7?= =?UTF-8?q?=E7=A7=81=E6=B5=B7=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/dao/HyPartnerLineInfoDAO.java | 4 ++-- .../store/mapper/HyPartnerLineInfoMapper.java | 6 +++-- .../mapper/HyPartnerLineInfoMapper.xml | 8 +------ .../impl/HyPartnerLineInfoServiceImpl.java | 23 ++++++++++++++++--- 4 files changed, 27 insertions(+), 14 deletions(-) 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 2dcd07adb..8e42e4cb4 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 @@ -212,8 +212,8 @@ public class HyPartnerLineInfoDAO { } return hyPartnerLineInfoMapper.getHyPartnerLineInfoList(lineIds,investmentManager); } - public LinePageInfoVo getPublicSeaPageInfoNext(Long lineId, String userNameKeyword, String phoneKeyword, String intentAreaName, Integer acceptAdjustType, String updateStartTime, String updateEndTime, List userIdList, String createStartTime, String createEndTime,String pageTurn){ - return hyPartnerLineInfoMapper.getPublicSeaPageInfoNext(lineId,userNameKeyword,phoneKeyword,intentAreaName,acceptAdjustType,updateStartTime,updateEndTime,userIdList, createStartTime, createEndTime,pageTurn); + public List getPublicSeaPageInfoNext(Long lineId, String userNameKeyword, String phoneKeyword, String intentAreaName, Integer acceptAdjustType, String updateStartTime, String updateEndTime, List userIdList, String createStartTime, String createEndTime,String pageTurn,Integer limit1,Integer limit2){ + return hyPartnerLineInfoMapper.getPublicSeaPageInfoNext(lineId,userNameKeyword,phoneKeyword,intentAreaName,acceptAdjustType,updateStartTime,updateEndTime,userIdList, createStartTime, createEndTime,pageTurn,limit1,limit2); } public List getPrivateSeaPageInfoNext(Long lineId,String keyword, String keywordType, String workflowStage, String workflowStatus, String deadlineStart, String deadlineEnd, 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 cd1acb64c..b5598b695 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 @@ -301,7 +301,7 @@ public interface HyPartnerLineInfoMapper { @Param("limit2") Integer limit2 ); - LinePageInfoVo getPublicSeaPageInfoNext(@Param("lineId") Long lineId,@Param("userNameKeyword") String userNameKeyword, + List getPublicSeaPageInfoNext(@Param("lineId") Long lineId,@Param("userNameKeyword") String userNameKeyword, @Param("phoneKeyword") String phoneKeyword, @Param("intentAreaName") String intentAreaName, @Param("acceptAdjustType") Integer acceptAdjustType, @@ -310,7 +310,9 @@ public interface HyPartnerLineInfoMapper { @Param("userIdList") List userIdList, @Param("createStartTime") String createStartTime, @Param("createEndTime") String createEndTime, - @Param("pageTurn") String pageTurn + @Param("pageTurn") String pageTurn, + @Param("limit1") Integer limit1, + @Param("limit2") Integer limit2 ); } \ 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 e283e2eec..6e8ca01e3 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -971,12 +971,6 @@ LEFT JOIN hy_open_area_info hoai ON hoai.id = b.want_shop_area LEFT JOIN hy_phone_location hpl ON hpl.phone_number = b.mobile where a.line_status = 0 and a.deleted = 0 - - AND a.id #{lineId} - - - AND a.id ]]> #{lineId} - and b.username like concat('%',#{userNameKeyword},'%') @@ -1000,7 +994,7 @@ #{userId} - order by a.create_time desc limit 1 + order by a.create_time desc limit #{limit1},#{limit2} \ No newline at end of file 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 76af43a01..80481a66d 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 @@ -964,6 +964,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest request, Boolean allPrivateSeaFlag) { + request.setPageNum((int) Math.ceil((double) request.getPageNum() / request.getPageSize())); //allPrivateSeaFlag 为true的时候 查询全量私海 UserPositionAndUserScopeDTO userIdsByScope = new UserPositionAndUserScopeDTO(); if (!allPrivateSeaFlag) { @@ -995,10 +996,26 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override public LinePageInfoVo publicSeaPageDetailNext(String userId, LineRequest lineRequest) { + lineRequest.setPageNum((int) Math.ceil((double) lineRequest.getPageNum() / lineRequest.getPageSize())); String intentAreaName = getIntentAreaName(lineRequest.getIntentArea()); - LinePageInfoVo linePageInfoVo = hyPartnerLineInfoDAO.getPublicSeaPageInfoNext(lineRequest.getLineId(), lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(), - intentAreaName, lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null, lineRequest.getCreateStartTime(), lineRequest.getCreateEndTime(),lineRequest.getPageTurn()); - return linePageInfoVo; + Integer pageNum = lineRequest.getPageNum(); + Integer pageSize = lineRequest.getPageSize(); + List linePageInfoVoList = hyPartnerLineInfoDAO.getPublicSeaPageInfoNext(lineRequest.getLineId(), lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(), + intentAreaName, lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null, lineRequest.getCreateStartTime(), lineRequest.getCreateEndTime(),lineRequest.getPageTurn() + , (pageNum - 1) * pageSize == 0 ? 0 : (pageNum - 1) * pageSize - 1, pageSize + 2); + Optional first = Stream.iterate(0, i -> i + 1).limit(linePageInfoVoList.size()).filter(item -> lineRequest.getLineId().equals(linePageInfoVoList.get(item).getLineId())).findFirst(); + if (!first.isPresent()) { + return null; + } + if (PageTurnTypeEnum.NEXT.getText().equals(lineRequest.getPageTurn())) { + //下一页 + return first.get() +1>linePageInfoVoList.size()?null:linePageInfoVoList.get(first.get() +1); + } + if (PageTurnTypeEnum.PREVIOUS.getText().equals(lineRequest.getPageTurn())) { + //上一页 + return first.get() - 1<0?null:linePageInfoVoList.get(first.get() - 1); + } + return null; } From 93cd245799d297c3788356619fddcc505dfff9f2 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Mon, 13 Nov 2023 14:08:03 +0800 Subject: [PATCH 18/23] =?UTF-8?q?=E5=BE=85=E9=9D=A2=E8=AF=95=E9=98=B6?= =?UTF-8?q?=E6=AE=B5=E4=BF=AE=E6=94=B9=E9=9D=A2=E8=AF=95=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E7=9F=AD=E4=BF=A1=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/service/impl/InterviewServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 11784851c..688004144 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 @@ -326,6 +326,13 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewDO.setUpdateTime(new Date()); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); + //如果是待面试阶段修改面试时间需要发短信通知 + 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()); + } + //记录日志 LoginUserInfo operator = CurrentUserHolder.getUser(); ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()) From 1bc5e6a68850daabd8eae5534da6f7c9193191c3 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Mon, 13 Nov 2023 14:30:59 +0800 Subject: [PATCH 19/23] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E6=9D=A5=E6=BA=90id?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/mapper/HyPartnerUserChannelMapper.java | 3 +++ .../main/resources/mapper/HyPartnerUserChannelMapper.xml | 6 ++++++ .../java/com/cool/store/service/impl/EcSyncServiceImpl.java | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) 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/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-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()); //有就更新 没有插入 From 494a9b86902c686e29c6f899057ca8b486238f88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Mon, 13 Nov 2023 15:11:13 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E7=BB=84=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/HyPartnerLabelGroupMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLabelGroupMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLabelGroupMapper.xml index 730ef3fed..a9692ecc6 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLabelGroupMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLabelGroupMapper.xml @@ -231,7 +231,7 @@ AND t1.label_group_name LIKE CONCAT('%', #{labelGroupName}, '%') - ORDER BY t1.create_time + ORDER BY t1.create_time,t1.create_time \ No newline at end of file From c9d97e0e2dab4af14f76244e0661059f36358d77 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Mon, 13 Nov 2023 18:07:47 +0800 Subject: [PATCH 21/23] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=85=AC=E6=B5=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerLineInfoMapper.xml | 5 +++++ .../impl/HyPartnerLineInfoServiceImpl.java | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) 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-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..8592f5e80 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 @@ -986,9 +986,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 +1013,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 +1038,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())) { //上一页 From bc8b970470ad03fbe929e0cd41276377b8a92629 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Mon, 13 Nov 2023 18:45:47 +0800 Subject: [PATCH 22/23] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ELK=E6=8E=A5=E5=85=A5?= =?UTF-8?q?=E7=9A=84=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coolstore-partner-webb/pom.xml | 5 +++++ .../java/com/cool/store/controller/TestController.java | 10 ++++++++++ coolstore-partner-webc/pom.xml | 5 +++++ pom.xml | 6 ++++++ 4 files changed, 26 insertions(+) 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 + From b58bc3a9e1d151aef0dedbfbe7236b8354107ba4 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Tue, 14 Nov 2023 16:34:59 +0800 Subject: [PATCH 23/23] =?UTF-8?q?=E5=85=81=E8=AE=B8=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E6=97=B6=E9=97=B4=E7=9A=84=E9=9D=A2=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/service/impl/InterviewServiceImpl.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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..320f1e94d 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 @@ -450,9 +450,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); @@ -810,10 +810,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);