同步飞鱼

master
wujingtao 2 years ago
parent 1f284a9355
commit 4916de938b

@ -11,9 +11,9 @@ import java.util.regex.Pattern;
public class MobileUtil {
/**
* 133,149,153,173,177,180,181,189,199,1349,1410,1700,1701,1702
* 133,149,153,173,177,180,181,189,191,199,1349,1410,1700,1701,1702
**/
private static final String CHINA_TELECOM_PATTERN = "(?:^(?:\\+86)?1(?:33|49|53|7[37]|8[019]|99)\\d{8}$)|(?:^(?:\\+86)?1349\\d{7}$)|(?:^(?:\\+86)?1410\\d{7}$)|(?:^(?:\\+86)?170[0-2]\\d{7}$)";
private static final String CHINA_TELECOM_PATTERN = "(?:^(?:\\+86)?1(?:33|49|53|7[37]|8[019]|9[19])\\d{8}$)|(?:^(?:\\+86)?1349\\d{7}$)|(?:^(?:\\+86)?1410\\d{7}$)|(?:^(?:\\+86)?170[0-2]\\d{7}$)";
/**
* 130,131,132,145,146,155,156,166,171,175,176,185,186,1704,1707,1708,1709
@ -22,9 +22,9 @@ public class MobileUtil {
/**
*
* 134,135,136,137,138,139,147,148,150,151,152,157,158,159,178,182,183,184,187,188,198,1440,1703,1705,1706
* 134,135,136,137,138,139,147,148,150,151,152,157,158,159,178,182,183,184,187,188,195,198,1440,1703,1705,1706
**/
private static final String CHINA_MOBILE_PATTERN = "(?:^(?:\\+86)?1(?:3[4-9]|4[78]|5[0-27-9]|78|8[2-478]|98)\\d{8}$)|(?:^(?:\\+86)?1440\\d{7}$)|(?:^(?:\\+86)?170[356]\\d{7}$)";
private static final String CHINA_MOBILE_PATTERN = "(?:^(?:\\+86)?1(?:3[4-9]|4[78]|5[0-27-9]|78|8[2-478]|98|95)\\d{8}$)|(?:^(?:\\+86)?1440\\d{7}$)|(?:^(?:\\+86)?170[356]\\d{7}$)";
/**
*
@ -42,6 +42,9 @@ public class MobileUtil {
return false;
}
public static void main(String[] args) {
System.out.println(checkChinaMobile("19521644565"));
}
/**
*
*

@ -125,4 +125,6 @@ public class ClueDto implements Serializable {
private Double turnoverAmount;
@ApiModelProperty(value = "线索类型")
private Integer clueType;
@ApiModelProperty(value = "投流信息")
private String castInfo;
}

@ -78,5 +78,5 @@ public class BaseTask implements Serializable {
@ApiModelProperty(value = "特殊任务 1-动态表单任务 2-员工个人上传任务")
@Column(name = "is_form")
private Integer isForm;
private Integer isForm=0;
}

@ -56,7 +56,7 @@ public class ClueJpa {
public List<ClueDto> getClueList(ClueQueryCriteria clueQueryCriteria, Pageable pageable) {
StringBuilder sql = new StringBuilder();
sql.append("select c.id as id,c.name as name,c.nid as nid,c.wx as wx,c.origin as origin,c.collect_time as collectTime,c.address as address,c.record_id as recordId," +
"c.create_time as createTime,c.amount as amount,c.platform as platform,c.tag as tag,c.audio_url as audioUrl, cm.remark as remark,cm.member_status as memberStatus,cm.organize_id as organizeId,cm.member_id as memberId," +
"c.create_time as createTime,c.amount as amount,c.platform as platform,c.tag as tag,c.audio_url as audioUrl,c.cast_info as castInfo, cm.remark as remark,cm.member_status as memberStatus,cm.organize_id as organizeId,cm.member_id as memberId," +
"cm.optimistic_version as optimisticVersion,cm.source_label as sourceLabel,cm.task_id as taskId,cm.clue_stage as clueStage,cm.clue_call_status as clueCallStatus," +
"cm.newest_call_time as newestCallTime ,cm.turnover_amount as turnoverAmount " +
"from tb_clue as c LEFT JOIN tb_clue_middle as cm on c.id = cm.clue_id where 1=1 ");
@ -230,6 +230,7 @@ public class ClueJpa {
clueDto.setPlatform((String) row.get("platform"));
clueDtoList.add(clueDto);
clueDto.setTurnoverAmount((Double) row.get("turnoverAmount"));
clueDto.setCastInfo((String) row.get("castInfo"));
}
return clueDtoList;
}
@ -281,7 +282,7 @@ public class ClueJpa {
Integer clueStage = clueQueryCriteria.getClueStage();
List<Long> userIdList = clueQueryCriteria.getUserIdList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT tc.id as id,tc.nid as nid,tc.audio_url as audioUrl,tc.create_time as createTime,tc.name as name,tc.origin as origin,tcm.task_id as taskId,tcm.member_status as memberStatus," +
sql.append("SELECT tc.id as id,tc.nid as nid,tc.audio_url as audioUrl,tc.create_time as createTime,tc.name as name,tc.origin as origin,tc.cast_info as castInfo , tcm.task_id as taskId,tcm.member_status as memberStatus," +
"tcm.clue_stage as clueStage,tcm.clue_call_status as clueCallStatus,tcm.member_id as memberId,tcm.source_label as sourceLabel ,tcm.turnover_amount as turnoverAmount " +
"FROM tb_clue_middle tcm LEFT JOIN tb_clue tc ON tcm.clue_id = tc.id WHERE 1 = 1 ");
if (CollUtil.isNotEmpty(taskIds)) {
@ -371,6 +372,7 @@ public class ClueJpa {
JSONArray sourceLabel = JSONUtil.parseArray(row.get("sourceLabel"));
clue.setSourceLabel(sourceLabel);
clue.setTurnoverAmount((Double) row.get("turnoverAmount"));
clue.setCastInfo((String) row.get("castInfo"));
}
arrayList.add(clue);
}

@ -3,6 +3,7 @@ package com.baiye.module.entity;
import com.baiye.model.entity.BaseClue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
import lombok.Data;
@ -20,46 +21,48 @@ import lombok.Data;
@ApiModel(value = "Clue")
public class Clue extends BaseClue {
@Id
@ApiModelProperty(value = "线索表主键id自动递增")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Id
@ApiModelProperty(value = "线索表主键id自动递增")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Transient
private Long taskId;
@Transient
private Long taskId;
@Transient
private String taskName;
@Transient
private String taskName;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Transient
private Integer memberStatus;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Transient
private Integer memberStatus;
@ApiModelProperty(value = "线索阶段0新线索 1待沟通 2有意向 3已加微信 4无意向")
@Transient
private Integer clueStage;
@ApiModelProperty(value = "线索阶段0新线索 1待沟通 2有意向 3已加微信 4无意向")
@Transient
private Integer clueStage;
@ApiModelProperty(value = "线索通话状态0无状态 1未接听 2已接通")
@Transient
private Integer clueCallStatus;
@ApiModelProperty(value = "线索通话状态0无状态 1未接听 2已接通")
@Transient
private Integer clueCallStatus;
@ApiModelProperty(value = "线索分配人")
@Transient
private Long memberId;
@ApiModelProperty(value = "线索分配人")
@Transient
private Long memberId;
@ApiModelProperty(value = "线索分配人名称")
@Transient
private String distributeUserName;
@ApiModelProperty(value = "线索分配人名称")
@Transient
private String distributeUserName;
@ApiModelProperty(value = "标识")
@Transient
private String tag;
@ApiModelProperty(value = "标识")
@Transient
private String tag;
@Transient
private Object sourceLabel;
@Transient
private Double turnoverAmount;
@ApiModelProperty(value = "表单录音")
private String audioUrl;
@Transient
private Object sourceLabel;
@Transient
private Double turnoverAmount;
@ApiModelProperty(value = "表单录音")
private String audioUrl;
@ApiModelProperty(value = "投流信息")
private String castInfo;
}

@ -249,7 +249,7 @@ public class ClueServiceImpl implements ClueService {
}
//通过任务判断线索是否是飞鱼任务
Task task = taskClient.queryDetails(clueDto.getTaskId()).getBody();
if (ObjectUtil.isNotEmpty(task) && task.getIsForm() == DefaultNumberConstants.THREE_NUMBER) {
if (ObjectUtil.isNotEmpty(task) && task.getIsForm() != null && task.getIsForm() == DefaultNumberConstants.THREE_NUMBER) {
clueDto.setClueType(DefaultNumberConstants.ONE_NUMBER);
}
}
@ -597,6 +597,9 @@ public class ClueServiceImpl implements ClueService {
if (nid.length() == 24) {
nid = DecryptPnoUtil.decryptPno(nid);
}
if (!MobileUtil.checkPhone(nid)) {
throw new BadRequestException("号码非法,请检查");
}
BeanUtils.copyProperties(dynamicTaskDto, clue);
clue.setOrigin(5);
clue.setNid(nid);

@ -24,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
@ -97,10 +99,16 @@ public class OceanEngineSync {
if (CollUtil.isEmpty(array)) {
return;
}
log.info("data=={}", JSONUtil.toJsonStr(array));
parseAndSaveData(userId, taskId, array);
log.info("同步成功==========");
}
private boolean checkCountName(String countName) {
Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
Matcher m = p.matcher(countName);
return m.find();
}
/**
* 线
*
@ -119,6 +127,14 @@ public class OceanEngineSync {
String phone = json.getStr("telephone");
String weixin = json.getStr("weixin");
String address = json.getStr("location");
JSONObject remarkDict = json.getJSONObject("remark_dict");
HashMap<String, Object> map = JSONUtil.toBean(remarkDict, HashMap.class);
StringBuilder stringBuilder = new StringBuilder();
for (String key : map.keySet()) {
if (checkCountName(key)) {
stringBuilder.append(key).append(": ").append(map.get(key)).append("; ");
}
}
//===========原数据保存
OceanEngineSource oceanEngineSource = new OceanEngineSource();
oceanEngineSource.setUserId(userId);
@ -129,11 +145,12 @@ public class OceanEngineSync {
Clue clue = new Clue();
clue.setOrigin(5);
clue.setNid(phone);
clue.setCollectTime(DateUtil.parseDate(createTime));
clue.setCollectTime(DateUtil.parseDateTime(createTime));
clue.setCreateBy(userId);
clue.setName(name);
clue.setWx(weixin);
clue.setAddress(address);
clue.setCastInfo(stringBuilder.toString());
Clue save = clueRepository.save(clue);
ClueMiddle clueMiddle = new ClueMiddle();

Loading…
Cancel
Save