山东大学软件学院创新实训——飞讯(十三)

目录

一.目标概述

二.功能代码

1.问卷的创建

2.问题的回答

三.界面展示

 四.总结


一.目标概述

    这次项目完成的功能是问卷的创建和回答部分,我负责后端的编写,另外一位同学负责前端的编写,从而完成这最后一个功能

二.功能代码

1.问卷的创建

由于采用动态创建问卷的方式,因此我们采用json进行交互,可以动态添加不同类型的题目,后端采用fastjson进行解析,创建问卷代码如下:

@RequestMapping("/createQuestion")
    public JsonResult<Object> createQuestion(@RequestBody JSONObject questionPacket){
        //System.out.println(questionPacket);
        JSONObject packet = questionPacket.getJSONObject("questionPacket");
        int questionnaireId = Integer.parseInt(packet.getString("questionnaireId"));
        List<Object> questionList = packet.getJSONArray("questionList");
        int res = questionaireService.createQuestion(questionnaireId,questionList);
        /*System.out.println(questionnaireId);
        System.out.println(questionList);
        System.out.println(questionList.get(0));*/
        if (res == ResCondition.questionnare_success){
            JsonResult<Object> jsonResult = new JsonResult<Object>("200",(Object) questionList,"创建问卷内容成功");
            return jsonResult;
        }
        else {
            JsonResult<Object> jsonResult = new JsonResult<Object>("400",(Object) questionList,"创建问卷内容失败");
            return jsonResult;
        }
    }
@Override
    public int createQuestion(int questionnaireId,List<Object> questionList) {
        for (Object o : questionList) {
            String jsonObject= JSON.toJSONString(o);
            //将json转成需要的对象
            Question question= JSONObject.parseObject(jsonObject,Question.class);
            question.setQuestionnaireId(questionnaireId);
            int i = questionaireMapper.createQuestion(question);
            if (i < 0){
                return ResCondition.questionnare_fail;
            }
            int questionId = question.getQuestionId();
            //System.out.println(questionId);
            if (question.getType().equals("Radio") || question.getType().equals("Checkbox")){
                List<Option> optionList = question.getOptionList();
                for (Option option : optionList) {
                    System.out.println(option);
                    if (option.getText() != null && !option.getText().equals("")){
                        option.setQuestionnaireId(questionnaireId);
                        option.setQuestionId(questionId);
                        option.setOptionNum(option.getText());
                        int j = questionaireMapper.createOption(option);
                        if (j < 0){
                            return ResCondition.questionnare_fail;
                        }
                    }
                }
            }

        }
        int k = questionaireMapper.updateState(questionnaireId,"Published");
        if (k < 0){
            return ResCondition.questionnare_fail;
        }
        return ResCondition.questionnare_success;
    }

2.问题的回答

问题的回答和创建问卷一致,采用json的方法进行数据的传送

@RequestMapping("/reply")
    public JsonResult<Object> reply(@RequestBody Map<Object,Object> map){
        //System.out.println(replyPacket);
        List<Question> replyPacket = (List<Question>) map.get("replyPacket");
        int questionnaireId = Integer.parseInt((String) map.get("questionnaireId"));
        System.out.println(replyPacket);
        //List<Object> answerList = replyPacket.getJSONArray("replyPacket");
        System.out.println(questionnaireId);
        int res = questionaireService.reply(questionnaireId,replyPacket);
        if (res == ResCondition.questionnare_success){
            JsonResult<Object> jsonResult = new JsonResult<Object>("200",(Object)replyPacket,"提交成功");
            return jsonResult;
        }
        else {
            JsonResult<Object> jsonResult = new JsonResult<Object>("400",(Object) replyPacket,"提交失败");
            return jsonResult;
        }
        //return null;
    }
@Override
    public int reply(int questionnaireId,List<Question> questionList) {
        //System.out.println(questionList);
        int i = questionaireMapper.updateCount(questionnaireId);
        if (i < 0){
            System.out.println("fail1");
            return ResCondition.questionnare_fail;

        }
        List<Questionaire> questionaireList = questionaireMapper.findQuestionairename(questionnaireId);

        int count = questionaireList.get(0).getCount();
        for (Object o : questionList) {
            String jsonObject= JSON.toJSONString(o);
            //将json转成需要的对象
            Question question= JSONObject.parseObject(jsonObject,Question.class);
            //System.out.println(question);
            for (AnswerInfo answerInfo : question.getAnswerInfoList()) {
                answerInfo.setCount(count);
                answerInfo.setQuestionId(question.getQuestionId());
                answerInfo.setQuestionnaireId(question.getQuestionnaireId());
                System.out.println(answerInfo);
                int j = questionaireMapper.reply(answerInfo);
                System.out.println(j);
                if (j < 0){
                    System.out.println("fail2");
                    return ResCondition.questionnare_fail;
                }



            }
        }
        return ResCondition.questionnare_success;
    }

三.界面展示

 

 四.总结

    通过这最后一次项目的实施,我们完成了整个项目的功能,接下来便是测试和优化相关的功能了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值