From 2666bff7817b8343763df5ae6bcd107919a51162 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 13 Aug 2020 18:48:03 +0800 Subject: [PATCH] 0813v2.0 --- .../java/com/ccsens/mt/bean/dto/TopicDto.java | 10 ++-- .../com/ccsens/mt/persist/dao/GroupDao.java | 3 +- .../ccsens/mt/persist/dao/GroupTopicDao.java | 11 ++++ .../com/ccsens/mt/persist/dao/TopicDao.java | 11 ++++ .../com/ccsens/mt/service/TopicService.java | 54 +++++++++++++++++-- mt/src/main/resources/mapper_dao/TopicDao.xml | 18 ++++++- .../main/java/com/ccsens/util/CodeEnum.java | 2 + 7 files changed, 100 insertions(+), 9 deletions(-) create mode 100644 mt/src/main/java/com/ccsens/mt/persist/dao/GroupTopicDao.java diff --git a/mt/src/main/java/com/ccsens/mt/bean/dto/TopicDto.java b/mt/src/main/java/com/ccsens/mt/bean/dto/TopicDto.java index 613cd494..a0623587 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/dto/TopicDto.java +++ b/mt/src/main/java/com/ccsens/mt/bean/dto/TopicDto.java @@ -27,17 +27,20 @@ public class TopicDto { @Data @ApiModel("根据项目id查分组信息") public static class GetGroup{ + @NotNull @ApiModelProperty("项目id") private Long projectId; @ApiModelProperty("比赛环节 1志在必得 2以快制胜 3绝地反击 4你说我猜") private int linkType = 1; + @NotNull @ApiModelProperty("参赛组的类型 0答题 1投票 默认为0") - private int type; + private int type = 0; } @Data @ApiModel("主持人提交答案") public static class SaveAnswers{ + @NotNull @ApiModelProperty("题目id") private Long topicId; @ApiModelProperty("每组的答案") @@ -46,10 +49,11 @@ public class TopicDto { @Data @ApiModel("提交时每组的答案") public static class SaveAnswersGroup{ + @NotNull @ApiModelProperty("该组的id") private Long groupId; - @ApiModelProperty("答案(当前项目为true/false)") - private String answers; + @ApiModelProperty("答案(当前项目为T/F 默认F)") + private String answers = "F"; } @Data diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/GroupDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/GroupDao.java index 62d7677c..17cdb136 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/GroupDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/GroupDao.java @@ -2,12 +2,13 @@ package com.ccsens.mt.persist.dao; import com.ccsens.mt.bean.dto.TopicDto; import com.ccsens.mt.bean.vo.TopicVo; +import com.ccsens.mt.persist.mapper.MtGroupMapper; /** * 答题项目 * @author whj */ -public interface GroupDao { +public interface GroupDao extends MtGroupMapper { /** * 查询抢答成功的组信息 * @param topic 抢答条件 diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/GroupTopicDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/GroupTopicDao.java new file mode 100644 index 00000000..34674620 --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/GroupTopicDao.java @@ -0,0 +1,11 @@ +package com.ccsens.mt.persist.dao; + +import com.ccsens.mt.persist.mapper.MtGroupTopicMapper; +import org.springframework.stereotype.Repository; + +/** + * @author 逗 + */ +@Repository +public interface GroupTopicDao extends MtGroupTopicMapper { +} diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/TopicDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/TopicDao.java index 08c1571f..752e99ca 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/TopicDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/TopicDao.java @@ -5,6 +5,8 @@ import com.ccsens.mt.persist.mapper.MtTopicMapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @author 逗 */ @@ -17,4 +19,13 @@ public interface TopicDao extends MtTopicMapper { * @return 返回题目信息 */ TopicVo.TopicInfo getTopicByLink(@Param("linkType") int linkType, @Param("topicNum")int topicNum); + + /** + * 查询分组的信息 + * @param projectId 项目id + * @param linkType 答题环节 + * @param type 参赛组的类型 + * @return + */ + List queryGroupByProject(@Param("projectId")Long projectId, @Param("linkType")int linkType, @Param("type")int type); } diff --git a/mt/src/main/java/com/ccsens/mt/service/TopicService.java b/mt/src/main/java/com/ccsens/mt/service/TopicService.java index d2718a8b..f573e2a7 100644 --- a/mt/src/main/java/com/ccsens/mt/service/TopicService.java +++ b/mt/src/main/java/com/ccsens/mt/service/TopicService.java @@ -1,11 +1,20 @@ package com.ccsens.mt.service; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.ObjectUtil; import com.ccsens.mt.bean.dto.TopicDto; +import com.ccsens.mt.bean.po.MtGroup; +import com.ccsens.mt.bean.po.MtGroupTopic; +import com.ccsens.mt.bean.po.MtTopic; import com.ccsens.mt.bean.vo.TopicVo; -import com.ccsens.mt.persist.dao.TopicDao; import com.ccsens.mt.persist.dao.GroupDao; +import com.ccsens.mt.persist.dao.GroupTopicDao; +import com.ccsens.mt.persist.dao.TopicDao; import com.ccsens.mt.util.Constant; +import com.ccsens.util.CodeEnum; import com.ccsens.util.RedisUtil; +import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -21,11 +30,14 @@ public class TopicService implements ITopicService{ @Resource private TopicDao topicDao; - @Resource private RedisUtil redisUtil; @Resource private GroupDao groupDao; + @Resource + private Snowflake snowflake; + @Resource + private GroupTopicDao groupTopicDao; @Override public TopicVo.TopicInfo getTopicByLink(TopicDto.GetTopic getTopic) { @@ -35,12 +47,46 @@ public class TopicService implements ITopicService{ @Override public List queryGroupByProject(TopicDto.GetGroup getGroup) { - return null; + log.info("查询分组:{}",getGroup.toString()); + return topicDao.queryGroupByProject(getGroup.getProjectId(),getGroup.getLinkType(),getGroup.getType()); } @Override public void saveAnswers(TopicDto.SaveAnswers saveAnswers) { - + log.info("主持人提交分数:{}",saveAnswers.toString()); + //查询题目 + MtTopic topic = topicDao.selectByPrimaryKey(saveAnswers.getTopicId()); + if(ObjectUtil.isNull(topic)){ + throw new BaseException(CodeEnum.NOT_TOPIC); + } + //循环遍历提交的分组 + if(CollectionUtil.isNotEmpty(saveAnswers.getAnswersGroupList())){ + saveAnswers.getAnswersGroupList().forEach(saveAnswersGroup ->{ + MtGroup group = groupDao.selectByPrimaryKey(saveAnswersGroup.getGroupId()); + if(ObjectUtil.isNull(group)){ + throw new BaseException(CodeEnum.NOT_GROUP); + } + //添加分组答题的信息 + MtGroupTopic groupTopic = new MtGroupTopic(); + groupTopic.setId(snowflake.nextId()); + groupTopic.setTopicId(saveAnswers.getTopicId()); + groupTopic.setGroupId(saveAnswersGroup.getGroupId()); + groupTopic.setAnswers(saveAnswersGroup.getAnswers()); + int score = 0; + if("T".equalsIgnoreCase(saveAnswersGroup.getAnswers())){ + score = topic.getScore(); + }else { + if(topic.getScoreRule() == 1){ + score = -topic.getScore(); + } + } + groupTopic.setScore(score); + groupTopicDao.insertSelective(groupTopic); + //修改分组的分数 + group.setScore(group.getScore() + score); + groupDao.updateByPrimaryKeySelective(group); + }); + } } @Override diff --git a/mt/src/main/resources/mapper_dao/TopicDao.xml b/mt/src/main/resources/mapper_dao/TopicDao.xml index 2d2b8b3e..1bf9ab98 100644 --- a/mt/src/main/resources/mapper_dao/TopicDao.xml +++ b/mt/src/main/resources/mapper_dao/TopicDao.xml @@ -17,7 +17,7 @@ t.id as topicId, t.description as description, t.answers as answersTrue, - if(o.`option` = '',o.contant , concat(o.`option` ,':' ,o.contant)) as options + if(o.`option` is null,'' , concat(o.`option` ,':' ,o.contant)) as options FROM t_mt_topic t LEFT JOIN t_mt_topic_option o on t.id = o.topic_id WHERE @@ -29,4 +29,20 @@ ORDER BY o.sequence + + \ No newline at end of file diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index a881a98b..9cdd69d4 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -132,6 +132,8 @@ public enum CodeEnum { VERIFICATION_CODE_ERROR(111,"验证码错误",true), NOT_ROW(112,"该行不存在",true), + NOT_TOPIC(113,"找不到该题目",true), + NOT_GROUP(113,"找不到该组信息",true), ;