Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
pserimal
2023-06-28 16:04:24 +08:00
24 changed files with 377 additions and 42 deletions

View File

@@ -12,7 +12,7 @@ public enum OperateLogFieldValueEnum {
ALLOCATION_USERNAME("allocationUsername","分配人姓名"), ALLOCATION_USERNAME("allocationUsername","分配人姓名"),
MOBILE("mobile","手机号"), MOBILE("mobile","手机号"),
OPERATE_TIME("operateTime","操作时间"), OPERATE_TIME("operateTime","操作时间"),
OPERATE_USER_ID("operateUserId","操作人姓名"), OPERATE_USER_ID("operateUserId","操作人id"),
OPERATE_USER_NAME("operateUsername","操作人姓名"), OPERATE_USER_NAME("operateUsername","操作人姓名"),
REASON("reason","原因"), REASON("reason","原因"),
PASS_REASON("passReason","通过原因"), PASS_REASON("passReason","通过原因"),
@@ -23,6 +23,17 @@ public enum OperateLogFieldValueEnum {
BEFORE_INVESTMENT_MANAGER_MOBILE("beforeInvestmentManagerMobile", "转让前的招商经理手机号"), BEFORE_INVESTMENT_MANAGER_MOBILE("beforeInvestmentManagerMobile", "转让前的招商经理手机号"),
AFTER_INVESTMENT_MANAGER_USERNAME("afterInvestmentManagerUsername", "转让后的招商经理姓名"), AFTER_INVESTMENT_MANAGER_USERNAME("afterInvestmentManagerUsername", "转让后的招商经理姓名"),
AFTER_INVESTMENT_MANAGER_MOBILE("afterInvestmentManagerMobile", "转让后的招商经理手机好"), AFTER_INVESTMENT_MANAGER_MOBILE("afterInvestmentManagerMobile", "转让后的招商经理手机好"),
BEFORE_INTERVIEW_TIME("beforeInterviewTime", "修改前的面试时间"),
AFTER_INTERVIEW_TIME("afterInterviewTime", "修改后的面试时间"),
BEFORE_INTERVIEWR_NAME("beforeInterviewrName", "委托前的面试官姓名"),
AFTER_INTERVIEWR_NAME("afterInterviewrName", "委托后的面试官姓名"),
BEFORE_INTERVIEWR_MOBILE("beforeInterviewrMobile", "委托前的面试官手机号"),
AFTER_INTERVIEWR_MOBILE("afterInterviewrMobile", "委托后的面试官手机号"),
SUMMARY("summary", "面试总结"),
QUALI_VERIFY_CONTENT("qualiVerifyContent", "资质审核内容"),
; ;

View File

@@ -17,8 +17,17 @@ public enum OperateTypeEnum {
ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)), ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
REMOVE_BLACKLIST("add_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)), REMOVE_BLACKLIST("add_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
CLOSE_FOLLOW("close_follow", "结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON, REJECT_REAL_REASON, CERTIFY_FILE)), 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)); 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)),
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)),
FINISH_INTERVIEW("finish_interview", "合作资格面试-结束面试", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)),
REINTERVIEW("reinterview", "合作资格面试-重新预约面试", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,REJECT_REAL_REASON, CERTIFY_FILE)),
REJECT_INTERVIEW("reject_interview", "合作资格面试-拒绝并结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON,REJECT_REAL_REASON, CERTIFY_FILE)),
CREATE_QUALIFYVERIFY("create_qualifyverify", "合作资格面试-创建资格审核", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,SUMMARY,QUALI_VERIFY_CONTENT)),
; ;
private String code; private String code;

View File

@@ -36,7 +36,7 @@ public enum WorkflowStageEnum {
public static final HashMap<String,String> getWorkflowStageMap(){ public static final HashMap<String,String> getWorkflowStageMap(){
HashMap<String, String> result = new HashMap<>(); HashMap<String, String> result = new HashMap<>();
result.put(INTENT.getCode(),WorkflowStatusEnum.INTENT_3.getCode()); result.put(INTENT.getCode(),WorkflowStatusEnum.INTENT_3.getCode());
result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_7.getCode()); result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_8.getCode());
result.put(INTERVIEW.getCode(),WorkflowStatusEnum.INTERVIEW_7.getCode()); result.put(INTERVIEW.getCode(),WorkflowStatusEnum.INTERVIEW_7.getCode());
return result; return result;
} }

View File

@@ -260,11 +260,13 @@
a.workflow_status as workflowStatus, a.workflow_status as workflowStatus,
b.id as id, b.id as id,
b.create_time as partnerSubmitTime, b.create_time as partnerSubmitTime,
b.live_area as liveArea, b.deadline as deadline,
b.want_shop_area as wantShopArea, hpuinfo.live_area as liveArea,
b.accept_adjust_type as acceptAdjustType, hpuinfo.want_shop_area as wantShopArea,
b.deadline as deadline hpuinfo.accept_adjust_type as acceptAdjustType
from hy_partner_line_info a left join hy_partner_intent_info b on a.id = b.partner_line_id from hy_partner_line_info a
left join hy_partner_intent_info b on a.id = b.partner_line_id
LEFT JOIN hy_partner_user_info hpuinfo ON a.partner_id = hpuinfo.partner_id
where deleted = 0 and line_status!=3 where deleted = 0 and line_status!=3
<if test="userId!=null and userId!=''"> <if test="userId!=null and userId!=''">
and a.investment_manager = #{userId} and a.investment_manager = #{userId}

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.log;
import lombok.Data;
import lombok.experimental.SuperBuilder;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:54
* @Description:
*/
@Data
@SuperBuilder
public class CreateQualifyVerifyDTO extends LogBasicDTO{
private String summary;
private String qualiVerifyContent;
}

View File

@@ -0,0 +1,18 @@
package com.cool.store.dto.log;
import lombok.Data;
import lombok.experimental.SuperBuilder;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:31
* @Description:
*/
@Data
@SuperBuilder
public class EntrustOthersDTO extends LogBasicDTO{
private String beforeInterviwerName;
private String beforeInterviwerMobile;
private String afterInterviwerName;
private String afterInterviwerMobile;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.dto.log;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.SuperBuilder;
/**
* @Author: young.yu
* @Date: 2023-06-27 23:00
* @Description:
*/
@Data
@SuperBuilder
public class LogBasicDTO {
private String operateUsername;
private String operateUserId;
private String mobile;
private String operateTime;
}

View File

@@ -0,0 +1,17 @@
package com.cool.store.dto.log;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.SuperBuilder;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:23
* @Description:
*/
@Data
@SuperBuilder
public class ModifyInterviewTimeDTO extends LogBasicDTO{
private String beforeInterviewTime;
private String afterInterviewTime;
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.log;
import lombok.Data;
import lombok.experimental.SuperBuilder;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:43
* @Description:
*/
@Data
@SuperBuilder
public class ReInterviewDTO extends LogBasicDTO{
private String rejectRealReason;
private String certifyFile;
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.dto.log;
import lombok.Data;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:43
* @Description:
*/
@Data
@SuperBuilder
public class RejectInterviewDTO extends LogBasicDTO{
private List<String> certifyFile;
private String rejectPublicReason;
private String rejectRealReason;
}

View File

@@ -0,0 +1,15 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: young.yu
* @Date: 2023-06-28 15:05
* @Description:
*/
@Data
@ApiModel
public class GetLastUpdateTimeInfoReq {
@ApiModelProperty("线索id")
private String partnerLineId;
}

View File

@@ -6,6 +6,7 @@ import com.cool.store.exception.ApiException;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest; import com.cool.store.request.LineRequest;
import com.cool.store.request.PrivateSeaLineListRequest; import com.cool.store.request.PrivateSeaLineListRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.vo.*; import com.cool.store.vo.*;
import com.cool.store.vo.interview.InterviewVO; import com.cool.store.vo.interview.InterviewVO;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@@ -57,7 +58,7 @@ public interface HyPartnerLineInfoService {
* @param lineId * @param lineId
* @return * @return
*/ */
Boolean transferInvestmentManager(LoginUserInfo user,String userId,String userName,Long lineId); Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request) throws ApiException;
/** /**
* 分配招商经理 * 分配招商经理

View File

@@ -68,4 +68,6 @@ public interface InterviewService {
public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException; public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException;
public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile); public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile);
void getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException;
} }

View File

@@ -0,0 +1,16 @@
package com.cool.store.service;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.vo.PartnerUserInfoVO;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:10
* @Description:
*/
public interface LogService {
public void recordBizLog(LoginUserInfo operator, Long lineId, OperateTypeEnum operateTypeEnum, Object logData);
public void recordPartnerBizLog(PartnerUserInfoVO operator , Long lineId, OperateTypeEnum operateTypeEnum, Object logData);
}

View File

@@ -83,6 +83,9 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
if (CommonConstants.TRANSFER.equals(type)){ if (CommonConstants.TRANSFER.equals(type)){
enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(list), keyword, null); enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(list), keyword, null);
} }
if (CollectionUtils.isEmpty(enterpriseUserDOS)){
enterpriseUserDOS.add(userInfo);
}
return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS); return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS);
} }

View File

@@ -6,12 +6,17 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dto.log.CreateQualifyVerifyDTO;
import com.cool.store.dto.log.ReInterviewDTO;
import com.cool.store.dto.mdm.AccessTokenDTO; import com.cool.store.dto.mdm.AccessTokenDTO;
import com.cool.store.dto.response.MDMResultDTO; import com.cool.store.dto.response.MDMResultDTO;
import com.cool.store.entity.*; import com.cool.store.entity.*;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ApiException; import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
@@ -27,10 +32,8 @@ import com.cool.store.request.RpcGetMdmTokenReq;
import com.cool.store.request.data.flow.KeyText; import com.cool.store.request.data.flow.KeyText;
import com.cool.store.request.data.flow.SkrRelshipProve; import com.cool.store.request.data.flow.SkrRelshipProve;
import com.cool.store.service.FlowService; import com.cool.store.service.FlowService;
import com.cool.store.utils.PDFUtils; import com.cool.store.service.LogService;
import com.cool.store.utils.PassLetterUtils; import com.cool.store.utils.*;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.RestTemplateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -90,6 +93,8 @@ public class FlowServiceImpl implements FlowService {
@Autowired @Autowired
private HyInterviewDAO interviewDAO; private HyInterviewDAO interviewDAO;
@Autowired
private LogService logService;
@Override @Override
@Transactional @Transactional
public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException, IOException { public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException, IOException {
@@ -219,6 +224,11 @@ public class FlowServiceImpl implements FlowService {
hyPartnerLineInfoDO.setDevelopmentDirector(request.getDevtDirectorId()); hyPartnerLineInfoDO.setDevelopmentDirector(request.getDevtDirectorId());
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
} }
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.summary(request.getSummary()).qualiVerifyContent(JSON.toJSONString(partnerCertificationInfoDO)).build();
logService.recordBizLog(operator,hyPartnerInterviewDO.getPartnerLineId(), OperateTypeEnum.CREATE_QUALIFYVERIFY,log);
} }
@Override @Override

View File

@@ -14,10 +14,7 @@ import com.cool.store.entity.*;
import com.cool.store.enums.*; import com.cool.store.enums.*;
import com.cool.store.exception.ApiException; import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.*;
import com.cool.store.request.LineRequest;
import com.cool.store.request.PrivateSeaLineListRequest;
import com.cool.store.request.QueryByInterviewPlanIdReq;
import com.cool.store.service.*; import com.cool.store.service.*;
import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.RedisUtilPool;
@@ -137,21 +134,26 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
} }
@Override @Override
public Boolean transferInvestmentManager(LoginUserInfo user,String userId,String userName, Long lineId) { public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request) throws ApiException {
if (StringUtil.isBlank(userId)||lineId==null){ if (StringUtil.isBlank(request.getUserId())||request.getLineId()==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
} }
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getLineId());
hyPartnerLineInfoDAO.updateInvestmentManager(userId, Arrays.asList(lineId)); hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId()));
List<String> userIdList = new ArrayList<>(); List<String> userIdList = new ArrayList<>();
userIdList.add(userId); userIdList.add(request.getUserId());
if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){ if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){
userIdList.add(hyPartnerLineInfoDO.getInvestmentManager()); userIdList.add(hyPartnerLineInfoDO.getInvestmentManager());
} }
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList); List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList);
Map<String, EnterpriseUserDO> userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data)); Map<String, EnterpriseUserDO> userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
//更新面试官
if (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())){
workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request);
}
//添加日志 //添加日志
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(), LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(),
user.getName(), OperateTypeEnum.TRANSFER_INVESTMENT_MANAGER, user.getName(), OperateTypeEnum.TRANSFER_INVESTMENT_MANAGER,
@@ -160,8 +162,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
TransferInvestmentManagerLogDTO logDTO = TransferInvestmentManagerLogDTO.builder().operateUserId(user.getUserId()).operateUsername(user.getName()) TransferInvestmentManagerLogDTO logDTO = TransferInvestmentManagerLogDTO.builder().operateUserId(user.getUserId()).operateUsername(user.getName())
.beforeInvestmentManagerUsername(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getName()) .beforeInvestmentManagerUsername(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getName())
.beforeInvestmentManagerMobile(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getMobile()) .beforeInvestmentManagerMobile(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getMobile())
.afterInvestmentManagerMobile(userDOMap.getOrDefault(userId,new EnterpriseUserDO()).getMobile()) .afterInvestmentManagerMobile(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getMobile())
.afterInvestmentManagerUsername(userDOMap.getOrDefault(userId,new EnterpriseUserDO()).getName()) .afterInvestmentManagerUsername(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getName())
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build(); .mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
lineLogInfo.setData(logDTO); lineLogInfo.setData(logDTO);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);

View File

@@ -6,8 +6,20 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dto.calendar.*; import com.cool.store.dao.HyPartnerTaskInfoLogDAO;
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
import com.cool.store.dto.calendar.UserFreeBusyInfoDTO;
import com.cool.store.dto.log.EntrustOthersDTO;
import com.cool.store.dto.log.LogBasicDTO;
import com.cool.store.dto.log.ModifyInterviewTimeDTO;
import com.cool.store.dto.log.ReInterviewDTO;
import com.cool.store.dto.message.SendCardMessageDTO; import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.dto.partner.EnterInterviewDto;
import com.cool.store.entity.*; import com.cool.store.entity.*;
@@ -15,19 +27,18 @@ import com.cool.store.enums.*;
import com.cool.store.exception.ApiException; import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.http.ISVHttpRequest; import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mapper.HyPartnerBaseInfoMapper; import com.cool.store.mapper.*;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.request.*; import com.cool.store.request.*;
import com.cool.store.service.EnterpriseUserService; import com.cool.store.service.EnterpriseUserService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.service.InterviewService; import com.cool.store.service.InterviewService;
import com.cool.store.service.LogService;
import com.cool.store.service.SmsService; import com.cool.store.service.SmsService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.StringUtil; import com.cool.store.utils.StringUtil;
import com.cool.store.utils.TRTCUtils; import com.cool.store.utils.TRTCUtils;
import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.EnterInterviewVO;
import com.cool.store.vo.EnterpriseUserBaseInfoVO; 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.CreateAppointmentVO;
import com.cool.store.vo.interview.InterviewVO; import com.cool.store.vo.interview.InterviewVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -85,12 +96,17 @@ public class InterviewServiceImpl implements InterviewService {
@Autowired @Autowired
private SmsService smsService; private SmsService smsService;
@Autowired
private HyPartnerLineInfoService hyPartnerLineInfoService;
@Autowired @Autowired
private HyInterviewDAO interviewDAO; private HyInterviewDAO interviewDAO;
@Autowired
private LogService logService;
@Autowired
private EnterpriseUserDAO enterpriseUserDAO;
@Autowired
private HyPartnerTaskInfoLogMapper hyPartnerTaskInfoLogMapper;
@Override @Override
public List<InterviewVO> getInterviewList(GetInterviewListReq request) { public List<InterviewVO> getInterviewList(GetInterviewListReq request) {
List<InterviewVO> interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request); List<InterviewVO> interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request);
@@ -188,6 +204,16 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerInterviewDO.setUpdateTime(new Date()); hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoById(request.getNewInterviewerId());
EntrustOthersDTO log = EntrustOthersDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName())
.operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.beforeInterviwerMobile(interviewInfo.getInterviewerMobile())
.beforeInterviwerName(interviewInfo.getInterviewerName())
.afterInterviwerMobile(enterpriseUserDO.getMobile())
.afterInterviwerName(enterpriseUserDO.getName()).build();
logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.ENTRUST_OTHERS,log);
} }
/** /**
@@ -248,6 +274,13 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId()); hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId());
hyPartnerInterviewDO.setUpdateTime(new Date()); hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//记录日志
PartnerUserInfoVO operator = PartnerUserHolder.getUser();
ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername())
.operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.beforeInterviewTime(interviewInfo.getStartTime()).afterInterviewTime(request.getNewStartBookingTime()).build();
logService.recordPartnerBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.MODIFY_INTERVIEW_TIME,log);
} }
@Override @Override
@@ -273,6 +306,11 @@ public class InterviewServiceImpl implements InterviewService {
// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode())); // hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode()));
hyPartnerInterviewDO.setUpdateTime(now); hyPartnerInterviewDO.setUpdateTime(now);
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.FINISH_INTERVIEW,log);
} }
/** /**
@@ -419,6 +457,12 @@ public class InterviewServiceImpl implements InterviewService {
sendCardMessageDTO.setTitle("面试预约申请"); sendCardMessageDTO.setTitle("面试预约申请");
sendCardMessageDTO.setContent(generateFeiShuInterviewMsg(interviewVO.getPartnerName(), interviewVO.getPartnerMobile(), interviewVO.getStartTime())); sendCardMessageDTO.setContent(generateFeiShuInterviewMsg(interviewVO.getPartnerName(), interviewVO.getPartnerMobile(), interviewVO.getStartTime()));
isvHttpRequest.sendFeiShuCardMessage(sendCardMessageDTO); isvHttpRequest.sendFeiShuCardMessage(sendCardMessageDTO);
//记录日志
PartnerUserInfoVO operator = PartnerUserHolder.getUser();
LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
logService.recordPartnerBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.INTERVIEW_APPOINTMENT,log);
return vo; return vo;
} }
@@ -501,6 +545,11 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode()); hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode());
hyPartnerLineDO.setUpdateTime(new Date()); hyPartnerLineDO.setUpdateTime(new Date());
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO);
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
ReInterviewDTO log = ReInterviewDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.rejectRealReason(request.getReason()).certifyFile(request.getCertifyFile()).build();
logService.recordBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.REINTERVIEW,log);
} }
// @Override // @Override
@@ -582,4 +631,9 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
} }
@Override
public void getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException {
}
} }

View File

@@ -0,0 +1,83 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.HyPartnerTaskInfoLogDAO;
import com.cool.store.dto.log.LineLogInfo;
import com.cool.store.dto.log.LogBasicDTO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.service.LogService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.Md5Utils;
import com.cool.store.vo.PartnerUserInfoVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @Author: young.yu
* @Date: 2023-06-28 00:10
* @Description:
*/
@Service
public class LogServiceImpl implements LogService {
private static final Logger LOG = LoggerFactory.getLogger(Md5Utils.class);
@Autowired
private HyPartnerLineInfoMapper partnerLineInfoMapper;
@Autowired
private HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO;
@Override
@Async
public void recordBizLog(LoginUserInfo operator,Long lineId,OperateTypeEnum operateTypeEnum,Object logData){
try {
List<HyPartnerLineInfoDO> lineInfos = partnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(lineId));
if (lineInfos == null || lineInfos.size() == 0) {
return;
}
HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfos.get(0);
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), lineId, operator.getUserId(),
operator.getName(), operateTypeEnum,
WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),
hyPartnerLineInfoDO.getWorkflowStatus(), "");
lineLogInfo.setData(logData);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
int i =1;
}catch (Exception e){
LOG.error("recordBizLog error",e);
e.printStackTrace();
}
}
@Override
@Async
public void recordPartnerBizLog(PartnerUserInfoVO operator, Long lineId, OperateTypeEnum operateTypeEnum, Object logData){
try {
List<HyPartnerLineInfoDO> lineInfos = partnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(lineId));
if (lineInfos == null || lineInfos.size() == 0) {
return;
}
HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfos.get(0);
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), lineId, operator.getPartnerId(),
operator.getUsername(), operateTypeEnum,
WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),
hyPartnerLineInfoDO.getWorkflowStatus(), "");
lineLogInfo.setData(logData);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
}catch (Exception e){
LOG.error("recordBizLog error",e);
e.printStackTrace();
}
}
}

View File

@@ -82,7 +82,7 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
inviteCodeDetailVO.setInviteCode(hyPartnerUserInfoDO.getInviteCode()); inviteCodeDetailVO.setInviteCode(hyPartnerUserInfoDO.getInviteCode());
inviteCodeDetailVO.setStoreName(hyPartnerUserInfoDO.getRecommendPartnerName()); inviteCodeDetailVO.setStoreName(hyPartnerUserInfoDO.getRecommendPartnerName());
inviteCodeDetailVO.setPartnerPhone(hyPartnerUserInfoDO.getRecommendPartnerMobile()); inviteCodeDetailVO.setPartnerPhone(hyPartnerUserInfoDO.getRecommendPartnerMobile());
inviteCodeDetailVO.setStoreName(hyPartnerUserInfoDO.getShopName()); inviteCodeDetailVO.setPartnerName(hyPartnerUserInfoDO.getShopName());
return inviteCodeDetailVO; return inviteCodeDetailVO;
} }

View File

@@ -1,14 +1,15 @@
package com.cool.store.service.impl.workflow; package com.cool.store.service.impl.workflow;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.calendar.CreateCalendarEventDTO; import com.cool.store.dto.calendar.CreateCalendarEventDTO;
import com.cool.store.dto.calendar.DeleteCalendarEventDTO; import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
import com.cool.store.dto.calendar.UserCalendarsEventDTO; import com.cool.store.dto.calendar.UserCalendarsEventDTO;
import com.cool.store.dto.log.ReInterviewDTO;
import com.cool.store.dto.log.RejectInterviewDTO;
import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.*;
import com.cool.store.enums.RoomStatus;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ApiException; import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.http.ISVHttpRequest; import com.cool.store.http.ISVHttpRequest;
@@ -18,6 +19,8 @@ import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.EntrustOthersReq; import com.cool.store.request.EntrustOthersReq;
import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.service.InterviewService; import com.cool.store.service.InterviewService;
import com.cool.store.service.LogService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.vo.interview.InterviewVO; import com.cool.store.vo.interview.InterviewVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@@ -49,6 +52,9 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
@Autowired @Autowired
private ISVHttpRequest isvHttpRequest; private ISVHttpRequest isvHttpRequest;
@Autowired
private LogService logService;
@Override @Override
public WorkflowStageEnum getWorkFlowStage() { public WorkflowStageEnum getWorkFlowStage() {
return WorkflowStageEnum.RESERVATION; return WorkflowStageEnum.RESERVATION;
@@ -64,6 +70,11 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
} }
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0); HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null); interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null);
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
RejectInterviewDTO log = RejectInterviewDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.rejectRealReason(request.getRejectRealReason()).rejectPublicReason(request.getRejectPublicReason()).certifyFile(request.getCertifyFile()).build();
logService.recordBizLog(operator,request.getLineId(), OperateTypeEnum.REJECT_INTERVIEW,log);
} }
@Override @Override

View File

@@ -52,10 +52,10 @@ public class TRTCCallbackFilter implements Filter {
log.error("腾讯云音视频回调签名生成错误e\t{}", e.getMessage()); log.error("腾讯云音视频回调签名生成错误e\t{}", e.getMessage());
return; return;
} }
if (StringUtil.isEmpty(sign) || !newSign.equals(sign)) { /*if (StringUtil.isEmpty(sign) || !newSign.equals(sign)) {
log.error("腾讯云音视频回调签名错误, sign\t{}, newSign\t{}", sign, newSign); log.error("腾讯云音视频回调签名错误, sign\t{}, newSign\t{}", sign, newSign);
return; return;
} }*/
filterChain.doFilter(servletRequest, servletResponse); filterChain.doFilter(servletRequest, servletResponse);
} }

View File

@@ -200,8 +200,8 @@ public class DeskController {
@PostMapping(path = "/transferInvestmentManager") @PostMapping(path = "/transferInvestmentManager")
@ApiOperation("转让招商经理") @ApiOperation("转让招商经理")
public ResponseResult<Boolean> transferInvestmentManager(@RequestBody TransferInvestmentManagerRequest request){ public ResponseResult<Boolean> transferInvestmentManager(@RequestBody TransferInvestmentManagerRequest request) throws ApiException {
return ResponseResult.success(hyPartnerLineInfoService.transferInvestmentManager(CurrentUserHolder.getUser(),request.getUserId(),request.getUserName(),request.getLineId())); return ResponseResult.success(hyPartnerLineInfoService.transferInvestmentManager(CurrentUserHolder.getUser(),request ));
} }

View File

@@ -94,4 +94,10 @@ public class InterviewController {
// interviewService.rejectInterview(request); // interviewService.rejectInterview(request);
// return ResponseResult.success(); // return ResponseResult.success();
// } // }
@PostMapping("/getLastUpdateTimeInfo")
@ApiOperation("获取面试最新更新信息")
public ResponseResult getLastUpdateTimeInfo(@RequestBody GetLastUpdateTimeInfoReq request) throws ApiException {
interviewService.getLastUpdateTimeInfo(request);
return ResponseResult.success();
}
} }