SpringBoot+Vue项目准妈妈孕期交流平台

2023-05-16

文末获取源码

开发语言:Java

开发工具:IDEA /Eclipse

数据库:MYSQL5.7

使用框架:springboot+vue

JDK版本:jdk1.8

前言介绍 

系统实现管理员:首页、个人中心、用户管理、早教知识管理、待产经验分享管理、怀孕常识管理、月子食谱管理、好物推荐管理、好物类型管理、圈子交流、系统管理,用户;首页、个人中心、待产经验分享管理、好物推荐管理,前台首页;首页、早教知识、待产经验分享、怀孕常识、月子食谱、好物推荐、圈子交流、个人中心、后台管理、专家交流等功能。从而达到对准妈妈孕期交流平台信息的高效管理。

准妈妈孕期交流平台结构图

 

数据表 

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

表1:daichanjingyanfenxiang

列名

数据类型

长度

约束

id

bigint

19

NOT NULL

addtime

varchar

2000

 NULL DEFAULT

biaoti

tinyint

2000

 NULL DEFAULT

neirong

varchar

2000

 NULL DEFAULT

fabushijian

varchar

2000

 NULL DEFAULT

fengmian

varchar

2000

 NULL DEFAULT

zhanghao

varchar

2000

 NULL DEFAULT

xingming

varchar

2000

 NULL DEFAULT

表2:haowutuijian

列名

数据类型

长度

约束

id

bigint

19

NOT NULL

addtime

varchar

2000

 NULL DEFAULT

wupinmingcheng

tinyint

2000

 NULL DEFAULT

leixing

varchar

2000

 NULL DEFAULT

neirong

varchar

2000

 NULL DEFAULT

fabushijian

varchar

2000

 NULL DEFAULT

fengmian

varchar

2000

 NULL DEFAULT

zhanghao

varchar

2000

 NULL DEFAULT

xingming

varchar

2000

 NULL DEFAULT

 

表3:huaiyunchangshi

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

255

NOT NULL

biaoti

varchar

255

NOT NULL

neirong

varchar

2

NOT NULL

fabushijian

varchar

2

NOT NULL

fengmian

varchar

2

NOT NULL

表4:yonghu

列名

数据类型

长度

约束

id

 int

9

NOT NULL

addtime

char

5

NOT NULL

zhanghao

char

5

NOT NULL

mima

char

5

NOT NULL

xingming

char

5

NOT NULL

xingbie

char

5

NOT NULL

shouji

char

5

NOT NULL

youxiang

char

5

NOT NULL

zhaopian

char

5

NOT NULL

beizhu

char

5

NOT NULL

 

前台首页功能模块

准妈妈孕期交流平台,在准妈妈孕期交流平台可以查看首页、早教知识、待产经验分享、怀孕常识、月子食谱、好物推荐、圈子交流、个人中心、后台管理、专家交流等内容,如图 

用户登录,通过登录填写账号、密码等信息进行登录,如图 

待产经验分享,在待产经验分享页面可以查看标题、发布时间、封面、账号、姓名等信息进行提交,如图

 

怀孕常识,在怀孕常识页面可以查看标题、发布时间、封面等信息进行提交如图

 

管理员功能模块

管理员登录,通过填写用户名、密码、角色进行登录,如图 

管理员登录进入准妈妈孕期交流平台可以查看首页、个人中心、用户管理、早教知识管理、待产经验分享管理、怀孕常识管理、月子食谱管理、好物推荐管理、好物类型管理、圈子交流、系统管理等信息

 

用户管理,在用户管理页面中可以通过填写账号、姓名、性别、手机、邮箱、照片、备注进行详情、修改,如图

 

还可以根据需要对早教知识管理进行详情,修改或删除等详细操作,如图 

 

待产经验分享管理,在待产经验分享管理页面中可以查看标题、发布时间、封面、账号、姓名等信息,并可根据需要对待产经验分享管理进行详情、修改或删除等操作,如图

 

怀孕常识管理,在怀孕常识管理页面中可以查看标题、发布时间、封面等信息,并可根据需要对怀孕常识管理进行详情、修改或删除等详细操作,如图

 

月子食谱管理,在月子食谱管理页面中可以查看标题、发布时间、封面等内容,并且根据需要对月子食谱管理进行详情、修改或删除等详细操作,如图

 

轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图

 

好物推荐管理,在好物推荐管理页面中可以查看物品名称、类型、发布时间、封面、账号、姓名等内容,并且根据需要对好物推荐管理进行详情、修改或删除等详细操作,如图

 

好物类型管理,在好物类型管理页面中可以查看好物类型等内容,并且根据需要对好物类型管理进行详情、修改或删除等详细操作,如图

 

用户功能模块

用户登录进入准妈妈孕期交流平台可以查看首页、个人中心、待产经验分享管理、好物推荐管理等内容 

好物推荐管理,在好物推荐管理页面中通过查看物品名称、类型、发布时间、封面、账号、姓名等信息还可以根据需要对好物推荐管理进行修改,如图

 

待产经验分享管理,在待产经验分享管理页面中通过查看标题、发布时间、封面、账号、姓名等信息还可以根据需要对待产经验分享管理进行修改,如图

 

部分核心代码:

/**
 * 待产经验分享
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-18 20:52:08
 */
@RestController
@RequestMapping("/daichanjingyanfenxiang")
public class DaichanjingyanfenxiangController {
    @Autowired
    private DaichanjingyanfenxiangService daichanjingyanfenxiangService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,DaichanjingyanfenxiangEntity daichanjingyanfenxiang,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			daichanjingyanfenxiang.setZhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<DaichanjingyanfenxiangEntity> ew = new EntityWrapper<DaichanjingyanfenxiangEntity>();
		PageUtils page = daichanjingyanfenxiangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, daichanjingyanfenxiang), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,DaichanjingyanfenxiangEntity daichanjingyanfenxiang, HttpServletRequest request){
        EntityWrapper<DaichanjingyanfenxiangEntity> ew = new EntityWrapper<DaichanjingyanfenxiangEntity>();
		PageUtils page = daichanjingyanfenxiangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, daichanjingyanfenxiang), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( DaichanjingyanfenxiangEntity daichanjingyanfenxiang){
       	EntityWrapper<DaichanjingyanfenxiangEntity> ew = new EntityWrapper<DaichanjingyanfenxiangEntity>();
      	ew.allEq(MPUtil.allEQMapPre( daichanjingyanfenxiang, "daichanjingyanfenxiang")); 
        return R.ok().put("data", daichanjingyanfenxiangService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(DaichanjingyanfenxiangEntity daichanjingyanfenxiang){
        EntityWrapper< DaichanjingyanfenxiangEntity> ew = new EntityWrapper< DaichanjingyanfenxiangEntity>();
 		ew.allEq(MPUtil.allEQMapPre( daichanjingyanfenxiang, "daichanjingyanfenxiang")); 
		DaichanjingyanfenxiangView daichanjingyanfenxiangView =  daichanjingyanfenxiangService.selectView(ew);
		return R.ok("查询待产经验分享成功").put("data", daichanjingyanfenxiangView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        DaichanjingyanfenxiangEntity daichanjingyanfenxiang = daichanjingyanfenxiangService.selectById(id);
        return R.ok().put("data", daichanjingyanfenxiang);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        DaichanjingyanfenxiangEntity daichanjingyanfenxiang = daichanjingyanfenxiangService.selectById(id);
        return R.ok().put("data", daichanjingyanfenxiang);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody DaichanjingyanfenxiangEntity daichanjingyanfenxiang, HttpServletRequest request){
    	daichanjingyanfenxiang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(daichanjingyanfenxiang);
        daichanjingyanfenxiangService.insert(daichanjingyanfenxiang);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody DaichanjingyanfenxiangEntity daichanjingyanfenxiang, HttpServletRequest request){
    	daichanjingyanfenxiang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(daichanjingyanfenxiang);
        daichanjingyanfenxiangService.insert(daichanjingyanfenxiang);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody DaichanjingyanfenxiangEntity daichanjingyanfenxiang, HttpServletRequest request){
        //ValidatorUtils.validateEntity(daichanjingyanfenxiang);
        daichanjingyanfenxiangService.updateById(daichanjingyanfenxiang);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        daichanjingyanfenxiangService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<DaichanjingyanfenxiangEntity> wrapper = new EntityWrapper<DaichanjingyanfenxiangEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = daichanjingyanfenxiangService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

 

/**
 * 权限(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;
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot+Vue项目准妈妈孕期交流平台 的相关文章

随机推荐

  • vm安装centos7系统后,使用ifconfig命令 ens33 没有IP地址

    这个问题目前发现俩种情况 1 没有配置ens33文件 2 配置了 ens33文件 xff0c 重启后又没有ip地址了 问题一解决 xff1a 安装好centos7后 xff0c 使用ifconfig命令 xff0c 发现 ens33 没有i
  • 操作系统:用c++模拟生产者消费者问题

    操作系统 xff1a 用c 43 43 模拟生产者消费者问题 一 实验目的 xff1a 通过实验模拟生产者与消费者之间的关系 xff0c 了解并掌握他们之间的关系及其原理 由此增加对进程同步的问题的了解 二 实验要求 xff1a 每个进程有
  • Java实现快排(图文讲解)

    文章目录 Java实现快速排序快速排序原理快速排序一次划分图文演示过程整个快速排序的过程具体Java代码实现简结快速排序的性能 Java实现快速排序 冲鸭 xff0c 装上涡轮增鸭 xff0c 开始学习快速排序算法吧 xff01 xff08
  • Repository ‘base‘: Error parsing config: Error parsing “gpgkey = ‘file“///etc/pki/rpm-gpg/RPM-GPG-KE

    Repository base Error parsing config Error parsing gpgkey 61 39 file etc pki rpm gpg RPM GPG KEY CentOS 7 34 No closing
  • Ranger之对资源策略配置的导入导出(五)

    导入和导出基于资源的策略 您可以在恢复操作期间或将策略从测试集群移动到生产集群时 xff0c 从Ranger Admin UI 用于集群弹性 备份 导出和导入策略 您可以导出 导入特定的策略子集 例如那些属于特定资源或用户 组的策略 xff
  • gcc编译时报错 fatal error: stdio.h: 没有那个文件 解决方法

    在linxu系统中 xff0c 编写c语言程序我们需要使用到GCC编译器 但是当我们成功安装后使用的时候 xff0c 编译程序 xff0c 例如执行编译命令 xff1a gcc hello c o hello out 结果报错了 xff0c
  • Aug.2019_Memory

    转眼间这半个月的时光已经过去了 xff0c 现在就像妈说的 xff0c 生活又要回归正常了 尽管我一直不愿意去承认说前半个月的时光是一种不正常的生活 xff0c 但有一点是我无法否认的 xff0c 那就是那些人和那些事所带给我的 想想最初自
  • 浅析大数据与经济学

    浅析大数据与经济学 摘 要 文章从大数据的发展现状分析入手 讨论了大数据对传统经济学带来的机遇与挑战 运用大数据经济学的概念 xff0c 分析了大数据经济学与信息经济学 信息技术等相关学科的关系 并将理论研究与实践应用实时地统一在一起 最后
  • 数据结构_队列应用-医院挂号看病(C语言)

    通过简单的实现医院挂号看病功能 xff0c 实现对数据结构队列的简单应用 本设计中医院挂号看病主要有病人挂号 查看就诊队列 就诊 下班等功能 span class token macro property span class token
  • Win10系统安装教程

    Win10安装教程 准备 xff1a 一个不小于8G的U盘 xff0c 一台可以上网的电脑 第一步 xff0c 打开浏览器 xff0c 搜索 Win10下载 找到微软官方的下载网址 xff0c 我这里有两个 xff0c 一个中文页面一个英文
  • 本地连接服务器mysql非常慢

    出现问题 经常使用navicat等软件连接服务器的mysql数据库很长时间 xff0c 才能连接上 xff0c 在项目中 xff0c 进行数据库操作 xff0c 也会很慢 原因分析 默认情况下 xff0c mysql会自动开启DNS反向解析
  • uniapp实现微信登录

    项目描述 使用uniapp框架编写微信小程序 xff0c 使用自己的后端 xff0c 实现微信登陆功能 登录流程 此处参考微信官网提供的 小程序登录流程时序 如下图 xff1a 图片来源 xff1a 微信官方API文档 所以登录的流程即 x
  • 程序设计大赛试题及答案

    Problem A 比赛须知 Description 小邯来参加邯郸学院大学生程序设计竞赛 由于这场比赛在线上举行 xff0c 有很多需要遵守的规则 有一条规则是 xff0c 为了避免对题目内容相关的提问被无关的提问淹没 xff0c 所有和
  • 使用uni-app框架中uni.chooseAddress()接口,获取不到用户收货地址

    错误描述 在我们使用uni app框架或微信原生开发微信小程序时 使用到uni chooseAddress OBJECT 接口获取用户收货地址时 无法跳转到收货地址页面获取 打印接口返回信息 显示 chooseAddress fail th
  • 软件工程-部分测试概念

    1 黑盒测试法 黑盒测试法也称功能测试 xff0c 这种方法将被测程序看成一个黑盒子 xff0c 测试人员完全不考虑程序的内部结构和处理过程 也就是说 xff0c 黑盒测试是在程序接口进行的测试 xff0c 它只检查程序功能是否按照需求规格
  • linux下安装libpcap

    1 安装GCC xff1a yum y install gcc c 43 43 2 安装flex xff1a yum y install flex 没有flex xff0c 直接安装libpcap会提示 34 Your operating
  • Spring练习题

    作业 简答题 Spring 是什么 xff1f 谈谈你对IOC的理解简述Spring IOC的启动过程说出bean工厂创建bean的三种方式 xff1f 在Spring中 xff0c bean的注入有几种方式 xff0c 各是什么 xff1
  • CentOS 7 安装XAMPP

    以下步骤如果包含Linux命令 xff0c 没有特别说明均在root下运行 1 首先安装CentOS xff0c 下载ISO的网址如下 xff0c 挑选最快的镜像站点下载 xff1a http isoredirect centos org
  • 实验二 使用CSS样式美化购物列表页面中的菜单导航以及商品展示

    一 实验目的 掌握CSS定义文字 背景图片 超链接控制 列表等常用属性的设置 二 实验要求 在购物列表页面中 xff0c 通过 lt ul gt 标签来实现菜单导航栏 xff0c 然后使用css样式控制菜单栏的位置和样式 xff0c 效果如
  • SpringBoot+Vue项目准妈妈孕期交流平台

    文末获取源码 开发语言 xff1a Java 开发工具 IDEA Eclipse 数据库 MYSQL5 7 使用框架 springboot 43 vue JDK版本 xff1a jdk1 8 前言介绍 系统实现管理员 xff1a 首页 个人