FollowRecordServiceImpl.java 3.34 KB
package cn.fw.valhalla.service.data.impl;

import cn.fw.valhalla.dao.mapper.FollowRecordMapper;
import cn.fw.valhalla.domain.db.follow.FollowRecord;
import cn.fw.valhalla.domain.enums.FollowTypeEnum;
import cn.fw.valhalla.service.data.FollowRecordService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author : kurisu
 * @className : FollowRecordImpl
 * @description : 跟进记录
 * @date: 2020-08-12 11:10
 */
@Slf4j
@Service
public class FollowRecordServiceImpl extends ServiceImpl<FollowRecordMapper, FollowRecord> implements FollowRecordService {
    @Override
    public boolean queryAndSave(FollowRecord record) {
        int count = this.count(Wrappers.<FollowRecord>lambdaQuery()
                .eq(FollowRecord::getTaskId, record.getTaskId())
                .eq(FollowRecord::getUserId, record.getUserId())
                .eq(FollowRecord::getPlanTime, record.getPlanTime()));
        if (count > 0) {
            return true;
        }
        return this.save(record);
    }

    /**
     * 查询跟进记录
     *
     * @param taskId
     * @return
     */
    @Override
    public List<FollowRecord> getRecordList(final Long taskId) {
        return this.list(Wrappers.<FollowRecord>lambdaQuery()
                .eq(FollowRecord::getTaskId, taskId)
                .eq(FollowRecord::getAddTodo, Boolean.TRUE)
                .orderByAsc(FollowRecord::getId)
        );
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean overdue(final Long id) {
        return this.update(Wrappers.<FollowRecord>lambdaUpdate()
                .set(FollowRecord::getOutTime, Boolean.TRUE)
                .eq(FollowRecord::getId, id)
        );
    }

    @Override
    public boolean addTodoBatchById(List<Long> list) {
        if (CollectionUtils.isEmpty(list)) {
            return false;
        }
        return this.update(Wrappers.<FollowRecord>lambdaUpdate()
                .set(FollowRecord::getAddTodo, Boolean.TRUE)
                .in(FollowRecord::getId, list)
        );
    }

    @Override
    public boolean removeByTaskId(Long taskId) {
        return this.remove(Wrappers.<FollowRecord>lambdaQuery()
                .eq(FollowRecord::getTaskId, taskId)
                .eq(FollowRecord::getAddTodo, Boolean.FALSE)
                .isNull(FollowRecord::getFollowTime)
        );
    }

    @Override
    public boolean removeByTaskIds(List<Long> idList) {
        return this.remove(Wrappers.<FollowRecord>lambdaQuery()
                .in(FollowRecord::getTaskId, idList)
                .eq(FollowRecord::getOutTime, Boolean.FALSE)
                .isNull(FollowRecord::getFollowTime)
        );
    }

    @Override
    public void removeRecordByCustId(Long customerId, List<FollowTypeEnum> list) {
        remove(Wrappers.<FollowRecord>lambdaQuery()
                .eq(FollowRecord::getCustomerId, customerId)
                .eq(FollowRecord::getOutTime, Boolean.FALSE)
                .eq(FollowRecord::getAddTodo, Boolean.FALSE)
                .in(!CollectionUtils.isEmpty(list), FollowRecord::getType, list)
        );
    }
}