潘志宝
2024-12-25 8a6b19bf5c50ebb54e965645a9366f6cfea02351
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.infra.service.demo.demo03;
H 2
3 import com.iailab.framework.common.pojo.PageParam;
4 import com.iailab.framework.common.pojo.PageResult;
5 import com.iailab.framework.common.util.object.BeanUtils;
6 import com.iailab.module.infra.controller.admin.demo.demo03.vo.Demo03StudentPageReqVO;
7 import com.iailab.module.infra.controller.admin.demo.demo03.vo.Demo03StudentSaveReqVO;
8 import com.iailab.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
9 import com.iailab.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
10 import com.iailab.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
11 import com.iailab.module.infra.dal.mysql.demo.demo03.Demo03CourseMapper;
12 import com.iailab.module.infra.dal.mysql.demo.demo03.Demo03GradeMapper;
13 import com.iailab.module.infra.dal.mysql.demo.demo03.Demo03StudentMapper;
14 import org.springframework.stereotype.Service;
15 import org.springframework.transaction.annotation.Transactional;
16 import org.springframework.validation.annotation.Validated;
17
18 import javax.annotation.Resource;
19 import java.util.List;
20
21 import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception;
22 import static com.iailab.module.infra.enums.ErrorCodeConstants.*;
23
24 /**
25  * 学生 Service 实现类
26  *
27  * @author iailab
28  */
29 @Service
30 @Validated
31 public class Demo03StudentServiceImpl implements Demo03StudentService {
32
33     @Resource
34     private Demo03StudentMapper demo03StudentMapper;
35     @Resource
36     private Demo03CourseMapper demo03CourseMapper;
37     @Resource
38     private Demo03GradeMapper demo03GradeMapper;
39
40     @Override
41     @Transactional(rollbackFor = Exception.class)
42     public Long createDemo03Student(Demo03StudentSaveReqVO createReqVO) {
43         // 插入
44         Demo03StudentDO demo03Student = BeanUtils.toBean(createReqVO, Demo03StudentDO.class);
45         demo03StudentMapper.insert(demo03Student);
46
47         // 插入子表
48         createDemo03CourseList(demo03Student.getId(), createReqVO.getDemo03Courses());
49         createDemo03Grade(demo03Student.getId(), createReqVO.getDemo03Grade());
50         // 返回
51         return demo03Student.getId();
52     }
53
54     @Override
55     @Transactional(rollbackFor = Exception.class)
56     public void updateDemo03Student(Demo03StudentSaveReqVO updateReqVO) {
57         // 校验存在
58         validateDemo03StudentExists(updateReqVO.getId());
59         // 更新
60         Demo03StudentDO updateObj = BeanUtils.toBean(updateReqVO, Demo03StudentDO.class);
61         demo03StudentMapper.updateById(updateObj);
62
63         // 更新子表
64         updateDemo03CourseList(updateReqVO.getId(), updateReqVO.getDemo03Courses());
65         updateDemo03Grade(updateReqVO.getId(), updateReqVO.getDemo03Grade());
66     }
67
68     @Override
69     @Transactional(rollbackFor = Exception.class)
70     public void deleteDemo03Student(Long id) {
71         // 校验存在
72         validateDemo03StudentExists(id);
73         // 删除
74         demo03StudentMapper.deleteById(id);
75
76         // 删除子表
77         deleteDemo03CourseByStudentId(id);
78         deleteDemo03GradeByStudentId(id);
79     }
80
81     private void validateDemo03StudentExists(Long id) {
82         if (demo03StudentMapper.selectById(id) == null) {
83             throw exception(DEMO03_STUDENT_NOT_EXISTS);
84         }
85     }
86
87     @Override
88     public Demo03StudentDO getDemo03Student(Long id) {
89         return demo03StudentMapper.selectById(id);
90     }
91
92     @Override
93     public PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentPageReqVO pageReqVO) {
94         return demo03StudentMapper.selectPage(pageReqVO);
95     }
96
97     // ==================== 子表(学生课程) ====================
98
99     @Override
100     public List<Demo03CourseDO> getDemo03CourseListByStudentId(Long studentId) {
101         return demo03CourseMapper.selectListByStudentId(studentId);
102     }
103
104     private void createDemo03CourseList(Long studentId, List<Demo03CourseDO> list) {
105         if (list != null) {
106             list.forEach(o -> o.setStudentId(studentId));
107         }
108         demo03CourseMapper.insertBatch(list);
109     }
110
111     private void updateDemo03CourseList(Long studentId, List<Demo03CourseDO> list) {
112         deleteDemo03CourseByStudentId(studentId);
113         list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新
114         createDemo03CourseList(studentId, list);
115     }
116
117     private void deleteDemo03CourseByStudentId(Long studentId) {
118         demo03CourseMapper.deleteByStudentId(studentId);
119     }
120
121     @Override
122     public PageResult<Demo03CourseDO> getDemo03CoursePage(PageParam pageReqVO, Long studentId) {
123         return demo03CourseMapper.selectPage(pageReqVO, studentId);
124     }
125
126     @Override
127     public Long createDemo03Course(Demo03CourseDO demo03Course) {
128         demo03CourseMapper.insert(demo03Course);
129         return demo03Course.getId();
130     }
131
132     @Override
133     public void updateDemo03Course(Demo03CourseDO demo03Course) {
134         demo03CourseMapper.updateById(demo03Course);
135     }
136
137     @Override
138     public void deleteDemo03Course(Long id) {
139         demo03CourseMapper.deleteById(id);
140     }
141
142     @Override
143     public Demo03CourseDO getDemo03Course(Long id) {
144         return demo03CourseMapper.selectById(id);
145     }
146
147     // ==================== 子表(学生班级) ====================
148
149     @Override
150     public Demo03GradeDO getDemo03GradeByStudentId(Long studentId) {
151         return demo03GradeMapper.selectByStudentId(studentId);
152     }
153
154     private void createDemo03Grade(Long studentId, Demo03GradeDO demo03Grade) {
155         if (demo03Grade == null) {
156             return;
157         }
158         demo03Grade.setStudentId(studentId);
159         demo03GradeMapper.insert(demo03Grade);
160     }
161
162     private void updateDemo03Grade(Long studentId, Demo03GradeDO demo03Grade) {
163         if (demo03Grade == null) {
164             return;
165         }
166         demo03Grade.setStudentId(studentId);
167         demo03Grade.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新
168         demo03GradeMapper.insertOrUpdate(demo03Grade);
169     }
170
171     private void deleteDemo03GradeByStudentId(Long studentId) {
172         demo03GradeMapper.deleteByStudentId(studentId);
173     }
174
175     @Override
176     public PageResult<Demo03GradeDO> getDemo03GradePage(PageParam pageReqVO, Long studentId) {
177         return demo03GradeMapper.selectPage(pageReqVO, studentId);
178     }
179
180     @Override
181     public Long createDemo03Grade(Demo03GradeDO demo03Grade) {
182         // 校验是否已经存在
183         if (demo03GradeMapper.selectByStudentId(demo03Grade.getStudentId()) != null) {
184             throw exception(DEMO03_GRADE_EXISTS);
185         }
186         demo03GradeMapper.insert(demo03Grade);
187         return demo03Grade.getId();
188     }
189
190     @Override
191     public void updateDemo03Grade(Demo03GradeDO demo03Grade) {
192         // 校验存在
193         validateDemo03GradeExists(demo03Grade.getId());
194         // 更新
195         demo03GradeMapper.updateById(demo03Grade);
196     }
197
198     @Override
199     public void deleteDemo03Grade(Long id) {
200         // 校验存在
201         validateDemo03GradeExists(id);
202         // 删除
203         demo03GradeMapper.deleteById(id);
204     }
205
206     @Override
207     public Demo03GradeDO getDemo03Grade(Long id) {
208         return demo03GradeMapper.selectById(id);
209     }
210
211     private void validateDemo03GradeExists(Long id) {
212         if (demo03GradeMapper.selectById(id) == null) {
213             throw exception(DEMO03_GRADE_NOT_EXISTS);
214         }
215     }
216
217 }