| package com.matrix.system.hive.service.imp; | 
|   | 
|   | 
|   | 
| import com.matrix.core.pojo.PaginationVO; | 
| import com.matrix.system.constance.Dictionary; | 
| import com.matrix.system.hive.bean.Answer; | 
| import com.matrix.system.hive.bean.Question; | 
| import com.matrix.system.hive.dao.AnswerDao; | 
| import com.matrix.system.hive.dao.QuestionDao; | 
| import com.matrix.system.common.dao.SystemDictionaryDao; | 
| import com.matrix.system.hive.service.QuestionSerivce; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
|   | 
| import java.util.List; | 
|   | 
| /** | 
|  * | 
|  * @date 2017-03-01 09:42 | 
|  */ | 
| @Service("questionService") | 
| public class  QuestionServiceImpl implements QuestionSerivce { | 
|   | 
|      | 
|     @Autowired | 
|     private QuestionDao quesionDao; | 
|      | 
|     @Autowired | 
|     private AnswerDao answerDao; | 
|     @Autowired | 
|     private SystemDictionaryDao datadictionaryDao; | 
|      | 
|      | 
|     @Override | 
|     public int add(Question quesion){ | 
|         int i =quesionDao.insert(quesion); | 
|          | 
|         if(quesion.getAnswers()!=null){ | 
|             for (Answer answer : quesion.getAnswers()) { | 
|                 if(answer.getAnswer()==null){ | 
|                     continue; | 
|                 } | 
|                 answer.setQuestionId(quesion.getId()); | 
|                 answerDao.insert(answer); | 
|             } | 
|         } | 
|         return i; | 
|     } | 
|      | 
|     @Override | 
|     public int batchAdd(List<Question>  quesionList) { | 
|         return quesionDao.batchInsert(quesionList); | 
|     } | 
|      | 
|      | 
|         | 
|     @Override | 
|     public int modifyByModel(Question quesion){ | 
|         Question checkQuesion=quesionDao.selectById(quesion.getId()); | 
|          | 
|         String ids=","; | 
|         //如果该问卷类型修改为文本,则不处理答案,避免错误的删除答案数据。 | 
|         if(!quesion.getType().contains(Dictionary.QUESTION_TYPE_WB)||quesion.getType().equals(Dictionary.QUESTION_TYPE_TITLE)){ | 
|             for (Answer answer : quesion.getAnswers()) { | 
|                 if(answer.getId()==null){ | 
|                     if(answer.getAnswer()==null){ | 
|                         continue; | 
|                     } | 
|                     answer.setQuestionId(quesion.getId()); | 
|                     answerDao.insert(answer); | 
|                 }else{ | 
|                     //记录更新的answer | 
|                     answerDao.updateByModel(answer); | 
|                     ids+=answer.getId()+","; | 
|                 } | 
|             } | 
|             //删除未更新的答案 | 
|             for (Answer answer : checkQuesion.getAnswers()) { | 
|                 if(!ids.contains(answer.getId().toString())){ | 
|                     answerDao.deleteById(answer.getId()); | 
|                 } | 
|             } | 
|         } | 
|         return quesionDao.updateByModel(quesion); | 
|      | 
|     } | 
|      | 
|      | 
|      | 
|     @Override | 
|     public int remove(List<Long> list){ | 
|      | 
|         return quesionDao.deleteByIds(list); | 
|      | 
|     } | 
|   | 
|     @Override | 
|     public int removeById(Long id){ | 
|      | 
|         return quesionDao.deleteById(id); | 
|      | 
|     } | 
|      | 
|     @Override | 
|     public int removeByModel(Question quesion){ | 
|      | 
|         return quesionDao.deleteByModel(quesion); | 
|      | 
|     } | 
|      | 
|      | 
|     @Override | 
|     public List<Question> findInPage(Question quesion,  PaginationVO pageVo){ | 
|         return quesionDao.selectInPage(quesion , pageVo); | 
|     } | 
|      | 
|     @Override | 
|     public List<Question> findByModel(Question quesion){ | 
|      | 
|         return quesionDao.selectByModel(quesion); | 
|      | 
|     } | 
|      | 
|     @Override | 
|     public int  findTotal(Question quesion){ | 
|      | 
|         return quesionDao.selectTotalRecord(quesion); | 
|      | 
|     } | 
|      | 
|     @Override | 
|     public Question  findById(Long id){ | 
|      | 
|         return quesionDao.selectById(id); | 
|      | 
|     } | 
|   | 
|     @Override | 
|     public int modify(Question quesion) { | 
|         Question checkQuesion=quesionDao.selectById(quesion.getId()); | 
|          | 
|         String ids=","; | 
|         //如果该问卷类型修改为文本,则不处理答案,避免错误的删除答案数据。 | 
|         if(!quesion.getType().contains(Dictionary.QUESTION_TYPE_WB)){ | 
|             if(quesion.getAnswers()!=null){ | 
|                 for (Answer answer : quesion.getAnswers()) { | 
|                     if(answer.getAnswer()==null){ | 
|                         continue; | 
|                     } | 
|                     if(answer.getId()==null){ | 
|                         answer.setQuestionId(quesion.getId()); | 
|                         answerDao.insert(answer); | 
|                     }else{ | 
|                         //记录更新的answer | 
|                         answerDao.updateByModel(answer); | 
|                         ids+=answer.getId()+","; | 
|                     } | 
|                 } | 
|             } | 
|              | 
|             if(checkQuesion.getAnswers()!=null){ | 
|                 //删除未更新的答案 | 
|                 for (Answer answer : checkQuesion.getAnswers()) { | 
|                     if(!ids.contains(","+answer.getId()+",")){ | 
|                         answerDao.deleteById(answer.getId()); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         return quesionDao.updateByModel(quesion); | 
|     } | 
|     /** | 
|      * 根据问卷分类获取所有的问题以及会员的答案。 | 
|      * @return | 
|      */ | 
|     @Override | 
|     public List<Question> findByVipId(Long id) { | 
|   | 
|   | 
|   | 
|   | 
|         List<Question> vipAnswerList=quesionDao.selectVipAnswerAllByModel(id,Question.TYPE_ZXDAGL); | 
|   | 
|          | 
|         return vipAnswerList; | 
|     } | 
|   | 
|         | 
|      | 
|      | 
| } |