基于VUE的校园二手物品交易管理系统8拥有两种角色
管理员:闲置物品管理、订单管理、用户管理
用户:登录注册、购物车、发布闲置物品、评论、发货、收货地址管理等
基于VUE的校园二手物品交易管理系统是一个使用Vue.js框架构建的Web应用程序。它旨在提供一个方便、可靠的平台,以管理校园内的二手物品交易。该系统主要包括用户管理、物品管理、订单管理和评价管理等功能。
用户管理模块允许学生、教师和管理员注册、登录和修改个人信息。物品管理模块使学生可以发布和搜索物品,包括名称、描述和价格等信息。订单管理模块涵盖了订单生成、支付和发货等流程。评价管理模块则保障了交易的公正性和安全性。
该系统特点在于界面友好、操作简便和功能完善。它满足了校园内二手物品交易的需求,使学生更方便地进行二手物品交易,提高物品利用率并节约资源。同时,它也减少了浪费并保护了环境。
后端框架:springboot、Mybatis
前端技术:VUE
Spring Boot是由Pivotal团队提供的基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,使得开发者能快速搭建Spring项目。
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
# 使用对象关系映射,将对象和xml文件联系起来
# 指定MyBatis映射文件的路径
mybatis.typeAliasesPackage=com.second.hand.trading.server.model
mybatis.mapperLocations=classpath:mapper/*.xml
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/second_hand_trading?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
# multipart上传文件
spring.servlet.multipart.enabled=true
#单个文件上传最大值
spring.servlet.multipart.max-file-size=200MB
#单次上传最大值
spring.servlet.multipart.max-request-size=200MB
#文件存放目录
userFilePath=D:\\1\\backend\\src\\main\\resources\\image
# 后端url
baseUrl=http://localhost:8080
spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 中文乱码
server.servlet.encoding.charset=utf-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
package com.second.hand.trading.server.controller;
import com.second.hand.trading.server.enums.ErrorMsg;
import com.second.hand.trading.server.model.UserModel;
import com.second.hand.trading.server.service.UserService;
import com.second.hand.trading.server.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
/**
* 注册账号
* @param userModel
* @return
*/
@PostMapping("sign-in")
public ResultVo signIn(@RequestBody UserModel userModel) {
System.out.println(userModel);
userModel.setSignInTime(new Timestamp(System.currentTimeMillis()));
if (userModel.getAvatar() == null || "".equals(userModel.getAvatar())) {
userModel.setAvatar("https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png");
}
if (userService.userSignIn(userModel)) {
return ResultVo.success(userModel);
}
return ResultVo.fail(ErrorMsg.REGISTER_ERROR);
}
/**
* 登录,不安全,可伪造id,后期改进
*
* @param accountNumber
* @param userPassword
* @param response
* @return
*/
@RequestMapping("login")
public ResultVo login(@RequestParam("accountNumber") @NotEmpty @NotNull String accountNumber,
@RequestParam("userPassword") @NotEmpty @NotNull String userPassword,
HttpServletResponse response) {
UserModel userModel = userService.userLogin(accountNumber, userPassword);
System.out.println("登录:" + userModel);
System.out.println("===================================");
System.out.println(accountNumber + " " + userPassword);
System.out.println("===================================");
if (null == userModel) {
return ResultVo.fail(ErrorMsg.EMAIL_LOGIN_ERROR);
}
// 用户名或者密码为空
if(accountNumber.equals("") || userPassword.equals("")){
return ResultVo.fail(ErrorMsg.EMAIL_LOGIN_ERROR);
}
// 手机号长度不足11位
if(userModel.getAccountNumber().length() != 11){
return ResultVo.fail(ErrorMsg.EMAIL_LOGIN_ERROR);
}
if(userModel.getUserStatus()!=null&&userModel.getUserStatus().equals((byte) 1)){
return ResultVo.fail(ErrorMsg.ACCOUNT_Ban);
}
Cookie cookie = new Cookie("shUserId", String.valueOf(userModel.getId()));
// cookie.setMaxAge(60 * 60 * 24 * 30);
cookie.setPath("/");
cookie.setHttpOnly(false);
response.addCookie(cookie);
return ResultVo.success(userModel);
}
/**
* 退出登录
*
* @param shUserId
* @param response
* @return
*/
@RequestMapping("logout")
public ResultVo logout(@CookieValue("shUserId")
@NotNull(message = "登录异常 请重新登录")
@NotEmpty(message = "登录异常 请重新登录") String shUserId, HttpServletResponse response) {
Cookie cookie = new Cookie("shUserId", shUserId);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setHttpOnly(true);
response.addCookie(cookie);
return ResultVo.success();
}
/**
* 获取用户信息
*
* @param id
* @return
*/
@GetMapping("info")
public ResultVo getOneUser(@CookieValue("shUserId") @NotNull(message = "登录异常 请重新登录")
@NotEmpty(message = "登录异常 请重新登录")
String id) {
return ResultVo.success(userService.getUser(Long.valueOf(id)));
}
/**
* 修改用户公开信息
* @param id
* @param userModel
* @return
*/
@PostMapping("/info")
public ResultVo updateUserPublicInfo(@CookieValue("shUserId") @NotNull(message = "登录异常 请重新登录")
@NotEmpty(message = "登录异常 请重新登录")
String id, @RequestBody UserModel userModel) {
userModel.setId(Long.valueOf(id));
if (userService.updateUserInfo(userModel)) {
return ResultVo.success();
}
return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
}
/**
* 修改密码
* @param id
* @param oldPassword
* @param newPassword
* @return
*/
@GetMapping("/password")
public ResultVo updateUserPassword(@CookieValue("shUserId") @NotNull(message = "登录异常 请重新登录")
@NotEmpty(message = "登录异常 请重新登录") String id,
@RequestParam("oldPassword") @NotEmpty @NotNull String oldPassword,
@RequestParam("newPassword") @NotEmpty @NotNull String newPassword) {
if (userService.updatePassword(newPassword,oldPassword,Long.valueOf(id))) {
return ResultVo.success();
}
return ResultVo.fail(ErrorMsg.PASSWORD_RESET_ERROR);
}
}
基于VUE的校园二手物品交易管理系统8