package com.mindskip.xzs.service.impl;
|
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.mindskip.xzs.base.RestResponse;
|
import com.mindskip.xzs.context.WebContext;
|
import com.mindskip.xzs.domain.Subject;
|
import com.mindskip.xzs.domain.SubjectDept;
|
import com.mindskip.xzs.domain.enums.RoleEnum;
|
import com.mindskip.xzs.domain.form.AddSubjectForm;
|
import com.mindskip.xzs.domain.form.EditSubjectForm;
|
import com.mindskip.xzs.repository.BaseMapper;
|
import com.mindskip.xzs.repository.DepartmentMapper;
|
import com.mindskip.xzs.repository.SubjectDeptMapper;
|
import com.mindskip.xzs.repository.SubjectMapper;
|
import com.mindskip.xzs.service.SubjectService;
|
import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class SubjectServiceImpl extends BaseServiceImpl<Subject> implements SubjectService {
|
|
private final SubjectMapper subjectMapper;
|
private final WebContext webContext;
|
private final DepartmentMapper departmentMapper;
|
private final SubjectDeptMapper subjectDeptMapper;
|
|
public SubjectServiceImpl(BaseMapper<Subject> baseMapper, SubjectMapper subjectMapper, WebContext webContext, DepartmentMapper departmentMapper, SubjectDeptMapper subjectDeptMapper) {
|
super(baseMapper);
|
this.subjectMapper = subjectMapper;
|
this.webContext = webContext;
|
this.departmentMapper = departmentMapper;
|
this.subjectDeptMapper = subjectDeptMapper;
|
}
|
|
@Override
|
public Subject selectById(Integer id) {
|
return super.selectById(id);
|
}
|
|
@Override
|
public int updateByIdFilter(Subject record) {
|
return super.updateByIdFilter(record);
|
}
|
|
@Override
|
public List<Subject> getSubjectByLevel(Integer level) {
|
return subjectMapper.getSubjectByLevel(level);
|
}
|
|
@Override
|
public List<Subject> allSubject() {
|
// 只查自己部门的课目
|
List<Integer> deptIds = webContext.getAdminDeptIds();
|
Boolean admin = RoleEnum.ADMIN.getCode().equals(webContext.getCurrentUser().getRole());
|
return subjectMapper.allSubject(deptIds, admin);
|
}
|
|
@Override
|
public Integer levelBySubjectId(Integer id) {
|
return this.selectById(id).getLevel();
|
}
|
|
@Override
|
public PageInfo<Subject> page(SubjectPageRequestVM requestVM) {
|
return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
|
subjectMapper.page(requestVM)
|
);
|
}
|
|
@Override
|
public List<Subject> getNames(String[] names) {
|
return subjectMapper.getNames(names);
|
}
|
|
@Override
|
public List<Subject> selectByIds(Integer[] ids) {
|
return subjectMapper.selectByIds(ids);
|
}
|
|
@Override
|
public List<Subject> listByDeptId(Integer deptId) {
|
return subjectMapper.listByDeptId(deptId);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public RestResponse add(AddSubjectForm form) {
|
Subject subject = new Subject();
|
subject.setName(form.getSubjectName());
|
subject.setDeleted(false);
|
try {
|
subjectMapper.insert(subject);
|
} catch (Exception e) {
|
return RestResponse.fail(500, "科目名不能重复");
|
}
|
|
SubjectDept subjectDept = new SubjectDept();
|
subjectDept.setDeptId(form.getDeptId());
|
subjectDept.setSubjectId(subject.getId());
|
List<SubjectDept> s = new ArrayList<>(1);
|
s.add(subjectDept);
|
subjectDeptMapper.add(s);
|
return RestResponse.ok();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void edit(EditSubjectForm form) {
|
// 删除原先的课目,再新增
|
subjectDeptMapper.deleteByDeptId(form.getDeptId());
|
List<SubjectDept> toAddList = form.getSubjectIds().stream().map(subjectId -> {
|
SubjectDept subjectDept = new SubjectDept();
|
subjectDept.setDeptId(form.getDeptId());
|
subjectDept.setSubjectId(subjectId);
|
return subjectDept;
|
}).collect(Collectors.toList());
|
subjectDeptMapper.add(toAddList);
|
}
|
}
|