Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
pserimal
2023-06-27 15:39:34 +08:00
25 changed files with 417 additions and 145 deletions

View File

@@ -0,0 +1,44 @@
package com.cool.store.enums;
/**
* @author zhangchenbiao
* @FileName: OperateLogFieldValue
* @Description:
* @date 2023-06-27 10:44
*/
public enum OperateLogFieldValueEnum {
ALLOCATION_USERNAME("allocationUsername","分配人姓名"),
MOBILE("mobile","手机号"),
OPERATE_TIME("operateTime","操作时间"),
OPERATE_USER_NAME("operateUsername","操作人姓名"),
REASON("reason","原因"),
PASS_REASON("pass_reason","通过原因"),
REJECT_PUBLIC_REASON("reject_public_reason", "公开拒绝原因"),
REJECT_REAL_REASON("reject_real_reason", "真实拒绝原因"),
CERTIFY_FILE("certify_file", "上传的证明文件或凭证"),
BEFORE_INVESTMENT_MANAGER_USERNAME("before_investment_manager_username", "转让前的招商经理姓名"),
BEFORE_INVESTMENT_MANAGER_MOBILE("before_investment_manager_mobile", "转让前的招商经理手机号"),
AFTER_INVESTMENT_MANAGER_USERNAME("after_investment_manager_username", "转让后的招商经理姓名"),
AFTER_INVESTMENT_MANAGER_MOBILE("after_investment_manager_mobile", "转让后的招商经理手机好"),
;
private String code;
private String name;
OperateLogFieldValueEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}

View File

@@ -0,0 +1,47 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.List;
import static com.cool.store.enums.OperateLogFieldValueEnum.*;
/**
* @author zhangchenbiao
* @FileName: OperateTypeEnum
* @Description:
* @date 2023-06-27 10:41
*/
public enum OperateTypeEnum {
ALLOCATION_INVESTMENT_MANAGER("allocation_investment_manager", "分配招商经理", Arrays.asList(ALLOCATION_USERNAME, MOBILE, OPERATE_TIME)),
ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
REMOVE_BLACKLIST("add_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
CLOSE_FOLLOW("close_follow", "结束跟进", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON, REJECT_REAL_REASON, CERTIFY_FILE)),
TRANSFER_INVESTMENT_MANAGER("transfer_investment_manager", "转让招商经理", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INVESTMENT_MANAGER_USERNAME, BEFORE_INVESTMENT_MANAGER_MOBILE, AFTER_INVESTMENT_MANAGER_USERNAME, AFTER_INVESTMENT_MANAGER_MOBILE));
;
private String code;
private String name;
private List<OperateLogFieldValueEnum> filedList;
OperateTypeEnum(String code, String name, List<OperateLogFieldValueEnum> filedList) {
this.code = code;
this.name = name;
this.filedList = filedList;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public List<OperateLogFieldValueEnum> getFiledList() {
return filedList;
}
}

View File

@@ -1,6 +1,12 @@
package com.cool.store.enums; package com.cool.store.enums;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @Author suzhuhong * @Author suzhuhong
@@ -44,4 +50,13 @@ public enum WorkflowStageEnum {
return message; return message;
} }
protected static final Map<String, WorkflowStageEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(WorkflowStageEnum::getCode, Function.identity()));
public static WorkflowStageEnum getWorkflowStageByCode(String code) {
if(StringUtils.isBlank(code)) {
return null;
}
return map.get(code);
}
} }

View File

@@ -1,6 +1,8 @@
package com.cool.store.dao; package com.cool.store.dao;
import com.cool.store.dto.log.LineLogInfo;
import com.cool.store.entity.HyPartnerTaskInfoLogDO; import com.cool.store.entity.HyPartnerTaskInfoLogDO;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.mapper.HyPartnerTaskInfoLogMapper; import com.cool.store.mapper.HyPartnerTaskInfoLogMapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -23,8 +25,20 @@ public class HyPartnerTaskInfoLogDAO {
return hyPartnerTaskInfoLogMapper.updateByPrimaryKeySelective(hyPartnerTaskInfoLogDO); return hyPartnerTaskInfoLogMapper.updateByPrimaryKeySelective(hyPartnerTaskInfoLogDO);
} }
public int insertSelective( HyPartnerTaskInfoLogDO record){ public int insertSelective( HyPartnerTaskInfoLogDO record){
return hyPartnerTaskInfoLogMapper.insertSelective(record); return hyPartnerTaskInfoLogMapper.insertSelective(record);
} }
/**
* 新增操作日志
* @param lineLogInfo
*/
public void addOperateLog(LineLogInfo lineLogInfo){
if(!LineLogInfo.checkParams(lineLogInfo)){
return;
}
HyPartnerTaskInfoLogDO logInfo = LineLogInfo.convertDO(lineLogInfo);
insertSelective(logInfo);
}
} }

View File

@@ -270,7 +270,7 @@
<select id="getInterviewCount" resultType="com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO"> <select id="getInterviewCount" resultType="com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO">
select select
ifnull(sum(if(start_time>now() or (start_time<![CDATA[<]]>now() and room_status!=2),1,0)),0) as currentDayInterviewCount, ifnull(sum(if(interview_date = #{currentDate} and (start_time>now() or (start_time <![CDATA[<]]> now() and room_status!=2)),1,0)),0) as currentDayInterviewCount,
ifnull(sum(if(start_time>#{startTime} and end_time <![CDATA[<]]> #{endTime},1,0)),0) as lastSevenDayInterviewCount ifnull(sum(if(start_time>#{startTime} and end_time <![CDATA[<]]> #{endTime},1,0)),0) as lastSevenDayInterviewCount
FROM hy_partner_interview_plan FROM hy_partner_interview_plan
where interviewer = #{userId} where interviewer = #{userId}

View File

@@ -307,10 +307,12 @@
hpuinfo.want_shop_area as wantShopArea, hpuinfo.want_shop_area as wantShopArea,
hpuinfo.accept_adjust_type as acceptAdjustType, hpuinfo.accept_adjust_type as acceptAdjustType,
hpuinfo.mobile as partnerUserPhone, hpuinfo.mobile as partnerUserPhone,
hpuinfo.username as partnerUserName hpuinfo.username as partnerUserName,
hpuc.channel_name as channelName
from hy_partner_line_info a from hy_partner_line_info a
left join hy_partner_base_info b on a.id = b.partner_line_id left join hy_partner_base_info b on a.id = b.partner_line_id
LEFT JOIN hy_partner_user_info hpuinfo ON a.partner_id = hpuinfo.partner_id LEFT JOIN hy_partner_user_info hpuinfo ON a.partner_id = hpuinfo.partner_id
LEFT JOIN hy_partner_user_channel hpuc ON a.user_channel_id = hpuc.channel_id
<where> <where>
<if test="lineId!=null"> <if test="lineId!=null">
and a.id = #{lineId} and a.id = #{lineId}

View File

@@ -1,129 +1,136 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.HyPartnerTaskInfoLogMapper"> <mapper namespace="com.cool.store.mapper.HyPartnerTaskInfoLogMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerTaskInfoLogDO"> <resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerTaskInfoLogDO">
<id column="id" jdbcType="BIGINT" property="id" /> <id column="id" jdbcType="BIGINT" property="id"/>
<result column="partner_line_id" jdbcType="BIGINT" property="partnerLineId" /> <result column="partner_line_id" jdbcType="BIGINT" property="partnerLineId"/>
<result column="operate_user_id" jdbcType="VARCHAR" property="operateUserId" /> <result column="operate_user_id" jdbcType="VARCHAR" property="operateUserId"/>
<result column="operate_username" jdbcType="VARCHAR" property="operateUsername" /> <result column="operate_username" jdbcType="VARCHAR" property="operateUsername"/>
<result column="workflow_stage" jdbcType="VARCHAR" property="workflowStage" /> <result column="operate_type" jdbcType="VARCHAR" property="operateType"/>
<result column="workflow_status" jdbcType="VARCHAR" property="workflowStatus" /> <result column="workflow_stage" jdbcType="VARCHAR" property="workflowStage"/>
<result column="message" jdbcType="VARCHAR" property="message" /> <result column="workflow_status" jdbcType="VARCHAR" property="workflowStatus"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="message" jdbcType="VARCHAR" property="message"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="partner_id" jdbcType="VARCHAR" property="partnerId" /> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap> <result column="partner_id" jdbcType="VARCHAR" property="partnerId"/>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.cool.store.entity.HyPartnerTaskInfoLogDO"> </resultMap>
<result column="field_copy" jdbcType="LONGVARCHAR" property="fieldCopy" /> <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.cool.store.entity.HyPartnerTaskInfoLogDO">
</resultMap> <result column="field_copy" jdbcType="LONGVARCHAR" property="fieldCopy"/>
<sql id="Base_Column_List"> </resultMap>
id, partner_line_id, operate_user_id, operate_username, workflow_stage, workflow_status, <sql id="Base_Column_List">
message, create_time, update_time, partner_id id, partner_line_id, operate_user_id, operate_username, workflow_stage, workflow_status,
</sql> message, create_time, update_time, partner_id
<sql id="Blob_Column_List"> </sql>
field_copy <sql id="Blob_Column_List">
</sql> field_copy
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true"> </sql>
insert into hy_partner_task_info_log <insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
<trim prefix="(" suffix=")" suffixOverrides=","> insert into hy_partner_task_info_log
<if test="record.partnerLineId != null"> <trim prefix="(" suffix=")" suffixOverrides=",">
partner_line_id, <if test="record.partnerLineId != null">
</if> partner_line_id,
<if test="record.operateUserId != null"> </if>
operate_user_id, <if test="record.operateUserId != null">
</if> operate_user_id,
<if test="record.operateUsername != null"> </if>
operate_username, <if test="record.operateUsername != null">
</if> operate_username,
<if test="record.workflowStage != null"> </if>
workflow_stage, <if test="record.operateType != null">
</if> operate_type,
<if test="record.workflowStatus != null"> </if>
workflow_status, <if test="record.workflowStage != null">
</if> workflow_stage,
<if test="record.message != null"> </if>
message, <if test="record.workflowStatus != null">
</if> workflow_status,
<if test="record.createTime != null"> </if>
create_time, <if test="record.message != null">
</if> message,
<if test="record.updateTime != null"> </if>
update_time, <if test="record.createTime != null">
</if> create_time,
<if test="record.partnerId != null"> </if>
partner_id, <if test="record.updateTime != null">
</if> update_time,
<if test="record.fieldCopy != null"> </if>
field_copy, <if test="record.partnerId != null">
</if> partner_id,
</trim> </if>
<trim prefix="values (" suffix=")" suffixOverrides=","> <if test="record.fieldCopy != null">
<if test="record.partnerLineId != null"> field_copy,
#{record.partnerLineId}, </if>
</if> </trim>
<if test="record.operateUserId != null"> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{record.operateUserId}, <if test="record.partnerLineId != null">
</if> #{record.partnerLineId},
<if test="record.operateUsername != null"> </if>
#{record.operateUsername}, <if test="record.operateUserId != null">
</if> #{record.operateUserId},
<if test="record.workflowStage != null"> </if>
#{record.workflowStage}, <if test="record.operateUsername != null">
</if> #{record.operateUsername},
<if test="record.workflowStatus != null"> </if>
#{record.workflowStatus}, <if test="record.operateType != null">
</if> #{record.operateType},
<if test="record.message != null"> </if>
#{record.message}, <if test="record.workflowStage != null">
</if> #{record.workflowStage},
<if test="record.createTime != null"> </if>
#{record.createTime}, <if test="record.workflowStatus != null">
</if> #{record.workflowStatus},
<if test="record.updateTime != null"> </if>
#{record.updateTime}, <if test="record.message != null">
</if> #{record.message},
<if test="record.partnerId != null"> </if>
#{record.partnerId}, <if test="record.createTime != null">
</if> #{record.createTime},
<if test="record.fieldCopy != null"> </if>
#{record.fieldCopy}, <if test="record.updateTime != null">
</if> #{record.updateTime},
</trim> </if>
</insert> <if test="record.partnerId != null">
<update id="updateByPrimaryKeySelective"> #{record.partnerId},
update hy_partner_task_info_log </if>
<set> <if test="record.fieldCopy != null">
<if test="record.partnerLineId != null"> #{record.fieldCopy},
partner_line_id = #{record.partnerLineId}, </if>
</if> </trim>
<if test="record.operateUserId != null"> </insert>
operate_user_id = #{record.operateUserId}, <update id="updateByPrimaryKeySelective">
</if> update hy_partner_task_info_log
<if test="record.operateUsername != null"> <set>
operate_username = #{record.operateUsername}, <if test="record.partnerLineId != null">
</if> partner_line_id = #{record.partnerLineId},
<if test="record.workflowStage != null"> </if>
workflow_stage = #{record.workflowStage}, <if test="record.operateUserId != null">
</if> operate_user_id = #{record.operateUserId},
<if test="record.workflowStatus != null"> </if>
workflow_status = #{record.workflowStatus}, <if test="record.operateUsername != null">
</if> operate_username = #{record.operateUsername},
<if test="record.message != null"> </if>
message = #{record.message}, <if test="record.workflowStage != null">
</if> workflow_stage = #{record.workflowStage},
<if test="record.createTime != null"> </if>
create_time = #{record.createTime}, <if test="record.workflowStatus != null">
</if> workflow_status = #{record.workflowStatus},
<if test="record.updateTime != null"> </if>
update_time = #{record.updateTime}, <if test="record.message != null">
</if> message = #{record.message},
<if test="record.partnerId != null"> </if>
partner_id = #{record.partnerId}, <if test="record.createTime != null">
</if> create_time = #{record.createTime},
<if test="record.fieldCopy != null"> </if>
field_copy = #{record.fieldCopy}, <if test="record.updateTime != null">
</if> update_time = #{record.updateTime},
</set> </if>
where id = #{record.id} <if test="record.partnerId != null">
</update> partner_id = #{record.partnerId},
</if>
<if test="record.fieldCopy != null">
field_copy = #{record.fieldCopy},
</if>
</set>
where id = #{record.id}
</update>
</mapper> </mapper>

View File

@@ -0,0 +1,93 @@
package com.cool.store.dto.log;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.cool.store.entity.HyPartnerTaskInfoLogDO;
import com.cool.store.enums.OperateLogFieldValueEnum;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
/**
* @author zhangchenbiao
* @FileName: LineLogInfo
* @Description:
* @date 2023-06-27 13:44
*/
@Slf4j
@Data
public class LineLogInfo<T> {
@ApiModelProperty("hy_partner_user_info.partner_id")
private String partnerId;
@ApiModelProperty("hy_partner_line_info.id")
private Long partnerLineId;
@ApiModelProperty("操作人id")
private String operateUserId;
@ApiModelProperty("操作人姓名")
private String operateUsername;
@ApiModelProperty("操作类型")
private OperateTypeEnum operateType;
@ApiModelProperty("流程阶段:意向申请审核、预约面试时间、加盟资格面试、分配选址开发经理、商圈点位评估、上传店铺租赁信息、完善加盟签约信息、支付加盟费用、签订加盟合同")
private WorkflowStageEnum workflowStage;
@ApiModelProperty("流程子状态")
private WorkflowStatusEnum workflowStatus;
@ApiModelProperty("备注")
private String message;
@ApiModelProperty("数据处理字段")
private T data;
public static boolean checkParams(LineLogInfo params){
if(StringUtils.isAnyBlank(params.getPartnerId(), params.getOperateUserId(), params.getOperateUsername())){
log.info("lineLogInfo string:{}", JSONObject.toJSONString(params));
return false;
}
if(Objects.isNull(params.getOperateType()) || Objects.isNull(params.getWorkflowStage()) || Objects.isNull(params.getWorkflowStatus())){
log.info("lineLogInfo enum is null:{}", JSONObject.toJSONString(params));
return false;
}
return true;
}
public static HyPartnerTaskInfoLogDO convertDO(LineLogInfo params){
OperateTypeEnum operateType = params.getOperateType();
HyPartnerTaskInfoLogDO result = new HyPartnerTaskInfoLogDO();
result.setPartnerId(params.getPartnerId());
result.setPartnerLineId(params.getPartnerLineId());
result.setOperateType(params.getOperateType().getCode());
result.setWorkflowStage(params.getWorkflowStage().getCode());
result.setWorkflowStatus(params.getWorkflowStatus().getCode());
result.setOperateUserId(params.getOperateUserId());
result.setOperateUsername(params.getOperateUsername());
result.setMessage(params.getMessage());
result.setCreateTime(new Date());
result.setUpdateTime(new Date());
Object data = params.getData();
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(data));
List<OperateLogFieldValueEnum> filedList = operateType.getFiledList();
List<Map<String, Object>> fieldMapList = new ArrayList<>();
for (OperateLogFieldValueEnum field : filedList) {
Map<String, Object> fieldMap = new HashMap<>();
fieldMap.put("code",field.getCode());
fieldMap.put("name",field.getName());
fieldMap.put("value",jsonObject.get(field.getCode()));
fieldMapList.add(fieldMap);
}
result.setFieldCopy(JSONObject.toJSONString(fieldMapList));
return result;
}
}

View File

@@ -76,4 +76,6 @@ public class PartnerLineInfoAndBaseInfoDTO {
@ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂")
private Integer acceptAdjustType; private Integer acceptAdjustType;
private String channelName;
} }

View File

@@ -18,6 +18,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class HyPartnerTaskInfoLogDO implements Serializable { public class HyPartnerTaskInfoLogDO implements Serializable {
@ApiModelProperty("") @ApiModelProperty("")
private Long id; private Long id;
@@ -30,6 +31,9 @@ public class HyPartnerTaskInfoLogDO implements Serializable {
@ApiModelProperty("操作人姓名") @ApiModelProperty("操作人姓名")
private String operateUsername; private String operateUsername;
@ApiModelProperty("操作类型 参考代码中OperateTypeEnum")
private String operateType;
@ApiModelProperty("流程阶段:意向申请审核、预约面试时间、加盟资格面试、分配选址开发经理、商圈点位评估、上传店铺租赁信息、完善加盟签约信息、支付加盟费用、签订加盟合同") @ApiModelProperty("流程阶段:意向申请审核、预约面试时间、加盟资格面试、分配选址开发经理、商圈点位评估、上传店铺租赁信息、完善加盟签约信息、支付加盟费用、签订加盟合同")
private String workflowStage; private String workflowStage;

View File

@@ -56,7 +56,7 @@ public class PartnerIntentApplyInfoVO {
private String deadline; private String deadline;
@ApiModelProperty("阶段提交时间") @ApiModelProperty("阶段提交时间")
private Date partnerSubmitTime; private String partnerSubmitTime;
@ApiModelProperty("阶段状态") @ApiModelProperty("阶段状态")
private String WorkflowStatus; private String WorkflowStatus;
@@ -72,7 +72,7 @@ public class PartnerIntentApplyInfoVO {
partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId()); partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId());
partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId()); partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
partnerIntentApplyInfoVO.setLineId(partnerIntentApplyInfoDTO.getPartnerLineId()); partnerIntentApplyInfoVO.setLineId(partnerIntentApplyInfoDTO.getPartnerLineId());
partnerIntentApplyInfoVO.setPartnerSubmitTime(partnerIntentApplyInfoDTO.getPartnerSubmitTime()); partnerIntentApplyInfoVO.setPartnerSubmitTime( DateUtil.format(partnerIntentApplyInfoDTO.getPartnerSubmitTime(), CoolDateUtils.DATE_FORMAT_SEC));
partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType()); partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType());
partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea()); partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea());
partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea()); partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea());

View File

@@ -31,7 +31,7 @@ public class PartnerInterviewInfoVO {
private String endTime; private String endTime;
@ApiModelProperty("截止时间") @ApiModelProperty("截止时间")
private Date deadline; private String deadline;
@ApiModelProperty("房间号") @ApiModelProperty("房间号")
private String roomId; private String roomId;
@@ -70,5 +70,5 @@ public class PartnerInterviewInfoVO {
private String authCode; private String authCode;
@ApiModelProperty("审批发起时间") @ApiModelProperty("审批发起时间")
private Date approveTime; private String approveTime;
} }

View File

@@ -83,4 +83,7 @@ public class PartnerLineInfoAndBaseInfoVO {
@ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂")
private Integer acceptAdjustType; private Integer acceptAdjustType;
@ApiModelProperty("线索来源名称")
private String channelName;
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
@@ -18,4 +19,11 @@ public interface WorkFlowService {
*/ */
void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request); void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request);
/**
* 转让招商经理
* @param workflowStage
* @param request
*/
void transferInvestmentManager(WorkflowStageEnum workflowStage,TransferInvestmentManagerRequest request);
} }

View File

@@ -81,7 +81,7 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
} }
//转交 所有的招商经理 //转交 所有的招商经理
if (CommonConstants.TRANSFER.equals(type)){ if (CommonConstants.TRANSFER.equals(type)){
enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(regionList), keyword, null); enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(list), keyword, null);
} }
return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS); return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS);
} }

View File

@@ -113,7 +113,7 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
HyPartnerTaskInfoLogDO logDO = new HyPartnerTaskInfoLogDO(request.getPartnerId(), request.getPartnerLineId(), WorkflowStageEnum.INTENT.getCode(), WorkflowStatusEnum.INTENT_1.getCode(), currentUser.getPartnerId(), currentUser.getUsername(), null); HyPartnerTaskInfoLogDO logDO = new HyPartnerTaskInfoLogDO(request.getPartnerId(), request.getPartnerLineId(), WorkflowStageEnum.INTENT.getCode(), WorkflowStatusEnum.INTENT_1.getCode(), currentUser.getPartnerId(), currentUser.getUsername(), null);
hyPartnerTaskInfoLogDAO.insertSelective(logDO); // hyPartnerTaskInfoLogDAO.insertSelective(logDO);
} }
// 清空暂存信息 // 清空暂存信息
redisUtilPool.delKey(cacheKey); redisUtilPool.delKey(cacheKey);

View File

@@ -269,12 +269,12 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo()); partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo());
partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC)); partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId()); partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId());
partnerInterviewInfoVO.setDeadline(partnerInterviewInfoDTO.getDeadline()); partnerInterviewInfoVO.setDeadline(DateUtil.format(partnerInterviewInfoDTO.getDeadline(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC)); partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus()); partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus());
partnerInterviewInfoVO.setAuthCode(partnerInterviewInfoDTO.getAuthCode()); partnerInterviewInfoVO.setAuthCode(partnerInterviewInfoDTO.getAuthCode());
partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC)); partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setApproveTime(partnerInterviewInfoDTO.getApproveTime()); partnerInterviewInfoVO.setApproveTime(DateUtil.format(partnerInterviewInfoDTO.getApproveTime(),CoolDateUtils.DATE_FORMAT_SEC));
return partnerInterviewInfoVO; return partnerInterviewInfoVO;
} }

View File

@@ -16,11 +16,7 @@ import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest; import com.cool.store.request.LineRequest;
import com.cool.store.request.PrivateSeaLineListRequest; import com.cool.store.request.PrivateSeaLineListRequest;
import com.cool.store.request.QueryByInterviewPlanIdReq; import com.cool.store.request.QueryByInterviewPlanIdReq;
import com.cool.store.service.AliyunService; import com.cool.store.service.*;
import com.cool.store.service.EnterpriseUserService;
import com.cool.store.service.HyPartnerBaseInfoService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.service.InterviewService;
import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.StringUtil; import com.cool.store.utils.StringUtil;
@@ -31,6 +27,7 @@ import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.sql.Array; import java.sql.Array;
@@ -72,6 +69,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO; HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO;
@Resource @Resource
private HyPartnerBaseInfoService hyPartnerBaseInfoService; private HyPartnerBaseInfoService hyPartnerBaseInfoService;
@Resource
WorkFlowService workFlowService;
@Override @Override
@@ -252,6 +251,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) { public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId()); HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
if (hyPartnerLineInfoDO==null){ if (hyPartnerLineInfoDO==null){
@@ -282,7 +282,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage()); String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage());
hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus); hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus);
//15天 冷静期 //15天 冷静期
// TODO: 2023/6/13 冷静期
String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId()); String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId());
redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest)); redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15)); hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15));
@@ -294,6 +293,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode()); hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
hyPartnerLineInfoDO.setCloseTime(new Date()); hyPartnerLineInfoDO.setCloseTime(new Date());
hyPartnerLineInfoDO.setCloseUserId(userId); hyPartnerLineInfoDO.setCloseUserId(userId);
//各阶段单独的逻辑
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),closeFollowRequest);
} }
//面试超时 //面试超时
@@ -628,6 +629,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType()); partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType());
partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea()); partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea());
partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea()); partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea());
partnerLineInfoAndBaseInfoVO.setChannelName(partnerLineInfoAndBaseInfoDTO.getChannelName());
if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())){ if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())){
partnerLineInfoAndBaseInfoVO.setPassCertifyFile(JSONObject.parseArray(partnerLineInfoAndBaseInfoDTO.getCertifyFile(), String.class)); partnerLineInfoAndBaseInfoVO.setPassCertifyFile(JSONObject.parseArray(partnerLineInfoAndBaseInfoDTO.getCertifyFile(), String.class));
} }

View File

@@ -101,7 +101,6 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService {
hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
// hyPartnerUserInfoDO.setUsername(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); // hyPartnerUserInfoDO.setUsername(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID()); hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID());
hyPartnerUserInfoDO.setAcceptAdjustType(0);
hyPartnerUserInfoDO.setIsWritePartnerKnow(0); hyPartnerUserInfoDO.setIsWritePartnerKnow(0);
hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO); hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO);
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.service.WorkFlowService; import com.cool.store.service.WorkFlowService;
import com.cool.store.service.impl.workflow.IntentWorkFlowService; import com.cool.store.service.impl.workflow.IntentWorkFlowService;
import com.cool.store.service.impl.workflow.InterviewWorkFlowService; import com.cool.store.service.impl.workflow.InterviewWorkFlowService;
@@ -18,7 +19,6 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class WorkFlowServiceImpl implements WorkFlowService{ public class WorkFlowServiceImpl implements WorkFlowService{
private WorkFlowBaseService getWorkflowService(WorkflowStageEnum workflowStage){ private WorkFlowBaseService getWorkflowService(WorkflowStageEnum workflowStage){
switch (workflowStage){ switch (workflowStage){
case INTENT: case INTENT:
@@ -32,8 +32,14 @@ public class WorkFlowServiceImpl implements WorkFlowService{
} }
} }
@Override @Override
public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) { public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) {
getWorkflowService(workflowStage).endProcess(request); getWorkflowService(workflowStage).endProcess(request);
} }
@Override
public void transferInvestmentManager(WorkflowStageEnum workflowStage, TransferInvestmentManagerRequest request) {
getWorkflowService(workflowStage).transferInvestmentManager(request);
}
} }

View File

@@ -2,7 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.service.impl.WorkFlowServiceImpl; import com.cool.store.request.TransferInvestmentManagerRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -25,4 +25,9 @@ public class IntentWorkFlowService extends WorkFlowBaseService {
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) {
log.info("意向申请结束~"); log.info("意向申请结束~");
} }
@Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
log.info("转让招商经理~");
}
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -24,4 +25,9 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) {
log.info("面试结束~"); log.info("面试结束~");
} }
@Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
log.info("转让招商经理~");
}
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -24,4 +25,9 @@ public class ReservationWorkFlowService extends WorkFlowBaseService {
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) {
log.info("预约面试结束~"); log.info("预约面试结束~");
} }
@Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
log.info("转让招商经理~");
}
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
@@ -22,4 +23,10 @@ public abstract class WorkFlowBaseService {
* @param request * @param request
*/ */
public abstract void endProcess(CloseFollowRequest request); public abstract void endProcess(CloseFollowRequest request);
/**
* 转让招商经理
* @param request
*/
public abstract void transferInvestmentManager(TransferInvestmentManagerRequest request);
} }

View File

@@ -29,6 +29,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**