ConsultServiceImpl.java 5.71 KB
package com.sincere.student.service.impl;

import com.github.pagehelper.PageHelper;
import com.sincere.student.dto.ColumnDto;
import com.sincere.student.dto.ConsultSearchDto;
import com.sincere.student.enums.ColumnEnums;
import com.sincere.student.mapper.ColumnMapper;
import com.sincere.student.mapper.UniversityConsultDetailMapper;
import com.sincere.student.mapper.UniversityConsultMapper;
import com.sincere.student.model.*;
import com.sincere.student.service.ConsultService;
import com.sincere.student.utils.Page;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.Arrays;
import java.util.List;

@Service
public class ConsultServiceImpl implements ConsultService {

    @Autowired
    UniversityConsultMapper universityConsultMapper;

    @Autowired
    UniversityConsultDetailMapper universityConsultDetailMapper;

    @Autowired
    ColumnMapper columnMapper;

    @Override
    public List<Consult> selectByUniversityIdAndColumnType(int universityId, int columnType) {
        UniversityConsult consult = new UniversityConsult();
        consult.setColumnType(columnType);
        consult.setUniversityId(universityId);
        return universityConsultMapper.selectByUniversityIdAndColumnType(consult);
    }

    @Override
    public Page<Consult> getList(ConsultSearchDto consultSearchDto) {
        Page<Consult> page = new Page<>(consultSearchDto.getPage(), consultSearchDto.getPageSize());
        if (StringUtils.isNotBlank(consultSearchDto.getUniversityName())) {
            consultSearchDto.setUniversityName("%" + consultSearchDto.getUniversityName() + "%");
        }
        if (StringUtils.isNotBlank(consultSearchDto.getMajorName())) {
            consultSearchDto.setMajorName("%" + consultSearchDto.getMajorName() + "%");
        }
        PageHelper.startPage(consultSearchDto.getPage(), consultSearchDto.getPageSize());
        List<Consult> list = universityConsultMapper.getList(consultSearchDto);
        ColumnDto columnDto = new ColumnDto();
        columnDto.setType(ColumnEnums.university.getType());
        List<ColumnType> columnTypes = columnMapper.getList(columnDto);
        for (Consult consult : list) {
            Consult newConsut = universityConsultMapper.selectByPrimaryKey(consult.getId());
            consult.setModelList(newConsut.getModelList());
            for (ColumnType columnType : columnTypes) {
                if (consult.getColumnType() == columnType.getId()) {
                    consult.setColumnTypeName(columnType.getName());
                }
            }
        }
        page.setList(list);
        page.setCount(universityConsultMapper.getListCount(consultSearchDto));
        return page;
    }

    @Override
    public Page<Consult> getColumnList(int columnType, int page, int pageSize) {
        Page<Consult> result = new Page<>(page, pageSize);
        PageHelper.startPage(page, pageSize);
        result.setList(universityConsultMapper.getColumnList(columnType));
        result.setCount(universityConsultMapper.getColumnListCount(columnType));
        return result;
    }

    @Override
    public Consult getDetail(int id) {
        Consult consult = universityConsultMapper.selectByPrimaryKey(id);
        universityConsultMapper.updateRead(id);
        try {
            consult.setVideoUrlList(Arrays.asList(consult.getVideoUrl().split(",")));
        } catch (Exception e) {

        }
        consult.setList(universityConsultDetailMapper.selectByConsult(id));
        return consult;
    }

    @Override
    public int create(UniversityConsult consult) {
        //排序
        Integer sort = consult.getSort();
        List<Consult> consultList = universityConsultMapper.countSort(sort.intValue(), 1, null);
        if (!CollectionUtils.isEmpty(consultList)) {
            int i = 1;
            for (Consult oldConsult : consultList) {
                int addSort = i + sort;
                if (addSort > oldConsult.getSort()) {
                    //若已存在自增1
                    oldConsult.setSort(oldConsult.getSort() + 1);
                    universityConsultMapper.updateSort(oldConsult);
                }
                i++;
            }
        }
        universityConsultMapper.insert(consult);
        for (UniversityConsultDetail detail : consult.getList()) {
            detail.setConsultId(consult.getId());
            universityConsultDetailMapper.insert(detail);
        }
        return consult.getId();
    }

    @Override
    public int update(UniversityConsult consult) {
        //排序
        Integer sort = consult.getSort();
        List<Consult> consultList = universityConsultMapper.countSort(sort.intValue(), 2, consult.getId());
        if (!CollectionUtils.isEmpty(consultList)) {
            int i = 1;
            for (Consult oldConsult : consultList) {
                int addSort = i + sort;
                if (addSort > oldConsult.getSort()) {
                    //若已存在自增1
                    oldConsult.setSort(oldConsult.getSort() + 1);
                    universityConsultMapper.updateSort(oldConsult);
                }
                i++;
            }
        }
        universityConsultMapper.updateByPrimaryKeySelective(consult);
        universityConsultDetailMapper.deleteByPrimaryKey(consult.getId());
        for (UniversityConsultDetail detail : consult.getList()) {
            detail.setConsultId(consult.getId());
            universityConsultDetailMapper.insert(detail);
        }
        return 1;
    }

    @Override
    public int delete(int id) {
        universityConsultMapper.deleteByPrimaryKey(id);
        universityConsultDetailMapper.deleteByPrimaryKey(id);
        return 1;

    }
}