package cn.fw.valhalla.service.data.impl; import cn.fw.valhalla.dao.mapper.CustomerMapper; 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 cn.fw.valhalla.service.data.CustomerService; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** * @author : kurisu * @className : CustomerServiceImpl * @description : 档案 * @date: 2020-08-12 11:20 */ @Service @Slf4j public class CustomerServiceImpl extends ServiceImpl implements CustomerService { @Override public List getAppPageList(Integer startIndex, Integer pageSize, CustomerQueryVO queryVO) { List appPageList = getBaseMapper().getAppPageList(startIndex, queryVO.getPageSize(), queryVO); return CollectionUtils.isEmpty(appPageList) ? new ArrayList<>() : appPageList; } @Override public Customer queryById(Long id) { return this.getBaseMapper().selectOne(Wrappers.lambdaQuery() .eq(Customer::getId, id) .eq(Customer::getYn, Boolean.TRUE) .last("limit 1")); } @Override public Customer queryByIdWithInvalid(Long id) { return this.getBaseMapper().selectOne(Wrappers.lambdaQuery() .eq(Customer::getId, id) .last("limit 1")); } @Override public Customer queryByPlateNo(String plateNo, Long groupId) { return this.getBaseMapper().selectOne(Wrappers.lambdaQuery() .eq(Customer::getPlateNo, plateNo) .eq(Customer::getYn, Boolean.TRUE) .eq(Customer::getGroupId, groupId) .orderByDesc(Customer::getUpdateTime) .last("limit 1")); } @Override public Customer queryByFrameNo(String frameNo, Long groupId) { return this.getBaseMapper().selectOne(Wrappers.lambdaQuery() .eq(Customer::getFrameNo, frameNo) .eq(Customer::getYn, Boolean.TRUE) .eq(Customer::getGroupId, groupId) .orderByDesc(Customer::getUpdateTime) .last("limit 1")); } @Override public Customer queryByEngineNo(String engineNo, Long groupId) { return this.getBaseMapper().selectOne(Wrappers.lambdaQuery() .eq(Customer::getEngineNo, engineNo) .eq(Customer::getYn, Boolean.TRUE) .eq(Customer::getGroupId, groupId) .orderByDesc(Customer::getUpdateTime) .last("limit 1")); } @Override public List queryByBaseId(Long baseId) { return this.list(Wrappers.lambdaQuery() .eq(Customer::getBaseId, baseId) .eq(Customer::getYn, Boolean.TRUE) ); } @Override public void forbidden(Long customerId) { this.update(Wrappers.lambdaUpdate() .set(Customer::getYn, Boolean.FALSE) .eq(Customer::getId, customerId) ); } @Override public void forbiddenPlate(String plateNo) { this.update(Wrappers.lambdaUpdate() .set(Customer::getYn, Boolean.FALSE) .eq(Customer::getPlateNo, plateNo) .eq(Customer::getYn, Boolean.TRUE) ); } @Override @Nullable public List queryByAdviserId(@NonNull Long adviserId) { return this.list(Wrappers.lambdaQuery() .eq(Customer::getAdviserId, adviserId) .eq(Customer::getYn, Boolean.TRUE) ); } @Override public List analyseList(final StammkundeAnalyseQueryVO queryVO) { List list = this.getBaseMapper().analyseList(queryVO); return Optional.ofNullable(list).orElse(new ArrayList<>()); } @Override public List queryCustomList(CustomCustomerQuery query) { return Optional.ofNullable(getBaseMapper().queryCustomList(query)).orElse(new ArrayList<>()); } @Override public Long queryCustomListCount(CustomCustomerQuery query) { return Optional.ofNullable(getBaseMapper().queryCustomCount(query)).orElse(0L); } @Override public List queryByKeyword(String keyword, Long groupId) { return Optional.ofNullable(this.getBaseMapper().queryByKeyword(keyword, groupId)).orElse(new ArrayList<>()); } @Override @Transactional(rollbackFor = Exception.class) public void afterDistributePubClue(final List vinList, final Long userId, final Long shopId, final Long groupId) { update(Wrappers.lambdaUpdate() .set(Customer::getAdviserId, userId) .set(Customer::getShopId, shopId) .set(Customer::getTemporary, Boolean.TRUE) .eq(Customer::getYn, Boolean.TRUE) .eq(Customer::getGroupId, groupId) .in(Customer::getFrameNo, vinList) .isNull(Customer::getAdviserId) ); } @Override public List queryCusCnt(final CusCntReq req) { if(!CollectionUtils.isEmpty(req.getShopIds())){ return getBaseMapper().queryShopCusCnt(req); } return getBaseMapper().queryAdviserCusCnt(req); } }