当前位置: 首页 > news >正文

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户投票实现

锋哥原创的uniapp微信小程序投票系统实战:

uniapp微信小程序投票系统实战课程 (SpringBoot2+vue3.2+element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2+vue3.2+element plus ) ( 火爆连载更新中... )共计21条视频,包括:uniapp微信小程序投票系统实战课程 (SpringBoot2+vue3.2+element plus ) ( 火爆连载更新中... )、第2讲 投票项目后端架构搭建、第3讲 小程序端 TabBar搭建等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1ea4y137xf/新建用户投票详情表t_vote_detail:

create table `t_vote_detail` (`id` int (11),`vote_id` int (11),`vote_item_id` int (11),`vote_date` datetime ,`openid` varchar (600)
); 

新建VoteDetail实体:

package com.java1234.entity;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;import java.util.Date;/**投票详情* @author java1234_小锋 (公众号:java1234)* @site www.java1234.vip* @company 南通小锋网络科技有限公司*/
@TableName("t_vote_detail")
@Data
public class VoteDetail {private Integer id; // 编号private Integer voteId; // 投票IDprivate Integer voteItemId; // 投票选项IDprivate String openid; // 投票人openid@TableField(select=false,exist = false)private WxUserInfo wxUserInfo;@JsonSerialize(using=CustomDateTimeSerializer.class)private Date voteDate;  // 投票时间}

新建VoteDetailMapper

package com.java1234.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.java1234.entity.VoteDetail;/*** 投票详情Mapper接口* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:00*/
public interface VoteDetailMapper extends BaseMapper<VoteDetail>{}

新建IVoteDetailService

package com.java1234.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.java1234.entity.VoteDetail;/*** 投票详情Service接口* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:01*/
public interface IVoteDetailService extends IService<VoteDetail> {
}

新建IVoteDetailServiceImpl

package com.java1234.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.java1234.entity.VoteDetail;
import com.java1234.mapper.VoteDetailMapper;
import com.java1234.service.IVoteDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** 投票详情Service实现类* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:02*/
@Service("voteDetailService")
public class IVoteDetailServiceImpl extends ServiceImpl<VoteDetailMapper, VoteDetail> implements IVoteDetailService {@Autowiredprivate VoteDetailMapper voteDetailMapper;
}

新建VoteDetailController

package com.java1234.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.java1234.entity.R;
import com.java1234.entity.VoteDetail;
import com.java1234.entity.VoteItem;
import com.java1234.service.IVoteDetailService;
import com.java1234.service.IVoteItemService;
import com.java1234.util.JwtUtils;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;import java.util.Date;
import java.util.HashMap;
import java.util.Map;/*** 投票详情Controller控制器* @author java1234_小锋 (公众号:java1234)* @site www.java1234.vip* @company 南通小锋网络科技有限公司*/
@RestController
@RequestMapping("/voteDetail")
public class VoteDetailController {@Autowiredprivate IVoteDetailService voteDetailService;@Autowiredprivate IVoteItemService voteItemService;/*** 添加投票* @param voteDetail* @param token* @return*/@RequestMapping("/add")@Transactionalpublic R add(@RequestBody VoteDetail voteDetail, @RequestHeader String token){System.out.println("token="+token);Claims claims = JwtUtils.validateJWT(token).getClaims();System.out.println("openid="+claims.getId());String openid=claims.getId();int count = voteDetailService.count(new QueryWrapper<VoteDetail>().eq("openid", openid).eq("vote_id", voteDetail.getVoteId()));Map<String,Object> resultMap=new HashMap<>();if(count>0){resultMap.put("info","您已经投票过,不能重复投票!");}else {resultMap.put("info", "投票成功!");voteDetail.setOpenid(openid);voteDetail.setVoteDate(new Date());// 对指定投票项的number+1操作VoteItem voteItem=new VoteItem();voteItem.setId(voteDetail.getVoteItemId());voteItemService.update(new UpdateWrapper<VoteItem>().setSql("number=number+1").eq("id",voteDetail.getVoteItemId()));voteDetailService.save(voteDetail);}return R.ok(resultMap);}}

前端投票提交:

submitVote:async function(e){let form={voteItemId:this.sItem,voteId:this.vote.id}const result=await requestUtil({url:"/voteDetail/add",data:form,method:"post"});if(result.code==0){uni.showToast({icon:"success",title:result.info})}}

http://www.lryc.cn/news/281667.html

相关文章:

  • 如何实现一个两栏布局,右侧自适应?三栏布局中间自适应?
  • 004 Golang-channel-practice 左右括号匹配
  • MS2351M/MS2351D:RF 检测器/控制器
  • vue中使用js-doc
  • Hive知识点
  • android自启动
  • cookie、Web Storage
  • 【rk3568】01-环境搭建
  • 编程笔记 html5cssjs 036 CSS概述
  • Vue入门七(Vuex的使用|Vue-router|LocalStorage与SessionStorage和cookie的使用)
  • 多级缓存架构(三)OpenResty Lua缓存
  • 写点东西《Docker入门(上)》
  • chatgpt实用技巧之二反问式提示
  • 【数据结构和算法】奇偶链表
  • MVC框架
  • 学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研
  • Github Copilot 的使用方法和快捷键
  • 开源iMES工厂管家 - 详细安装部署指南(图解)- 全网独稿
  • Codeforces Round 919 (Div. 2)
  • 面向经验丰富的开发人员的最佳 Linux 发行版
  • Rust-借用检查
  • xcode安装及运行源码
  • x-cmd pkg | czg - git commit 智能生成工具
  • Go的并发练习题目
  • Python 网络编程之粘包问题
  • 旧衣回收小程序搭建:降低企业成本,提高回收效率!
  • Jmeter后置处理器——JSON提取器
  • [SWPUCTF 2022 新生赛]奇妙的MD5
  • MHFormer 论文解读
  • Python列表append()函数使用详解