基于springboot的校园便利跑腿二手交易平台【源码论文】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

4 平台设计

4.1 平台架构设计

整个平台采用B/S结构,用户可在浏览器中完成和整个平台的交互。

用户在校园便利平台的浏览器界面进行的操作,浏览器操作传到服务器端,服务器端调用后台数据库,反馈给浏览器端。

平台架构如图4-1所示:

图4-1 平台架构图

4.2 平台整体设计

校园便利平台实现用户登录,查询信息,修改个人信息等。所有功能都通过与后台服务器的数据交互来完成的。

具体的软件功能结构图如图4-2所示:

图4-2 平台功能结构图

4.3 平台数据库设计

对于校园便利平台而言,数据库中最核心的数据就是校园便利信息,并且有许多其他关联数据都储存于数据库中。随着时间推移,将发布大量信息于本平台中,届时数据库中也将蕴藏海量数据。一个优秀的数据库设计方案能在保证平台能够高效处理大量数据的同时保证平台的安全性。因此,在校园便利平台设计方案中将数据库的设计摆在重要位置,将数据库设计视为平台设计的重要内容。

4.3.1 E-R模型设计

在校园便利平台的数据库设计中,平台E-R模型的设计可以展示数据库中各种实体信息和他们之间的关系,将校园便利平台的E-R模型研究好后,数据库中数据表的建立也会比较容易。

根据功能需求来对平台的e-r图来进行分解得到几种实体,以下为部分实体—关系模型。

4.3.2表设计

Mysql将数据保存在不同的表中,极大地提高了数据调取灵活性。校园便利平台的具体表结构如以下表所示:

表4-1:评价信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

pingfen

varchar

200

评分

pingjia

longtext

4294967295

评价

zhanghao

varchar

200

账号

lingquzhanghao

varchar

200

领取账号

lingquren

varchar

200

领取人

lianxidianhua

varchar

200

联系电话

pingjiashijian

datetime

评价时间

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

表4-2:校园跑腿

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

tupian

longtext

4294967295

图片

quhuodidian

varchar

200

取货地点

shoujiandidian

varchar

200

收件地点

paotuifeiyong

int

跑腿费用

dingdanzhuangkuang

varchar

200

订单状况

zhanghao

varchar

200

账号

shouji

varchar

200

手机

paotuirenwu

longtext

4294967295

跑腿任务

feiyongshuoming

varchar

200

费用说明

表4-3:跑腿领单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

paotuifeiyong

int

费用

dingdanzhuangtai

varchar

200

订单状态

shouji

varchar

200

手机

zhanghao

varchar

200

账号

lingquzhanghao

varchar

200

领取账号

lingquren

varchar

200

领取人

lianxidianhua

varchar

200

联系电话

lingqushijian

datetime

领取时间

yusongdashijian

datetime

预送达时间

表4-4:订单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

orderid

varchar

200

订单编号

tablename

varchar

200

商品表名

ershoushangpin

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

longtext

4294967295

商品图片

buynumber

int

购买数量

price

float

价格

0

discountprice

float

折扣价格

0

total

float

总价格

0

discounttotal

float

折扣总价格

0

type

int

支付类型

1

status

varchar

200

状态

address

varchar

200

地址

tel

varchar

200

电话

consignee

varchar

200

收货人

remark

varchar

200

备注

logistics

longtext

4294967295

物流

表4-5:通知公告

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表4-6:二手商品

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinbianhao

varchar

200

商品编号

shangpinmingcheng

varchar

200

商品名称

shangpinleixing

varchar

200

商品类型

pinpai

varchar

200

品牌

guige

varchar

200

规格

yuanjia

float

原价

tupian

longtext

4294967295

图片

shangpinjieshao

longtext

4294967295

商品介绍

onelimittimes

int

单限

alllimittimes

int

库存

thumbsupnum

int

0

crazilynum

int

0

clicktime

datetime

最近点击时间

clicknum

int

点击次数

0

price

float

价格

表4-7:二手商品评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

longtext

4294967295

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-8:完成订单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

paotuifeiyong

int

跑腿费用

zhanghao

varchar

200

账号

lingquzhanghao

varchar

200

领取账号

lingquren

varchar

200

领取人

lianxidianhua

varchar

200

联系电话

wanchengshijian

datetime

完成时间

ispay

varchar

200

是否支付

未支付

表4-9:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-10:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-11:购物车表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tablename

varchar

200

商品表名

ershoushangpin

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

longtext

4294967295

图片

buynumber

int

购买数量

price

float

单价

discountprice

float

会员价

表4-12: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-13:地址

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

address

varchar

200

地址

name

varchar

200

收货人

phone

varchar

200

电话

isdefault

varchar

200

是否默认地址[是/否]

表4-14:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

4294967295

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

表4-15:商品类型

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinleixing

varchar

200

商品类型

表4-16:用户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhanghao

varchar

200

账号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

shouji

varchar

200

手机

touxiang

longtext

4294967295

头像

money

float

余额

0

5系统实现

5.1系统前台实现

5.1.1系统首页功能

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到校园便利平台的设计与实现的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示:

图5-1 系统首页界面

二手商品:在二手商品页面的输入栏中输入商品名称、品牌和价格进行查询,可以查看到二手商品详细信息;并进行添加到购物车、立即购买、评论或收藏操作;二手商品页面如图5-2所示:

图5-2二手商品详细页面

校园跑腿:在校园跑腿页面的输入栏中输入账号和选择订单状况进行查询,可以查看到校园跑腿详细信息;并进行领单、评论或收藏操作;校园跑腿页面如图5-3所示:

图5-3校园跑腿详细页面

购物车:在购物车页面可以查看到商品名称、图片、价格、数量、总价等详细信息,并进行点击购买或删除操作;购物车页面如图5-4所示:

图5-4购物车详细页面

个人中心:在个人中心页面可以对个人中心、我的订单、我的地址和我的收藏进行详细操作;

我的订单:在我的订单页面可以对未支付、已支付、已发货、已完成、已退款和已取消订单进行详细操作;如图5-5所示:

图5-5我的订单界面

代码实现

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<UserEntity>().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<UserEntity>().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<UserEntity>().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<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	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<UserEntity> ew = new EntityWrapper<UserEntity>();
      	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<UserEntity>().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);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中

👇下方有我的微信名片👇

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值