Merge remote-tracking branch 'origin/dev/feat/partner1.3_20230828' into dev/feat/partner1.3_20230828

This commit is contained in:
俞扬
2023-08-21 16:38:58 +08:00
22 changed files with 125 additions and 169 deletions

View File

@@ -46,7 +46,7 @@ public enum ErrorCodeEnum {
GET_INFO_ERROR(1021078, "获取信息异常", null),
GET_PHONENUMBER_INFO_ERROR(1021079, "手机号归属地获取异常", null),
IDENTITY_CARD_PARSE_FAIL(1021080, "身份证解析失败", null),
WECHAT_BIND_OTHER_MOBILE(1021081, "该微信已绑定其它手机号,请核对", null),
WECHAT_BIND_OTHER_MOBILE(1021081, "授权号码有误,请核对", null),
PARAMS_REQUIRED(400002, "参数缺失!", null),
DATA_CONVERT_ERROR(400002, "日期转换异常!", null),
PARENT_NODE_NOT_EXIST(400002, "父节点不存在", null),

View File

@@ -1,5 +1,7 @@
package com.cool.store.enums;
import com.alibaba.fastjson.JSONObject;
/**
* @Author: young.yu
* @Date: 2023-07-19 16:49
@@ -7,34 +9,40 @@ package com.cool.store.enums;
*/
public enum FeiShuNoticeMsgEnum {
//分配招商经理
ALLOCATION_INVESTMENT_MANAGER("分配招商经理", "有新的线索 于 {0} 分配给您,线索信息{1}手机号{2},请及时跟进"),
//转让招商经理
TRANS_INVESTMENT_MANAGER("转让招商经理", "有新的线索 于 {0} 转让给您,线索信息{1}手机号{2},请及时跟进"),
//意向申请通知
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人{0}手机号{1}于 {2} 提交加盟意向申请,请及时处理");
common_notice("工作台通知", "{0}", "img_v2_45d7a901-1eab-498b-a760-b38d287f0c1g"),
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"),
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人{0}手机号{1}于 {2} 提交加盟意向申请,请及时处理", "img_v2_69eb6e5f-bf12-4a02-a47f-b17ce24fcfeg"),
FOLLOW_TASK("线索跟进任务", "{0}", "img_v2_1960b7ef-8c4e-4c3d-8b67-3d918a85578g"),
INTERVIEW_APPOINTMENT("面试预约申请", "{0}","img_v2_107bb06b-2a7a-43e1-a6ae-e5d2f2dae17g"),
;
private String title;
private String content;
private String imageMediaId;
FeiShuNoticeMsgEnum(String title, String content) {
FeiShuNoticeMsgEnum(String title, String content, String imageMediaId) {
this.title = title;
this.content = content;
this.imageMediaId = imageMediaId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
public String getImageMediaId() {
return imageMediaId;
}
public JSONObject getMessageObject() {
JSONObject object = new JSONObject();
object.put("name", this.title);
object.put("imageMediaId", this.imageMediaId);
return object;
}
}

View File

@@ -1,61 +0,0 @@
package com.cool.store.enums;
import com.alibaba.fastjson.JSONObject;
/**
* @author zhangchenbiao
* @FileName: MessageTypeEnum
* @Description:
* @date 2023-06-15 10:14
*/
public enum MessageTypeEnum {
SCHEDULE_REMINDER("schedule_reminder", "日历提醒事件", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
FOLLOW_TASK("follow_task", "跟进任务提醒", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag")
;
private String code;
private String name;
private String imageMediaId;
MessageTypeEnum(String code, String name, String imageMediaId) {
this.code = code;
this.name = name;
this.imageMediaId = imageMediaId;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getImageMediaId() {
return imageMediaId;
}
public static String getImageMediaId(String code){
for (MessageTypeEnum value : MessageTypeEnum.values()) {
if(value.code.equals(code)){
return value.imageMediaId;
}
}
return null;
}
public JSONObject getMessageTypeObject() {
JSONObject object = new JSONObject();
object.put("code", this.code);
object.put("name", this.name);
object.put("imageMediaId", this.imageMediaId);
return object;
}
}

View File

@@ -122,18 +122,18 @@ public class HyFollowTaskDAO {
* 分页获取任务
* @param followUserId
* @param taskStatus
* @param deadlineStartTIme
* @param deadlineEndTIme
* @param deadlineStartTime
* @param deadlineEndTime
* @param pageNum
* @param pageSize
* @return
*/
public Page<HyFollowTaskDO> getTaskPage(String followUserId, Integer taskStatus, String deadlineStartTIme, String deadlineEndTIme, Integer pageNum, Integer pageSize){
public Page<HyFollowTaskDO> getTaskPage(String followUserId, Integer taskStatus, String deadlineStartTime, String deadlineEndTime, Integer pageNum, Integer pageSize){
if(StringUtils.isBlank(followUserId)){
return new Page<>();
}
PageHelper.startPage(pageNum, pageSize);
return hyFollowTaskMapper.getTaskPage(followUserId, taskStatus, deadlineStartTIme, deadlineEndTIme);
return hyFollowTaskMapper.getTaskPage(followUserId, taskStatus, deadlineStartTime, deadlineEndTime);
}
/**

View File

@@ -138,9 +138,10 @@ public class HyPartnerLineInfoDAO {
}
public List<PrivateSeaLineDTO> getPrivateSeaLineList(String keyword, String keywordType, String workflowStage, String workflowStatus, String deadlineStart, String deadlineEnd,
String intentAreaName, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List<String> userIdList,List<String> developmentManagerList,List<Long> userPortraitIdList){
String intentAreaName, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List<String> userIdList,
List<String> developmentManagerList,List<Long> userPortraitIdList,List<Long> userChannelIdList){
return hyPartnerLineInfoMapper.getPrivateSeaLineList( keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd,
intentAreaName, acceptAdjustType, storeKeyword, storeKeywordType, userIdList,developmentManagerList,userPortraitIdList);
intentAreaName, acceptAdjustType, storeKeyword, storeKeywordType, userIdList,developmentManagerList,userPortraitIdList,userChannelIdList);
}

View File

@@ -0,0 +1,37 @@
package com.cool.store.dao;
import com.cool.store.entity.HyPartnerUserChannelDO;
import com.cool.store.mapper.HyPartnerUserChannelMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/8/21 11:38
* @Version 1.0
*/
@Repository
public class HyPartnerUserChannelDAO {
@Resource
HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
public Map<Integer, String> getChannelMapByIds(List<Integer> userChannelIds){
if (CollectionUtils.isEmpty(userChannelIds)){
return new HashMap<>(1);
}
List<HyPartnerUserChannelDO> userChannelList = hyPartnerUserChannelMapper.getUserChannelByIds(userChannelIds);
Map<Integer, String> channelMap = userChannelList.stream().filter(date->date.getChannelId()!=null).collect(Collectors.toMap(x->x.getChannelId().intValue(), HyPartnerUserChannelDO::getChannelName));
return channelMap;
}
}

View File

@@ -38,11 +38,11 @@ public interface HyFollowTaskMapper {
* 获取任务列表
* @param followUserId
* @param taskStatus
* @param deadlineStartTIme
* @param deadlineEndTIme
* @param deadlineStartTime
* @param deadlineEndTime
* @return
*/
Page<HyFollowTaskDO> getTaskPage(@Param("followUserId")String followUserId, @Param("taskStatus")Integer taskStatus, @Param("deadlineStartTIme")String deadlineStartTIme, @Param("deadlineEndTIme")String deadlineEndTIme);
Page<HyFollowTaskDO> getTaskPage(@Param("followUserId")String followUserId, @Param("taskStatus")Integer taskStatus, @Param("deadlineStartTime")String deadlineStartTime, @Param("deadlineEndTime")String deadlineEndTime);
/**
* 获取跟进任务详情

View File

@@ -176,7 +176,8 @@ public interface HyPartnerLineInfoMapper {
@Param("storeKeywordType") String storeKeywordType,
@Param("userIdList") List<String> userIdList,
@Param("developmentManagerList") List<String> developmentManagerList,
@Param("userPortraitIdList") List<Long> userPortraitIdList);
@Param("userPortraitIdList") List<Long> userPortraitIdList,
@Param("userChannelIdList") List<Long> userChannelIdList);
/**

View File

@@ -151,11 +151,11 @@
<if test="taskStatus != null">
and task_status = #{taskStatus}
</if>
<if test="deadlineStartTIme != null">
and deadline >= #{deadlineStartTIme}
<if test="deadlineStartTime != null">
and deadline >= #{deadlineStartTime}
</if>
<if test="deadlineEndTIme != null">
<![CDATA[ and deadline <= #{deadlineEndTIme}]]>
<if test="deadlineEndTime != null">
<![CDATA[ and deadline <= #{deadlineEndTime}]]>
</if>
</select>
@@ -207,7 +207,7 @@
</select>
<update id="updateUndoTaskStatusToOverdue">
<![CDATA[ update hy_follow_task set task_status = '2' where task_status = '0' and deadline < now() ]]>
<![CDATA[ update hy_follow_task set task_status = '2' where task_status = '0' and deadline <= now() ]]>
</update>
<select id="getFollowTaskList" resultMap="BaseResultMap">

View File

@@ -552,6 +552,11 @@
bi.user_portrait like concat("%,", #{userPortraitId}, ",%")
</foreach>
</if>
<if test="userChannelIdList!=null and userChannelIdList.size>0">
<foreach collection="userChannelIdList" open="and hpuinfo.user_channel_id in (" close=")" separator="," item="userChannelId">
#{userChannelId}
</foreach>
</if>
<if test="userIdList!=null and userIdList.size==0 and developmentManagerList!=null and developmentManagerList.size>0">
<foreach collection="developmentManagerList" item="developmentManager" open="and hpli.development_manager in (" close=")" separator=",">
#{developmentManager}

View File

@@ -1,6 +1,6 @@
package com.cool.store.dto.message;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.FeiShuNoticeMsgEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -27,7 +27,7 @@ public class SendCardMessageDTO {
@ApiModelProperty("消息内容")
private String content;
@ApiModelProperty("消息类型, MessageTypeEnum")
private MessageTypeEnum messageType;
@ApiModelProperty("消息类型, FeiShuNoticeMsgEnum")
private FeiShuNoticeMsgEnum messageType;
}

View File

@@ -48,5 +48,7 @@ public class PrivateSeaLineListRequest extends PageInfoRequest {
private List<Long> userPortraitIdList;
private List<Long> userChannelIdList;
}

View File

@@ -78,7 +78,7 @@ public class PartnerIntentApplyInfoVO {
private String userChannelName;
public static List<PartnerIntentApplyInfoVO> convertList(List<PartnerIntentApplyInfoDTO> list, Map<String, String> wantShopAreaNameMap, String workflowStatus,
Map<Long, String> userChannelMap,Map<Long,String> userPortraitMap ){
Map<Integer, String> userChannelMap,Map<Long,String> userPortraitMap ){
if(CollectionUtils.isEmpty(list)){
return Lists.newArrayList();
}

View File

@@ -103,7 +103,7 @@ public class PrivateSeaLineListVo {
public static List<PrivateSeaLineListVo> convertList(List<PrivateSeaLineDTO> list, Map<String, String> finalDevManagerMap, Map<String, String> wantShopAreaNameMap,
Map<Long, HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOMap,Map<Long, String> channelMap,Map<Long, String> userPortraitMap){
Map<Long, HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOMap,Map<Integer, String> channelMap,Map<Long, String> userPortraitMap){
List<PrivateSeaLineListVo> resultList = new ArrayList<>();
for (PrivateSeaLineDTO x : list) {
PrivateSeaLineListVo privateSeaLineListVo = new PrivateSeaLineListVo();

View File

@@ -10,7 +10,7 @@ import com.cool.store.dto.enterprise.SysDepartmentDTO;
import com.cool.store.dto.login.UserIdInfoDTO;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.response.ResultDTO;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.FeiShuNoticeMsgEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.mq.util.HttpRestTemplateService;
@@ -357,9 +357,9 @@ public class ISVHttpRequest {
String url = isvDomain + "/sendFeiShuCardMessage";
ResultDTO responseEntity = null;
try {
MessageTypeEnum messageType = param.getMessageType();
FeiShuNoticeMsgEnum messageType = param.getMessageType();
JSONObject request = JSONObject.parseObject(JSONObject.toJSONString(param));
request.put("messageType", messageType.getMessageTypeObject());
request.put("messageType", messageType.getMessageObject());
responseEntity = httpRestTemplateService.postForObject(url, request, ResultDTO.class);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
} catch (Exception e) {

View File

@@ -72,19 +72,19 @@ public class FollowTaskServiceImpl implements FollowTaskService {
@Resource
private RedisUtilPool redisUtilPool;
@Resource
private ISVHttpRequest isvHttpRequest;
private NoticeService noticeService;
@Value("${feishu.notice.link.url:null}")
private String linkUrl;
@Override
public PageInfo<FollowTaskPageVO> getFollowTaskPage(Integer pageNum, Integer pageSize, Integer taskStatus, String queryDate, String followUserId) {
String deadlineStartTIme = null, deadlineEndTIme = null;
String deadlineStartTime = null, deadlineEndTIme = null;
if(StringUtils.isNotBlank(queryDate) && FollowTaskStatusEnum.TODO.getCode().equals(taskStatus)){
//只有待完成的时候需要根据截止时间查询
deadlineStartTIme = queryDate + CommonConstants.DAY_START_TIME_SUFFIX;
deadlineStartTime = queryDate + CommonConstants.DAY_START_TIME_SUFFIX;
deadlineEndTIme = queryDate + CommonConstants.DAY_END_TIME_SUFFIX;
}
Page<HyFollowTaskDO> taskPage = hyFollowTaskDAO.getTaskPage(followUserId, taskStatus, deadlineStartTIme, deadlineEndTIme, pageNum, pageSize);
Page<HyFollowTaskDO> taskPage = hyFollowTaskDAO.getTaskPage(followUserId, taskStatus, deadlineStartTime, deadlineEndTIme, pageNum, pageSize);
PageInfo resultPage = new PageInfo(taskPage);
if(CollectionUtils.isNotEmpty(taskPage)){
List<Long> partnerLineIds = taskPage.stream().map(HyFollowTaskDO::getPartnerLineId).distinct().collect(Collectors.toList());
@@ -186,6 +186,8 @@ public class FollowTaskServiceImpl implements FollowTaskService {
@Override
public void followTaskAnHourAgoRemind() {
//更新过期的任务状态
hyFollowTaskDAO.updateUndoTaskStatusToOverdue();
//获取一个小时后的任务
Boolean hasNext = true;
int pageNum = CommonConstants.ONE, pageSize = CommonConstants.HUNDRED;
@@ -213,23 +215,11 @@ public class FollowTaskServiceImpl implements FollowTaskService {
//一小时内发送过不再发送通知
continue;
}
SendCardMessageDTO sendCardMessage = new SendCardMessageDTO();
sendCardMessage.setMessageUrl(linkUrl);
sendCardMessage.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
String dateline = DateUtil.format(followTask.getDeadline(), CoolDateUtils.DATE_FORMAT_SEC_2);
String content = MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT, dateline, partnerInfo.getUsername(), partnerInfo.getMobile());
sendCardMessage.setContent(content);
sendCardMessage.setTitle(MessageConstants.FOLLOW_TASK_MESSAGE_TITLE);
sendCardMessage.setUserIds(Arrays.asList(followTask.getFollowUserId()));
try {
isvHttpRequest.sendFeiShuCardMessage(sendCardMessage);
} catch (ApiException e) {
log.error("跟进任务发送通知失败, {}", JSONObject.toJSONString(followTask));
}
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(followTask.getFollowUserId()), content);
}
}
//更新过期的任务状态
hyFollowTaskDAO.updateUndoTaskStatusToOverdue();
}
@Override
@@ -248,17 +238,7 @@ public class FollowTaskServiceImpl implements FollowTaskService {
pageNum++;
List<FollowTaskNumDTO> followTaskList = hyFollowTaskDAO.getUserTaskNum(remindFollowUserIds);
for (FollowTaskNumDTO followTask : followTaskList) {
SendCardMessageDTO sendCardMessage = new SendCardMessageDTO();
sendCardMessage.setMessageUrl(linkUrl);
sendCardMessage.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessage.setContent(FollowTaskNumDTO.getMessageContent(followTask));
sendCardMessage.setTitle(MessageConstants.FOLLOW_TASK_MESSAGE_TITLE);
sendCardMessage.setUserIds(Arrays.asList(followTask.getFollowUserId()));
try {
isvHttpRequest.sendFeiShuCardMessage(sendCardMessage);
} catch (ApiException e) {
log.error("跟进任务发送通知失败, {}", JSONObject.toJSONString(followTask));
}
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(followTask.getFollowUserId()), FollowTaskNumDTO.getMessageContent(followTask));
}
}
}
@@ -293,16 +273,6 @@ public class FollowTaskServiceImpl implements FollowTaskService {
}
String dateline = DateUtil.format(task.getDeadline(), CoolDateUtils.DATE_FORMAT_SEC_2);
String content = MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT, dateline, partnerInfo.getUsername(), partnerInfo.getMobile());
SendCardMessageDTO sendCardMessage = new SendCardMessageDTO();
sendCardMessage.setMessageUrl(linkUrl);
sendCardMessage.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessage.setContent(content);
sendCardMessage.setTitle(MessageConstants.FOLLOW_TASK_MESSAGE_TITLE);
sendCardMessage.setUserIds(Arrays.asList(task.getFollowUserId()));
try {
isvHttpRequest.sendFeiShuCardMessage(sendCardMessage);
} catch (ApiException e) {
log.error("跟进任务发送通知失败, {}", JSONObject.toJSONString(task));
}
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(task.getFollowUserId()), content);
}
}

View File

@@ -78,6 +78,8 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
LabelService labelService;
@Autowired
private NoticeService noticeService;
@Resource
HyPartnerUserChannelDAO hyPartnerUserChannelDAO;
@Override
public PageInfo<PartnerIntentApplyInfoVO> getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber,String keyword, Integer callStatus,
@@ -103,12 +105,8 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
}
List<PartnerIntentApplyInfoDTO> list = partnerIntentApplyInfo.getList();
List<Integer> userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PartnerIntentApplyInfoDTO::getUserChannelId).collect(Collectors.toList());
List<HyPartnerUserChannelDO> userChannelList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(userChannelIds)){
userChannelList = hyPartnerUserChannelMapper.getUserChannelByIds(userChannelIds);
}
Map<Integer, String> userChannelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PartnerIntentApplyInfoDTO::getUserPortrait).collect(Collectors.toList());
Map<Long, String> userChannelMap = userChannelList.stream().collect(Collectors.toMap(HyPartnerUserChannelDO::getChannelId, HyPartnerUserChannelDO::getChannelName));
List<Long> wantShopAreaList = list.stream().filter(x->StringUtils.isNotEmpty(x.getWantShopArea())).map(PartnerIntentApplyInfoDTO::getWantShopArea).map(Long::parseLong).distinct().collect(Collectors.toList());
Map<String, String> wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList);
List<PartnerIntentApplyInfoVO> resultList = PartnerIntentApplyInfoVO.convertList(list, wantShopAreaNameMap, workflowStatus,userChannelMap,labelService.getUserPortraitMap(userPortraitList));

View File

@@ -8,10 +8,7 @@ import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.RoomStatus;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.enums.*;
import com.cool.store.exception.ApiException;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mapper.HyPartnerInterviewMapper;
@@ -85,6 +82,8 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
LabelService labelService;
@Resource
HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
@Resource
HyPartnerUserChannelDAO hyPartnerUserChannelDAO;
@Value("${feishu.notice.link.url:null}")
@@ -137,8 +136,8 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
List<String> partnerIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
List<Integer> userChannelIds = hyPartnerUserInfoDOS.stream().filter(x -> x.getUserChannelId() != null).map(HyPartnerUserInfoDO::getUserChannelId).collect(Collectors.toList());
List<HyPartnerUserChannelDO> userChannelList = hyPartnerUserChannelMapper.getUserChannelByIds(userChannelIds);
Map<Long, String> channelMap = userChannelList.stream().collect(Collectors.toMap(HyPartnerUserChannelDO::getChannelId, HyPartnerUserChannelDO::getChannelName));
Map<Integer, String> channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<String> interviewerUserIds = list.stream().filter(x-> StringUtils.isNotEmpty(x.getInterviewer())).map(PartnerInterviewInfoDTO::getInterviewer).collect(Collectors.toList());
List<EnterpriseUserDO> userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(interviewerUserIds);
Map<String, EnterpriseUserDO> interviewerUserMap = userInfoByUserIds.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
@@ -183,8 +182,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
Map<String, HyPartnerUserInfoDO> userNameMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, Data->Data));
List<Integer> userChannelIds = hyPartnerUserInfoDOS.stream().filter(x -> x.getUserChannelId() != null).map(HyPartnerUserInfoDO::getUserChannelId).collect(Collectors.toList());
List<HyPartnerUserChannelDO> userChannelList = hyPartnerUserChannelMapper.getUserChannelByIds(userChannelIds);
Map<Long, String> channelMap = userChannelList.stream().collect(Collectors.toMap(HyPartnerUserChannelDO::getChannelId, HyPartnerUserChannelDO::getChannelName));
Map<Integer, String> channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<Long> lineIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerLineId).collect(Collectors.toList());
List<HyPartnerLineInfoDO> hyPartnerLineInfoDOS= hyPartnerLineInfoDAO.getHyPartnerLineInfoListByIds(lineIds);
Map<Long, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = hyPartnerLineInfoDOS.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, data -> data));
@@ -272,7 +270,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
userIds.add(interviewMsgDTO.getInterviewerId());
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
sendCardMessageDTO.setUserIds(userIds);
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessageDTO.setMessageType(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT);
sendCardMessageDTO.setMessageUrl(linkUrl);
sendCardMessageDTO.setTitle("面试预约申请");
sendCardMessageDTO.setContent(interviewService.generateFeiShuInterviewMsg(interviewMsgDTO.getPartnerName(), interviewMsgDTO.getPartnerMobile(), interviewMsgDTO.getStartTime()));
@@ -327,7 +325,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
* @param partnerInterviewInfoDTO
* @return
*/
private PartnerInterviewInfoVO convertPartnerInterviewInfoDTOToVo(PartnerInterviewInfoDTO partnerInterviewInfoDTO,Map<Long, String> userPortraitMap, HyPartnerUserInfoDO hyPartnerUserInfoDO,Map<Long, String> channelMap){
private PartnerInterviewInfoVO convertPartnerInterviewInfoDTOToVo(PartnerInterviewInfoDTO partnerInterviewInfoDTO,Map<Long, String> userPortraitMap, HyPartnerUserInfoDO hyPartnerUserInfoDO,Map<Integer, String> channelMap){
PartnerInterviewInfoVO partnerInterviewInfoVO = new PartnerInterviewInfoVO();
partnerInterviewInfoVO.setInterviewId(partnerInterviewInfoDTO.getInterviewId());
partnerInterviewInfoVO.setInterviewPlanId(partnerInterviewInfoDTO.getId());

View File

@@ -81,6 +81,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyPhoneLocationService hyPhoneLocationService;
@Resource
HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
@Resource
HyPartnerUserChannelDAO hyPartnerUserChannelDAO;
@Autowired
private NoticeService noticeService;
@@ -529,8 +531,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
Map<String, String> wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList);
List<Integer> userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PublicSeaLineDTO::getUserChannelId).collect(Collectors.toList());
List<HyPartnerUserChannelDO> userChannelList = hyPartnerUserChannelMapper.getUserChannelByIds(userChannelIds);
Map<Long, String> channelMap = userChannelList.stream().collect(Collectors.toMap(HyPartnerUserChannelDO::getChannelId, HyPartnerUserChannelDO::getChannelName));
Map<Integer, String> channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PublicSeaLineDTO::getUserPortrait).collect(Collectors.toList());
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList);
@@ -580,12 +581,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
String intentAreaName = getIntentAreaName(request.getIntentArea());
PageHelper.startPage(request.getPageNum(),request.getPageSize());
PageInfo privateLineList = new PageInfo(hyPartnerLineInfoDAO.getPrivateSeaLineList(request.getKeyword(), request.getKeywordType(), request.getWorkflowStage(),
request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(),
intentAreaName, request.getAcceptAdjustType(), request.getStoreKeyword(),
request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(),userIdsByScope.getDevelopmentUserIds(),request.getUserPortraitIdList()));
request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(), intentAreaName, request.getAcceptAdjustType(), request.getStoreKeyword(),
request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(),userIdsByScope.getDevelopmentUserIds(),request.getUserPortraitIdList(),request.getUserChannelIdList()));
List<PrivateSeaLineDTO> list = privateLineList.getList();
if (CollectionUtils.isEmpty(list)){
return new PageInfo<>();
return privateLineList;
}
List<Long> lindIds = list.stream().map(PrivateSeaLineDTO::getLineId).collect(Collectors.toList());
List<HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanDAO.getHyPartnerInterviewPlanByLineIds(lindIds);
@@ -601,8 +601,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
Map<String, String> wantShopAreaNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaList);
List<Integer> userChannelIds = list.stream().filter(x -> x.getUserChannelId() != null).map(PrivateSeaLineDTO::getUserChannelId).collect(Collectors.toList());
List<HyPartnerUserChannelDO> userChannelList = hyPartnerUserChannelMapper.getUserChannelByIds(userChannelIds);
Map<Long, String> channelMap = userChannelList.stream().collect(Collectors.toMap(HyPartnerUserChannelDO::getChannelId, HyPartnerUserChannelDO::getChannelName));
Map<Integer, String> channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(userChannelIds);
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PrivateSeaLineDTO::getUserPortrait).collect(Collectors.toList());
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList);

View File

@@ -455,7 +455,7 @@ public class InterviewServiceImpl implements InterviewService {
userIds.add(interviewrId);
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
sendCardMessageDTO.setUserIds(userIds);
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessageDTO.setMessageType(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT);
sendCardMessageDTO.setMessageUrl(linkUrl);
sendCardMessageDTO.setTitle("面试预约申请");
sendCardMessageDTO.setContent(generateFeiShuInterviewMsg(interviewVO.getPartnerName(), interviewVO.getPartnerMobile(), interviewVO.getStartTime()));

View File

@@ -7,10 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.cool.store.constants.ExcelErrorConstants;
import com.cool.store.dao.*;
import com.cool.store.entity.*;
import com.cool.store.enums.AcceptAdjustTypeEnum;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.LineStatusEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.enums.*;
import com.cool.store.exception.ServiceException;
import com.cool.store.oss.OSSServer;
import com.cool.store.request.AddLineRequest;
@@ -98,7 +95,7 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
hyPartnerUserInfoDAO.insertSelective(resultUser);
HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO();
resultLine.setPartnerId(partnerId).setCreateTime(new Date());
resultLine.setPartnerId(partnerId).setCreateTime(new Date()).setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
//判断招商经理是否为空
if (StringUtil.isNotEmpty(request.getInvestmentManager())) {

View File

@@ -3,7 +3,6 @@ package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.enums.FeiShuNoticeMsgEnum;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.http.ISVHttpRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -22,11 +21,13 @@ import java.util.List;
@Slf4j
@Service
public class NoticeService {
@Value("${feishu.notice.link.url}")
private String linkUrl;
@Autowired
private ISVHttpRequest isvHttpRequest;
public void sendFeiShuNotice(FeiShuNoticeMsgEnum feiShuNoticeMsgEnum, List<String> userIds,Object... objects) {
public void sendFeiShuNotice(FeiShuNoticeMsgEnum feiShuNoticeMsgEnum, List<String> userIds, Object... objects) {
try{
if (CollectionUtils.isEmpty(userIds)){
log.info("sendFeiShuNotice_feiShuNoticeMsgEnum:{} userIds:{},objects:{}",feiShuNoticeMsgEnum.getTitle(), JSONObject.toJSONString(userIds),JSONObject.toJSONString(objects));
@@ -34,7 +35,7 @@ public class NoticeService {
}
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
sendCardMessageDTO.setUserIds(userIds);
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessageDTO.setMessageType(feiShuNoticeMsgEnum);
sendCardMessageDTO.setMessageUrl(linkUrl);
sendCardMessageDTO.setTitle(feiShuNoticeMsgEnum.getTitle());
sendCardMessageDTO.setContent(MessageFormat.format(feiShuNoticeMsgEnum.getContent(),objects));