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

This commit is contained in:
zhangchenbiao
2023-08-14 10:51:38 +08:00
70 changed files with 2746 additions and 72 deletions

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.call;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: young.yu
* @Date: 2023-08-11 15:24
* @Description:
*/
@Data
public class CallUpDTO {
private String transNo;
private String outgoingMobile;
private String incomingMobile;
}

View File

@@ -0,0 +1,19 @@
package com.cool.store.dto.label;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fun Li 2023/8/10 15:55
* @version 1.0
*/
@Data
public class LabelAddDTO {
@ApiModelProperty(value = "标签名称", required = true)
private String labelName;
@ApiModelProperty(value = "标签组id", required = true)
private Long labelGroupId;
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.label;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fun Li 2023/8/10 16:43
* @version 1.0
*/
@Data
public class LabelDeleteDTO {
@ApiModelProperty(value = "标签id", required = true)
private Long id;
}

View File

@@ -0,0 +1,19 @@
package com.cool.store.dto.label;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Fun Li 2023/8/10 13:28
* @version 1.0
*/
@Data
public class LabelGroupAddDTO {
@ApiModelProperty(value = "标签组名称", required = true)
private @NotBlank(message = "镖标签组名称不能为空")
String labelGroupName;
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.label;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fun Li 2023/8/10 13:29
* @version 1.0
*/
@Data
public class LabelGroupDeleteDTO {
@ApiModelProperty("id")
private Long id;
}

View File

@@ -0,0 +1,19 @@
package com.cool.store.dto.label;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author Fun Li 2023/8/10 13:29
* @version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class LabelGroupListDTO extends PageBasicInfo {
@ApiModelProperty(value = "标签组名称", required = false)
private String labelGroupName;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.dto.label;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Fun Li 2023/8/10 13:30
* @version 1.0
*/
@Data
public class LabelGroupUpdateDTO {
@ApiModelProperty(value = "id", required = true)
private Long id;
@ApiModelProperty(value = "标签组名称", required = true)
private @NotBlank(message = "标签组名称不能为空")
String labelGroupName;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.dto.label;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author Fun Li 2023/8/10 14:46
* @version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class LabelListDTO extends PageBasicInfo {
@ApiModelProperty(value = "标签名称")
private String labelName;
@ApiModelProperty(value = "标签组id")
private Long labelGroupId;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.dto.label;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fun Li 2023/8/10 16:03
* @version 1.0
*/
@Data
public class LabelUpdateDTO {
@ApiModelProperty(value = "标签id", required = true)
private Long id;
@ApiModelProperty(value = "标签名称", required = true)
private String labelName;
@ApiModelProperty(value = "标签组id", required = true)
private Long labelGroupId;
}

View File

@@ -19,6 +19,8 @@ public class PartnerIntentApplyInfoDTO {
@ApiModelProperty("加盟商用户名称")
private String partnerUserName;
private String mobile;
@ApiModelProperty("hy_partner_user_info.partner_id")
private String partnerId;
@@ -46,4 +48,17 @@ public class PartnerIntentApplyInfoDTO {
@ApiModelProperty("子流程状态")
private String workflowStatus;
@ApiModelProperty("上次跟进时间")
private String lastFollowTime;
@ApiModelProperty("接通状态")
private Integer callStatus;
@ApiModelProperty("来源名称")
private String userChannelName;
private Integer userChannelId;
private String userPortrait;
}

View File

@@ -61,4 +61,12 @@ public class PartnerInterviewInfoDTO {
@ApiModelProperty("过程信息")
private String processInfo;
@ApiModelProperty("上次跟进时间")
private Date lastFollowTime;
@ApiModelProperty("接通状态")
private Integer callStatus;
private String userPortrait;
}

View File

@@ -77,4 +77,8 @@ public class PrivateSeaLineDTO {
private String recommendPartnerMobile;
private Integer userChannelId;
private String userPortrait;
}

View File

@@ -29,4 +29,8 @@ public class PublicSeaLineDTO {
private Date updateTime;
private String phoneAddress;
private Integer userChannelId;
private String userPortrait;
}

View File

@@ -0,0 +1,17 @@
package com.cool.store.dto.partner;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/8/10 11:12
* @Version 1.0
*/
@Data
public class UserChannelDTO {
private Long userChannelId;
private String userChannelName;
}

View File

@@ -0,0 +1,71 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @author zhangchenbiao
* @date 2023-08-11 01:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CallRecordDO implements Serializable {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("线索id")
private Long partnerLineId;
@ApiModelProperty("请求编号")
private String transNo;
@ApiModelProperty("呼出人手机号")
private String outgoingMobile;
@ApiModelProperty("呼出人用户id")
private String outgoingUserId;
@ApiModelProperty("接听人手机号")
private String incomingMobile;
@ApiModelProperty("接听人用户id")
private String incomingUserId;
@ApiModelProperty("通话开始时间")
private Date callStartTime;
@ApiModelProperty("通话结束时间")
private Date callEndTime;
@ApiModelProperty("录音地址")
private String recordUrl;
@ApiModelProperty("0.待呼叫1.呼叫接听2.呼叫未接听3.呼叫失败")
private Integer callStatus;
@ApiModelProperty("失败原因")
private String failReason;
@ApiModelProperty("创建人")
private String creater;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新人")
private String updater;
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -25,6 +25,9 @@ public class HyOutboundMobileDO {
@ApiModelProperty("")
private String mobile;
@ApiModelProperty("编辑人user_identerprise_user.user_id")
private String editUserId;
@ApiModelProperty("备注(保留字段)")
private String remark;

View File

@@ -0,0 +1,52 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Fun Li
* @date 2023/08/10
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HyPartnerLabelDO {
@ApiModelProperty("")
private Long id;
@ApiModelProperty("标签组id hy_partner_label_group.id")
private Long labelGroupId;
@ApiModelProperty("标签名")
private String labelName;
@ApiModelProperty("编辑人user_identerprise_user.user_id")
private String editUserId;
@ApiModelProperty("编辑时间")
private Date editDate;
@ApiModelProperty("删除标识")
private Boolean deleted;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("创建人")
private String createUserId;
@ApiModelProperty("更新人")
private String updateUserId;
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,52 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Fun Li 2023/8/10 13:31
* @version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HyPartnerLabelGroupDO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("标签组名称")
private String labelGroupName;
@ApiModelProperty("删除标识")
private Boolean deleted;
@ApiModelProperty("编辑人user_identerprise_user.user_id")
private String editUserId;
@ApiModelProperty("编辑时间")
private Date editDate;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("创建人enterprise_user.user_id")
private String createUserId;
@ApiModelProperty("更新人enterprise_user.user_id")
private String updateUserId;
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -3,6 +3,8 @@ package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

View File

@@ -18,5 +18,5 @@ public class AddTagsRequest {
@ApiModelProperty("加盟申请基本信息ID")
private Long partnerBaseInfoId;
@ApiModelProperty("标签列表")
private List<String> Tags;
private List<Long> Tags;
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/8/11 14:30
* @Version 1.0
*/
@Data
@ApiModel
public class BatchTransferInvestmentManagerRequest {
private List<Long> lineIds;
private String userId;
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: young.yu
* @Date: 2023-08-11 15:46
* @Description:
*/
@Data
@ApiModel(description = "呼叫信息")
public class CallFinishBackReq {
@ApiModelProperty(value = "请求编号", required = true)
private String transNo;
@ApiModelProperty(value = "呼叫状态: 1-呼叫接听, 2-呼叫未接听, 3-呼叫失败", required = true)
private Integer callStatus;
@ApiModelProperty(value = "呼叫失败的情况下必传,说明呼叫失败的原因")
private String failReason;
@ApiModelProperty(value = "呼叫接听情况下必传通话开始时间格式yyyy-MM-dd HH:mm:ss")
private String callStartTime;
@ApiModelProperty(value = "呼叫接听情况下必传通话结束时间格式yyyy-MM-dd HH:mm:ss")
private String callEndTime;
}

View File

@@ -0,0 +1,17 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(description = "呼叫记录信息")
public class CallRecordBackReq {
@ApiModelProperty(value = "请求编号", required = true)
private String transNo;
@ApiModelProperty(value = "录音上传地址", required = true)
private String recordUrl;
}

View File

@@ -0,0 +1,29 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: young.yu
* @Date: 2023-08-10 19:24
* @Description:
*/
@Data
@ApiModel
public class CallUpReq {
@ApiModelProperty(value = "线索id", required = true)
private String lineId;
@ApiModelProperty(value = "呼出人用户id", required = true)
private String outgoingUserId;
@ApiModelProperty(value = "呼出人手机号", required = true)
private String outgoingMobile;
@ApiModelProperty(value = "接听人用户id", required = true)
private String incomingUserId;
@ApiModelProperty(value = "接听人手机号", required = true)
private String incomingMobile;
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Fun Li 2023/8/10 13:33
* @version 1.0
*/
@Data
public class LabelGroupListVo {
@ApiModelProperty("标签组id")
private long id;
@ApiModelProperty("标签组名称")
private String labelGroupName;
@ApiModelProperty("编辑人姓名")
private String editName;
@ApiModelProperty("编辑人电话")
private String editMobile;
@ApiModelProperty("编辑时间")
private Date editDate;
}

View File

@@ -0,0 +1,36 @@
package com.cool.store.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Fun Li 2023/8/10 14:42
* @version 1.0
*/
@Data
public class LabelListVo {
@ApiModelProperty(value = "标签名称")
private String labelName;
@ApiModelProperty(value = "标签组名称")
private String labelGroupName;
@ApiModelProperty(value = "编辑人姓名")
private String editName;
@ApiModelProperty(value = "编辑人电话")
private String editMobile;
@ApiModelProperty(value = "编辑时间")
private Date editDate;
@ApiModelProperty(value = "标签id")
private Long id;
@ApiModelProperty(value = "标签分组id")
private Long labelGroupId;
}

View File

@@ -8,8 +8,11 @@ import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -23,6 +26,7 @@ import java.util.Map;
*/
@Data
@ApiModel
@Slf4j
public class PartnerIntentApplyInfoVO {
@ApiModelProperty("")
@@ -61,8 +65,20 @@ public class PartnerIntentApplyInfoVO {
@ApiModelProperty("阶段状态")
private String WorkflowStatus;
@ApiModelProperty("用户画像")
private List<String> userPortraitList;
public static List<PartnerIntentApplyInfoVO> convertList(List<PartnerIntentApplyInfoDTO> list, Map<String, HyPartnerUserInfoDO> infoDOMap, Map<String, String> wantShopAreaNameMap, String workflowStatus){
@ApiModelProperty("上次跟进时间")
private String lastFollowTime;
@ApiModelProperty("接通状态")
private Integer callStatus;
@ApiModelProperty("来源名称")
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 ){
if(CollectionUtils.isEmpty(list)){
return Lists.newArrayList();
}
@@ -78,11 +94,34 @@ public class PartnerIntentApplyInfoVO {
partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea());
String deadLine = DateUtil.format(partnerIntentApplyInfoDTO.getDeadline(), CoolDateUtils.DATE_FORMAT_SEC_2);
partnerIntentApplyInfoVO.setDeadline(deadLine);
HyPartnerUserInfoDO infoDOMapOrDefault = infoDOMap.getOrDefault(partnerIntentApplyInfoDTO.getPartnerId(), new HyPartnerUserInfoDO());
partnerIntentApplyInfoVO.setPartnerUserName(infoDOMapOrDefault.getUsername());
partnerIntentApplyInfoVO.setPartnerUserPhone(infoDOMapOrDefault.getMobile());
partnerIntentApplyInfoVO.setPartnerUserName(partnerIntentApplyInfoDTO.getPartnerUserName());
partnerIntentApplyInfoVO.setPartnerUserPhone(partnerIntentApplyInfoDTO.getMobile());
partnerIntentApplyInfoVO.setWorkflowStatus(workflowStatus);
partnerIntentApplyInfoVO.setWantShopAreaName(wantShopAreaNameMap.get(partnerIntentApplyInfoDTO.getWantShopArea()));
partnerIntentApplyInfoVO.setLastFollowTime(partnerIntentApplyInfoDTO.getLastFollowTime());
Integer callStatus = null;
if(partnerIntentApplyInfoDTO.getCallStatus()!=null){
callStatus = partnerIntentApplyInfoDTO.getCallStatus()==1?partnerIntentApplyInfoDTO.getCallStatus():0;
}
partnerIntentApplyInfoVO.setCallStatus(callStatus);
partnerIntentApplyInfoVO.setUserChannelName(userChannelMap.getOrDefault(partnerIntentApplyInfoDTO.getUserChannelId(),""));
List<String> userPortraitList= new ArrayList<>();
if(StringUtils.isNotEmpty(partnerIntentApplyInfoDTO.getUserPortrait())){
String[] parts = partnerIntentApplyInfoDTO.getUserPortrait().split(",");
for (String part : parts) {
String trimmedPart = part.trim();
if (!trimmedPart.isEmpty()) {
try {
userPortraitList.add(userPortraitMap.get(Long.valueOf(part)));
} catch (NumberFormatException e) {
log.info("Invalid format: {}" , trimmedPart);
}
}
}
}
partnerIntentApplyInfoVO.setUserPortraitList(userPortraitList);
resultList.add(partnerIntentApplyInfoVO);
}
return resultList;

View File

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Author suzhuhong
@@ -71,4 +72,16 @@ public class PartnerInterviewInfoVO {
@ApiModelProperty("审批发起时间")
private String approveTime;
@ApiModelProperty("用户画像")
private List<String> userPortraitList;
@ApiModelProperty("上次跟进时间")
private String lastFollowTime;
@ApiModelProperty("接通状态")
private Integer callStatus;
@ApiModelProperty("来源名称")
private String userChannelName;
}

View File

@@ -7,6 +7,8 @@ import com.cool.store.utils.CoolDateUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.util.ArrayList;
@@ -21,6 +23,7 @@ import java.util.Map;
*/
@Data
@ApiModel
@Slf4j
public class PrivateSeaLineListVo {
@@ -92,8 +95,15 @@ public class PrivateSeaLineListVo {
private String investmentManagerMobile;
@ApiModelProperty("用户画像")
private List<String> userPortraitList;
public static List<PrivateSeaLineListVo> convertList(List<PrivateSeaLineDTO> list, Map<String, String> finalDevManagerMap, Map<String, String> wantShopAreaNameMap,Map<Long, HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOMap){
@ApiModelProperty("来源名称")
private String userChannelName;
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){
List<PrivateSeaLineListVo> resultList = new ArrayList<>();
for (PrivateSeaLineDTO x : list) {
PrivateSeaLineListVo privateSeaLineListVo = new PrivateSeaLineListVo();
@@ -127,6 +137,22 @@ public class PrivateSeaLineListVo {
privateSeaLineListVo.setStartTime(hyPartnerInterviewPlanDOMap.getOrDefault(x.getLineId(),new HyPartnerInterviewPlanDO()).getStartTime());
privateSeaLineListVo.setInterviewPlanId(hyPartnerInterviewPlanDOMap.getOrDefault(x.getLineId(),new HyPartnerInterviewPlanDO()).getId());
privateSeaLineListVo.setDevelopmentManagerName(finalDevManagerMap.get(x.getDevelopmentManager()));
privateSeaLineListVo.setUserChannelName(channelMap.get(x.getUserChannelId()));
List<String> userPortraitList= new ArrayList<>();
if(StringUtils.isNotEmpty(x.getUserPortrait())){
String[] parts = x.getUserPortrait().split(",");
for (String part : parts) {
String trimmedPart = part.trim();
if (!trimmedPart.isEmpty()) {
try {
userPortraitList.add(userPortraitMap.get(Long.valueOf(part)));
} catch (NumberFormatException e) {
log.info("Invalid format: {}" , trimmedPart);
}
}
}
}
privateSeaLineListVo.setUserPortraitList(userPortraitList);
resultList.add(privateSeaLineListVo);
}
return resultList;

View File

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Author suzhuhong
@@ -71,4 +72,10 @@ public class PublicSeaLineListVo {
private String updateTime;
@ApiModelProperty("用户画像")
private List<String> userPortraitList;
@ApiModelProperty("来源名称")
private String userChannelName;
}