FollowStrategy.java 2.7 KB
package cn.fw.valhalla.service.bus.follow.strategy;

import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.valhalla.domain.db.OriginalData;
import cn.fw.valhalla.domain.db.follow.FollowRecord;
import cn.fw.valhalla.domain.db.follow.FollowTask;
import cn.fw.valhalla.domain.dto.FollowAttachmentDTO;
import cn.fw.valhalla.domain.enums.FollowTypeEnum;
import cn.fw.valhalla.domain.vo.follow.FollowDetailVO;
import cn.fw.valhalla.domain.vo.follow.FollowRecordVO;
import cn.fw.valhalla.domain.vo.follow.FollowTodoListVO;
import cn.fw.valhalla.domain.vo.setting.SettingVO;

import java.util.Date;
import java.util.List;

/**
 * @author : kurisu
 * @className : FollowStrategy
 * @description : 跟进策略接口
 * @date: 2020-08-14 10:10
 */
public interface FollowStrategy {
    /**
     * 获取类型
     *
     * @return
     */
    FollowTypeEnum getFollowType();

    /**
     * 查询待办列表详情
     *
     * @param startIndex
     * @param pageSize
     * @param userId
     * @return
     */
    List<FollowTodoListVO> getList(Integer startIndex, Integer pageSize, Long userId);

    /**
     * 查询跟进待办详情
     *
     * @param id
     * @return
     */
    FollowDetailVO getDetail(Long id);

    /**
     * 查询跟进记录
     *
     * @param taskId
     * @return
     */
    List<FollowRecordVO> getRecordList(Long taskId);

    /**
     * 完成跟进
     *
     * @param id
     * @param currentUser
     */
    void completeRecord(Long id, LoginAuthBean currentUser);

    /**
     * 完成跟进
     * @param record
     */
    void completeRecord2(FollowRecord record);

    /**
     * 上传跟进附件
     *
     * @param dto
     * @param userId
     */
    void uploadAtt(FollowAttachmentDTO dto, Long userId);

    /**
     * 取消跟进任务
     *
     * @param customerId
     * @param time
     * @param groupId
     */
    void cancelFollowTask(Long customerId, Date time, Long groupId);

    /**
     * 更新跟进任务
     *
     * @param setting
     * @param groupId
     */
    void settingChanged(List<SettingVO> setting, Long groupId);

    /**
     * 元数据生成任务
     *
     * @param originalData
     * @return
     */
    boolean origin2task(OriginalData originalData);

    /**
     * 生成首次跟进记录
     *
     * @param task
     * @return 操作结果
     */
    Long createFirstRecord(FollowTask task);

    /**
     * 逾期处理
     *
     * @param record
     */
    void overdueProcessing(FollowRecord record);

    /**
     * 提前终止跟进任务
     * @param task
     */
    void stopFollowTask(FollowTask task);

    /**
     * 查询跟进池详情
     *
     * @param task
     * @return
     */
    FollowDetailVO followPoolDetail(FollowTask task);
}