From 161014ebc77c605cdb20fcdd7dc265a89d95d543 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 29 十月 2024 16:48:26 +0800 Subject: [PATCH] 学生端班级、会议一对多关系 --- src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java | 80 +++++++++++++++++++++++++++++++++++----- 1 files changed, 70 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java index 147057f..1474c95 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java @@ -1,6 +1,7 @@ package com.ycl.jxkg.service.impl; import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -8,12 +9,18 @@ import com.ycl.jxkg.base.SystemCode; import com.ycl.jxkg.context.WebContext; import com.ycl.jxkg.domain.entity.Meet; +import com.ycl.jxkg.domain.entity.MeetStudent; +import com.ycl.jxkg.domain.entity.StudyRecord; import com.ycl.jxkg.domain.form.MeetForm; import com.ycl.jxkg.domain.query.MeetQuery; +import com.ycl.jxkg.domain.vo.ClassesVO; import com.ycl.jxkg.domain.vo.MeetVO; +import com.ycl.jxkg.domain.vo.StudentSimpleVO; import com.ycl.jxkg.enums.MeetStatusEnum; import com.ycl.jxkg.mapper.ClassesUserMapper; import com.ycl.jxkg.mapper.MeetMapper; +import com.ycl.jxkg.mapper.MeetStudentMapper; +import com.ycl.jxkg.mapper.StudyRecordMapper; import com.ycl.jxkg.rabbitmq.msg.MeetStatusMsg; import com.ycl.jxkg.rabbitmq.product.Producer; import com.ycl.jxkg.service.MeetService; @@ -46,6 +53,8 @@ @Autowired private ClassesUserMapper classesUserMapper; private final Producer producer; + private final MeetStudentMapper meetStudentMapper; + private final StudyRecordMapper studyRecordMapper; /** * 娣诲姞 * @param form @@ -72,13 +81,12 @@ @Override public Result update(MeetForm form) { Meet entity = baseMapper.selectById(form.getId()); - // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); BeanUtils.copyProperties(form, entity); // 濡傛灉淇敼鎴愬姛鍙戦�乵q娑堟伅 if (baseMapper.updateById(entity) > 0) { - this.sendMQ(entity, entity.getUpdateVersion() + 1); + this.sendMQ(entity, entity.getUpdateVersion()); } return Result.ok("淇敼鎴愬姛"); } @@ -129,15 +137,21 @@ @Override public Result studentPage(MeetQuery query) { Integer userId = webContext.getCurrentUser().getId(); - //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾� - List<Integer> classes = classesUserMapper.getClassesByUserId(userId); - if(CollectionUtils.isEmpty(classes)){ - return Result.ok("鎮ㄦ殏鏈姞鍏ョ彮绾�"); + if (CollectionUtils.isEmpty(query.getClassesIds())) { + //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾� + List<Integer> classes = classesUserMapper.getClassesByUserId(userId); + if(CollectionUtils.isEmpty(classes)){ + return Result.fail(500, "鎮ㄦ殏鏈姞鍏ョ彮绾�"); + } + query.setClassesIds(classes); } - query.setClassesIds(classes); IPage<MeetVO> page = PageUtil.getPage(query, MeetVO.class); baseMapper.getPage(page, query); - + for (MeetVO vo : page.getRecords()) { + if (!CollectionUtils.isEmpty(vo.getTeacherNames())) { + vo.setTeacherNamesStr(vo.getTeacherNames().stream().collect(Collectors.joining("銆�"))); + } + } return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -146,10 +160,10 @@ Meet entity = baseMapper.selectById(form.getId()); // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); - BeanUtils.copyProperties(form, entity); // 涓嶄娇鐢╱pdateById杩欑鏂瑰紡锛岄伩鍏嶄箰瑙傞攣鍔犱竴銆� new LambdaUpdateChainWrapper<>(meetMapper) .eq(Meet::getId, entity.getId()) + .set(Meet::getStatus,form.getStatus()) .update(); return Result.ok(); } @@ -161,9 +175,42 @@ */ @Override public Result detail(Integer id) { - MeetVO vo = baseMapper.getById(id); + Meet vo = baseMapper.getById(id); Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); if(vo.getStatus().equals(MeetStatusEnum.Starting.getCode())){ + Integer userId = webContext.getCurrentUser().getId(); + //楠岃瘉鏈夋病鏈夐噸澶嶈繘鍏ワ紙閲嶅杩涘叆浼氬鑷翠笂璇炬鏁板澶氾級 + QueryWrapper<MeetStudent> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("meet_id",id); + queryWrapper.eq("student_id",userId); + queryWrapper.eq("version",vo.getUpdateVersion()); + MeetStudent one = meetStudentMapper.selectOne(queryWrapper); + if(one != null){ + return Result.ok(); + } + //澧炲姞瀛︾敓涓婅璁板綍 + MeetStudent meetStudent = new MeetStudent(); + meetStudent.setMeetId(id); + meetStudent.setStudentId(userId); + meetStudent.setCreateTime(new Date()); + meetStudent.setStartTime(vo.getStartTime()); + meetStudent.setVersion(vo.getUpdateVersion()); + meetStudent.setMeetName(vo.getMeetName()); + //TODO锛氭殏鏃跺鐞嗭紝鍚庢湡鑰冭檻jitsiApi + meetStudent.setDuringTime(0L); + meetStudentMapper.insert(meetStudent); + //瀛︾敓瀛︿範妗f鏇存柊 + StudyRecord studyRecord = studyRecordMapper.getByStudentId(userId); + if(studyRecord ==null){ + StudyRecord record = new StudyRecord(); + record.setMeetCount(0); + record.setStudyTime(0L); + record.setStudentId(userId); + studyRecordMapper.insert(record); + }else { + studyRecord.setMeetCount(studyRecord.getMeetCount()+1); + studyRecordMapper.updateById(studyRecord); + } return Result.ok(); }else { return Result.fail(SystemCode.InnerError.getCode(),"鎴块棿灏氭湭寮�濮嬫垨宸茬粨鏉�"); @@ -183,6 +230,19 @@ return Result.ok().data(vos); } + @Override + public Result getStudentList(Integer meetId, String keyword) { + List<StudentSimpleVO> studentList = baseMapper.getStudentList(meetId, keyword); + return Result.ok().data(studentList); + } + + @Override + public Result getStudentClasses() { + Integer userId = webContext.getCurrentUser().getId(); + List<ClassesVO> classes = classesUserMapper.getClassesByUserId1(userId); + return Result.ok().data(classes); + } + /** * 鍙戦�乵q娑堟伅 * -- Gitblit v1.8.0