目录
一.目标概述
这次项目完成的功能是问卷的创建和回答部分,我负责后端的编写,另外一位同学负责前端的编写,从而完成这最后一个功能
二.功能代码
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;
}
三.界面展示
四.总结
通过这最后一次项目的实施,我们完成了整个项目的功能,接下来便是测试和优化相关的功能了。