Browse Source

0813v3.0

master
zy_Java 5 years ago
parent
commit
4a49a53815
  1. 2
      mt/src/main/java/com/ccsens/mt/api/TopicController.java
  2. 11
      mt/src/main/java/com/ccsens/mt/bean/dto/TopicDto.java
  3. 2
      mt/src/main/java/com/ccsens/mt/bean/vo/TopicVo.java
  4. 8
      mt/src/main/java/com/ccsens/mt/persist/dao/TopicDao.java
  5. 78
      mt/src/main/java/com/ccsens/mt/service/TopicService.java
  6. 4
      mt/src/main/resources/application.yml
  7. 18
      mt/src/main/resources/mapper_dao/TopicDao.xml

2
mt/src/main/java/com/ccsens/mt/api/TopicController.java

@ -59,7 +59,7 @@ public class TopicController {
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "查排名(已经晋级)", notes = "")
@ApiOperation(value = "查排名", notes = "")
@ApiImplicitParams({
})
@RequestMapping(value = "/ranking", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})

11
mt/src/main/java/com/ccsens/mt/bean/dto/TopicDto.java

@ -61,10 +61,12 @@ public class TopicDto {
@Data
@ApiModel("查找组排名信息")
public static class GetRankingByProjectId{
@NotNull
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("比赛环节 1志在必得 2以快制胜 3绝地反击 4你说我猜 默认查全部")
private List<Integer> linkTypes;
@NotNull
@ApiModelProperty("比赛环节 1志在必得 2以快制胜 3绝地反击 4你说我猜")
private int linkType;
}
@Data
@ -81,12 +83,17 @@ public class TopicDto {
@Data
@ApiModel("分组id")
public static class Group{
@NotNull
@ApiModelProperty("项目ID")
private Long projectId;
@NotNull
@ApiModelProperty("分组id")
private Long groupId;
}
@Data
@ApiModel("项目id")
public static class Project{
@NotNull
@ApiModelProperty("项目id")
private Long projectId;
}

2
mt/src/main/java/com/ccsens/mt/bean/vo/TopicVo.java

@ -44,8 +44,6 @@ public class TopicVo {
private String groupName;
@ApiModelProperty("分数")
private int score;
@ApiModelProperty("排名")
private int ranking;
@ApiModelProperty("是否分数重复需要附加题 0不需要 1需要")
private int extraTopic;
}

8
mt/src/main/java/com/ccsens/mt/persist/dao/TopicDao.java

@ -42,4 +42,12 @@ public interface TopicDao extends MtTopicMapper {
* @return 选项
*/
List<String> queryOption(@Param("topicId") Long topicId);
/**
* 查询当前阶段的排名
* @param projectId 项目id
* @param linkType 阶段类型
* @return 返回排名按分数从大到小排列
*/
List<TopicVo.QueryRanking> queryRanking(@Param("projectId")Long projectId, @Param("linkType")int linkType);
}

78
mt/src/main/java/com/ccsens/mt/service/TopicService.java

@ -4,13 +4,12 @@ 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.po.*;
import com.ccsens.mt.bean.vo.TopicVo;
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.persist.mapper.MtResponderMapper;
import com.ccsens.mt.util.Constant;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.RedisUtil;
@ -38,6 +37,8 @@ public class TopicService implements ITopicService{
private Snowflake snowflake;
@Resource
private GroupTopicDao groupTopicDao;
@Resource
private MtResponderMapper mtResponderMapper;
@Override
public TopicVo.TopicInfo getTopicByLink(TopicDto.GetTopic getTopic) {
@ -91,18 +92,83 @@ public class TopicService implements ITopicService{
@Override
public List<TopicVo.QueryRanking> queryRanking(TopicDto.GetRankingByProjectId ranking) {
log.info("查看排名:{}", ranking.toString());
List<TopicVo.QueryRanking> queryRankingList = topicDao.queryRanking(ranking.getProjectId(),ranking.getLinkType());
if(CollectionUtil.isNotEmpty(queryRankingList)){
if(ranking.getLinkType() == 1){
for(int i = 4; i < queryRankingList.size() - 1;i++){
if(queryRankingList.get(i).getScore() > queryRankingList.get(i + 1).getScore()){
break;
}
queryRankingList.get(i).setExtraTopic(1);
queryRankingList.get(i + 1).setExtraTopic(1);
}
for(int i = 4; i > 0; i--){
if(queryRankingList.get(i).getScore() < queryRankingList.get(i - 1).getScore()){
break;
}
queryRankingList.get(i).setExtraTopic(1);
queryRankingList.get(i - 1).setExtraTopic(1);
}
return null;
}
if(ranking.getLinkType() == 2){
for(int i = 2; i < queryRankingList.size() - 1;i++){
if(queryRankingList.get(i).getScore() > queryRankingList.get(i + 1).getScore()){
break;
}
queryRankingList.get(i).setExtraTopic(1);
queryRankingList.get(i + 1).setExtraTopic(1);
}
for(int i = 2; i > 0; i--){
if(queryRankingList.get(i).getScore() < queryRankingList.get(i - 1).getScore()){
break;
}
queryRankingList.get(i).setExtraTopic(1);
queryRankingList.get(i - 1).setExtraTopic(1);
}
}
}
return queryRankingList;
}
@Override
public void responderStart(TopicDto.Topic topic) {
redisUtil.set(topic.getProjectId()+ Constant.Redis.START_QUESTION,topic.getProjectId(), Constant.Redis.TIME_OUT);
redisUtil.set(topic.getProjectId()+ Constant.Redis.START_QUESTION,topic.getTopicId(), Constant.Redis.TIME_OUT);
}
@Override
public void responderGroup(TopicDto.Group group) {
//锁
synchronized (this){
log.info("抢答:{}", group);
//在redis中查找当前项目下开始抢答的题
Object o = redisUtil.get(group.getProjectId()+ Constant.Redis.START_QUESTION);
log.info("题目缓存:{}", o);
if (o == null) {
return;
}
//在redis中查找之前有没有人抢答
Object a = redisUtil.get(group.getProjectId() + Constant.Redis.RESPONDER + o);
if (a != null) {
return;
}
//将自己抢答的信息存进redis
redisUtil.set(group.getProjectId() + Constant.Redis.RESPONDER + o,group.getGroupId(),Constant.Redis.TIME_OUT);
//储存数据库
MtResponderExample responderExample = new MtResponderExample();
responderExample.createCriteria().andTopicIdEqualTo((long)o).andGroupIdEqualTo(group.getGroupId());
List<MtResponder> mtResponderList = mtResponderMapper.selectByExample(responderExample);
if(CollectionUtil.isNotEmpty(mtResponderList)){
return;
}
MtResponder mtResponder = new MtResponder();
mtResponder.setId(snowflake.nextId());
mtResponder.setGroupId(group.getGroupId());
mtResponder.setTopicId((long)o);
mtResponderMapper.insertSelective(mtResponder);
}
}
@Override

4
mt/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: test
include: common, util-test
active: dev
include: common, util-dev

18
mt/src/main/resources/mapper_dao/TopicDao.xml

@ -81,4 +81,22 @@
`type` = #{type}
</select>
<select id="queryRanking" parameterType="java.util.Map" resultType="com.ccsens.mt.bean.vo.TopicVo$QueryRanking">
SELECT
id as groupId,
`name` as groupName,
score as score
FROM
t_mt_group g
WHERE
rec_status = 0
and
project_id = #{projectId}
and
advance_status = #{linkType}
and
type = 0
ORDER BY score DESC
</select>
</mapper>
Loading…
Cancel
Save