|
|
|
|
@@ -5,8 +5,10 @@ import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.cool.store.constants.CommonConstants;
|
|
|
|
|
import com.cool.store.constants.RedisConstant;
|
|
|
|
|
import com.cool.store.context.LoginUserInfo;
|
|
|
|
|
import com.cool.store.dao.*;
|
|
|
|
|
import com.cool.store.dto.buser.UserPositionAndUserScopeDTO;
|
|
|
|
|
import com.cool.store.dto.log.*;
|
|
|
|
|
import com.cool.store.dto.partner.*;
|
|
|
|
|
import com.cool.store.entity.*;
|
|
|
|
|
import com.cool.store.enums.*;
|
|
|
|
|
@@ -27,6 +29,7 @@ import com.github.pagehelper.PageInfo;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
@@ -73,6 +76,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
private HyPartnerBaseInfoService hyPartnerBaseInfoService;
|
|
|
|
|
@Resource
|
|
|
|
|
WorkFlowService workFlowService;
|
|
|
|
|
@Resource
|
|
|
|
|
HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@@ -133,17 +138,40 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean transferInvestmentManager(String userId, Long lineId) {
|
|
|
|
|
public Boolean transferInvestmentManager(LoginUserInfo user,String userId,String userName, Long lineId) {
|
|
|
|
|
if (StringUtil.isBlank(userId)||lineId==null){
|
|
|
|
|
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
|
|
|
|
}
|
|
|
|
|
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
|
|
|
|
|
hyPartnerLineInfoDAO.updateInvestmentManager(userId, Arrays.asList(lineId));
|
|
|
|
|
|
|
|
|
|
List<String> userIdList = new ArrayList<>();
|
|
|
|
|
userIdList.add(userId);
|
|
|
|
|
if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){
|
|
|
|
|
userIdList.add(hyPartnerLineInfoDO.getInvestmentManager());
|
|
|
|
|
}
|
|
|
|
|
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList);
|
|
|
|
|
Map<String, EnterpriseUserDO> userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
|
|
|
|
|
|
|
|
|
|
//添加日志
|
|
|
|
|
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(),
|
|
|
|
|
user.getName(), OperateTypeEnum.TRANSFER_INVESTMENT_MANAGER,
|
|
|
|
|
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(userId,new EnterpriseUserDO()).getMobile())
|
|
|
|
|
.afterInvestmentManagerUsername(userDOMap.getOrDefault(userId,new EnterpriseUserDO()).getName())
|
|
|
|
|
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
|
|
|
|
|
lineLogInfo.setData(logDTO);
|
|
|
|
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean allocationInvestmentManager(String userId, List<Long> lineIdList) {
|
|
|
|
|
if (StringUtil.isBlank(userId)|| CollectionUtils.isEmpty(lineIdList)){
|
|
|
|
|
public Boolean allocationInvestmentManager(LoginUserInfo user, List<Long> lineIdList) {
|
|
|
|
|
if (user==null|| CollectionUtils.isEmpty(lineIdList)){
|
|
|
|
|
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
|
|
|
|
}
|
|
|
|
|
//加盟上线索集合
|
|
|
|
|
@@ -157,7 +185,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
closeLineList.stream().forEach(x->{
|
|
|
|
|
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
|
|
|
|
hyPartnerLineInfoDO.setPartnerId(x.getPartnerId());
|
|
|
|
|
hyPartnerLineInfoDO.setInvestmentManager(userId);
|
|
|
|
|
hyPartnerLineInfoDO.setInvestmentManager(user.getUserId());
|
|
|
|
|
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
|
|
|
|
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
|
|
|
|
hyPartnerLineInfoDO.setLineStatus(1);
|
|
|
|
|
@@ -177,8 +205,19 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
//没有结束的线索直接分配招商经理
|
|
|
|
|
List<HyPartnerLineInfoDO> otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList());
|
|
|
|
|
List<Long> otherLineIdList = otherLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
|
|
|
|
|
hyPartnerLineInfoDAO.updateInvestmentManager(userId, otherLineIdList);
|
|
|
|
|
hyPartnerLineInfoDAO.updateInvestmentManager(user.getUserId(), otherLineIdList);
|
|
|
|
|
|
|
|
|
|
//添加日志
|
|
|
|
|
partnerLineInfoList.forEach(x->{
|
|
|
|
|
LineLogInfo lineLogInfo = new LineLogInfo(x.getPartnerId(), x.getId(), user.getUserId(),
|
|
|
|
|
user.getName(), OperateTypeEnum.ALLOCATION_INVESTMENT_MANAGER,
|
|
|
|
|
WorkflowStageEnum.getWorkflowStageByCode(x.getWorkflowStage()),
|
|
|
|
|
x.getWorkflowStatus(), "");
|
|
|
|
|
AllocationInvestmentManagerLogDTO logDTO = AllocationInvestmentManagerLogDTO.builder().allocationUserId(user.getUserId()).allocationUsername(user.getName())
|
|
|
|
|
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
|
|
|
|
|
lineLogInfo.setData(logDTO);
|
|
|
|
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
|
|
|
|
});
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -204,10 +243,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean joinBlackList(String userId,Long lineId, Integer status, String joinReason) {
|
|
|
|
|
public Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason) {
|
|
|
|
|
if (lineId==null){
|
|
|
|
|
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
|
|
|
|
}
|
|
|
|
|
HyPartnerLineInfoDO line = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
|
|
|
|
|
//加入黑名单 阶段回到第一步待提交状态
|
|
|
|
|
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
|
|
|
|
hyPartnerLineInfoDO.setId(lineId);
|
|
|
|
|
@@ -215,16 +255,26 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
hyPartnerLineInfoDO.setJoinBlackReason(joinReason);
|
|
|
|
|
hyPartnerLineInfoDO.setRejectRealReason(joinReason);
|
|
|
|
|
hyPartnerLineInfoDO.setCloseTime(new Date());
|
|
|
|
|
hyPartnerLineInfoDO.setCloseUserId(userId);
|
|
|
|
|
hyPartnerLineInfoDO.setCloseUserId(user.getUserId());
|
|
|
|
|
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
|
|
|
|
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
|
|
|
|
|
|
|
|
|
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
|
|
|
|
|
|
|
|
|
//添加日志
|
|
|
|
|
LineLogInfo lineLogInfo = new LineLogInfo(line.getPartnerId(), line.getId(), user.getUserId(),
|
|
|
|
|
user.getName(), OperateTypeEnum.ADD_BLACKLIST,
|
|
|
|
|
WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()),
|
|
|
|
|
line.getWorkflowStatus(), "");
|
|
|
|
|
BlackListLogDTO logDTO = BlackListLogDTO.builder().operateUserId(user.getUserId()).reason(joinReason).operateUsername(user.getName())
|
|
|
|
|
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
|
|
|
|
|
lineLogInfo.setData(logDTO);
|
|
|
|
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
|
|
|
|
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean removeBlackList(Long lineId, Integer status, String removeReason) {
|
|
|
|
|
public Boolean removeBlackList(LoginUserInfo user,Long lineId, Integer status, String removeReason) {
|
|
|
|
|
//移除黑名单 黑名单线索置为删除状态 新增一条线索
|
|
|
|
|
if (lineId==null){
|
|
|
|
|
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
|
|
|
|
@@ -249,16 +299,28 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
hyPartnerBaseInfoDO.setPartnerId(hyPartnerLineInfo.getPartnerId());
|
|
|
|
|
hyPartnerBaseInfoDO.setPartnerLineId(newHyPartnerLineInfoDO.getId());
|
|
|
|
|
hyPartnerBaseInfoDAO.insertSelective(hyPartnerBaseInfoDO);
|
|
|
|
|
|
|
|
|
|
//添加日志
|
|
|
|
|
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfo.getPartnerId(), hyPartnerLineInfo.getId(), user.getUserId(),
|
|
|
|
|
user.getName(), OperateTypeEnum.REMOVE_BLACKLIST,
|
|
|
|
|
WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfo.getWorkflowStage()),
|
|
|
|
|
hyPartnerLineInfo.getWorkflowStatus(), "");
|
|
|
|
|
BlackListLogDTO logDTO = BlackListLogDTO.builder().operateUserId(user.getUserId()).reason(removeReason).operateUsername(user.getName())
|
|
|
|
|
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
|
|
|
|
|
lineLogInfo.setData(logDTO);
|
|
|
|
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) {
|
|
|
|
|
public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) {
|
|
|
|
|
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
|
|
|
|
|
if (hyPartnerLineInfoDO==null){
|
|
|
|
|
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
|
|
|
|
|
}
|
|
|
|
|
String oldWorkflowStage = hyPartnerLineInfoDO.getWorkflowStage();
|
|
|
|
|
String oldWorkflowStatus = hyPartnerLineInfoDO.getWorkflowStatus();
|
|
|
|
|
//通过
|
|
|
|
|
if ("pass".equals(closeFollowRequest.getType())){
|
|
|
|
|
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode());
|
|
|
|
|
@@ -271,7 +333,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
HyPartnerBaseInfoDO hy = hyPartnerBaseInfoDAO.getByPartnerLineId(hyPartnerLineInfoDO.getId());
|
|
|
|
|
hy.setPassReason(closeFollowRequest.getPassReason());
|
|
|
|
|
hy.setPassTime(new Date());
|
|
|
|
|
hy.setPassUserId(userId);
|
|
|
|
|
hy.setPassUserId(user.getUserId());
|
|
|
|
|
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
|
|
|
|
|
hy.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
|
|
|
|
|
}
|
|
|
|
|
@@ -294,7 +356,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
}
|
|
|
|
|
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
|
|
|
|
|
hyPartnerLineInfoDO.setCloseTime(new Date());
|
|
|
|
|
hyPartnerLineInfoDO.setCloseUserId(userId);
|
|
|
|
|
hyPartnerLineInfoDO.setCloseUserId(user.getUserId());
|
|
|
|
|
//各阶段单独的逻辑
|
|
|
|
|
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),closeFollowRequest);
|
|
|
|
|
}
|
|
|
|
|
@@ -313,9 +375,25 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|
|
|
|
hyPartnerLineInfoDO.setCloseTime(new Date());
|
|
|
|
|
}
|
|
|
|
|
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//通过 拒绝添加日志
|
|
|
|
|
if ("pass".equals(closeFollowRequest.getType())||"reject".equals(closeFollowRequest.getType())){
|
|
|
|
|
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(),
|
|
|
|
|
user.getName(), OperateTypeEnum.REMOVE_BLACKLIST,
|
|
|
|
|
WorkflowStageEnum.getWorkflowStageByCode(oldWorkflowStage),
|
|
|
|
|
oldWorkflowStatus, "");
|
|
|
|
|
CloseOrPassFollowLogDTO log = CloseOrPassFollowLogDTO.builder().operateUserId(user.getUserId()).passReason(closeFollowRequest.getPassReason()).rejectRealReason(closeFollowRequest.getRejectRealReason())
|
|
|
|
|
.operateUsername(user.getName()).rejectPublicReason(closeFollowRequest.getRejectPublicReason()).certifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()))
|
|
|
|
|
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build();
|
|
|
|
|
lineLogInfo.setData(log);
|
|
|
|
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
|
|
|
|
}
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<PublicSeaLineListVo> publicSeaLineList(String userId, LineRequest lineRequest) {
|
|
|
|
|
//确认是招商经理还是部门负责人
|
|
|
|
|
|