投票创建

该博客介绍了如何使用SpringBoot来创建一个会议投票系统。通过VoteController处理HTTP请求,调用VoteService来获取和提交投票。VoteService利用VoteDao进行数据库操作,包括获取投票列表、提交选项以及获取投票结果。系统提供了对投票结果的统计和对重复投票的限制。
摘要由CSDN通过智能技术生成

需求

在开会前需要在服务端创建投票,用springboot实现

实现

首先创建VoteController处理请求,并使用VoteService处理

@RestController()
@RequestMapping("vote")
public class VoteController {
    @Autowired
    private VoteService voteService;
 @PostMapping("getVoteList")
    Msg getVoteList(@RequestParam int deviceId, int meetingId){
        return  new Msg();
    }
  @PostMapping("getVoteList")
    Msg getVoteList(@RequestParam int deviceId, @RequestParam int meetingId) {
        List<VoteVO> voteVOList = voteService.getVoteList(meetingId);
        return new Msg(200,"ok",voteVOList);
    }
   @PostMapping("submitOptions")
    Msg submitOption(@RequestParam int voteId, @RequestParam int optionId, @RequestParam int deviceId){
        return new Msg();

    @PostMapping("submitOption")
    Msg submitOption(@RequestParam int voteId, @RequestParam int optionId, @RequestParam int deviceId) {
        switch (voteService.submitOption(voteId, optionId, deviceId)) {
            case 0:
                return new Msg(200, "投票成功", null);
            case 1:
                return new Msg(200, "禁止对同一选项多次投票", null);
            case 2:
                return new Msg(200, "本投票为单选,禁止多次投票", null);
            default:
                return new Msg(200, "未知错误", null);
        }
    }
}   

VoteService具体实现,创建投票

@Component
public class VoteService {
    @Autowired
    private VoteDao voteDao;

    public VoteResultVO getResultByVoteId(int voteId) {
        VoteResultVO voteResultVO = new VoteResultVO(voteId);
        List<Option> options = voteDao.getOptionsByVoteId(voteId);
        for(Option option : options){
            List<String> devices = voteDao.getDevicesByOptionId(option.getUid());
            voteResultVO.addResItem(option.getUid(),devices.size(),devices);
        }
        return voteResultVO;
    }
    public List<VoteVO> getVoteList(int meetingId){
       List<VoteDO> voteDOList = voteDao.getVoteListByMeetingId(meetingId);
        List<VoteVO> voteVOList = new LinkedList<>();
        for(VoteDO voteDO : voteDOList) {
            voteVOList.add(new VoteVO(voteDO, voteDao.getOptionsByVoteId(voteDO.getUid())));
        }
        return voteVOList;
    }
    public int submitOption(int voteId, int optionId, int deviceId){
        //检测机制有时间再说吧
        voteDao.insertOption(optionId,deviceId);
        return 0;
    }
}

SQL操作,使用Mybatis对sql进行操作

  @Insert("insert into `device_option` values(#{deviceId}, #{optionId})")
    int insertOption(int optionId, int deviceId);

    @Select("select * from `vote` where meeting_id = #{meetingId}")
    List<VoteDO> getVoteListByMeetingId(int meetingId);

    @Select("select * from `option` where belongs = #{voteId}")
    List<Option> getOptionsByVoteId(int voteId);

    @Select("select * from `device_option` where vote_id = #{voteId}")
    List<Option> getResultByVoteId(int voteId);

    @Select("select * from vote where uid =#{voteId}")
    VoteDO getVoteById(int voteId);

    @Select("select name from `device` where uid in (select device_id from `device_option` where option_id = #{optionId})")
    List<String> getDevicesByOptionId(int optionId);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值