IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot+Vue项目准妈妈孕期交流平台 -> 正文阅读

[Java知识库]SpringBoot+Vue项目准妈妈孕期交流平台

文末获取源码

开发语言: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;
    }
}

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:18:09  更:2022-06-18 23:19:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/31 10:52:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码