2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐

一、前言

博主介绍:✌全网粉丝25W+,CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。✌

毕业设计选题非常重要!非常重要!非常重要!(一定要收藏起来)

选题指导:近期开题的同学越来越多,很多同学不知道怎么选题,不知道老师分配的题目应该怎么做,指导老师分享的信息不多,无从下手?

选题避坑:毕设选题实际上对很多同学来说一个大坑, 每年挖坑给自己跳的人太多太多,选题选得好后面的答辩以及论文撰写会轻松很多,选的不好就是一个无穷无尽的折磨

难度把控:其实这主要是由于大部分同学对某种具体场景所需要的技术不清晰而导致的,定题的时候想当然的觉得某种功能是很好实现的,但是实际上往往并非如此。

所以,建议对课题实现技术不清晰的同学,最好是找自己的研究生学长或者老师详细的把关机技术以及实现流程理清楚,当然也可以来找我问我(免费)

以下为我整理的一些适合同学们毕业设计的项目,大家可以参考一下-记得收藏。

文章最下面,获取完整源码和数据库,没有套路,没有套路,没有套路!!!

网上大部分的毕设套路如下:

1. 在b站发毕设项目的演示视频,让你免费领取,你领取完发现代码不全或者数据库少表,根本跑不起来!如果要调试则收费300:sweat_smile:真的是恶心至极有没有!

2. 某宝找人帮忙写,简单来说比第一种行为靠谱,但是很贵!说是可以免费修改其实修改基本排不上队,一改就是一星期,想快点?加钱,200加急!:sweat_smile:
  1. 成品购买,这种不多说适合于自己懂一点的同学

精彩专栏推荐订阅
Java项目精品实战案例
微信小程序项目精品案例
文末获取源码+数据库

三、SpringBoot选题参考

  • 微信小程序生鲜销售管理系统

  • 微信小程序新闻网站

  • 微信小程序的图书管理系统代码

  • 微信小程序计算机专业英语学习平台

  • 微信小程序电子阅读器设计与实现

  • 微信小程序英语学习小助手的设计

  • 微信小程序废品回收类小程序

  • 微信小程序校园快递代取

  • 微信小程序宠物交易系统

  • 微信小程序便捷订货系统

  • 微信小程序便捷记账本小程序

  • 微信小程序旅游服务平台

  • 微信小程序租房信息管理系统

  • 微信小程序中医知识库

  • 微信小程序在线学习平台

  • 微信小程序音乐播放器

  • 微信小程序小说阅读书城

  • 微信小程序随便点奶茶小程序

  • 微信小程序驾考小助手

  • 微信小程序美容预约

  • 微信小程序同学会

  • 微信小程序科普之家小程序

  • 微信小程序卫生应急培训系统设计与实现

  • 微信小程序校园自动点餐系统

  • 微信小程序武夷山垃圾分类

  • 微信小程序跳蚤市场

  • 微信小程序社区疫情防控系统

  • 微信小程序029社区防控系统

  • 微信小程序030订餐系统

  • 微信小程序031旅游景点酒店预订管理系统

  • 微信小程序032资助定制游

  • 微信小程序033知茶叶商城考试错题

  • 微信小程序034在线医生答疑系统

  • 微信小程序035在线学习平台

  • 微信小程序036在线考试系统

  • 微信小程序037应聘系统

  • 微信小程序038医疗微服务预约挂号

  • 微信小程序038易农产品多商家小程序

  • 微信小程序039学生信息课程考试,错题,发帖,管理

  • 微信小程序040校园维修平台的设计

  • 微信小程序041校园维修平台

  • 微信小程序042校园租房指南

  • 微信小程序043校园跑腿

  • 微信小程序045校园二手交易

  • 微信小程序046校园达达互助平台

  • 微信小程序047家电子产品维修售后服务

  • 微信小程序048课程分享平台

  • 微信小程序049竞赛管理系统

  • 微信小程序050社区居民疫情服务系统

  • 微信小程序051快递取件及上门服务

  • 微信小程序052劳务咨询系统设计与实现

  • 微信小程序053超市购物

  • 微信小程序054超市购物系统

  • 微信小程序055答题系统

  • 微信小程序056大学生心理测试

  • 微信小程序057灯具商城

  • 微信小程序058小区疫情防控

  • 微信小程序059校友录吕梁学院

  • 微信小程序060巧匠家装小程序

  • 微信小程序060电脑维修预约

  • 微信小程序061点餐订餐充值系统

  • 微信小程序061电影院购票平台

  • 微信小程序062菜品点餐订餐系统带桌号

  • 微信小程序063美食点餐推荐演示

  • 微信小程序064二手交易

  • 微信小程序065我爱美食网站

  • 微信小程序066四六级英语助手

  • 微信小程序067好物分享系统

  • 微信小程序068户外体能训练

  • 微信小程序069房屋租赁系统设计与实现

  • 微信小程序070食堂订餐

  • 微信小程序071食谱大全

  • 微信小程序072健身教练私教预约系统

  • 微信小程序073个人理财打卡运动打卡管理软件

  • 微信小程序074公益知识学习测试

  • 微信小程序075河南师范大学好物分享系统

  • 微信小程序076护工服务预约

  • 微信小程序077高校机房设备报修小助手

  • 微信小程序078加油服务系统

  • 微信小程序079家庭理财产品

  • 微信小程序080家校通程序

  • 微信小程序081驾校教培小程序

  • 微信小程序082教材销售系统

  • 微信小程序083线上教学辅助

  • 微信小程序084物流仓储系统

  • 微信小程序085图书借阅系统

  • 微信小程序086社区心理健康服务

  • 微信小程序087刷题网站

  • 微信小程序088投票系统

  • 微信小程序089社区物品租赁

  • 微信小程序090在线视频教育系统小程序

  • 微信小程序091师生答疑交流平台

  • 微信小程序092每日签到打卡

  • 微信小程序093网上药店管理系统

  • 微信小程序094家园社区生活事务报修缴费

  • 微信小程序095培训机构课程报名系统

  • 微信小程序096祛痘美容减肥个人健康交流打卡

  • 微信小程序097校园美食评论餐饮配送

  • 微信小程序098校园快递代领平台小程序

  • 微信小程序099家教平台

六、数据库设计参考

-- MySQL dump 10.13  Distrib 5.7.31, for Linux (x86_64)
--
-- Host: localhost    Database: springbootm3ord
-- ------------------------------------------------------
-- Server version	5.7.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `springbootm3ord`
--

/*!40000 DROP DATABASE IF EXISTS `springbootm3ord`*/;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springbootm3ord` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

USE `springbootm3ord`;

--
-- Table structure for table `aboutus`
--

DROP TABLE IF EXISTS `aboutus`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `aboutus` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `title` varchar(200) NOT NULL COMMENT '标题',
  `subtitle` varchar(200) DEFAULT NULL COMMENT '副标题',
  `content` longtext NOT NULL COMMENT '内容',
  `picture1` longtext COMMENT '图片1',
  `picture2` longtext COMMENT '图片2',
  `picture3` longtext COMMENT '图片3',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='关于我们';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `aboutus`
--

LOCK TABLES `aboutus` WRITE;
/*!40000 ALTER TABLE `aboutus` DISABLE KEYS */;
INSERT INTO `aboutus` VALUES (1,'2023-03-05 09:51:25','关于我们','ABOUT US','不管你想要怎样的生活,你都要去努力争取,不多尝试一些事情怎么知道自己适合什么、不适合什么呢?\n你说你喜欢读书,让我给你列书单,你还问我哪里有那么多时间看书;你说自己梦想的职业是广告文案,问我如何成为一个文案,应该具备哪些素质;你说你计划晨跑,但总是因为学习、工作辛苦或者身体不舒服第二天起不了床;你说你一直梦想一个人去长途旅行,但是没钱,父母觉得危险。其实,我已经厌倦了你这样说说而已的把戏,我觉得就算我告诉你如何去做,你也不会照做,因为你根本什么都不做。','upload/aboutus_picture1.jpg','upload/aboutus_picture2.jpg','upload/aboutus_picture3.jpg');
/*!40000 ALTER TABLE `aboutus` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `config`
--

DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `config`
--

LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg'),(2,'picture2','upload/picture2.jpg'),(3,'picture3','upload/picture3.jpg');
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `discussjiaoyuan`
--

DROP TABLE IF EXISTS `discussjiaoyuan`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discussjiaoyuan` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `refid` bigint(20) NOT NULL COMMENT '关联表id',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `avatarurl` longtext COMMENT '头像',
  `nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
  `content` longtext NOT NULL COMMENT '评论内容',
  `reply` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='教员评论表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `discussjiaoyuan`
--

LOCK TABLES `discussjiaoyuan` WRITE;
/*!40000 ALTER TABLE `discussjiaoyuan` DISABLE KEYS */;
/*!40000 ALTER TABLE `discussjiaoyuan` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `discusszhaopinxinxi`
--

DROP TABLE IF EXISTS `discusszhaopinxinxi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discusszhaopinxinxi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `refid` bigint(20) NOT NULL COMMENT '关联表id',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `avatarurl` longtext COMMENT '头像',
  `nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
  `content` longtext NOT NULL COMMENT '评论内容',
  `reply` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='招聘信息评论表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `discusszhaopinxinxi`
--

LOCK TABLES `discusszhaopinxinxi` WRITE;
/*!40000 ALTER TABLE `discusszhaopinxinxi` DISABLE KEYS */;
/*!40000 ALTER TABLE `discusszhaopinxinxi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `jiajiaoshenqing`
--

DROP TABLE IF EXISTS `jiajiaoshenqing`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiajiaoshenqing` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `shenqingbianhao` varchar(200) DEFAULT NULL COMMENT '申请编号',
  `gonghao` varchar(200) DEFAULT NULL COMMENT '工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `shoukezhuanye` varchar(200) DEFAULT NULL COMMENT '授课专业',
  `xueli` varchar(200) DEFAULT NULL COMMENT '学历',
  `jiajiaofeiyong` varchar(200) DEFAULT NULL COMMENT '家教费用',
  `shenqingriqi` date DEFAULT NULL COMMENT '申请日期',
  `shenqingneirong` longtext COMMENT '申请内容',
  `zhanghao` varchar(200) DEFAULT NULL COMMENT '账号',
  `xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
  `shoujihaoma` varchar(200) DEFAULT NULL COMMENT '手机号码',
  `sfsh` varchar(200) DEFAULT '待审核' COMMENT '是否审核',
  `shhf` longtext COMMENT '审核回复',
  PRIMARY KEY (`id`),
  UNIQUE KEY `shenqingbianhao` (`shenqingbianhao`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='家教申请';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `jiajiaoshenqing`
--

LOCK TABLES `jiajiaoshenqing` WRITE;
/*!40000 ALTER TABLE `jiajiaoshenqing` DISABLE KEYS */;
INSERT INTO `jiajiaoshenqing` VALUES (51,'2023-03-05 09:51:24','1111111111','工号1','教师姓名1','授课专业1','学历1','家教费用1','2023-03-05','申请内容1','账号1','姓名1','手机号码1','是',''),(52,'2023-03-05 09:51:24','2222222222','工号2','教师姓名2','授课专业2','学历2','家教费用2','2023-03-05','申请内容2','账号2','姓名2','手机号码2','是',''),(53,'2023-03-05 09:51:24','3333333333','工号3','教师姓名3','授课专业3','学历3','家教费用3','2023-03-05','申请内容3','账号3','姓名3','手机号码3','是',''),(54,'2023-03-05 09:51:24','4444444444','工号4','教师姓名4','授课专业4','学历4','家教费用4','2023-03-05','申请内容4','账号4','姓名4','手机号码4','是',''),(55,'2023-03-05 09:51:24','5555555555','工号5','教师姓名5','授课专业5','学历5','家教费用5','2023-03-05','申请内容5','账号5','姓名5','手机号码5','是',''),(56,'2023-03-05 09:51:24','6666666666','工号6','教师姓名6','授课专业6','学历6','家教费用6','2023-03-05','申请内容6','账号6','姓名6','手机号码6','是',''),(57,'2023-03-05 09:51:24','7777777777','工号7','教师姓名7','授课专业7','学历7','家教费用7','2023-03-05','申请内容7','账号7','姓名7','手机号码7','是',''),(58,'2023-03-05 09:51:24','8888888888','工号8','教师姓名8','授课专业8','学历8','家教费用8','2023-03-05','申请内容8','账号8','姓名8','手机号码8','是','');
/*!40000 ALTER TABLE `jiajiaoshenqing` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `jiaoyuan`
--

DROP TABLE IF EXISTS `jiaoyuan`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiaoyuan` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gonghao` varchar(200) NOT NULL COMMENT '工号',
  `mima` varchar(200) NOT NULL COMMENT '密码',
  `jiaoshixingming` varchar(200) NOT NULL COMMENT '教师姓名',
  `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
  `youxiang` varchar(200) DEFAULT NULL COMMENT '邮箱',
  `lianxishouji` varchar(200) DEFAULT NULL COMMENT '联系手机',
  `shoukezhuanye` varchar(200) DEFAULT NULL COMMENT '授课专业',
  `xueli` varchar(200) DEFAULT NULL COMMENT '学历',
  `touxiang` longtext COMMENT '头像',
  `jiajiaofeiyong` varchar(200) DEFAULT NULL COMMENT '家教费用',
  `gerenjianjie` longtext COMMENT '个人简介',
  `rongyuxinxi` longtext COMMENT '荣誉信息',
  PRIMARY KEY (`id`),
  UNIQUE KEY `gonghao` (`gonghao`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='教员';
/*!40101 SET character_set_client = @saved_cs_client */;


--
-- Table structure for table `jiaoyuanfankui`
--

DROP TABLE IF EXISTS `jiaoyuanfankui`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiaoyuanfankui` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `fankuibianhao` varchar(200) DEFAULT NULL COMMENT '反馈编号',
  `fankuibiaoti` varchar(200) NOT NULL COMMENT '反馈标题',
  `fankuineirong` longtext COMMENT '反馈内容',
  `fankuishijian` datetime DEFAULT NULL COMMENT '反馈时间',
  `gonghao` varchar(200) DEFAULT NULL COMMENT '工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `shhf` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`),
  UNIQUE KEY `fankuibianhao` (`fankuibianhao`)
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8 COMMENT='教员反馈';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `jiaoyuanfankui`
--

LOCK TABLES `jiaoyuanfankui` WRITE;
/*!40000 ALTER TABLE `jiaoyuanfankui` DISABLE KEYS */;
INSERT INTO `jiaoyuanfankui` VALUES (111,'2023-03-05 09:51:25','1111111111','反馈标题1','反馈内容1','2023-03-05 17:51:25','工号1','教师姓名1',''),(112,'2023-03-05 09:51:25','2222222222','反馈标题2','反馈内容2','2023-03-05 17:51:25','工号2','教师姓名2',''),(113,'2023-03-05 09:51:25','3333333333','反馈标题3','反馈内容3','2023-03-05 17:51:25','工号3','教师姓名3',''),(114,'2023-03-05 09:51:25','4444444444','反馈标题4','反馈内容4','2023-03-05 17:51:25','工号4','教师姓名4',''),(115,'2023-03-05 09:51:25','5555555555','反馈标题5','反馈内容5','2023-03-05 17:51:25','工号5','教师姓名5',''),(116,'2023-03-05 09:51:25','6666666666','反馈标题6','反馈内容6','2023-03-05 17:51:25','工号6','教师姓名6',''),(117,'2023-03-05 09:51:25','7777777777','反馈标题7','反馈内容7','2023-03-05 17:51:25','工号7','教师姓名7',''),(118,'2023-03-05 09:51:25','8888888888','反馈标题8','反馈内容8','2023-03-05 17:51:25','工号8','教师姓名8','');
/*!40000 ALTER TABLE `jiaoyuanfankui` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `ketijiangjie`
--

DROP TABLE IF EXISTS `ketijiangjie`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ketijiangjie` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gonghao` varchar(200) DEFAULT NULL COMMENT '工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `xueli` varchar(200) DEFAULT NULL COMMENT '学历',
  `yuyueshijian` varchar(200) NOT NULL COMMENT '预约时间',
  `ketimingcheng` varchar(200) DEFAULT NULL COMMENT '课题名称',
  `jiangjieshipin` longtext COMMENT '讲解视频',
  `dizhi` varchar(200) DEFAULT NULL COMMENT '地址',
  `zhanghao` varchar(200) DEFAULT NULL COMMENT '账号',
  `xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
  `shoujihaoma` varchar(200) DEFAULT NULL COMMENT '手机号码',
  `neirong` longtext COMMENT '内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='课题讲解';
/*!40101 SET character_set_client = @saved_cs_client */;

七、代码参考

@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
   UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
   if(user==null || !user.getPassword().equals(password)) {
      return R.error("账号或密码不正确");
   }
   String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
   return R.ok().put("token", token);
}

	@Override
	public String generateToken(Long userid,String username, String tableName, String role) {
		TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
		String token = CommonUtil.getRandomString(32);
		Calendar cal = Calendar.getInstance();   
    	cal.setTime(new Date());   
    	cal.add(Calendar.HOUR_OF_DAY, 1);
		if(tokenEntity!=null) {
			tokenEntity.setToken(token);
			tokenEntity.setExpiratedtime(cal.getTime());
			this.updateById(tokenEntity);
		} else {
			this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
		}
		return token;
	}



/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

		//支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
	// 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态
	if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {
        	response.setStatus(HttpStatus.OK.value());
            return false;
        }
        
        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

四、源码获取

私信联系我即可~
大家点赞、收藏、关注、评论啦

你可能感兴趣的:(微信小程序,课程设计,java,spring,cloud,spring,boot,java-ee)