Merge branch 'master' into dev/feat/partner1.5.2_20231121
This commit is contained in:
@@ -17,6 +17,11 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
public enum ErrorCodeEnum {
|
public enum ErrorCodeEnum {
|
||||||
|
|
||||||
|
PARTNER_MOBILE_INCORRECT(418, "请输入正确的手机号", null),
|
||||||
|
PUBLIC_LINE_NOT_FOLLOW(419, "该线索已存在公海,无跟进人", null),
|
||||||
|
LINE_EXIST_FOLLOW(420, "该线索已存在,跟进人为【{0},{1}】", null),
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 000000 未知错误
|
* 000000 未知错误
|
||||||
*/
|
*/
|
||||||
@@ -71,6 +76,7 @@ public enum ErrorCodeEnum {
|
|||||||
INVESTMENT_MANAGER_NOT_EXIST(500016, "当前招商经理不存在", null),
|
INVESTMENT_MANAGER_NOT_EXIST(500016, "当前招商经理不存在", null),
|
||||||
PARTNER_MOBILE_EXIST_0(500017, "手机号码已存在", null),
|
PARTNER_MOBILE_EXIST_0(500017, "手机号码已存在", null),
|
||||||
|
|
||||||
|
|
||||||
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
|
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
|
||||||
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
|
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
|
||||||
INTERVIEW_NOT_EXIST(1021103, "面试信息不存在!", null),
|
INTERVIEW_NOT_EXIST(1021103, "面试信息不存在!", null),
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ public enum FeiShuNoticeMsgEnum {
|
|||||||
ALLOCATION_INVESTMENT_MANAGER("分配招商经理", "有新的线索于 {0} 分配给您,线索信息 {1} 手机号 {2},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
ALLOCATION_INVESTMENT_MANAGER("分配招商经理", "有新的线索于 {0} 分配给您,线索信息 {1} 手机号 {2},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
TRANS_INVESTMENT_MANAGER("转让招商经理", "有新的线索于 {0} 转让给您,线索信息 {1} 手机号 {2},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
TRANS_INVESTMENT_MANAGER("转让招商经理", "有新的线索于 {0} 转让给您,线索信息 {1} 手机号 {2},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
BATCH_TRANS_INVESTMENT_MANAGER("收到新线索", "有{0}条新线索于 {1} 转让给您,请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
BATCH_TRANS_INVESTMENT_MANAGER("收到新线索", "有{0}条新线索于 {1} 转让给您,请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
|
EC_RECEIVE_LINE("收到EC新线索", "有{0}条新线索于EC同步给您,线索信息 {1},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人 {0} 手机号 {1} 于 {2} 提交加盟意向申请,请及时处理", "img_v2_c909097d-67d1-4c11-a911-a2584b67ca6g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人 {0} 手机号 {1} 于 {2} 提交加盟意向申请,请及时处理", "img_v2_c909097d-67d1-4c11-a911-a2584b67ca6g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
FOLLOW_TASK("线索跟进任务", "{0}", "img_v2_1960b7ef-8c4e-4c3d-8b67-3d918a85578g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
FOLLOW_TASK("线索跟进任务", "{0}", "img_v2_1960b7ef-8c4e-4c3d-8b67-3d918a85578g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
INTERVIEW_APPOINTMENT("面试预约申请", "您有一个【面试预约申请】待处理,预约人 {0} 手机号 {1} ,预约面试时间 {2} ","img_v2_107bb06b-2a7a-43e1-a6ae-e5d2f2dae17g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
INTERVIEW_APPOINTMENT("面试预约申请", "您有一个【面试预约申请】待处理,预约人 {0} 手机号 {1} ,预约面试时间 {2} ","img_v2_107bb06b-2a7a-43e1-a6ae-e5d2f2dae17g", "1567d83b966f2d312fd7fcd2e72dbce9"),
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import static com.cool.store.enums.OperateLogFieldValueEnum.*;
|
|||||||
*/
|
*/
|
||||||
public enum OperateTypeEnum {
|
public enum OperateTypeEnum {
|
||||||
|
|
||||||
|
EC_SYNC_ADD_LINE("ec_sync_add_line", "ec同步新增线索", Arrays.asList(MOBILE,OPERATE_TIME, OPERATE_USER_ID, OPERATE_USER_NAME)),
|
||||||
|
ADD_LINE("add_line", "新增线索", Arrays.asList(MOBILE,OPERATE_TIME, OPERATE_USER_ID, OPERATE_USER_NAME)),
|
||||||
ALLOCATION_INVESTMENT_MANAGER("allocation_investment_manager", "分配招商经理", Arrays.asList(ALLOCATION_USERID,ALLOCATION_USERNAME, MOBILE, OPERATE_TIME)),
|
ALLOCATION_INVESTMENT_MANAGER("allocation_investment_manager", "分配招商经理", Arrays.asList(ALLOCATION_USERID,ALLOCATION_USERNAME, MOBILE, OPERATE_TIME)),
|
||||||
ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
|
ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
|
||||||
REMOVE_BLACKLIST("remove_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
|
REMOVE_BLACKLIST("remove_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
|
||||||
|
|||||||
@@ -0,0 +1,130 @@
|
|||||||
|
package com.cool.store.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hxd
|
||||||
|
*/
|
||||||
|
|
||||||
|
public enum TrajectoryTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系轨迹类型*
|
||||||
|
*/
|
||||||
|
SEND_NOTE(1001, "发送短信",""),
|
||||||
|
DIAL_MOBILE(1002, "拨打对方电话",""),
|
||||||
|
WEBSITE_CUSTOMER_MOBILE(1003, "网站客服会话",""),
|
||||||
|
EC_SESSION(1004, "EC会话",""),
|
||||||
|
QQ_SESSION(1005, "QQ会话",""),
|
||||||
|
SEND_EMAIL(1006, "发送邮件",""),
|
||||||
|
ANSWER_MOBILE(1007, "接听对方电话",""),
|
||||||
|
ANSWER_EMAIL(1008, "接收邮件",""),
|
||||||
|
CALL_MEETING(1009, "电话会议",""),
|
||||||
|
DIAL_CLOUD_MOBILE(1010, "拨打云总机电话",""),
|
||||||
|
ANSWER_CLOUD_MOBILE(1011, "接听云总机电话",""),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提醒类
|
||||||
|
*/
|
||||||
|
REGULARLY_REMIND(2001, "定时提醒",""),
|
||||||
|
REMINDER_SALES_PROGRAM(2002, "提醒销售计划",""),
|
||||||
|
CALENDAR_REMINDER(2003, "日历提醒",""),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文本类型
|
||||||
|
*/
|
||||||
|
ADD_CUSTOMER(3001, "新增客户",""),
|
||||||
|
ADD_CUSTOMER_DATA(3002, "新增客户资料",""),
|
||||||
|
UPDATE_CUSTOMER_DATA(3003, "更新客户资料",""),
|
||||||
|
UPDATE_CUSTOMER_LABEL(3004, "更新客户标签",""),
|
||||||
|
RELEVANCE_EC(3005, "关联EC",""),
|
||||||
|
CANCEL_RELEVANCE_EC(3006, "取消EC关联",""),
|
||||||
|
RELEVANCE_QQ(3007, "关联QQ",""),
|
||||||
|
CANCEL_RELEVANCE_QQ(3008, "取消QQ关联",""),
|
||||||
|
TRANSFER_CUSTOMER(3009, "转让客户","将此客户转换了给"),
|
||||||
|
MERGE_CUSTOMER(3010, "合并客户",""),
|
||||||
|
ALLOCATION_CUSTOMER(3011, "分配客户","分配此客户给"),
|
||||||
|
GET_CUSTOMER(3012, "领取客户","领取了此客户"),
|
||||||
|
ABANDON_CUSTOMER(3013, "放弃客户",""),
|
||||||
|
ADD_MARKER_PLAN(3014, "添加销售计划",""),
|
||||||
|
UPDATE_MARKER_PLAN(3015, "修改销售计划",""),
|
||||||
|
USE_MARKER_TEMPLATE(3016, "使用销售模板",""),
|
||||||
|
UPDATE_CUSTOMER_STAGE(3017, "更新客户阶段",""),
|
||||||
|
RELEVANCE_COMPANY(3018, "关联公司",""),
|
||||||
|
CANCEL_RELEVANCE_COMPANY(3019, "取消公司关联",""),
|
||||||
|
UPLOAD_PHOTO_AVATAR(3020, "上传头像",""),
|
||||||
|
ADD_SHARE_COLLEAGUE(3021, "新增共享同事",""),
|
||||||
|
CANCEL_SHARE_COLLEAGUE(3022, "取消共享同事",""),
|
||||||
|
CANCEL_RELEVANCE(3023, "退出共享关系",""),
|
||||||
|
TRANSFER_COMPANY_IMPORT(3024, "转为公司导入",""),
|
||||||
|
ADD_CONTACT_DATA(3036, "新增联系人资料",""),
|
||||||
|
UPDATE_CONTACT_DATA(3037, "更新联系人资料",""),
|
||||||
|
ADD_CONTACT(3038, "新增联系人",""),
|
||||||
|
DELETE_CONTACT(3039, "删除联系人",""),
|
||||||
|
DELETE_ORDERS(3040, "删除订单",""),
|
||||||
|
DELETE_CUSTOMER(3041, "删除客户",""),
|
||||||
|
TRANSFER_CUSTOMER_TYPE(3042, "转换客户类型",""),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进记录类
|
||||||
|
*/
|
||||||
|
ADD_FOLLOW_RECORD(4000, "添加跟进记录",""),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信类
|
||||||
|
*/
|
||||||
|
WECHAT_ACTIVITY(6000, "微信活动",""),
|
||||||
|
/**
|
||||||
|
* 拜访客户类
|
||||||
|
*/
|
||||||
|
VISITING_CLIENTS(7000, "拜访客户类","");
|
||||||
|
|
||||||
|
|
||||||
|
private final Integer value;
|
||||||
|
private final String showText;
|
||||||
|
private final String jointText;
|
||||||
|
|
||||||
|
TrajectoryTypeEnum(Integer value, String showText,String jointText) {
|
||||||
|
this.value = value;
|
||||||
|
this.showText = showText;
|
||||||
|
this.jointText = jointText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShowText() {
|
||||||
|
return showText;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getJointText() {
|
||||||
|
return jointText;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getShowText(Integer value) {
|
||||||
|
for (TrajectoryTypeEnum trajectoryTypeEnum : TrajectoryTypeEnum.values()) {
|
||||||
|
if (trajectoryTypeEnum.getValue().equals(value)) {
|
||||||
|
return trajectoryTypeEnum.getShowText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getJointText(Integer value) {
|
||||||
|
for (TrajectoryTypeEnum trajectoryTypeEnum : TrajectoryTypeEnum.values()) {
|
||||||
|
if (trajectoryTypeEnum.getValue().equals(value)) {
|
||||||
|
return trajectoryTypeEnum.getJointText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -147,7 +147,7 @@ public class EnterpriseUserDAO {
|
|||||||
return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), Function.identity()));
|
return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), Function.identity()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String selectByMobile(String mobile) {
|
public EnterpriseUserDO selectByMobile(String mobile) {
|
||||||
return enterpriseUserMapper.selectByMobile(mobile);
|
return enterpriseUserMapper.selectByMobile(mobile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.cool.store.dao;
|
package com.cool.store.dao;
|
||||||
|
|
||||||
|
import com.cool.store.dto.partner.MobileCheckDTO;
|
||||||
import com.cool.store.entity.HyPartnerUserInfoDO;
|
import com.cool.store.entity.HyPartnerUserInfoDO;
|
||||||
import com.cool.store.mapper.HyPartnerUserInfoMapper;
|
import com.cool.store.mapper.HyPartnerUserInfoMapper;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@@ -83,4 +84,14 @@ public class HyPartnerUserInfoDAO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String selectLastCrmCreateTime() {
|
||||||
|
return hyPartnerUserInfoMapper.selectLastCrmCreateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MobileCheckDTO selectByCheckMobile(String mobile) {
|
||||||
|
if (StringUtils.isEmpty(mobile)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return hyPartnerUserInfoMapper.selectByCheckMobile(mobile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public interface EnterpriseUserMapper {
|
|||||||
*/
|
*/
|
||||||
List<EnterpriseUserDO> getUserListByRegionIds(@Param("regionIds") List<String> regionIds);
|
List<EnterpriseUserDO> getUserListByRegionIds(@Param("regionIds") List<String> regionIds);
|
||||||
|
|
||||||
String selectByMobile(@Param("mobile") String mobile);
|
EnterpriseUserDO selectByMobile(@Param("mobile") String mobile);
|
||||||
|
|
||||||
EnterpriseUserDO selectByInvestmentManager(@Param("investmentManager") String investmentManager);
|
EnterpriseUserDO selectByInvestmentManager(@Param("investmentManager") String investmentManager);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.cool.store.mapper;
|
||||||
|
|
||||||
|
import com.cool.store.entity.HyPartnerEcTrackLogDO;
|
||||||
|
import com.github.pagehelper.Page;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hxd
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface HyPartnerEcTrackLogMapper {
|
||||||
|
|
||||||
|
int deleteByPrimaryKey(Long id);
|
||||||
|
|
||||||
|
int insert(HyPartnerEcTrackLogDO record);
|
||||||
|
|
||||||
|
int insertSelective(HyPartnerEcTrackLogDO record);
|
||||||
|
|
||||||
|
HyPartnerEcTrackLogDO selectByPrimaryKey(Long id);
|
||||||
|
|
||||||
|
int updateByPrimaryKeySelective(HyPartnerEcTrackLogDO record);
|
||||||
|
|
||||||
|
int updateByPrimaryKey(HyPartnerEcTrackLogDO record);
|
||||||
|
|
||||||
|
int batchInsertOrUpdate(@Param("recordList") HyPartnerEcTrackLogDO resultTrajectoryList);
|
||||||
|
|
||||||
|
Page<HyPartnerEcTrackLogDO> getEcLogPageByPartnerId(@Param("partnerId") String partnerId);
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.cool.store.mapper;
|
package com.cool.store.mapper;
|
||||||
|
|
||||||
|
import com.cool.store.dto.partner.MobileCheckDTO;
|
||||||
import com.cool.store.entity.HyPartnerUserInfoDO;
|
import com.cool.store.entity.HyPartnerUserInfoDO;
|
||||||
import com.cool.store.entity.SyncEcCustomerDO;
|
import com.cool.store.entity.SyncEcCustomerDO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@@ -49,4 +50,8 @@ public interface HyPartnerUserInfoMapper {
|
|||||||
int selectByHourDateCount(@Param("selectTime") String hourDayDate, @Param("now") String now);
|
int selectByHourDateCount(@Param("selectTime") String hourDayDate, @Param("now") String now);
|
||||||
|
|
||||||
int updateByPartnerId(@Param("record") HyPartnerUserInfoDO record);
|
int updateByPartnerId(@Param("record") HyPartnerUserInfoDO record);
|
||||||
|
|
||||||
|
String selectLastCrmCreateTime();
|
||||||
|
|
||||||
|
MobileCheckDTO selectByCheckMobile(@Param("mobile") String mobile);
|
||||||
}
|
}
|
||||||
@@ -332,13 +332,13 @@
|
|||||||
SUBSTR(jobnumber,1,1),
|
SUBSTR(jobnumber,1,1),
|
||||||
CAST(SUBSTR(jobnumber,2) AS UNSIGNED) ASC
|
CAST(SUBSTR(jobnumber,2) AS UNSIGNED) ASC
|
||||||
</select>
|
</select>
|
||||||
<select id="selectByMobile" resultType="java.lang.String">
|
<select id="selectByMobile" resultMap="BaseResultMap">
|
||||||
SELECT user_id FROM enterprise_user WHERE mobile =#{mobile} LIMIT 1
|
SELECT <include refid="Base_Column_List"/> FROM enterprise_user WHERE mobile =#{mobile} and deleted=0 LIMIT 1
|
||||||
</select>
|
</select>
|
||||||
<select id="selectByInvestmentManager" resultMap="BaseResultMap">
|
<select id="selectByInvestmentManager" resultMap="BaseResultMap">
|
||||||
SELECT
|
SELECT
|
||||||
<include refid="Base_Column_List"/>
|
<include refid="Base_Column_List"/>
|
||||||
FROM enterprise_user WHERE mobile like #{investmentManager} or `name` like #{investmentManager} LIMIT 1
|
FROM enterprise_user WHERE ( mobile = #{investmentManager} or `name` = #{investmentManager} ) and deleted=0 LIMIT 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getFeishuUserIdsByUserIds" resultMap="BaseResultMap">
|
<select id="getFeishuUserIdsByUserIds" resultMap="BaseResultMap">
|
||||||
|
|||||||
@@ -0,0 +1,345 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.cool.store.mapper.HyPartnerEcTrackLogMapper">
|
||||||
|
<resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerEcTrackLogDO">
|
||||||
|
<id column="id" jdbcType="BIGINT" property="id" />
|
||||||
|
<result column="trajectory_id" jdbcType="VARCHAR" property="trajectoryId" />
|
||||||
|
<result column="user_id" jdbcType="VARCHAR" property="userId" />
|
||||||
|
<result column="user_name" jdbcType="VARCHAR" property="userName" />
|
||||||
|
<result column="crm_id" jdbcType="VARCHAR" property="crmId" />
|
||||||
|
<result column="partner_id" jdbcType="VARCHAR" property="partnerId" />
|
||||||
|
<result column="mobile" jdbcType="VARCHAR" property="mobile" />
|
||||||
|
<result column="receive_user_ids" jdbcType="VARCHAR" property="receiveUserIds" />
|
||||||
|
<result column="receive_user" jdbcType="VARCHAR" property="receiveUser" />
|
||||||
|
<result column="trajectory_type" jdbcType="INTEGER" property="trajectoryType" />
|
||||||
|
<result column="trajectory_type_content" jdbcType="VARCHAR" property="trajectoryTypeContent" />
|
||||||
|
<result column="content" jdbcType="VARCHAR" property="content" />
|
||||||
|
<result column="operate_time" jdbcType="TIMESTAMP" property="operateTime" />
|
||||||
|
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||||
|
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||||
|
<result column="remark" jdbcType="VARCHAR" property="remark" />
|
||||||
|
</resultMap>
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id, trajectory_id, user_id, user_name, crm_id,mobile, receive_user_ids, receive_user, trajectory_type,partner_id,
|
||||||
|
trajectory_type_content, content, operate_time, create_time, update_time, remark
|
||||||
|
</sql>
|
||||||
|
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
|
||||||
|
select
|
||||||
|
<include refid="Base_Column_List" />
|
||||||
|
from hy_partner_ec_track_log
|
||||||
|
where id = #{id,jdbcType=BIGINT}
|
||||||
|
</select>
|
||||||
|
<select id="getEcLogPageByPartnerId" resultMap="BaseResultMap">
|
||||||
|
select
|
||||||
|
<include refid="Base_Column_List" />
|
||||||
|
from hy_partner_ec_track_log
|
||||||
|
where partner_id = #{partnerId} order by operate_time desc
|
||||||
|
</select>
|
||||||
|
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
|
||||||
|
delete from hy_partner_ec_track_log
|
||||||
|
where id = #{id,jdbcType=BIGINT}
|
||||||
|
</delete>
|
||||||
|
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.cool.store.entity.HyPartnerEcTrackLogDO" useGeneratedKeys="true">
|
||||||
|
insert into hy_partner_ec_track_log (trajectory_id, user_id, user_name, mobile,
|
||||||
|
crm_id,partner_id, receive_user_ids, receive_user,
|
||||||
|
trajectory_type, trajectory_type_content,
|
||||||
|
content, operate_time, create_time,
|
||||||
|
update_time, remark)
|
||||||
|
values (#{trajectoryId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR},
|
||||||
|
#{crmId,jdbcType=VARCHAR},#{partnerId,jdbcType=VARCHAR}, #{receiveUserIds,jdbcType=VARCHAR}, #{receiveUser,jdbcType=VARCHAR},
|
||||||
|
#{trajectoryType,jdbcType=INTEGER}, #{trajectoryTypeContent,jdbcType=VARCHAR},
|
||||||
|
#{content,jdbcType=VARCHAR}, #{operateTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP},
|
||||||
|
#{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR})
|
||||||
|
</insert>
|
||||||
|
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.cool.store.entity.HyPartnerEcTrackLogDO" useGeneratedKeys="true">
|
||||||
|
insert into hy_partner_ec_track_log
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="trajectoryId != null">
|
||||||
|
trajectory_id,
|
||||||
|
</if>
|
||||||
|
<if test="userId != null">
|
||||||
|
user_id,
|
||||||
|
</if>
|
||||||
|
<if test="userName != null">
|
||||||
|
user_name,
|
||||||
|
</if>
|
||||||
|
<if test="mobile != null">
|
||||||
|
mobile,
|
||||||
|
</if>
|
||||||
|
<if test="crmId != null">
|
||||||
|
crm_id,
|
||||||
|
</if>
|
||||||
|
<if test="partnerId != null">
|
||||||
|
partner_id,
|
||||||
|
</if>
|
||||||
|
<if test="receiveUserIds != null">
|
||||||
|
receive_user_ids,
|
||||||
|
</if>
|
||||||
|
<if test="receiveUser != null">
|
||||||
|
receive_user,
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryType != null">
|
||||||
|
trajectory_type,
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryTypeContent != null">
|
||||||
|
trajectory_type_content,
|
||||||
|
</if>
|
||||||
|
<if test="content != null">
|
||||||
|
content,
|
||||||
|
</if>
|
||||||
|
<if test="operateTime != null">
|
||||||
|
operate_time,
|
||||||
|
</if>
|
||||||
|
<if test="createTime != null">
|
||||||
|
create_time,
|
||||||
|
</if>
|
||||||
|
<if test="updateTime != null">
|
||||||
|
update_time,
|
||||||
|
</if>
|
||||||
|
<if test="remark != null">
|
||||||
|
remark,
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="trajectoryId != null">
|
||||||
|
#{trajectoryId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="userId != null">
|
||||||
|
#{userId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="userName != null">
|
||||||
|
#{userName,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="mobile != null">
|
||||||
|
#{mobile,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="crmId != null">
|
||||||
|
#{crmId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="partnerId != null">
|
||||||
|
#{partnerId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="receiveUserIds != null">
|
||||||
|
#{receiveUserIds,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="receiveUser != null">
|
||||||
|
#{receiveUser,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryType != null">
|
||||||
|
#{trajectoryType,jdbcType=INTEGER},
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryTypeContent != null">
|
||||||
|
#{trajectoryTypeContent,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="content != null">
|
||||||
|
#{content,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="operateTime != null">
|
||||||
|
#{operateTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="createTime != null">
|
||||||
|
#{createTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="updateTime != null">
|
||||||
|
#{updateTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="remark != null">
|
||||||
|
#{remark,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
ON DUPLICATE KEY UPDATE trajectory_id=values(trajectory_id)
|
||||||
|
,user_id=values(user_id)
|
||||||
|
,user_name=values(user_name)
|
||||||
|
,crm_id=values(crm_id)
|
||||||
|
,partner_id=values(partner_id)
|
||||||
|
,mobile=values(mobile)
|
||||||
|
,receive_user_ids=values(receive_user_ids)
|
||||||
|
,receive_user=values(receive_user)
|
||||||
|
,trajectory_type=values(trajectory_type)
|
||||||
|
,trajectory_type_content=values(trajectory_type_content)
|
||||||
|
,content=values(content)
|
||||||
|
,operate_time=values(operate_time)
|
||||||
|
,create_time=values(create_time)
|
||||||
|
,remark=values(remark)
|
||||||
|
</insert>
|
||||||
|
<insert id="batchInsertOrUpdate">
|
||||||
|
<foreach collection="recordList" item="record" separator=";">
|
||||||
|
insert into hy_partner_ec_track_log
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="trajectoryId != null">
|
||||||
|
trajectory_id,
|
||||||
|
</if>
|
||||||
|
<if test="userId != null">
|
||||||
|
user_id,
|
||||||
|
</if>
|
||||||
|
<if test="userName != null">
|
||||||
|
user_name,
|
||||||
|
</if>
|
||||||
|
<if test="mobile != null">
|
||||||
|
mobile,
|
||||||
|
</if>
|
||||||
|
<if test="crmId != null">
|
||||||
|
crm_id,
|
||||||
|
</if>
|
||||||
|
<if test="partnerId != null">
|
||||||
|
partner_id,
|
||||||
|
</if>
|
||||||
|
<if test="receiveUserIds != null">
|
||||||
|
receive_user_ids,
|
||||||
|
</if>
|
||||||
|
<if test="receiveUser != null">
|
||||||
|
receive_user,
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryType != null">
|
||||||
|
trajectory_type,
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryTypeContent != null">
|
||||||
|
trajectory_type_content,
|
||||||
|
</if>
|
||||||
|
<if test="content != null">
|
||||||
|
content,
|
||||||
|
</if>
|
||||||
|
<if test="operateTime != null">
|
||||||
|
operate_time,
|
||||||
|
</if>
|
||||||
|
<if test="createTime != null">
|
||||||
|
create_time,
|
||||||
|
</if>
|
||||||
|
<if test="updateTime != null">
|
||||||
|
update_time,
|
||||||
|
</if>
|
||||||
|
<if test="remark != null">
|
||||||
|
remark,
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="record.trajectoryId != null">
|
||||||
|
#{record.trajectoryId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.userId != null">
|
||||||
|
#{record.userId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.userName != null">
|
||||||
|
#{record.userName,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.mobile != null">
|
||||||
|
#{record.mobile,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.crmId != null">
|
||||||
|
#{record.crmId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.partnerId != null">
|
||||||
|
#{record.partnerId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.receiveUserIds != null">
|
||||||
|
#{record.receiveUserIds,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.receiveUser != null">
|
||||||
|
#{record.receiveUser,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.trajectoryType != null">
|
||||||
|
#{record.trajectoryType,jdbcType=INTEGER},
|
||||||
|
</if>
|
||||||
|
<if test="record.trajectoryTypeContent != null">
|
||||||
|
#{record.trajectoryTypeContent,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.content != null">
|
||||||
|
#{record.content,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.operateTime != null">
|
||||||
|
#{record.operateTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="record.createTime != null">
|
||||||
|
#{record.createTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="record.remark != null">
|
||||||
|
#{record.remark,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
ON DUPLICATE KEY UPDATE trajectory_id=values(trajectory_id)
|
||||||
|
,user_id=values(user_id)
|
||||||
|
,user_name=values(user_name)
|
||||||
|
,crm_id=values(crm_id)
|
||||||
|
,partner_id=values(partner_id)
|
||||||
|
,mobile=values(mobile)
|
||||||
|
,receive_user_ids=values(receive_user_ids)
|
||||||
|
,receive_user=values(receive_user)
|
||||||
|
,trajectory_type=values(trajectory_type)
|
||||||
|
,trajectory_type_content=values(trajectory_type_content)
|
||||||
|
,content=values(content)
|
||||||
|
,operate_time=values(operate_time)
|
||||||
|
,create_time=values(create_time)
|
||||||
|
,remark=values(remark)
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
<update id="updateByPrimaryKeySelective" parameterType="com.cool.store.entity.HyPartnerEcTrackLogDO">
|
||||||
|
update hy_partner_ec_track_log
|
||||||
|
<set>
|
||||||
|
<if test="trajectoryId != null">
|
||||||
|
trajectory_id = #{trajectoryId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="userId != null">
|
||||||
|
user_id = #{userId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="mobile != null">
|
||||||
|
mobile = #{mobile,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="userName != null">
|
||||||
|
user_name = #{userName,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="crmId != null">
|
||||||
|
crm_id = #{crmId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="partnerId != null">
|
||||||
|
partner_id = #{partnerId,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="receiveUserIds != null">
|
||||||
|
receive_user_ids = #{receiveUserIds,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="receiveUser != null">
|
||||||
|
receive_user = #{receiveUser,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryType != null">
|
||||||
|
trajectory_type = #{trajectoryType,jdbcType=INTEGER},
|
||||||
|
</if>
|
||||||
|
<if test="trajectoryTypeContent != null">
|
||||||
|
trajectory_type_content = #{trajectoryTypeContent,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="content != null">
|
||||||
|
content = #{content,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="operateTime != null">
|
||||||
|
operate_time = #{operateTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="createTime != null">
|
||||||
|
create_time = #{createTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="updateTime != null">
|
||||||
|
update_time = #{updateTime,jdbcType=TIMESTAMP},
|
||||||
|
</if>
|
||||||
|
<if test="remark != null">
|
||||||
|
remark = #{remark,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
</set>
|
||||||
|
where id = #{id,jdbcType=BIGINT}
|
||||||
|
</update>
|
||||||
|
<update id="updateByPrimaryKey" parameterType="com.cool.store.entity.HyPartnerEcTrackLogDO">
|
||||||
|
update hy_partner_ec_track_log
|
||||||
|
set trajectory_id = #{trajectoryId,jdbcType=VARCHAR},
|
||||||
|
user_id = #{userId,jdbcType=VARCHAR},
|
||||||
|
user_name = #{userName,jdbcType=VARCHAR},
|
||||||
|
crm_id = #{crmId,jdbcType=VARCHAR},
|
||||||
|
partner_id = #{partnerId,jdbcType=VARCHAR},
|
||||||
|
mobile = #{mobile,jdbcType=VARCHAR},
|
||||||
|
receive_user_ids = #{receiveUserIds,jdbcType=VARCHAR},
|
||||||
|
receive_user = #{receiveUser,jdbcType=VARCHAR},
|
||||||
|
trajectory_type = #{trajectoryType,jdbcType=INTEGER},
|
||||||
|
trajectory_type_content = #{trajectoryTypeContent,jdbcType=VARCHAR},
|
||||||
|
content = #{content,jdbcType=VARCHAR},
|
||||||
|
operate_time = #{operateTime,jdbcType=TIMESTAMP},
|
||||||
|
create_time = #{createTime,jdbcType=TIMESTAMP},
|
||||||
|
update_time = #{updateTime,jdbcType=TIMESTAMP},
|
||||||
|
remark = #{remark,jdbcType=VARCHAR}
|
||||||
|
where id = #{id,jdbcType=BIGINT}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
<result column="recommend_partner_name" jdbcType="VARCHAR" property="recommendPartnerName" />
|
<result column="recommend_partner_name" jdbcType="VARCHAR" property="recommendPartnerName" />
|
||||||
<result column="recommend_partner_mobile" jdbcType="VARCHAR" property="recommendPartnerMobile" />
|
<result column="recommend_partner_mobile" jdbcType="VARCHAR" property="recommendPartnerMobile" />
|
||||||
<result column="user_channel_id" jdbcType="BIGINT" property="userChannelId" />
|
<result column="user_channel_id" jdbcType="BIGINT" property="userChannelId" />
|
||||||
|
<result column="crm_create_time" jdbcType="TIMESTAMP" property="crmCreateTime" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id, partner_id, mobile, username, live_area, want_shop_area, accept_adjust_type,
|
id, partner_id, mobile, username, live_area, want_shop_area, accept_adjust_type,
|
||||||
@@ -111,6 +112,12 @@
|
|||||||
WHERE (b.update_time BETWEEN #{selectTime} and #{now} or
|
WHERE (b.update_time BETWEEN #{selectTime} and #{now} or
|
||||||
a.update_time BETWEEN #{selectTime} and #{now} ) and b.partner_id is not null
|
a.update_time BETWEEN #{selectTime} and #{now} ) and b.partner_id is not null
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectLastCrmCreateTime" resultType="java.lang.String">
|
||||||
|
SELECT crm_create_time as crmCreateTime FROM hy_partner_user_info ORDER BY crm_create_time desc limit 1
|
||||||
|
</select>
|
||||||
|
<select id="selectByCheckMobile" resultType="com.cool.store.dto.partner.MobileCheckDTO">
|
||||||
|
select a.partner_id as partnerId,a.mobile,line_status as lineStatus ,c.`name`as investmentManager,c.mobile as investmentManagerMobile FROM hy_partner_user_info a left join hy_partner_line_info b on a.partner_id=b.partner_id and b.deleted=0 left join enterprise_user c on b.investment_manager=c.user_id and c.deleted=0 WHERE a.mobile=#{mobile}
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
|
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
|
||||||
insert into hy_partner_user_info
|
insert into hy_partner_user_info
|
||||||
@@ -169,6 +176,9 @@
|
|||||||
<if test="record.ecWantShopArea!=null">
|
<if test="record.ecWantShopArea!=null">
|
||||||
ec_want_shop_area,
|
ec_want_shop_area,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="record.crmCreateTime!=null">
|
||||||
|
crm_create_time,
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="record.partnerId != null">
|
<if test="record.partnerId != null">
|
||||||
@@ -225,6 +235,9 @@
|
|||||||
<if test="record.ecWantShopArea != null">
|
<if test="record.ecWantShopArea != null">
|
||||||
#{record.ecWantShopArea},
|
#{record.ecWantShopArea},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="record.crmCreateTime != null">
|
||||||
|
#{record.crmCreateTime},
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<update id="updateByPrimaryKeySelective">
|
<update id="updateByPrimaryKeySelective">
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.cool.store.dto.partner;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hxd
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class MobileCheckDTO {
|
||||||
|
|
||||||
|
private String partnerId;
|
||||||
|
private String mobile;
|
||||||
|
private Integer lineStatus;
|
||||||
|
private String investmentManager;
|
||||||
|
|
||||||
|
private String investmentManagerMobile;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
package com.cool.store.entity;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.cool.store.enums.TrajectoryTypeEnum;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hy_partner_ec_track_log
|
||||||
|
* @author
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class HyPartnerEcTrackLogDO implements Serializable {
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进ID
|
||||||
|
*/
|
||||||
|
private String trajectoryId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人id
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人姓名
|
||||||
|
*/
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户id
|
||||||
|
*/
|
||||||
|
private String crmId;
|
||||||
|
|
||||||
|
private String partnerId;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户手机号
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接收人id
|
||||||
|
*/
|
||||||
|
private String receiveUserIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接收人姓名
|
||||||
|
*/
|
||||||
|
private String receiveUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进类型
|
||||||
|
*/
|
||||||
|
private Integer trajectoryType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进类型名称
|
||||||
|
*/
|
||||||
|
private String trajectoryTypeContent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轨迹内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轨迹内容(拼接)
|
||||||
|
*/
|
||||||
|
private String detailContent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy.MM.dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date operateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy.MM.dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy.MM.dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取拼接好的内容
|
||||||
|
* @param ecLogVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getDetailContentJoint(HyPartnerEcTrackLogDO ecLogVo){
|
||||||
|
if (StringUtils.isNotEmpty(ecLogVo.getContent())) {
|
||||||
|
String str = ecLogVo.getContent();
|
||||||
|
if (str.contains("[mobile]")||str.contains("[/mobile]")) {
|
||||||
|
str = str.replaceAll("\\[mobile]", "").replaceAll("\\[/mobile]", "");
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
StringBuilder detailContent = new StringBuilder();
|
||||||
|
Integer trajectoryType = ecLogVo.getTrajectoryType();
|
||||||
|
if (trajectoryType.equals(TrajectoryTypeEnum.TRANSFER_CUSTOMER.getValue())) {
|
||||||
|
detailContent.append(TrajectoryTypeEnum.TRANSFER_CUSTOMER.getJointText()).append(ecLogVo.getReceiveUser());
|
||||||
|
}
|
||||||
|
if (trajectoryType.equals(TrajectoryTypeEnum.ALLOCATION_CUSTOMER.getValue())) {
|
||||||
|
detailContent.append(TrajectoryTypeEnum.ALLOCATION_CUSTOMER.getJointText()).append(ecLogVo.getReceiveUser());
|
||||||
|
}
|
||||||
|
if (trajectoryType.equals(TrajectoryTypeEnum.GET_CUSTOMER.getValue())) {
|
||||||
|
detailContent.append(ecLogVo.getUserName()).append(TrajectoryTypeEnum.GET_CUSTOMER.getJointText());
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(detailContent)) {
|
||||||
|
detailContent.append(TrajectoryTypeEnum.getShowText(trajectoryType));
|
||||||
|
}
|
||||||
|
return detailContent.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
||||||
@@ -80,4 +80,7 @@ public class HyPartnerUserInfoDO implements Serializable {
|
|||||||
@ApiModelProperty("ec意向区域")
|
@ApiModelProperty("ec意向区域")
|
||||||
private String ecWantShopArea;
|
private String ecWantShopArea;
|
||||||
|
|
||||||
|
@ApiModelProperty("ec创建时间")
|
||||||
|
private Date crmCreateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,8 @@ package com.cool.store.request;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hxd
|
* @author hxd
|
||||||
* @since 2023/2/28
|
* @since 2023/2/28
|
||||||
@@ -25,5 +27,12 @@ public class CustomerInfoRequest {
|
|||||||
private String followUserName;
|
private String followUserName;
|
||||||
|
|
||||||
|
|
||||||
|
private String labelIds;
|
||||||
|
|
||||||
private String ecWantShopArea;
|
private String ecWantShopArea;
|
||||||
|
|
||||||
|
|
||||||
|
private String crmCreateTime;
|
||||||
|
|
||||||
|
private Date updateTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.cool.store.service;
|
package com.cool.store.service;
|
||||||
|
|
||||||
|
import com.cool.store.entity.HyPartnerEcTrackLogDO;
|
||||||
import com.cool.store.request.CustomerInfoRequest;
|
import com.cool.store.request.CustomerInfoRequest;
|
||||||
import com.cool.store.request.GetTagRequest;
|
import com.cool.store.request.GetTagRequest;
|
||||||
|
|
||||||
@@ -12,4 +13,10 @@ public interface EcSyncService {
|
|||||||
|
|
||||||
Boolean labelInfo(List<GetTagRequest> getTagRequestList);
|
Boolean labelInfo(List<GetTagRequest> getTagRequestList);
|
||||||
|
|
||||||
|
String getLastCrmCreateTime();
|
||||||
|
|
||||||
|
Boolean historyLine(List<CustomerInfoRequest> resultCustomerInfoList);
|
||||||
|
|
||||||
|
Integer historyLineTrajectory(List<HyPartnerEcTrackLogDO> resultTrajectoryList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.cool.store.service;
|
package com.cool.store.service;
|
||||||
|
|
||||||
import com.cool.store.context.LoginUserInfo;
|
import com.cool.store.context.LoginUserInfo;
|
||||||
|
import com.cool.store.entity.HyPartnerEcTrackLogDO;
|
||||||
import com.cool.store.exception.ApiException;
|
import com.cool.store.exception.ApiException;
|
||||||
import com.cool.store.request.follow.AddFollowLogRequest;
|
import com.cool.store.request.follow.AddFollowLogRequest;
|
||||||
import com.cool.store.request.follow.AddFollowTaskRequest;
|
import com.cool.store.request.follow.AddFollowTaskRequest;
|
||||||
@@ -89,4 +90,7 @@ public interface FollowTaskService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void followTaskDailyRemind() throws ApiException;
|
void followTaskDailyRemind() throws ApiException;
|
||||||
|
|
||||||
|
|
||||||
|
PageInfo<HyPartnerEcTrackLogDO> getEcFollowLogPage(Integer pageNum, Integer pageSize, String partnerId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,4 +9,6 @@ public interface LineHighSeasService {
|
|||||||
Boolean addLine(AddLineRequest request);
|
Boolean addLine(AddLineRequest request);
|
||||||
|
|
||||||
ResponseResult importLine(MultipartFile file);
|
ResponseResult importLine(MultipartFile file);
|
||||||
|
|
||||||
|
ResponseResult addCheckout(String mobile);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
package com.cool.store.service.impl;
|
package com.cool.store.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.cool.store.dao.EnterpriseUserDAO;
|
import com.cool.store.constants.CommonConstants;
|
||||||
import com.cool.store.dao.HyPartnerBaseInfoDAO;
|
import com.cool.store.constants.MessageConstants;
|
||||||
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
import com.cool.store.dao.*;
|
||||||
import com.cool.store.dao.HyPartnerUserInfoDAO;
|
import com.cool.store.dto.log.BlackListLogDTO;
|
||||||
|
import com.cool.store.dto.log.LineLogInfo;
|
||||||
import com.cool.store.dto.partner.LineCountDTO;
|
import com.cool.store.dto.partner.LineCountDTO;
|
||||||
import com.cool.store.entity.*;
|
import com.cool.store.entity.*;
|
||||||
import com.cool.store.enums.LineStatusEnum;
|
import com.cool.store.enums.*;
|
||||||
import com.cool.store.enums.WorkflowStageEnum;
|
|
||||||
import com.cool.store.enums.WorkflowStatusEnum;
|
|
||||||
import com.cool.store.exception.ApiException;
|
import com.cool.store.exception.ApiException;
|
||||||
|
import com.cool.store.http.EventCenterHttpRequest;
|
||||||
import com.cool.store.http.UserSourceResponse;
|
import com.cool.store.http.UserSourceResponse;
|
||||||
import com.cool.store.mapper.HyPartnerLabelGroupMapper;
|
import com.cool.store.mapper.HyPartnerEcTrackLogMapper;
|
||||||
import com.cool.store.mapper.HyPartnerLabelMapper;
|
|
||||||
import com.cool.store.mapper.HyPartnerUserChannelMapper;
|
import com.cool.store.mapper.HyPartnerUserChannelMapper;
|
||||||
import com.cool.store.request.CustomerInfoRequest;
|
import com.cool.store.request.CustomerInfoRequest;
|
||||||
import com.cool.store.request.GetTagRequest;
|
import com.cool.store.request.GetTagRequest;
|
||||||
@@ -31,9 +32,9 @@ import com.cool.store.sdk.ec.response.UpdateCustomerResponse;
|
|||||||
import com.cool.store.service.EcSyncService;
|
import com.cool.store.service.EcSyncService;
|
||||||
import com.cool.store.service.LabelGroupService;
|
import com.cool.store.service.LabelGroupService;
|
||||||
import com.cool.store.service.LabelService;
|
import com.cool.store.service.LabelService;
|
||||||
import com.cool.store.utils.Post;
|
import com.cool.store.utils.*;
|
||||||
import com.cool.store.utils.StringUtil;
|
import com.cool.store.utils.poi.constant.Constants;
|
||||||
import com.cool.store.utils.UUIDUtils;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -43,10 +44,8 @@ import org.springframework.util.CollectionUtils;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Date;
|
import java.util.stream.Collectors;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@@ -56,7 +55,6 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
@Value("${ec.baseUrl:null}")
|
@Value("${ec.baseUrl:null}")
|
||||||
private String baseUrl;
|
private String baseUrl;
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
private HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
||||||
|
|
||||||
@@ -70,6 +68,12 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
private EnterpriseUserDAO enterpriseUserDAO;
|
private EnterpriseUserDAO enterpriseUserDAO;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MybatisBatchUtils mybatisBatchUtils;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
|
private HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
|
||||||
|
|
||||||
@@ -80,16 +84,40 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
private LabelService labelService;
|
private LabelService labelService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EventCenterHttpRequest eventCenterHttpRequest;
|
||||||
|
|
||||||
|
|
||||||
|
@Value("${ec.sync.createUserId:null}")
|
||||||
|
private String operateId;
|
||||||
|
|
||||||
|
|
||||||
|
private final String operateName="EC系统";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean ecToApplet(List<CustomerInfoRequest> queryListData) {
|
public boolean ecToApplet(List<CustomerInfoRequest> queryListData) {
|
||||||
|
Map<String, List<HyPartnerUserInfoDO>> sendUserMap = new HashMap<>();
|
||||||
for (CustomerInfoRequest customerInfoItem : queryListData) {
|
for (CustomerInfoRequest customerInfoItem : queryListData) {
|
||||||
try {
|
try {
|
||||||
insertSelectiveSync(customerInfoItem);
|
insertSelectiveSync(customerInfoItem, false, sendUserMap);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("ec同步至招商小程序报错"+JSONObject.toJSONString(e));
|
log.error("ec同步至招商小程序报错" + JSONObject.toJSONString(e));
|
||||||
sendFeiShuRobotMessage("推送:"+JSONObject.toJSONString(e),"27243d49-97ca-4981-8aec-7c3bf84eb660");
|
sendFeiShuRobotMessage("推送:" + JSONObject.toJSONString(e), "27243d49-97ca-4981-8aec-7c3bf84eb660");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sendUserMap.forEach((k, v) -> {
|
||||||
|
//将多个电话与姓名拼接在一块
|
||||||
|
String str = v.stream().map(item -> item.getUsername().concat(item.getMobile())).collect(Collectors.joining(Constants.COMMA));
|
||||||
|
Map<String, String> feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(new ArrayList<String>() {{
|
||||||
|
add(k);
|
||||||
|
}});
|
||||||
|
List<String> feishuIds = feishuUserIdsByUserIds.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
|
||||||
|
try {
|
||||||
|
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.EC_RECEIVE_LINE,feishuIds,v.size(),str);
|
||||||
|
} catch (ApiException e) {
|
||||||
|
log.error("ec同步至招商发送飞书通知错误" + JSONObject.toJSONString(e));
|
||||||
|
}
|
||||||
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,18 +163,289 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLastCrmCreateTime() {
|
||||||
|
return hyPartnerUserInfoDAO.selectLastCrmCreateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
@Override
|
||||||
|
public Boolean historyLine(List<CustomerInfoRequest> resultCustomerInfoList) {
|
||||||
|
for (CustomerInfoRequest customerInfoRequest : resultCustomerInfoList) {
|
||||||
|
customerInfoRequest.setUpdateTime(DateUtil.parse(customerInfoRequest.getCrmCreateTime(), DatePattern.NORM_DATETIME_PATTERN));
|
||||||
|
Map<String, List<HyPartnerUserInfoDO>> sendUserMap = new HashMap<>();
|
||||||
|
insertSelectiveSync(customerInfoRequest, true, sendUserMap);
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer historyLineTrajectory(List<HyPartnerEcTrackLogDO> resultTrajectoryList) {
|
||||||
|
for (HyPartnerEcTrackLogDO hyPartnerEcTrackLogDO : resultTrajectoryList) {
|
||||||
|
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(hyPartnerEcTrackLogDO.getMobile());
|
||||||
|
if (ObjectUtil.isNotNull(hyPartnerUserInfoDO)) {
|
||||||
|
hyPartnerEcTrackLogDO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mybatisBatchUtils.batchInsertOrUpdate(resultTrajectoryList, HyPartnerEcTrackLogMapper.class, (record, mapper) -> mapper.insertSelective(record));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步ec数据到表中 同时将部分数据同步到ec
|
* 同步ec数据到表中 同时将部分数据同步到ec
|
||||||
*
|
*
|
||||||
* @param customerInfoItem
|
* @param customerInfoItem
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void insertSelectiveSync(CustomerInfoRequest customerInfoItem) throws ApiException {
|
public void insertSelectiveSync(CustomerInfoRequest customerInfoItem, Boolean pan, Map<String, List<HyPartnerUserInfoDO>> sendUserMap) throws ApiException {
|
||||||
if (StringUtil.isNotEmpty(customerInfoItem.getMobile())) {
|
//发送消息
|
||||||
customerInfoItem.setMobile(customerInfoItem.getMobile().split(" ")[1]);
|
customerInfoItem.setMobile(customerInfoItem.getMobile().split(" ")[1]);
|
||||||
|
String newPartnerId = UUIDUtils.get32UUID();
|
||||||
|
HyPartnerBaseInfoDO resultBase = new HyPartnerBaseInfoDO();
|
||||||
|
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
|
||||||
|
resultUser.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile()).setUserChannelId(Convert.toInt(getChannelId(customerInfoItem.getChannel()))).setEcWantShopArea(customerInfoItem.getEcWantShopArea());
|
||||||
|
Date time = new Date();
|
||||||
|
if (ObjectUtil.isNotNull(customerInfoItem.getUpdateTime()) && pan) {
|
||||||
|
//历史线索创建时间与更新时间设置为ec同步过来的时间
|
||||||
|
time = customerInfoItem.getUpdateTime();
|
||||||
|
resultUser.setCrmCreateTime(time);
|
||||||
|
//放入历史标签id
|
||||||
|
if (StringUtil.isNotEmpty(customerInfoItem.getLabelIds())) {
|
||||||
|
resultBase.setUserPortrait(CommonConstants.COMMA.concat(customerInfoItem.getLabelIds()).concat(CommonConstants.COMMA));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO();
|
||||||
|
String followUserName = customerInfoItem.getFollowUserName();
|
||||||
|
String followUserMobile = customerInfoItem.getFollowUserMobile();
|
||||||
|
//获取招商经理
|
||||||
|
resultLine.setInvestmentManager(getInvestmentManager(followUserName, followUserMobile));
|
||||||
|
resultLine.setWorkflowStage(WorkflowStageEnum.INTENT.getCode())
|
||||||
|
.setLineStatus(StringUtil.isEmpty(customerInfoItem.getFollowUserName()) ? LineStatusEnum.PUBLIC_SEAS.getCode() : LineStatusEnum.PRIVATE_SEAS.getCode());
|
||||||
|
resultBase.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile());
|
||||||
|
|
||||||
|
HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(resultUser.getMobile());
|
||||||
|
EcClient ecClient = new EcClient();
|
||||||
|
//有就更新ec没有就插入
|
||||||
|
if (newUserInfo != null) {
|
||||||
|
//招商客户姓名为空
|
||||||
|
if (ObjectUtil.isNull(newUserInfo.getUsername()) || StringUtil.isEmpty(newUserInfo.getUsername())) {
|
||||||
|
newUserInfo.setUsername(resultUser.getUsername());
|
||||||
|
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
||||||
|
}
|
||||||
|
// EC与沪姨合伙人同时存在的线索用户,但用户姓名不同,将沪姨合伙人线索姓名同步至EC覆盖原EC线索姓名
|
||||||
|
if (!newUserInfo.getUsername().equals(resultUser.getUsername())) {
|
||||||
|
updateEcCustomer(customerInfoItem, newUserInfo, ecClient);
|
||||||
|
}
|
||||||
|
String oldPartnerId = newUserInfo.getPartnerId();
|
||||||
|
//线索表
|
||||||
|
HyPartnerLineInfoDO partnerLine = hyPartnerLineInfoDAO.getByPartnerId(oldPartnerId);
|
||||||
|
if (partnerLine != null) {
|
||||||
|
// EC与沪姨合伙人同时存在的线索用户,但存在不同的跟进人,将沪姨合伙人跟进人信息同步至EC覆盖原EC跟进人信息
|
||||||
|
if (StringUtil.isEmpty(partnerLine.getInvestmentManager())) {
|
||||||
|
if (StringUtil.isNotEmpty(resultLine.getInvestmentManager()) && !getFollowLineStatus(partnerLine)) {
|
||||||
|
resultLine.setId(partnerLine.getId()).setUpdateTime(new Date());
|
||||||
|
//沪姨合伙人线索存在黑名单,EC该线索分配跟进人同步到沪姨合伙人但线索状态不变,还存在黑名单中
|
||||||
|
resultLine.setLineStatus(partnerLine.getLineStatus().intValue() == LineStatusEnum.BLACKLIST.getCode().intValue()
|
||||||
|
? LineStatusEnum.BLACKLIST.getCode() : resultLine.getLineStatus());
|
||||||
|
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(resultLine);
|
||||||
|
|
||||||
|
//分配招商经理发送消息通知
|
||||||
|
Map<String, String> feishuUserIdsByUserIds = enterpriseUserDAO.getFeishuUserIdsByUserIds(new ArrayList<String>() {{
|
||||||
|
add(resultLine.getInvestmentManager());
|
||||||
|
}});
|
||||||
|
List<String> feishuIds = feishuUserIdsByUserIds.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
|
||||||
|
try {
|
||||||
|
eventCenterHttpRequest.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,feishuIds,operateName,newUserInfo.getUsername(),newUserInfo.getMobile());
|
||||||
|
} catch (ApiException e) {
|
||||||
|
log.error("ec同步至招商发送飞书通知错误" + JSONObject.toJSONString(e));
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加新增线索的ec操作日志
|
||||||
|
LineLogInfo lineLogInfo = new LineLogInfo(partnerLine.getPartnerId(), resultLine.getId(), operateId,
|
||||||
|
operateName, OperateTypeEnum.ALLOCATION_INVESTMENT_MANAGER,
|
||||||
|
WorkflowStageEnum.getWorkflowStageByCode(partnerLine.getWorkflowStage()),
|
||||||
|
partnerLine.getWorkflowStatus(), "");
|
||||||
|
BlackListLogDTO logDTO = BlackListLogDTO.builder().operateUserId(operateId).operateUsername(operateName)
|
||||||
|
.mobile(resultBase.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
|
||||||
|
lineLogInfo.setData(logDTO);
|
||||||
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!getFollowLineStatus(partnerLine)) {
|
||||||
|
//私海
|
||||||
|
EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(partnerLine.getInvestmentManager());
|
||||||
|
enterpriseUser.setMobile(getNoWith86Number(enterpriseUser.getMobile()));
|
||||||
|
//电话相同但是名字不同
|
||||||
|
if (enterpriseUser.getMobile().equals(followUserMobile) && !enterpriseUser.getName().equals(followUserName)) {
|
||||||
|
changeEcFollowUser(customerInfoItem, ecClient, enterpriseUser, 1);
|
||||||
|
}
|
||||||
|
//电话不同
|
||||||
|
if (!enterpriseUser.getMobile().equals(followUserMobile)) {
|
||||||
|
changeEcFollowUser(customerInfoItem, ecClient, enterpriseUser, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//base表
|
||||||
|
HyPartnerBaseInfoDO partnerIdAndLine = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(partnerLine.getPartnerId(), partnerLine.getId());
|
||||||
|
if (partnerIdAndLine == null) {
|
||||||
|
resultBase.setPartnerId(newPartnerId).setPartnerLineId(partnerLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
||||||
|
setCreateTime(time).setUpdateTime(time);
|
||||||
|
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
||||||
|
} else {
|
||||||
|
//标签共有 取并集 更改用户画像
|
||||||
|
updateUserPortrait(partnerIdAndLine, partnerIdAndLine.getUserPortrait(), resultBase.getUserPortrait());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
insertUserInfo(sendUserMap, newPartnerId, resultBase, resultUser, time, resultLine);
|
||||||
|
}
|
||||||
|
newUserInfo.setEcWantShopArea(resultUser.getEcWantShopArea());
|
||||||
|
//添加ec意向区域同步
|
||||||
|
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
||||||
|
} else {
|
||||||
|
resultUser.setPartnerId(newPartnerId).setCreateTime(time).setUpdateTime(time);
|
||||||
|
hyPartnerUserInfoDAO.insertSelective(resultUser);
|
||||||
|
|
||||||
|
insertUserInfo(sendUserMap, newPartnerId, resultBase, resultUser, time, resultLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送请求更改ec线索跟进人
|
||||||
|
*
|
||||||
|
* @param customerInfoItem
|
||||||
|
* @param ecClient
|
||||||
|
* @param enterpriseUser
|
||||||
|
* @param i
|
||||||
|
*/
|
||||||
|
private void changeEcFollowUser(CustomerInfoRequest customerInfoItem, EcClient ecClient, EnterpriseUserDO enterpriseUser, int i) {
|
||||||
|
ChangeFollowUserRequest changeFollowUserRequest = new ChangeFollowUserRequest();
|
||||||
|
ChangeFollowUserBo changeFollowUserBo = new ChangeFollowUserBo();
|
||||||
|
changeFollowUserBo.setFollowUserId(customerInfoItem.getLastFollowUserId()).setCrmId(customerInfoItem.getCrmId())
|
||||||
|
.setType(i).setUsername(enterpriseUser.getName()).setMobile(enterpriseUser.getMobile());
|
||||||
|
changeFollowUserRequest.setParameter(changeFollowUserBo);
|
||||||
|
ChangeFollowUserResponse changeFollowUserExec = ecClient.exec(baseUrl, changeFollowUserRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送请求更改ec客户
|
||||||
|
*
|
||||||
|
* @param customerInfoItem
|
||||||
|
* @param newUserInfo
|
||||||
|
* @param ecClient
|
||||||
|
*/
|
||||||
|
private void updateEcCustomer(CustomerInfoRequest customerInfoItem, HyPartnerUserInfoDO newUserInfo, EcClient ecClient) {
|
||||||
|
UpdateCustomerRequest updateUserRequest = new UpdateCustomerRequest();
|
||||||
|
UpdateCustomerBo updateCustomerBo = new UpdateCustomerBo();
|
||||||
|
updateCustomerBo.setUsername(newUserInfo.getUsername()).setMobile(newUserInfo.getMobile()).setCrmId(customerInfoItem.getCrmId());
|
||||||
|
updateUserRequest.setParameter(updateCustomerBo);
|
||||||
|
UpdateCustomerResponse updateUserExec = ecClient.exec(baseUrl, updateUserRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加线索信息
|
||||||
|
* @param sendUserMap
|
||||||
|
* @param newPartnerId
|
||||||
|
* @param resultBase
|
||||||
|
* @param resultUser
|
||||||
|
* @param time
|
||||||
|
* @param resultLine
|
||||||
|
*/
|
||||||
|
private void insertUserInfo(Map<String, List<HyPartnerUserInfoDO>> sendUserMap, String newPartnerId, HyPartnerBaseInfoDO resultBase, HyPartnerUserInfoDO resultUser, Date time, HyPartnerLineInfoDO resultLine) {
|
||||||
|
resultLine.setPartnerId(newPartnerId).setCreateTime(time).setUpdateTime(time);
|
||||||
|
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
||||||
|
|
||||||
|
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
||||||
|
setCreateTime(time).setUpdateTime(time);
|
||||||
|
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
||||||
|
//存放待发送飞书通知消息
|
||||||
|
putElement(sendUserMap, resultLine.getInvestmentManager(), resultUser);
|
||||||
|
//添加新增线索的ec操作日志
|
||||||
|
LineLogInfo lineLogInfo = new LineLogInfo(newPartnerId, resultLine.getId(), operateId,
|
||||||
|
operateName, OperateTypeEnum.EC_SYNC_ADD_LINE,
|
||||||
|
WorkflowStageEnum.getWorkflowStageByCode(resultLine.getWorkflowStage()),
|
||||||
|
WorkflowStatusEnum.INTENT_0.getCode(), "");
|
||||||
|
BlackListLogDTO logDTO = BlackListLogDTO.builder().operateUserId(operateId).operateUsername(operateName)
|
||||||
|
.mobile(resultBase.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
|
||||||
|
lineLogInfo.setData(logDTO);
|
||||||
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存放待发送飞书通知消息
|
||||||
|
*
|
||||||
|
* @param sendUserMap
|
||||||
|
* @param key
|
||||||
|
* @param element
|
||||||
|
*/
|
||||||
|
private void putElement(Map<String, List<HyPartnerUserInfoDO>> sendUserMap, String key, HyPartnerUserInfoDO element) {
|
||||||
|
if (StringUtil.isEmpty(key)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<HyPartnerUserInfoDO> list = sendUserMap.get(key);
|
||||||
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
|
ArrayList<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = new ArrayList<>();
|
||||||
|
hyPartnerUserInfoDOS.add(element);
|
||||||
|
sendUserMap.put(key, hyPartnerUserInfoDOS);
|
||||||
|
} else {
|
||||||
|
list.add(element);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更改用户画像取并集
|
||||||
|
*
|
||||||
|
* @param partnerIdAndLine
|
||||||
|
* @param oldUserPortrait
|
||||||
|
* @param newUserPortrait
|
||||||
|
*/
|
||||||
|
private void updateUserPortrait(HyPartnerBaseInfoDO partnerIdAndLine, String oldUserPortrait, String newUserPortrait) {
|
||||||
|
if (StringUtil.isEmpty(newUserPortrait)||ObjectUtil.isNull(partnerIdAndLine)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (StringUtil.isEmpty(oldUserPortrait)) {
|
||||||
|
partnerIdAndLine.setUserPortrait(newUserPortrait);
|
||||||
|
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(partnerIdAndLine);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!newUserPortrait.equals(oldUserPortrait)) {
|
||||||
|
List<String> oldList = new ArrayList<>(Arrays.asList(oldUserPortrait.split(Constants.COMMA))).stream().filter(item->StringUtil.isNotEmpty(item)).collect(Collectors.toList());
|
||||||
|
List<String> newList = new ArrayList<>(Arrays.asList(newUserPortrait.split(Constants.COMMA))).stream().filter(item->StringUtil.isNotEmpty(item)).collect(Collectors.toList());
|
||||||
|
oldList.addAll(newList);
|
||||||
|
String userPortrait = Constants.COMMA.concat(oldList.stream().distinct().collect(Collectors.joining(Constants.COMMA))).concat(Constants.COMMA);
|
||||||
|
partnerIdAndLine.setUserPortrait(userPortrait);
|
||||||
|
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(partnerIdAndLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 获取跟进人id
|
||||||
|
* @param followUserName
|
||||||
|
* @param followUserMobile
|
||||||
|
* @return
|
||||||
|
* @throws ApiException
|
||||||
|
*/
|
||||||
|
private String getInvestmentManager(String followUserName, String followUserMobile) throws ApiException {
|
||||||
|
//传递过来有跟进人的情况下查询跟进人是否存在
|
||||||
|
if (StringUtil.isNotEmpty(followUserMobile) && StringUtil.isNotEmpty(followUserName)) {
|
||||||
|
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(followUserMobile);
|
||||||
|
if (enterpriseUserDO==null) {
|
||||||
|
// 给飞书群发送消息 跟进人找不到
|
||||||
|
sendFeiShuRobotMessage("推送:飞书架构中找不到该用户:【" + followUserName + "】,该用户电话号码为:" + followUserMobile, "27243d49-97ca-4981-8aec-7c3bf84eb660");
|
||||||
|
throw new ApiException("飞书架构中找不到该用户:【" + followUserName + "】,该用户电话号码为:" + followUserMobile);
|
||||||
|
}
|
||||||
|
return enterpriseUserDO.getUserId();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param channel
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Long getChannelId(String channel) {
|
||||||
//获取客户来源id
|
//获取客户来源id
|
||||||
String channel = customerInfoItem.getChannel();
|
|
||||||
HyPartnerUserChannelDO hyPartnerUserChannelDO = hyPartnerUserChannelMapper.selectByChannelName(channel);
|
HyPartnerUserChannelDO hyPartnerUserChannelDO = hyPartnerUserChannelMapper.selectByChannelName(channel);
|
||||||
Long channelId = null;
|
Long channelId = null;
|
||||||
if (StringUtil.isNotEmpty(channel)) {
|
if (StringUtil.isNotEmpty(channel)) {
|
||||||
@@ -156,129 +455,25 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
HyPartnerUserChannelDO channelDO = hyPartnerUserChannelMapper.selectByChannelName(channel);
|
HyPartnerUserChannelDO channelDO = hyPartnerUserChannelMapper.selectByChannelName(channel);
|
||||||
channelId = channelDO.getChannelId();
|
channelId = channelDO.getChannelId();
|
||||||
}
|
}
|
||||||
String newPartnerId = UUIDUtils.get32UUID();
|
return channelId;
|
||||||
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
|
|
||||||
resultUser.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile()).setUserChannelId(Convert.toInt(channelId)).setEcWantShopArea(customerInfoItem.getEcWantShopArea());
|
|
||||||
HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO();
|
|
||||||
String followUserName = customerInfoItem.getFollowUserName();
|
|
||||||
String followUserMobile = customerInfoItem.getFollowUserMobile();
|
|
||||||
//传递过来有跟进人的情况下查询跟进人是否存在
|
|
||||||
if (StringUtil.isNotEmpty(followUserMobile) && StringUtil.isNotEmpty(followUserName)) {
|
|
||||||
String userId = enterpriseUserDAO.selectByMobile(followUserMobile);
|
|
||||||
if (StringUtil.isEmpty(userId)) {
|
|
||||||
// 给飞书群发送消息 跟进人找不到
|
|
||||||
sendFeiShuRobotMessage("推送:飞书架构中找不到该用户:【" + followUserName + "】,该用户电话号码为:" + followUserMobile, "27243d49-97ca-4981-8aec-7c3bf84eb660");
|
|
||||||
throw new ApiException("飞书架构中找不到该用户:【" + followUserName + "】,该用户电话号码为:" + followUserMobile);
|
|
||||||
}
|
|
||||||
resultLine.setInvestmentManager(userId);
|
|
||||||
}
|
|
||||||
resultLine.setWorkflowStage(WorkflowStageEnum.INTENT.getCode())
|
|
||||||
.setLineStatus(StringUtil.isEmpty(customerInfoItem.getFollowUserName()) ? LineStatusEnum.PUBLIC_SEAS.getCode() : LineStatusEnum.PRIVATE_SEAS.getCode());
|
|
||||||
|
|
||||||
HyPartnerBaseInfoDO resultBase = new HyPartnerBaseInfoDO();
|
|
||||||
resultBase.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile());
|
|
||||||
|
|
||||||
HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(resultUser.getMobile());
|
|
||||||
EcClient ecClient = new EcClient();
|
|
||||||
//有就更新ec没有就插入
|
|
||||||
if (newUserInfo != null) {
|
|
||||||
//招商客户姓名为空
|
|
||||||
if (ObjectUtil.isNull(newUserInfo.getUsername())||StringUtil.isEmpty(newUserInfo.getUsername())) {
|
|
||||||
newUserInfo.setUsername(resultUser.getUsername());
|
|
||||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
|
||||||
}
|
|
||||||
// EC与沪姨合伙人同时存在的线索用户,但用户姓名不同,将沪姨合伙人线索姓名同步至EC覆盖原EC线索姓名
|
|
||||||
if (!newUserInfo.getUsername().equals(resultUser.getUsername())) {
|
|
||||||
UpdateCustomerRequest updateUserRequest = new UpdateCustomerRequest();
|
|
||||||
UpdateCustomerBo updateCustomerBo = new UpdateCustomerBo();
|
|
||||||
updateCustomerBo.setUsername(newUserInfo.getUsername()).setMobile(newUserInfo.getMobile()).setCrmId(customerInfoItem.getCrmId());
|
|
||||||
updateUserRequest.setParameter(updateCustomerBo);
|
|
||||||
UpdateCustomerResponse updateUserExec = ecClient.exec(baseUrl, updateUserRequest);
|
|
||||||
}
|
|
||||||
String oldPartnerId = newUserInfo.getPartnerId();
|
|
||||||
//线索表
|
|
||||||
HyPartnerLineInfoDO partnerLine = hyPartnerLineInfoDAO.getByPartnerId(oldPartnerId);
|
|
||||||
if (partnerLine != null) {
|
|
||||||
// EC与沪姨合伙人同时存在的线索用户,但存在不同的跟进人,将沪姨合伙人跟进人信息同步至EC覆盖原EC跟进人信息
|
|
||||||
if (StringUtil.isEmpty(partnerLine.getInvestmentManager())) {
|
|
||||||
if (StringUtil.isNotEmpty(resultLine.getInvestmentManager())&&!getFollowLineStatus(partnerLine)) {
|
|
||||||
resultLine.setId(partnerLine.getId()).setUpdateTime(new Date());
|
|
||||||
//沪姨合伙人线索存在黑名单,EC该线索分配跟进人同步到沪姨合伙人但线索状态不变,还存在黑名单中
|
|
||||||
resultLine.setLineStatus(partnerLine.getLineStatus().intValue() == LineStatusEnum.BLACKLIST.getCode().intValue()
|
|
||||||
? LineStatusEnum.BLACKLIST.getCode() : resultLine.getLineStatus());
|
|
||||||
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(resultLine);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!getFollowLineStatus(partnerLine)) {
|
|
||||||
//私海
|
|
||||||
EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(partnerLine.getInvestmentManager());
|
|
||||||
enterpriseUser.setMobile(getNoWith86Number(enterpriseUser.getMobile()));
|
|
||||||
//电话相同但是名字不同
|
|
||||||
if (enterpriseUser.getMobile().equals(followUserMobile) && !enterpriseUser.getName().equals(followUserName)) {
|
|
||||||
ChangeFollowUserRequest changeFollowUserRequest = new ChangeFollowUserRequest();
|
|
||||||
ChangeFollowUserBo changeFollowUserBo = new ChangeFollowUserBo();
|
|
||||||
changeFollowUserBo.setFollowUserId(customerInfoItem.getLastFollowUserId()).setCrmId(customerInfoItem.getCrmId())
|
|
||||||
.setType(1).setUsername(enterpriseUser.getName()).setMobile(enterpriseUser.getMobile());
|
|
||||||
changeFollowUserRequest.setParameter(changeFollowUserBo);
|
|
||||||
ChangeFollowUserResponse changeFollowUserExec = ecClient.exec(baseUrl, changeFollowUserRequest);
|
|
||||||
}
|
|
||||||
//电话不同
|
|
||||||
if (!enterpriseUser.getMobile().equals(followUserMobile)) {
|
|
||||||
ChangeFollowUserRequest changeFollowUserRequest = new ChangeFollowUserRequest();
|
|
||||||
ChangeFollowUserBo changeFollowUserBo = new ChangeFollowUserBo();
|
|
||||||
changeFollowUserBo.setFollowUserId(customerInfoItem.getLastFollowUserId()).setCrmId(customerInfoItem.getCrmId())
|
|
||||||
.setType(2).setUsername(enterpriseUser.getName()).setMobile(enterpriseUser.getMobile());
|
|
||||||
changeFollowUserRequest.setParameter(changeFollowUserBo);
|
|
||||||
ChangeFollowUserResponse changeFollowUserExec = ecClient.exec(baseUrl, changeFollowUserRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//base表
|
|
||||||
HyPartnerBaseInfoDO partnerIdAndLine = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(partnerLine.getPartnerId(), partnerLine.getId());
|
|
||||||
if (partnerIdAndLine == null) {
|
|
||||||
resultBase.setPartnerId(newPartnerId).setPartnerLineId(partnerLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
|
||||||
setCreateTime(new Date());
|
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resultLine.setPartnerId(newPartnerId).setCreateTime(new Date());
|
|
||||||
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
|
||||||
|
|
||||||
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
|
||||||
setCreateTime(new Date());
|
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
|
||||||
}
|
|
||||||
newUserInfo.setEcWantShopArea(resultUser.getEcWantShopArea());
|
|
||||||
//添加ec意向区域同步
|
|
||||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
|
||||||
} else {
|
|
||||||
resultUser.setPartnerId(newPartnerId).setCreateTime(new Date());
|
|
||||||
hyPartnerUserInfoDAO.insertSelective(resultUser);
|
|
||||||
|
|
||||||
resultLine.setPartnerId(newPartnerId).setCreateTime(new Date());
|
|
||||||
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
|
||||||
|
|
||||||
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
|
||||||
setCreateTime(new Date());
|
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*招商公海内跟进次数大于等于1的用户EC同步该用户进去公海,假若跟进次数为0的同步到EC跟进人就是唐佑玉
|
* 招商公海内跟进次数大于等于1的用户EC同步该用户进去公海,假若跟进次数为0的同步到EC跟进人就是唐佑玉
|
||||||
* @param partnerLine
|
*
|
||||||
|
* @param partnerLine
|
||||||
* @return true为公海 false:私海
|
* @return true为公海 false:私海
|
||||||
*/
|
*/
|
||||||
public Boolean getFollowLineStatus(HyPartnerLineInfoDO partnerLine){
|
public Boolean getFollowLineStatus(HyPartnerLineInfoDO partnerLine) {
|
||||||
if(partnerLine.getLineStatus()!=0){
|
if (partnerLine.getLineStatus() != 0) {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
ArrayList<String> list = new ArrayList<>();
|
ArrayList<String> list = new ArrayList<>();
|
||||||
list.add(partnerLine.getPartnerId());
|
list.add(partnerLine.getPartnerId());
|
||||||
List<LineCountDTO> followCountList = hyPartnerLineInfoDAO.getFollowCountList(list);
|
List<LineCountDTO> followCountList = hyPartnerLineInfoDAO.getFollowCountList(list);
|
||||||
if (!CollectionUtils.isEmpty(followCountList)) {
|
if (!CollectionUtils.isEmpty(followCountList)) {
|
||||||
return followCountList.get(0).getFollowCount()>0;
|
return followCountList.get(0).getFollowCount() > 0;
|
||||||
}
|
}
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,6 +211,15 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService {
|
|||||||
enterpriseUserRoleDAO.deleteUserRole(userDetail.getUserId());
|
enterpriseUserRoleDAO.deleteUserRole(userDetail.getUserId());
|
||||||
}
|
}
|
||||||
EnterpriseUserDO enterpriseUser = EnterpriseUserDTO.transUserDtoToDo(userDetail, regionPathMap, leaderDeptMap, eventType);
|
EnterpriseUserDO enterpriseUser = EnterpriseUserDTO.transUserDtoToDo(userDetail, regionPathMap, leaderDeptMap, eventType);
|
||||||
|
if(StringUtils.isNotBlank(enterpriseUser.getMobile())){
|
||||||
|
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(enterpriseUser.getMobile());
|
||||||
|
//如果没有用户信息 但是飞书推的是更新的事件
|
||||||
|
if (enterpriseUserDO==null&&enterpriseUser.getIsLeader()==null){
|
||||||
|
log.info("没有用户信息 但是飞书推的是更新的事件");
|
||||||
|
enterpriseUser.setIsLeader(Boolean.FALSE);
|
||||||
|
enterpriseUser.setLeaderDeptIds("[]");
|
||||||
|
}
|
||||||
|
}
|
||||||
enterpriseUserDAO.batchInsertOrUpdate(new ArrayList<>(Arrays.asList(enterpriseUser)));
|
enterpriseUserDAO.batchInsertOrUpdate(new ArrayList<>(Arrays.asList(enterpriseUser)));
|
||||||
userRegionMappingDAO.batchInsertOrUpdateUserRegion(UserRegionMappingDO.convertSyncDO(Arrays.asList(enterpriseUser)));
|
userRegionMappingDAO.batchInsertOrUpdateUserRegion(UserRegionMappingDO.convertSyncDO(Arrays.asList(enterpriseUser)));
|
||||||
userRegionMappingDAO.deleteUserRegionByUserId(userDetail.getUserId(), DataSourceEnum.SYNC, departmentLists);
|
userRegionMappingDAO.deleteUserRegionByUserId(userDetail.getUserId(), DataSourceEnum.SYNC, departmentLists);
|
||||||
|
|||||||
@@ -10,19 +10,14 @@ import com.cool.store.dao.HyFollowTaskDAO;
|
|||||||
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
||||||
import com.cool.store.dao.HyPartnerTaskInfoLogDAO;
|
import com.cool.store.dao.HyPartnerTaskInfoLogDAO;
|
||||||
import com.cool.store.dto.follow.FollowTaskNumDTO;
|
import com.cool.store.dto.follow.FollowTaskNumDTO;
|
||||||
import com.cool.store.dto.log.LineLogInfo;
|
|
||||||
import com.cool.store.dto.log.LogFieldDTO;
|
import com.cool.store.dto.log.LogFieldDTO;
|
||||||
import com.cool.store.dto.message.SendCardMessageDTO;
|
|
||||||
import com.cool.store.dto.partner.PartnerSimpleInfoDTO;
|
import com.cool.store.dto.partner.PartnerSimpleInfoDTO;
|
||||||
import com.cool.store.entity.CallRecordDO;
|
import com.cool.store.entity.*;
|
||||||
import com.cool.store.entity.HyFollowTaskDO;
|
|
||||||
import com.cool.store.entity.HyPartnerLineInfoDO;
|
|
||||||
import com.cool.store.entity.HyPartnerTaskInfoLogDO;
|
|
||||||
import com.cool.store.enums.*;
|
import com.cool.store.enums.*;
|
||||||
import com.cool.store.exception.ApiException;
|
import com.cool.store.exception.ApiException;
|
||||||
import com.cool.store.exception.ServiceException;
|
import com.cool.store.exception.ServiceException;
|
||||||
import com.cool.store.http.EventCenterHttpRequest;
|
import com.cool.store.http.EventCenterHttpRequest;
|
||||||
import com.cool.store.http.ISVHttpRequest;
|
import com.cool.store.mapper.HyPartnerEcTrackLogMapper;
|
||||||
import com.cool.store.request.follow.AddFollowLogRequest;
|
import com.cool.store.request.follow.AddFollowLogRequest;
|
||||||
import com.cool.store.request.follow.AddFollowTaskRequest;
|
import com.cool.store.request.follow.AddFollowTaskRequest;
|
||||||
import com.cool.store.request.follow.FollowTaskIdRequest;
|
import com.cool.store.request.follow.FollowTaskIdRequest;
|
||||||
@@ -35,6 +30,7 @@ import com.cool.store.utils.RedisUtilPool;
|
|||||||
import com.cool.store.vo.follow.FollowTaskLogVO;
|
import com.cool.store.vo.follow.FollowTaskLogVO;
|
||||||
import com.cool.store.vo.follow.FollowTaskPageVO;
|
import com.cool.store.vo.follow.FollowTaskPageVO;
|
||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
@@ -76,6 +72,10 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
|||||||
private NoticeService noticeService;
|
private NoticeService noticeService;
|
||||||
@Resource
|
@Resource
|
||||||
private EventCenterHttpRequest eventCenterHttpRequest;
|
private EventCenterHttpRequest eventCenterHttpRequest;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private HyPartnerEcTrackLogMapper hyPartnerEcTrackLogMapper;
|
||||||
|
|
||||||
@Value("${feishu.notice.link.url}")
|
@Value("${feishu.notice.link.url}")
|
||||||
private String linkUrl;
|
private String linkUrl;
|
||||||
|
|
||||||
@@ -257,6 +257,19 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<HyPartnerEcTrackLogDO> getEcFollowLogPage(Integer pageNum, Integer pageSize, String partnerId) {
|
||||||
|
if(Objects.isNull(partnerId)){
|
||||||
|
return new PageInfo<>();
|
||||||
|
}
|
||||||
|
PageHelper.startPage(pageNum, pageSize);
|
||||||
|
Page<HyPartnerEcTrackLogDO> logPage = hyPartnerEcTrackLogMapper.getEcLogPageByPartnerId(partnerId);
|
||||||
|
for (HyPartnerEcTrackLogDO hyPartnerEcTrackLogDO : logPage) {
|
||||||
|
hyPartnerEcTrackLogDO.setDetailContent(HyPartnerEcTrackLogDO.getDetailContentJoint(hyPartnerEcTrackLogDO));
|
||||||
|
}
|
||||||
|
return new PageInfo(logPage);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 线索校验
|
* 线索校验
|
||||||
* @param partnerLineId
|
* @param partnerLineId
|
||||||
|
|||||||
@@ -6,7 +6,11 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.cool.store.constants.ExcelErrorConstants;
|
import com.cool.store.constants.ExcelErrorConstants;
|
||||||
import com.cool.store.context.CurrentUserHolder;
|
import com.cool.store.context.CurrentUserHolder;
|
||||||
|
import com.cool.store.context.LoginUserInfo;
|
||||||
import com.cool.store.dao.*;
|
import com.cool.store.dao.*;
|
||||||
|
import com.cool.store.dto.log.BlackListLogDTO;
|
||||||
|
import com.cool.store.dto.log.LineLogInfo;
|
||||||
|
import com.cool.store.dto.partner.MobileCheckDTO;
|
||||||
import com.cool.store.entity.*;
|
import com.cool.store.entity.*;
|
||||||
import com.cool.store.enums.*;
|
import com.cool.store.enums.*;
|
||||||
import com.cool.store.exception.ServiceException;
|
import com.cool.store.exception.ServiceException;
|
||||||
@@ -16,6 +20,7 @@ import com.cool.store.response.ResponseResult;
|
|||||||
import com.cool.store.response.error.ErrorExcelResponse;
|
import com.cool.store.response.error.ErrorExcelResponse;
|
||||||
import com.cool.store.service.HyPartnerLineInfoService;
|
import com.cool.store.service.HyPartnerLineInfoService;
|
||||||
import com.cool.store.service.LineHighSeasService;
|
import com.cool.store.service.LineHighSeasService;
|
||||||
|
import com.cool.store.utils.CoolDateUtils;
|
||||||
import com.cool.store.utils.StringUtil;
|
import com.cool.store.utils.StringUtil;
|
||||||
import com.cool.store.utils.UUIDUtils;
|
import com.cool.store.utils.UUIDUtils;
|
||||||
import com.cool.store.utils.poi.ExcelUtil;
|
import com.cool.store.utils.poi.ExcelUtil;
|
||||||
@@ -30,6 +35,7 @@ import javax.annotation.Resource;
|
|||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -49,6 +55,9 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
private Integer manual;
|
private Integer manual;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
||||||
|
|
||||||
@@ -79,7 +88,7 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
if (ObjectUtil.isNotNull(hyPartnerUserInfoDO)) {
|
if (ObjectUtil.isNotNull(hyPartnerUserInfoDO)) {
|
||||||
throw new ServiceException(ErrorCodeEnum.PARTNER_MOBILE_EXIST);
|
throw new ServiceException(ErrorCodeEnum.PARTNER_MOBILE_EXIST);
|
||||||
}
|
}
|
||||||
return add(request,"add");
|
return add(request, "add");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -88,8 +97,8 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
*
|
*
|
||||||
* @param request
|
* @param request
|
||||||
*/
|
*/
|
||||||
public boolean add(AddLineRequest request,String type) {
|
public boolean add(AddLineRequest request, String type) {
|
||||||
Boolean flag =false;
|
Boolean flag = false;
|
||||||
String partnerId = UUIDUtils.get32UUID();
|
String partnerId = UUIDUtils.get32UUID();
|
||||||
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
|
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
|
||||||
resultUser.setUsername(request.getPartnerName()).setMobile(request.getMobile()).setPartnerId(partnerId).setCreateTime(new Date()).setAcceptAdjustType(request.getAcceptAdjustType())
|
resultUser.setUsername(request.getPartnerName()).setMobile(request.getMobile()).setPartnerId(partnerId).setCreateTime(new Date()).setAcceptAdjustType(request.getAcceptAdjustType())
|
||||||
@@ -104,10 +113,10 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
//判断招商经理是否为空
|
//判断招商经理是否为空
|
||||||
if (StringUtil.isNotEmpty(request.getInvestmentManager())) {
|
if (StringUtil.isNotEmpty(request.getInvestmentManager())) {
|
||||||
resultLine.setInvestmentManager(request.getInvestmentManager()).setLineStatus(LineStatusEnum.PRIVATE_SEAS.getCode());
|
resultLine.setInvestmentManager(request.getInvestmentManager()).setLineStatus(LineStatusEnum.PRIVATE_SEAS.getCode());
|
||||||
flag=true;
|
flag = true;
|
||||||
} else {
|
} else {
|
||||||
//是否分配跟进人
|
//是否分配跟进人
|
||||||
flag = hyPartnerLineInfoService.assignFollowUser(partnerId, request.getWantShopArea(), request.getAcceptAdjustType(), Boolean.TRUE);
|
flag = hyPartnerLineInfoService.assignFollowUser(partnerId, request.getWantShopArea(), request.getAcceptAdjustType(), Boolean.TRUE);
|
||||||
if (flag) {
|
if (flag) {
|
||||||
//查询跟进人
|
//查询跟进人
|
||||||
String investmentManager = hyPartnerLineInfoService.getAssignFollowUser(partnerId, "intent");
|
String investmentManager = hyPartnerLineInfoService.getAssignFollowUser(partnerId, "intent");
|
||||||
@@ -123,6 +132,17 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
resultBase.setPartnerId(partnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
resultBase.setPartnerId(partnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
||||||
setCreateTime(new Date()).setUsername(request.getPartnerName()).setMobile(request.getMobile());
|
setCreateTime(new Date()).setUsername(request.getPartnerName()).setMobile(request.getMobile());
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
||||||
|
|
||||||
|
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||||
|
//添加日志
|
||||||
|
LineLogInfo lineLogInfo = new LineLogInfo(resultLine.getPartnerId(), resultLine.getId(), user.getUserId(),
|
||||||
|
user.getName(), OperateTypeEnum.ADD_LINE,
|
||||||
|
WorkflowStageEnum.getWorkflowStageByCode(resultLine.getWorkflowStage()),
|
||||||
|
WorkflowStatusEnum.INTENT_0.getCode(), "");
|
||||||
|
BlackListLogDTO logDTO = BlackListLogDTO.builder().operateUserId(user.getUserId()).operateUsername(user.getName())
|
||||||
|
.mobile(resultBase.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
|
||||||
|
lineLogInfo.setData(logDTO);
|
||||||
|
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,18 +156,18 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
Map<Integer, Map<Integer, List<String>>> styleCells = new HashMap<>(4);
|
Map<Integer, Map<Integer, List<String>>> styleCells = new HashMap<>(4);
|
||||||
if (lineDOList.size() > excelMaxSize) {
|
if (lineDOList.size() > excelMaxSize) {
|
||||||
//超出五百条的excel都标红
|
//超出五百条的excel都标红
|
||||||
for (int i = excelMaxSize; i < lineDOList.size() ; i++) {
|
for (int i = excelMaxSize; i < lineDOList.size(); i++) {
|
||||||
lineDOList.get(i).setErrorInfo(ExcelErrorConstants.COUNT_MORE);
|
lineDOList.get(i).setErrorInfo(ExcelErrorConstants.COUNT_MORE);
|
||||||
styleCells.put(i,new HashMap<>(4));
|
styleCells.put(i, new HashMap<>(4));
|
||||||
}
|
}
|
||||||
ExcelUtil.setRowStyle(styleCells,ExcelUtil.FONT_RED,7);
|
ExcelUtil.setRowStyle(styleCells, ExcelUtil.FONT_RED, 7);
|
||||||
util.exportExcel(outputStream, lineDOList, "", styleCells);
|
util.exportExcel(outputStream, lineDOList, "", styleCells);
|
||||||
InputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
|
InputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
|
||||||
String fileStr = ossServer.uploadFileServer(stream, dir + getExcelName());
|
String fileStr = ossServer.uploadFileServer(stream, dir + getExcelName());
|
||||||
return new ResponseResult(500, "共上传" + lineDOList.size() + "条线索,其中" + styleCells.size() + "条存在异常", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
|
return new ResponseResult(500, "共上传" + lineDOList.size() + "条线索,其中" + styleCells.size() + "条存在异常", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
|
||||||
}
|
}
|
||||||
//获取重复手机号集合
|
//获取重复手机号集合
|
||||||
List<String> uniqueList = lineDOList.stream().filter(item->StringUtil.isNotEmpty(item.getMobile())).collect(Collectors.groupingBy(HyPartnerLineDO::getMobile, Collectors.counting()))
|
List<String> uniqueList = lineDOList.stream().filter(item -> StringUtil.isNotEmpty(item.getMobile())).collect(Collectors.groupingBy(HyPartnerLineDO::getMobile, Collectors.counting()))
|
||||||
.entrySet().stream().filter(e -> e.getValue() > 1)
|
.entrySet().stream().filter(e -> e.getValue() > 1)
|
||||||
.map(Map.Entry::getKey).collect(Collectors.toList());
|
.map(Map.Entry::getKey).collect(Collectors.toList());
|
||||||
for (int i = 0; i < lineDOList.size(); i++) {
|
for (int i = 0; i < lineDOList.size(); i++) {
|
||||||
@@ -156,8 +176,8 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
if (StringUtil.isEmpty(partnerName)) {
|
if (StringUtil.isEmpty(partnerName)) {
|
||||||
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.NAME_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.NAME_LOSE));
|
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.NAME_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.NAME_LOSE));
|
||||||
ExcelUtil.setStyleMap(styleCells, i, 0, new String[]{ExcelUtil.FONT_RED});
|
ExcelUtil.setStyleMap(styleCells, i, 0, new String[]{ExcelUtil.FONT_RED});
|
||||||
}else {
|
} else {
|
||||||
if (partnerName.length()>10) {
|
if (partnerName.length() > 10) {
|
||||||
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.NAME_OVER_LENGTH : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.NAME_OVER_LENGTH));
|
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.NAME_OVER_LENGTH : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.NAME_OVER_LENGTH));
|
||||||
ExcelUtil.setStyleMap(styleCells, i, 0, new String[]{ExcelUtil.FONT_RED});
|
ExcelUtil.setStyleMap(styleCells, i, 0, new String[]{ExcelUtil.FONT_RED});
|
||||||
}
|
}
|
||||||
@@ -219,7 +239,7 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
if (StringUtil.isEmpty(acceptAdjustType)) {
|
if (StringUtil.isEmpty(acceptAdjustType)) {
|
||||||
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE));
|
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE));
|
||||||
ExcelUtil.setStyleMap(styleCells, i, 4, new String[]{ExcelUtil.FONT_RED});
|
ExcelUtil.setStyleMap(styleCells, i, 4, new String[]{ExcelUtil.FONT_RED});
|
||||||
}else {
|
} else {
|
||||||
Integer enumByName = AcceptAdjustTypeEnum.findEnumByName(acceptAdjustType);
|
Integer enumByName = AcceptAdjustTypeEnum.findEnumByName(acceptAdjustType);
|
||||||
if (ObjectUtil.isNull(enumByName)) {
|
if (ObjectUtil.isNull(enumByName)) {
|
||||||
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE));
|
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE));
|
||||||
@@ -251,16 +271,33 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
AddLineRequest addLineRequest = new AddLineRequest();
|
AddLineRequest addLineRequest = new AddLineRequest();
|
||||||
BeanUtil.copyProperties(hyPartnerLineDO, addLineRequest);
|
BeanUtil.copyProperties(hyPartnerLineDO, addLineRequest);
|
||||||
addLineRequest.setWantShopArea(hyPartnerLineDO.getWantShopArea().toString());
|
addLineRequest.setWantShopArea(hyPartnerLineDO.getWantShopArea().toString());
|
||||||
add(addLineRequest,"import");
|
add(addLineRequest, "import");
|
||||||
}
|
}
|
||||||
return new ResponseResult(ResponseCodeEnum.SUCCESS.getCode(), "共上传" + lineDOList.size() + "条线索", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
|
return new ResponseResult(ResponseCodeEnum.SUCCESS.getCode(), "共上传" + lineDOList.size() + "条线索", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseResult addCheckout(String mobile) {
|
||||||
|
if (!isPhone(mobile)) {
|
||||||
|
throw new ServiceException(ErrorCodeEnum.PARTNER_MOBILE_INCORRECT);
|
||||||
|
}
|
||||||
|
MobileCheckDTO mobileCheckDTO = hyPartnerUserInfoDAO.selectByCheckMobile(mobile);
|
||||||
|
if (ObjectUtil.isNotNull(mobileCheckDTO)) {
|
||||||
|
if (mobileCheckDTO.getLineStatus().equals(LineStatusEnum.PUBLIC_SEAS.getCode())) {
|
||||||
|
throw new ServiceException(ErrorCodeEnum.PUBLIC_LINE_NOT_FOLLOW);
|
||||||
|
} else {
|
||||||
|
String message = MessageFormat.format(ErrorCodeEnum.LINE_EXIST_FOLLOW.getMessage(), mobileCheckDTO.getInvestmentManager(), mobileCheckDTO.getInvestmentManagerMobile());
|
||||||
|
return new ResponseResult(ErrorCodeEnum.LINE_EXIST_FOLLOW.getCode(),message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ResponseResult.success() ;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param phone 字符串类型的手机号
|
* @param phone 字符串类型的手机号
|
||||||
* 传入手机号,判断后返回
|
* 传入手机号,判断后返回
|
||||||
* true为手机号,false相反
|
* true为手机号,false相反
|
||||||
* */
|
*/
|
||||||
public static boolean isPhone(String phone) {
|
public static boolean isPhone(String phone) {
|
||||||
String regex = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";
|
String regex = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";
|
||||||
if (phone.length() != 11) {
|
if (phone.length() != 11) {
|
||||||
@@ -277,7 +314,7 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private String getExcelName() {
|
private String getExcelName() {
|
||||||
String format = DateUtil.format(new Date(), "yyyyMMdd").concat(Constants.D_LINE).concat(IdUtil.simpleUUID().substring(0, 10));
|
String format = DateUtil.format(new Date(), "yyyyMMdd").concat(Constants.D_LINE).concat(IdUtil.simpleUUID().substring(0, 10));
|
||||||
return format.concat(Constants.POMINT).concat(Constants.EXCEL_XLSX);
|
return format.concat(Constants.POMINT).concat(Constants.EXCEL_XLSX);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ public class TokenValidateFilter implements Filter {
|
|||||||
"/partner/pc/flow/qualificationReview/callback",
|
"/partner/pc/flow/qualificationReview/callback",
|
||||||
"/**/ecSync/ecToApplet/**",
|
"/**/ecSync/ecToApplet/**",
|
||||||
"/**/ecSync/labelInfo/**",
|
"/**/ecSync/labelInfo/**",
|
||||||
|
"/**/ecSync/getCrmCreateTime/**",
|
||||||
|
"/**/ecSync/historyLine/**",
|
||||||
|
"/**/ecSync/historyLineTrajectory/**",
|
||||||
"/partner/pc/websocket/**",
|
"/partner/pc/websocket/**",
|
||||||
"/partner/pc/call/**");
|
"/partner/pc/call/**");
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.cool.store.controller;
|
package com.cool.store.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.cool.store.entity.HyPartnerEcTrackLogDO;
|
||||||
import com.cool.store.request.CustomerInfoRequest;
|
import com.cool.store.request.CustomerInfoRequest;
|
||||||
import com.cool.store.request.GetTagRequest;
|
import com.cool.store.request.GetTagRequest;
|
||||||
import com.cool.store.response.ResponseResult;
|
import com.cool.store.response.ResponseResult;
|
||||||
import com.cool.store.service.EcSyncService;
|
import com.cool.store.service.EcSyncService;
|
||||||
import com.cool.store.vo.InterviewScheduleInfoVO;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@@ -24,15 +24,35 @@ public class EcSyncController {
|
|||||||
private EcSyncService ecSyncService;
|
private EcSyncService ecSyncService;
|
||||||
|
|
||||||
@PostMapping(path = "/ecToApplet")
|
@PostMapping(path = "/ecToApplet")
|
||||||
@ApiOperation("ec同步数据到小程序")
|
@ApiOperation("ec同步数据到招商系统")
|
||||||
public ResponseResult<Boolean> ecToApplet(@RequestBody List<CustomerInfoRequest> queryListData){
|
public ResponseResult<Boolean> ecToApplet(@RequestBody List<CustomerInfoRequest> queryListData){
|
||||||
return ResponseResult.success(ecSyncService.ecToApplet(queryListData));
|
return ResponseResult.success(ecSyncService.ecToApplet(queryListData));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(path = "/labelInfo")
|
@PostMapping(path = "/labelInfo")
|
||||||
@ApiOperation("ec同步标签数据到小程序")
|
@ApiOperation("ec同步标签数据到招商系统")
|
||||||
public ResponseResult<Boolean> labelInfo(@RequestBody List<GetTagRequest> getTagRequestList){
|
public ResponseResult<Boolean> labelInfo(@RequestBody List<GetTagRequest> getTagRequestList){
|
||||||
return ResponseResult.success(ecSyncService.labelInfo(getTagRequestList));
|
return ResponseResult.success(ecSyncService.labelInfo(getTagRequestList));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping(path = "/getCrmCreateTime")
|
||||||
|
@ApiOperation("ec同步标签数据到招商系统")
|
||||||
|
public ResponseResult<String> getCrmCreateTime(){
|
||||||
|
return ResponseResult.success(ecSyncService.getLastCrmCreateTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping(path = "/historyLine")
|
||||||
|
@ApiOperation("ec同步线索到招商系统")
|
||||||
|
public ResponseResult<Boolean> historyLine(@RequestBody List<CustomerInfoRequest> resultCustomerInfoList){
|
||||||
|
return ResponseResult.success(ecSyncService.historyLine(resultCustomerInfoList));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping(path = "/historyLineTrajectory")
|
||||||
|
@ApiOperation("ec同步跟进记录到招商系统")
|
||||||
|
public ResponseResult<Integer> historyLineTrajectory(@RequestBody List<HyPartnerEcTrackLogDO> resultTrajectoryList){
|
||||||
|
return ResponseResult.success(ecSyncService.historyLineTrajectory(resultTrajectoryList));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.cool.store.controller;
|
|||||||
|
|
||||||
import com.cool.store.context.CurrentUserHolder;
|
import com.cool.store.context.CurrentUserHolder;
|
||||||
import com.cool.store.exception.ApiException;
|
import com.cool.store.exception.ApiException;
|
||||||
|
import com.cool.store.entity.HyPartnerEcTrackLogDO;
|
||||||
import com.cool.store.request.follow.AddFollowLogRequest;
|
import com.cool.store.request.follow.AddFollowLogRequest;
|
||||||
import com.cool.store.request.follow.AddFollowTaskRequest;
|
import com.cool.store.request.follow.AddFollowTaskRequest;
|
||||||
import com.cool.store.request.follow.FollowTaskIdRequest;
|
import com.cool.store.request.follow.FollowTaskIdRequest;
|
||||||
@@ -18,7 +19,6 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhangchenbiao
|
* @author zhangchenbiao
|
||||||
@@ -47,6 +47,12 @@ public class FollowTaskController {
|
|||||||
return ResponseResult.success(followTaskService.getFollowLogPage(pageNum, pageSize, partnerLineId));
|
return ResponseResult.success(followTaskService.getFollowLogPage(pageNum, pageSize, partnerLineId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取线索ec跟进日志")
|
||||||
|
@GetMapping("/follow/ecLog/page")
|
||||||
|
public ResponseResult<PageInfo<HyPartnerEcTrackLogDO>> getEcFollowLogPage(@RequestParam("pageNum")Integer pageNum, @RequestParam("pageSize")Integer pageSize, @RequestParam("partnerId")String partnerId){
|
||||||
|
return ResponseResult.success(followTaskService.getEcFollowLogPage(pageNum, pageSize, partnerId));
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("添加跟进日志")
|
@ApiOperation("添加跟进日志")
|
||||||
@PostMapping("/follow/log/add")
|
@PostMapping("/follow/log/add")
|
||||||
public ResponseResult<Integer> addFollowLog(@RequestBody @Validated AddFollowLogRequest request){
|
public ResponseResult<Integer> addFollowLog(@RequestBody @Validated AddFollowLogRequest request){
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import com.cool.store.request.AddLineRequest;
|
|||||||
import com.cool.store.response.ResponseResult;
|
import com.cool.store.response.ResponseResult;
|
||||||
import com.cool.store.service.LineHighSeasService;
|
import com.cool.store.service.LineHighSeasService;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,4 +39,11 @@ public class LineHighSeasController {
|
|||||||
public ResponseResult importLine(@RequestParam(value = "file") MultipartFile file) throws Exception {
|
public ResponseResult importLine(@RequestParam(value = "file") MultipartFile file) throws Exception {
|
||||||
return lineHighSeasService.importLine(file);
|
return lineHighSeasService.importLine(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/addCheckout")
|
||||||
|
@ApiOperation("线索手机号校验")
|
||||||
|
public ResponseResult addCheckout(@Param("partnerMobile")String partnerMobile) throws ApiException {
|
||||||
|
return lineHighSeasService.addCheckout(partnerMobile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user