Merge branch 'master' into hxd/feat/ecSyncLabel
This commit is contained in:
@@ -13,7 +13,7 @@ public enum FeiShuNoticeMsgEnum {
|
||||
ALLOCATION_INVESTMENT_MANAGER("分配招商经理", "有新的线索于 {0} 分配给您,线索信息 {1} 手机号 {2},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g"),
|
||||
TRANS_INVESTMENT_MANAGER("转让招商经理", "有新的线索于 {0} 转让给您,线索信息 {1} 手机号 {2},请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g"),
|
||||
BATCH_TRANS_INVESTMENT_MANAGER("收到新线索", "有{0}条新线索于 {1} 转让给您,请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g"),
|
||||
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人 {0} 手机号 {1} 于 {2} 提交加盟意向申请,请及时处理", "img_v2_69eb6e5f-bf12-4a02-a47f-b17ce24fcfeg"),
|
||||
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人 {0} 手机号 {1} 于 {2} 提交加盟意向申请,请及时处理", "img_v2_c909097d-67d1-4c11-a911-a2584b67ca6g"),
|
||||
FOLLOW_TASK("线索跟进任务", "{0}", "img_v2_1960b7ef-8c4e-4c3d-8b67-3d918a85578g"),
|
||||
INTERVIEW_APPOINTMENT("面试预约申请", "{0}","img_v2_107bb06b-2a7a-43e1-a6ae-e5d2f2dae17g"),
|
||||
;
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
package com.cool.store.utils;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
|
||||
**/
|
||||
@Repository
|
||||
public class SpringUtils implements BeanFactoryPostProcessor {
|
||||
|
||||
//Spring应用上下文环境
|
||||
private static ConfigurableListableBeanFactory beanFactory;
|
||||
|
||||
@Override
|
||||
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
|
||||
SpringUtils.beanFactory = beanFactory;
|
||||
}
|
||||
|
||||
public static ConfigurableListableBeanFactory getBeanFactory() {
|
||||
return beanFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取对象
|
||||
*
|
||||
* @param name
|
||||
* @return Object 一个以所给名字注册的bean的实例
|
||||
* @throws org.springframework.beans.BeansException
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getBean(String name) throws BeansException {
|
||||
return (T) getBeanFactory().getBean(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取类型为requiredType的对象
|
||||
*
|
||||
* @param clz
|
||||
* @return
|
||||
* @throws org.springframework.beans.BeansException
|
||||
*
|
||||
*/
|
||||
public static <T> T getBean(Class<T> clz) throws BeansException {
|
||||
T result = (T) getBeanFactory().getBean(clz);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
|
||||
*
|
||||
* @param name
|
||||
* @return boolean
|
||||
*/
|
||||
public static boolean containsBean(String name) {
|
||||
return getBeanFactory().containsBean(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
|
||||
*
|
||||
* @param name
|
||||
* @return boolean
|
||||
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
|
||||
*
|
||||
*/
|
||||
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
|
||||
return getBeanFactory().isSingleton(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* @return Class 注册对象的类型
|
||||
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
|
||||
*
|
||||
*/
|
||||
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {
|
||||
return getBeanFactory().getType(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果给定的bean名字在bean定义中有别名,则返回这些别名
|
||||
*
|
||||
* @param name
|
||||
* @return
|
||||
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
|
||||
*
|
||||
*/
|
||||
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
|
||||
return getBeanFactory().getAliases(name);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.dao;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dto.log.LineLogInfo;
|
||||
import com.cool.store.entity.HyPartnerTaskInfoLogDO;
|
||||
import com.cool.store.enums.OperateTypeEnum;
|
||||
@@ -50,6 +51,19 @@ public class HyPartnerTaskInfoLogDAO {
|
||||
insertSelective(logInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除日志
|
||||
* @param lineId
|
||||
* @param message
|
||||
* @return
|
||||
*/
|
||||
public int deleteByLineId(Long lineId, String message){
|
||||
if(Objects.isNull(lineId)){
|
||||
return CommonConstants.ZERO;
|
||||
}
|
||||
return hyPartnerTaskInfoLogMapper.deleteByLineId(lineId, message);
|
||||
}
|
||||
|
||||
public int updateLineId(String newPartnerId,Long newLineId,Long oldLineId){
|
||||
if (newLineId==null || Objects.isNull(oldLineId)){
|
||||
return 0;
|
||||
|
||||
@@ -39,4 +39,12 @@ public interface HyPartnerTaskInfoLogMapper {
|
||||
* @return
|
||||
*/
|
||||
Page<HyPartnerTaskInfoLogDO> getLogPageByLineId(@Param("partnerLineId")Long partnerLineId, @Param("operateTypes")List<String> operateTypes);
|
||||
|
||||
/**
|
||||
* 删除线索
|
||||
* @param partnerLineId
|
||||
* @param message
|
||||
* @return
|
||||
*/
|
||||
int deleteByLineId(@Param("partnerLineId") Long partnerLineId, @Param("message") String message);
|
||||
}
|
||||
@@ -169,7 +169,13 @@
|
||||
<if test="deadlineEndTime != null">
|
||||
<![CDATA[ and a.deadline <= #{deadlineEndTime}]]>
|
||||
</if>
|
||||
order by a.deadline desc, a.id desc
|
||||
<if test="taskStatus == 0">
|
||||
order by a.deadline asc, a.id desc
|
||||
</if>
|
||||
<if test="taskStatus == 2">
|
||||
order by a.deadline desc, a.id desc
|
||||
</if>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="getFollowTask" resultMap="BaseResultMap">
|
||||
@@ -186,7 +192,12 @@
|
||||
</update>
|
||||
|
||||
<update id="cancelUndoFollowTask">
|
||||
update hy_follow_task set task_status = '3' where partner_line_id = #{partnerLineId} and task_status in ('0', '2')
|
||||
update
|
||||
hy_follow_task
|
||||
set
|
||||
task_status = if(deadline >= now(), 3, 5)
|
||||
where
|
||||
partner_line_id = #{partnerLineId} and task_status in ('0', '2')
|
||||
</update>
|
||||
|
||||
<select id="getRemindFollowUserIds" resultType="string">
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
from hy_intend_dev_zone_info
|
||||
where type = #{type}
|
||||
and deleted = 0
|
||||
order by create_time desc , id desc
|
||||
</select>
|
||||
|
||||
<select id="getZoneInfoByRegionIds" resultMap="BaseResultMap">
|
||||
|
||||
@@ -240,6 +240,7 @@
|
||||
nation = #{record.nation},
|
||||
birthdate = #{record.birthdate},
|
||||
id_card = #{record.idCard},
|
||||
user_portrait = #{record.userPortrait},
|
||||
id_card_photo_front = #{record.idCardPhotoFront},
|
||||
id_card_photo_black = #{record.idCardPhotoBlack},
|
||||
live_address = #{record.liveAddress},
|
||||
|
||||
@@ -317,18 +317,15 @@
|
||||
b.id as id,
|
||||
hpci.intention_contract_no as intentionContractNo
|
||||
from hy_partner_line_info hpli
|
||||
left join hy_partner_interview a on hpli.id = a.partner_line_id
|
||||
left join hy_partner_interview a on hpli.id = a.partner_line_id and a.deleted = 0
|
||||
left join hy_partner_base_info bi on hpli.id = bi.partner_line_id
|
||||
left join hy_partner_interview_plan b on a.interview_plan_id = b.id
|
||||
left join hy_partner_interview_plan b on a.interview_plan_id = b.id and b.deleted = 0
|
||||
left join hy_partner_certification_info hpci on hpci.partner_interview_id = a.id
|
||||
LEFT join call_record cr on hpli.id = cr.partner_line_id
|
||||
where hpli.deleted = 0 and hpli.line_status!=3
|
||||
and (cr.id in (
|
||||
select max(id) maxId
|
||||
from call_record group by partner_line_id) or cr.id is null)
|
||||
<if test="filter">
|
||||
and b.deleted = 0
|
||||
</if>
|
||||
<if test="workflowStage!=null and workflowStage!=''">
|
||||
and hpli.workflow_stage = #{workflowStage}
|
||||
</if>
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
<include refid="Blob_Column_List"/>
|
||||
from hy_partner_task_info_log
|
||||
where partner_line_id = #{partnerLineId}
|
||||
and operate_type = #{operateType}
|
||||
and operate_type = #{operateType} and deleted = '0'
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
@@ -156,8 +156,12 @@
|
||||
from
|
||||
hy_partner_task_info_log
|
||||
where
|
||||
partner_line_id= #{partnerLineId} and operate_type in <foreach collection="operateTypes" open="(" close=")" separator="," item="operateType">#{operateType}</foreach>
|
||||
deleted = '0' and partner_line_id= #{partnerLineId} and operate_type in <foreach collection="operateTypes" open="(" close=")" separator="," item="operateType">#{operateType}</foreach>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<update id="deleteByLineId">
|
||||
update hy_partner_task_info_log set deleted = '1', message = #{message} where partner_line_id= #{partnerLineId}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -43,7 +43,7 @@ public class HyFollowTaskDO implements Serializable {
|
||||
@ApiModelProperty("任务状态:0:待完成、1:已完成、2:已逾期、3:作废、4逾期完成、5逾期作废")
|
||||
private Integer taskStatus;
|
||||
|
||||
@ApiModelProperty("任务截止时间")
|
||||
@ApiModelProperty("完成时间")
|
||||
private Date finishTime;
|
||||
|
||||
@ApiModelProperty("删除标识")
|
||||
|
||||
@@ -45,10 +45,11 @@ public class UpdateFollowTaskRequest {
|
||||
@ApiModelProperty("任务截止时间")
|
||||
private Date deadline;
|
||||
|
||||
public static HyFollowTaskDO convertDO(Long partnerLineId, UpdateFollowTaskRequest request){
|
||||
public static HyFollowTaskDO convertDO(Long partnerLineId, String followUserId, UpdateFollowTaskRequest request){
|
||||
HyFollowTaskDO result = new HyFollowTaskDO();
|
||||
result.setId(request.getFollowTaskId());
|
||||
result.setPartnerLineId(partnerLineId);
|
||||
result.setFollowUserId(followUserId);
|
||||
result.setTaskTitle(request.getTaskTitle());
|
||||
result.setCommunicationType(request.getCommunicationType());
|
||||
result.setDeadline(request.getDeadline());
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.cool.store.config.websocket;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||
|
||||
import javax.websocket.HandshakeResponse;
|
||||
import javax.websocket.server.HandshakeRequest;
|
||||
import javax.websocket.server.ServerEndpointConfig;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
public class WebSocketConfig extends ServerEndpointConfig.Configurator {
|
||||
|
||||
@Bean
|
||||
public ServerEndpointExporter serverEndpointExporter() {
|
||||
return new ServerEndpointExporter();
|
||||
}
|
||||
|
||||
/**
|
||||
* 建立握手时,连接前的操作
|
||||
*/
|
||||
@Override
|
||||
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
|
||||
// 这个userProperties 可以通过 session.getUserProperties()获取
|
||||
final Map<String, Object> userProperties = sec.getUserProperties();
|
||||
Map<String, List<String>> headers = request.getHeaders();
|
||||
List<String> mobiles = headers.get("mobiles");
|
||||
userProperties.put("mobiles", mobiles.get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化端点对象,也就是被@ServerEndpoint所标注的对象
|
||||
*/
|
||||
@Override
|
||||
public <T> T getEndpointInstance(Class<T> clazz) throws InstantiationException {
|
||||
return super.getEndpointInstance(clazz);
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,30 @@
|
||||
package com.cool.store.handler;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.config.websocket.WebSocketConfig;
|
||||
import com.cool.store.utils.RedisUtil;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.SpringUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.websocket.*;
|
||||
import javax.websocket.server.PathParam;
|
||||
import javax.websocket.server.ServerEndpoint;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
@ServerEndpoint("/websocket/{tenantId}")
|
||||
@ServerEndpoint(value="/websocket/{tenantId}",configurator = WebSocketConfig.class)
|
||||
public class WebSocketServer {
|
||||
|
||||
/**
|
||||
@@ -34,12 +44,24 @@ public class WebSocketServer {
|
||||
*/
|
||||
private String tenantId = "";
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private List<String> mobiles;
|
||||
|
||||
private static RedisUtilPool redisUtilPool = SpringUtils.getBean(RedisUtilPool.class);
|
||||
/**
|
||||
* 连接建立成
|
||||
* 功调用的方法
|
||||
*/
|
||||
@OnOpen
|
||||
public void onOpen(Session session, @PathParam("tenantId") String tenantId) {
|
||||
String mobiles = getHeader(session, "mobiles");
|
||||
if(StringUtils.isEmpty(mobiles)){
|
||||
return;
|
||||
}
|
||||
|
||||
this.mobiles = Arrays.asList(mobiles.split(","));
|
||||
this.session = session;
|
||||
this.tenantId = tenantId;
|
||||
if (webSocketMap.containsKey(tenantId)) {
|
||||
@@ -52,6 +74,9 @@ public class WebSocketServer {
|
||||
//在线数加1
|
||||
addOnlineCount();
|
||||
}
|
||||
for (String mobile : this.mobiles) {
|
||||
redisUtilPool.setString(mobile, tenantId, 3600);
|
||||
}
|
||||
log.info("用户连接:" + tenantId + ",当前在线人数为:" + getOnlineCount());
|
||||
sendMessage("连接成功");
|
||||
}
|
||||
@@ -63,6 +88,7 @@ public class WebSocketServer {
|
||||
@OnClose
|
||||
public void onClose() {
|
||||
if (webSocketMap.containsKey(tenantId)) {
|
||||
webSocketMap.get(tenantId).mobiles.forEach(mobile -> redisUtilPool.delKey(mobile));
|
||||
webSocketMap.remove(tenantId);
|
||||
//从set中删除
|
||||
subOnlineCount();
|
||||
@@ -177,6 +203,39 @@ public class WebSocketServer {
|
||||
* @return
|
||||
*/
|
||||
public static boolean isOnline(String tenantId) {
|
||||
if(StringUtils.isEmpty(tenantId)) {
|
||||
return false;
|
||||
}
|
||||
return webSocketMap.containsKey(tenantId);
|
||||
}
|
||||
|
||||
public static String getHeader(Session session, String headerName) {
|
||||
final String header = (String) session.getUserProperties().get(headerName);
|
||||
if (StrUtil.isBlank(header)) {
|
||||
log.error("获取header失败,不安全的链接,即将关闭");
|
||||
try {
|
||||
session.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return header;
|
||||
}
|
||||
|
||||
public static String getTenantIdByMobile(String mobile){
|
||||
String jsonStr = redisUtilPool.getString(mobile);
|
||||
if (StringUtils.isNotEmpty(jsonStr)){
|
||||
return jsonStr;
|
||||
}
|
||||
|
||||
//如果redis中没有,循环webSocketMap,找到对应的tenantId
|
||||
for (String key : webSocketMap.keySet()) {
|
||||
WebSocketServer webSocketServer = webSocketMap.get(key);
|
||||
if (webSocketServer.mobiles.contains(mobile)){
|
||||
return webSocketServer.tenantId;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@ import com.cool.store.request.CallUpReq;
|
||||
import com.cool.store.service.CallService;
|
||||
import com.cool.store.service.LogService;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -60,8 +61,9 @@ public class CallServiceImpl implements CallService {
|
||||
private LogService logService;
|
||||
@Override
|
||||
public String callUp(CallUpReq request) throws ApiException {
|
||||
String tenantId = WebSocketServer.getTenantIdByMobile(request.getOutgoingMobile());
|
||||
//校验拨出手机号APP是否在线
|
||||
boolean isOnline = WebSocketServer.isOnline(request.getOutgoingMobile());
|
||||
boolean isOnline = WebSocketServer.isOnline(tenantId);
|
||||
if (!isOnline) {
|
||||
throw new ApiException(ErrorCodeEnum.MOBILE_APP_NOT_ONLINE_ERROR);
|
||||
}
|
||||
@@ -85,7 +87,7 @@ public class CallServiceImpl implements CallService {
|
||||
callUpDTO.setTransNo(transNo);
|
||||
callUpDTO.setOutgoingMobile(request.getOutgoingMobile());
|
||||
callUpDTO.setIncomingMobile(request.getIncomingMobile());
|
||||
boolean sendFlag = WebSocketServer.sendInfo(JSON.toJSONString(callUpDTO), callRecordDO.getOutgoingMobile());
|
||||
boolean sendFlag = WebSocketServer.sendInfo(JSON.toJSONString(callUpDTO), tenantId);
|
||||
if (!sendFlag) {
|
||||
throw new ApiException(ErrorCodeEnum.CREATE_CALL_REQUEST_ERROR);
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
private RedisUtilPool redisUtilPool;
|
||||
@Resource
|
||||
private NoticeService noticeService;
|
||||
@Value("${feishu.notice.link.url:null}")
|
||||
@Value("${feishu.notice.link.url}")
|
||||
private String linkUrl;
|
||||
|
||||
@Override
|
||||
@@ -156,7 +156,7 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
throw new ServiceException(ErrorCodeEnum.DATELINE_BEFORE_NOW);
|
||||
}
|
||||
checkLine(followTask.getPartnerLineId());
|
||||
HyFollowTaskDO task = UpdateFollowTaskRequest.convertDO(followTask.getPartnerLineId(), request);
|
||||
HyFollowTaskDO task = UpdateFollowTaskRequest.convertDO(followTask.getPartnerLineId(),followTask.getFollowUserId(), request);
|
||||
if(!request.getDeadline().equals(followTask.getDeadline()) && (request.getDeadline().getTime() - System.currentTimeMillis()) / CommonConstants.ONE_THOUSAND < CommonConstants.AN_HOUR_SECONDS){
|
||||
//一小时内的任务立即发送通知
|
||||
sendMessage(task);
|
||||
@@ -274,12 +274,6 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
if(Objects.isNull(partnerInfo)){
|
||||
return;
|
||||
}
|
||||
/*String lockKey = MessageFormat.format(CommonConstants.FOLLOW_TASK_NOTICE_KEY, task.getFollowUserId(), task.getId());
|
||||
boolean result = redisUtilPool.setNxExpire(lockKey, DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC), CommonConstants.FOLLOW_TASK_NOTICE_LOCK_TIMES);
|
||||
if(!result){
|
||||
//一小时内发送过不再发送通知
|
||||
return;
|
||||
}*/
|
||||
String dateline = DateUtil.format(task.getDeadline(), CoolDateUtils.DATE_FORMAT_SEC_7);
|
||||
String content = MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT, dateline, partnerInfo.getUsername(), partnerInfo.getMobile());
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(task.getFollowUserId()), content);
|
||||
|
||||
@@ -239,7 +239,7 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
|
||||
// 新线索绑定身份证号
|
||||
HyPartnerBaseInfoDO newBaseInfo = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(currentUser.getPartnerId(), lineId);
|
||||
fillBaseInfoIdCard(newBaseInfo, oldBaseInfo.getIdCard(), oldBaseInfo.getIdCardPhotoFront(), oldBaseInfo.getIdCardPhotoBlack(), oldBaseInfo.getUsername(),
|
||||
oldBaseInfo.getSex(), oldBaseInfo.getBirthdate(), oldBaseInfo.getNation(), oldBaseInfo.getLiveAddress(), oldBaseInfo.getStatus());
|
||||
oldBaseInfo.getSex(), oldBaseInfo.getBirthdate(), oldBaseInfo.getNation(), oldBaseInfo.getLiveAddress(), oldBaseInfo.getStatus(),oldBaseInfo.getUserPortrait());
|
||||
newBaseInfo.setStatus(oldBaseInfo.getStatus());
|
||||
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(newBaseInfo);
|
||||
//修改名称
|
||||
@@ -260,7 +260,7 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
|
||||
hyPartnerUserInfoDO.setShopId(oldPartnerUser.getShopId());
|
||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
|
||||
// 老的身份证信息置空
|
||||
fillBaseInfoIdCard(oldBaseInfo, null, null, null, null, null, null, null, null, null);
|
||||
fillBaseInfoIdCard(oldBaseInfo, null, null, null, null, null, null, null, null, null,null);
|
||||
oldBaseInfo.setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode()));
|
||||
hyPartnerBaseInfoDAO.updateByPrimaryKey(oldBaseInfo);
|
||||
hyPartnerIntentInfoDAO.updateLineId(newPartnerId,newLindId,oldLineInfo.getId());
|
||||
@@ -268,7 +268,11 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
|
||||
hyPartnerInterviewPlanDAO.updateLineId(newPartnerId,newLindId,oldLineInfo.getId());
|
||||
hyInterviewDAO.updateLineId(newPartnerId,newLindId,oldLineInfo.getId());
|
||||
hyPartnerCertificationInfoMapper.updateLineId(newPartnerId,newLindId,oldLineInfo.getId());
|
||||
//软删新线索操作日志
|
||||
hyPartnerTaskInfoLogDAO.deleteByLineId(newLindId, "换绑");
|
||||
hyPartnerTaskInfoLogDAO.updateLineId(newPartnerId,newLindId,oldLineInfo.getId());
|
||||
//先作废新的线索跟进任务
|
||||
hyFollowTaskDAO.cancelUndoFollowTask(newLindId);
|
||||
hyFollowTaskDAO.changeLineId(oldLineInfo.getId(), newLindId);
|
||||
String cacheKeyBaseInfo = MessageFormat.format(RedisConstant.PARTNER_BASEINFO_CACHE_KEY, newPartnerId, newLindId);
|
||||
String cacheKeyClerkInfo = MessageFormat.format(RedisConstant.PARTNER_CLERKINFO_CACHE_KEY,newPartnerId, newLindId);
|
||||
@@ -317,12 +321,13 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
|
||||
}
|
||||
|
||||
private void fillBaseInfoIdCard(HyPartnerBaseInfoDO newBaseInfo, String idCard, String idCardPhotoFront, String idCardPhotoBlack,
|
||||
String username, Integer sex, Date birthdate, String nation, String liveAddress, Integer status) {
|
||||
String username, Integer sex, Date birthdate, String nation, String liveAddress, Integer status,String userPortrait) {
|
||||
newBaseInfo.setIdCard(idCard);
|
||||
newBaseInfo.setIdCardPhotoBlack(idCardPhotoFront);
|
||||
newBaseInfo.setIdCardPhotoFront(idCardPhotoBlack);
|
||||
newBaseInfo.setUsername(username);
|
||||
newBaseInfo.setSex(sex);
|
||||
newBaseInfo.setUserPortrait(userPortrait);
|
||||
newBaseInfo.setBirthdate(birthdate);
|
||||
newBaseInfo.setNation(nation);
|
||||
newBaseInfo.setLiveAddress(liveAddress);
|
||||
|
||||
@@ -86,7 +86,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
|
||||
HyPartnerUserChannelDAO hyPartnerUserChannelDAO;
|
||||
|
||||
|
||||
@Value("${feishu.notice.link.url:null}")
|
||||
@Value("${feishu.notice.link.url}")
|
||||
private String linkUrl;
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -194,8 +194,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
//发送飞书工作通知
|
||||
if (sendFlag){
|
||||
String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7);
|
||||
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerLineId(request.getLineId());
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),dateTime,hyPartnerBaseInfoDO.getUsername(),hyPartnerBaseInfoDO.getMobile());
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
||||
}
|
||||
|
||||
//作废待完成&已逾期的任务
|
||||
@@ -286,9 +286,9 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
//给招商经理发送飞书工作通知
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
userIdList.add(user.getUserId());
|
||||
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerLineId(x.getId());
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(x.getPartnerId());
|
||||
String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7);
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,userIdList,dateTime,hyPartnerBaseInfoDO.getUsername(),hyPartnerBaseInfoDO.getMobile());
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,userIdList,dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
||||
|
||||
LineLogInfo lineLogInfo = new LineLogInfo(x.getPartnerId(), x.getId(), user.getUserId(),
|
||||
user.getName(), OperateTypeEnum.ALLOCATION_INVESTMENT_MANAGER,
|
||||
|
||||
@@ -71,7 +71,7 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
@Value("${hs.sms.templateCode:null}")
|
||||
private String templateCode;
|
||||
|
||||
@Value("${feishu.notice.link.url:null}")
|
||||
@Value("${feishu.notice.link.url}")
|
||||
private String linkUrl;
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.cool.store.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||
|
||||
/**
|
||||
* WebSocket的配置信息
|
||||
*/
|
||||
@Configuration
|
||||
public class WebSocketConfig {
|
||||
@Bean
|
||||
public ServerEndpointExporter serverEndpointExporter() {
|
||||
|
||||
return new ServerEndpointExporter();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user