|
|
@@ -1,17 +1,32 @@
|
|
|
package com.xjrsoft.module.student.service.impl;
|
|
|
|
|
|
+import cn.dev33.satoken.secure.BCrypt;
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.enums.ArchivesStatusEnum;
|
|
|
+import com.xjrsoft.common.enums.DeleteMark;
|
|
|
+import com.xjrsoft.common.enums.EnabledMark;
|
|
|
+import com.xjrsoft.common.enums.GenderDictionaryEnum;
|
|
|
+import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
+import com.xjrsoft.common.utils.CredentialNumberUtil;
|
|
|
+import com.xjrsoft.module.organization.entity.User;
|
|
|
+import com.xjrsoft.module.organization.mapper.UserMapper;
|
|
|
import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudent;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
import com.xjrsoft.module.student.mapper.BaseStudentMapper;
|
|
|
+import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
|
|
|
import com.xjrsoft.module.student.service.IBaseStudentService;
|
|
|
import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
|
|
|
import com.xjrsoft.module.student.vo.StudentPersonalInfoVo;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -24,6 +39,9 @@ import java.util.List;
|
|
|
@AllArgsConstructor
|
|
|
public class BaseStudentServiceImpl extends MPJBaseServiceImpl<BaseStudentMapper, BaseStudent> implements IBaseStudentService {
|
|
|
private final BaseStudentMapper studentMapper;
|
|
|
+ private final UserMapper userMapper;
|
|
|
+ private final BaseStudentSchoolRollMapper schoolRollMapper;
|
|
|
+ private final CommonPropertiesConfig propertiesConfig;
|
|
|
|
|
|
@Override
|
|
|
public StudentPersonalInfoVo getPersonalInfo(Long userId) {
|
|
|
@@ -47,4 +65,81 @@ public class BaseStudentServiceImpl extends MPJBaseServiceImpl<BaseStudentMapper
|
|
|
baseMapper.updateById(baseTeacher);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建学生
|
|
|
+ * @param name 姓名
|
|
|
+ * @param credentialNumber 身份证号
|
|
|
+ * @param mobile 手机号
|
|
|
+ * @param stduyStatus 就读方式
|
|
|
+ * @param classId 班级id
|
|
|
+ * @param majorId 专业方向id
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public Boolean createStudent(String name, String credentialNumber, String mobile, String stduyStatus, Long classId, Long majorId) {
|
|
|
+ User user = userMapper.selectOne(
|
|
|
+ new MPJLambdaWrapper<User>()
|
|
|
+ .disableLogicDel()
|
|
|
+ .select(User::getId)
|
|
|
+ .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
|
|
|
+ .eq(User::getCredentialNumber, credentialNumber)
|
|
|
+ );
|
|
|
+ LocalDate birthDate = CredentialNumberUtil.getBirthDate(credentialNumber);
|
|
|
+ if(user != null){
|
|
|
+ user.setDeleteMark(DeleteMark.NODELETE.getCode());
|
|
|
+ user.setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
+ user.setName(name);
|
|
|
+ user.setBirthDate(birthDate.atStartOfDay());
|
|
|
+ user.setMobile(mobile);
|
|
|
+ userMapper.updateById(user);
|
|
|
+
|
|
|
+ BaseStudent student = this.getOne(
|
|
|
+ new MPJLambdaWrapper<BaseStudent>()
|
|
|
+ .disableLogicDel()
|
|
|
+ .select(BaseStudent::getId)
|
|
|
+ .select(BaseStudent.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudent.class).contains(x.getProperty()))
|
|
|
+ .eq(BaseStudent::getUserId, user.getId())
|
|
|
+ );
|
|
|
+ student.setDeleteMark(DeleteMark.NODELETE.getCode());
|
|
|
+ student.setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
+ student.setIsNormal(1);
|
|
|
+ this.updateById(student);
|
|
|
+
|
|
|
+ BaseStudentSchoolRoll schoolRoll = schoolRollMapper.selectOne(
|
|
|
+ new MPJLambdaWrapper<BaseStudentSchoolRoll>()
|
|
|
+ .disableLogicDel()
|
|
|
+ .select(BaseStudentSchoolRoll::getId)
|
|
|
+ .select(BaseStudentSchoolRoll.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentSchoolRoll.class).contains(x.getProperty()))
|
|
|
+ .eq(BaseStudentSchoolRoll::getUserId, user.getId())
|
|
|
+ );
|
|
|
+ schoolRoll.setDeleteMark(DeleteMark.NODELETE.getCode());
|
|
|
+ schoolRoll.setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
+ schoolRoll.setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
|
|
|
+ schoolRoll.setStduyStatus(stduyStatus);
|
|
|
+ schoolRoll.setClassId(classId);
|
|
|
+ schoolRoll.setMajorSetId(majorId);
|
|
|
+ schoolRoll.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ schoolRoll.setModifyDate(LocalDateTime.now());
|
|
|
+ schoolRollMapper.updateById(schoolRoll);
|
|
|
+ }else{
|
|
|
+ String gender = CredentialNumberUtil.getGenderByIdCard(credentialNumber);
|
|
|
+
|
|
|
+ user = new User() {{
|
|
|
+ setName(name);
|
|
|
+ setCreateDate(LocalDateTime.now());
|
|
|
+ setDeleteMark(DeleteMark.NODELETE.getCode());
|
|
|
+ setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
+ setBirthDate(birthDate.atStartOfDay());
|
|
|
+ setMobile(mobile);
|
|
|
+ setCredentialNumber(credentialNumber);
|
|
|
+ setCredentialType("ZZLS10007");
|
|
|
+ setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
|
|
|
+ setGender(GenderDictionaryEnum.getCode(gender));
|
|
|
+ setIsChangePassword(1);
|
|
|
+ }};
|
|
|
+ userMapper.insert(user);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|