CustomerService.java 3.63 KB
package cn.fw.valhalla.service.data;

import cn.fw.valhalla.domain.db.customer.Customer;
import cn.fw.valhalla.domain.dto.CustomerDetailDto;
import cn.fw.valhalla.domain.dto.StammkundeAnalyseDTO;
import cn.fw.valhalla.domain.query.CustomCustomerQuery;
import cn.fw.valhalla.domain.query.CustomerQueryVO;
import cn.fw.valhalla.domain.query.StammkundeAnalyseQueryVO;
import cn.fw.valhalla.domain.vo.customer.CustomerListVO;
import cn.fw.valhalla.sdk.param.CusCntReq;
import cn.fw.valhalla.sdk.result.BasicsCustomerDTO;
import cn.fw.valhalla.sdk.result.CusCntResult;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author : kurisu
 * @className : CustomerService
 * @description : 档案
 * @date: 2020-08-12 11:19
 */
public interface CustomerService extends IService<Customer> {

    /**
     * 分页查询查询
     *
     * @param startIndex
     * @param pageSize
     * @param queryVO
     * @return
     */
    List<CustomerListVO> getAppPageList(Integer startIndex, Integer pageSize, CustomerQueryVO queryVO);

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    Customer queryById(Long id);

    /**
     * 查询档案需要无效的
     *
     * @param id
     * @return
     */
    Customer queryByIdWithInvalid(Long id);

    /**
     * 根据车牌号查询档案信息
     *
     * @param plateNo
     * @param groupId
     * @return
     */
    Customer queryByPlateNo(String plateNo, Long groupId);

    /**
     * 根据车牌号查询档案信息
     *
     * @param frameNo
     * @param groupId
     * @return
     */
    Customer queryByFrameNo(String frameNo, Long groupId);

    /**
     * 根据车牌号查询档案信息
     *
     * @param engineNo
     * @param groupId
     * @return
     */
    Customer queryByEngineNo(String engineNo, Long groupId);

    /**
     * 根据baseId查询档案信息
     *
     * @param baseId
     * @return
     */
    List<Customer> queryByBaseId(Long baseId);

    /**
     * 禁用档案
     *
     * @param customerId
     */
    void forbidden(Long customerId);

    /**
     * 禁用档案
     *
     * @param plateNo
     */
    void forbiddenPlate(String plateNo);

    /**
     * 查询服务顾问所有档案
     *
     * @param adviserId
     * @return
     */
    @Nullable
    List<Customer> queryByAdviserId(@NonNull Long adviserId);

    /**
     * 查询指定条件的客户信息
     *
     * @param queryVO
     * @return
     */
    List<StammkundeAnalyseDTO> analyseList(StammkundeAnalyseQueryVO queryVO);

    /**
     * 查询自定义参数的档案信息
     *
     * @param query
     * @return
     */
    List<CustomerDetailDto> queryCustomList(CustomCustomerQuery query);

    /**
     * 查询自定义参数的档案数量
     *
     * @param query
     * @return
     */
    Long queryCustomListCount(CustomCustomerQuery query);

    /**
     * 关键字全匹配查询
     *
     * @param keyword
     * @param groupId
     * @return
     */
    List<BasicsCustomerDTO> queryByKeyword(String keyword, Long groupId);

    /**
     * 分配线索后重新更新档案的服务顾问
     *
     * @param vinList
     * @param userId
     * @param shopId
     * @param groupId
     */
    @Transactional(rollbackFor = Exception.class)
    void afterDistributePubClue(List<String> vinList, Long userId, Long shopId, Long groupId);

    /**
     * 查询保有客数量
     * @param req 查询参数
     * @return 保有客数量
     */
    List<CusCntResult> queryCusCnt(CusCntReq req);

}