Merge remote-tracking branch 'hs/dev/feat/partner1.4_20231009' into dev/feat/partner1.4_20231009
# Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
This commit is contained in:
@@ -29,4 +29,6 @@ public class ExcelErrorConstants {
|
||||
|
||||
public static final String COUNT_MORE = "每次数据最多导入500条,请分批上传";
|
||||
|
||||
public static final String MOBILE_REPEAT = "手机号重复";
|
||||
|
||||
}
|
||||
|
||||
@@ -67,7 +67,9 @@ public enum ErrorCodeEnum {
|
||||
NO_TRANSFER_REQUIRED(500013, "招商经理现有私海线索无需转让,请检查后重试!", null),
|
||||
NO_BATCH_TRANSFER_REQUIRED(500014, "已选线索包含此招商经理现有私海线索,无需转让,请检查后重试!", null),
|
||||
PARTNER_MOBILE_EXIST(500010, "手机号码已存在,请核实!", null),
|
||||
PARTNER_MOBILE_EXIST_0(500016, "手机号码已存在", null),
|
||||
MOBILE_EXIST(500015, "此手机号码已存在,请修改后重试", null),
|
||||
INVESTMENT_MANAGER_NOT_EXIST(500016, "当前招商经理不存在", null),
|
||||
PARTNER_MOBILE_EXIST_0(500017, "手机号码已存在", null),
|
||||
|
||||
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
|
||||
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
|
||||
@@ -84,11 +86,16 @@ public enum ErrorCodeEnum {
|
||||
INTERVIEW_LINE_ID_IS_NULL(1021113, "线索id为空!", null),
|
||||
INTERVIEW_INTERVIEW_TIME_IS_UNUSABLE(1021114, "当前预约时间不可用,请和线索用户协商其他时间后确定预约时间\n面试人:{0} 手机号:{1}", null),
|
||||
INTERVIEW_PARTNER_NOT_EXIST(1021115, "线索下的加盟商不存在!", null),
|
||||
INTERVIEW_STATUS_NOT_TRANSFER(1021116, "当前面试状态不允许转让! 面试状态:{0}", null),
|
||||
MOBILE_WECHAT_EXIST(1021116, "此号码已绑定其他微信,请更换手机号码或微信后重试。", null),
|
||||
|
||||
ROOM_STATUS_ERROR(10211156, "当前面试房间状态不允许进行该操作!", null),
|
||||
MOBILE_APP_NOT_ONLINE_ERROR(10211157, "呼叫失败,请确认呼出号码正确并检查是否安装并打开呼叫插件", null),
|
||||
CALL_RECORD_NOT_EXIST_ERROR(10211158, "通话记录不存在!", null),
|
||||
CALL_UP_ERROR(10211159, "拨出电话异常!", null),
|
||||
CREATE_CALL_REQUEST_ERROR(10211160, "创建电话请求失败!", null),
|
||||
|
||||
CREATE_APPOINTMENT_TIME_ERROR(10211161, "当前时间不可预约面试,请选择其他时间", null),
|
||||
CONTENT_DUPLICATED(10211200, "动态标题重复!", null),
|
||||
SIGN_FAIL(600000, "验签失败", null),
|
||||
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误!", null),
|
||||
|
||||
@@ -15,7 +15,7 @@ public enum FeiShuNoticeMsgEnum {
|
||||
BATCH_TRANS_INVESTMENT_MANAGER("收到新线索", "有{0}条新线索于 {1} 转让给您,请及时跟进", "img_v2_33296002-829e-490e-bd11-0d9ae763a67g"),
|
||||
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"),
|
||||
INTERVIEW_APPOINTMENT("面试预约申请", "您有一个【面试预约申请】待处理,预约人 {0} 手机号 {1} ,预约面试时间 {2} ","img_v2_107bb06b-2a7a-43e1-a6ae-e5d2f2dae17g"),
|
||||
;
|
||||
|
||||
private String title;
|
||||
|
||||
@@ -119,6 +119,11 @@ public class HyOpenAreaInfoDAO {
|
||||
return hyOpenAreaInfoMapper.getAllOpenArea();
|
||||
}
|
||||
|
||||
|
||||
public List<HyOpenAreaInfoDO> selectAllCity(){
|
||||
return hyOpenAreaInfoMapper.selectAllCity();
|
||||
}
|
||||
|
||||
/**
|
||||
* 过滤叶子节点
|
||||
* @param openAreaIds
|
||||
|
||||
@@ -94,6 +94,13 @@ public class HyPartnerInterviewPlanDAO {
|
||||
return hyPartnerInterviewPlanMapper.selectInterviewIdByLineId(lineId);
|
||||
}
|
||||
|
||||
public HyPartnerInterviewPlanDO getInterviewPlanByLineId(Long lineId){
|
||||
if (lineId==null){
|
||||
return null;
|
||||
}
|
||||
return hyPartnerInterviewPlanMapper.getInterviewPlanByLineId(lineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据线索表ID查询
|
||||
* @param lindIds
|
||||
|
||||
@@ -123,4 +123,6 @@ public interface HyOpenAreaInfoMapper {
|
||||
List<HyOpenAreaInfoDO> getProvinceAllCode(@Param("id") String id);
|
||||
|
||||
HyOpenAreaInfoDO selectByAreaPath(@Param("areaPath") String areaPath);
|
||||
|
||||
List<HyOpenAreaInfoDO> selectAllCity();
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.mapper;
|
||||
|
||||
import com.cool.store.entity.HyPartnerBaseInfoDO;
|
||||
import com.cool.store.entity.SyncEcCustomerLabelDO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@@ -63,4 +64,10 @@ public interface HyPartnerBaseInfoMapper {
|
||||
@Param("idCardPhotoBlack") String idCardPhotoBlack,
|
||||
@Param("partnerLineId") Long partnerLineId);
|
||||
|
||||
int selectAllList();
|
||||
|
||||
List<SyncEcCustomerLabelDO> selectListByLimit(@Param("limit1") Integer limit1, @Param("limit2") Integer limit2);
|
||||
|
||||
void updateByMobile(HyPartnerBaseInfoDO record);
|
||||
|
||||
}
|
||||
@@ -244,4 +244,10 @@ public interface HyPartnerLineInfoMapper {
|
||||
*/
|
||||
List<HyPartnerLineInfoDO> getHyPartnerLineInfoList(@Param("lineIds") List<Long> lineIds,String investmentManager);
|
||||
|
||||
/**
|
||||
* 获取线索转让次数
|
||||
* @param partnerLineId 线索 id
|
||||
* @return 线索转让次数
|
||||
*/
|
||||
Integer getTransferTimes(@Param("lineId") Long partnerLineId);
|
||||
}
|
||||
@@ -310,4 +310,11 @@
|
||||
WHERE area_path= concat('/',#{areaPath},'/') and deleted=0 and province_city_flag=0
|
||||
</select>
|
||||
|
||||
<select id="selectAllCity" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"></include>
|
||||
FROM `hy_open_area_info`
|
||||
WHERE deleted=0 and province_city_flag = 1 and parent_id is not null
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -297,6 +297,12 @@
|
||||
left join hy_partner_line_info b on a.partner_line_id = b.id
|
||||
where a.id_card = #{idCard} and ( b.line_status != 3 and b.deleted = 0 )
|
||||
</select>
|
||||
<select id="selectAllList" resultType="java.lang.Integer">
|
||||
SELECT count(*) FROM hy_partner_base_info where mobile is not null and user_portrait is null
|
||||
</select>
|
||||
<select id="selectListByLimit" resultType="com.cool.store.entity.SyncEcCustomerLabelDO">
|
||||
SELECT id,mobile,user_portrait as userPortrait FROM hy_partner_base_info where mobile is not null and user_portrait is null LIMIT #{limit1},#{limit2}
|
||||
</select>
|
||||
|
||||
<update id="cleanIdCardInfoByPartnerLineId">
|
||||
update hy_partner_base_info
|
||||
@@ -306,5 +312,15 @@
|
||||
id_card_photo_black = #{idCardPhotoBlack}
|
||||
where partner_line_id = #{partnerLineId}
|
||||
</update>
|
||||
<update id="updateByMobile">
|
||||
update hy_partner_base_info
|
||||
<set>
|
||||
update_time=now(),
|
||||
<if test="userPortrait != null and userPortrait!=''">
|
||||
user_portrait = concat(",",#{userPortrait},","),
|
||||
</if>
|
||||
</set>
|
||||
where mobile = #{mobile}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -25,12 +25,14 @@
|
||||
<result column="weakness" jdbcType="VARCHAR" property="weakness" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="detailed_address" jdbcType="VARCHAR" property="detailedAddress" />
|
||||
<result column="email" jdbcType="VARCHAR" property="email" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
id, partner_id, partner_line_id, live_area, want_shop_area, accept_adjust_type, is_have_want_shop,
|
||||
want_shop_info, max_budget, money_source, money_prove, education, work_year, is_have_work_exp,
|
||||
work_exp, is_consumer, other_band, brand_strength, need_improve, strength, weakness,
|
||||
create_time, update_time
|
||||
create_time, update_time,detailed_address,email
|
||||
</sql>
|
||||
<select id="selectByPrimaryKeySelective" resultMap="BaseResultMap">
|
||||
select
|
||||
@@ -109,6 +111,15 @@
|
||||
<if test="record.updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="record.otherBand != null">
|
||||
other_band,
|
||||
</if>
|
||||
<if test="record.detailedAddress != null">
|
||||
detailed_address,
|
||||
</if>
|
||||
<if test="record.email != null">
|
||||
email,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="record.partnerId != null">
|
||||
@@ -177,6 +188,12 @@
|
||||
<if test="record.updateTime != null">
|
||||
#{record.updateTime},
|
||||
</if>
|
||||
<if test="record.detailedAddress != null">
|
||||
#{record.detailedAddress},
|
||||
</if>
|
||||
<if test="record.email != null">
|
||||
#{record.email},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<update id="updateByPrimaryKeySelective">
|
||||
@@ -248,6 +265,12 @@
|
||||
<if test="record.updateTime != null">
|
||||
update_time = #{record.updateTime},
|
||||
</if>
|
||||
<if test="record.detailedAddress != null">
|
||||
detailed_address = #{record.detailedAddress},
|
||||
</if>
|
||||
<if test="record.email != null">
|
||||
email = #{record.email},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{record.id}
|
||||
</update>
|
||||
|
||||
@@ -356,6 +356,8 @@
|
||||
hpuinfo.username as partnerUserName,
|
||||
hpuc.channel_name as channelName,
|
||||
hpii.education as education,
|
||||
hpii.detailed_address as detailAddress,
|
||||
hpii.email as email,
|
||||
hpl.phone_address as phoneAddress
|
||||
from hy_partner_line_info a
|
||||
left join hy_partner_base_info b on a.id = b.partner_line_id
|
||||
@@ -734,4 +736,13 @@
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<!-- 获取线索转让次数 -->
|
||||
<select id="getTransferTimes" resultType="java.lang.Integer">
|
||||
select count(*)
|
||||
from hy_partner_task_info_log
|
||||
where operate_type = 'entrust_others'
|
||||
and partner_line_id = #{lineId}
|
||||
-- and deleted = 0
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -121,6 +121,7 @@ public class EnterpriseUserDTO implements Serializable {
|
||||
enterpriseUserDO.setJobnumber(user.getJobnumber());
|
||||
enterpriseUserDO.setUserStatus(UserStatusEnum.NORMAL.getCode());
|
||||
enterpriseUserDO.setIsLeader(Boolean.FALSE);
|
||||
enterpriseUserDO.setLeaderDeptIds("[]");
|
||||
List<String> departmentLists = user.getDepartmentLists();
|
||||
List<String> regionPaths = new ArrayList<>();
|
||||
if(CollectionUtils.isNotEmpty(departmentLists)){
|
||||
@@ -184,6 +185,7 @@ public class EnterpriseUserDTO implements Serializable {
|
||||
//创建的时候给个默认值
|
||||
if(FSEventTypeEnum.USER_CREATED.equals(eventType)){
|
||||
enterpriseUserDO.setIsLeader(Boolean.FALSE);
|
||||
enterpriseUserDO.setLeaderDeptIds("[]");
|
||||
}
|
||||
Collection<String> deptIds = leaderDeptMap.get(user.getUserId());
|
||||
if(CollectionUtils.isNotEmpty(deptIds)){
|
||||
|
||||
@@ -84,4 +84,10 @@ public class PartnerLineInfoAndBaseInfoDTO {
|
||||
private String education;
|
||||
|
||||
private String developmentDirector;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String detailedAddress;
|
||||
|
||||
@ApiModelProperty("邮箱")
|
||||
private String email;
|
||||
}
|
||||
|
||||
@@ -98,4 +98,10 @@ public class HyPartnerIntentInfoDO implements Serializable {
|
||||
|
||||
@ApiModelProperty("通过证明")
|
||||
private String passCertifyFile;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String detailedAddress;
|
||||
|
||||
@ApiModelProperty("邮箱地址")
|
||||
private String email;
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@@ -16,6 +17,7 @@ import java.util.Date;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class HyPartnerLabelDO {
|
||||
@ApiModelProperty("")
|
||||
private Long id;
|
||||
|
||||
@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@@ -16,6 +17,7 @@ import java.util.Date;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class HyPartnerLabelGroupDO {
|
||||
|
||||
@ApiModelProperty("id")
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.cool.store.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class SyncEcCustomerLabelDO {
|
||||
|
||||
|
||||
private String mobile;
|
||||
|
||||
private String userPortrait;
|
||||
|
||||
|
||||
}
|
||||
@@ -14,4 +14,16 @@ public class CallRecordBackReq {
|
||||
@ApiModelProperty(value = "录音上传地址", required = true)
|
||||
private String recordUrl;
|
||||
|
||||
@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;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.cool.store.request;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author hxd
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class GetTagRequest {
|
||||
private Long groupId;
|
||||
private String groupName;
|
||||
private Integer sort;
|
||||
private Integer type;
|
||||
private List<GetTagItem> list;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public static class GetTagItem{
|
||||
private Long classId;
|
||||
private String className;
|
||||
private int sort;
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,12 @@ public class PartnerIntentInfoRequest {
|
||||
@ApiModelProperty("常驻区域")
|
||||
private String liveArea;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String detailedAddress;
|
||||
|
||||
@ApiModelProperty("邮箱地址")
|
||||
private String email;
|
||||
|
||||
@ApiModelProperty("意向开店区域")
|
||||
private String wantShopArea;
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.cool.store.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/8/30 15:16
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Data
|
||||
public class BatchTransferVO {
|
||||
|
||||
private String partnerUserName;
|
||||
|
||||
private String partnerMobile;
|
||||
|
||||
private String errorMessage;
|
||||
}
|
||||
@@ -39,6 +39,9 @@ public class PartnerIntentInfoVO {
|
||||
@ApiModelProperty("常驻区域")
|
||||
private String liveArea;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String detailedAddress;
|
||||
|
||||
@ApiModelProperty("意向开店区域")
|
||||
private String wantShopArea;
|
||||
|
||||
|
||||
@@ -76,6 +76,12 @@ public class PartnerLineInfoAndBaseInfoVO {
|
||||
@ApiModelProperty("常驻区域")
|
||||
private String liveArea;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String detailedAddress;
|
||||
|
||||
@ApiModelProperty("邮箱")
|
||||
private String email;
|
||||
|
||||
@ApiModelProperty("意向开店区域")
|
||||
private String wantShopArea;
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
package com.cool.store.job;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.cool.store.entity.HyPartnerBaseInfoDO;
|
||||
import com.cool.store.entity.SyncEcCustomerDO;
|
||||
import com.cool.store.entity.SyncEcCustomerLabelDO;
|
||||
import com.cool.store.mapper.HyPartnerBaseInfoMapper;
|
||||
import com.cool.store.sdk.ec.EcClient;
|
||||
import com.cool.store.sdk.ec.request.SyncEcCustomerLabelRequest;
|
||||
import com.cool.store.sdk.ec.request.SyncEcCustomerRequest;
|
||||
import com.cool.store.sdk.ec.response.SyncEcCustomerLabelResponse;
|
||||
import com.cool.store.service.HyPartnerBaseInfoService;
|
||||
import com.cool.store.utils.MybatisBatchUtils;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.xxl.job.core.context.XxlJobHelper;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author hxd
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SyncEcCustomerLabelJob {
|
||||
|
||||
@Value("${ec.baseUrl:null}")
|
||||
private String baseUrl;
|
||||
|
||||
@Resource
|
||||
private HyPartnerBaseInfoMapper hyPartnerBaseInfoMapper;
|
||||
|
||||
@XxlJob("SyncEcCustomerLabelJob")
|
||||
public void execute() {
|
||||
XxlJobHelper.log("-------------------------------同步ec客户标签数据到小程序开始-------------------------------");
|
||||
syncEcLabelExecute();
|
||||
XxlJobHelper.log("-------------------------------同步ec标签数据到小程序结束-------------------------------");
|
||||
XxlJobHelper.handleSuccess();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private MybatisBatchUtils mybatisBatchUtils;
|
||||
|
||||
private final Integer count = 20;
|
||||
|
||||
/**
|
||||
* 同步ec标签到招商数据库中
|
||||
*/
|
||||
private void syncEcLabelExecute() {
|
||||
//获取总数
|
||||
int size = hyPartnerBaseInfoMapper.selectAllList();
|
||||
//执行数
|
||||
int counts = size / count;
|
||||
//取余,如果大于1,就再加一
|
||||
int yu = size % count;
|
||||
if (yu > 0) {
|
||||
counts += 1;
|
||||
}
|
||||
for (int i = 1; i <= counts; i++) {
|
||||
XxlJobHelper.log("执行limit1:" + count * (i - 1) + ",执行limit2:" + count);
|
||||
List<SyncEcCustomerLabelDO> list = hyPartnerBaseInfoMapper.selectListByLimit(count * (i - 1), count);
|
||||
SyncEcCustomerLabelRequest syncEcCustomerLabelRequest = new SyncEcCustomerLabelRequest();
|
||||
syncEcCustomerLabelRequest.setParameter(list);
|
||||
EcClient ecClient = new EcClient();
|
||||
SyncEcCustomerLabelResponse exec = ecClient.exec(baseUrl, syncEcCustomerLabelRequest);
|
||||
if (ObjectUtil.isNull(exec)) {
|
||||
continue;
|
||||
}
|
||||
List<SyncEcCustomerLabelDO> execList = exec.getData();
|
||||
if (CollectionUtils.isEmpty(execList)) {
|
||||
continue;
|
||||
}
|
||||
List<HyPartnerBaseInfoDO> collect = execList.stream().map((item) -> {
|
||||
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = new HyPartnerBaseInfoDO();
|
||||
BeanUtil.copyProperties(item, hyPartnerBaseInfoDO);
|
||||
return hyPartnerBaseInfoDO;
|
||||
}).collect(Collectors.toList());
|
||||
mybatisBatchUtils.batchInsertOrUpdate(collect, HyPartnerBaseInfoMapper.class, (record, mapper) -> mapper.updateByMobile(record));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.cool.store.sdk.ec.request;
|
||||
|
||||
import com.cool.store.sdk.ec.core.EcRequest;
|
||||
import com.cool.store.sdk.ec.response.SyncEcCustomerLabelResponse;
|
||||
|
||||
/**
|
||||
* @author hxd
|
||||
*/
|
||||
public class SyncEcCustomerLabelRequest extends EcRequest<SyncEcCustomerLabelResponse> {
|
||||
|
||||
@Override
|
||||
public String getApiUrl() {
|
||||
return "/ec/appletToEcLabel";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<SyncEcCustomerLabelResponse> getResponseClass() {
|
||||
return SyncEcCustomerLabelResponse.class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.cool.store.sdk.ec.response;
|
||||
|
||||
|
||||
import com.cool.store.entity.SyncEcCustomerLabelDO;
|
||||
import com.cool.store.sdk.ec.core.EcResponse;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author hxd
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class SyncEcCustomerLabelResponse extends EcResponse {
|
||||
|
||||
private List<SyncEcCustomerLabelDO> data;
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.CustomerInfoRequest;
|
||||
import com.cool.store.request.GetTagRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -8,4 +9,7 @@ public interface EcSyncService {
|
||||
boolean ecToApplet(List<CustomerInfoRequest> queryListData);
|
||||
|
||||
void getChannelSource();
|
||||
|
||||
Boolean labelInfo(List<GetTagRequest> getTagRequestList);
|
||||
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public interface HyPartnerLineInfoService {
|
||||
*/
|
||||
Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request,Boolean sendFlag) throws ApiException;
|
||||
|
||||
Boolean batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException;
|
||||
List<BatchTransferVO> batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException;
|
||||
|
||||
/**
|
||||
* 分配招商经理
|
||||
@@ -66,7 +66,7 @@ public interface HyPartnerLineInfoService {
|
||||
* @param lineIdList
|
||||
* @return
|
||||
*/
|
||||
Boolean allocationInvestmentManager(LoginUserInfo user, List<Long> lineIdList);
|
||||
Boolean allocationInvestmentManager(LoginUserInfo user, String userId,List<Long> lineIdList);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.cool.store.dto.label.LabelGroupAddDTO;
|
||||
import com.cool.store.dto.label.LabelGroupDeleteDTO;
|
||||
import com.cool.store.dto.label.LabelGroupListDTO;
|
||||
import com.cool.store.dto.label.LabelGroupUpdateDTO;
|
||||
import com.cool.store.entity.HyPartnerLabelGroupDO;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.vo.LabelGroupListVo;
|
||||
|
||||
@@ -44,4 +45,12 @@ public interface LabelGroupService {
|
||||
*/
|
||||
List<LabelGroupListVo> getAllLabelGroupList();
|
||||
|
||||
/**
|
||||
* 添加ec标签组
|
||||
* @param hyPartnerLabelGroupDO
|
||||
*/
|
||||
void addEcLabelGroup(HyPartnerLabelGroupDO hyPartnerLabelGroupDO);
|
||||
|
||||
HyPartnerLabelGroupDO selectByPrimaryKey(Long id);
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.cool.store.dto.label.LabelAddDTO;
|
||||
import com.cool.store.dto.label.LabelDeleteDTO;
|
||||
import com.cool.store.dto.label.LabelListDTO;
|
||||
import com.cool.store.dto.label.LabelUpdateDTO;
|
||||
import com.cool.store.entity.HyPartnerLabelDO;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.vo.LabelListVo;
|
||||
|
||||
@@ -55,4 +56,9 @@ public interface LabelService {
|
||||
* @param dto
|
||||
*/
|
||||
void deleteLabel(LabelDeleteDTO dto);
|
||||
|
||||
HyPartnerLabelDO selectByPrimaryKey(Long classId);
|
||||
|
||||
void addEcLabel(HyPartnerLabelDO hyPartnerLabelDO);
|
||||
|
||||
}
|
||||
|
||||
@@ -64,5 +64,12 @@ public interface OpenAreaService {
|
||||
*/
|
||||
OpenProvinceVO getOpenProvince();
|
||||
|
||||
/**
|
||||
* V1.4
|
||||
* 意向区域添加不限
|
||||
* 每个市下面添加一个不限
|
||||
*/
|
||||
Boolean addOpenArea();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -137,6 +137,12 @@ public class CallServiceImpl implements CallService {
|
||||
if(callRecordDO == null){
|
||||
throw new ApiException(ErrorCodeEnum.CALL_RECORD_NOT_EXIST_ERROR);
|
||||
}
|
||||
callRecordDO.setCallStatus(request.getCallStatus());
|
||||
callRecordDO.setFailReason(request.getFailReason());
|
||||
if(StringUtils.isNotEmpty(request.getCallStartTime())&&StringUtils.isNotEmpty(request.getCallEndTime())){
|
||||
callRecordDO.setCallStartTime(DateUtil.parse(request.getCallStartTime()));
|
||||
callRecordDO.setCallEndTime(DateUtil.parse(request.getCallEndTime()));
|
||||
}
|
||||
callRecordDO.setRecordUrl(request.getRecordUrl());
|
||||
callRecordDO.setUpdater("system-app");
|
||||
callRecordDO.setUpdateTime(new Date());
|
||||
|
||||
@@ -16,8 +16,11 @@ import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.http.UserSourceResponse;
|
||||
import com.cool.store.mapper.HyPartnerLabelGroupMapper;
|
||||
import com.cool.store.mapper.HyPartnerLabelMapper;
|
||||
import com.cool.store.mapper.HyPartnerUserChannelMapper;
|
||||
import com.cool.store.request.CustomerInfoRequest;
|
||||
import com.cool.store.request.GetTagRequest;
|
||||
import com.cool.store.sdk.ec.EcClient;
|
||||
import com.cool.store.sdk.ec.bo.ChangeFollowUserBo;
|
||||
import com.cool.store.sdk.ec.bo.UpdateCustomerBo;
|
||||
@@ -26,6 +29,8 @@ import com.cool.store.sdk.ec.request.UpdateCustomerRequest;
|
||||
import com.cool.store.sdk.ec.response.ChangeFollowUserResponse;
|
||||
import com.cool.store.sdk.ec.response.UpdateCustomerResponse;
|
||||
import com.cool.store.service.EcSyncService;
|
||||
import com.cool.store.service.LabelGroupService;
|
||||
import com.cool.store.service.LabelService;
|
||||
import com.cool.store.utils.Post;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.utils.UUIDUtils;
|
||||
@@ -48,10 +53,10 @@ import java.util.List;
|
||||
public class EcSyncServiceImpl implements EcSyncService {
|
||||
|
||||
|
||||
|
||||
@Value("${ec.baseUrl:null}")
|
||||
private String baseUrl;
|
||||
|
||||
|
||||
@Resource
|
||||
private HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
||||
|
||||
@@ -68,6 +73,12 @@ public class EcSyncServiceImpl implements EcSyncService {
|
||||
@Resource
|
||||
private HyPartnerUserChannelMapper hyPartnerUserChannelMapper;
|
||||
|
||||
@Resource
|
||||
private LabelGroupService labelGroupService;
|
||||
|
||||
@Resource
|
||||
private LabelService labelService;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean ecToApplet(List<CustomerInfoRequest> queryListData) {
|
||||
@@ -102,6 +113,28 @@ public class EcSyncServiceImpl implements EcSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean labelInfo(List<GetTagRequest> getTagRequestList) {
|
||||
for (GetTagRequest getTagRequest : getTagRequestList) {
|
||||
Long groupId = getTagRequest.getGroupId();
|
||||
if (ObjectUtil.isNotNull(labelGroupService.selectByPrimaryKey(groupId))) {
|
||||
continue;
|
||||
}
|
||||
HyPartnerLabelGroupDO hyPartnerLabelGroupDO = new HyPartnerLabelGroupDO();
|
||||
hyPartnerLabelGroupDO.setLabelGroupName(getTagRequest.getGroupName()).setId(groupId);
|
||||
labelGroupService.addEcLabelGroup(hyPartnerLabelGroupDO);
|
||||
for (GetTagRequest.GetTagItem item : getTagRequest.getList()) {
|
||||
if (ObjectUtil.isNotNull(labelService.selectByPrimaryKey(item.getClassId()))) {
|
||||
continue;
|
||||
}
|
||||
HyPartnerLabelDO hyPartnerLabelDO = new HyPartnerLabelDO();
|
||||
hyPartnerLabelDO.setLabelName(item.getClassName()).setId(item.getClassId()).setLabelGroupId(groupId);
|
||||
labelService.addEcLabel(hyPartnerLabelDO);
|
||||
}
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步ec数据到表中 同时将部分数据同步到ec
|
||||
*
|
||||
@@ -169,7 +202,7 @@ public class EcSyncServiceImpl implements EcSyncService {
|
||||
if (partnerLine != null) {
|
||||
// EC与沪姨合伙人同时存在的线索用户,但存在不同的跟进人,将沪姨合伙人跟进人信息同步至EC覆盖原EC跟进人信息
|
||||
if (StringUtil.isEmpty(partnerLine.getInvestmentManager())) {
|
||||
if (StringUtil.isNotEmpty(resultLine.getInvestmentManager())) {
|
||||
if (StringUtil.isNotEmpty(resultLine.getInvestmentManager())&&!getFollowLineStatus(partnerLine)) {
|
||||
resultLine.setId(partnerLine.getId()).setUpdateTime(new Date());
|
||||
//沪姨合伙人线索存在黑名单,EC该线索分配跟进人同步到沪姨合伙人但线索状态不变,还存在黑名单中
|
||||
resultLine.setLineStatus(partnerLine.getLineStatus().intValue() == LineStatusEnum.BLACKLIST.getCode().intValue()
|
||||
@@ -248,7 +281,6 @@ public class EcSyncServiceImpl implements EcSyncService {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 得到不带86开头的号码
|
||||
*
|
||||
|
||||
@@ -267,6 +267,9 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService {
|
||||
if(CollectionUtils.isNotEmpty(existDeptIds)){
|
||||
existDeptIds.remove(departmentDetail.getId());
|
||||
}
|
||||
if(CollectionUtils.isEmpty(existDeptIds)){
|
||||
enterpriseUser.setIsLeader(Boolean.FALSE);
|
||||
}
|
||||
enterpriseUser.setLeaderDeptIds(JSONObject.toJSONString(existDeptIds));
|
||||
}
|
||||
enterpriseUserDAO.batchInsertOrUpdate(leaderUserList);
|
||||
@@ -319,5 +322,4 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService {
|
||||
}
|
||||
enterpriseUserDAO.batchInsertOrUpdate(userList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -185,6 +185,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
|
||||
partnerIntentInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
|
||||
partnerIntentInfoVO.setWorkflowStage(hyPartnerLineInfoDO.getWorkflowStage());
|
||||
partnerIntentInfoVO.setWorkflowStatus(hyPartnerLineInfoDO.getWorkflowStatus());
|
||||
partnerIntentInfoVO.setDetailedAddress(hyPartnerIntentInfoDO.getDetailedAddress());
|
||||
partnerIntentInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()));
|
||||
partnerIntentInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/"," "));
|
||||
@@ -442,6 +443,8 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
|
||||
intentInfoDO.setPartnerLineId(request.getPartnerLineId());
|
||||
intentInfoDO.setLiveArea(request.getLiveArea());
|
||||
intentInfoDO.setWantShopArea(request.getWantShopArea());
|
||||
intentInfoDO.setDetailedAddress(request.getDetailedAddress());
|
||||
intentInfoDO.setEmail(request.getEmail());
|
||||
intentInfoDO.setAcceptAdjustType(request.getAcceptAdjustType());
|
||||
intentInfoDO.setIsHaveWantShop(request.getIsHaveWantShop());
|
||||
intentInfoDO.setWantShopInfo("");
|
||||
|
||||
@@ -225,7 +225,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
|
||||
//更新会议开始时间为5分钟之内的房间状态为开启,会议状态变为已开始
|
||||
Date startTime = new Date();
|
||||
|
||||
List<HyPartnerLineInfoDO> waitForOpenInterviewLineList = hyPartnerLineInfoMapper.getWaitForOpenInterviewLineList(DateUtil.offsetDay(startTime,-2), DateUtil.offsetMinute(startTime, 5));
|
||||
List<HyPartnerLineInfoDO> waitForOpenInterviewLineList = hyPartnerLineInfoMapper.getWaitForOpenInterviewLineList(DateUtil.offsetDay(startTime,-1), DateUtil.offsetMinute(startTime, 5));
|
||||
if(CollectionUtils.isEmpty(waitForOpenInterviewLineList)){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -169,6 +169,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request,Boolean sendFlag) throws ApiException {
|
||||
if (StringUtil.isBlank(request.getUserId())||request.getLineId()==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
@@ -178,8 +179,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
if (request.getUserId().equals(hyPartnerLineInfoDO.getInvestmentManager())){
|
||||
throw new ServiceException(ErrorCodeEnum.NO_TRANSFER_REQUIRED);
|
||||
}
|
||||
hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId()));
|
||||
|
||||
//校验 合格资格面试阶段 面试状态已开始 不允许转让
|
||||
if(WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())&&WorkflowStatusEnum.INTERVIEW_3.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())){
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_STATUS_NOT_TRANSFER,WorkflowStatusEnum.INTERVIEW_3.getMessage());
|
||||
}
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
userIdList.add(request.getUserId());
|
||||
if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){
|
||||
@@ -188,17 +191,28 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList);
|
||||
Map<String, EnterpriseUserDO> userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
|
||||
|
||||
//更新面试官
|
||||
if (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())
|
||||
&& WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())){
|
||||
//更新面试官(预约面试全阶段和合作资格面试待面试阶段都需要变更面试官)
|
||||
//待预约状态及之前还未生成面试信息,因此不做变更面试官操作
|
||||
if ( (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus()))
|
||||
|| (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())) && !WorkflowStatusEnum.RESERVATION_0.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
|
||||
workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request);
|
||||
}
|
||||
//发送飞书工作通知
|
||||
if (sendFlag){
|
||||
//转让招商经理
|
||||
hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId()));
|
||||
String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7);
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());
|
||||
//发送飞书工作通知
|
||||
if (sendFlag){
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
||||
}
|
||||
//如果是面试预约待审批阶段还要发送面试预约申请通知
|
||||
if (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.RESERVATION_1.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
|
||||
HyPartnerInterviewPlanDO interviewPlanByLine = hyPartnerInterviewPlanDAO.getInterviewPlanByLineId(request.getLineId());
|
||||
if (interviewPlanByLine!=null && interviewPlanByLine.getStartTime()!=null ){
|
||||
String startTime = DateUtil.format(interviewPlanByLine.getStartTime(), CoolDateUtils.DATE_FORMAT_SEC_7);
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT, Arrays.asList(request.getUserId()),hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile(),startTime);
|
||||
}
|
||||
}
|
||||
|
||||
//作废待完成&已逾期的任务
|
||||
hyFollowTaskDAO.cancelUndoFollowTask(request.getLineId());
|
||||
@@ -220,37 +234,61 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException {
|
||||
public List<BatchTransferVO> batchTransferInvestmentManager(LoginUserInfo user, BatchTransferInvestmentManagerRequest request) throws ApiException {
|
||||
if (CollectionUtils.isEmpty(request.getLineIds())||StringUtils.isEmpty(request.getUserId())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
int num = request.getLineIds().size();
|
||||
List<HyPartnerLineInfoDO> hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), request.getUserId());
|
||||
//如果选中的线索中有线索招商经理已经是被装让的招商经理,则不允许批量操作
|
||||
if (CollectionUtils.isNotEmpty(hyPartnerLineInfoList)){
|
||||
throw new ServiceException(ErrorCodeEnum.NO_BATCH_TRANSFER_REQUIRED);
|
||||
}
|
||||
List<BatchTransferVO> result = new ArrayList<>();
|
||||
List<HyPartnerLineInfoDO> hyPartnerLineInfoList = hyPartnerLineInfoDAO.getHyPartnerLineInfoList(request.getLineIds(), null);
|
||||
Map<Long, String> partnerMap = hyPartnerLineInfoList.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, HyPartnerLineInfoDO::getPartnerId));
|
||||
List<String> partnerIdList = hyPartnerLineInfoList.stream().filter(x->StringUtils.isNotEmpty(x.getPartnerId()))
|
||||
.map(HyPartnerLineInfoDO::getPartnerId).distinct().collect(Collectors.toList());
|
||||
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList);
|
||||
Map<String, HyPartnerUserInfoDO> partnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, x -> x));
|
||||
List<Long> successLineIds = new ArrayList<>();
|
||||
for (Long lineId:request.getLineIds()) {
|
||||
TransferInvestmentManagerRequest transferInvestmentManagerRequest = new TransferInvestmentManagerRequest();
|
||||
transferInvestmentManagerRequest.setUserId(request.getUserId());
|
||||
transferInvestmentManagerRequest.setLineId(lineId);
|
||||
try {
|
||||
this.transferInvestmentManager(user,transferInvestmentManagerRequest,num<=1?true:false);
|
||||
} catch (ApiException e) {
|
||||
log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{}",lineId);
|
||||
this.transferInvestmentManager(user,transferInvestmentManagerRequest,Boolean.FALSE);
|
||||
successLineIds.add(lineId);
|
||||
} catch (Exception e) {
|
||||
log.info("transferInvestmentManager_success Transfer_interview_management_failed,lineId:{},e:{}",lineId,e.getMessage());
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(lineId));
|
||||
BatchTransferVO batchTransferVO = new BatchTransferVO();
|
||||
batchTransferVO.setErrorMessage(e.getMessage());
|
||||
if (e instanceof ServiceException){
|
||||
batchTransferVO.setErrorMessage(((ServiceException)e).getErrorMessage());
|
||||
}
|
||||
batchTransferVO.setPartnerMobile(hyPartnerUserInfoDO.getMobile());
|
||||
batchTransferVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
|
||||
result.add(batchTransferVO);
|
||||
}
|
||||
}
|
||||
if (num>1){
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),num,DateUtil.format(new Date(),CoolDateUtils.DATE_FORMAT_SEC_7));
|
||||
try {
|
||||
if (successLineIds.size()>1){
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.BATCH_TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),successLineIds.size(),DateUtil.format(new Date(),CoolDateUtils.DATE_FORMAT_SEC_7));
|
||||
}else if (successLineIds.size()==1){
|
||||
String dateTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_7);
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = partnerUserInfoDOMap.get(partnerMap.get(successLineIds.get(0)));
|
||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.TRANS_INVESTMENT_MANAGER,Arrays.asList(request.getUserId()),dateTime,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
} catch (Exception e) {
|
||||
log.info("batchTransferInvestmentManager_error:{}",e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean allocationInvestmentManager(LoginUserInfo user, List<Long> lineIdList) {
|
||||
if (user==null|| CollectionUtils.isEmpty(lineIdList)){
|
||||
public Boolean allocationInvestmentManager(LoginUserInfo operateUser,String userId, List<Long> lineIdList) {
|
||||
if (StringUtils.isEmpty(userId)|| CollectionUtils.isEmpty(lineIdList)){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
EnterpriseUserDO user = enterpriseUserDAO.getUserInfoById(userId);
|
||||
if (user==null){
|
||||
throw new ServiceException(ErrorCodeEnum.INVESTMENT_MANAGER_NOT_EXIST);
|
||||
}
|
||||
//加盟上线索集合
|
||||
List<HyPartnerLineInfoDO> partnerLineInfoList= hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList);
|
||||
//过滤出已结束的线索 这块线索需要重新生成新的线索
|
||||
@@ -262,7 +300,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
closeLineList.stream().forEach(x->{
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||
hyPartnerLineInfoDO.setPartnerId(x.getPartnerId());
|
||||
hyPartnerLineInfoDO.setInvestmentManager(user.getUserId());
|
||||
hyPartnerLineInfoDO.setInvestmentManager(userId);
|
||||
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
||||
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
||||
hyPartnerLineInfoDO.setLineStatus(1);
|
||||
@@ -282,22 +320,22 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
//没有结束的线索直接分配招商经理
|
||||
List<HyPartnerLineInfoDO> otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList());
|
||||
List<Long> otherLineIdList = otherLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
|
||||
hyPartnerLineInfoDAO.updateInvestmentManager(user.getUserId(), otherLineIdList);
|
||||
hyPartnerLineInfoDAO.updateInvestmentManager(userId, otherLineIdList);
|
||||
//添加日志
|
||||
partnerLineInfoList.forEach(x->{
|
||||
//给招商经理发送飞书工作通知
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
userIdList.add(user.getUserId());
|
||||
userIdList.add(userId);
|
||||
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,hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
||||
|
||||
LineLogInfo lineLogInfo = new LineLogInfo(x.getPartnerId(), x.getId(), user.getUserId(),
|
||||
user.getName(), OperateTypeEnum.ALLOCATION_INVESTMENT_MANAGER,
|
||||
LineLogInfo lineLogInfo = new LineLogInfo(x.getPartnerId(), x.getId(), operateUser.getUserId(),
|
||||
operateUser.getName(), OperateTypeEnum.ALLOCATION_INVESTMENT_MANAGER,
|
||||
WorkflowStageEnum.getWorkflowStageByCode(x.getWorkflowStage()),
|
||||
x.getWorkflowStatus(), "");
|
||||
AllocationInvestmentManagerLogDTO logDTO = AllocationInvestmentManagerLogDTO.builder().allocationUserId(user.getUserId()).allocationUsername(user.getName())
|
||||
.mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
|
||||
AllocationInvestmentManagerLogDTO logDTO = AllocationInvestmentManagerLogDTO.builder().allocationUserId(operateUser.getUserId()).allocationUsername(operateUser.getName())
|
||||
.mobile(operateUser.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build();
|
||||
lineLogInfo.setData(logDTO);
|
||||
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
||||
});
|
||||
@@ -485,9 +523,9 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
|
||||
|
||||
//通过 拒绝添加日志
|
||||
if ("pass".equals(closeFollowRequest.getType())||"reject".equals(closeFollowRequest.getType())){
|
||||
if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())&&"reject".equals(closeFollowRequest.getType())){
|
||||
LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(),
|
||||
user.getName(), OperateTypeEnum.REMOVE_BLACKLIST,
|
||||
user.getName(), OperateTypeEnum.CLOSE_FOLLOW,
|
||||
WorkflowStageEnum.getWorkflowStageByCode(oldWorkflowStage),
|
||||
oldWorkflowStatus, "");
|
||||
CloseOrPassFollowLogDTO log = CloseOrPassFollowLogDTO.builder().operateUserId(user.getUserId()).passReason(closeFollowRequest.getPassReason()).rejectRealReason(closeFollowRequest.getRejectRealReason())
|
||||
@@ -957,6 +995,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType());
|
||||
partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea());
|
||||
partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea());
|
||||
partnerLineInfoAndBaseInfoVO.setDetailedAddress(partnerLineInfoAndBaseInfoDTO.getDetailedAddress());
|
||||
partnerLineInfoAndBaseInfoVO.setEmail(partnerLineInfoAndBaseInfoDTO.getEmail());
|
||||
partnerLineInfoAndBaseInfoVO.setIdCard(partnerLineInfoAndBaseInfoDTO.getIdCard());
|
||||
partnerLineInfoAndBaseInfoVO.setChannelName(partnerLineInfoAndBaseInfoDTO.getChannelName());
|
||||
partnerLineInfoAndBaseInfoVO.setDevelopmentDirector(partnerLineInfoAndBaseInfoDTO.getDevelopmentDirector());
|
||||
|
||||
@@ -13,10 +13,7 @@ import com.cool.store.context.PartnerUserHolder;
|
||||
import com.cool.store.dao.EnterpriseUserDAO;
|
||||
import com.cool.store.dao.HyIntendDevMappingDAO;
|
||||
import com.cool.store.dao.HyInterviewDAO;
|
||||
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
|
||||
import com.cool.store.dto.calendar.UserFreeBusyInfoDTO;
|
||||
import com.cool.store.dto.calendar.*;
|
||||
import com.cool.store.dto.log.*;
|
||||
import com.cool.store.dto.message.SendCardMessageDTO;
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
@@ -156,38 +153,66 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
@Override
|
||||
@Transactional
|
||||
public void entrustOthers(EntrustOthersReq request) throws ApiException {
|
||||
//只有房间状态是待开放才可以委托他人
|
||||
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
|
||||
if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
|
||||
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||
}
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
|
||||
HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(request.getPartnerLineId());
|
||||
//如果面试信息为空,抛出异常
|
||||
if (interviewInfo == null) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
|
||||
}
|
||||
if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){
|
||||
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||
//只有预约面试阶段和合作资格面试待面试阶段才能变更面试官
|
||||
if ( !WorkflowStatusEnum.INTERVIEW_2.getCode().equals(lineInfo.getWorkflowStatus())
|
||||
&& !WorkflowStageEnum.RESERVATION.getCode().equals(lineInfo.getWorkflowStage())) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_STATUS_ERROR);
|
||||
}
|
||||
//1.新面试官日程新增
|
||||
CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
|
||||
createCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime());
|
||||
createCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime());
|
||||
createCalendarEventDTO.setUserId(request.getNewInterviewerId());
|
||||
createCalendarEventDTO.setJoinUserIds(Arrays.asList(request.getNewInterviewerId()));
|
||||
createCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId()));
|
||||
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
if(userCalendarEvent == null ){
|
||||
throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
|
||||
// //1.新面试官日程新增
|
||||
// CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
|
||||
// createCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime());
|
||||
// createCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime());
|
||||
// createCalendarEventDTO.setUserId(request.getNewInterviewerId());
|
||||
// createCalendarEventDTO.setJoinUserIds(Arrays.asList(request.getNewInterviewerId()));
|
||||
// createCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId()));
|
||||
// UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
// if(userCalendarEvent == null ){
|
||||
// throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
|
||||
// }
|
||||
// //2.原面试官日程删除
|
||||
// DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
|
||||
// deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
// deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
// deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
// UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
|
||||
// if(userCalendarsEventDTO == null ){
|
||||
// throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
||||
// }
|
||||
|
||||
//有可能还未同意面试预约,这时候没有建立日程,只需要修改面试官
|
||||
//1.4 优化多次转让,线索转让次数 >= 1 无需添加日程,只转让线索的招商经理及面试官
|
||||
Integer transferTimes = hyPartnerLineInfoMapper.getTransferTimes(request.getPartnerLineId());
|
||||
if (interviewInfo.getFeishuCalendarId() != null && interviewInfo.getFeishuScheduleId() != null
|
||||
&& transferTimes < 1) {
|
||||
//V1.3 需求变更为将新面试官拉入原面试官日程,而非删除和新增日程
|
||||
//1. 原面试官面试日程信息
|
||||
String oldInterviewerId = CurrentUserHolder.getUserId();
|
||||
UpdateCalendarEventDTO updateCalendarEventDTO = new UpdateCalendarEventDTO();
|
||||
updateCalendarEventDTO.setUserId(oldInterviewerId);
|
||||
updateCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
updateCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
updateCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime());
|
||||
updateCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime());
|
||||
updateCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId()));
|
||||
|
||||
//2. 邀请新面试官加入日程
|
||||
List<String> list = new ArrayList();
|
||||
list.add(request.getNewInterviewerId());
|
||||
//当前招商经理不是面试官,但是日程在招商经理这里
|
||||
if (!oldInterviewerId.equals(list.get(0))) {
|
||||
list.add(oldInterviewerId);
|
||||
}
|
||||
//2.原面试官日程删除
|
||||
DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
|
||||
deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
|
||||
updateCalendarEventDTO.setJoinUserIds(list);
|
||||
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.updateUserCalendarEvent(updateCalendarEventDTO);
|
||||
if(userCalendarsEventDTO == null ){
|
||||
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
||||
throw new ApiException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
// 3.面试信息计划变更
|
||||
@@ -195,8 +220,8 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setInterviewer(request.getNewInterviewerId());
|
||||
record.setUpdateTime(new Date());
|
||||
record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
|
||||
record.setFeishuScheduleId(userCalendarEvent.getEventId());
|
||||
// record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
|
||||
// record.setFeishuScheduleId(userCalendarEvent.getEventId());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
|
||||
//更新面试信息
|
||||
@@ -254,7 +279,13 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
createCalendarEventDTO.setStartTime(DateUtil.parse(request.getNewStartBookingTime()).getTime());
|
||||
createCalendarEventDTO.setEndTime(DateUtil.parse(request.getNewEndBookingTime()).getTime());
|
||||
createCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
createCalendarEventDTO.setJoinUserIds(Arrays.asList(interviewInfo.getInterviewerId()));
|
||||
List<String> list = Arrays.asList(interviewInfo.getInterviewerId());
|
||||
//可能当前招商经理不是面试官,但是日程在招商经理这里
|
||||
String userId = CurrentUserHolder.getUserId();
|
||||
if (!userId.equals(list.get(0))) {
|
||||
list.add(userId);
|
||||
}
|
||||
createCalendarEventDTO.setJoinUserIds(list);
|
||||
createCalendarEventDTO.setSummary(generateInterviewTitle(interviewInfo.getPartnerLineId()));
|
||||
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
if (userCalendarEvent == null) {
|
||||
@@ -391,6 +422,10 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
if(request.getPartnerLineId() == null || request.getPartnerLineId()<=0){
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_LINE_ID_IS_NULL);
|
||||
}
|
||||
//如果开始时间小于当前时间需要报错
|
||||
if(DateUtil.date().isAfter(DateUtil.parse(request.getStartBookingTime()))){
|
||||
throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR);
|
||||
}
|
||||
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
|
||||
hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId());
|
||||
hyPartnerInterviewPlanDO.setDeleted(false);
|
||||
@@ -505,6 +540,13 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
|
||||
record.setFeishuScheduleId(userCalendarEvent.getEventId());
|
||||
record.setApplicationApproved(1);
|
||||
//如果同意的时候已经超过预约的时间前 5 分钟,直接进入面试已开始阶段
|
||||
DateTime interviewStartTime = DateUtil.offsetMinute(DateUtil.parseDateTime(interviewVO.getStartTime()), -5);
|
||||
Date now = new Date();
|
||||
if (interviewStartTime.isBeforeOrEquals(now)) {
|
||||
record.setRoomStatus(RoomStatus.OPEN.getCode());
|
||||
record.setActualEndTime(new Date());
|
||||
}
|
||||
record.setUpdateTime(new Date());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
|
||||
@@ -512,7 +554,11 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
||||
hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId()));
|
||||
//更新面试状态和线索子流程状态
|
||||
if (interviewStartTime.isBeforeOrEquals(now)) {
|
||||
interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
|
||||
} else {
|
||||
interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_2);
|
||||
}
|
||||
// hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_2.getCode()));
|
||||
hyPartnerInterviewDO.setUpdateTime(new Date());
|
||||
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.cool.store.mapper.HyPartnerLabelMapper;
|
||||
import com.cool.store.service.LabelGroupService;
|
||||
import com.cool.store.vo.LabelGroupListVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -33,6 +34,10 @@ public class LabelGroupServiceImpl implements LabelGroupService {
|
||||
@Autowired
|
||||
private HyPartnerLabelMapper labelMapper;
|
||||
|
||||
|
||||
@Value("${ec.sync.createUserId:null}")
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
* 查询标签组信息列表
|
||||
* @param dto 查询条件
|
||||
@@ -110,6 +115,18 @@ public class LabelGroupServiceImpl implements LabelGroupService {
|
||||
return labelGroupMapper.getLabelGroupList(labelGroupDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HyPartnerLabelGroupDO selectByPrimaryKey(Long id){
|
||||
return labelGroupMapper.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEcLabelGroup(HyPartnerLabelGroupDO hyPartnerLabelGroupDO) {
|
||||
hyPartnerLabelGroupDO.setCreateTime(new Date()).setCreateUserId(createUserId).setEditDate(new Date())
|
||||
.setEditUserId(createUserId);
|
||||
labelGroupMapper.insertSelective(hyPartnerLabelGroupDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 某个标签组内是否有未删除的标签
|
||||
* @param id 标签组 id
|
||||
|
||||
@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -32,6 +33,11 @@ public class LabelServiceImpl implements LabelService {
|
||||
@Autowired
|
||||
private HyPartnerLabelMapper labelMapper;
|
||||
|
||||
|
||||
|
||||
@Value("${ec.sync.createUserId:null}")
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
* 获取数组列表
|
||||
*
|
||||
@@ -98,6 +104,18 @@ public class LabelServiceImpl implements LabelService {
|
||||
labelMapper.updateByPrimaryKeySelective(labelDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HyPartnerLabelDO selectByPrimaryKey(Long classId) {
|
||||
return labelMapper.selectByPrimaryKey(classId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEcLabel(HyPartnerLabelDO hyPartnerLabelDO) {
|
||||
hyPartnerLabelDO.setEditDate(new Date()).setCreateTime(new Date()).setEditUserId(createUserId).setCreateUserId(createUserId)
|
||||
.setUpdateUserId(createUserId);
|
||||
labelMapper.insertSelective(hyPartnerLabelDO);
|
||||
}
|
||||
|
||||
private Boolean whetherLabelRepeat(HyPartnerLabelDO label) throws ApiException {
|
||||
Long id = label.getId();
|
||||
label.setId(null);
|
||||
|
||||
@@ -36,6 +36,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class LineHighSeasServiceImpl implements LineHighSeasService {
|
||||
@@ -145,6 +146,10 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
||||
String fileStr = ossServer.uploadFileServer(stream, dir + getExcelName());
|
||||
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()))
|
||||
.entrySet().stream().filter(e -> e.getValue() > 1)
|
||||
.map(Map.Entry::getKey).collect(Collectors.toList());
|
||||
for (int i = 0; i < lineDOList.size(); i++) {
|
||||
HyPartnerLineDO hyPartnerLineDO = lineDOList.get(i);
|
||||
String partnerName = hyPartnerLineDO.getPartnerName();
|
||||
@@ -174,6 +179,11 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
|
||||
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.MOBILE_EXIST : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_EXIST));
|
||||
ExcelUtil.setStyleMap(styleCells, i, 1, new String[]{ExcelUtil.FONT_RED});
|
||||
}
|
||||
//手机号重复
|
||||
if (uniqueList.contains(mobile)) {
|
||||
hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.MOBILE_REPEAT : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_REPEAT));
|
||||
ExcelUtil.setStyleMap(styleCells, i, 1, new String[]{ExcelUtil.FONT_RED});
|
||||
}
|
||||
}
|
||||
//常驻区域为空
|
||||
String liveArea = hyPartnerLineDO.getLiveAreaReplace().trim();
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dao.HyOpenAreaInfoDAO;
|
||||
import com.cool.store.dto.partner.ApplyReservationProvinceDTO;
|
||||
import com.cool.store.entity.HyOpenAreaInfoDO;
|
||||
import com.cool.store.mapper.HyOpenAreaInfoMapper;
|
||||
import com.cool.store.request.OpenAreaRequest;
|
||||
import com.cool.store.service.OpenAreaService;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
@@ -36,6 +37,8 @@ public class OpenAreaServiceImpl implements OpenAreaService {
|
||||
@Resource
|
||||
private HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
|
||||
@Resource
|
||||
private HyOpenAreaInfoMapper hyOpenAreaInfoMapper;
|
||||
@Resource
|
||||
private RedisUtilPool redisUtilPool;
|
||||
|
||||
|
||||
@@ -190,6 +193,25 @@ public class OpenAreaServiceImpl implements OpenAreaService {
|
||||
return openProvinceVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean addOpenArea() {
|
||||
//查询出所有的市
|
||||
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.selectAllCity();
|
||||
if (CollectionUtils.isNotEmpty(openArea)){
|
||||
//在每个市下面添加名称为不限的区
|
||||
openArea.forEach(x->{
|
||||
Long id = x.getId();
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = new HyOpenAreaInfoDO();
|
||||
hyOpenAreaInfoDO.setAreaStatus("open");
|
||||
hyOpenAreaInfoDO.setAreaName("不限");
|
||||
hyOpenAreaInfoDO.setParentId(id);
|
||||
hyOpenAreaInfoDO.setAreaPath(x.getAreaPath()+"不限/");
|
||||
hyOpenAreaInfoMapper.insertSelective(hyOpenAreaInfoDO);
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){
|
||||
OpenAreaVO openAreaVO = new OpenAreaVO();
|
||||
openAreaVO.setId(hyOpenAreaInfoDO.getId());
|
||||
@@ -259,6 +281,7 @@ public class OpenAreaServiceImpl implements OpenAreaService {
|
||||
}
|
||||
}
|
||||
return jsonArray;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,6 +184,10 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
|
||||
if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){
|
||||
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||
}
|
||||
//如果开始时间小于当前时间需要报错
|
||||
if(DateUtil.date().isAfter(DateUtil.parse(request.getNewStartBookingTime()))){
|
||||
throw new ApiException(ErrorCodeEnum.CREATE_APPOINTMENT_TIME_ERROR);
|
||||
}
|
||||
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setStartTime(Convert.toDate(request.getNewStartBookingTime()));
|
||||
|
||||
@@ -104,6 +104,13 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
|
||||
UserInfoUpdateDTO.UserInfoUpdate beforeUserinfoUpdate = new UserInfoUpdateDTO.UserInfoUpdate(hyPartnerUserInfoDO.getUsername(), hyPartnerUserInfoDO.getMobile(), hyPartnerUserInfoDO.getLiveArea(), hyPartnerUserInfoDO.getWantShopArea(), hyPartnerUserInfoDO.getAcceptAdjustType());
|
||||
UserInfoUpdateDTO.UserInfoUpdate afterUserinfoUpdate = new UserInfoUpdateDTO.UserInfoUpdate(partnerUserInfoRequest.getUsername(), partnerUserInfoRequest.getMobile(), partnerUserInfoRequest.getLiveArea(), partnerUserInfoRequest.getWantShopArea(), partnerUserInfoRequest.getAcceptAdjustType());
|
||||
|
||||
//如果手机号不相同 校验手机号
|
||||
if (StringUtils.isNotEmpty(hyPartnerUserInfoDO.getMobile()) && !hyPartnerUserInfoDO.getMobile().equals(partnerUserInfoRequest.getMobile())){
|
||||
HyPartnerUserInfoDO userInfo = hyPartnerUserInfoDAO.selectByMobile(partnerUserInfoRequest.getMobile());
|
||||
if (userInfo != null){
|
||||
throw new ServiceException(ErrorCodeEnum.MOBILE_EXIST);
|
||||
}
|
||||
}
|
||||
ApplyBaseInfoVO applyBaseInfoVO = new ApplyBaseInfoVO();
|
||||
fillUserInfoDOByRequest(hyPartnerUserInfoDO, partnerUserInfoRequest);
|
||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.vo.interview.CalendarInfo;
|
||||
import com.cool.store.vo.interview.FreeBusyInfo;
|
||||
@@ -17,7 +18,7 @@ public class TimeSlotGenerator {
|
||||
|
||||
List<CalendarInfo> daySlots = generateDaySlots(startDate, endDate);
|
||||
for (CalendarInfo daySlot : daySlots) {
|
||||
System.out.println(daySlot);
|
||||
System.out.println(JSON.toJSON(daySlot));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +37,7 @@ public class TimeSlotGenerator {
|
||||
int day = startCal.get(Calendar.DAY_OF_MONTH);
|
||||
int dayOfWeek = startCal.get(Calendar.DAY_OF_WEEK);
|
||||
|
||||
List<FreeBusyInfo> hourSlots = generateHourSlots();
|
||||
List<FreeBusyInfo> hourSlots = generateHalfHourSlots();
|
||||
CalendarInfo daySlot = new CalendarInfo(transDayOfWeek(dayOfWeek),
|
||||
String.valueOf(year),
|
||||
StringUtil.addZeroForNum(String.valueOf(month),2),
|
||||
@@ -65,6 +66,29 @@ public class TimeSlotGenerator {
|
||||
return hourSlots;
|
||||
}
|
||||
|
||||
private static List<FreeBusyInfo> generateHalfHourSlots() {
|
||||
List<FreeBusyInfo> hourSlots = new ArrayList<>();
|
||||
|
||||
//循环打印半小时的时间段
|
||||
for (int hour = 10; hour < 17; hour++) {
|
||||
if(hour == 12){
|
||||
continue;
|
||||
}
|
||||
String startTime = String.format("%02d:00", hour);
|
||||
String endTime = String.format("%02d:30", hour);
|
||||
//默认空闲
|
||||
FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true);
|
||||
hourSlots.add(hourSlot);
|
||||
|
||||
String startTime2 = String.format("%02d:30", hour);
|
||||
String endTime2 = String.format("%02d:00", hour + 1);
|
||||
//默认空闲
|
||||
FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true);
|
||||
hourSlots.add(hourSlot2);
|
||||
}
|
||||
return hourSlots;
|
||||
}
|
||||
|
||||
public static int transDayOfWeek(int dayOfWeek) {
|
||||
switch (dayOfWeek) {
|
||||
case 1:
|
||||
|
||||
@@ -106,6 +106,12 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService {
|
||||
// 微信未授权过
|
||||
if(hyPartnerUserPlatformBindDO == null){
|
||||
hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
|
||||
if(hyPartnerUserInfoDO != null){
|
||||
HyPartnerUserPlatformBindDO hy = hyPartnerUserPlatformBindDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId());
|
||||
if (hy!=null){
|
||||
throw new ServiceException(ErrorCodeEnum.MOBILE_WECHAT_EXIST);
|
||||
}
|
||||
}
|
||||
if(hyPartnerUserInfoDO == null){
|
||||
hyPartnerUserInfoDO = new HyPartnerUserInfoDO();
|
||||
hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
|
||||
|
||||
@@ -1,11 +1,29 @@
|
||||
package com.cool.store.service.impl.workflow;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.cool.store.entity.HyPartnerInterviewDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.RoomStatus;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.EntrustOthersReq;
|
||||
import com.cool.store.request.TransferInvestmentManagerRequest;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: IntentWorkFlowService
|
||||
|
||||
@@ -74,13 +74,15 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
|
||||
if (CollectionUtils.isEmpty(interviewBaseInfos)) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
|
||||
}
|
||||
LoginUserInfo operator = CurrentUserHolder.getUser();
|
||||
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(String.valueOf(interviewBaseInfo.getInterviewPlanId()));
|
||||
if(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()) == interviewBaseInfo.getStatus()
|
||||
&& StringUtils.isNotEmpty(interviewInfo.getRoomStatus())
|
||||
&& String.valueOf(RoomStatus.WAIT_FOR_OPEN.getCode()).equals(interviewInfo.getRoomStatus())
|
||||
&& StringUtils.isNotEmpty(interviewInfo.getFeishuCalendarId())
|
||||
&& StringUtils.isNotEmpty(interviewInfo.getFeishuScheduleId())){
|
||||
&& StringUtils.isNotEmpty(interviewInfo.getFeishuScheduleId())
|
||||
&& interviewInfo.getInterviewerId().equals(operator.getUserId())){
|
||||
// 原面试官日程删除
|
||||
DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
|
||||
deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
@@ -100,7 +102,6 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
|
||||
}
|
||||
interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null);
|
||||
//记录日志
|
||||
LoginUserInfo operator = CurrentUserHolder.getUser();
|
||||
RejectInterviewDTO log = RejectInterviewDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
|
||||
.rejectRealReason(request.getRejectRealReason()).rejectPublicReason(request.getRejectPublicReason()).certifyFile(request.getCertifyFile()).build();
|
||||
logService.recordBizLog(operator,request.getLineId(), OperateTypeEnum.REJECT_INTERVIEW,log);
|
||||
|
||||
@@ -1,11 +1,26 @@
|
||||
package com.cool.store.service.impl.workflow;
|
||||
|
||||
import com.cool.store.entity.HyPartnerInterviewDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.EntrustOthersReq;
|
||||
import com.cool.store.request.TransferInvestmentManagerRequest;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: ReservationWorkFlowService
|
||||
@@ -16,6 +31,15 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class ReservationWorkFlowService extends WorkFlowBaseService {
|
||||
|
||||
@Autowired
|
||||
private HyPartnerInterviewMapper hyPartnerInterviewMapper;
|
||||
|
||||
@Autowired
|
||||
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
|
||||
|
||||
@Autowired
|
||||
private InterviewService interviewService;
|
||||
|
||||
@Override
|
||||
public WorkflowStageEnum getWorkFlowStage() {
|
||||
return WorkflowStageEnum.RESERVATION;
|
||||
@@ -27,7 +51,25 @@ public class ReservationWorkFlowService extends WorkFlowBaseService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
|
||||
log.info("转让招商经理~");
|
||||
public void transferInvestmentManager(TransferInvestmentManagerRequest request) throws ApiException {
|
||||
Long lineId = request.getLineId();
|
||||
//根据线索id查询面试信息
|
||||
List<HyPartnerInterviewDO> interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId));
|
||||
if (CollectionUtils.isEmpty(interviewBaseInfos)) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
|
||||
}
|
||||
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(String.valueOf(interviewBaseInfo.getInterviewPlanId()));
|
||||
if (null == interviewInfo) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
|
||||
}
|
||||
//还未提交面试预约就未创建面试信息,自然不存在转让面试官操作
|
||||
if (!WorkflowStatusEnum.RESERVATION_0.getCode().equals(interviewBaseInfo.getStatus().toString())) {
|
||||
EntrustOthersReq entrustOthersReq = new EntrustOthersReq();
|
||||
entrustOthersReq.setInterviewPlanId(interviewInfo.getInterviewPlanId());
|
||||
entrustOthersReq.setNewInterviewerId(request.getUserId());
|
||||
entrustOthersReq.setPartnerLineId(interviewInfo.getPartnerLineId());
|
||||
interviewService.entrustOthers(entrustOthersReq);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public abstract class WorkFlowBaseService {
|
||||
public abstract void endProcess(CloseFollowRequest request) throws ApiException;
|
||||
|
||||
/**
|
||||
* 转让招商经理
|
||||
* 转让招商经理(实际是转让面试官,转让招商经理的操作在前置已进行)
|
||||
* @param request
|
||||
*/
|
||||
public abstract void transferInvestmentManager(TransferInvestmentManagerRequest request) throws ApiException;
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.cool.store.utils;
|
||||
|
||||
import org.apache.ibatis.session.ExecutorType;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.mybatis.spring.SqlSessionFactoryBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
@Component
|
||||
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
|
||||
public class MybatisBatchUtils {
|
||||
|
||||
/**
|
||||
* 每次处理500条
|
||||
*/
|
||||
private static final int BATCH_SIZE = 500;
|
||||
|
||||
@Resource
|
||||
private SqlSessionFactory sqlSessionFactory;
|
||||
|
||||
/**
|
||||
* 批量处理修改或者插入
|
||||
*
|
||||
* @param data 需要被处理的数据
|
||||
* @param mapperClass Mybatis的Mapper类
|
||||
* @param consumer 自定义处理逻辑
|
||||
* @return int 影响的总行数
|
||||
* @author renwd
|
||||
*/
|
||||
public <T, U> int batchInsertOrUpdate(List<T> data, Class<U> mapperClass, BiConsumer<T, U> consumer) {
|
||||
int i = 1;
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
try {
|
||||
U mapper = sqlSession.getMapper(mapperClass);
|
||||
int size = data.size();
|
||||
for (T element : data) {
|
||||
consumer.accept(element, mapper);
|
||||
if ((i % BATCH_SIZE == 0) || i == size) {
|
||||
sqlSession.flushStatements();
|
||||
}
|
||||
i++;
|
||||
}
|
||||
sqlSession.commit();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
sqlSession.close();
|
||||
}
|
||||
return i - 1;
|
||||
}
|
||||
}
|
||||
@@ -604,14 +604,15 @@ public class ExcelUtil<T> {
|
||||
Map<Integer, List<String>> columnListMap = styleMap.get(row);
|
||||
if (columnListMap.containsKey(sort)) {
|
||||
List<String> list = columnListMap.get(sort);
|
||||
list.addAll(Arrays.asList(styles));
|
||||
List<String> arrList = new ArrayList<String>(Arrays.asList(styles));
|
||||
list.addAll(arrList);
|
||||
columnListMap.put(sort, list);
|
||||
}else {
|
||||
columnListMap.put(sort, Arrays.asList(styles));
|
||||
columnListMap.put(sort, new ArrayList<String>(Arrays.asList(styles)));
|
||||
}
|
||||
} else {
|
||||
styleMap.put(row, new HashMap<Integer, List<String>>() {{
|
||||
put(sort, Arrays.asList(styles));
|
||||
put(sort, new ArrayList<String>(Arrays.asList(styles)));
|
||||
}});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ public class TokenValidateFilter implements Filter {
|
||||
//TODO 800回调地址暂时不做验证
|
||||
"/partner/pc/flow/qualificationReview/callback",
|
||||
"/**/ecSync/ecToApplet/**",
|
||||
"/**/ecSync/labelInfo/**",
|
||||
"/partner/pc/websocket/**",
|
||||
"/partner/pc/call/**");
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public class Swagger2Config {
|
||||
.groupName(groupName)
|
||||
.select()
|
||||
.apis(this.scanBasePackage(packages))
|
||||
.paths(PathSelectors.regex(".*/getPartnerIntentInfo|.*/queryPartnerClerkInfoList|.*/queryPartnerBaseInfo"))
|
||||
//.paths(PathSelectors.regex(".*/getPartnerIntentInfo|.*/queryPartnerClerkInfoList|.*/queryPartnerBaseInfo"))
|
||||
.build()
|
||||
.globalOperationParameters(pars);
|
||||
}
|
||||
|
||||
@@ -37,12 +37,12 @@ public class CallController {
|
||||
return ResponseResult.success(res);
|
||||
}
|
||||
|
||||
@PostMapping("/finish/callback")
|
||||
@ApiOperation("通话结束回调")
|
||||
public ResponseResult callFinishBack(@RequestBody CallFinishBackReq request) throws ApiException {
|
||||
callService.callFinishBack(request);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
// @PostMapping("/finish/callback")
|
||||
// @ApiOperation("通话结束回调")
|
||||
// public ResponseResult callFinishBack(@RequestBody CallFinishBackReq request) throws ApiException {
|
||||
// callService.callFinishBack(request);
|
||||
// return ResponseResult.success();
|
||||
// }
|
||||
|
||||
@PostMapping("/record/callback")
|
||||
@ApiOperation("录音上传回调")
|
||||
|
||||
@@ -190,7 +190,7 @@ public class DeskController {
|
||||
@ApiOperation("分配招商经理/批量分配招商经理")
|
||||
public ResponseResult<Boolean> allocationInvestmentManager(@RequestBody AllocationInvestmentManagerRequest request){
|
||||
|
||||
return ResponseResult.success(hyPartnerLineInfoService.allocationInvestmentManager(CurrentUserHolder.getUser(),request.getLineIdList()));
|
||||
return ResponseResult.success(hyPartnerLineInfoService.allocationInvestmentManager(CurrentUserHolder.getUser(),request.getUserId(),request.getLineIdList()));
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ public class DeskController {
|
||||
|
||||
@PostMapping(path = "/batchTransferInvestmentManager")
|
||||
@ApiOperation("批量转让招商经理")
|
||||
public ResponseResult<Boolean> batchTransferInvestmentManager(@RequestBody BatchTransferInvestmentManagerRequest request) throws ApiException {
|
||||
public ResponseResult<List<BatchTransferVO>> batchTransferInvestmentManager(@RequestBody BatchTransferInvestmentManagerRequest request) throws ApiException {
|
||||
return ResponseResult.success(hyPartnerLineInfoService.batchTransferInvestmentManager(CurrentUserHolder.getUser(),request ));
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.cool.store.controller;
|
||||
|
||||
|
||||
import com.cool.store.request.CustomerInfoRequest;
|
||||
import com.cool.store.request.GetTagRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.EcSyncService;
|
||||
import com.cool.store.vo.InterviewScheduleInfoVO;
|
||||
@@ -28,4 +29,10 @@ public class EcSyncController {
|
||||
return ResponseResult.success(ecSyncService.ecToApplet(queryListData));
|
||||
}
|
||||
|
||||
@PostMapping(path = "/labelInfo")
|
||||
@ApiOperation("ec同步标签数据到小程序")
|
||||
public ResponseResult<Boolean> labelInfo(@RequestBody List<GetTagRequest> getTagRequestList){
|
||||
return ResponseResult.success(ecSyncService.labelInfo(getTagRequestList));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -280,4 +280,9 @@ public class TestController {
|
||||
followTaskService.followTaskAnHourAgoRemind();
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/initOpenArea")
|
||||
public ResponseResult initOpenArea() {
|
||||
return ResponseResult.success(openAreaService.addOpenArea());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
spring.application.name=hsay-partner-webb
|
||||
spring.profiles.active=@profileActive@
|
||||
spring.profiles.active=dev
|
||||
|
||||
server.port=31000
|
||||
server.servlet.context-path=/partner/pc
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
spring.application.name=hsay-partner-webc
|
||||
spring.profiles.active=@profileActive@
|
||||
spring.profiles.active=dev
|
||||
server.port=30900
|
||||
server.servlet.context-path=/partner/mini/program
|
||||
|
||||
|
||||
Reference in New Issue
Block a user