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

This commit is contained in:
苏竹红
2023-11-13 15:11:23 +08:00
21 changed files with 677 additions and 178 deletions

View File

@@ -0,0 +1,23 @@
package com.cool.store.enums;
public enum PageTurnTypeEnum {
PREVIOUS("previous"),
NEXT("next");
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
private String text;
PageTurnTypeEnum(String text) {
this.text = text;
}
}

View File

@@ -5,6 +5,7 @@ import com.cool.store.constants.CommonConstants;
import com.cool.store.dto.partner.*;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.vo.LinePageInfoVo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
@@ -137,10 +138,10 @@ public class HyPartnerLineInfoDAO {
String intentAreaName, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List<String> userIdList,
List<String> developmentManagerList,List<Long> userPortraitIdList,List<Long> userChannelIdList, String updateStartTime, String updateEndTime
,String partnerName,String partnerMobile,String investmentManagerId,String userPortraitQueryType
,String intentAreaQueryType,String lineStartTime,String lineEndTime,String userChannelQueryType){
,String intentAreaQueryType,String lineStartTime,String lineEndTime,String userChannelQueryType,String sortField,String sortOrder){
return hyPartnerLineInfoMapper.getPrivateSeaLineList( keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd,
intentAreaName, acceptAdjustType, storeKeyword, storeKeywordType, userIdList,developmentManagerList,userPortraitIdList,userChannelIdList, updateStartTime, updateEndTime
,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType);
,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType,sortField,sortOrder);
}
@@ -211,5 +212,18 @@ public class HyPartnerLineInfoDAO {
}
return hyPartnerLineInfoMapper.getHyPartnerLineInfoList(lineIds,investmentManager);
}
public List<LinePageInfoVo> getPublicSeaPageInfoNext(Long lineId, String userNameKeyword, String phoneKeyword, String intentAreaName, Integer acceptAdjustType, String updateStartTime, String updateEndTime, List<String> userIdList, String createStartTime, String createEndTime,String pageTurn,Integer limit1,Integer limit2){
return hyPartnerLineInfoMapper.getPublicSeaPageInfoNext(lineId,userNameKeyword,phoneKeyword,intentAreaName,acceptAdjustType,updateStartTime,updateEndTime,userIdList, createStartTime, createEndTime,pageTurn,limit1,limit2);
}
public List<LinePageInfoVo> getPrivateSeaPageInfoNext(Long lineId,String keyword, String keywordType, String workflowStage, String workflowStatus, String deadlineStart, String deadlineEnd,
String intentAreaName, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List<String> userIdList,
List<String> developmentManagerList,List<Long> userPortraitIdList,List<Long> userChannelIdList, String updateStartTime, String updateEndTime
,String partnerName,String partnerMobile,String investmentManagerId,String userPortraitQueryType
,String intentAreaQueryType,String lineStartTime,String lineEndTime,String userChannelQueryType,String sortField,String sortOrder,Integer limit1,Integer limit2){
return hyPartnerLineInfoMapper.getPrivateSeaPageInfoNext(lineId,keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd,
intentAreaName, acceptAdjustType, storeKeyword, storeKeywordType, userIdList,developmentManagerList,userPortraitIdList,userChannelIdList, updateStartTime, updateEndTime
,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType,sortField,sortOrder,limit1,limit2);
}
}

View File

@@ -5,6 +5,7 @@ import com.cool.store.dto.partner.PartnerBlackListDTO;
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
import com.cool.store.dto.partner.StageCountDTO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.vo.LinePageInfoVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -189,7 +190,9 @@ public interface HyPartnerLineInfoMapper {
@Param("intentAreaQueryType") String intentAreaQueryType,
@Param("lineStartTime") String lineStartTime,
@Param("lineEndTime") String lineEndTime,
@Param("userChannelQueryType") String userChannelQueryType);
@Param("userChannelQueryType") String userChannelQueryType,
@Param("sortField") String sortField,
@Param("sortOrder") String sortOrder);
/**
@@ -262,4 +265,54 @@ public interface HyPartnerLineInfoMapper {
* @return 线索转让次数
*/
Integer getTransferTimes(@Param("lineId") Long partnerLineId);
/**
*
* @return
*/
List<LinePageInfoVo> getPrivateSeaPageInfoNext(@Param("lineId") Long lineId,@Param("keyword") String keyword,
@Param("keywordType") String keywordType,
@Param("workflowStage") String workflowStage,
@Param("workflowStatus") String workflowStatus,
@Param("deadlineStart") String deadlineStart,
@Param("deadlineEnd") String deadlineEnd,
@Param("intentAreaName") String intentAreaName,
@Param("acceptAdjustType") Integer acceptAdjustType,
@Param("storeKeyword") String storeKeyword,
@Param("storeKeywordType") String storeKeywordType,
@Param("userIdList") List<String> userIdList,
@Param("developmentManagerList") List<String> developmentManagerList,
@Param("userPortraitIdList") List<Long> userPortraitIdList,
@Param("userChannelIdList") List<Long> userChannelIdList,
@Param("updateStartTime") String updateStartTime,
@Param("updateEndTime") String updateEndTime,
@Param("partnerName") String partnerName,
@Param("partnerMobile") String partnerMobile,
@Param("investmentManagerId") String investmentManagerId,
@Param("userPortraitQueryType") String userPortraitQueryType,
@Param("intentAreaQueryType") String intentAreaQueryType,
@Param("lineStartTime") String lineStartTime,
@Param("lineEndTime") String lineEndTime,
@Param("userChannelQueryType") String userChannelQueryType,
@Param("sortField") String sortField,
@Param("sortOrder") String sortOrder,
@Param("limit1") Integer limit1,
@Param("limit2") Integer limit2
);
List<LinePageInfoVo> getPublicSeaPageInfoNext(@Param("lineId") Long lineId,@Param("userNameKeyword") String userNameKeyword,
@Param("phoneKeyword") String phoneKeyword,
@Param("intentAreaName") String intentAreaName,
@Param("acceptAdjustType") Integer acceptAdjustType,
@Param("updateStartTime") String updateStartTime,
@Param("updateEndTime") String updateEndTime,
@Param("userIdList") List<String> userIdList,
@Param("createStartTime") String createStartTime,
@Param("createEndTime") String createEndTime,
@Param("pageTurn") String pageTurn,
@Param("limit1") Integer limit1,
@Param("limit2") Integer limit2
);
}

View File

@@ -13,6 +13,7 @@
<result column="max_budget" jdbcType="VARCHAR" property="maxBudget" />
<result column="money_source" jdbcType="VARCHAR" property="moneySource" />
<result column="money_prove" jdbcType="VARCHAR" property="moneyProve" />
<result column="credit_prove" jdbcType="VARCHAR" property="creditProve" />
<result column="education" jdbcType="VARCHAR" property="education" />
<result column="work_year" jdbcType="VARCHAR" property="workYear" />
<result column="is_have_work_exp" jdbcType="TINYINT" property="isHaveWorkExp" />
@@ -35,7 +36,7 @@
<sql id="Base_Column_List">
id, partner_id, partner_line_id, live_area, want_shop_area, accept_adjust_type, is_have_want_shop,
want_shop_info, max_budget, money_source, money_prove, education, work_year, is_have_work_exp,
work_exp, is_consumer, other_band, brand_strength, need_improve, strength, weakness,
work_exp, is_consumer, other_band, brand_strength, need_improve, strength, weakness,credit_prove,
create_time, update_time,detailed_address,email ,acquaintance_flag,acquaintance_name,acquaintance_relationship_type,other_relationship_type
</sql>
<select id="selectByPrimaryKeySelective" resultMap="BaseResultMap">
@@ -79,6 +80,9 @@
<if test="record.moneyProve != null">
money_prove,
</if>
<if test="record.creditProve != null">
credit_prove,
</if>
<if test="record.education != null">
education,
</if>
@@ -165,6 +169,9 @@
<if test="record.moneyProve != null">
#{record.moneyProve},
</if>
<if test="record.creditProve != null">
#{record.creditProve},
</if>
<if test="record.education != null">
#{record.education},
</if>
@@ -254,6 +261,9 @@
<if test="record.moneyProve != null">
money_prove = #{record.moneyProve},
</if>
<if test="record.creditProve != null">
credit_prove = #{record.creditProve},
</if>
<if test="record.education != null">
education = #{record.education},
</if>
@@ -361,10 +371,10 @@
and a.workflow_status = #{workflowStatus}
</if>
<if test="workflowStatus!=null and workflowStatus=='1'">
order by b.update_time
order by a.create_time
</if>
<if test="workflowStatus!=null and workflowStatus=='0'">
order by a.create_time
order by a.update_time
</if>
</select>
@@ -428,6 +438,9 @@
<if test="record.moneyProve != null">
money_prove = #{record.moneyProve},
</if>
<if test="record.creditProve != null">
credit_prove = #{record.creditProve},
</if>
<if test="record.education != null">
education = #{record.education},
</if>

View File

@@ -335,6 +335,24 @@
<if test="userId!=null and userId!=''">
and hpli.investment_manager = #{userId}
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='4' and workflowStage!=null and workflowStage!='' and workflowStage=='1'">
order by hpli.create_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='5' and workflowStage!=null and workflowStage!='' and workflowStage=='1'">
order by hpli.update_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='1' and workflowStage!=null and workflowStage!='' and workflowStage=='2'">
order by hpli.create_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='0' and workflowStage!=null and workflowStage!='' and workflowStage=='2'">
order by hpli.update_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='4' and workflowStage!=null and workflowStage!='' and workflowStage=='3'">
order by hpli.create_time
</if>
<if test="workflowStage!=null and workflowStage!='' and workflowStage=='5' and workflowStage!=null and workflowStage!='' and workflowStage=='3'">
order by hpli.update_time
</if>
</select>
<select id="getInterviewList" resultType="com.cool.store.vo.interview.InterviewVO">

View File

@@ -354,6 +354,7 @@
hpuinfo.accept_adjust_type as acceptAdjustType,
hpuinfo.mobile as partnerUserPhone,
hpuinfo.username as partnerUserName,
hpuinfo.ec_want_shop_area as ecWantShopArea,
hpuc.channel_name as channelName,
hpii.education as education,
hpii.detailed_address as detailedAddress,
@@ -534,7 +535,8 @@
hpuinfo.recommend_partner_mobile as recommendPartnerMobile,
bi.user_portrait as userPortrait,
eu.name as investmentManagerName,
eu.mobile as investmentManagerMobile
eu.mobile as investmentManagerMobile,
hptil.create_time AS allotTime
FROM
hy_partner_line_info hpli
LEFT JOIN hy_partner_intent_info hpii ON hpli.id = hpii.partner_line_id
@@ -542,6 +544,8 @@
LEFT JOIN hy_partner_user_info hpuinfo ON hpli.partner_id = hpuinfo.partner_id
LEFT JOIN enterprise_user eu ON hpli.investment_manager = eu.user_id
LEFT JOIN hy_open_area_info hoai ON hoai.id = hpuinfo.want_shop_area
LEFT JOIN ( SELECT max(create_time) as create_time, partner_id,id FROM hy_partner_task_info_log WHERE operate_type
IN ( 'allocation_investment_manager', 'transfer_investment_manager','ec_sync_add_line' ) and deleted=0 GROUP BY partner_id ) hptil ON hpli.partner_id = hptil.partner_id
WHERE hpli.line_status in (1,2)
AND ( hpli.deleted IS NULL OR hpli.deleted = 0 )
<if test="keyword!=null and keyword!='' and keywordType!=null and keywordType=='name'">
@@ -643,7 +647,33 @@
#{developmentManager}
</foreach>
</if>
order by hpli.update_time desc
<if test="sortField!=null and sortField != '' and sortField=='updateTime' ">
order by hpli.update_time
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='descend' ">
desc
</if>
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='ascend' ">
asc
</if>
</if>
<if test="sortField!=null and sortField != '' and sortField=='deadline' ">
order by hpli.deadline
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='descend' ">
desc
</if>
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='ascend' ">
asc
</if>
</if>
<if test="sortField!=null and sortField != '' and sortField=='allotTime' ">
order by hptil.create_time
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='descend' ">
desc
</if>
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='ascend' ">
asc
</if>
</if>
</select>
@@ -787,5 +817,184 @@
and partner_line_id = #{lineId}
-- and deleted = 0
</select>
<select id="getPrivateSeaPageInfoNext" resultType="com.cool.store.vo.LinePageInfoVo">
SELECT
hpli.id as lineId,
hpli.partner_id as partnerId
FROM
hy_partner_line_info hpli
LEFT JOIN hy_partner_intent_info hpii ON hpli.id = hpii.partner_line_id
left join hy_partner_base_info bi on hpli.id = bi.partner_line_id
LEFT JOIN hy_partner_user_info hpuinfo ON hpli.partner_id = hpuinfo.partner_id
LEFT JOIN enterprise_user eu ON hpli.investment_manager = eu.user_id
LEFT JOIN hy_open_area_info hoai ON hoai.id = hpuinfo.want_shop_area
LEFT JOIN ( SELECT max(create_time) as create_time, partner_id,id FROM hy_partner_task_info_log WHERE operate_type
IN ( 'allocation_investment_manager', 'transfer_investment_manager','ec_sync_add_line' ) and deleted=0 GROUP BY partner_id ) hptil ON hpli.partner_id = hptil.partner_id
WHERE hpli.line_status in (1,2)
AND ( hpli.deleted IS NULL OR hpli.deleted = 0 )
<if test="keyword!=null and keyword!='' and keywordType!=null and keywordType=='name'">
AND (eu.name like concat('%',#{keyword},'%') or hpuinfo.username like concat('%',#{keyword},'%'))
</if>
<if test="keyword!=null and keyword!='' and keywordType!=null and keywordType=='mobile'">
AND ( eu.mobile like concat('%',#{keyword},'%') or hpuinfo.mobile like concat('%',#{keyword},'%'))
</if>
<if test="workflowStage!=null and workflowStage!=''">
AND hpli.workflow_stage = #{workflowStage}
</if>
<if test="workflowStatus!=null and workflowStatus!=''">
AND hpli.workflow_status = #{workflowStatus}
</if>
<if test="deadlineStart!=null and deadlineEnd!=null">
AND hpli.deadline BETWEEN #{deadlineStart} and #{deadlineEnd}
</if>
<if test="updateStartTime!=null and updateEndTime!=null">
AND hpli.update_time BETWEEN #{updateStartTime} and #{updateEndTime}
</if>
<if test="lineStartTime != null and lineEndTime != null">
AND hpli.create_time BETWEEN #{lineStartTime} and #{lineEndTime}
</if>
<if test="intentAreaName!=null and intentAreaName!='' and intentAreaQueryType!=null and intentAreaQueryType == 'contains'">
and hoai.area_path like concat('%/',#{intentAreaName},'/%')
</if>
<if test="intentAreaName!=null and intentAreaName!='' and intentAreaQueryType!=null and intentAreaQueryType == 'notContains'">
and hoai.area_path not like concat('%/',#{intentAreaName},'/%')
</if>
<if test="intentAreaQueryType !=null and intentAreaQueryType == 'blank'">
AND hpuinfo.want_shop_area is null
</if>
<if test="acceptAdjustType!=null">
AND hpuinfo.accept_adjust_type = #{acceptAdjustType}
</if>
<if test="partnerName !=null and partnerName!=''">
AND hpuinfo.username like concat('%',#{partnerName},'%')
</if>
<if test="partnerMobile !=null and partnerMobile!=''">
AND hpuinfo.mobile like concat('%',#{partnerMobile},'%')
</if>
<if test="investmentManagerId !=null and investmentManagerId!=''">
AND hpli.investment_manager = #{investmentManagerId}
</if>
<if test="storeKeyword!=null and storeKeyword!='' and storeKeywordType!=null and storeKeywordType=='storeCode'">
AND hpuinfo.shop_code like concat('%',#{storeKeyword},'%')
</if>
<if test="storeKeyword!=null and storeKeyword!='' and storeKeywordType!=null and storeKeywordType=='storeName'">
AND hpuinfo.shop_name like concat('%',#{storeKeyword},'%')
</if>
<if test="storeKeyword!=null and storeKeyword!='' and storeKeywordType!=null and storeKeywordType=='partnerName'">
AND hpuinfo.recommend_partner_name like concat('%',#{storeKeyword},'%')
</if>
<if test="storeKeyword!=null and storeKeyword!='' and storeKeywordType!=null and storeKeywordType=='partnerMobile'">
AND hpuinfo.recommend_partner_mobile like concat('%',#{storeKeyword},'%')
</if>
<if test="userIdList!=null and userIdList.size>0 and developmentManagerList!=null and developmentManagerList.size==0">
<foreach collection="userIdList" item="userId" open="and hpli.investment_manager in (" close=")" separator=",">
#{userId}
</foreach>
</if>
<if test="userPortraitIdList!=null and userPortraitIdList.size>0 and userPortraitQueryType!=null and userPortraitQueryType=='contains'">
<foreach collection="userPortraitIdList" separator="or" open="and (" close=")" item="userPortraitId">
bi.user_portrait like concat("%,", #{userPortraitId}, ",%")
</foreach>
</if>
<if test="userPortraitIdList!=null and userPortraitIdList.size>0 and userPortraitQueryType!=null and userPortraitQueryType=='notContains'">
<foreach collection="userPortraitIdList" separator="or" open="and (" close=")" item="userPortraitId">
bi.user_portrait not like concat("%,", #{userPortraitId}, ",%")
</foreach>
</if>
<if test="userPortraitQueryType!=null and userPortraitQueryType=='blank'">
AND bi.user_portrait is null
</if>
<if test="userChannelIdList!=null and userChannelIdList.size>0 and userChannelQueryType!=null and userChannelQueryType == 'contains' ">
<foreach collection="userChannelIdList" open="and hpuinfo.user_channel_id in (" close=")" separator="," item="userChannelId">
#{userChannelId}
</foreach>
</if>
<if test="userChannelIdList!=null and userChannelIdList.size>0 and userChannelQueryType!=null and userChannelQueryType == 'notContains' ">
<foreach collection="userChannelIdList" open="and hpuinfo.user_channel_id not in (" close=")" separator="," item="userChannelId">
#{userChannelId}
</foreach>
</if>
<if test="userChannelQueryType!=null and userChannelQueryType == 'blank' ">
AND hpuinfo.user_channel_id is null
</if>
<if test="userIdList!=null and userIdList.size==0 and developmentManagerList!=null and developmentManagerList.size>0">
<foreach collection="developmentManagerList" item="developmentManager" open="and hpli.development_manager in (" close=")" separator=",">
#{developmentManager}
</foreach>
</if>
<if test="userIdList!=null and userIdList.size>0 and developmentManagerList!=null and developmentManagerList.size>0">
<foreach collection="userIdList" item="userId" open="and (hpli.investment_manager in (" close=")" separator=",">
#{userId}
</foreach>
<foreach collection="developmentManagerList" item="developmentManager" open="or hpli.development_manager in (" close="))" separator=",">
#{developmentManager}
</foreach>
</if>
<if test="sortField!=null and sortField != '' and sortField=='updateTime' ">
order by hpli.update_time
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='descend' ">
desc
</if>
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='ascend' ">
asc
</if>
</if>
<if test="sortField!=null and sortField != '' and sortField=='deadline' ">
order by hpli.deadline
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='descend' ">
desc
</if>
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='ascend' ">
asc
</if>
</if>
<if test="sortField!=null and sortField != '' and sortField=='allotTime' ">
order by hptil.create_time
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='descend' ">
desc
</if>
<if test="sortOrder!=null and sortOrder != '' and sortOrder=='ascend' ">
asc
</if>
</if>
limit #{limit1},#{limit2}
</select>
<select id="getPublicSeaPageInfoNext" resultType="com.cool.store.vo.LinePageInfoVo">
select
a.id as lineId,
a.partner_id as partnerId
FROM hy_partner_line_info a
inner JOIN hy_partner_user_info b on a.partner_id = b.partner_id
left join hy_partner_base_info bi on a.id = bi.partner_line_id
LEFT JOIN hy_open_area_info hoai ON hoai.id = b.want_shop_area
LEFT JOIN hy_phone_location hpl ON hpl.phone_number = b.mobile
where a.line_status = 0 and a.deleted = 0
<if test="userNameKeyword!=null and userNameKeyword!=''">
and b.username like concat('%',#{userNameKeyword},'%')
</if>
<if test="phoneKeyword!=null and phoneKeyword!=''">
and b.mobile like concat('%',#{phoneKeyword},'%')
</if>
<if test="intentAreaName!=null and intentAreaName!=''">
and hoai.area_path like concat('%/',#{intentAreaName},'/%')
</if>
<if test="acceptAdjustType!=null">
and b.accept_adjust_type = #{acceptAdjustType}
</if>
<if test="updateStartTime!=null and updateEndTime!=''">
and a.update_time BETWEEN #{updateStartTime} and #{updateEndTime}
</if>
<if test="createStartTime!=null and createEndTime!=''">
and a.create_time BETWEEN #{createStartTime} and #{createEndTime}
</if>
<if test="userIdList!=null and userIdList.size>0">
<foreach collection="userIdList" item="userId" open="and a.investment_manager in (" close=")" separator=",">
#{userId}
</foreach>
</if>
order by a.create_time desc limit #{limit1},#{limit2}
</select>
</mapper>

View File

@@ -71,6 +71,9 @@ public class PartnerLineInfoAndBaseInfoDTO {
@ApiModelProperty("意向开店区域")
private String wantShopArea;
@ApiModelProperty("EC意向开店区域")
private String ecWantShopArea;
@ApiModelProperty("意向开店区域名称")
private String wantShopAreaName;

View File

@@ -83,4 +83,6 @@ public class PrivateSeaLineDTO {
private String ecWantShopArea;
private String allotTime;
}

View File

@@ -105,6 +105,9 @@ public class HyPartnerIntentInfoDO implements Serializable {
@ApiModelProperty("邮箱地址")
private String email;
@ApiModelProperty("征信证明")
private String creditProve;
private Integer acquaintanceFlag;
private String acquaintanceName;

View File

@@ -41,6 +41,15 @@ public class LineRequest extends PageInfoRequest{
@ApiModelProperty("创建结束时间")
private String createEndTime;
@ApiModelProperty("线索id")
private Long lineId;
/**
* pageTurn: previous(上一页) next(下一页)
*/
@ApiModelProperty("排序顺序")
private String pageTurn;
}

View File

@@ -54,6 +54,9 @@ public class PartnerIntentInfoRequest {
@ApiModelProperty("资金证明")
private List<String> moneyProve;
@ApiModelProperty("征信证明")
private List<String> creditProve;
@ApiModelProperty("学历")
private String education;

View File

@@ -80,5 +80,28 @@ public class PrivateSeaLineListRequest extends PageInfoRequest {
@ApiModelProperty("创建时间_结束")
private String lineEndTime;
@ApiModelProperty("线索id")
private Long lineId;
/**
* deadline 截至时间
* updateTime 更新时间
* allotTime 分配时间
*/
@ApiModelProperty("排序字段")
private String sortField;
/**
* sortOrder: descend(降序) ascend(升序)
*/
@ApiModelProperty("排序顺序")
private String sortOrder;
/**
* pageTurn: previous(上一页) next(下一页)
*/
@ApiModelProperty("排序顺序")
private String pageTurn;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
/**
* @Author hxd
*/
@Data
@ApiModel
@Slf4j
public class LinePageInfoVo {
@ApiModelProperty("线索ID")
private Long lineId;
@ApiModelProperty("加盟商用户ID")
private String partnerId;
}

View File

@@ -66,6 +66,9 @@ public class PartnerIntentInfoVO {
@ApiModelProperty("资金证明")
private List<String> moneyProve;
@ApiModelProperty("征信证明")
private List<String> creditProve;
@ApiModelProperty("学历")
private String education;

View File

@@ -106,4 +106,7 @@ public class PartnerLineInfoAndBaseInfoVO {
private String developmentDirectorName;
@ApiModelProperty("开发主管手机号")
private String developmentDirectorMobile;
@ApiModelProperty("EC意向开店区域名称")
private String ecWantShopAreaName;
}

View File

@@ -96,6 +96,8 @@ public class PrivateSeaLineListVo {
private Date startTime;
private String allotTime;
private String investmentManagerMobile;
@ApiModelProperty("用户画像")
@@ -136,6 +138,7 @@ public class PrivateSeaLineListVo {
privateSeaLineListVo.setRecommendPartnerName(x.getRecommendPartnerName());
privateSeaLineListVo.setRecommendPartnerMobile(x.getRecommendPartnerMobile());
privateSeaLineListVo.setWorkflowStage(x.getWorkflowStage());
privateSeaLineListVo.setAllotTime(x.getAllotTime());
privateSeaLineListVo.setWantShopArea(x.getWantShopArea());
privateSeaLineListVo.setWorkflowStage(x.getWorkflowStage());
privateSeaLineListVo.setStartTime(hyPartnerInterviewPlanDOMap.getOrDefault(x.getLineId(),new HyPartnerInterviewPlanDO()).getStartTime());

View File

@@ -176,4 +176,9 @@ public interface HyPartnerLineInfoService {
* @return
*/
PartnerSimpleBaseInfoVO queryBaseInfo(Long partnerLineId);
LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest privateSeaLineListRequest, Boolean aFalse);
LinePageInfoVo publicSeaPageDetailNext(String userId, LineRequest lineRequest);
}

View File

@@ -475,6 +475,9 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
if(CollectionUtils.isNotEmpty(request.getMoneyProve())){
intentInfoDO.setMoneyProve(JSONObject.toJSONString(request.getMoneyProve()));
}
if(CollectionUtils.isNotEmpty(request.getCreditProve())){
intentInfoDO.setCreditProve(JSONObject.toJSONString(request.getCreditProve()));
}
intentInfoDO.setEducation(request.getEducation());
intentInfoDO.setWorkYear(request.getWorkYear());
intentInfoDO.setIsHaveWorkExp(request.getIsHaveWorkExp());
@@ -510,6 +513,8 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
partnerIntentInfoVO.setIsHaveWorkExp(hyPartnerIntentInfoDO.getIsHaveWorkExp());
partnerIntentInfoVO.setMoneyProve(StringUtil.isEmpty(hyPartnerIntentInfoDO.getMoneyProve())?
Lists.newArrayList(): JSONObject.parseArray(hyPartnerIntentInfoDO.getMoneyProve(),String.class));
partnerIntentInfoVO.setCreditProve(StringUtil.isEmpty(hyPartnerIntentInfoDO.getCreditProve())?
Lists.newArrayList(): JSONObject.parseArray(hyPartnerIntentInfoDO.getCreditProve(),String.class));
partnerIntentInfoVO.setMoneySource(hyPartnerIntentInfoDO.getMoneySource());
partnerIntentInfoVO.setWorkYear(hyPartnerIntentInfoDO.getWorkYear());
partnerIntentInfoVO.setWorkExp(hyPartnerIntentInfoDO.getWorkExp());

View File

@@ -37,6 +37,7 @@ import javax.annotation.Resource;
import java.text.MessageFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Author suzhuhong
@@ -84,7 +85,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Resource
HyPartnerUserChannelDAO hyPartnerUserChannelDAO;
// @Autowired
// @Autowired
// private NoticeService noticeService;
@Autowired
private EventCenterHttpRequest eventCenterHttpRequest;
@@ -103,6 +104,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Autowired
private WechatMiniAppService wechatMiniAppService;
@Override
public StageCountVO selectStagePendingCount(String userId) {
StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStagePendingCount(userId);
@@ -118,13 +120,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId) {
PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO = hyPartnerLineInfoDAO.selectPartnerLineInfoAndBaseInfo(lineId);
if (partnerLineInfoAndBaseInfoDTO==null){
if (partnerLineInfoAndBaseInfoDTO == null) {
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = convertPartnerLineInfoAndBaseInfoDTOToVo(partnerLineInfoAndBaseInfoDTO);
String userPortrait = partnerLineInfoAndBaseInfoDTO.getUserPortrait();
if (StringUtils.isNotEmpty(userPortrait)){
if (StringUtils.isNotEmpty(userPortrait)) {
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(Arrays.asList(userPortrait));
List<UserPortraitDTO> userPortraitDTOS = userPortraitMap.entrySet().stream()
@@ -134,42 +136,42 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
List<String> userIds = new ArrayList<>();
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getPassUserId())){
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getPassUserId())) {
userIds.add(partnerLineInfoAndBaseInfoDTO.getPassUserId());
}
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getInvestmentManager())){
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getInvestmentManager())) {
userIds.add(partnerLineInfoAndBaseInfoVO.getInvestmentManager());
}
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector())){
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector())) {
userIds.add(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector());
}
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIds);
Map<String, EnterpriseUserDO> userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
partnerLineInfoAndBaseInfoVO.setPassUserName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(),new EnterpriseUserDO()).getName());
partnerLineInfoAndBaseInfoVO.setPassUserMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(),new EnterpriseUserDO()).getMobile());
partnerLineInfoAndBaseInfoVO.setInvestmentManagerName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(),new EnterpriseUserDO()).getName());
partnerLineInfoAndBaseInfoVO.setInvestmentManagerPhone(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(),new EnterpriseUserDO()).getMobile());
partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(),new EnterpriseUserDO()).getName());
partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(),new EnterpriseUserDO()).getMobile());
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getWantShopArea())){
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(partnerLineInfoAndBaseInfoDTO.getWantShopArea()));
partnerLineInfoAndBaseInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/"," "));
partnerLineInfoAndBaseInfoVO.setPassUserName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(), new EnterpriseUserDO()).getName());
partnerLineInfoAndBaseInfoVO.setPassUserMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getPassUserId(), new EnterpriseUserDO()).getMobile());
partnerLineInfoAndBaseInfoVO.setInvestmentManagerName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(), new EnterpriseUserDO()).getName());
partnerLineInfoAndBaseInfoVO.setInvestmentManagerPhone(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getInvestmentManager(), new EnterpriseUserDO()).getMobile());
partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorName(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(), new EnterpriseUserDO()).getName());
partnerLineInfoAndBaseInfoVO.setDevelopmentDirectorMobile(userDOMap.getOrDefault(partnerLineInfoAndBaseInfoVO.getDevelopmentDirector(), new EnterpriseUserDO()).getMobile());
if (StringUtils.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getWantShopArea())) {
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(partnerLineInfoAndBaseInfoDTO.getWantShopArea()));
partnerLineInfoAndBaseInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/", " "));
}
return partnerLineInfoAndBaseInfoVO;
}
@Override
public PageInfo<PartnerLineInfoVO> lastMonthCloseLine(String userId, Integer pageSize, Integer pageNumber) {
PageHelper.startPage(pageNumber,pageSize);
String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(),-30), CoolDateUtils.DATE_FORMAT_SEC);
PageHelper.startPage(pageNumber, pageSize);
String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(), -30), CoolDateUtils.DATE_FORMAT_SEC);
PageInfo hyPartnerLineInfoDOPageInfo = new PageInfo(hyPartnerLineInfoDAO.lastMonthCloseLine(userId, lastMonthTodayDate));
List<HyPartnerLineInfoDO> list = hyPartnerLineInfoDOPageInfo.getList();
List<String> closeUserIds = list.stream().filter(o -> Objects.nonNull(o.getCloseUserId())).map(HyPartnerLineInfoDO::getCloseUserId).distinct().collect(Collectors.toList());
Map<String, String> userNamePhoneMap = enterpriseUserDAO.getUserNameAndMobile(closeUserIds);
List<String> partnerIdList = list.stream().map(HyPartnerLineInfoDO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerList = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList);
Map<String, HyPartnerUserInfoDO> partnerMap = hyPartnerList.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data->data));
Map<String, HyPartnerUserInfoDO> partnerMap = hyPartnerList.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
List<PartnerLineInfoVO> resultList = PartnerLineInfoVO.convertList(list, userNamePhoneMap, partnerMap);
hyPartnerLineInfoDOPageInfo.setList(resultList);
return hyPartnerLineInfoDOPageInfo;
@@ -177,22 +179,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
@Transactional
public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request,Boolean sendFlag) throws ApiException {
if (StringUtil.isBlank(request.getUserId())||request.getLineId()==null){
public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request, Boolean sendFlag) throws ApiException {
if (StringUtil.isBlank(request.getUserId()) || request.getLineId() == null) {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getLineId());
//如果招商经理是当前登录用户,则无需转让
if (request.getUserId().equals(hyPartnerLineInfoDO.getInvestmentManager())){
if (request.getUserId().equals(hyPartnerLineInfoDO.getInvestmentManager())) {
throw new ServiceException(ErrorCodeEnum.NO_TRANSFER_REQUIRED);
}
//校验 合格资格面试阶段 面试状态已开始 不允许转让
if(WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())&&WorkflowStatusEnum.INTERVIEW_3.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())){
throw new ServiceException(ErrorCodeEnum.INTERVIEW_STATUS_NOT_TRANSFER,WorkflowStatusEnum.INTERVIEW_3.getMessage());
if (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_3.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_STATUS_NOT_TRANSFER, WorkflowStatusEnum.INTERVIEW_3.getMessage());
}
List<String> userIdList = new ArrayList<>();
userIdList.add(request.getUserId());
if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){
if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())) {
userIdList.add(hyPartnerLineInfoDO.getInvestmentManager());
}
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList);
@@ -200,9 +202,9 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
//更新面试官(预约面试全阶段和合作资格面试待面试阶段都需要变更面试官)
//待预约状态及之前还未生成面试信息,因此不做变更面试官操作
if ( (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus()))
|| (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())) && !WorkflowStatusEnum.RESERVATION_0.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request);
if ((WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus()))
|| (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())) && !WorkflowStatusEnum.RESERVATION_0.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()), request);
}
//转让招商经理
hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId()));
@@ -212,15 +214,15 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
Map<String, String> feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(userIds);
List<String> feishuUserIds = new ArrayList<>(feishuUserIdsByUserIds.values());
//发送飞书工作通知
if (sendFlag){
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,feishuUserIds,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
if (sendFlag) {
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER, feishuUserIds, dateTime, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile());
}
//如果是面试预约待审批阶段还要发送面试预约申请通知
if (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.RESERVATION_1.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
HyPartnerInterviewPlanDO interviewPlanByLine = hyPartnerInterviewPlanDAO.getInterviewPlanByLineId(request.getLineId());
if (interviewPlanByLine!=null && interviewPlanByLine.getStartTime()!=null ){
if (interviewPlanByLine != null && interviewPlanByLine.getStartTime() != null) {
String startTime = DateUtil.format(interviewPlanByLine.getStartTime(), CoolDateUtils.DATE_FORMAT_SEC_7);
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT, feishuUserIds, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile(),startTime);
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT, feishuUserIds, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile(), startTime);
}
}
@@ -233,10 +235,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
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(request.getUserId(),new EnterpriseUserDO()).getMobile())
.afterInvestmentManagerUsername(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getName())
.beforeInvestmentManagerUsername(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(), new EnterpriseUserDO()).getName())
.beforeInvestmentManagerMobile(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(), new EnterpriseUserDO()).getMobile())
.afterInvestmentManagerMobile(userDOMap.getOrDefault(request.getUserId(), new EnterpriseUserDO()).getMobile())
.afterInvestmentManagerUsername(userDOMap.getOrDefault(request.getUserId(), new EnterpriseUserDO()).getName())
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
lineLogInfo.setData(logDTO);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
@@ -245,31 +247,31 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public List<BatchTransferVO> batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException {
if (CollectionUtils.isEmpty(request.getLineIds())||StringUtils.isEmpty(request.getUserId())){
if (CollectionUtils.isEmpty(request.getLineIds()) || StringUtils.isEmpty(request.getUserId())) {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
List<BatchTransferVO> result = new ArrayList<>();
List<HyPartnerLineInfoDO> hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), null);
Map<Long, String> partnerMap = hyPartnerLineInfoList.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, HyPartnerLineInfoDO::getPartnerId));
List<String> partnerIdList = hyPartnerLineInfoList.stream().filter(x->StringUtils.isNotEmpty(x.getPartnerId()))
List<String> partnerIdList = hyPartnerLineInfoList.stream().filter(x -> StringUtils.isNotEmpty(x.getPartnerId()))
.map(HyPartnerLineInfoDO::getPartnerId).distinct().collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList);
Map<String, HyPartnerUserInfoDO> partnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, x -> x));
List<Long> successLineIds = new ArrayList<>();
for (Long lineId:request.getLineIds()) {
for (Long lineId : request.getLineIds()) {
TransferInvestmentManagerRequest transferInvestmentManagerRequest = new TransferInvestmentManagerRequest();
transferInvestmentManagerRequest.setUserId(request.getUserId());
transferInvestmentManagerRequest.setLineId(lineId);
try {
this.transferInvestmentManager(user,transferInvestmentManagerRequest,Boolean.FALSE);
this.transferInvestmentManager(user, transferInvestmentManagerRequest, Boolean.FALSE);
successLineIds.add(lineId);
} catch (Exception e) {
log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{}e:{}",lineId,e.getMessage());
log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{}e:{}", lineId, e.getMessage());
HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(lineId));
BatchTransferVO batchTransferVO = new BatchTransferVO();
batchTransferVO.setErrorMessage(e.getMessage());
if (e instanceof ServiceException){
batchTransferVO.setErrorMessage(((ServiceException)e).getErrorMessage());
if (e instanceof ServiceException) {
batchTransferVO.setErrorMessage(((ServiceException) e).getErrorMessage());
}
batchTransferVO.setPartnerMobile(hyPartnerUserInfoDO.getMobile());
batchTransferVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
@@ -279,37 +281,37 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
Map<String, String> feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(Arrays.asList(request.getUserId()));
ArrayList<String> feishuUserIds = new ArrayList<>(feishuUserIdsByUserIds.values());
try {
if (successLineIds.size()>1){
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER,feishuUserIds,successLineIds.size(),DateUtil.format(new Date(),CoolDateUtils.DATE_FORMAT_SEC_7));
}else if (successLineIds.size()==1){
if (successLineIds.size() > 1) {
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER, feishuUserIds, successLineIds.size(), DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7));
} else if (successLineIds.size() == 1) {
String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7);
HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(successLineIds.get(0)));
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,feishuUserIds,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER, feishuUserIds, dateTime, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile());
}
} catch (Exception e) {
log.info("batchTransferInvestmentManager_error:{}",e.getMessage());
log.info("batchTransferInvestmentManager_error:{}", e.getMessage());
}
return result;
}
@Override
public Boolean allocationInvestmentManager(LoginUserInfo operateUser,String userId, List<Long> lineIdList) {
if (StringUtils.isEmpty(userId)|| CollectionUtils.isEmpty(lineIdList)){
public Boolean allocationInvestmentManager(LoginUserInfo operateUser, String userId, List<Long> lineIdList) {
if (StringUtils.isEmpty(userId) || CollectionUtils.isEmpty(lineIdList)) {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
EnterpriseUserDO user = enterpriseUserDAO.getUserInfoById(userId);
if (user==null){
if (user == null) {
throw new ServiceException(ErrorCodeEnum.INVESTMENT_MANAGER_NOT_EXIST);
}
//加盟上线索集合
List<HyPartnerLineInfoDO> partnerLineInfoList= hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList);
List<HyPartnerLineInfoDO> partnerLineInfoList = hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList);
//过滤出已结束的线索 这块线索需要重新生成新的线索
List<HyPartnerLineInfoDO> closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList());
List<HyPartnerLineInfoDO> closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList());
List<Long> closeLineIdList = closeLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
//已结束的线索 需要重新生成一条新的线索
List<HyPartnerLineInfoDO> list = new ArrayList<>();
closeLineList.stream().forEach(x->{
closeLineList.stream().forEach(x -> {
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setPartnerId(x.getPartnerId());
hyPartnerLineInfoDO.setInvestmentManager(userId);
@@ -320,7 +322,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
});
hyPartnerLineInfoDAO.batchInsert(list);
List<HyPartnerBaseInfoDO> hyPartnerBaseInfoDOS = new ArrayList<>();
list.forEach(x->{
list.forEach(x -> {
HyPartnerBaseInfoDO newHyPartnerBaseInfoDO = new HyPartnerBaseInfoDO();
newHyPartnerBaseInfoDO.setPartnerId(x.getPartnerId());
newHyPartnerBaseInfoDO.setPartnerLineId(x.getId());
@@ -330,7 +332,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
//将老的线索置为删除状态
hyPartnerLineInfoDAO.batchDeleted(closeLineIdList);
//没有结束的线索直接分配招商经理
List<HyPartnerLineInfoDO> otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList());
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);
//添加日志
@@ -359,13 +361,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public PageInfo<BlackListVO> getBlackList(LineRequest LineRequest) {
String intentAreaName = getIntentAreaName(LineRequest.getIntentArea());
PageHelper.startPage(LineRequest.getPageNum(),LineRequest.getPageSize());
PageInfo blackListDTOPageInfo = new PageInfo(hyPartnerLineInfoDAO.getBlackList(LineRequest.getUserNameKeyword(), LineRequest.getPhoneKeyword(),intentAreaName, LineRequest.getAcceptAdjustType()));
PageHelper.startPage(LineRequest.getPageNum(), LineRequest.getPageSize());
PageInfo blackListDTOPageInfo = new PageInfo(hyPartnerLineInfoDAO.getBlackList(LineRequest.getUserNameKeyword(), LineRequest.getPhoneKeyword(), intentAreaName, LineRequest.getAcceptAdjustType()));
List<PartnerBlackListDTO> list = blackListDTOPageInfo.getList();
List<String> closeUserIdList = list.stream().map(PartnerBlackListDTO::getCloseUserId).collect(Collectors.toList());
Map<String, String> userPhoneMap = enterpriseUserDAO.getUserNameAndMobile(closeUserIdList);
List<BlackListVO> result = new ArrayList<>();
list.stream().forEach(x->{
list.stream().forEach(x -> {
BlackListVO blackListVO = convertPartnerBlackListDTOToVo(x);
blackListVO.setCloseUserPhone(userPhoneMap.get(x.getCloseUserId()));
blackListVO.setCloseUserName(userPhoneMap.get(x.getCloseUserId()));
@@ -377,7 +379,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason) throws ApiException {
if (lineId==null){
if (lineId == null) {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyPartnerLineInfoDO line = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
@@ -395,11 +397,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
hyFollowTaskDAO.cancelUndoFollowTask(lineId);
//公海线索不需要处理子流程线索
if (!LineStatusEnum.PUBLIC_SEAS.getCode().equals(lineStatus)){
if (!LineStatusEnum.PUBLIC_SEAS.getCode().equals(lineStatus)) {
CloseFollowRequest closeFollowRequest = new CloseFollowRequest();
closeFollowRequest.setLineId(lineId);
closeFollowRequest.setRejectRealReason(joinReason);
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()),closeFollowRequest);
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()), closeFollowRequest);
}
//添加日志
@@ -412,13 +414,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
lineLogInfo.setData(logDTO);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
return Boolean.TRUE;
return Boolean.TRUE;
}
@Override
public Boolean removeBlackList(LoginUserInfo user,Long lineId, Integer status, String removeReason) {
public Boolean removeBlackList(LoginUserInfo user, Long lineId, Integer status, String removeReason) {
//移除黑名单 黑名单线索置为删除状态 新增一条线索
if (lineId==null){
if (lineId == null) {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyPartnerLineInfoDO hyPartnerLineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
@@ -458,53 +460,53 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) throws ApiException {
public Boolean closeOrPassFollow(LoginUserInfo user, CloseFollowRequest closeFollowRequest) throws ApiException {
//该方法中user可能为空注意处理空指针的情况
if(user == null){
if (user == null) {
user = new LoginUserInfo();
}
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
if (hyPartnerLineInfoDO==null){
if (hyPartnerLineInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
if (hyPartnerLineInfoDO.getLineStatus()==0){
if (hyPartnerLineInfoDO.getLineStatus() == 0) {
throw new ServiceException(ErrorCodeEnum.PUBLIC_LINE_NOT_OPERATE);
}
String oldWorkflowStage = hyPartnerLineInfoDO.getWorkflowStage();
String oldWorkflowStatus = hyPartnerLineInfoDO.getWorkflowStatus();
//通过
if ("pass".equals(closeFollowRequest.getType())){
if ("pass".equals(closeFollowRequest.getType())) {
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode());
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode());
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateFormatDay(new Date(),2));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateFormatDay(new Date(), 2));
hyPartnerLineInfoDO.setPassReason(closeFollowRequest.getPassReason());
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())) {
hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
}
HyPartnerBaseInfoDO hy = hyPartnerBaseInfoDAO.getByPartnerLineId(hyPartnerLineInfoDO.getId());
hy.setPassReason(closeFollowRequest.getPassReason());
hy.setPassTime(new Date());
hy.setPassUserId(user.getUserId());
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())) {
hy.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
}
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(hy);
eventCenterHttpRequest.sendSmsVariable(hy.getMobile(), SMSMsgEnum.INTENTION_APPLY_PASS,DateUtil.formatDateTime(hyPartnerLineInfoDO.getDeadline()),wechatMiniAppService.getMiniAppUrl());
eventCenterHttpRequest.sendSmsVariable(hy.getMobile(), SMSMsgEnum.INTENTION_APPLY_PASS, DateUtil.formatDateTime(hyPartnerLineInfoDO.getDeadline()), wechatMiniAppService.getMiniAppUrl());
}
//拒绝
if ("reject".equals(closeFollowRequest.getType())){
if ("reject".equals(closeFollowRequest.getType())) {
//当前节点 拒绝的子状态
String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage());
hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus);
//15天 冷静期
String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId());
redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15));
redisUtilPool.setString(coolingPeriodFirstLoginCacheKey, JSONObject.toJSONString(closeFollowRequest));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(), 15));
hyPartnerLineInfoDO.setRejectPublicReason(closeFollowRequest.getRejectPublicReason());
hyPartnerLineInfoDO.setRejectRealReason(closeFollowRequest.getRejectRealReason());
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())) {
hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
}
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
@@ -513,17 +515,17 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
//作废待完成&已逾期的任务
hyFollowTaskDAO.cancelUndoFollowTask(closeFollowRequest.getLineId());
//各阶段单独的逻辑
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),closeFollowRequest);
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()), closeFollowRequest);
}
//面试超时
if ("overtime_interview".equals(closeFollowRequest.getType())){
if ("overtime_interview".equals(closeFollowRequest.getType())) {
//面试超时未预约
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_8.getCode());
//15天 冷静期
String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId());
redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15));
redisUtilPool.setString(coolingPeriodFirstLoginCacheKey, JSONObject.toJSONString(closeFollowRequest));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(), 15));
hyPartnerLineInfoDO.setRejectPublicReason(closeFollowRequest.getRejectPublicReason());
hyPartnerLineInfoDO.setRejectRealReason(closeFollowRequest.getRejectRealReason());
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
@@ -535,7 +537,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
//通过 拒绝添加日志
if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())&&"reject".equals(closeFollowRequest.getType())){
if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && "reject".equals(closeFollowRequest.getType())) {
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(),
user.getName(), OperateTypeEnum.CLOSE_FOLLOW,
WorkflowStageEnum.getWorkflowStageByCode(oldWorkflowStage),
@@ -550,7 +552,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
@Override
public PageInfo<PublicSeaLineListVo> publicSeaLineList(String userId, LineRequest lineRequest) {
//确认是招商经理还是部门负责人
@@ -566,12 +567,12 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
// userIds = Arrays.asList(userId);
// }
String intentAreaName = getIntentAreaName(lineRequest.getIntentArea());
PageHelper.startPage(lineRequest.getPageNum(),lineRequest.getPageSize());
PageHelper.startPage(lineRequest.getPageNum(), lineRequest.getPageSize());
PageInfo publicSeaLineList = new PageInfo(hyPartnerLineInfoDAO.getPublicSeaLineList(lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(),
intentAreaName, lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null, lineRequest.getCreateStartTime(), lineRequest.getCreateEndTime()));
List<PublicSeaLineDTO> list = publicSeaLineList.getList();
if (CollectionUtils.isEmpty(list)){
if (CollectionUtils.isEmpty(list)) {
return new PageInfo<>();
}
//上一次结束的线索
@@ -580,7 +581,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
List<String> investmentManagerIds = partnerLastLine.stream().map(HyPartnerLineInfoDO::getInvestmentManager).collect(Collectors.toList());
List<EnterpriseUserDO> userInfoList = enterpriseUserDAO.getUserInfoByUserIds(investmentManagerIds);
Map<String, String> nameMobileMap = userInfoList.stream().filter(x ->
StringUtil.isNotEmpty(x.getMobile())).collect(Collectors.toMap(EnterpriseUserDO::getUserId, v-> v.getName() + " "+ v.getMobile()));
StringUtil.isNotEmpty(x.getMobile())).collect(Collectors.toMap(EnterpriseUserDO::getUserId, v -> v.getName() + " " + v.getMobile()));
Map<String, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = partnerLastLine.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getPartnerId, data -> data));
List<LineCountDTO> followCountList = hyPartnerLineInfoDAO.getFollowCountList(partnerIdList);
@@ -592,26 +593,26 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
List<Integer> userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PublicSeaLineDTO::getUserChannelId).collect(Collectors.toList());
Map<Integer, String> channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PublicSeaLineDTO::getUserPortrait).collect(Collectors.toList());
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait())).map(PublicSeaLineDTO::getUserPortrait).collect(Collectors.toList());
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList);
List<PublicSeaLineListVo> result = new ArrayList<>();
list.forEach(x->{
list.forEach(x -> {
PublicSeaLineListVo publicSeaLineListVo = new PublicSeaLineListVo();
publicSeaLineListVo.setPartnerId(x.getPartnerId());
publicSeaLineListVo.setCreateTime(DateUtil.format(x.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC_2));
publicSeaLineListVo.setCreateTime(DateUtil.format(x.getCreateTime(), CoolDateUtils.DATE_FORMAT_SEC_2));
publicSeaLineListVo.setPartnerUserName(x.getUserName());
publicSeaLineListVo.setPartnerUserPhone(x.getMobile());
String phoneAddress = x.getPhoneAddress();
if (StringUtils.isEmpty(phoneAddress)){
if (StringUtils.isEmpty(phoneAddress)) {
phoneAddress = hyPhoneLocationService.handleHyPhoneAddress(x.getMobile());
}
publicSeaLineListVo.setPhoneAddress(phoneAddress);
publicSeaLineListVo.setWantShopArea(x.getWantShopArea());
publicSeaLineListVo.setEcWantShopArea(x.getEcWantShopArea());
publicSeaLineListVo.setUpdateTime(DateUtil.format(x.getUpdateTime(),CoolDateUtils.DATE_FORMAT_SEC_2));
publicSeaLineListVo.setUpdateTime(DateUtil.format(x.getUpdateTime(), CoolDateUtils.DATE_FORMAT_SEC_2));
publicSeaLineListVo.setId(x.getLineId());
publicSeaLineListVo.setAcceptAdjustType(x.getAcceptAdjustType());
publicSeaLineListVo.setFollowCount(countMap.getOrDefault(x.getPartnerId(),0));
publicSeaLineListVo.setFollowCount(countMap.getOrDefault(x.getPartnerId(), 0));
HyPartnerLineInfoDO hy = hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerLineInfoDO());
publicSeaLineListVo.setRejectPublicReason(hy.getRejectPublicReason());
publicSeaLineListVo.setRejectRealReason(hy.getRejectRealReason());
@@ -629,8 +630,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
@Override
public PageInfo<PrivateSeaLineListVo> privateSeaLineList(String userId, PrivateSeaLineListRequest request,Boolean allPrivateSeaFlag) {
//allPrivateSeaFlag 为true的时候 查询全量私海
@@ -653,7 +652,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(), intentAreaName, request.getAcceptAdjustType(), request.getStoreKeyword(),
request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(),userIdsByScope.getDevelopmentUserIds(),request.getUserPortraitIdList(),request.getUserChannelIdList()
, request.getUpdateStartTime(), request.getUpdateEndTime(), request.getPartnerName(),request.getPartnerMobile(),request.getInvestmentManagerId(),request.getUserPortraitQueryType()
,request.getIntentAreaQueryType(),request.getLineStartTime(),request.getLineEndTime(),request.getUserChannelQueryType()));
,request.getIntentAreaQueryType(),request.getLineStartTime(),request.getLineEndTime(),request.getUserChannelQueryType(),request.getSortField(),request.getSortOrder()));
List<PrivateSeaLineDTO> list = privateLineList.getList();
if (CollectionUtils.isEmpty(list)){
return privateLineList;
@@ -664,20 +663,20 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
Map<String, String> devManagerMap = new HashMap<>();
List<String> devManagerIdList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getDevelopmentManager())).map(PrivateSeaLineDTO::getDevelopmentManager).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(devManagerIdList)){
if (CollectionUtils.isNotEmpty(devManagerIdList)) {
List<EnterpriseUserDO> devManagerList = enterpriseUserDAO.getUserInfoByUserIds(devManagerIdList);
devManagerMap = devManagerList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName));
}
List<Long> wantShopAreaList = list.stream().filter(x->StringUtils.isNotEmpty(x.getWantShopArea())).map(PrivateSeaLineDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList());
List<Long> wantShopAreaList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getWantShopArea())).map(PrivateSeaLineDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList());
Map<String, String> wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList);
List<Integer> userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PrivateSeaLineDTO::getUserChannelId).collect(Collectors.toList());
Map<Integer, String> channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PrivateSeaLineDTO::getUserPortrait).collect(Collectors.toList());
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait())).map(PrivateSeaLineDTO::getUserPortrait).collect(Collectors.toList());
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList);
List<PrivateSeaLineListVo> result = PrivateSeaLineListVo.convertList(list, devManagerMap, wantShopAreaNameMap,hyPartnerInterviewPlanDOMap,channelMap,userPortraitMap);
List<PrivateSeaLineListVo> result = PrivateSeaLineListVo.convertList(list, devManagerMap, wantShopAreaNameMap, hyPartnerInterviewPlanDOMap, channelMap, userPortraitMap);
privateLineList.setList(result);
return privateLineList;
}
@@ -709,14 +708,14 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public List<LineFollowHistoryVO> getLineFollowHistory(String partnerId) {
List<HyPartnerLineInfoDO> lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId);
if (CollectionUtils.isEmpty(lineFollowHistoryList)){
if (CollectionUtils.isEmpty(lineFollowHistoryList)) {
return new ArrayList<>();
}
List<LineFollowHistoryVO> result = new ArrayList<>();
lineFollowHistoryList.forEach(x->{
lineFollowHistoryList.forEach(x -> {
LineFollowHistoryVO lineFollowHistoryVO = new LineFollowHistoryVO();
lineFollowHistoryVO.setCloseCause(x.getRejectRealReason());
lineFollowHistoryVO.setCloseTime( DateUtil.format(x.getCloseTime(), CoolDateUtils.DATE_FORMAT_SEC_2));
lineFollowHistoryVO.setCloseTime(DateUtil.format(x.getCloseTime(), CoolDateUtils.DATE_FORMAT_SEC_2));
lineFollowHistoryVO.setStartTime(DateUtil.format(x.getCreateTime(), CoolDateUtils.DATE_FORMAT_SEC_2));
result.add(lineFollowHistoryVO);
});
@@ -724,93 +723,94 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
@Override
public Boolean assignFollowUser(String partnerId, String wantShopArea, Integer acceptAdjustType,Boolean flag) {
log.info("assignFollowUser partnerId:{}wantShopArea{}acceptAdjustType{}",partnerId,wantShopArea,acceptAdjustType);
public Boolean assignFollowUser(String partnerId, String wantShopArea, Integer acceptAdjustType, Boolean flag) {
log.info("assignFollowUser partnerId:{}wantShopArea{}acceptAdjustType{}", partnerId, wantShopArea, acceptAdjustType);
if (!flag){
if (!flag) {
return Boolean.FALSE;
}
List<HyPartnerLineInfoDO> lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId);
//如果跟进次数大于1 直接使用上一次的招商经理
if (CollectionUtils.isNotEmpty(lineFollowHistoryList)){
if (CollectionUtils.isNotEmpty(lineFollowHistoryList)) {
return Boolean.TRUE;
}
//当前加盟商线索
HyPartnerLineInfoDO HyPartnerLineInfo = hyPartnerLineInfoDAO.getByPartnerId(partnerId);
//如果意向区域没有绑定战区 不分配招商经理
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea), "intent");
if (hyIntendDevelopementMappingDO==null){
if (hyIntendDevelopementMappingDO == null) {
log.info("如果意向区域没有绑定战区 不分配招商经理");
return Boolean.FALSE;
}
List<String> result = new ArrayList<>();
if (hyIntendDevelopementMappingDO!=null){
List<String> result = new ArrayList<>();
if (hyIntendDevelopementMappingDO != null) {
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(hyIntendDevelopementMappingDO.getMappingId());
if (hyIntendDevZoneInfoDO!=null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) {
if (hyIntendDevZoneInfoDO != null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) {
List<String> list = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
result.addAll(list);
}
}
List<EnterpriseUserDO> userListByRegionIds = enterpriseUserDAO.getUserListByRegionIds(result);
if (CollectionUtils.isEmpty(userListByRegionIds)){
if (CollectionUtils.isEmpty(userListByRegionIds)) {
log.info("意向区域绑定战区 但是战区绑定的组织机构下没人 不分配");
return Boolean.FALSE;
}
//如果是私海线索 不需要重新分配招商经理
if ((HyPartnerLineInfo != null && HyPartnerLineInfo.getLineStatus()==1)){
log.info("如果是私海线索 不需要重新分配招商经理 或者跟进次数大于等于1 lineStatus:{}",HyPartnerLineInfo.getLineStatus());
if ((HyPartnerLineInfo != null && HyPartnerLineInfo.getLineStatus() == 1)) {
log.info("如果是私海线索 不需要重新分配招商经理 或者跟进次数大于等于1 lineStatus:{}", HyPartnerLineInfo.getLineStatus());
return Boolean.FALSE;
}
if(HyPartnerLineInfo == null){
if (HyPartnerLineInfo == null) {
Boolean lineStatus = getLineStatus(Long.valueOf(wantShopArea), acceptAdjustType);
return lineStatus;
}
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId);
Boolean lineStatus = getLineStatus(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()), hyPartnerUserInfoDO.getAcceptAdjustType());
log.info("lineStatus:{}",lineStatus);
log.info("lineStatus:{}", lineStatus);
return lineStatus;
}
/**
* 线索状态
*
* @param wantShopAreaId
* @param acceptAdjustType
* @return
*/
@Override
public Boolean getLineStatus(Long wantShopAreaId,Integer acceptAdjustType){
public Boolean getLineStatus(Long wantShopAreaId, Integer acceptAdjustType) {
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(wantShopAreaId);
if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){
if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())) {
return Boolean.TRUE;
}
if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){
if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(acceptAdjustType)){
if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())) {
if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(acceptAdjustType)) {
return Boolean.FALSE;
}
//全国调剂 默认分配呗 有啥好说的
if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(acceptAdjustType)) {
return Boolean.TRUE;
}
//省内调剂 有重点或者开放的 分配
if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList= new ArrayList<>();
if(hyOpenAreaInfoDO != null){
if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)) {
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = new ArrayList<>();
if (hyOpenAreaInfoDO != null) {
String areaPath = hyOpenAreaInfoDO.getAreaPath();
String province = areaPath.substring(0, areaPath.indexOf("/", areaPath.indexOf("/") + 1));
hyOpenAreaInfoDOList = hyOpenAreaInfoDAO.queryByKeyword(province, true, null, true);
//过滤一级目录
hyOpenAreaInfoDOList = hyOpenAreaInfoDOList.stream().filter(x->x.getParentId()!=null).collect(Collectors.toList());
hyOpenAreaInfoDOList = hyOpenAreaInfoDOList.stream().filter(x -> x.getParentId() != null).collect(Collectors.toList());
}
if (hyOpenAreaInfoDOList.size()>CommonConstants.ZERO){
if (hyOpenAreaInfoDOList.size() > CommonConstants.ZERO) {
return Boolean.TRUE;
}
return Boolean.FALSE;
}
//市内调剂 不分配
if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(acceptAdjustType)) {
return Boolean.FALSE;
}
}
@@ -819,22 +819,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public String getAssignFollowUser(String partnerId,String type) {
public String getAssignFollowUser(String partnerId, String type) {
//查询意向区域
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId);
List<HyPartnerLineInfoDO> lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId);
//如果跟进次数大于1 直接使用上一次的招商经理
if (CollectionUtils.isNotEmpty(lineFollowHistoryList)){
if (CollectionUtils.isNotEmpty(lineFollowHistoryList)) {
return lineFollowHistoryList.get(0).getInvestmentManager();
}
//意向区域
String wantShopArea = hyPartnerUserInfoDO.getWantShopArea();
//查询意向区域绑定的组织架构 没有绑定战区 分配空
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea),type);
List<String> result = new ArrayList<>();
if (hyIntendDevelopementMappingDO!=null){
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = hyIntendDevMappingDAO.selectByOpenAreaMappingId(Long.valueOf(wantShopArea), type);
List<String> result = new ArrayList<>();
if (hyIntendDevelopementMappingDO != null) {
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(hyIntendDevelopementMappingDO.getMappingId());
if (hyIntendDevZoneInfoDO!=null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) {
if (hyIntendDevZoneInfoDO != null && StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())) {
List<String> list = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
result.addAll(list);
}
@@ -842,16 +842,16 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
String userId = "";
List<EnterpriseUserDO> userListByRegionIds = enterpriseUserDAO.getUserListByRegionIds(result);
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(hyIntendDevelopementMappingDO.getMappingId());
if (CollectionUtils.isNotEmpty(userListByRegionIds)){
if (CollectionUtils.isNotEmpty(userListByRegionIds)) {
List<String> userIdList = userListByRegionIds.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
int i = userIdList.indexOf(hyIntendDevZoneInfoDO.getLastAllotUserId());
if (i==(userListByRegionIds.size()-1)){
i = -1;
if (i == (userListByRegionIds.size() - 1)) {
i = -1;
}
userId = userIdList.get(++i);
userId = userIdList.get(++i);
}
//上次分配的招商经理 记录
if ("intent".equals(type)){
if ("intent".equals(type)) {
hyIntendDevZoneInfoDO.setLastAllotUserId(userId);
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
}
@@ -859,33 +859,34 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
@Override
public InterviewVO getInterviewInfo(Long lineId,Boolean needDevelopmentDirector) throws ApiException {
public InterviewVO getInterviewInfo(Long lineId, Boolean needDevelopmentDirector) throws ApiException {
Long interviewId = hyPartnerInterviewPlanDAO.selectInterviewIdByLineId(lineId);
QueryByInterviewPlanIdReq queryByInterviewPlanIdReq = new QueryByInterviewPlanIdReq();
if (interviewId!=null){
if (interviewId != null) {
queryByInterviewPlanIdReq.setInterviewPlanId(String.valueOf(interviewId));
queryByInterviewPlanIdReq.setNeedDevelopmentDirector(needDevelopmentDirector);
return interviewService.getInterviewInfo(queryByInterviewPlanIdReq);
}
return null;
}
@Override
public HyPartnerLineInfoDO generateDefaultLineInfo(String partnerId, String wantShopArea, Integer acceptAdjustType,Boolean assignFlag,String investmentManagerId) throws ApiException {
public HyPartnerLineInfoDO generateDefaultLineInfo(String partnerId, String wantShopArea, Integer acceptAdjustType, Boolean assignFlag, String investmentManagerId) throws ApiException {
// 生成一条线索
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(partnerId);
//短信拼接了招商经理 直接使用 不需要走自动分配的逻辑 其他方式 走自动分配
String investmentManager = null;
Boolean flag = Boolean.FALSE;
if (StringUtils.isNotEmpty(investmentManagerId)){
if (StringUtils.isNotEmpty(investmentManagerId)) {
investmentManager = investmentManagerId;
flag = Boolean.TRUE;
}else {
flag = this.assignFollowUser(partnerId, wantShopArea, acceptAdjustType,assignFlag);
if (flag){
} else {
flag = this.assignFollowUser(partnerId, wantShopArea, acceptAdjustType, assignFlag);
if (flag) {
investmentManager = getAssignFollowUser(partnerId, "intent");
}
}
if(hyPartnerLineInfoDO == null){
if (hyPartnerLineInfoDO == null) {
hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setPartnerId(partnerId);
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
@@ -893,22 +894,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode());
hyPartnerLineInfoDO.setInvestmentManager(investmentManager);
hyPartnerLineInfoDAO.insertSelective(hyPartnerLineInfoDO);
}else {
if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())){
} else {
if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())) {
hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode());
hyPartnerLineInfoDO.setInvestmentManager(investmentManager);
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
}
}
//发送飞书工作通知
if(flag){
if (flag) {
List<String> userIdList = new ArrayList<>();
userIdList.add(investmentManager);
Map<String, String> feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(userIdList);
ArrayList<String> feishuUserIds = new ArrayList<>(feishuUserIdsByUserIds.values());
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId);
String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7);
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,feishuUserIds,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER, feishuUserIds, dateTime, hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile());
}
return hyPartnerLineInfoDO;
}
@@ -917,13 +918,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
public Long checkGenerateNewLineId(Long lineId) throws ApiException {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
// 15天之后可以继续填写意向信息把之前的线索删除
if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null &&
DateUtil.offsetSecond(hyPartnerLineInfoDO.getDeadline(), -2).before(new Date())){
if (hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null &&
DateUtil.offsetSecond(hyPartnerLineInfoDO.getDeadline(), -2).before(new Date())) {
//将老的线索置为删除状态
hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId()));
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());
// 生成一条新线索 生成新线索的时候不需要公海到私海
HyPartnerLineInfoDO newLineInfoDO = this.generateDefaultLineInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerUserInfoDO.getWantShopArea(), hyPartnerUserInfoDO.getAcceptAdjustType(),Boolean.FALSE,null);
HyPartnerLineInfoDO newLineInfoDO = this.generateDefaultLineInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerUserInfoDO.getWantShopArea(), hyPartnerUserInfoDO.getAcceptAdjustType(), Boolean.FALSE, null);
// 生成一条意向基本信息
HyPartnerBaseInfoDO oldBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(hyPartnerUserInfoDO.getPartnerId(), lineId);
hyPartnerBaseInfoService.generateBaseInfo(hyPartnerUserInfoDO, newLineInfoDO.getId(), oldBaseInfoDO.getUserPortrait());
@@ -936,11 +937,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Transactional(rollbackFor = Exception.class)
public Integer editBaseInfo(EditBaseInfoRequest request) {
HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getPartnerLineId());
if(Objects.isNull(lineInfo)){
if (Objects.isNull(lineInfo)) {
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
HyPartnerUserInfoDO partnerUserInfo = hyPartnerUserInfoDAO.selectByMobile(request.getMobile());
if(Objects.nonNull(partnerUserInfo) && !lineInfo.getPartnerId().equals(partnerUserInfo.getPartnerId())){
if (Objects.nonNull(partnerUserInfo) && !lineInfo.getPartnerId().equals(partnerUserInfo.getPartnerId())) {
throw new ServiceException(ErrorCodeEnum.PARTNER_MOBILE_EXIST_0);
}
HyPartnerUserInfoDO update = new HyPartnerUserInfoDO();
@@ -962,16 +963,16 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public PartnerSimpleBaseInfoVO queryBaseInfo(Long partnerLineId) {
HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(partnerLineId);
if(Objects.isNull(lineInfo)){
if (Objects.isNull(lineInfo)) {
return null;
}
HyPartnerUserInfoDO partnerUserInfo = hyPartnerUserInfoDAO.selectByPartnerId(lineInfo.getPartnerId());
HyPartnerBaseInfoDO partnerBaseInfo = hyPartnerBaseInfoDAO.getByPartnerLineId(partnerLineId);
PartnerSimpleBaseInfoVO result = PartnerSimpleBaseInfoVO.convertVO(partnerLineId, partnerUserInfo);
String userPortrait = Optional.ofNullable(partnerBaseInfo).map(o->o.getUserPortrait()).orElse(null);
Long partnerBaseInfoId = Optional.ofNullable(partnerBaseInfo).map(o->o.getId()).orElse(null);
String userPortrait = Optional.ofNullable(partnerBaseInfo).map(o -> o.getUserPortrait()).orElse(null);
Long partnerBaseInfoId = Optional.ofNullable(partnerBaseInfo).map(o -> o.getId()).orElse(null);
result.setPartnerBaseInfoId(partnerBaseInfoId);
if (StringUtils.isNotEmpty(userPortrait) && Objects.nonNull(result)){
if (StringUtils.isNotEmpty(userPortrait) && Objects.nonNull(result)) {
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(Arrays.asList(userPortrait));
List<UserPortraitDTO> userPortraitList = userPortraitMap.entrySet().stream()
.map(entry -> new UserPortraitDTO(entry.getKey(), entry.getValue()))
@@ -981,13 +982,70 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
return result;
}
@Override
public LinePageInfoVo privateSeaPageDetailNext(String userId, PrivateSeaLineListRequest request, Boolean allPrivateSeaFlag) {
request.setPageNum((int) Math.ceil((double) request.getPageNum() / request.getPageSize()));
//allPrivateSeaFlag 为true的时候 查询全量私海
UserPositionAndUserScopeDTO userIdsByScope = new UserPositionAndUserScopeDTO();
if (!allPrivateSeaFlag) {
userIdsByScope = enterpriseUserService.getUserIdsByScope(userId);
}
String intentAreaName = getIntentAreaName(request.getIntentAreaId());
Integer pageNum = request.getPageNum();
Integer pageSize = request.getPageSize();
List<LinePageInfoVo> linePageInfoVo = hyPartnerLineInfoDAO.getPrivateSeaPageInfoNext(request.getLineId(), request.getKeyword(), request.getKeywordType(), request.getWorkflowStage(),
request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(), intentAreaName, request.getAcceptAdjustType(), request.getStoreKeyword(),
request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(), userIdsByScope.getDevelopmentUserIds(), request.getUserPortraitIdList(), request.getUserChannelIdList()
, request.getUpdateStartTime(), request.getUpdateEndTime(), request.getPartnerName(), request.getPartnerMobile(), request.getInvestmentManagerId(), request.getUserPortraitQueryType()
, request.getIntentAreaQueryType(), request.getLineStartTime(), request.getLineEndTime(), request.getUserChannelQueryType(), request.getSortField(), request.getSortOrder(), (pageNum - 1) * pageSize == 0 ? 0 : (pageNum - 1) * pageSize - 1, pageSize + 2);
Optional<Integer> first = Stream.iterate(0, i -> i + 1).limit(linePageInfoVo.size()).filter(item -> request.getLineId().equals(linePageInfoVo.get(item).getLineId())).findFirst();
if (!first.isPresent()) {
return null;
}
if (PageTurnTypeEnum.NEXT.getText().equals(request.getPageTurn())) {
//下一页
return first.get() +1>linePageInfoVo.size()?null:linePageInfoVo.get(first.get() +1);
}
if (PageTurnTypeEnum.PREVIOUS.getText().equals(request.getPageTurn())) {
//上一页
return first.get() - 1<0?null:linePageInfoVo.get(first.get() - 1);
}
return null;
}
@Override
public LinePageInfoVo publicSeaPageDetailNext(String userId, LineRequest lineRequest) {
lineRequest.setPageNum((int) Math.ceil((double) lineRequest.getPageNum() / lineRequest.getPageSize()));
String intentAreaName = getIntentAreaName(lineRequest.getIntentArea());
Integer pageNum = lineRequest.getPageNum();
Integer pageSize = lineRequest.getPageSize();
List<LinePageInfoVo> linePageInfoVoList = hyPartnerLineInfoDAO.getPublicSeaPageInfoNext(lineRequest.getLineId(), lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(),
intentAreaName, lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null, lineRequest.getCreateStartTime(), lineRequest.getCreateEndTime(),lineRequest.getPageTurn()
, (pageNum - 1) * pageSize == 0 ? 0 : (pageNum - 1) * pageSize - 1, pageSize + 2);
Optional<Integer> first = Stream.iterate(0, i -> i + 1).limit(linePageInfoVoList.size()).filter(item -> lineRequest.getLineId().equals(linePageInfoVoList.get(item).getLineId())).findFirst();
if (!first.isPresent()) {
return null;
}
if (PageTurnTypeEnum.NEXT.getText().equals(lineRequest.getPageTurn())) {
//下一页
return first.get() +1>linePageInfoVoList.size()?null:linePageInfoVoList.get(first.get() +1);
}
if (PageTurnTypeEnum.PREVIOUS.getText().equals(lineRequest.getPageTurn())) {
//上一页
return first.get() - 1<0?null:linePageInfoVoList.get(first.get() - 1);
}
return null;
}
/**
* convertPartnerBlackListDTOToVo
*
* @param partnerBlackListDTO
* @return
*/
public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO){
public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO) {
BlackListVO blackListVO = new BlackListVO();
blackListVO.setId(partnerBlackListDTO.getLineId());
blackListVO.setPartnerId(partnerBlackListDTO.getPartnerId());
@@ -1000,7 +1058,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
blackListVO.setJoinBlackReason(partnerBlackListDTO.getJoinBlackReason());
blackListVO.setCloseUserId(partnerBlackListDTO.getCloseUserId());
String phoneAddress = partnerBlackListDTO.getPhoneAddress();
if (StringUtils.isEmpty(phoneAddress)){
if (StringUtils.isEmpty(phoneAddress)) {
phoneAddress = hyPhoneLocationService.handleHyPhoneAddress(partnerBlackListDTO.getMobile());
}
blackListVO.setPhoneAddress(phoneAddress);
@@ -1010,14 +1068,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
}
/**
* convertPartnerLineInfoAndBaseInfoDTOToVo
*
* @param partnerLineInfoAndBaseInfoDTO
* @return
*/
private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO){
private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO) {
PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = new PartnerLineInfoAndBaseInfoVO();
partnerLineInfoAndBaseInfoVO.setId(partnerLineInfoAndBaseInfoDTO.getId());
partnerLineInfoAndBaseInfoVO.setPartnerUserId(partnerLineInfoAndBaseInfoDTO.getPartnerId());
@@ -1027,7 +1084,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
partnerLineInfoAndBaseInfoVO.setWorkflowStatus(partnerLineInfoAndBaseInfoDTO.getWorkflowStatus());
partnerLineInfoAndBaseInfoVO.setPassCause(partnerLineInfoAndBaseInfoDTO.getPassCause());
String phoneAddress = partnerLineInfoAndBaseInfoDTO.getPhoneAddress();
if (StringUtils.isEmpty(phoneAddress)){
if (StringUtils.isEmpty(phoneAddress)) {
phoneAddress = hyPhoneLocationService.handleHyPhoneAddress(partnerLineInfoAndBaseInfoDTO.getPartnerUserPhone());
}
partnerLineInfoAndBaseInfoVO.setPhoneAddress(phoneAddress);
@@ -1037,29 +1094,30 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
partnerLineInfoAndBaseInfoVO.setPartnerUserName(partnerLineInfoAndBaseInfoDTO.getPartnerUserName());
partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType());
partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea());
partnerLineInfoAndBaseInfoVO.setEcWantShopAreaName(partnerLineInfoAndBaseInfoDTO.getEcWantShopArea());
partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea());
partnerLineInfoAndBaseInfoVO.setDetailedAddress(partnerLineInfoAndBaseInfoDTO.getDetailedAddress());
partnerLineInfoAndBaseInfoVO.setEmail(partnerLineInfoAndBaseInfoDTO.getEmail());
partnerLineInfoAndBaseInfoVO.setIdCard(partnerLineInfoAndBaseInfoDTO.getIdCard());
partnerLineInfoAndBaseInfoVO.setChannelName(partnerLineInfoAndBaseInfoDTO.getChannelName());
partnerLineInfoAndBaseInfoVO.setDevelopmentDirector(partnerLineInfoAndBaseInfoDTO.getDevelopmentDirector());
if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())){
if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())) {
partnerLineInfoAndBaseInfoVO.setPassCertifyFile(JSONObject.parseArray(partnerLineInfoAndBaseInfoDTO.getCertifyFile(), String.class));
}
partnerLineInfoAndBaseInfoVO.setPassUserId(partnerLineInfoAndBaseInfoDTO.getPassUserId());
partnerLineInfoAndBaseInfoVO.setEducation(partnerLineInfoAndBaseInfoDTO.getEducation());
partnerLineInfoAndBaseInfoVO.setPassTime(DateUtil.format(partnerLineInfoAndBaseInfoDTO.getPassTime(),CoolDateUtils.DATE_FORMAT_SEC_2));
partnerLineInfoAndBaseInfoVO.setPassTime(DateUtil.format(partnerLineInfoAndBaseInfoDTO.getPassTime(), CoolDateUtils.DATE_FORMAT_SEC_2));
return partnerLineInfoAndBaseInfoVO;
}
/**
* stageCountDTOToVo
*
* @param stageCountDTO
* @return
*/
private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO){
private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO) {
StageCountVO stageCountVO = new StageCountVO();
stageCountVO.setQualifiedInterviewCount(stageCountDTO.getQualifiedInterviewCount());
stageCountVO.setIntentApplyApproveCount(stageCountDTO.getIntentApplyApproveCount());
@@ -1069,12 +1127,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
/**
* getIntentAreaName
*
* @param intentArea
* @return
*/
private String getIntentAreaName(String intentArea){
private String getIntentAreaName(String intentArea) {
String intentAreaName = null;
if (StringUtils.isNotEmpty(intentArea)){
if (StringUtils.isNotEmpty(intentArea)) {
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(intentArea));
intentAreaName = hyOpenAreaInfoDO.getAreaName();
}

View File

@@ -326,6 +326,13 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
//如果是待面试阶段修改面试时间需要发短信通知
if (interviewInfo.getStatus().equals(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()))) {
HyPartnerBaseInfoDO partnerBaseInfo = hyPartnerBaseInfoMapper.getByPartnerLineId(interviewInfo.getPartnerLineId());
//异步发送短信给加盟商
eventCenterHttpRequest.sendSmsVariable(partnerBaseInfo.getMobile(), SMSMsgEnum.INTERVIEW_APPOINTMENT_PASS,DateUtil.format(DateUtil.parse(interviewInfo.getStartTime()), DatePattern.NORM_DATETIME_MINUTE_PATTERN),wechatMiniAppService.getMiniAppUrl());
}
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName())

View File

@@ -220,6 +220,25 @@ public class DeskController {
return ResponseResult.success(hyPartnerLineInfoService.privateSeaLineList(CurrentUserHolder.getUserId(),privateSeaLineListRequest,Boolean.FALSE));
}
@PostMapping(path = "/getPrivateSeaPageDetailNext")
@ApiOperation("私海列表详情翻页")
public ResponseResult<LinePageInfoVo> getPrivateSeaPageDetailNext(@RequestBody PrivateSeaLineListRequest privateSeaLineListRequest){
return ResponseResult.success(hyPartnerLineInfoService.privateSeaPageDetailNext(CurrentUserHolder.getUserId(),privateSeaLineListRequest,Boolean.FALSE));
}
@PostMapping(path = "/getPrivateAllSeaPageDetailNext")
@ApiOperation("全量私海列表详情翻页")
public ResponseResult<LinePageInfoVo> getPrivateAllSeaPageDetailNext(@RequestBody PrivateSeaLineListRequest privateSeaLineListRequest){
return ResponseResult.success(hyPartnerLineInfoService.privateSeaPageDetailNext(CurrentUserHolder.getUserId(),privateSeaLineListRequest,Boolean.TRUE));
}
@PostMapping(path = "/getPublicSeaPageDetailNext")
@ApiOperation("公海列表详情翻页")
public ResponseResult<LinePageInfoVo> getPublicSeaPageDetailNext(@RequestBody LineRequest LineRequest){
return ResponseResult.success(hyPartnerLineInfoService.publicSeaPageDetailNext(CurrentUserHolder.getUserId(),LineRequest));
}
@PostMapping(path = "/queryAllPrivateSeqLineList")
@ApiOperation("全量私海")