From 209b0535c1faeb3a260c728d154b7b5b38a4c5e2 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期一, 30 八月 2021 15:22:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/test' into test
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 213 insertions(+), 1 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
index 69e6e72..85ed47f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
@@ -3,6 +3,11 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.panzhihua.common.model.dtos.community.reserve.*;
@@ -14,6 +19,14 @@
import com.panzhihua.service_community.dao.ComActReserveMapper;
import com.panzhihua.service_community.dao.ComActReserveSubMapper;
import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubVO;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
+import com.panzhihua.service_community.service.ComActReserveRecordService;
import com.panzhihua.service_community.service.ComActReserveService;
import com.panzhihua.service_community.service.ComActReserveSubSelectionService;
import lombok.extern.slf4j.Slf4j;
@@ -27,6 +40,12 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
/**
* @auther lyq
@@ -36,11 +55,168 @@
@Slf4j
@Service
public class ComActReserveServiceImpl extends ServiceImpl<ComActReserveMapper, ComActReserveDO> implements ComActReserveService {
-
+ @Resource
+ private ComActReserveMapper comActReserveMapper;
@Resource
private ComActReserveSubMapper comActReserveSubMapper;
@Resource
+ private ComActReserveSubSelectionMapper comActReserveSubSelectionMapper;
+ @Resource
+ private ComActReserveAnswerContentService comActReserveAnswerContentService;
+ @Resource
+ private ComActReserveRecordMapper comActReserveRecordMapper;
+ @Resource
+ private ComActReserveOperationRecordMapper comActReserveOperationRecordMapper;
+ @Resource
private ComActReserveSubSelectionService comActReserveSubSelectionService;
+ @Resource
+ private ComActReserveRecordService comActReserveRecordService;
+
+ private final static String COMMIT="用户已提交";
+ @Override
+ @Transactional
+ public R commit(ComActReserveCommitVO comActReserveCommitVO) {
+ if(comActReserveCommitVO!=null){
+ Long userId=comActReserveCommitVO.getUserId();
+ Date nowDate=DateUtil.date();
+ //查询预约登记记录
+ ComActReserveDO comActReserveDO=comActReserveMapper.selectById(comActReserveCommitVO.getId());
+ if(comActReserveDO!=null){
+ //查询当前用户是否已预约并判断是否能继续预约
+ if(comActReserveDO.getJoinAllCount()!=0){
+ Integer count=comActReserveRecordMapper.selectCount(new QueryWrapper<ComActReserveRecordDO>().eq("reserve_id",comActReserveCommitVO.getId()));
+ if(count>=comActReserveDO.getJoinCount()){
+ return R.fail("预约已上限");
+ }
+ }
+
+
+ List<ComActReserveRecordDO> list=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("reserve_id",comActReserveCommitVO.getId()).eq("user_id",comActReserveCommitVO.getUserId()).in("status",1,2,3));
+ if(!list.isEmpty()&&list.size()>1&&comActReserveDO.getIsRepeat()==ComActReserveDO.isRepeat.no){
+ return R.fail("提交失败,不可重复预约");
+ }
+ else {
+ List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(comActReserveCommitVO.getJsonObject(),QuestnaiteSubVO.class);
+ if(!questnaiteSubVOS.isEmpty()){
+ Long questId=comActReserveCommitVO.getId();
+ List<ComActReserveAnswerContentDO> answerContentList=new ArrayList<>();
+ for(QuestnaiteSubVO questnaiteSub:questnaiteSubVOS){
+ //查询用户填写题目
+ ComActReserveSubDO questnaireSubDO = comActReserveSubMapper.selectOne(new QueryWrapper<ComActReserveSubDO>().lambda()
+ .eq(ComActReserveSubDO::getReserveId,questId).eq(ComActReserveSubDO::getKey,questnaiteSub.getKey()));
+ if(questnaireSubDO == null){
+ log.error("未查询到调查问卷题目,题目名称:" + questnaiteSub.getLabel() + "题目key:" + questnaiteSub.getKey());
+ continue;
+ }
+
+ Long queSubId = questnaireSubDO.getId();
+ //根据上传的类型查询不同的题目选项
+ if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan)){
+
+ //单选题处理
+ ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+ .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+ .eq(ComActReserveSubSelectionDO::getKey,questnaiteSub.getValues()));
+ if(subSelectionDO == null){
+ log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+ continue;
+ }
+
+ ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+ answerContentDO.setUserId(userId);
+ answerContentDO.setCreateAt(nowDate);
+ answerContentDO.setCreateBy(userId);
+ answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+ answerContentDO.setReserveSubId(queSubId);
+ answerContentDO.setType(1);
+ answerContentDO.setChoice(subSelectionDO.getOptionName());
+ answerContentDO.setAnswerContent(subSelectionDO.getContent());
+ answerContentList.add(answerContentDO);
+ }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.duoxuan)){
+ //多选题处理
+ String values = questnaiteSub.getValues();
+ String []value = values.split(",");
+ for (int i = 0; i < value.length; i++) {
+ ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+ .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+ .eq(ComActReserveSubSelectionDO::getKey,value[i]));
+ if(subSelectionDO == null){
+ log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+ continue;
+ }
+ ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+ answerContentDO.setUserId(userId);
+ answerContentDO.setCreateAt(nowDate);
+ answerContentDO.setCreateBy(userId);
+ answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+ answerContentDO.setReserveSubId(queSubId);
+ answerContentDO.setType(1);
+ answerContentDO.setChoice(subSelectionDO.getOptionName());
+ answerContentDO.setAnswerContent(subSelectionDO.getContent());
+ answerContentList.add(answerContentDO);
+ }
+ }else{
+ //问答题处理
+ String values = questnaiteSub.getValues();
+ ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+ answerContentDO.setUserId(userId);
+ answerContentDO.setCreateAt(nowDate);
+ answerContentDO.setCreateBy(userId);
+ answerContentDO.setReserveSubId(queSubId);
+ answerContentDO.setType(2);
+ answerContentDO.setAnswerContent(values);
+ answerContentList.add(answerContentDO);
+ }
+ }
+ if(!answerContentList.isEmpty()){
+ //更新回答用户数量
+ Integer joinCount = comActReserveDO.getJoinCount();
+ comActReserveDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
+ comActReserveMapper.updateById(comActReserveDO);
+ //新增用户答题记录
+ ComActReserveRecordDO userAnswerDO = new ComActReserveRecordDO();
+ userAnswerDO.setPhone(comActReserveCommitVO.getPhone());
+ userAnswerDO.setReserveId(questId);
+ userAnswerDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+ userAnswerDO.setUserId(userId);
+ userAnswerDO.setType(comActReserveCommitVO.getType());
+ userAnswerDO.setCreateAt(nowDate);
+ userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
+ if(comActReserveCommitVO.getType()==ComActReserveRecordDO.type.yy){
+ userAnswerDO.setStatus(ComActReserveRecordDO.status.dcl);
+ }
+ else {
+ userAnswerDO.setStatus(ComActReserveRecordDO.status.cg);
+ }
+ comActReserveRecordService.saveOrUpdate(userAnswerDO);
+
+ //给答题记录赋值预约登记记录id
+ answerContentList.forEach(answerContent -> {
+ answerContent.setReserveRecordId(userAnswerDO.getId());
+ });
+ comActReserveAnswerContentService.saveBatch(answerContentList);
+ //新增用户操作记录
+ ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+ comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
+ comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
+ comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+ comActReserveOperationRecordDO.setCreateAt(DateUtil.date());
+ comActReserveOperationRecordDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+ comActReserveOperationRecordDO.setReserveContent(COMMIT);
+ comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
+ comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
+ comActReserveOperationRecordDO.setUserId(comActReserveCommitVO.getUserId());
+ comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+ return R.ok("提交成功");
+ }
+ }
+ }
+
+ }
+ }
+ return R.fail("参数错误");
+ }
+
/**
* 社区后台-分页查询预约登记列表
@@ -379,4 +555,40 @@
return R.ok(this.baseMapper.listReserveAdmin(communityId));
}
+ @Override
+ public R getById(Long id,Long userId,Long recordId) {
+ ComActReserveDO comActReserveDO=comActReserveMapper.selectById(id);
+ if(comActReserveDO!=null){
+ ComActReserveDetailVO comActReserveDetailVO=new ComActReserveDetailVO();
+ BeanUtils.copyProperties(comActReserveDO,comActReserveDetailVO);
+ List<ComActReserveRecordDO> list=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).in("status",1,2).orderByDesc("reserve_time"));
+ List<ComActReserveRecordDO> secondlist=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).orderByDesc("reserve_time"));
+ //判断当前数据是否可重复提交
+ if(comActReserveDO.getIsRepeat()==ComActReserveDetailVO.isOk.y||list.isEmpty()){
+ comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.n);
+ }else {
+ comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.y);
+ }
+ //如果用户已提交返回最新一条记录 列表时间倒序排列
+ if(!list.isEmpty()){
+ comActReserveDetailVO.setJsonObject(list.get(0).getJsonObject());
+ comActReserveDetailVO.setReserveTime(list.get(0).getReserveTime());
+ }
+ if(!secondlist.isEmpty()&&recordId!=null){
+ secondlist.forEach(comActReserveRecordDO -> {
+ if(comActReserveRecordDO.getId().equals(recordId)){
+ comActReserveDetailVO.setRecordStatus(comActReserveRecordDO.getStatus());
+ }
+ });
+ }
+ return R.ok(comActReserveDetailVO);
+ }
+ return R.fail("未查询到数据");
+
+ }
+
+ @Override
+ public R pageReserveList(PageUserReserveDTO pageUserReserveDTO) {
+ return R.ok(comActReserveRecordMapper.pageReserveList(new Page<ComActReserveDO>(pageUserReserveDTO.getPageNum(), pageUserReserveDTO.getPageSize()),pageUserReserveDTO));
+ }
}
--
Gitblit v1.7.1