提交ec同步历史线索功能
This commit is contained in:
@@ -70,6 +70,9 @@ public enum ErrorCodeEnum {
|
|||||||
MOBILE_EXIST(500015, "此手机号码已存在,请修改后重试", null),
|
MOBILE_EXIST(500015, "此手机号码已存在,请修改后重试", null),
|
||||||
INVESTMENT_MANAGER_NOT_EXIST(500016, "当前招商经理不存在", null),
|
INVESTMENT_MANAGER_NOT_EXIST(500016, "当前招商经理不存在", null),
|
||||||
PARTNER_MOBILE_EXIST_0(500017, "手机号码已存在", null),
|
PARTNER_MOBILE_EXIST_0(500017, "手机号码已存在", null),
|
||||||
|
PARTNER_MOBILE_INCORRECT(500018, "请输入正确的手机号", null),
|
||||||
|
PUBLIC_LINE_NOT_FOLLOW(500019, "该线索已存在公海,无跟进人", null),
|
||||||
|
LINE_EXIST_FOLLOW(500020, "该线索已存在,跟进人为{0}", null),
|
||||||
|
|
||||||
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
|
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
|
||||||
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
|
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
|
||||||
|
|||||||
@@ -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 "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
@@ -111,6 +111,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 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
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
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())) {
|
||||||
|
return ecLogVo.getContent();
|
||||||
|
}
|
||||||
|
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.getReceiveUser()).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.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;
|
||||||
@@ -88,4 +89,6 @@ public interface FollowTaskService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void followTaskDailyRemind();
|
void followTaskDailyRemind();
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
Boolean addCheckout(String mobile);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
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;
|
||||||
@@ -16,8 +18,7 @@ import com.cool.store.enums.WorkflowStageEnum;
|
|||||||
import com.cool.store.enums.WorkflowStatusEnum;
|
import com.cool.store.enums.WorkflowStatusEnum;
|
||||||
import com.cool.store.exception.ApiException;
|
import com.cool.store.exception.ApiException;
|
||||||
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,11 @@ 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.MybatisBatchUtils;
|
||||||
import com.cool.store.utils.Post;
|
import com.cool.store.utils.Post;
|
||||||
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 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;
|
||||||
@@ -56,7 +59,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 +72,9 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
private EnterpriseUserDAO enterpriseUserDAO;
|
private EnterpriseUserDAO enterpriseUserDAO;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MybatisBatchUtils mybatisBatchUtils;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
|
private HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
|
||||||
|
|
||||||
@@ -79,15 +84,14 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
@Resource
|
@Resource
|
||||||
private LabelService labelService;
|
private LabelService labelService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean ecToApplet(List<CustomerInfoRequest> queryListData) {
|
public boolean ecToApplet(List<CustomerInfoRequest> queryListData) {
|
||||||
for (CustomerInfoRequest customerInfoItem : queryListData) {
|
for (CustomerInfoRequest customerInfoItem : queryListData) {
|
||||||
try {
|
try {
|
||||||
insertSelectiveSync(customerInfoItem);
|
insertSelectiveSync(customerInfoItem);
|
||||||
} 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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -135,6 +139,33 @@ 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));
|
||||||
|
insertSelectiveSync(customerInfoRequest);
|
||||||
|
}
|
||||||
|
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
|
||||||
*
|
*
|
||||||
@@ -157,8 +188,17 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
channelId = channelDO.getChannelId();
|
channelId = channelDO.getChannelId();
|
||||||
}
|
}
|
||||||
String newPartnerId = UUIDUtils.get32UUID();
|
String newPartnerId = UUIDUtils.get32UUID();
|
||||||
|
HyPartnerBaseInfoDO resultBase = new HyPartnerBaseInfoDO();
|
||||||
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
|
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
|
||||||
resultUser.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile()).setUserChannelId(Convert.toInt(channelId)).setEcWantShopArea(customerInfoItem.getEcWantShopArea());
|
resultUser.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile()).setUserChannelId(Convert.toInt(channelId)).setEcWantShopArea(customerInfoItem.getEcWantShopArea());
|
||||||
|
Date time = new Date();
|
||||||
|
if (ObjectUtil.isNotNull(customerInfoItem.getUpdateTime())) {
|
||||||
|
time = customerInfoItem.getUpdateTime();
|
||||||
|
resultUser.setCrmCreateTime(time);
|
||||||
|
if (StringUtil.isNotEmpty(customerInfoItem.getLabelIds())) {
|
||||||
|
resultBase.setUserPortrait(","+customerInfoItem.getLabelIds()+",");
|
||||||
|
}
|
||||||
|
}
|
||||||
HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO();
|
HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO();
|
||||||
String followUserName = customerInfoItem.getFollowUserName();
|
String followUserName = customerInfoItem.getFollowUserName();
|
||||||
String followUserMobile = customerInfoItem.getFollowUserMobile();
|
String followUserMobile = customerInfoItem.getFollowUserMobile();
|
||||||
@@ -175,7 +215,7 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
resultLine.setWorkflowStage(WorkflowStageEnum.INTENT.getCode())
|
resultLine.setWorkflowStage(WorkflowStageEnum.INTENT.getCode())
|
||||||
.setLineStatus(StringUtil.isEmpty(customerInfoItem.getFollowUserName()) ? LineStatusEnum.PUBLIC_SEAS.getCode() : LineStatusEnum.PRIVATE_SEAS.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());
|
resultBase.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile());
|
||||||
|
|
||||||
HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(resultUser.getMobile());
|
HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(resultUser.getMobile());
|
||||||
@@ -183,7 +223,7 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
//有就更新ec没有就插入
|
//有就更新ec没有就插入
|
||||||
if (newUserInfo != null) {
|
if (newUserInfo != null) {
|
||||||
//招商客户姓名为空
|
//招商客户姓名为空
|
||||||
if (ObjectUtil.isNull(newUserInfo.getUsername())||StringUtil.isEmpty(newUserInfo.getUsername())) {
|
if (ObjectUtil.isNull(newUserInfo.getUsername()) || StringUtil.isEmpty(newUserInfo.getUsername())) {
|
||||||
newUserInfo.setUsername(resultUser.getUsername());
|
newUserInfo.setUsername(resultUser.getUsername());
|
||||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
||||||
}
|
}
|
||||||
@@ -201,7 +241,7 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
if (partnerLine != null) {
|
if (partnerLine != null) {
|
||||||
// EC与沪姨合伙人同时存在的线索用户,但存在不同的跟进人,将沪姨合伙人跟进人信息同步至EC覆盖原EC跟进人信息
|
// EC与沪姨合伙人同时存在的线索用户,但存在不同的跟进人,将沪姨合伙人跟进人信息同步至EC覆盖原EC跟进人信息
|
||||||
if (StringUtil.isEmpty(partnerLine.getInvestmentManager())) {
|
if (StringUtil.isEmpty(partnerLine.getInvestmentManager())) {
|
||||||
if (StringUtil.isNotEmpty(resultLine.getInvestmentManager())&&!getFollowLineStatus(partnerLine)) {
|
if (StringUtil.isNotEmpty(resultLine.getInvestmentManager()) && !getFollowLineStatus(partnerLine)) {
|
||||||
resultLine.setId(partnerLine.getId()).setUpdateTime(new Date());
|
resultLine.setId(partnerLine.getId()).setUpdateTime(new Date());
|
||||||
//沪姨合伙人线索存在黑名单,EC该线索分配跟进人同步到沪姨合伙人但线索状态不变,还存在黑名单中
|
//沪姨合伙人线索存在黑名单,EC该线索分配跟进人同步到沪姨合伙人但线索状态不变,还存在黑名单中
|
||||||
resultLine.setLineStatus(partnerLine.getLineStatus().intValue() == LineStatusEnum.BLACKLIST.getCode().intValue()
|
resultLine.setLineStatus(partnerLine.getLineStatus().intValue() == LineStatusEnum.BLACKLIST.getCode().intValue()
|
||||||
@@ -237,48 +277,49 @@ public class EcSyncServiceImpl implements EcSyncService {
|
|||||||
HyPartnerBaseInfoDO partnerIdAndLine = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(partnerLine.getPartnerId(), partnerLine.getId());
|
HyPartnerBaseInfoDO partnerIdAndLine = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(partnerLine.getPartnerId(), partnerLine.getId());
|
||||||
if (partnerIdAndLine == null) {
|
if (partnerIdAndLine == null) {
|
||||||
resultBase.setPartnerId(newPartnerId).setPartnerLineId(partnerLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
resultBase.setPartnerId(newPartnerId).setPartnerLineId(partnerLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
||||||
setCreateTime(new Date());
|
setCreateTime(time).setUpdateTime(time);
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
resultLine.setPartnerId(newPartnerId).setCreateTime(new Date());
|
resultLine.setPartnerId(newPartnerId).setCreateTime(time).setUpdateTime(time);
|
||||||
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
||||||
|
|
||||||
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
||||||
setCreateTime(new Date());
|
setCreateTime(time).setUpdateTime(time);
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
||||||
}
|
}
|
||||||
newUserInfo.setEcWantShopArea(resultUser.getEcWantShopArea());
|
newUserInfo.setEcWantShopArea(resultUser.getEcWantShopArea());
|
||||||
//添加ec意向区域同步
|
//添加ec意向区域同步
|
||||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(newUserInfo);
|
||||||
} else {
|
} else {
|
||||||
resultUser.setPartnerId(newPartnerId).setCreateTime(new Date());
|
resultUser.setPartnerId(newPartnerId).setCreateTime(time).setUpdateTime(time);
|
||||||
hyPartnerUserInfoDAO.insertSelective(resultUser);
|
hyPartnerUserInfoDAO.insertSelective(resultUser);
|
||||||
|
|
||||||
resultLine.setPartnerId(newPartnerId).setCreateTime(new Date());
|
resultLine.setPartnerId(newPartnerId).setCreateTime(time).setUpdateTime(time);
|
||||||
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
hyPartnerLineInfoDAO.insertSelective(resultLine);
|
||||||
|
|
||||||
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())).
|
||||||
setCreateTime(new Date());
|
setCreateTime(time).setUpdateTime(time);
|
||||||
hyPartnerBaseInfoDAO.insertSelective(resultBase);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.cool.store.service.impl;
|
package com.cool.store.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.cool.store.constants.CommonConstants;
|
import com.cool.store.constants.CommonConstants;
|
||||||
@@ -10,18 +11,12 @@ 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.ServiceException;
|
import com.cool.store.exception.ServiceException;
|
||||||
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;
|
||||||
@@ -34,6 +29,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;
|
||||||
@@ -73,6 +69,10 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
|||||||
private RedisUtilPool redisUtilPool;
|
private RedisUtilPool redisUtilPool;
|
||||||
@Resource
|
@Resource
|
||||||
private NoticeService noticeService;
|
private NoticeService noticeService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private HyPartnerEcTrackLogMapper hyPartnerEcTrackLogMapper;
|
||||||
|
|
||||||
@Value("${feishu.notice.link.url}")
|
@Value("${feishu.notice.link.url}")
|
||||||
private String linkUrl;
|
private String linkUrl;
|
||||||
|
|
||||||
@@ -252,6 +252,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
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ 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.dao.*;
|
import com.cool.store.dao.*;
|
||||||
|
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;
|
||||||
@@ -30,6 +31,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;
|
||||||
@@ -79,7 +81,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 +90,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 +106,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");
|
||||||
@@ -136,18 +138,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 +158,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 +221,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 +253,32 @@ 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 Boolean 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 {
|
||||||
|
throw new ServiceException(MessageFormat.format(ErrorCodeEnum.LINE_EXIST_FOLLOW.getMessage(),mobileCheckDTO.getInvestmentManager()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @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 +295,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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.cool.store.controller;
|
package com.cool.store.controller;
|
||||||
|
|
||||||
import com.cool.store.context.CurrentUserHolder;
|
import com.cool.store.context.CurrentUserHolder;
|
||||||
|
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;
|
||||||
@@ -17,7 +18,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
|
||||||
@@ -46,6 +46,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 ResponseResult.success(lineHighSeasService.addCheckout(partnerMobile));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user