diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index 58c08cc73..6f27bf41c 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -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_"; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyIntendDevMappingDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyIntendDevMappingDAO.java index ace5341e3..e87a50767 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyIntendDevMappingDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyIntendDevMappingDAO.java @@ -52,11 +52,11 @@ public class HyIntendDevMappingDAO { return hyIntendDevelopementMappingMapper.selectByMappingIdList(idList); } - public List selectByOpenAreaMappingIdList(List idList,String type){ + public List selectByOpenAreaMappingIdList(List 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){ diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java index 206e66c3b..901067b90 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java @@ -126,7 +126,7 @@ public class HyPartnerLineInfoDAO { return hyPartnerLineInfoMapper.joinAndRemoveBlack(lineId,status,joinReason,removeReason); } - public List getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List userIdList){ + public List getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, String updateStartTime, String updateEndTime, List userIdList){ return hyPartnerLineInfoMapper.getPublicSeaLineList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType,updateStartTime,updateEndTime,userIdList); } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyIntendDevelopementMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyIntendDevelopementMappingMapper.java index ceee2b129..bf0be4adf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyIntendDevelopementMappingMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyIntendDevelopementMappingMapper.java @@ -56,7 +56,8 @@ public interface HyIntendDevelopementMappingMapper { List selectByMappingIdList(@Param("mappingIdList") List mappingIdList); List selectByOpenAreaMappingIdList(@Param("openAreaMappingIdList") List openAreaMappingIdList, - @Param("type") String type); + @Param("type") String type, + @Param("currentId") Long currentId); HyIntendDevelopementMappingDO selectByOpenAreaMappingId(@Param("openAreaMappingId") Long openAreaMappingId, diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index 24314e0ca..7d5cfe016 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -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 userIdList); diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevelopementMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevelopementMappingMapper.xml index 87872d83c..4af30f031 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevelopementMappingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevelopementMappingMapper.xml @@ -147,6 +147,9 @@ #{mappingId} + + and a.mapping_id != #{currentId} + diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml index d3bb6c529..1ca989adc 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml @@ -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 FROM hy_partner_line_info - where deleted = 1 + where (deleted = 1 or (deleted=0 and line_status=0)) and partner_id = #{partner_id} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/IndustryCognitionInfoRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/IndustryCognitionInfoRequest.java new file mode 100644 index 000000000..f72bfd05b --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/IndustryCognitionInfoRequest.java @@ -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; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java index b0e4169af..91dc33a4b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java @@ -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; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerWantShopInfoRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerWantShopInfoRequest.java new file mode 100644 index 000000000..38c63882e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerWantShopInfoRequest.java @@ -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 wantShopInfo; + + @ApiModelProperty("最大预算") + private String maxBudget; + + @ApiModelProperty("资金来源 1自有资金;2借贷资金;3部分自有、部分借代;4部分自有、部分亲友借代") + private String moneySource; + + @ApiModelProperty("资金证明") + private List moneyProve; + + @ApiModelProperty("提交标识 提交-true 暂存-false") + private Boolean submitFlag; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/EnterpriseUserSingleInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/EnterpriseUserSingleInfoVO.java index 7c3eb8b56..c81cc4c40 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/EnterpriseUserSingleInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/EnterpriseUserSingleInfoVO.java @@ -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 userIdMap = new HashMap<>(); List resultList = new ArrayList<>(); for (EnterpriseUserDO enterpriseUser : userList) { - EnterpriseUserSingleInfoVO result = new EnterpriseUserSingleInfoVO(); - result.setUserId(enterpriseUser.getUserId()); - result.setUserName(enterpriseUser.getName()); - result.setMobile(enterpriseUser.getMobile()); - resultList.add(result); + String userId = enterpriseUser.getUserId(); + boolean isContains = userIdMap.containsKey(userId); + if(isContains){ + EnterpriseUserSingleInfoVO result = new EnterpriseUserSingleInfoVO(); + result.setUserId(userId); + result.setUserName(enterpriseUser.getName()); + result.setMobile(enterpriseUser.getMobile()); + resultList.add(result); + userIdMap.put(userId, userId); + } } return resultList; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java index 8020b5fbc..bf87463c9 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java @@ -51,6 +51,9 @@ public class PartnerInterviewInfoVO { @ApiModelProperty("面试官名称") private String interviewerName; + @ApiModelProperty("面试官手机号") + private String interviewerPhone; + @ApiModelProperty("预约时间") private String createTime; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerIntentInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerIntentInfoService.java index 07ec60356..918510f83 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerIntentInfoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerIntentInfoService.java @@ -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); + + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java new file mode 100644 index 000000000..69a9d038e --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java @@ -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); + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java index 1fc22153b..367d33180 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java @@ -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 partnerIds = list.stream().map(PartnerIntentApplyInfoDTO::getPartnerId).collect(Collectors.toList()); List hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds); Map infoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data)); - List wantShopAreaList = list.stream().map(PartnerIntentApplyInfoDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList()); + List wantShopAreaList = list.stream().filter(x->StringUtils.isNotEmpty(x.getWantShopArea())).map(PartnerIntentApplyInfoDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList()); Map wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList); List 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()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index 9f6286ee9..c11fc3738 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -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 getPartnerInterviewInfoList(String userId ,String type,Integer pageSize,Integer pageNumber) { String workflowStatus = ""; @@ -112,14 +110,19 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan List result = new ArrayList<>(); List partnerIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerId).collect(Collectors.toList()); List hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds); + List interviewerUserIds = list.stream().filter(x-> StringUtils.isNotEmpty(x.getInterviewer())).map(PartnerInterviewInfoDTO::getInterviewer).collect(Collectors.toList()); + List userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(interviewerUserIds); + Map interviewerUserMap = userInfoByUserIds.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data)); Map userNameMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, Data->Data)); List lineIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerLineId).collect(Collectors.toList()); List hyPartnerLineInfoDOS= hyPartnerLineInfoDAO.getHyPartnerLineInfoListByIds(lineIds); Map 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()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index 23c121da2..aa2e82746 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -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()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java new file mode 100644 index 000000000..378952eb6 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java @@ -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); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ZoneServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ZoneServiceImpl.java index bfab00aef..b86fd5851 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ZoneServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ZoneServiceImpl.java @@ -204,7 +204,7 @@ public class ZoneServiceImpl implements ZoneService { throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } //查询已经绑定战区的 意向区域 - List list = hyIntendDevMappingDAO.selectByOpenAreaMappingIdList(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType()); + List list = hyIntendDevMappingDAO.selectByOpenAreaMappingIdList(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType(),intentAreaSettingRequest.getId()); List openAreaIdList = list.stream().map(ZoneCheckDTO::getOpenAreaMappingId).collect(Collectors.toList()); List hyOpenAreaInfoDOList = openAreaInfoDAO.selectByIds(openAreaIdList); Map areaNameMap = hyOpenAreaInfoDOList.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, HyOpenAreaInfoDO::getAreaName)); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/IntentWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/IntentWorkFlowService.java new file mode 100644 index 000000000..12d874923 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/IntentWorkFlowService.java @@ -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("意向申请结束~"); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java new file mode 100644 index 000000000..eb544ac4e --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java @@ -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("面试结束~"); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/ReservationWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/ReservationWorkFlowService.java new file mode 100644 index 000000000..c4694dcee --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/ReservationWorkFlowService.java @@ -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("预约面试结束~"); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java new file mode 100644 index 000000000..6eb4b9685 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java @@ -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); +} diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java index 7c6e9d064..d799f3609 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java @@ -110,11 +110,16 @@ public class PartnerController { return ResponseResult.success(hyPartnerClerkService.submitPartnerClerkInfo(partnerClerkInfoRequest)); } + @PostMapping(path = "/submitWantShopInfo") + @ApiOperation("提意向书意向信息") + public ResponseResult submitWantShopInfo(@RequestBody PartnerWantShopInfoRequest request){ + return ResponseResult.success(hyPartnerIntentInfoService.submitWantShopInfo(request)); + } - @PostMapping(path = "/submitPartnerIntentInfo") - @ApiOperation("提意向书意向信息/行业认知") - public ResponseResult submitPartnerIntentInfo(@RequestBody PartnerIntentInfoRequest partnerIntentInfoRequest){ - return ResponseResult.success(hyPartnerIntentInfoService.submitPartnerIntentInfo(partnerIntentInfoRequest)); + @PostMapping(path = "/submitIndustryCognitionInfo") + @ApiOperation("提意向书行业认知") + public ResponseResult 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 queryPartnerIntentInfo(@RequestParam(value = "lineId",required = false)Long lineId){ + public ResponseResult 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 queryIndustryCognitionInfo(@RequestParam(value = "lineId",required = false)Long lineId){ + PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser(); + return ResponseResult.success(hyPartnerIntentInfoService.queryIndustryCognitionInfo(userInfoVO, lineId)); } @GetMapping(path = "/completeJoinNotice")