From ae58bdb65b5c0f052801a291a7b48916bc2d5730 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 04 七月 2024 13:57:09 +0800 Subject: [PATCH] 会议mq代码(待测试) --- src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java | 120 +++++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 94 insertions(+), 26 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 31d55b9..147057f 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java @@ -1,22 +1,31 @@ package com.ycl.jxkg.service.impl; -import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.ycl.jxkg.domain.entity.Meet; -import com.ycl.jxkg.mapper.MeetMapper; -import com.ycl.jxkg.service.MeetService; -import com.ycl.jxkg.base.Result; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.base.SystemCode; +import com.ycl.jxkg.context.WebContext; +import com.ycl.jxkg.domain.entity.Meet; import com.ycl.jxkg.domain.form.MeetForm; -import com.ycl.jxkg.domain.vo.MeetVO; import com.ycl.jxkg.domain.query.MeetQuery; -import org.springframework.stereotype.Service; -import lombok.RequiredArgsConstructor; +import com.ycl.jxkg.domain.vo.MeetVO; +import com.ycl.jxkg.enums.MeetStatusEnum; +import com.ycl.jxkg.mapper.ClassesUserMapper; +import com.ycl.jxkg.mapper.MeetMapper; +import com.ycl.jxkg.rabbitmq.msg.MeetStatusMsg; +import com.ycl.jxkg.rabbitmq.product.Producer; +import com.ycl.jxkg.service.MeetService; +import com.ycl.jxkg.utils.DateTimeUtil; import com.ycl.jxkg.utils.PageUtil; +import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.springframework.util.Assert; - -import java.util.ArrayList; +import org.springframework.util.CollectionUtils; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -32,6 +41,11 @@ private final MeetMapper meetMapper; + @Autowired + private WebContext webContext; + @Autowired + private ClassesUserMapper classesUserMapper; + private final Producer producer; /** * 娣诲姞 * @param form @@ -40,8 +54,13 @@ @Override public Result add(MeetForm form) { Meet entity = MeetForm.getEntityByForm(form, null); - entity.setStudentIds(JSONArray.toJSONString(form.getStudentIds())); - baseMapper.insert(entity); + entity.setStatus(MeetStatusEnum.Wait.getCode()); + entity.setCreateUser(webContext.getCurrentUser().getId()); + // 璁剧疆涔愯閿佺増鏈� + entity.setUpdateVersion(0); + if (baseMapper.insert(entity) > 0) { + this.sendMQ(entity, 0); + } return Result.ok("娣诲姞鎴愬姛"); } @@ -57,8 +76,10 @@ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); BeanUtils.copyProperties(form, entity); - entity.setStudentIds(JSONArray.toJSONString(form.getStudentIds())); - baseMapper.updateById(entity); + // 濡傛灉淇敼鎴愬姛鍙戦�乵q娑堟伅 + if (baseMapper.updateById(entity) > 0) { + this.sendMQ(entity, entity.getUpdateVersion() + 1); + } return Result.ok("淇敼鎴愬姛"); } @@ -85,24 +106,52 @@ } /** - * 鍒嗛〉鏌ヨ + * 鏁欏笀鍒嗛〉鏌ヨ * @param query * @return */ @Override public Result page(MeetQuery query) { - - IPage<Meet> page = PageUtil.getPage(query, Meet.class); + Integer id = webContext.getCurrentUser().getId(); + //鏌ヨ嚜宸卞垱寤虹殑鎴块棿 + query.setTeacherId(id); + IPage<MeetVO> page = PageUtil.getPage(query, MeetVO.class); baseMapper.getPage(page, query); - List<Meet> records = page.getRecords(); - List<MeetVO> vos = new ArrayList<>(); - for (Meet record : records) { - MeetVO meetVO = new MeetVO(); - BeanUtils.copyProperties(record,meetVO); - meetVO.setStudentIds(JSONArray.parseArray(record.getStudentIds(),Integer.class)); - vos.add(meetVO); + + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 瀛︾敓鍒嗛〉鏌ヨ + * @param query + * @return + */ + @Override + public Result studentPage(MeetQuery query) { + Integer userId = webContext.getCurrentUser().getId(); + //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾� + List<Integer> classes = classesUserMapper.getClassesByUserId(userId); + if(CollectionUtils.isEmpty(classes)){ + return Result.ok("鎮ㄦ殏鏈姞鍏ョ彮绾�"); } - return Result.ok().data(vos).total(page.getTotal()); + query.setClassesIds(classes); + IPage<MeetVO> page = PageUtil.getPage(query, MeetVO.class); + baseMapper.getPage(page, query); + + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + @Override + public Result start(MeetForm form) { + Meet entity = baseMapper.selectById(form.getId()); + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + // 涓嶄娇鐢╱pdateById杩欑鏂瑰紡锛岄伩鍏嶄箰瑙傞攣鍔犱竴銆� + new LambdaUpdateChainWrapper<>(meetMapper) + .eq(Meet::getId, entity.getId()) + .update(); + return Result.ok(); } /** @@ -114,7 +163,11 @@ public Result detail(Integer id) { MeetVO vo = baseMapper.getById(id); Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); - return Result.ok().data(vo); + if(vo.getStatus().equals(MeetStatusEnum.Starting.getCode())){ + return Result.ok(); + }else { + return Result.fail(SystemCode.InnerError.getCode(),"鎴块棿灏氭湭寮�濮嬫垨宸茬粨鏉�"); + } } /** @@ -129,4 +182,19 @@ .collect(Collectors.toList()); return Result.ok().data(vos); } + + /** + * 鍙戦�乵q娑堟伅 + * + * @param entity 鑰冭瘯瀹炰綋绫� + * @param version 涔愯閿佺増鏈� + */ + public void sendMQ(Meet entity, Integer version) { + MeetStatusMsg finishedMsg = new MeetStatusMsg(); + finishedMsg.setVersion(version); + finishedMsg.setMeetId(entity.getId()); + finishedMsg.setMeetStatus(MeetStatusEnum.End.getCode()); + producer.meetMsg(entity.getId(), JSON.toJSONString(finishedMsg), DateTimeUtil.getTwoTimeDiffMS(entity.getEndTime(), new Date())); + } + } -- Gitblit v1.8.0