博主主页:一季春秋
博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题库、技术咨询。🍅文末获取联系🍅
精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
SpringBoot+Vue项目持续更新中
http://t.csdn.cn/1mgm8
目录
一、项目介绍
二、项目主要技术
三、平台设计
3.1 平台架构设计
3.2 平台整体设计
四、系统实现
4.1 系统前台实现
4.1.1 系统首页功能
4.1.2 二手商品功能
4.1.3 校园跑腿功能
4.1.4 购物车功能
4.1.5 我的订单功能
4.2 用户后台管理功能
4.2.1 后台管理功能
4.2.2 跑腿领单管理
4.3 管理员功能实现
4.3.1 管理员主页面
4.3.2 用户管理
4.3.3 二手商品管理
4.3.4 校园跑腿管理
4.3.5 完成订单管理
五、实现代码
5.1 二手商品关键代码
一、项目介绍
校园便利平台的开发就是为了解决二手商品管理的问题,平台开发是基于Java语言编写实现,用Mysql数据库搭建存储校园便利平台的数据。实现后的校园便利平台基于用户需求分析搭建的,并且会有二手商品、校园跑腿、通知公告、后台管理、购物车、个人中心等基本功能。不仅能满足人们对于校园便利的需求,同时具有广阔的发展前景。
二、项目主要技术
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
三、平台设计
3.1 平台架构设计
整个平台采用B/S结构,用户可在浏览器中完成和整个平台的交互。
用户在校园便利平台的浏览器界面进行的操作,浏览器操作传到服务器端,服务器端调用后台数据库,反馈给浏览器端。
平台架构如图所示:
3.2 平台整体设计
校园便利平台实现用户登录,查询信息,修改个人信息等。所有功能都通过与后台服务器的数据交互来完成的。
具体的软件功能结构图如图所示:
四、系统实现
4.1 系统前台实现
4.1.1 系统首页功能
打开系统的网址后,首先看到的就是首页界面。在这里能够看到校园便利平台的设计与实现的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图所示:
4.1.2 二手商品功能
在二手商品页面的输入栏中输入商品名称、品牌和价格进行查询,可以查看到二手商品详细信息;并进行添加到购物车、立即购买、评论或收藏操作;二手商品页面如图所示:
商品详细信息
4.1.3 校园跑腿功能
在校园跑腿页面的输入栏中输入账号和选择订单状况进行查询,可以查看到校园跑腿详细信息;并进行领单、评论或收藏操作;校园跑腿页面如图所示:
4.1.4 购物车功能
在购物车页面可以查看到商品名称、图片、价格、数量、总价等详细信息,并进行点击购买或删除操作;购物车页面如图所示:
4.1.5 我的订单功能
在我的订单页面可以对未支付、已支付、已发货、已完成、已退款和已取消订单进行详细操作;如图所示:
4.2 用户后台管理功能
4.2.1 后台管理功能
用户注册登录进入系统首页,点击后台管理可以对个人中心、校园跑腿管理、跑腿领单管理、完成订单管理、评价信息管理等进行操作。管理员主页面如图所示:
4.2.2 跑腿领单管理
在跑腿领单页面输入账号、领取账号和选择订单状态进行查询跑腿领单列表,并根据需要对跑腿领单详细信息进行详情或完成登记操作;如图所示
4.3 管理员功能实现
管理员登录,在登录页面正确输入用户名和密码后,点击登录进入操作系统进行操作;如图所示。
4.3.1 管理员主页面
主要功能包括对个人中心、用户管理、商品类型管理、二手商品管理、校园跑腿管理、跑腿领单管理、完成订单管理、评价信息管理、系统管理、订单管理等进行操作。管理员主页面如图5-9所示:
4.3.2 用户管理
在用户页面输入姓名和选择性别进行查询、新增或删除用户列表,并根据需要对用户详细信息进行详情、修改或删除操作;如图所示:
4.3.3 二手商品管理
在二手商品页面输入商品名称、品牌和价格进行查询、新增或删除二手商品列表,并根据需要对二手商品详细信息进行详情、修改、查看评论或删除操作;如图所示:
4.3.4 校园跑腿管理
在校园跑腿页面输入账号和选择订单状况进行查询、新增或删除校园跑腿列表,并根据需要对校园跑腿详细信息进行详情、领单、修改或删除操作;如图所示:
4.3.5 完成订单管理
在完成订单页面输入标题、账号和领取账号进行查询或删除完成订单列表,并根据需要对完成订单详细信息进行详情、评价、修改或删除操作;如图所示:
五、实现代码
5.1 二手商品关键代码
/**
* 二手商品
* 后端接口
* @author
* @email
* @date 2023-05-22 09:32:15
*/
@RestController
@RequestMapping("/ershoushangpin")
public class ErshoushangpinController {
@Autowired
private ErshoushangpinService ershoushangpinService;
@Autowired
private StoreupService storeupService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ErshoushangpinEntity ershoushangpin,
@RequestParam(required = false) Double pricestart,
@RequestParam(required = false) Double priceend,
HttpServletRequest request){
EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
if(pricestart!=null) ew.ge("price", pricestart);
if(priceend!=null) ew.le("price", priceend);
PageUtils page = ershoushangpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ershoushangpin), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ErshoushangpinEntity ershoushangpin,
@RequestParam(required = false) Double pricestart,
@RequestParam(required = false) Double priceend,
HttpServletRequest request){
EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
if(pricestart!=null) ew.ge("price", pricestart);
if(priceend!=null) ew.le("price", priceend);
PageUtils page = ershoushangpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ershoushangpin), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ErshoushangpinEntity ershoushangpin){
EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
ew.allEq(MPUtil.allEQMapPre( ershoushangpin, "ershoushangpin"));
return R.ok().put("data", ershoushangpinService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ErshoushangpinEntity ershoushangpin){
EntityWrapper< ErshoushangpinEntity> ew = new EntityWrapper< ErshoushangpinEntity>();
ew.allEq(MPUtil.allEQMapPre( ershoushangpin, "ershoushangpin"));
ErshoushangpinView ershoushangpinView = ershoushangpinService.selectView(ew);
return R.ok("查询二手商品成功").put("data", ershoushangpinView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ErshoushangpinEntity ershoushangpin = ershoushangpinService.selectById(id);
ershoushangpin.setClicknum(ershoushangpin.getClicknum()+1);
ershoushangpin.setClicktime(new Date());
ershoushangpinService.updateById(ershoushangpin);
return R.ok().put("data", ershoushangpin);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ErshoushangpinEntity ershoushangpin = ershoushangpinService.selectById(id);
ershoushangpin.setClicknum(ershoushangpin.getClicknum()+1);
ershoushangpin.setClicktime(new Date());
ershoushangpinService.updateById(ershoushangpin);
return R.ok().put("data", ershoushangpin);
}
/**
* 赞或踩
*/
@RequestMapping("/thumbsup/{id}")
public R vote(@PathVariable("id") String id,String type){
ErshoushangpinEntity ershoushangpin = ershoushangpinService.selectById(id);
if(type.equals("1")) {
ershoushangpin.setThumbsupnum(ershoushangpin.getThumbsupnum()+1);
} else {
ershoushangpin.setCrazilynum(ershoushangpin.getCrazilynum()+1);
}
ershoushangpinService.updateById(ershoushangpin);
return R.ok("投票成功");
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ErshoushangpinEntity ershoushangpin, HttpServletRequest request){
ershoushangpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(ershoushangpin);
ershoushangpinService.insert(ershoushangpin);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ErshoushangpinEntity ershoushangpin, HttpServletRequest request){
ershoushangpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(ershoushangpin);
ershoushangpinService.insert(ershoushangpin);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody ErshoushangpinEntity ershoushangpin, HttpServletRequest request){
//ValidatorUtils.validateEntity(ershoushangpin);
ershoushangpinService.updateById(ershoushangpin);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
ershoushangpinService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 前端智能排序
*/
@IgnoreAuth
@RequestMapping("/autoSort")
public R autoSort(@RequestParam Map<String, Object> params,ErshoushangpinEntity ershoushangpin, HttpServletRequest request,String pre){
EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
Map<String, Object> newMap = new HashMap<String, Object>();
Map<String, Object> param = new HashMap<String, Object>();
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
String newKey = entry.getKey();
if (pre.endsWith(".")) {
newMap.put(pre + newKey, entry.getValue());
} else if (StringUtils.isEmpty(pre)) {
newMap.put(newKey, entry.getValue());
} else {
newMap.put(pre + "." + newKey, entry.getValue());
}
}
params.put("sort", "clicknum");
params.put("order", "desc");
PageUtils page = ershoushangpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ershoushangpin), params), params));
return R.ok().put("data", page);
}
}