feat: open admin classes to school teachers

main
chenyuan 2 months ago
parent 4e5516f348
commit 279ccc57d1

@ -9,6 +9,21 @@ public class SchoolClassDto {
@ApiModelProperty("学校名称")
String schoolName;
@ApiModelProperty("faculty id")
String schoolFacultyId;
@ApiModelProperty("faculty name")
String schoolFacultyName;
@ApiModelProperty("major id")
String schoolMajorId;
@ApiModelProperty("major name")
String schoolMajorName;
@ApiModelProperty("creator name")
String createdByName;
@ApiModelProperty("schoolClass对象")
SchoolClass schoolClass;
}

@ -0,0 +1,40 @@
package com.sztzjy.linkCommerce.entity.importDto;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TeachingClassStudentImportDTO {
@ExcelProperty("所属院系")
@ApiModelProperty("所属院系")
private String schoolFacultyName;
@ExcelProperty("所属专业")
@ApiModelProperty("所属专业")
private String schoolMajorName;
@ExcelProperty("行政班")
@ApiModelProperty("行政班")
private String schoolClassName;
@ExcelProperty("学生姓名")
@ApiModelProperty("学生姓名")
private String studentName;
@ExcelProperty("学号")
@ApiModelProperty("学号")
private String userName;
@ExcelProperty("性别")
@ApiModelProperty("性别")
private String sex;
@ExcelProperty("手机号")
@ApiModelProperty("手机号")
private String phone;
@ExcelProperty("邮箱")
@ApiModelProperty("邮箱")
private String email;
}

@ -13,9 +13,28 @@ public interface TeachingClassStudentMapper {
long countByStudentUserIdAndTeachingClassId(@Param("studentUserId") String studentUserId,
@Param("teachingClassId") String teachingClassId);
long countByStudentUserIdExcludingTeachingClass(@Param("studentUserId") String studentUserId,
@Param("teachingClassId") String teachingClassId);
int insertSelective(TeachingClassStudent record);
TeachingClassStudent selectActiveByStudentUserId(String studentUserId);
TeachingClassStudent selectByStudentUserIdAndTeachingClassId(@Param("studentUserId") String studentUserId,
@Param("teachingClassId") String teachingClassId);
int exitActiveByStudentUserIdExceptClass(@Param("studentUserId") String studentUserId,
@Param("teachingClassId") String teachingClassId);
int updateMembershipToActive(@Param("studentUserId") String studentUserId,
@Param("teachingClassId") String teachingClassId,
@Param("adminClassId") String adminClassId,
@Param("joinReason") String joinReason);
int deleteByTeachingClassId(String teachingClassId);
int deleteByStudentUserIdAndTeachingClassId(@Param("studentUserId") String studentUserId,
@Param("teachingClassId") String teachingClassId);
List<TeachingClassStudent> selectByTeachingClassId(String teachingClassId);
}

@ -10,6 +10,7 @@ import com.sztzjy.linkCommerce.mapper.SchoolClassMapper;
import com.sztzjy.linkCommerce.mapper.SchoolFacultyMapper;
import com.sztzjy.linkCommerce.mapper.SchoolMajorMapper;
import com.sztzjy.linkCommerce.mapper.SchoolMapper;
import com.sztzjy.linkCommerce.mapper.UserinfoMapper;
import com.sztzjy.linkCommerce.service.SchoolService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,6 +18,7 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@ -32,6 +34,8 @@ public class SchoolServiceImpl implements SchoolService {
SchoolMajorMapper schoolMajorMapper;
@Autowired
SchoolClassMapper schoolClassMapper;
@Autowired
UserinfoMapper userinfoMapper;
@Override
public Integer addSchool(School school) {
@ -116,12 +120,71 @@ public class SchoolServiceImpl implements SchoolService {
List<SchoolClass> schoolClasses = schoolClassMapper.selectByExample(schoolClassExample);
// 将院系信息转换为 DTO
String schoolName = schoolMapper.selectSchoolNameById(schoolId);
List<String> schoolMajorIds = schoolClasses.stream()
.map(SchoolClass::getSchoolMajorId)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
List<SchoolMajor> schoolMajors;
if (schoolMajorIds.isEmpty()) {
schoolMajors = Collections.emptyList();
} else {
SchoolMajorExample schoolMajorExample = new SchoolMajorExample();
schoolMajorExample.createCriteria().andSchoolMajorIdIn(schoolMajorIds);
schoolMajors = schoolMajorMapper.selectByExample(schoolMajorExample);
}
Map<String, SchoolMajor> schoolMajorMap = schoolMajors.stream()
.collect(Collectors.toMap(SchoolMajor::getSchoolMajorId, schoolMajor -> schoolMajor, (left, right) -> left));
List<String> schoolFacultyIds = schoolMajors.stream()
.map(SchoolMajor::getSchoolFacultyId)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
List<SchoolFaculty> schoolFaculties;
if (schoolFacultyIds.isEmpty()) {
schoolFaculties = Collections.emptyList();
} else {
SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample();
schoolFacultyExample.createCriteria().andSchoolFacultyIdIn(schoolFacultyIds);
schoolFaculties = schoolFacultyMapper.selectByExample(schoolFacultyExample);
}
Map<String, SchoolFaculty> schoolFacultyMap = schoolFaculties.stream()
.collect(Collectors.toMap(SchoolFaculty::getSchoolFacultyId, schoolFaculty -> schoolFaculty, (left, right) -> left));
List<String> createdByIds = schoolClasses.stream()
.map(SchoolClass::getCreatedBy)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
List<Userinfo> creators;
if (createdByIds.isEmpty()) {
creators = Collections.emptyList();
} else {
UserinfoExample userinfoExample = new UserinfoExample();
userinfoExample.createCriteria().andUserIdIn(createdByIds);
creators = userinfoMapper.selectByExample(userinfoExample);
}
Map<String, Userinfo> creatorMap = creators.stream()
.collect(Collectors.toMap(Userinfo::getUserId, userinfo -> userinfo, (left, right) -> left));
List<SchoolClassDto> dtoList = schoolClasses.stream()
.map(schoolClass -> {
SchoolClassDto dto = new SchoolClassDto();
dto.setSchoolClass(schoolClass);
String schoolName = schoolMapper.selectSchoolNameById(schoolId);
dto.setSchoolName(schoolName);
dto.setSchoolMajorId(schoolClass.getSchoolMajorId());
SchoolMajor schoolMajor = schoolMajorMap.get(schoolClass.getSchoolMajorId());
if (schoolMajor != null) {
dto.setSchoolMajorName(schoolMajor.getSchoolMajorName());
dto.setSchoolFacultyId(schoolMajor.getSchoolFacultyId());
SchoolFaculty schoolFaculty = schoolFacultyMap.get(schoolMajor.getSchoolFacultyId());
if (schoolFaculty != null) {
dto.setSchoolFacultyName(schoolFaculty.getSchoolFacultyName());
}
}
Userinfo creator = creatorMap.get(schoolClass.getCreatedBy());
if (creator != null) {
dto.setCreatedByName(StringUtils.defaultIfBlank(creator.getName(), creator.getUsername()));
}
return dto;
})
.collect(Collectors.toList());

@ -20,18 +20,48 @@
<select id="countByTeachingClassId" parameterType="java.lang.String" resultType="java.lang.Long">
select count(*) from teaching_class_student
where teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
</select>
<select id="countByStudentUserIdAndTeachingClassId" resultType="java.lang.Long">
select count(*) from teaching_class_student
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
</select>
<select id="countByStudentUserIdExcludingTeachingClass" resultType="java.lang.Long">
select count(*) from teaching_class_student
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
<if test="teachingClassId != null and teachingClassId != ''">
and teaching_class_id != #{teachingClassId,jdbcType=VARCHAR}
</if>
</select>
<select id="selectByTeachingClassId" parameterType="java.lang.String" resultMap="BaseResultMap">
select <include refid="Base_Column_List" />
from teaching_class_student
where teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
</select>
<select id="selectActiveByStudentUserId" parameterType="java.lang.String" resultMap="BaseResultMap">
select <include refid="Base_Column_List" />
from teaching_class_student
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
order by join_time desc, create_time desc
limit 1
</select>
<select id="selectByStudentUserIdAndTeachingClassId" resultMap="BaseResultMap">
select <include refid="Base_Column_List" />
from teaching_class_student
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
order by create_time desc
limit 1
</select>
<insert id="insertSelective" parameterType="com.sztzjy.linkCommerce.entity.TeachingClassStudent">
@ -60,8 +90,37 @@
</trim>
</insert>
<update id="exitActiveByStudentUserIdExceptClass">
update teaching_class_student
set status = 'EXITED',
exit_time = CURRENT_TIMESTAMP
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
and teaching_class_id != #{teachingClassId,jdbcType=VARCHAR}
</update>
<update id="updateMembershipToActive">
update teaching_class_student
set status = 'IN_PROGRESS',
admin_class_id = #{adminClassId,jdbcType=VARCHAR},
join_reason = #{joinReason,jdbcType=VARCHAR},
join_time = CURRENT_TIMESTAMP,
exit_time = null
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
</update>
<delete id="deleteByTeachingClassId" parameterType="java.lang.String">
delete from teaching_class_student
where teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
</delete>
<update id="deleteByStudentUserIdAndTeachingClassId">
update teaching_class_student
set status = 'EXITED',
exit_time = CURRENT_TIMESTAMP
where student_user_id = #{studentUserId,jdbcType=VARCHAR}
and teaching_class_id = #{teachingClassId,jdbcType=VARCHAR}
and status = 'IN_PROGRESS'
</update>
</mapper>

Loading…
Cancel
Save