Advertisement

基于springboot智慧养老平台源码和论文

阅读量:

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。论文的最后章节总结一下自己完成本论文和开发本项目的心得和总结。通过智慧养老平台将会使智慧养老各个方面的工作效率带来实质性的提升。

关键字: B/S模式 智慧养老 软件架构

基于springboot智慧养老平台源码和论文360

Abstract

First of all, the thesis clearly discusses the systematic research content at the very beginning. Secondly, the analysis of system requirements analysis, understand "what to do", including business analysis and business process analysis and use case analysis, further clear system requirements. Then, on the basis of understanding the requirements of the system, we need to further design the system, mainly including software architecture pattern, overall functional modules and database design. The software architecture of the project is B/S mode, and the overall functional modules are layered from top to bottom. Then is the realization of the system and code writing to achieve the function. The last chapter of the paper summarizes the experience and summary of the completion of this paper and the development of this project. Through the smart pension platform, the work efficiency of all aspects of smart pension will be substantially improved.

Key words: B/S mode intelligent pension software architecture

表4-1:紧急求助

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
laorenzhanghao varchar 200 老人账号
laorenxingming varchar 200 老人姓名
laorenshouji varchar 200 老人手机
weizhi varchar 200 位置
qiuzhushijian datetime 求助时间
sfsh varchar 200 是否审核
shhf longtext 4294967295 审核回复

表4-2:用户表

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
username varchar 100 用户名
password varchar 100 密码
role varchar 100 角色 管理员
addtime timestamp 新增时间 CURRENT_TIMESTAMP

表4-3:token表

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
userid bigint 用户id
username varchar 100 用户名
tablename varchar 100 表名
role varchar 100 角色
token varchar 200 密码
addtime timestamp 新增时间 CURRENT_TIMESTAMP
expiratedtime timestamp 过期时间 CURRENT_TIMESTAMP

表4-4:收藏表

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 用户id
refid bigint 收藏id
tablename varchar 200 表名
name varchar 200 收藏名称
picture varchar 200 收藏图片
type varchar 200 类型(1:收藏,21:赞,22:踩) 1
inteltype varchar 200 推荐类型

表4-5:商品类型

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
shangpinleixing varchar 200 商品类型

表4-6:商品进货

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
jinhuobianhao varchar 200 进货编号
shangpinmingcheng varchar 200 商品名称
shuliang int 数量
jinhuodanjia int 进货单价
jinhuozongjia varchar 200 进货总价
jinhuoshijian datetime 进货时间
beizhu varchar 200 备注

表4-7:商品购买

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
dingdanbianhao varchar 200 订单编号
shangpinmingcheng varchar 200 商品名称
shangpinfenlei varchar 200 商品分类
shuliang int 数量
danjia int 单价
zongjia varchar 200 总价
laorenzhanghao varchar 200 老人账号
laorenxingming varchar 200 老人姓名
laorenshouji varchar 200 老人手机
xiadanshijian datetime 下单时间
beizhu varchar 200 备注
sfsh varchar 200 是否审核
shhf longtext 4294967295 审核回复
ispay varchar 200 是否支付 未支付

表4-8:亲属

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
laorenzhanghao varchar 200 老人账号
qinshuxingming varchar 200 亲属姓名
xingbie varchar 200 性别
lianxifangshi varchar 200 联系方式
yulaorenguanxi varchar 200 与老人关系

表4-9:礼品发放

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
laorenzhanghao varchar 200 老人账号
laorenxingming varchar 200 老人姓名
laorenshouji varchar 200 老人手机
jifen varchar 200 积分
lipin varchar 200 礼品
lipintupian varchar 200 礼品图片
fafangshijian datetime 发放时间
fafangren varchar 200 发放人
fafangshiyou longtext 4294967295 发放事由

表4-10:每日健康

字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
laorenzhanghao varchar 200 老人账号
laorenxingming varchar 200 老人姓名
xingbie varchar 200 性别
nianling varchar 200 年龄
tiwen varchar 200 体温
xueya varchar 200 血压
xintiao varchar 200 心跳
jiankangbaogao varchar 200 健康报告
jianyi longtext 4294967295 建议

复制代码
 package com.controller;

    
  
    
 import java.io.File;
    
 import java.io.FileNotFoundException;
    
 import java.io.IOException;
    
 import java.text.SimpleDateFormat;
    
 import java.util.ArrayList;
    
 import java.util.Calendar;
    
 import java.util.Date;
    
 import java.util.HashMap;
    
 import java.util.List;
    
 import java.util.Map;
    
  
    
 import javax.servlet.http.HttpServletRequest;
    
  
    
 import org.apache.commons.lang3.StringUtils;
    
 import org.json.JSONObject;
    
 import org.springframework.beans.factory.annotation.Autowired;
    
 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 com.annotation.IgnoreAuth;
    
 import com.baidu.aip.face.AipFace;
    
 import com.baidu.aip.face.MatchRequest;
    
 import com.baidu.aip.util.Base64Util;
    
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
    
 import com.entity.ConfigEntity;
    
 import com.service.CommonService;
    
 import com.service.ConfigService;
    
 import com.utils.BaiduUtil;
    
 import com.utils.FileUtil;
    
 import com.utils.R;
    
 /** * 通用接口
    
  */
    
 @RestController
    
 public class CommonController{
    
 	@Autowired
    
 	private CommonService commonService;
    
  
    
     private static AipFace client = null;
    
     
    
     @Autowired
    
     private ConfigService configService;    
    
 	/** * 获取table表中的column列表(联动接口)
    
 	 * @param table
    
 	 * @param column
    
 	 * @return
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/option/{tableName}/{columnName}")
    
 	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
    
 		Map<String, Object> params = new HashMap<String, Object>();
    
 		params.put("table", tableName);
    
 		params.put("column", columnName);
    
 		if(StringUtils.isNotBlank(level)) {
    
 			params.put("level", level);
    
 		}
    
 		if(StringUtils.isNotBlank(parent)) {
    
 			params.put("parent", parent);
    
 		}
    
 		List<String> data = commonService.getOption(params);
    
 		return R.ok().put("data", data);
    
 	}
    
 	
    
 	/** * 根据table中的column获取单条记录
    
 	 * @param table
    
 	 * @param column
    
 	 * @return
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/follow/{tableName}/{columnName}")
    
 	public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
    
 		Map<String, Object> params = new HashMap<String, Object>();
    
 		params.put("table", tableName);
    
 		params.put("column", columnName);
    
 		params.put("columnValue", columnValue);
    
 		Map<String, Object> result = commonService.getFollowByOption(params);
    
 		return R.ok().put("data", result);
    
 	}
    
 	
    
 	/** * 修改table表的sfsh状态
    
 	 * @param table
    
 	 * @param map
    
 	 * @return
    
 	 */
    
 	@RequestMapping("/sh/{tableName}")
    
 	public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {
    
 		map.put("table", tableName);
    
 		commonService.sh(map);
    
 		return R.ok();
    
 	}
    
 	
    
 	/** * 获取需要提醒的记录数
    
 	 * @param tableName
    
 	 * @param columnName
    
 	 * @param type 1:数字 2:日期
    
 	 * @param map
    
 	 * @return
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/remind/{tableName}/{columnName}/{type}")
    
 	public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
    
 						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    
 		map.put("table", tableName);
    
 		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));
    
 			}
    
 		}
    
 		
    
 		int count = commonService.remindCount(map);
    
 		return R.ok().put("count", count);
    
 	}
    
 	
    
 	/** * 单列求和
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/cal/{tableName}/{columnName}")
    
 	public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
    
 		Map<String, Object> params = new HashMap<String, Object>();
    
 		params.put("table", tableName);
    
 		params.put("column", columnName);
    
 		Map<String, Object> result = commonService.selectCal(params);
    
 		return R.ok().put("data", result);
    
 	}
    
 	
    
 	/** * 分组统计
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/group/{tableName}/{columnName}")
    
 	public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
    
 		Map<String, Object> params = new HashMap<String, Object>();
    
 		params.put("table", tableName);
    
 		params.put("column", columnName);
    
 		List<Map<String, Object>> result = commonService.selectGroup(params);
    
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
 		for(Map<String, Object> m : result) {
    
 			for(String k : m.keySet()) {
    
 				if(m.get(k) instanceof Date) {
    
 					m.put(k, sdf.format((Date)m.get(k)));
    
 				}
    
 			}
    
 		}
    
 		return R.ok().put("data", result);
    
 	}
    
 	
    
 	/** * (按值统计)
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
    
 	public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
    
 		Map<String, Object> params = new HashMap<String, Object>();
    
 		params.put("table", tableName);
    
 		params.put("xColumn", xColumnName);
    
 		params.put("yColumn", yColumnName);
    
 		List<Map<String, Object>> result = commonService.selectValue(params);
    
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
 		for(Map<String, Object> m : result) {
    
 			for(String k : m.keySet()) {
    
 				if(m.get(k) instanceof Date) {
    
 					m.put(k, sdf.format((Date)m.get(k)));
    
 				}
    
 			}
    
 		}
    
 		return R.ok().put("data", result);
    
 	}
    
  
    
 	/** * (按值统计)时间统计类型
    
 	 */
    
 	@IgnoreAuth
    
 	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")
    
 	public R valueDay(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType) {
    
 		Map<String, Object> params = new HashMap<String, Object>();
    
 		params.put("table", tableName);
    
 		params.put("xColumn", xColumnName);
    
 		params.put("yColumn", yColumnName);
    
 		params.put("timeStatType", timeStatType);
    
 		List<Map<String, Object>> result = commonService.selectTimeStatValue(params);
    
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
 		for(Map<String, Object> m : result) {
    
 			for(String k : m.keySet()) {
    
 				if(m.get(k) instanceof Date) {
    
 					m.put(k, sdf.format((Date)m.get(k)));
    
 				}
    
 			}
    
 		}
    
 		return R.ok().put("data", result);
    
 	}
    
 	
    
     /** * 人脸比对
    
      * * @param face1 人脸1
    
      * @param face2 人脸2
    
      * @return
    
      */
    
     @RequestMapping("/matchFace")
    
     @IgnoreAuth
    
     public R matchFace(String face1, String face2,HttpServletRequest request) {
    
     if(client==null) {
    
         /*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/
    
         String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();
    
         String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();
    
         String token = BaiduUtil.getAuth(APIKey, SecretKey);
    
         if(token==null) {
    
             return R.error("请在配置管理中正确配置APIKey和SecretKey");
    
         }
    
         client = new AipFace(null, APIKey, SecretKey);
    
         client.setConnectionTimeoutInMillis(2000);
    
         client.setSocketTimeoutInMillis(60000);
    
     }
    
     JSONObject res = null;
    
     try {
    
         File path = new File(ResourceUtils.getURL("classpath:static").getPath());
    
         if(!path.exists()) {
    
             path = new File("");
    
         }
    
         File upload = new File(path.getAbsolutePath(),"/upload/");
    
         File file1 = new File(upload.getAbsolutePath()+"/"+face1);
    
         File file2 = new File(upload.getAbsolutePath()+"/"+face2);
    
         String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
    
         String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
    
         MatchRequest req1 = new MatchRequest(img1, "BASE64");
    
         MatchRequest req2 = new MatchRequest(img2, "BASE64");
    
         ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
    
         requests.add(req1);
    
         requests.add(req2);
    
         res = client.match(requests);
    
         System.out.println(res.get("result"));
    
     } catch (FileNotFoundException e) {
    
         e.printStackTrace();
    
         return R.error("文件不存在");
    
     } catch (IOException e) {
    
         e.printStackTrace();
    
     } 
    
     return R.ok().put("score", com.alibaba.fastjson.JSONObject.parse(res.getJSONObject("result").get("score").toString()));
    
     }
    
 }

全部评论 (0)

还没有任何评论哟~