master
黄欣 4 years ago
parent dbec1c0470
commit 1592ec4188

@ -49,4 +49,9 @@ public class Constants {
public static final String RANK_KEY = "RANK_KEY";
public static final Integer SIGN_UP_SELECTED = 1;
/** 试题类型 */
public static final int QUESTION_JUDGMENT = 1; //判断题
public static final int QUESTION_SINGLE_CHOICE = 2; //单选题
public static final int QUESTION_MULTI_CHOICE = 3; //多选题
}

@ -0,0 +1,45 @@
package com.jingcheng.cms.controller;
import com.alibaba.fastjson.JSONObject;
import com.jingcheng.cms.model.Professional;
import com.jingcheng.cms.service.ProfessionalService;
import com.jingcheng.cms.util.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api/professional")
public class ProfessionalController {
@Autowired
private ProfessionalService professionalService;
@RequestMapping("/all-professional")
public AjaxResult getAllProfessional() {
AjaxResult ajaxResult = new AjaxResult();
List<Professional> professionalList = professionalService.getAllProfessional();
if (null == professionalList || 0 == professionalList.size()){
ajaxResult.setRetmsg("专业列表为空");
}else {
ajaxResult.setData(professionalList);
}
return ajaxResult;
}
@RequestMapping("/getProfessionalById")
public AjaxResult getProfessionalById(@RequestBody JSONObject jsonObject) {
AjaxResult ajaxResult = new AjaxResult();
Long professionalId = jsonObject.getLong("professionalId");
Professional professionalList = professionalService.getProfessionalById(professionalId);
if (null == professionalList){
ajaxResult.setRetmsg("专业为空");
}else {
ajaxResult.setData(professionalList);
}
return ajaxResult;
}
}

@ -0,0 +1,27 @@
package com.jingcheng.cms.controller;
import com.alibaba.fastjson.JSONObject;
import com.jingcheng.cms.model.Professional;
import com.jingcheng.cms.service.ProfessionalService;
import com.jingcheng.cms.service.QuestionService;
import com.jingcheng.cms.util.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api/question")
public class QuestionController {
@Autowired
private QuestionService questionService;
@RequestMapping("/getQuestionsByProfessionalId")
public AjaxResult getQuestionsByProfessionalId(@RequestBody JSONObject jsonObject) {
String professionalId = jsonObject.getString("professionalId");
return questionService.getQuestionsByProfessionalId(professionalId);
}
}

@ -0,0 +1,9 @@
package com.jingcheng.cms.mapper;
import com.jingcheng.cms.model.Answer;
import com.jingcheng.cms.util.CommonMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface AnswerMapper extends CommonMapper<Answer> {
}

@ -0,0 +1,9 @@
package com.jingcheng.cms.mapper;
import com.jingcheng.cms.model.Option;
import com.jingcheng.cms.util.CommonMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface OptionMapper extends CommonMapper<Option> {
}

@ -0,0 +1,9 @@
package com.jingcheng.cms.mapper;
import com.jingcheng.cms.model.Professional;
import com.jingcheng.cms.util.CommonMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface ProfessionalMapper extends CommonMapper<Professional> {
}

@ -0,0 +1,9 @@
package com.jingcheng.cms.mapper;
import com.jingcheng.cms.model.Question;
import com.jingcheng.cms.util.CommonMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface QuestionMapper extends CommonMapper<Question> {
}

@ -0,0 +1,17 @@
package com.jingcheng.cms.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("answer")
public class Answer extends BaseEntity{
private Integer questionId;
private Integer answerIndex;
private String questionAnswer;
private String parse;
}

@ -0,0 +1,16 @@
package com.jingcheng.cms.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("option")
public class Option extends BaseEntity{
private Integer questionId;
private Integer optionIndex;
private String questionOption;
}

@ -0,0 +1,14 @@
package com.jingcheng.cms.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("professional")
public class Professional extends BaseEntity{
private String professionalName;
}

@ -0,0 +1,18 @@
package com.jingcheng.cms.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("question")
public class Question extends BaseEntity{
private Integer professionalId;
private Integer questionType;
private String questionContent;
private String questionImage;
private Integer score;
}

@ -0,0 +1,25 @@
package com.jingcheng.cms.service;
import com.alibaba.fastjson.JSONObject;
import com.jingcheng.cms.model.Category;
import com.jingcheng.cms.model.CategoryType;
import com.jingcheng.cms.model.Professional;
import com.jingcheng.cms.util.AjaxResult;
import java.util.List;
public interface ProfessionalService {
/**
*
* @return
*/
List<Professional> getAllProfessional();
/**
* id
* @return
*/
Professional getProfessionalById(Long id);
}

@ -0,0 +1,17 @@
package com.jingcheng.cms.service;
import com.jingcheng.cms.model.Professional;
import com.jingcheng.cms.util.AjaxResult;
import com.jingcheng.cms.vo.QuestionVO;
import java.util.List;
public interface QuestionService {
/**
* id
* @return
*/
AjaxResult getQuestionsByProfessionalId(String professionalId);
}

@ -0,0 +1,42 @@
package com.jingcheng.cms.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.jingcheng.cms.constants.Constants;
import com.jingcheng.cms.mapper.CategoryMapper;
import com.jingcheng.cms.mapper.CategoryTypeMapper;
import com.jingcheng.cms.mapper.ProfessionalMapper;
import com.jingcheng.cms.model.Category;
import com.jingcheng.cms.model.CategoryType;
import com.jingcheng.cms.model.Professional;
import com.jingcheng.cms.service.CategoryService;
import com.jingcheng.cms.service.ProfessionalService;
import com.jingcheng.cms.util.AjaxResult;
import com.jingcheng.cms.util.PageUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import java.util.List;
@Service
@Transactional
public class ProfessionalImpl implements ProfessionalService {
@Resource
private ProfessionalMapper professionalMapper;
@Override
public List<Professional> getAllProfessional() {
List<Professional> professionals = professionalMapper.selectAll();
return professionals;
}
@Override
public Professional getProfessionalById(Long id) {
Professional professional = new Professional();
professional.setId(id);
return professionalMapper.selectByPrimaryKey(professional);
}
}

@ -0,0 +1,148 @@
package com.jingcheng.cms.service.impl;
import com.jingcheng.cms.constants.Constants;
import com.jingcheng.cms.mapper.AnswerMapper;
import com.jingcheng.cms.mapper.OptionMapper;
import com.jingcheng.cms.mapper.ProfessionalMapper;
import com.jingcheng.cms.mapper.QuestionMapper;
import com.jingcheng.cms.model.*;
import com.jingcheng.cms.service.ProfessionalService;
import com.jingcheng.cms.service.QuestionService;
import com.jingcheng.cms.util.AjaxResult;
import com.jingcheng.cms.vo.QuestionVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service
@Transactional
public class QuestionImpl implements QuestionService {
@Resource
private QuestionMapper questionMapper;
@Resource
private AnswerMapper answerMapper;
@Resource
private OptionMapper optionMapper;
@Override
public AjaxResult getQuestionsByProfessionalId(String professionalId) {
AjaxResult ajaxResult = new AjaxResult();
//生成试卷题目关联
List<QuestionVO> questionVOList = new ArrayList<>();
//判断题
this.createExamPaper(questionVOList, professionalId, Constants.QUESTION_JUDGMENT, 20);
//单选题
this.createExamPaper(questionVOList, professionalId, Constants.QUESTION_SINGLE_CHOICE, 20);
//多选题
this.createExamPaper(questionVOList, professionalId, Constants.QUESTION_MULTI_CHOICE, 10);
ajaxResult.setData(questionVOList);
ajaxResult.setRetcode(AjaxResult.SUCCESS);
return ajaxResult;
}
/**
*
*
* @param questionVOList
* @param professionalId id
* @param questionType 123
* @param questionNum
* @return
*/
public List<QuestionVO> createExamPaper(List<QuestionVO> questionVOList,
String professionalId,
int questionType,
int questionNum) {
if (questionNum > 0) {
Example example = new Example(Question.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("professionalId",professionalId);
criteria.andEqualTo("questionType", questionType);
criteria.andEqualTo("state", Constants.ENABLE);
List<Question> questions = questionMapper.selectByExample(example);
if (CollectionUtils.isEmpty(questions)) {
questions = new ArrayList<>();
}
Collections.shuffle(questions);
if (questionNum >= questions.size()) {
for (int i = 0; i < questions.size(); i++) {
Question question = questions.get(i);
QuestionVO questionVO = new QuestionVO();
BeanUtils.copyProperties(question, questionVO);
questionVO.setQuestionOptions(this.queryOptions(question.getId()));
questionVO.setQuestionAnswers(this.queryAnswers(question.getId()));
questionVOList.add(questionVO);
}
} else {
for (int i = 0; i < questionNum; i++) {
Question question = questions.get(i);
QuestionVO questionVO = new QuestionVO();
BeanUtils.copyProperties(question, questionVO);
questionVO.setQuestionOptions(this.queryOptions(question.getId()));
questionVO.setQuestionAnswers(this.queryAnswers(question.getId()));
questionVOList.add(questionVO);
}
}
}
return questionVOList;
}
/**
* id
* @param questionId id
* @return
*/
public List<Option> queryOptions(Long questionId) {
Example example = new Example(Option.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("questionId", questionId);
criteria.andEqualTo("state", Constants.ENABLE);
List<Option> optionList = optionMapper.selectByExample(example);
if(CollectionUtils.isEmpty(optionList)) {
optionList = new ArrayList<>();
}
return optionList;
}
/**
* id
* @param questionId id
* @return
*/
public List<Answer> queryAnswers(Long questionId) {
Example example = new Example(Option.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("questionId", questionId);
criteria.andEqualTo("state", Constants.ENABLE);
List<Answer> answerList = answerMapper.selectByExample(example);
List<Answer> answers = new ArrayList<>();
if(CollectionUtils.isEmpty(answerList)) {
answerList = new ArrayList<>();
}
for (Answer answer : answerList) {
String str = answer.getAnswerIndex().toString();
String[] arr = str.split("");
for (String s : arr) {
Answer answer1 = new Answer();
BeanUtils.copyProperties(answer, answer1);
answer1.setAnswerIndex(Integer.parseInt(s));
answers.add(answer1);
}
}
return answers;
}
}

@ -0,0 +1,16 @@
package com.jingcheng.cms.vo;
import com.jingcheng.cms.model.Answer;
import com.jingcheng.cms.model.Option;
import com.jingcheng.cms.model.Question;
import lombok.Data;
import java.util.List;
@Data
public class QuestionVO extends Question {
private List<Option> questionOptions;
private List<Answer> questionAnswers;
}

@ -103,7 +103,7 @@
where
1 = 1
<if test="param != null and param != ''">
and (ar.title like #{param} or c1.name like #{param} or c2.name like #{param} or ar.describe like #{param})
and (ar.title like #{param} or ar.content like #{param} or c1.name like #{param} or c2.name like #{param} or ar.describe like #{param})
</if>
<if test="keyword != null and keyword != ''">
and ar.keyword like #{keyword}

Loading…
Cancel
Save