package com.xjrsoft.module.student.service.impl; import cn.dev33.satoken.secure.BCrypt; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.xjrsoft.common.enums.RoleEnum; import com.xjrsoft.common.page.ConventPage; import com.xjrsoft.module.base.entity.BaseClass; import com.xjrsoft.module.base.mapper.BaseClassMapper; import com.xjrsoft.module.organization.entity.UserRoleRelation; import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper; import com.xjrsoft.module.student.dto.BaseStudentUserPageDto; import com.xjrsoft.module.student.entity.BaseStudent; import com.xjrsoft.module.student.entity.BaseStudentContact; import com.xjrsoft.module.student.entity.BaseStudentFamily; import com.xjrsoft.module.student.entity.BaseStudentFamilyMember; import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll; import com.xjrsoft.module.student.entity.BaseStudentSubsidize; import com.xjrsoft.module.student.entity.BaseStudentUser; import com.xjrsoft.module.student.mapper.BaseStudentContactMapper; import com.xjrsoft.module.student.mapper.BaseStudentFamilyMapper; import com.xjrsoft.module.student.mapper.BaseStudentFamilyMemberMapper; import com.xjrsoft.module.student.mapper.BaseStudentMapper; import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper; import com.xjrsoft.module.student.mapper.BaseStudentSubsidizeMapper; import com.xjrsoft.module.student.mapper.BaseStudentUserMapper; import com.xjrsoft.module.student.service.IStudentManagerService; import com.xjrsoft.module.student.vo.BaseStudentClassVo; import com.xjrsoft.module.student.vo.BaseStudentUserPageVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @Service @AllArgsConstructor public class StudentManagerServiceImpl extends MPJBaseServiceImpl implements IStudentManagerService { private final com.xjrsoft.module.student.mapper.BaseStudentUserMapper studentbaseManagerBaseStudentUserMapper; private final BaseStudentMapper studentbaseManagerBaseStudentMapper; private final BaseClassMapper baseClassMapper; private final BaseStudentContactMapper studentbaseManagerBaseStudentContactMapper; private final BaseStudentFamilyMapper studentbaseManagerBaseStudentFamilyMapper; private final BaseStudentFamilyMemberMapper studentbaseManagerBaseStudentFamilyMemberMapper; private final BaseStudentSchoolRollMapper studentbaseManagerBaseStudentSchoolRollMapper; private final BaseStudentSubsidizeMapper studentbaseManagerBaseStudentSubsidizeMapper; private final UserRoleRelationMapper userRoleRelationMapper; @Override @Transactional(rollbackFor = Exception.class) public Boolean add(BaseStudentUser baseStudentUser) { // 用户身份证后6位作为默认密码 if (baseStudentUser.getCredentialNumber() != null && baseStudentUser.getCredentialNumber().length() > 6) { String str = baseStudentUser.getCredentialNumber(); String lastSix = str.substring(str.length() - 6); baseStudentUser.setPassword(BCrypt.hashpw(lastSix, BCrypt.gensalt())); } studentbaseManagerBaseStudentUserMapper.insert(baseStudentUser); for (BaseStudent baseStudent : baseStudentUser.getBaseStudentList()) { baseStudent.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentMapper.insert(baseStudent); } for (BaseStudentContact baseStudentContact : baseStudentUser.getBaseStudentContactList()) { baseStudentContact.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentContactMapper.insert(baseStudentContact); } for (BaseStudentFamily BaseStudentFamily : baseStudentUser.getBaseStudentFamilyList()) { BaseStudentFamily.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentFamilyMapper.insert(BaseStudentFamily); } for (BaseStudentFamilyMember BaseStudentFamilyMember : baseStudentUser.getBaseStudentFamilyMemberList()) { BaseStudentFamilyMember.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentFamilyMemberMapper.insert(BaseStudentFamilyMember); } for (BaseStudentSchoolRoll baseStudentSchoolRoll : baseStudentUser.getBaseStudentSchoolRollList()) { baseStudentSchoolRoll.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentSchoolRollMapper.insert(baseStudentSchoolRoll); } for (BaseStudentSubsidize baseStudentSubsidize : baseStudentUser.getBaseStudentSubsidizeList()) { baseStudentSubsidize.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentSubsidizeMapper.insert(baseStudentSubsidize); } // 添加角色 UserRoleRelation userRoleRelation = new UserRoleRelation(); userRoleRelation.setUserId(baseStudentUser.getId()); userRoleRelation.setRoleId(RoleEnum.STUDENT.getCode()); userRoleRelationMapper.insert(userRoleRelation); return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean update(BaseStudentUser baseStudentUser) { studentbaseManagerBaseStudentUserMapper.updateById(baseStudentUser); //********************************* BaseStudent 增删改 开始 *******************************************/ { // 查出所有子级的id List baseStudentList = studentbaseManagerBaseStudentMapper.selectList(Wrappers.lambdaQuery(BaseStudent.class).eq(BaseStudent::getUserId, baseStudentUser.getId()).select(BaseStudent::getId)); List baseStudentIds = baseStudentList.stream().map(BaseStudent::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List baseStudentOldIds = baseStudentUser.getBaseStudentList().stream().map(BaseStudent::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List baseStudentRemoveIds = baseStudentIds.stream().filter(item -> !baseStudentOldIds.contains(item)).collect(Collectors.toList()); for (BaseStudent baseStudent : baseStudentUser.getBaseStudentList()) { //如果不等于空则修改 if (baseStudent.getId() != null) { studentbaseManagerBaseStudentMapper.updateById(baseStudent); } //如果等于空 则新增 else { //已经不存在的id 删除 baseStudent.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentMapper.insert(baseStudent); } } //已经不存在的id 删除 if (baseStudentRemoveIds.size() > 0) { studentbaseManagerBaseStudentMapper.deleteBatchIds(baseStudentRemoveIds); } } //********************************* BaseStudent 增删改 结束 *******************************************/ //********************************* BaseStudentContact 增删改 开始 *******************************************/ { // 查出所有子级的id List baseStudentContactList = studentbaseManagerBaseStudentContactMapper.selectList(Wrappers.lambdaQuery(BaseStudentContact.class).eq(BaseStudentContact::getUserId, baseStudentUser.getId()).select(BaseStudentContact::getId)); List baseStudentContactIds = baseStudentContactList.stream().map(BaseStudentContact::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List baseStudentContactOldIds = baseStudentUser.getBaseStudentContactList().stream().map(BaseStudentContact::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List baseStudentContactRemoveIds = baseStudentContactIds.stream().filter(item -> !baseStudentContactOldIds.contains(item)).collect(Collectors.toList()); for (BaseStudentContact baseStudentContact : baseStudentUser.getBaseStudentContactList()) { //如果不等于空则修改 if (baseStudentContact.getId() != null) { studentbaseManagerBaseStudentContactMapper.updateById(baseStudentContact); } //如果等于空 则新增 else { //已经不存在的id 删除 baseStudentContact.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentContactMapper.insert(baseStudentContact); } } //已经不存在的id 删除 if (baseStudentContactRemoveIds.size() > 0) { studentbaseManagerBaseStudentContactMapper.deleteBatchIds(baseStudentContactRemoveIds); } } //********************************* BaseStudentContact 增删改 结束 *******************************************/ //********************************* BaseStudentFamily 增删改 开始 *******************************************/ { // 查出所有子级的id List BaseStudentFamilyList = studentbaseManagerBaseStudentFamilyMapper.selectList(Wrappers.lambdaQuery(BaseStudentFamily.class).eq(BaseStudentFamily::getUserId, baseStudentUser.getId()).select(BaseStudentFamily::getId)); List BaseStudentFamilyIds = BaseStudentFamilyList.stream().map(BaseStudentFamily::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List BaseStudentFamilyOldIds = baseStudentUser.getBaseStudentFamilyList().stream().map(BaseStudentFamily::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List BaseStudentFamilyRemoveIds = BaseStudentFamilyIds.stream().filter(item -> !BaseStudentFamilyOldIds.contains(item)).collect(Collectors.toList()); for (BaseStudentFamily BaseStudentFamily : baseStudentUser.getBaseStudentFamilyList()) { //如果不等于空则修改 if (BaseStudentFamily.getId() != null) { studentbaseManagerBaseStudentFamilyMapper.updateById(BaseStudentFamily); } //如果等于空 则新增 else { //已经不存在的id 删除 BaseStudentFamily.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentFamilyMapper.insert(BaseStudentFamily); } } //已经不存在的id 删除 if (BaseStudentFamilyRemoveIds.size() > 0) { studentbaseManagerBaseStudentFamilyMapper.deleteBatchIds(BaseStudentFamilyRemoveIds); } } //********************************* BaseStudentFamily 增删改 结束 *******************************************/ //********************************* BaseStudentFamilyMember 增删改 开始 *******************************************/ { // 查出所有子级的id List BaseStudentFamilyMemberList = studentbaseManagerBaseStudentFamilyMemberMapper.selectList(Wrappers.lambdaQuery(BaseStudentFamilyMember.class).eq(BaseStudentFamilyMember::getUserId, baseStudentUser.getId()).select(BaseStudentFamilyMember::getId)); List BaseStudentFamilyMemberIds = BaseStudentFamilyMemberList.stream().map(BaseStudentFamilyMember::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List BaseStudentFamilyMemberOldIds = baseStudentUser.getBaseStudentFamilyMemberList().stream().map(BaseStudentFamilyMember::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List BaseStudentFamilyMemberRemoveIds = BaseStudentFamilyMemberIds.stream().filter(item -> !BaseStudentFamilyMemberOldIds.contains(item)).collect(Collectors.toList()); for (BaseStudentFamilyMember BaseStudentFamilyMember : baseStudentUser.getBaseStudentFamilyMemberList()) { //如果不等于空则修改 if (BaseStudentFamilyMember.getId() != null) { studentbaseManagerBaseStudentFamilyMemberMapper.updateById(BaseStudentFamilyMember); } //如果等于空 则新增 else { //已经不存在的id 删除 BaseStudentFamilyMember.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentFamilyMemberMapper.insert(BaseStudentFamilyMember); } } //已经不存在的id 删除 if (BaseStudentFamilyMemberRemoveIds.size() > 0) { studentbaseManagerBaseStudentFamilyMemberMapper.deleteBatchIds(BaseStudentFamilyMemberRemoveIds); } } //********************************* BaseStudentFamilyMember 增删改 结束 *******************************************/ //********************************* StudentSchoolRoll 增删改 开始 *******************************************/ { // 查出所有子级的id List baseStudentSchoolRollList = studentbaseManagerBaseStudentSchoolRollMapper.selectList(Wrappers.lambdaQuery(BaseStudentSchoolRoll.class).eq(BaseStudentSchoolRoll::getUserId, baseStudentUser.getId()).select(BaseStudentSchoolRoll::getId)); List baseStudentSchoolRollIds = baseStudentSchoolRollList.stream().map(BaseStudentSchoolRoll::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List baseStudentSchoolRollOldIds = baseStudentUser.getBaseStudentSchoolRollList().stream().map(BaseStudentSchoolRoll::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List baseStudentSchoolRollRemoveIds = baseStudentSchoolRollIds.stream().filter(item -> !baseStudentSchoolRollOldIds.contains(item)).collect(Collectors.toList()); for (BaseStudentSchoolRoll baseStudentSchoolRoll : baseStudentUser.getBaseStudentSchoolRollList()) { //如果不等于空则修改 if (baseStudentSchoolRoll.getId() != null) { studentbaseManagerBaseStudentSchoolRollMapper.updateById(baseStudentSchoolRoll); } //如果等于空 则新增 else { //已经不存在的id 删除 baseStudentSchoolRoll.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentSchoolRollMapper.insert(baseStudentSchoolRoll); } } //已经不存在的id 删除 if (baseStudentSchoolRollRemoveIds.size() > 0) { studentbaseManagerBaseStudentSchoolRollMapper.deleteBatchIds(baseStudentSchoolRollRemoveIds); } } //********************************* StudentSchoolRoll 增删改 结束 *******************************************/ //********************************* BaseStudentSubsidize 增删改 开始 *******************************************/ { // 查出所有子级的id List baseStudentSubsidizeList = studentbaseManagerBaseStudentSubsidizeMapper.selectList(Wrappers.lambdaQuery(BaseStudentSubsidize.class).eq(BaseStudentSubsidize::getUserId, baseStudentUser.getId()).select(BaseStudentSubsidize::getId)); List baseStudentSubsidizeIds = baseStudentSubsidizeList.stream().map(BaseStudentSubsidize::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List baseStudentSubsidizeOldIds = baseStudentUser.getBaseStudentSubsidizeList().stream().map(BaseStudentSubsidize::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List baseStudentSubsidizeRemoveIds = baseStudentSubsidizeIds.stream().filter(item -> !baseStudentSubsidizeOldIds.contains(item)).collect(Collectors.toList()); for (BaseStudentSubsidize BaseStudentEducation : baseStudentUser.getBaseStudentSubsidizeList()) { //如果不等于空则修改 if (BaseStudentEducation.getId() != null) { studentbaseManagerBaseStudentSubsidizeMapper.updateById(BaseStudentEducation); } //如果等于空 则新增 else { //已经不存在的id 删除 BaseStudentEducation.setUserId(baseStudentUser.getId()); studentbaseManagerBaseStudentSubsidizeMapper.insert(BaseStudentEducation); } } //已经不存在的id 删除 if (baseStudentSubsidizeRemoveIds.size() > 0) { studentbaseManagerBaseStudentSubsidizeMapper.deleteBatchIds(baseStudentSubsidizeRemoveIds); } } //********************************* BaseStudentEducation 增删改 结束 *******************************************/ return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean delete(List ids) { studentbaseManagerBaseStudentUserMapper.deleteBatchIds(ids); studentbaseManagerBaseStudentMapper.delete(Wrappers.lambdaQuery(BaseStudent.class).in(BaseStudent::getUserId, ids)); studentbaseManagerBaseStudentContactMapper.delete(Wrappers.lambdaQuery(BaseStudentContact.class).in(BaseStudentContact::getUserId, ids)); studentbaseManagerBaseStudentFamilyMapper.delete(Wrappers.lambdaQuery(BaseStudentFamily.class).in(BaseStudentFamily::getUserId, ids)); studentbaseManagerBaseStudentFamilyMemberMapper.delete(Wrappers.lambdaQuery(BaseStudentFamilyMember.class).in(BaseStudentFamilyMember::getUserId, ids)); studentbaseManagerBaseStudentSchoolRollMapper.delete(Wrappers.lambdaQuery(BaseStudentSchoolRoll.class).in(BaseStudentSchoolRoll::getUserId, ids)); studentbaseManagerBaseStudentSubsidizeMapper.delete(Wrappers.lambdaQuery(BaseStudentSubsidize.class).in(BaseStudentSubsidize::getUserId, ids)); return true; } @Override public BaseStudentClassVo getStudentClass(Long userId) { MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .disableSubLogicDel() .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseStudent::getId) .eq(BaseStudentSchoolRoll::getUserId, userId) .selectAsClass(BaseClass.class, BaseStudentClassVo.class); BaseClass baseClass = baseClassMapper.selectOne(queryWrapper); return BeanUtil.toBean(baseClass, BaseStudentClassVo.class); } }