From c92f77ac03a1bbe3009891ce1d1f57f2d1091572 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期二, 24 八月 2021 15:00:25 +0800
Subject: [PATCH] 提交预约登记小程序相关代码

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java |  161 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 159 insertions(+), 2 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 c11c7de..acded43 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
@@ -1,11 +1,27 @@
 package com.panzhihua.service_community.service.impl;
 
+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.panzhihua.service_community.dao.ComActReserveMapper;
-import com.panzhihua.service_community.model.dos.ComActReserveDO;
+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.ComActReserveService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @auther lyq
@@ -15,5 +31,146 @@
 @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;
 
+    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){
+                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()&&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 if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.wenda)){
+                                //问答题处理
+                                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()){
+                            comActReserveAnswerContentService.saveBatch(answerContentList);
+
+                            //更新回答用户数量
+                            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.setUserId(userId);
+                            userAnswerDO.setType(comActReserveCommitVO.getType());
+                            userAnswerDO.setCreateAt(nowDate);
+                            userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
+                            userAnswerDO.setStatus(ComActReserveRecordDO.status.dcl);
+                            comActReserveRecordMapper.insert(userAnswerDO);
+                            //新增用户操作记录
+                            ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                            comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
+                            comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
+                            comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+                            comActReserveOperationRecordDO.setReserveTime(DateUtil.date());
+                            comActReserveOperationRecordDO.setReserveContent(COMMIT);
+                            comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
+                            comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
+                            comActReserveOperationRecordDO.setUserId(comActReserveCommitVO.getUserId());
+                            comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+                        }
+                    }
+                }
+
+            }
+
+        }
+        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