基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

 博主介绍:专注于Java技术领域和毕业项目实战

文末获取源码联系

 精彩专栏推荐订阅 不然下次找不到哟

Java项目精品实战案例(300套)

目录

一、效果演示

二、前言介绍

三、主要技术

四、系统设计(部分)

4.1、主要功能模块设计         

4.2、前台首页用例设计

五、运行截图

5.1、前台首页功能模块

5.1.1、用户注册

5.1.2、登录

5.1.3、个人中心

5.1.4、网站公告

5.1.5、旧物信息

5.2、用户功能模块

5.2.1、用户首页

5.2.2、置换交易管理

5.3、管理员功能模块

5.3.1、首页

5.3.2、个人中心

5.3.3、用户管理

5.3.4、卖家管理

5.3.5、旧物信息管理

5.3.6、旧物信息管理

5.3.7、系统管理

5.4、卖家功能模块

5.4.1、首页

5.4.2、个人中心

5.4.3、旧物信息管理

5.4.4、置换交易管理

六、数据库设计(部分)

七、代码参考

八、源码获取


一、效果演示

基于SpringBoot+vue旧物置换网站演示视频

二、前言介绍

随着时代在一步一步在进步,旧物也成人们的烦恼,许多平台网站都在推广自已的产品像天猫、咸鱼、京东。所以开发出一套关于旧物置换网站成为必需。旧物置换网站主要是借助计算机,通过对用户进行管理。为减少管理员的工作,同时也方便广大用户对个人所需旧物置换的及时查询以及管理。

旧物置换网站的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发 环境。该旧物置换网站包括管理员、用户、卖家。其主要功能包括管理员:首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等,卖家后台:首页、个人中心、旧物类型管理、旧物信息管理、置换交易管理。前台首页;首页、旧物信息、网站公告、个人中心、后台管理等,用户后台:首页、个人中心、旧物信息管理、置换交易管理等功能。

三、主要技术

技术名 作用
SpringBoot 后端框架
Vue 前端框架
MySQL 数据库

四、系统设计(部分)

4.1、主要功能模块设计         

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第1张图片

4.2、前台首页用例设计

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第2张图片

五、运行截图

5.1、前台首页功能模块

旧物置换网站,在系统首页可以查看首页、旧物信息、网站公告、个人中心、后台管理等内容,如图5-1所示。

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第3张图片

图5-1系统功能界面图

5.1.1、用户注册

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第4张图片

图5-2用户注册界面图

5.1.2、登录

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第5张图片

图5-3登录界面图

5.1.3、个人中心

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第6张图片

图5-4个人中心界面图

5.1.4、网站公告

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第7张图片

图5-5网站公告界面图

5.1.5、旧物信息

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第8张图片

图5-6旧物信息界面图

5.2、用户功能模块

用户登录,通过填写账号、密码、角色等信息,输入完成后选择登录即可进入旧物置换系统。程序效果图如下图5-7所示:

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第9张图片

图5-7用户登录界面

5.2.1、用户首页

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第10张图片

图5-8首页界面图

5.2.2、置换交易管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第11张图片

图5-9置换交易界面图

5.3、管理员功能模块

管理员登录,通过填写账号、密码、角色等信息,输入完成后选择登录即可进入旧物置换系统。程序效果图如下图5-10所示:

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第12张图片

图5-10管理员登录界面

5.3.1、首页

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第13张图片

图5-11管理员首页界面

5.3.2、个人中心

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第14张图片

图5-12密码修改界面

5.3.3、用户管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第15张图片

图5-13用户管理界面

5.3.4、卖家管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第16张图片

图5-14卖家管理界面

5.3.5、旧物信息管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第17张图片

图5-14卖家管理界面

5.3.6、旧物信息管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第18张图片

图5-16置换交易管理界面

5.3.7、系统管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第19张图片

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第20张图片

图5-17系统管理界面

5.4、卖家功能模块

卖家注册、登录,卖家通过填写卖家名、密码、姓名、性别、手机、邮箱,信息无误后进行填写卖家名、密码、角色等信息,输入完成后选择登录即可进入旧物置换系统,如图5-18所示。

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第21张图片

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第22张图片

图5-18卖家注册、登录界面图

5.4.1、首页

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第23张图片

图5-19首页功能界面图

5.4.2、个人中心

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第24张图片

图5-20个人信息界面图

5.4.3、旧物信息管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第25张图片

图5-21旧物信息界面图

5.4.4、置换交易管理

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第26张图片

图5-22置换交易界面图

六、数据库设计(部分)

概念设计主要是通过数据库的概念结构和模式进行建立数据库嗯逻辑结构,然后利用数据库的DBMS进行完成,它不需要计算机系统的支持。通过系统的整体来看,主要是对数据库进行管理、整理、更新等操作。数据库的功能是非常强大的,每个系统的开发肯定离不开数据库,通过数据库可以看得出整个系统的质量和效率,根据以上的系统分析,对系统中的主要实体进行规划。以下是几个关键实体的实体关系图:

(1) 用户管理:用户名、密码、姓名、性别、头像、手机、邮箱、图片实体E-R图如图4-2所示:

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第27张图片

图4-2用户信息实体属性图

 (2) 卖家管理:卖家名、密码、姓名、性别、手机、邮箱、照片实体E-R图如图4-3所示:

基于Java+SpringBoot+vue的旧物置换网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】_第28张图片

 图4-3卖家信息实体属性图

七、代码参考

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 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.baomidou.mybatisplus.mapper.Wrapper;
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;
	
	@Autowired
	private ConfigService configService;
	
	private static AipFace client = null;
	
	private static String BAIDU_DITU_AK = null;
	
	@RequestMapping("/location")
	public R location(String lng,String lat) {
		if(BAIDU_DITU_AK==null) {
			BAIDU_DITU_AK = configService.selectOne(new EntityWrapper().eq("name", "baidu_ditu_ak")).getValue();
			if(BAIDU_DITU_AK==null) {
				return R.error("请在配置管理中正确配置baidu_ditu_ak");
			}
		}
		Map map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
		return R.ok().put("data", map);
	}
	
	/**
	 * 人脸比对
	 * 
	 * @param face1 人脸1
	 * @param face2 人脸2
	 * @return
	 */
	@RequestMapping("/matchFace")
	public R matchFace(String face1, String face2) {
		if(client==null) {
			/*String AppID = configService.selectOne(new EntityWrapper().eq("name", "AppID")).getValue();*/
			String APIKey = configService.selectOne(new EntityWrapper().eq("name", "APIKey")).getValue();
			String SecretKey = configService.selectOne(new EntityWrapper().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 file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);
			File file2 = new File(ResourceUtils.getFile("classpath:static/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 requests = new ArrayList();
			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("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
	}
    
	/**
	 * 获取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 params = new HashMap();
		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 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 params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		params.put("columnValue", columnValue);
		Map 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 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 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 params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		Map 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 params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		List> result = commonService.selectGroup(params);
		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 params = new HashMap();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		List> result = commonService.selectValue(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map 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);
	}
	
}

八、源码获取

大家点赞、收藏、关注、评论啦 、查看文章结尾获取联系方式

精彩专栏推荐订阅:下方专栏

Java项目精品实战案例(300套)

私信我即可打包获取200多个项目源码+论文+演示视频~

​​​

你可能感兴趣的:(java毕业设计,java,spring,boot,vue.js,大学生项目实战,java毕业设计项目实战参考)