基于springboot+vue+mysql公益旧物捐赠系统(源码+参考文档+定制)
博主介绍:
✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。技术范围:
我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方面的设计与开发。如果你有任何技术难题,我都乐意与你分享解决方案。主要内容:
我的服务内容包括:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文撰写与辅导、论文降重、长期答辩答疑辅导。此外,我还提供腾讯会议一对一的专业讲解和模拟答辩演练,帮助你全面掌握答辩技巧与代码逻辑。🍅获取源码请在文末联系我🍅
如果你对我的内容感兴趣,记得先收藏!对于毕设选题、项目开发或论文撰写等相关问题,随时欢迎留言咨询,我会尽力帮助更多同学顺利完成学业。最主要的是免费咨询相关问题!!
一、详细操作演示视频
在文章的尾声,您会发现一张电子名片👤,欢迎通过名片上的联系方式与我取得联系,以获取更多关于项目演示的详尽视频内容。视频将帮助您全面理解项目的关键点和操作流程。期待与您的进一步交流!
承诺所有开发的项目,全程售后陪伴!!!文章下方有历年的好评(部分)!!
文档学习资料(阿龙可以赠送所有的录制好的讲解视频):
系统功能描述:
用户模块
注册登录: 用户能够通过微信小程序注册和登录系统。
首页:查看最新公益新闻、了解不同公益项目所需物资的详细信息,包括物资的分类、名称、数量以及捐助进度、查看参与公益项目的捐赠排行榜、参与评论区活动。
捐赠页面:搜索并查看所有公益项目、通过项目名称、关键词或编号进行项目搜索。
个人中心: 用户管理个人信息、查看捐赠记录等。
求助中心: 提交求助申请,包括填写个人信息、需求物资及附加证明材料。在收到帮助物品后,上传物品使用记录、支付物品的管理费用。
公益捐赠公告: 查看关于公益捐赠的最新公告和信息。
旧物捐赠: 用户捐赠旧物的具体流程和要求。
管理员模块
登录: 管理员通过特定的界面登录。
数据可视化: 展示系统运行的各项数据,捐赠统计、用户活动等。
用户管理: 管理用户账号,包括启用、禁用、添加、删除、修改、查询。
员工管理: 对系统内员工的账号进行管理,包括启用、禁用、修改、删除、查询。注册新员工账号,默认密码为123456。重置员工账户密码为默认密码。
捐赠管理: 对捐赠和求助的物品进行审核,管理求助和捐赠物品。
评论公告管理: 管理用户评论和发布公告。
物品分类管理: 对捐赠物品的分类进行管理。
新闻内容管理: 发布和管理公益新闻内容。
系统管理: 维护系统正常运行,进行必要的技术支持。
权限管理: 配置不同角色的系统访问权限。
荣誉管理: 管理用户和员工的荣誉称号和奖励。
员工模块
登录: 员工能够通过特定的界面登录系统,员工只能登录,不能自己注册账号。
首页: 查看系统公告、任务分配等。
个人中心: 员工管理个人信息、查看工作记录、修改密码等。
评论区管理: 管理用户的评论,维护评论区的秩序。
系统实现界面:
核心代码:
package com.controller;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
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.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.YonghuEntity;
import com.entity.view.YonghuView;
import com.service.YonghuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.MapUtils;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 用户
* 后端接口
* @author
* @email
* @date 2024-05-08 10:34:00
*/
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
@Autowired
private YonghuService yonghuService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
if(u==null || !u.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(u.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody YonghuEntity yonghu){
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
if(u!=null) {
return R.error("注册用户已存在");
}
Long uId = new Date().getTime();
yonghu.setId(uId);
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 退出
*/
@RequestMapping("/logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
YonghuEntity u = yonghuService.selectById(id);
return R.ok().put("data", u);
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
if(u==null) {
return R.error("账号不存在");
}
u.setMima("123456");
yonghuService.updateById(u);
return R.ok("密码已重置为:123456");
}
/**
* 后台列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
HttpServletRequest request){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
return R.ok().put("data", page);
}
/**
* 前台列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
HttpServletRequest request){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( YonghuEntity yonghu){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu"));
return R.ok().put("data", yonghuService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(YonghuEntity yonghu){
EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu"));
YonghuView yonghuView = yonghuService.selectView(ew);
return R.ok("查询用户成功").put("data", yonghuView);
}
/**
* 后台详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YonghuEntity yonghu = yonghuService.selectById(id);
return R.ok().put("data", yonghu);
}
/**
* 前台详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
YonghuEntity yonghu = yonghuService.selectById(id);
return R.ok().put("data", yonghu);
}
/**
* 后台保存
*/
@RequestMapping("/save")
public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
if(yonghuService.selectCount(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()))>0) {
return R.error("用户账号已存在");
}
yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
if(u!=null) {
return R.error("用户已存在");
}
yonghu.setId(new Date().getTime());
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 前台保存
*/
@RequestMapping("/add")
public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
if(yonghuService.selectCount(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()))>0) {
return R.error("用户账号已存在");
}
yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
if(u!=null) {
return R.error("用户已存在");
}
yonghu.setId(new Date().getTime());
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
//ValidatorUtils.validateEntity(yonghu);
if(yonghuService.selectCount(new EntityWrapper<YonghuEntity>().ne("id", yonghu.getId()).eq("yonghuzhanghao", yonghu.getYonghuzhanghao()))>0) {
return R.error("用户账号已存在");
}
yonghuService.updateById(yonghu);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
yonghuService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
数据库核心代码:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springbootbgsyo2os` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `springbootbgsyo2os`;
--
-- Table structure for table `aboutus`
--
DROP TABLE IF EXISTS `aboutus`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `aboutus` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`title` varchar(200) NOT NULL COMMENT '标题',
`subtitle` varchar(200) DEFAULT NULL COMMENT '副标题',
`content` longtext NOT NULL COMMENT '内容',
`picture1` longtext COMMENT '图片1',
`picture2` longtext COMMENT '图片2',
`picture3` longtext COMMENT '图片3',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='关于我们';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `aboutus`
--
LOCK TABLES `aboutus` WRITE;
/*!40000 ALTER TABLE `aboutus` DISABLE KEYS */;
INSERT INTO `aboutus` VALUES (1,'2024-05-08 02:34:28','关于我们','ABOUT US','当你设想门外是寒冷可怕的世界时,你还应该开门出去看看,是否真的如此。如果你有信心,你对前途就不犹豫了。如果你有勇气,你就不怕前途是否有困难或危险了每个人心中都应有两盏灯,一盏是希望的灯,一盏是勇气的灯。有了这两盏灯,我们就不怕海上的黑暗和风涛的险恶了。人的一生很像是在雾中行走。远远望去,只是迷蒙一片,辨不出方向和吉凶。可是,当你鼓起勇气,放下恐惧和怀疑,一步一步向前走去的时候,你就会发现,每走一步,你都能把下一步路看得清楚一点。“往前走,别站在远远的地方观望!”你就可以找到你的方向。','upload/aboutus_picture1.jpg','upload/aboutus_picture2.jpg','upload/aboutus_picture3.jpg');
/*!40000 ALTER TABLE `aboutus` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `config`
--
DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(100) NOT NULL COMMENT '配置参数名称',
`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
`url` varchar(500) DEFAULT NULL COMMENT 'url',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `config`
--
LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg',NULL),(2,'picture2','upload/picture2.jpg',NULL),(3,'picture3','upload/picture3.jpg',NULL);
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `discussjiuwuhuishou`
--
DROP TABLE IF EXISTS `discussjiuwuhuishou`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discussjiuwuhuishou` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`refid` bigint(20) NOT NULL COMMENT '关联表id',
`userid` bigint(20) NOT NULL COMMENT '用户id',
`avatarurl` longtext COMMENT '头像',
`nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
`content` longtext NOT NULL COMMENT '评论内容',
`reply` longtext COMMENT '回复内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='旧物回收评论表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `discussjiuwuhuishou`
--
LOCK TABLES `discussjiuwuhuishou` WRITE;
/*!40000 ALTER TABLE `discussjiuwuhuishou` DISABLE KEYS */;
/*!40000 ALTER TABLE `discussjiuwuhuishou` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `discussqiuzhuxinxi`
--
DROP TABLE IF EXISTS `discussqiuzhuxinxi`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discussqiuzhuxinxi` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`refid` bigint(20) NOT NULL COMMENT '关联表id',
`userid` bigint(20) NOT NULL COMMENT '用户id',
`avatarurl` longtext COMMENT '头像',
`nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
`content` longtext NOT NULL COMMENT '评论内容',
`reply` longtext COMMENT '回复内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='求助信息评论表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `discussqiuzhuxinxi`
--
LOCK TABLES `discussqiuzhuxinxi` WRITE;
/*!40000 ALTER TABLE `discussqiuzhuxinxi` DISABLE KEYS */;
/*!40000 ALTER TABLE `discussqiuzhuxinxi` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `huishoujilu`
--
DROP TABLE IF EXISTS `huishoujilu`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `huishoujilu` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`juanzengbianhao` varchar(200) NOT NULL COMMENT '捐赠编号',
`wupinmingcheng` varchar(200) NOT NULL COMMENT '物品名称',
`wupinleibie` varchar(200) NOT NULL COMMENT '物品类别',
`wupintupian` longtext NOT NULL COMMENT '物品图片',
`shuliang` int(11) NOT NULL COMMENT '数量',
`yonghuzhanghao` varchar(200) NOT NULL COMMENT '用户账号',
`yonghuxingming` varchar(200) NOT NULL COMMENT '用户姓名',
`lianxidianhua` varchar(200) NOT NULL COMMENT '联系电话',
`huishoushijian` datetime NOT NULL COMMENT '回收时间',
`gonghao` varchar(200) NOT NULL COMMENT '回收人员',
`xiangqing` varchar(200) NOT NULL COMMENT '备注',
`crossuserid` bigint(20) DEFAULT NULL COMMENT '跨表用户id',
`crossrefid` bigint(20) DEFAULT NULL COMMENT '跨表主键id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='回收记录';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `huishoujilu`
--
LOCK TABLES `huishoujilu` WRITE;
/*!40000 ALTER TABLE `huishoujilu` DISABLE KEYS */;
INSERT INTO `huishoujilu` VALUES (71,'2024-05-08 02:34:28','捐赠编号1','物品名称1','物品类别1','upload/huishoujilu_wupintupian1.jpg,upload/huishoujilu_wupintupian2.jpg,upload/huishoujilu_wupintupian3.jpg',1,'用户账号1','用户姓名1','联系电话1','2024-05-08 10:34:28','回收人员1','备注1',1,1),(72,'2024-05-08 02:34:28','捐赠编号2','物品名称2','物品类别2','upload/huishoujilu_wupintupian2.jpg,upload/huishoujilu_wupintupian3.jpg,upload/huishoujilu_wupintupian4.jpg',2,'用户账号2','用户姓名2','联系电话2','2024-05-08 10:34:28','回收人员2','备注2',2,2),(73,'2024-05-08 02:34:28','捐赠编号3','物品名称3','物品类别3','upload/huishoujilu_wupintupian3.jpg,upload/huishoujilu_wupintupian4.jpg,upload/huishoujilu_wupintupian5.jpg',3,'用户账号3','用户姓名3','联系电话3','2024-05-08 10:34:28','回收人员3','备注3',3,3),(74,'2024-05-08 02:34:28','捐赠编号4','物品名称4','物品类别4','upload/huishoujilu_wupintupian4.jpg,upload/huishoujilu_wupintupian5.jpg,upload/huishoujilu_wupintupian6.jpg',4,'用户账号4','用户姓名4','联系电话4','2024-05-08 10:34:28','回收人员4','备注4',4,4),(75,'2024-05-08 02:34:28','捐赠编号5','物品名称5','物品类别5','upload/huishoujilu_wupintupian5.jpg,upload/huishoujilu_wupintupian6.jpg,upload/huishoujilu_wupintupian7.jpg',5,'用户账号5','用户姓名5','联系电话5','2024-05-08 10:34:28','回收人员5','备注5',5,5),(76,'2024-05-08 02:34:28','捐赠编号6','物品名称6','物品类别6','upload/huishoujilu_wupintupian6.jpg,upload/huishoujilu_wupintupian7.jpg,upload/huishoujilu_wupintupian8.jpg',6,'用户账号6','用户姓名6','联系电话6','2024-05-08 10:34:28','回收人员6','备注6',6,6),(77,'2024-05-08 02:34:28','捐赠编号7','物品名称7','物品类别7','upload/huishoujilu_wupintupian7.jpg,upload/huishoujilu_wupintupian8.jpg,upload/huishoujilu_wupintupian9.jpg',7,'用户账号7','用户姓名7','联系电话7','2024-05-08 10:34:28','回收人员7','备注7',7,7),(78,'2024-05-08 02:34:28','捐赠编号8','物品名称8','物品类别8','upload/huishoujilu_wupintupian8.jpg,upload/huishoujilu_wupintupian9.jpg,upload/huishoujilu_wupintupian10.jpg',8,'用户账号8','用户姓名8','联系电话8','2024-05-08 10:34:28','回收人员8','备注8',8,8);
/*!40000 ALTER TABLE `huishoujilu` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `jiuwuhuishou`
-
为什么选择我:
我是程序员阿龙,专注于软件开发,拥有丰富的编程能力和实战经验。在过去的几年里,我辅导了上千名学生,帮助他们顺利完成毕业项目,同时我的技术分享也吸引了超过50W+的粉丝。我是CSDN特邀作者、博客专家、新星计划导师,并在Java领域内获得了多项荣誉,如博客之星。我的作品也被掘金、华为云、阿里云、InfoQ等多个平台推荐,成为各大平台的优质作者。
已经为上百名同学获得优秀毕业生!!
源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻精彩专栏推荐订阅:在下方专栏👇🏻