Computer Graduation Project - springboot’s smart elderly care platform

Development language: Java
Java development tool: JDK1.8
Back-end framework: springboot
Front-end: html, Vue
Database: MySQL5.7 combined with Navicat management tool
Server: Tomcat8.5
Development software: IDEA / Eclipse
Whether it is a Maven project: Yes


Table of contents

1. Project Introduction

2. System design

2.1 Software function module design

2.2 Concept model design

3. System project screenshots

3.1 Front page

3.2Backend management

4. Core code

4.1 Login related

4.2 File upload

4.3 Packaging


1. Project Introduction

First of all, the paper clearly discusses the systematic research content at the beginning. Secondly, analyze the system requirements analysis and figure out "what to do". The analysis includes business analysis, business process analysis and use case analysis to further clarify the system requirements. Then, based on understanding the requirements of the system, it is necessary to further design the system, mainly including software architecture model, overall functional module, and database design. The software architecture of this project chooses the B/S mode, and the overall functional modules use top-down hierarchical thinking. Then there is the implementation of the system and coding to implement the functions. The last chapter of the paper summarizes my experience and summary of completing this paper and developing this project. Through the smart elderly care platform, the work efficiency of all aspects of smart elderly care will be substantially improved.


2. System design

2.1 Software function module design

The overall functions of the website are as follows:

2.2 Concept model design

The conceptual model is a description of the things that cause problems in reality. The ER diagram is a diagram composed of entities and their relationships. The E-R diagram can clearly describe the mutual relationships between entities involved in the system.


3. System project screenshots

3.1 Front page

Smart elderly care platform, you can view the homepage, activity information, convenience stores, labor, service items, personal center, backend management and other content on the system homepage, and perform detailed operations;

Activity information. On the activity information page, you can view the activity title, activity category, start time, end time, activity location and other contents for collection and other operations.

Convenience stores. On the convenience store page, you can view the product name, production location, quantity, unit price, product classification, etc. for details or collection operations.

Service items. On the service item page, you can view the project name, project type, project price, labor name, etc. for details or collection.

Personal center, on the personal center page, you can update information and other operations by filling in the elder's account number, password, elder's name, gender, age, picture, elder's mobile phone, points, elder's address, etc., and you can perform corresponding operations based on my collection.

3.2Backend management

Before entering the system, the administrator and the elderly fill in the user name and password as required on the login page, select roles and other information, and click Login to perform the login operation.


After the administrator logs in to the system, he can manage the homepage, personal center, elderly management, relative management, daily health management, past medical history management, activity classification management, activity information management, commodity type management, convenience store management, commodity purchase management, and labor management. , service type management, service project management, service purchase management, emergency help management, gift distribution management, points increase management, system management and other functions for corresponding operation management

Elderly management, on the elderly management page, you can perform operations such as details, gift distribution, points addition, modification or deletion of the index, elderly account, elderly name, gender, age, photo, elderly mobile phone, points, elderly address, etc.

Relatives management. On the relative management page, you can detail, modify or delete the index, elderly account, relative name, gender, contact information, relationship with the elderly, etc.

Daily health management. On the daily health management page, you can detail, modify or delete the index, elderly account, elderly name, gender, age, body temperature, blood pressure, heartbeat, health report, adding time, etc.

Past medical history management. On the past medical history management page, you can detail, modify or delete the index, elderly account, elderly name, gender, age, registration time and other contents.

Event information management. In the event information management page, you can perform operations such as detailing, modifying or deleting the index, event title, cover, event category, start time, end time, event location, etc.

Convenience store management. In the convenience store management page, you can perform operations such as details, purchase, modification or deletion of index, product number, product name, place of birth, quantity, unit price, product classification, product pictures and other contents.

Product purchase management. On the product purchase management page, you can perform detailed operations, modify or delete the index, purchase number, product name, quantity, purchase unit price, total purchase price, purchase time, remarks, etc.

Labor management. On the labor management page, you can perform operations such as details, modifications, comments, or deletions on the index, labor name, gender, age, pictures, working age, expertise, etc.

Service purchase management. In the service purchase management page, you can manage the index, order number, project name, service type, project price, worker's name, elder's name, elder's mobile phone, elder's address, appointment time, order time, remarks, and whether to pay. , review reply, review status, review and other content to perform operations such as details, modification or deletion.

Gift distribution management. In the gift distribution management page, you can perform detailed operations, modify or delete the index, elderly account, elderly name, elderly mobile phone, points, gifts, gift pictures, distribution time, issuer and other contents.

Points increase management. In the points increase management page, you can detail, modify or delete the index, senior account, senior name, points, increase time and other contents.


4. Core code

4.1 Login related



    package com.controller;


    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.annotation.IgnoreAuth;
    import com.baomidou.mybatisplus.mapper.EntityWrapper;
    import com.entity.TokenEntity;
    import com.entity.UserEntity;
    import com.service.TokenService;
    import com.service.UserService;
    import com.utils.CommonUtil;
    import com.utils.MD5Util;
    import com.utils.MPUtil;
    import com.utils.PageUtils;
    import com.utils.R;
    import com.utils.ValidatorUtils;
    
    /**
     * 登录相关
     */
    @RequestMapping("users")
    @RestController
    public class UserController{
    
    
    	
    	@Autowired
    	private UserService userService;
    	
    	@Autowired
    	private TokenService tokenService;
    
    	/**
    	 * 登录
    	 */
    	@IgnoreAuth
    	@PostMapping(value = "/login")
    	public R login(String username, String password, String captcha, HttpServletRequest request) {
    
    
    		UserEntity user = userService.selectOne(new EntityWrapper().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);
    	}
    	
    	/**
    	 * 注册
    	 */
    	@IgnoreAuth
    	@PostMapping(value = "/register")
    	public R register(@RequestBody UserEntity user){
    
    
    //    	ValidatorUtils.validateEntity(user);
        	if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    
    
        		return R.error("用户已存在");
        	}
            userService.insert(user);
            return R.ok();
        }
    
    	/**
    	 * 退出
    	 */
    	@GetMapping(value = "logout")
    	public R logout(HttpServletRequest request) {
    
    
    		request.getSession().invalidate();
    		return R.ok("退出成功");
    	}
    	
    	/**
         * 密码重置
         */
        @IgnoreAuth
    	@RequestMapping(value = "/resetPass")
        public R resetPass(String username, HttpServletRequest request){
    
    
        	UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
        	if(user==null) {
    
    
        		return R.error("账号不存在");
        	}
        	user.setPassword("123456");
            userService.update(user,null);
            return R.ok("密码已重置为:123456");
        }
    	
    	/**
         * 列表
         */
        @RequestMapping("/page")
        public R page(@RequestParam Map params,UserEntity user){
    
    
            EntityWrapper ew = new EntityWrapper();
        	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
            return R.ok().put("data", page);
        }
    
    	/**
         * 列表
         */
        @RequestMapping("/list")
        public R list( UserEntity user){
    
    
           	EntityWrapper ew = new EntityWrapper();
          	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
            return R.ok().put("data", userService.selectListView(ew));
        }
    
        /**
         * 信息
         */
        @RequestMapping("/info/{id}")
        public R info(@PathVariable("id") String id){
    
    
            UserEntity user = userService.selectById(id);
            return R.ok().put("data", user);
        }
        
        /**
         * 获取用户的session用户信息
         */
        @RequestMapping("/session")
        public R getCurrUser(HttpServletRequest request){
    
    
        	Long id = (Long)request.getSession().getAttribute("userId");
            UserEntity user = userService.selectById(id);
            return R.ok().put("data", user);
        }
    
        /**
         * 保存
         */
        @PostMapping("/save")
        public R save(@RequestBody UserEntity user){
    
    
    //    	ValidatorUtils.validateEntity(user);
        	if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    
    
        		return R.error("用户已存在");
        	}
            userService.insert(user);
            return R.ok();
        }
    
        /**
         * 修改
         */
        @RequestMapping("/update")
        public R update(@RequestBody UserEntity user){
    
    
    //        ValidatorUtils.validateEntity(user);
            userService.updateById(user);//全部更新
            return R.ok();
        }
    
        /**
         * 删除
         */
        @RequestMapping("/delete")
        public R delete(@RequestBody Long[] ids){
    
    
            userService.deleteBatchIds(Arrays.asList(ids));
            return R.ok();
        }
    }



4.2 File upload

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({
    
    "unchecked","rawtypes"})
public class FileController{
    
    
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
    
    
		if (file.isEmpty()) {
    
    
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
    
    
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
    
    
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
    
    
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper().eq("name", "faceFile"));
			if(configEntity==null) {
    
    
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
    
    
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity download(@RequestParam String fileName) {
    
    
		try {
    
    
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
    
    
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
    
    
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
    
    
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
    
    
			e.printStackTrace();
		}
		return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

4.3 Packaging

package com.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 */
public class R extends HashMap {
    
    
	private static final long serialVersionUID = 1L;
	
	public R() {
    
    
		put("code", 0);
	}
	
	public static R error() {
    
    
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
    
    
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
    
    
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
    
    
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map map) {
    
    
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
    
    
		return new R();
	}

	public R put(String key, Object value) {
    
    
		super.put(key, value);
		return this;
	}
}

Project acquisition:

Guess you like

Origin blog.csdn.net/WEB_DC/article/details/134919015