Merge remote-tracking branch 'hsayi/dev/feat/partner1.5.2_20231121' into dev/feat/partner1.5.2_20231121

This commit is contained in:
苏竹红
2023-11-21 22:13:10 +08:00
14 changed files with 121 additions and 36 deletions

View File

@@ -57,6 +57,7 @@ public class HyPartnerLineInfoDAO {
}
public int updateByPrimaryKeySelective(HyPartnerLineInfoDO hyPartnerLineInfoDO){
hyPartnerLineInfoDO.setUpdateTime(new Date());
return hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
}

View File

@@ -28,4 +28,7 @@ public interface HyPartnerUserChannelMapper {
List<HyPartnerUserChannelDO> getAllUserChannel();
List<HyPartnerUserChannelDO> getUserChannelByIds(List<Integer> userChannelIds);
HyPartnerUserChannelDO selectByChannel(@Param("channelId") Long channelId,@Param("channelName") String channelName);
}

View File

@@ -335,22 +335,22 @@
<if test="userId!=null and userId!=''">
and hpli.investment_manager = #{userId}
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='4' and workflowStage!=null and workflowStage!='' and workflowStage=='1'">
<if test="workflowStatus!=null and workflowStatus!='' and workflowStatus==4 and workflowStage!=null and workflowStage!='' and workflowStage==1 ">
order by hpli.create_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='5' and workflowStage!=null and workflowStage!='' and workflowStage=='1'">
<if test="workflowStatus!=null and workflowStatus!='' and workflowStatus==5 and workflowStage!=null and workflowStage!='' and workflowStage==1 ">
order by hpli.update_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='1' and workflowStage!=null and workflowStage!='' and workflowStage=='2'">
<if test="workflowStatus!=null and workflowStatus!='' and workflowStatus==1 and workflowStage!=null and workflowStage!='' and workflowStage==2 ">
order by hpli.create_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='0' and workflowStage!=null and workflowStage!='' and workflowStage=='2'">
<if test="workflowStatus!=null and workflowStatus!='' and workflowStatus==0 and workflowStage!=null and workflowStage!='' and workflowStage==2 ">
order by hpli.update_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='4' and workflowStage!=null and workflowStage!='' and workflowStage=='3'">
<if test="workflowStatus!=null and workflowStatus!='' and workflowStatus==4 and workflowStage!=null and workflowStage!='' and workflowStage==3 ">
order by hpli.create_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='5' and workflowStage!=null and workflowStage!='' and workflowStage=='3'">
<if test="workflowStatus!=null and workflowStatus!='' and workflowStatus==5 and workflowStage!=null and workflowStage!='' and workflowStage==3 ">
order by hpli.update_time
</if>
</select>

View File

@@ -918,6 +918,11 @@
<if test="userChannelQueryType!=null and userChannelQueryType == 'blank' ">
AND hpuinfo.user_channel_id is null
</if>
<if test="userIdList!=null and userIdList.size>0 and developmentManagerList!=null and developmentManagerList.size==0">
<foreach collection="userIdList" item="userId" open="and hpli.investment_manager in (" close=")" separator=",">
#{userId}
</foreach>
</if>
<if test="userIdList!=null and userIdList.size==0 and developmentManagerList!=null and developmentManagerList.size>0">
<foreach collection="developmentManagerList" item="developmentManager" open="and hpli.development_manager in (" close=")" separator=",">
#{developmentManager}

View File

@@ -105,4 +105,10 @@
</if>
</where>
</select>
<select id="selectByChannel" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from hy_partner_user_channel
where channel_id = #{channelId} and channel_name=#{channelName} limit 1
</select>
</mapper>

View File

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

View File

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

View File

@@ -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());
//有就更新 没有插入

View File

@@ -533,6 +533,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
//作废待完成&已逾期的任务
hyFollowTaskDAO.cancelUndoFollowTask(closeFollowRequest.getLineId());
}
hyPartnerLineInfoDO.setUpdateTime(new Date());
hyPartnerLineInfoDO.setUpdateUserId(user.getUserId());
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
@@ -986,9 +988,18 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
public LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest request, Boolean allPrivateSeaFlag) {
request.setPageNum((int) Math.ceil((double) request.getPageNum() / request.getPageSize()));
//allPrivateSeaFlag 为true的时候 查询全量私海
// V1.5.2 修改allPrivateSeaFlag 为False 查询我的线索 为true时根据是否是超管或者主管查询数据
UserPositionAndUserScopeDTO userIdsByScope = new UserPositionAndUserScopeDTO();
if (!allPrivateSeaFlag) {
userIdsByScope = enterpriseUserService.getUserIdsByScope(userId);
//如果是查询团队线索 判断是否是超管 不是超管 判断是是否是主管
if (allPrivateSeaFlag){
//如果不是超管 查询个人数据或者主管数据 如果是超管 查询所有数据
if (!isSuperAdmin(userId)){
userIdsByScope = enterpriseUserService.getUserIdsByScope(userId);
}
}else {
//如果是查询我的线索 只需要查询招商经理或者开发经理是我的线索
userIdsByScope.setDevelopmentUserIds(Arrays.asList(userId));
userIdsByScope.setInvestmentUserIds(Arrays.asList(userId));
}
String intentAreaName = getIntentAreaName(request.getIntentAreaId());
Integer pageNum = request.getPageNum();
@@ -1004,7 +1015,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
if (PageTurnTypeEnum.NEXT.getText().equals(request.getPageTurn())) {
//下一页
return first.get() +1>linePageInfoVo.size()?null:linePageInfoVo.get(first.get() +1);
return first.get() +1>=linePageInfoVo.size()?null:linePageInfoVo.get(first.get() +1);
}
if (PageTurnTypeEnum.PREVIOUS.getText().equals(request.getPageTurn())) {
//上一页
@@ -1029,7 +1040,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
if (PageTurnTypeEnum.NEXT.getText().equals(lineRequest.getPageTurn())) {
//下一页
return first.get() +1>linePageInfoVoList.size()?null:linePageInfoVoList.get(first.get() +1);
return first.get() +1>=linePageInfoVoList.size()?null:linePageInfoVoList.get(first.get() +1);
}
if (PageTurnTypeEnum.PREVIOUS.getText().equals(lineRequest.getPageTurn())) {
//上一页

View File

@@ -78,6 +78,9 @@ public class InterviewServiceImpl implements InterviewService {
@Autowired
private HyPartnerBaseInfoMapper hyPartnerBaseInfoMapper;
@Autowired
private HyInterviewDAO hyInterviewDAO;
@Autowired
private EnterpriseUserService enterpriseUserService;
// @Autowired
@@ -264,11 +267,6 @@ public class InterviewServiceImpl implements InterviewService {
*/
@Override
public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException {
//只有房间状态是待开放才可以修改时间
// Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
// if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
// throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
// }
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试信息为空,抛出异常
if (interviewInfo == null) {
@@ -277,6 +275,16 @@ public class InterviewServiceImpl implements InterviewService {
if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
}
//是否需要直接开始面试
//需要在同意预约操作以后,面试变为待开始后修改面试时间才需要直接打开面试
Date now = new Date();
boolean whetherBeginInterview = false;
DateTime interviewStartTime = DateUtil.offsetMinute(DateUtil.parseDateTime(request.getNewStartBookingTime()), -5);
if (interviewStartTime.isBeforeOrEquals(now) && interviewInfo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()))) {
whetherBeginInterview = true;
}
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
//1.5.2 后不再使用飞书日程
// //被委托或者因转让导致的面试官变更的线索不操作日程
@@ -316,27 +324,35 @@ public class InterviewServiceImpl implements InterviewService {
record.setStartTime(Convert.toDate(request.getNewStartBookingTime()));
record.setInterviewDate(Convert.toDate(request.getNewStartBookingTime()));
record.setEndTime(Convert.toDate(request.getNewEndBookingTime()));
record.setUpdateTime(new Date());
record.setUpdateTime(now);
//是否要将面试修改为已开始阶段
if (whetherBeginInterview) {
record.setRoomStatus(RoomStatus.OPEN.getCode());
}
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
//更新面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(request.getInterviewPlanId()));
hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId());
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewDO.setUpdateTime(now);
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//是否要将线索子流程状态修改为面试已开始阶段
if (whetherBeginInterview) {
hyInterviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
}
//如果是待面试阶段修改面试时间需要发短信通知
if (interviewInfo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()))) {
HyPartnerBaseInfoDO partnerBaseInfo = hyPartnerBaseInfoMapper.getByPartnerLineId(interviewInfo.getPartnerLineId());
//异步发送短信给加盟商
eventCenterHttpRequest.sendSmsVariable(partnerBaseInfo.getMobile(), SMSMsgEnum.INTERVIEW_APPOINTMENT_PASS,DateUtil.format(DateUtil.parse(interviewInfo.getStartTime()), DatePattern.NORM_DATETIME_MINUTE_PATTERN),wechatMiniAppService.getMiniAppUrl());
eventCenterHttpRequest.sendSmsVariable(partnerBaseInfo.getMobile(), SMSMsgEnum.INTERVIEW_APPOINTMENT_PASS,DateUtil.format(record.getStartTime(), DatePattern.NORM_DATETIME_MINUTE_PATTERN),wechatMiniAppService.getMiniAppUrl());
}
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName())
.operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.operateTime(DateUtil.format(now, CoolDateUtils.DATE_FORMAT_SEC))
.beforeInterviewTime(interviewInfo.getStartTime()).afterInterviewTime(request.getNewStartBookingTime()).build();
logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.MODIFY_INTERVIEW_TIME,log);
}
@@ -450,9 +466,9 @@ public class InterviewServiceImpl implements InterviewService {
throw new ApiException(ErrorCodeEnum.INTERVIEW_LINE_ID_IS_NULL);
}
//如果开始时间小于当前时间需要报错
if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){
throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR);
}
// if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){
// throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR);
// }
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId());
hyPartnerInterviewPlanDO.setDeleted(false);
@@ -538,7 +554,6 @@ public class InterviewServiceImpl implements InterviewService {
@Override
@Transactional
public void approveAppointment(ApproveAppointmentReq request) throws ApiException {
//查询面试计划信息
InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试计划不存在,抛出异常
@@ -810,10 +825,6 @@ public class InterviewServiceImpl implements InterviewService {
if(request.getPartnerLineId() == null || request.getPartnerLineId()<=0){
throw new ApiException(ErrorCodeEnum.INTERVIEW_LINE_ID_IS_NULL);
}
//如果开始时间小于当前时间需要报错
if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){
throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR);
}
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId());
hyPartnerInterviewPlanDO.setDeleted(false);
@@ -825,8 +836,15 @@ public class InterviewServiceImpl implements InterviewService {
if(StringUtils.isEmpty(interviewrId)){
interviewrId = getInterviewerByPartner(request.getPartnerId(),String.valueOf(request.getPartnerLineId()));
}
//1.创建面试计划
Date now = new Date();
//主动预约时是否是当前时间段的面试
boolean whetherBeginInterview = false;
DateTime interviewStartTime = DateUtil.offsetMinute(DateUtil.parseDateTime(request.getStartBookingTime()), -5);
if (interviewStartTime.isBeforeOrEquals(now)) {
whetherBeginInterview = true;
}
//1.创建面试计划
HyPartnerInterviewPlanDO interviewPlanDO = new HyPartnerInterviewPlanDO();
String startBookingTime = request.getStartBookingTime();
String startDate = startBookingTime.substring(0, 10);
@@ -842,13 +860,23 @@ public class InterviewServiceImpl implements InterviewService {
interviewPlanDO.setApplicationApproved(1);
//1.2 生成房间号
interviewPlanDO.setRoomId(StringUtil.generateRoomId(startBookingTime));
interviewPlanDO.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode());
//1.3 如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段
if (whetherBeginInterview) {
interviewPlanDO.setRoomStatus(RoomStatus.OPEN.getCode());
} else {
interviewPlanDO.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode());
}
hyPartnerInterviewPlanMapper.insertSelective(interviewPlanDO);
//2.创建面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(interviewPlanDO.getId());
hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()));
//2.1 如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段
if (whetherBeginInterview) {
hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
} else {
hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()));
}
hyPartnerInterviewDO.setPartnerLineId(request.getPartnerLineId());
hyPartnerInterviewDO.setPartnerId(request.getPartnerId());
hyPartnerInterviewDO.setInterviewer(interviewrId);
@@ -863,7 +891,12 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerLineDO.setId(request.getPartnerLineId());
hyPartnerLineDO.setUpdateTime(now);
hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.INTERVIEW.getCode());
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode());
//3.1 如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段
if (whetherBeginInterview) {
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_3.getCode());
} else {
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode());
}
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO);
//4. 异步发送短信给加盟商

View File

@@ -43,6 +43,11 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- ELK -->
<dependency>
<groupId>com.github.danielwegener</groupId>
<artifactId>logback-kafka-appender</artifactId>
</dependency>
</dependencies>

View File

@@ -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<Boolean> get(@RequestBody List<TestRequest> testRequestList){
log.info(JSONObject.toJSONString(testRequestList));

View File

@@ -43,6 +43,11 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- ELK -->
<dependency>
<groupId>com.github.danielwegener</groupId>
<artifactId>logback-kafka-appender</artifactId>
</dependency>
</dependencies>
<build>

View File

@@ -229,6 +229,12 @@
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!-- ELK接入 -->
<dependency>
<groupId>com.github.danielwegener</groupId>
<artifactId>logback-kafka-appender</artifactId>
<version>0.2.0-RC2</version>
</dependency>
</dependencies>
</dependencyManagement>