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

This commit is contained in:
pserimal
2023-06-27 10:31:34 +08:00
26 changed files with 521 additions and 44 deletions

View File

@@ -220,6 +220,11 @@ public class RedisConstant {
public static final String PARTNER_INTENTINFO_CACHE_KEY = "partnerIntentInfoCache:{0}:{1}";
public static final String PARTNER_WANTSHOPINFO_CACHE_KEY = "partnerWantShopInfoCache:{0}:{1}";
public static final String PARTNER_INDUSTRYCOGNITIONINFO_CACHE_KEY = "partnerIndustryCognitionInfoCache:{0}:{1}";
public static final String DEVICE_OPEN_TOKEN = "device_open_token:{0}:{1}:{2}";
public static final String PHONE_NUMBER= "phone_number_";

View File

@@ -52,11 +52,11 @@ public class HyIntendDevMappingDAO {
return hyIntendDevelopementMappingMapper.selectByMappingIdList(idList);
}
public List<ZoneCheckDTO> selectByOpenAreaMappingIdList(List<Long> idList,String type){
public List<ZoneCheckDTO> selectByOpenAreaMappingIdList(List<Long> idList,String type,Long currentId){
if (CollectionUtils.isEmpty(idList)){
return new ArrayList<>();
}
return hyIntendDevelopementMappingMapper.selectByOpenAreaMappingIdList(idList,type);
return hyIntendDevelopementMappingMapper.selectByOpenAreaMappingIdList(idList,type,currentId);
}
public HyIntendDevelopementMappingDO selectByOpenAreaMappingId(Long id,String type){

View File

@@ -126,7 +126,7 @@ public class HyPartnerLineInfoDAO {
return hyPartnerLineInfoMapper.joinAndRemoveBlack(lineId,status,joinReason,removeReason);
}
public List<PublicSeaLineDTO> getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List<String> userIdList){
public List<PublicSeaLineDTO> getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, String updateStartTime, String updateEndTime, List<String> userIdList){
return hyPartnerLineInfoMapper.getPublicSeaLineList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType,updateStartTime,updateEndTime,userIdList);
}

View File

@@ -56,7 +56,8 @@ public interface HyIntendDevelopementMappingMapper {
List<ZoneCheckDTO> selectByMappingIdList(@Param("mappingIdList") List<Long> mappingIdList);
List<ZoneCheckDTO> selectByOpenAreaMappingIdList(@Param("openAreaMappingIdList") List<Long> openAreaMappingIdList,
@Param("type") String type);
@Param("type") String type,
@Param("currentId") Long currentId);
HyIntendDevelopementMappingDO selectByOpenAreaMappingId(@Param("openAreaMappingId") Long openAreaMappingId,

View File

@@ -154,8 +154,8 @@ public interface HyPartnerLineInfoMapper {
@Param("phoneKeyword") String phoneKeyword,
@Param("intentArea") String intentArea,
@Param("acceptAdjustType") Integer acceptAdjustType,
@Param("updateStartTime") Date updateStartTime,
@Param("updateEndTime") Date updateEndTime,
@Param("updateStartTime") String updateStartTime,
@Param("updateEndTime") String updateEndTime,
@Param("userIdList") List<String> userIdList);

View File

@@ -147,6 +147,9 @@
#{mappingId}
</foreach>
</if>
<if test="currentId!=null">
and a.mapping_id != #{currentId}
</if>
</where>
</select>

View File

@@ -186,7 +186,7 @@
hy_open_area_info
where area_status = 'keyOpen'
and province_city_flag = 1
and parent_id is null
and parent_id is not null
</select>
<select id="queryByKeyword" resultMap="BaseResultMap">

View File

@@ -298,16 +298,16 @@
hpli.partner_id as partnerId,
hpli.deadline as deadline,
hpli.workflow_status as status,
a.id as id,
a.id as interviewId,
a.auth_code as authCode,
a.approve_time as approveTime,
a.process_info as processInfo,
b.id as interviewId,
b.start_time as startTime,
b.end_time as endTime,
b.interviewer as interviewer,
b.create_time as createTime,
b.room_id as roomId
b.room_id as roomId,
b.id as id
from hy_partner_line_info hpli
left join hy_partner_interview a on hpli.id = a.partner_line_id
left join hy_partner_interview_plan b on a.interview_plan_id = b.id

View File

@@ -531,12 +531,14 @@
SELECT MAX(h2.create_time)
FROM hy_partner_line_info h2
WHERE h1.partner_id = h2.partner_id
and h2.deleted= 1
<if test="partnerIdList!=null and partnerIdList.size>0">
<foreach collection="partnerIdList" item="partnerId" open="and h1.partner_id in (" close=")" separator=",">
#{partnerId}
</foreach>
</if>
)
</select>
<select id="getFollowCountList" resultType="com.cool.store.dto.partner.LineCountDTO">
@@ -563,7 +565,7 @@
<select id="getLineFollowHistoryList" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"></include>
FROM hy_partner_line_info
where deleted = 1
where (deleted = 1 or (deleted=0 and line_status=0))
and partner_id = #{partner_id}
</select>

View File

@@ -0,0 +1,57 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/5/30 15:14
* @Version 1.0
*/
@Data
@ApiModel
public class IndustryCognitionInfoRequest {
@ApiModelProperty("线索表ID")
private Long partnerLineId;
@ApiModelProperty("加盟商C端用户表ID partnerId ")
private String partnerId;
@ApiModelProperty("学历")
private String education;
@ApiModelProperty("工作年限")
private String workYear;
@ApiModelProperty("是否具有工作经验")
private Integer isHaveWorkExp;
@ApiModelProperty("工作或经商经验")
private String workExp;
@ApiModelProperty("是否是消费者")
private Integer isConsumer;
@ApiModelProperty("其他品牌")
private String otherBand;
@ApiModelProperty("品牌优势")
private String brandStrength;
@ApiModelProperty("需要改进")
private String needImprove;
@ApiModelProperty("优势")
private String strength;
@ApiModelProperty("劣势")
private String weakness;
@ApiModelProperty("提交标识 提交-true 暂存-false")
private Boolean submitFlag;
}

View File

@@ -30,10 +30,10 @@ public class LineRequest extends PageInfoRequest{
private Integer acceptAdjustType;
@ApiModelProperty("更新开始时间")
private Date updateStartTime;
private String updateStartTime;
@ApiModelProperty("更新结束时间")
private Date updateEndTime;
private String updateEndTime;

View File

@@ -0,0 +1,51 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author wxp
* @Date 2023/5/30 15:14
* @Version 1.0
*/
@Data
@ApiModel
public class PartnerWantShopInfoRequest {
@ApiModelProperty("线索表ID")
private Long partnerLineId;
@ApiModelProperty("加盟商C端用户表ID partnerId ")
private String partnerId;
@ApiModelProperty("常驻区域")
private String liveArea;
@ApiModelProperty("意向开店区域")
private String wantShopArea;
@ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂")
private Integer acceptAdjustType;
@ApiModelProperty("是否有意向铺位")
private Integer isHaveWantShop;
@ApiModelProperty("意向铺位信息,json字段,最多5个")
private List<WantShopInfoRequest> wantShopInfo;
@ApiModelProperty("最大预算")
private String maxBudget;
@ApiModelProperty("资金来源 1自有资金;2借贷资金;3部分自有、部分借代;4部分自有、部分亲友借代")
private String moneySource;
@ApiModelProperty("资金证明")
private List<String> moneyProve;
@ApiModelProperty("提交标识 提交-true 暂存-false")
private Boolean submitFlag;
}

View File

@@ -5,8 +5,9 @@ import com.google.common.collect.Lists;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
@@ -26,13 +27,19 @@ public class EnterpriseUserSingleInfoVO {
if(CollectionUtils.isEmpty(userList)){
return Lists.newArrayList();
}
Map<String, String> userIdMap = new HashMap<>();
List<EnterpriseUserSingleInfoVO> resultList = new ArrayList<>();
for (EnterpriseUserDO enterpriseUser : userList) {
String userId = enterpriseUser.getUserId();
boolean isContains = userIdMap.containsKey(userId);
if(isContains){
EnterpriseUserSingleInfoVO result = new EnterpriseUserSingleInfoVO();
result.setUserId(enterpriseUser.getUserId());
result.setUserId(userId);
result.setUserName(enterpriseUser.getName());
result.setMobile(enterpriseUser.getMobile());
resultList.add(result);
userIdMap.put(userId, userId);
}
}
return resultList;
}

View File

@@ -51,6 +51,9 @@ public class PartnerInterviewInfoVO {
@ApiModelProperty("面试官名称")
private String interviewerName;
@ApiModelProperty("面试官手机号")
private String interviewerPhone;
@ApiModelProperty("预约时间")
private String createTime;

View File

@@ -1,7 +1,9 @@
package com.cool.store.service;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.request.IndustryCognitionInfoRequest;
import com.cool.store.request.PartnerIntentInfoRequest;
import com.cool.store.request.PartnerWantShopInfoRequest;
import com.cool.store.vo.PartnerIntentApplyInfoVO;
import com.cool.store.vo.PartnerIntentInfoVO;
import com.cool.store.vo.PartnerUserInfoVO;
@@ -41,6 +43,15 @@ public interface HyPartnerIntentInfoService {
String submitPartnerIntentInfo(PartnerIntentInfoRequest partnerIntentInfoRequest);
String submitWantShopInfo(PartnerWantShopInfoRequest request);
String submitIndustryCognitionInfo(IndustryCognitionInfoRequest request);
PartnerIntentInfoVO queryPartnerIntentInfo(PartnerUserInfoVO userInfoVO, Long lineId);
PartnerIntentInfoVO queryWantShopInfo(PartnerUserInfoVO userInfoVO, Long lineId);
PartnerIntentInfoVO queryIndustryCognitionInfo(PartnerUserInfoVO userInfoVO, Long lineId);
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.service;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest;
/**
* @author zhangchenbiao
* @FileName: WorkFlowService
* @Description: 流程服务
* @date 2023-06-26 21:14
*/
public interface WorkFlowService {
/**
* 结束流程
* @param workflowStage
* @param request
*/
void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request);
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.constants.RedisConstant;
@@ -14,7 +15,9 @@ import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.request.IndustryCognitionInfoRequest;
import com.cool.store.request.PartnerIntentInfoRequest;
import com.cool.store.request.PartnerWantShopInfoRequest;
import com.cool.store.service.HyPartnerIntentInfoService;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.StringUtil;
@@ -47,7 +50,6 @@ import java.util.stream.Collectors;
@Service
public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoService {
@Resource
HyPartnerIntentInfoDAO hyPartnerIntentInfoDAO;
@Resource
@@ -80,7 +82,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
List<String> partnerIds = list.stream().map(PartnerIntentApplyInfoDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
Map<String, HyPartnerUserInfoDO> infoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
List<Long> wantShopAreaList = list.stream().map(PartnerIntentApplyInfoDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList());
List<Long> wantShopAreaList = list.stream().filter(x->StringUtils.isNotEmpty(x.getWantShopArea())).map(PartnerIntentApplyInfoDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList());
Map<String, String> wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList);
List<PartnerIntentApplyInfoVO> resultList = PartnerIntentApplyInfoVO.convertList(list, infoDOMap, wantShopAreaNameMap, workflowStatus);
partnerIntentApplyInfo.setList(resultList);
@@ -157,6 +159,66 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
return null;
}
@Override
public String submitWantShopInfo(PartnerWantShopInfoRequest request) {
log.info("HyPartnerClerkServiceImpl#submitWantShopInfo request:{}", JSONObject.toJSONString(request));
if (StringUtil.isBlank(request.getPartnerId()) || Objects.isNull(request.getPartnerLineId())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
String cacheKey = MessageFormat.format(RedisConstant.PARTNER_WANTSHOPINFO_CACHE_KEY, request.getPartnerId(), request.getPartnerLineId());
if(!request.getSubmitFlag()){
// 自动保存时
redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS);
return "";
}
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId());
if(intentInfoDO == null){
intentInfoDO = new HyPartnerIntentInfoDO();
fillWantShopInfo(intentInfoDO, request);
hyPartnerIntentInfoDAO.insertSelective(intentInfoDO);
}else {
fillWantShopInfo(intentInfoDO, request);
hyPartnerIntentInfoDAO.updateByPrimaryKeySelective(intentInfoDO);
}
redisUtilPool.delKey(cacheKey);
if(StringUtils.isNotBlank(request.getWantShopArea())){
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(request.getPartnerId());
hyPartnerUserInfoDO.setWantShopArea(request.getWantShopArea());
hyPartnerUserInfoDO.setLiveArea(request.getLiveArea());
hyPartnerUserInfoDO.setAcceptAdjustType(request.getAcceptAdjustType());
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(request.getWantShopArea()));
return hyOpenAreaInfoDO != null ? hyOpenAreaInfoDO.getAreaStatus() : null;
}
return null;
}
@Override
public String submitIndustryCognitionInfo(IndustryCognitionInfoRequest request) {
log.info("HyPartnerClerkServiceImpl#submitPartnerIntentInfo request:{}", JSONObject.toJSONString(request));
if (StringUtil.isBlank(request.getPartnerId()) || Objects.isNull(request.getPartnerLineId())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
String cacheKey = MessageFormat.format(RedisConstant.PARTNER_INDUSTRYCOGNITIONINFO_CACHE_KEY, request.getPartnerId(), request.getPartnerLineId());
if(!request.getSubmitFlag()){
// 自动保存时
redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS);
return "";
}
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId());
if(intentInfoDO == null){
intentInfoDO = new HyPartnerIntentInfoDO();
fillIndustryCognitionInfo(intentInfoDO, request);
hyPartnerIntentInfoDAO.insertSelective(intentInfoDO);
}else {
fillIndustryCognitionInfo(intentInfoDO, request);
hyPartnerIntentInfoDAO.updateByPrimaryKeySelective(intentInfoDO);
}
redisUtilPool.delKey(cacheKey);
return null;
}
@Override
public PartnerIntentInfoVO queryPartnerIntentInfo(PartnerUserInfoVO userInfoVO, Long lineId) {
String cacheKey = MessageFormat.format(RedisConstant.PARTNER_INTENTINFO_CACHE_KEY, userInfoVO.getPartnerId(), lineId);
@@ -183,6 +245,87 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
return intentInfoVO;
}
@Override
public PartnerIntentInfoVO queryWantShopInfo(PartnerUserInfoVO userInfoVO, Long lineId) {
String cacheKey = MessageFormat.format(RedisConstant.PARTNER_WANTSHOPINFO_CACHE_KEY, userInfoVO.getPartnerId(), lineId);
if (StringUtils.isNotBlank(redisUtilPool.getString(cacheKey))) {
PartnerIntentInfoVO intentInfoVO = JSONObject.parseObject(redisUtilPool.getString(cacheKey), PartnerIntentInfoVO.class);
return intentInfoVO;
}
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(userInfoVO.getPartnerId(), lineId);
PartnerIntentInfoVO intentInfoVO = null;
if (intentInfoDO != null){
intentInfoVO = convertPartnerIntentApplyInfoDOToVO(intentInfoDO);
}else {
intentInfoVO = new PartnerIntentInfoVO();
}
if(StringUtils.isBlank(intentInfoVO.getLiveArea())){
intentInfoVO.setLiveArea(userInfoVO.getLiveArea());
}
if(StringUtils.isBlank(intentInfoVO.getWantShopArea())){
intentInfoVO.setWantShopArea(userInfoVO.getWantShopArea());
}
if(Objects.isNull(intentInfoVO.getAcceptAdjustType())){
intentInfoVO.setAcceptAdjustType(userInfoVO.getAcceptAdjustType());
}
return intentInfoVO;
}
@Override
public PartnerIntentInfoVO queryIndustryCognitionInfo(PartnerUserInfoVO userInfoVO, Long lineId) {
String cacheKey = MessageFormat.format(RedisConstant.PARTNER_INDUSTRYCOGNITIONINFO_CACHE_KEY, userInfoVO.getPartnerId(), lineId);
if (StringUtils.isNotBlank(redisUtilPool.getString(cacheKey))) {
PartnerIntentInfoVO intentInfoVO = JSONObject.parseObject(redisUtilPool.getString(cacheKey), PartnerIntentInfoVO.class);
return intentInfoVO;
}
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(userInfoVO.getPartnerId(), lineId);
PartnerIntentInfoVO intentInfoVO = null;
if (intentInfoDO != null){
intentInfoVO = convertPartnerIntentApplyInfoDOToVO(intentInfoDO);
}
return intentInfoVO;
}
private void fillWantShopInfo(HyPartnerIntentInfoDO intentInfoDO, PartnerWantShopInfoRequest request) {
intentInfoDO.setPartnerId(request.getPartnerId());
intentInfoDO.setPartnerLineId(request.getPartnerLineId());
intentInfoDO.setLiveArea(request.getLiveArea());
intentInfoDO.setWantShopArea(request.getWantShopArea());
intentInfoDO.setAcceptAdjustType(request.getAcceptAdjustType());
intentInfoDO.setIsHaveWantShop(request.getIsHaveWantShop());
if (CollectionUtils.isNotEmpty(request.getWantShopInfo())){
intentInfoDO.setWantShopInfo(JSONObject.toJSONString(request.getWantShopInfo()));
}
intentInfoDO.setMaxBudget(request.getMaxBudget());
intentInfoDO.setMoneySource(request.getMoneySource());
if(CollectionUtils.isNotEmpty(request.getMoneyProve())){
intentInfoDO.setMoneyProve(JSONObject.toJSONString(request.getMoneyProve()));
}
intentInfoDO.setEducation("");
intentInfoDO.setWorkYear("");
intentInfoDO.setWorkExp("");
intentInfoDO.setOtherBand("");
intentInfoDO.setBrandStrength("");
intentInfoDO.setNeedImprove("");
intentInfoDO.setStrength("");
intentInfoDO.setWeakness("");
}
private void fillIndustryCognitionInfo(HyPartnerIntentInfoDO intentInfoDO, IndustryCognitionInfoRequest request) {
intentInfoDO.setPartnerId(request.getPartnerId());
intentInfoDO.setPartnerLineId(request.getPartnerLineId());
intentInfoDO.setEducation(request.getEducation());
intentInfoDO.setWorkYear(request.getWorkYear());
intentInfoDO.setIsHaveWorkExp(request.getIsHaveWorkExp());
intentInfoDO.setWorkExp(request.getWorkExp());
intentInfoDO.setIsConsumer(request.getIsConsumer());
intentInfoDO.setOtherBand(request.getOtherBand());
intentInfoDO.setBrandStrength(request.getBrandStrength());
intentInfoDO.setNeedImprove(request.getNeedImprove());
intentInfoDO.setStrength(request.getStrength());
intentInfoDO.setWeakness(request.getWeakness());
}
private void fillIntentInfo(HyPartnerIntentInfoDO intentInfoDO, PartnerIntentInfoRequest request) {
intentInfoDO.setPartnerId(request.getPartnerId());
intentInfoDO.setPartnerLineId(request.getPartnerLineId());

View File

@@ -2,15 +2,9 @@ package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dao.*;
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.entity.*;
import com.cool.store.enums.RoomStatus;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
@@ -28,6 +22,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -93,6 +88,9 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
return result;
}
@Resource
EnterpriseUserDAO enterpriseUserDAO;
@Override
public PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId ,String type,Integer pageSize,Integer pageNumber) {
String workflowStatus = "";
@@ -112,14 +110,19 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
List<PartnerInterviewInfoVO> result = new ArrayList<>();
List<String> partnerIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
List<String> interviewerUserIds = list.stream().filter(x-> StringUtils.isNotEmpty(x.getInterviewer())).map(PartnerInterviewInfoDTO::getInterviewer).collect(Collectors.toList());
List<EnterpriseUserDO> userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(interviewerUserIds);
Map<String, EnterpriseUserDO> interviewerUserMap = userInfoByUserIds.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
Map<String, HyPartnerUserInfoDO> userNameMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, Data->Data));
List<Long> lineIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerLineId).collect(Collectors.toList());
List<HyPartnerLineInfoDO> hyPartnerLineInfoDOS= hyPartnerLineInfoDAO.getHyPartnerLineInfoListByIds(lineIds);
Map<Long, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = hyPartnerLineInfoDOS.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, data -> data));
list.stream().forEach(x->{
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
partnerInterviewInfoVO.setPartnerPhone(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getUsername());
partnerInterviewInfoVO.setPartnerName(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getUsername());
partnerInterviewInfoVO.setPartnerPhone(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getMobile());
partnerInterviewInfoVO.setInterviewerName(interviewerUserMap.getOrDefault(x.getInterviewer(),new EnterpriseUserDO()).getName());
partnerInterviewInfoVO.setInterviewerPhone(interviewerUserMap.getOrDefault(x.getInterviewer(),new EnterpriseUserDO()).getMobile());
partnerInterviewInfoVO.setLineStatus(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getLineStatus());
partnerInterviewInfoVO.setLineId(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getId());
result.add(partnerInterviewInfoVO);
@@ -260,6 +263,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
private PartnerInterviewInfoVO convertPartnerInterviewInfoDTOToVo(PartnerInterviewInfoDTO partnerInterviewInfoDTO){
PartnerInterviewInfoVO partnerInterviewInfoVO = new PartnerInterviewInfoVO();
partnerInterviewInfoVO.setInterviewId(partnerInterviewInfoDTO.getInterviewId());
partnerInterviewInfoVO.setInterviewPlanId(partnerInterviewInfoDTO.getId());
partnerInterviewInfoVO.setPartnerId(partnerInterviewInfoDTO.getPartnerId());
partnerInterviewInfoVO.setInterviewerId(partnerInterviewInfoDTO.getInterviewer());
partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo());

View File

@@ -212,6 +212,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
hyPartnerLineInfoDO.setId(lineId);
hyPartnerLineInfoDO.setLineStatus(status);
hyPartnerLineInfoDO.setJoinBlackReason(joinReason);
hyPartnerLineInfoDO.setRejectRealReason(joinReason);
hyPartnerLineInfoDO.setCloseTime(new Date());
hyPartnerLineInfoDO.setCloseUserId(userId);
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
@@ -240,8 +241,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
newHyPartnerLineInfoDO.setPartnerId(hyPartnerLineInfo.getPartnerId());
newHyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
newHyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
newHyPartnerLineInfoDO.setLineStatus(0);
hyPartnerLineInfoDAO.batchInsert(Arrays.asList(newHyPartnerLineInfoDO));
newHyPartnerLineInfoDO.setLineStatus(status);
hyPartnerLineInfoDAO.insertSelective(newHyPartnerLineInfoDO);
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = new HyPartnerBaseInfoDO();
hyPartnerBaseInfoDO.setPartnerId(hyPartnerLineInfo.getPartnerId());
hyPartnerBaseInfoDO.setPartnerLineId(newHyPartnerLineInfoDO.getId());
hyPartnerBaseInfoDAO.insertSelective(hyPartnerBaseInfoDO);
return Boolean.TRUE;
}
@@ -559,8 +565,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
public Long checkGenerateNewLineId(Long lineId) {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
// 15天之后可以继续填写意向信息把之前的线索删除
if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getCloseTime() != null &&
CoolDateUtils.getDateBefore(hyPartnerLineInfoDO.getCloseTime(), 15).before(new Date())){
if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null &&
hyPartnerLineInfoDO.getDeadline().before(new Date())){
//将老的线索置为删除状态
hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId()));
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());

View File

@@ -0,0 +1,39 @@
package com.cool.store.service.impl;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.service.WorkFlowService;
import com.cool.store.service.impl.workflow.IntentWorkFlowService;
import com.cool.store.service.impl.workflow.InterviewWorkFlowService;
import com.cool.store.service.impl.workflow.ReservationWorkFlowService;
import com.cool.store.service.impl.workflow.WorkFlowBaseService;
import com.cool.store.utils.CommonContextUtil;
import org.springframework.stereotype.Service;
/**
* @author zhangchenbiao
* @FileName: WorkFlowBaseService
* @Description:
* @date 2023-06-26 21:14
*/
@Service
public class WorkFlowServiceImpl implements WorkFlowService{
private WorkFlowBaseService getWorkflowService(WorkflowStageEnum workflowStage){
switch (workflowStage){
case INTENT:
return CommonContextUtil.getBean(IntentWorkFlowService.class);
case RESERVATION:
return CommonContextUtil.getBean(ReservationWorkFlowService.class);
case INTERVIEW:
return CommonContextUtil.getBean(InterviewWorkFlowService.class);
default:
return null;
}
}
@Override
public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) {
getWorkflowService(workflowStage).endProcess(request);
}
}

View File

@@ -204,7 +204,7 @@ public class ZoneServiceImpl implements ZoneService {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
//查询已经绑定战区的 意向区域
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByOpenAreaMappingIdList(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType());
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByOpenAreaMappingIdList(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType(),intentAreaSettingRequest.getId());
List<Long> openAreaIdList = list.stream().map(ZoneCheckDTO::getOpenAreaMappingId).collect(Collectors.toList());
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = openAreaInfoDAO.selectByIds(openAreaIdList);
Map<Long, String> areaNameMap = hyOpenAreaInfoDOList.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, HyOpenAreaInfoDO::getAreaName));

View File

@@ -0,0 +1,28 @@
package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.service.impl.WorkFlowServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author zhangchenbiao
* @FileName: IntentWorkFlowService
* @Description: 意向申请
* @date 2023-06-26 21:21
*/
@Slf4j
@Service
public class IntentWorkFlowService extends WorkFlowBaseService {
@Override
public WorkflowStageEnum getWorkFlowStage() {
return WorkflowStageEnum.INTENT;
}
@Override
public void endProcess(CloseFollowRequest request) {
log.info("意向申请结束~");
}
}

View File

@@ -0,0 +1,28 @@
package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.service.impl.WorkFlowServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author zhangchenbiao
* @FileName: InterviewWorkFlowService
* @Description:面试流程
* @date 2023-06-26 21:24
*/
@Slf4j
@Service
public class InterviewWorkFlowService extends WorkFlowBaseService {
@Override
public WorkflowStageEnum getWorkFlowStage() {
return WorkflowStageEnum.RESERVATION;
}
@Override
public void endProcess(CloseFollowRequest request) {
log.info("面试结束~");
}
}

View File

@@ -0,0 +1,28 @@
package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.service.impl.WorkFlowServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author zhangchenbiao
* @FileName: ReservationWorkFlowService
* @Description:预约面试
* @date 2023-06-26 21:23
*/
@Slf4j
@Service
public class ReservationWorkFlowService extends WorkFlowBaseService {
@Override
public WorkflowStageEnum getWorkFlowStage() {
return WorkflowStageEnum.RESERVATION;
}
@Override
public void endProcess(CloseFollowRequest request) {
log.info("预约面试结束~");
}
}

View File

@@ -0,0 +1,25 @@
package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest;
/**
* @author zhangchenbiao
* @FileName: WorkFlowBaseService
* @Description:
* @date 2023-06-26 22:15
*/
public abstract class WorkFlowBaseService {
/**
* 获取流程阶段
* @return
*/
public abstract WorkflowStageEnum getWorkFlowStage();
/**
* 结束流程
* @param request
*/
public abstract void endProcess(CloseFollowRequest request);
}

View File

@@ -110,11 +110,16 @@ public class PartnerController {
return ResponseResult.success(hyPartnerClerkService.submitPartnerClerkInfo(partnerClerkInfoRequest));
}
@PostMapping(path = "/submitWantShopInfo")
@ApiOperation("提意向书意向信息")
public ResponseResult<String> submitWantShopInfo(@RequestBody PartnerWantShopInfoRequest request){
return ResponseResult.success(hyPartnerIntentInfoService.submitWantShopInfo(request));
}
@PostMapping(path = "/submitPartnerIntentInfo")
@ApiOperation("提意向书意向信息/行业认知")
public ResponseResult<String> submitPartnerIntentInfo(@RequestBody PartnerIntentInfoRequest partnerIntentInfoRequest){
return ResponseResult.success(hyPartnerIntentInfoService.submitPartnerIntentInfo(partnerIntentInfoRequest));
@PostMapping(path = "/submitIndustryCognitionInfo")
@ApiOperation("提意向书行业认知")
public ResponseResult<String> submitIndustryCognitionInfo(@RequestBody IndustryCognitionInfoRequest request){
return ResponseResult.success(hyPartnerIntentInfoService.submitIndustryCognitionInfo(request));
}
@PostMapping(path = "/changePartnerClerkInfo")
@@ -172,14 +177,24 @@ public class PartnerController {
}
@GetMapping(path = "/queryPartnerIntentInfo")
@ApiOperation("查看意向申请书-意向信息/行业信息")
@GetMapping(path = "/queryWantShopInfo")
@ApiOperation("查看意向申请书-意向信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "线索ID", required = false),
})
public ResponseResult<PartnerIntentInfoVO> queryPartnerIntentInfo(@RequestParam(value = "lineId",required = false)Long lineId){
public ResponseResult<PartnerIntentInfoVO> queryWantShopInfo(@RequestParam(value = "lineId",required = false)Long lineId){
PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
return ResponseResult.success(hyPartnerIntentInfoService.queryPartnerIntentInfo(userInfoVO, lineId));
return ResponseResult.success(hyPartnerIntentInfoService.queryWantShopInfo(userInfoVO, lineId));
}
@GetMapping(path = "/queryIndustryCognitionInfo")
@ApiOperation("查看意向申请书-行业信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "线索ID", required = false),
})
public ResponseResult<PartnerIntentInfoVO> queryIndustryCognitionInfo(@RequestParam(value = "lineId",required = false)Long lineId){
PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
return ResponseResult.success(hyPartnerIntentInfoService.queryIndustryCognitionInfo(userInfoVO, lineId));
}
@GetMapping(path = "/completeJoinNotice")