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;
    }
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringBoot Vue项目是一种使用Vue.js作为前端框架,SpringBoot作为后端框架的项目开发方式。在这种项目中,前端使用Vue.js来处理用户界面和交互逻辑,后端使用SpringBoot来处理业务逻辑和数据传输。通过这样的方式,前端后端可以相对独立地进行开发和部署,并通过API进行数据传输。 在具体实现上,可以通过以下步骤来创建一个SpringBoot Vue项目: 1. 创建一个SpringBoot项目:可以使用Spring Initializr来创建一个基本的SpringBoot项目,选择所需的依赖和配置。 2. 创建前端项目:可以使用Vue CLI来创建一个基本的Vue.js项目,配置相关的开发环境和依赖。 3. 配置前后端通信:在前端项目中,可以使用axios等工具来与后端进行数据交互,发送HTTP请求获取数据。在后端项目中,可以通过编写RESTful API来提供数据给前端。 4. 开发前后端功能:根据项目需求,前端可以开发用户界面、表单验证、数据展示等功能,后端可以开发业务逻辑、数据库操作、数据处理等功能。 5. 打包和部署:前端项目可以通过npm run build命令将代码打包成静态文件,然后将这些文件放入后端项目的静态资源目录中。后端项目可以通过打包成可执行的JAR文件或者WAR文件来部署到服务器上。 通过以上步骤,就可以创建一个基于SpringBootVue.js的项目,并实现前后端的协同开发和交互。希望这些信息对你有所帮助。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [教你如何制作vue+springboot项目](https://blog.csdn.net/xc9711/article/details/121725216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一季春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值