package com.njuzr.eaibackend.service.impl; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.njuzr.eaibackend.dto.CourseDTO; import com.njuzr.eaibackend.exception.MyException; import com.njuzr.eaibackend.mapper.CourseMapper; import com.njuzr.eaibackend.po.Course; import com.njuzr.eaibackend.service.CourseService; import com.njuzr.eaibackend.utils.ConvertUtil; import com.njuzr.eaibackend.utils.ModelMapperUtil; import com.njuzr.eaibackend.vo.CourseVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author: Leonezhurui * @Date: 2024/3/5 - 22:09 * @Package: EAI-Backend */ @Slf4j @Service public class CourseServiceImpl implements CourseService { private final CourseMapper courseMapper; @Autowired public CourseServiceImpl(CourseMapper courseMapper) { this.courseMapper = courseMapper; } @Override public CourseVO createCourse(CourseDTO courseDTO) { log.info("解析CourseDTO:"+courseDTO.toString()); // 类型转换 Course targetCourse = convertToPO(courseDTO); targetCourse.setCreateTime(new Date()); log.info("类型转换后的targetCourse"+targetCourse); // 插入数据库 int status = courseMapper.insert(targetCourse); if (status == 0) { log.error("创建课程失败,数据库插入错误!"); throw new MyException(HttpStatus.INTERNAL_SERVER_ERROR.value(), HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()+":"+"创建课程错误"); } return convertToVO(targetCourse); } @Override public CourseVO findByCourseId(Long courseId) { Course res = courseMapper.selectById(courseId); return convertToVO(res); } /** * 将DTO转换成PO * @param courseDTO * @return */ private Course convertToPO(CourseDTO courseDTO) { Course course = new Course(); BeanUtils.copyProperties(courseDTO, course); course.setTeacherIds(ConvertUtil.listToString(courseDTO.getTeacherIds())); if (courseDTO.getCourseImages() != null) course.setCourseImages(ConvertUtil.listToString(courseDTO.getCourseImages())); return course; } /** * 将PO转换成VO * @param course * @return */ private CourseVO convertToVO(Course course) { CourseVO res = new CourseVO(); BeanUtils.copyProperties(course, res); res.setTeacherIds(ConvertUtil.stringToList(course.getTeacherIds(), Long::valueOf)); if (course.getCourseImages() != null) res.setCourseImages(ConvertUtil.stringToList(course.getCourseImages(), String::valueOf)); return res; } }