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

文末获取源码

开发语言:Java

开发工具:IDEA /Eclipse

数据库:MYSQL5.7

使用框架:springboot+vue

JDK版本:jdk1.8

前言介绍 

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

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

SpringBoot+Vue项目准妈妈孕期交流平台_第1张图片 

数据表 

将数据库概念设计的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

 

前台首页功能模块

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

SpringBoot+Vue项目准妈妈孕期交流平台_第2张图片

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

SpringBoot+Vue项目准妈妈孕期交流平台_第3张图片

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

SpringBoot+Vue项目准妈妈孕期交流平台_第4张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第5张图片 

管理员功能模块

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

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

SpringBoot+Vue项目准妈妈孕期交流平台_第6张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第7张图片 

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

 SpringBoot+Vue项目准妈妈孕期交流平台_第8张图片

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

SpringBoot+Vue项目准妈妈孕期交流平台_第9张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第10张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第11张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第12张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第13张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第14张图片 

用户功能模块

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

SpringBoot+Vue项目准妈妈孕期交流平台_第15张图片

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

SpringBoot+Vue项目准妈妈孕期交流平台_第16张图片 

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

SpringBoot+Vue项目准妈妈孕期交流平台_第17张图片 

部分核心代码:

/**
 * 待产经验分享
 * 后端接口
 * @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 params,DaichanjingyanfenxiangEntity daichanjingyanfenxiang,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			daichanjingyanfenxiang.setZhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper ew = new EntityWrapper();
		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 params,DaichanjingyanfenxiangEntity daichanjingyanfenxiang, HttpServletRequest request){
        EntityWrapper ew = new EntityWrapper();
		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 ew = new EntityWrapper();
      	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 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 wrapper = new EntityWrapper();
		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;
    }
}

 

你可能感兴趣的:(毕业设计,课程设计,spring,boot,java,前端,后端,vue)