news 2026/4/20 21:14:22

分享一套优质的微信小程序校园志愿者系统(SpringBoot后端+Vue3管理端)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分享一套优质的微信小程序校园志愿者系统(SpringBoot后端+Vue3管理端)

大家好,我是锋哥,看到一个不错的微信小程序校园志愿者系统(SpringBoot后端+Vue3管理端),分享下哈。

项目介绍

随着新世纪的到来,无纸化办公的潮流席卷全球,自动化信息处理技术和基于网络的信息交流方式逐渐成为各行各业的主流。计算机不仅接管了众多行业的管理和测试任务,还成为了线上管理体系不可或缺的一环。这一变革极大提升了工作效率,但同时也带来了数据泄露的风险。因此,为确保数据安全,我们必须采取一系列先进的安全措施和技术手段。

最终,我们的努力得到了回报。测试结果表明,这款以微信小程序为载体的校园志愿服务活动系统不仅功能齐全,而且性能稳定,完全能够满足校园志愿服务活动的需求。它的出现不仅为用户提供了更为便捷的使用体验,还促进了资源的循环利用,实现了环保和经济的双赢

源码下载

链接:https://pan.baidu.com/s/1vtxtOkt6W3M0t4LsTzsRmA?pwd=1234
提取码:1234

系统展示

核心代码

package com.example.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.example.common.Result; import com.example.common.ResultCode; import com.example.entity.Account; import com.example.entity.AuthorityInfo; import com.example.exception.CustomException; import com.example.entity.AdminInfo; import com.example.entity.UserInfo; import com.example.service.AdminInfoService; import com.example.service.UserInfoService; import org.springframework.web.bind.annotation.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import cn.hutool.json.JSONUtil; import java.util.*; import java.util.stream.Collectors; @RestController public class AccountController { @Value("${authority.info}") private String authorityStr; @Resource private AdminInfoService adminInfoService; @Resource private UserInfoService userInfoService; @PostMapping("/login") public Result<Account> login(@RequestBody Account account, HttpServletRequest request) { if (StrUtil.isBlank(account.getName()) || StrUtil.isBlank(account.getPassword()) || account.getLevel() == null) { throw new CustomException(ResultCode.PARAM_LOST_ERROR); } Integer level = account.getLevel(); Account login = new Account(); if (1 == level) { login = adminInfoService.login(account.getName(), account.getPassword()); } if (2 == level) { login = userInfoService.login(account.getName(), account.getPassword()); } request.getSession().setAttribute("user", login); return Result.success(login); } @PostMapping("/register") public Result<Account> register(@RequestBody Account account) { Integer level = account.getLevel(); Account login = new Account(); if (1 == level) { AdminInfo info = new AdminInfo(); BeanUtils.copyProperties(account, info); login = adminInfoService.add(info); } if (2 == level) { UserInfo info = new UserInfo(); BeanUtils.copyProperties(account, info); login = userInfoService.add(info); } return Result.success(login); } @GetMapping("/logout") public Result logout(HttpServletRequest request) { request.getSession().setAttribute("user", null); return Result.success(); } @GetMapping("/auth") public Result getAuth(HttpServletRequest request) { Object user = request.getSession().getAttribute("user"); if(user == null) { return Result.error("401", "未登录"); } return Result.success(user); } @GetMapping("/getAccountInfo") public Result<Object> getAccountInfo(HttpServletRequest request) { Account account = (Account) request.getSession().getAttribute("user"); if (account == null) { return Result.success(new Object()); } Integer level = account.getLevel(); if (1 == level) { return Result.success(adminInfoService.findById(account.getId())); } if (2 == level) { return Result.success(userInfoService.findById(account.getId())); } return Result.success(new Object()); } @GetMapping("/getSession") public Result<Map<String, String>> getSession(HttpServletRequest request) { Account account = (Account) request.getSession().getAttribute("user"); if (account == null) { return Result.success(new HashMap<>(1)); } Map<String, String> map = new HashMap<>(1); map.put("username", account.getName()); return Result.success(map); } @GetMapping("/getAuthority") public Result<List<AuthorityInfo>> getAuthorityInfo() { List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class); return Result.success(authorityInfoList); } /** * 获取当前用户所能看到的模块信息 * @param request * @return */ @GetMapping("/authority") public Result<List<Integer>> getAuthorityInfo(HttpServletRequest request) { Account user = (Account) request.getSession().getAttribute("user"); if (user == null) { return Result.success(new ArrayList<>()); } JSONArray objects = JSONUtil.parseArray(authorityStr); for (Object object : objects) { JSONObject jsonObject = (JSONObject) object; if (user.getLevel().equals(jsonObject.getInt("level"))) { JSONArray array = JSONUtil.parseArray(jsonObject.getStr("models")); List<Integer> modelIdList = array.stream().map((o -> { JSONObject obj = (JSONObject) o; return obj.getInt("modelId"); })).collect(Collectors.toList()); return Result.success(modelIdList); } } return Result.success(new ArrayList<>()); } @GetMapping("/permission/{modelId}") public Result<List<Integer>> getPermission(@PathVariable Integer modelId, HttpServletRequest request) { List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class); Account user = (Account) request.getSession().getAttribute("user"); if (user == null) { return Result.success(new ArrayList<>()); } Optional<AuthorityInfo> optional = authorityInfoList.stream().filter(x -> x.getLevel().equals(user.getLevel())).findFirst(); if (optional.isPresent()) { Optional<AuthorityInfo.Model> firstOption = optional.get().getModels().stream().filter(x -> x.getModelId().equals(modelId)).findFirst(); if (firstOption.isPresent()) { List<Integer> info = firstOption.get().getOperation(); return Result.success(info); } } return Result.success(new ArrayList<>()); } @PutMapping("/updatePassword") public Result updatePassword(@RequestBody Account info, HttpServletRequest request) { Account account = (Account) request.getSession().getAttribute("user"); if (account == null) { return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg); } String oldPassword = SecureUtil.md5(info.getPassword()); if (!oldPassword.equals(account.getPassword())) { return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg); } info.setPassword(SecureUtil.md5(info.getNewPassword())); Integer level = account.getLevel(); if (1 == level) { AdminInfo adminInfo = new AdminInfo(); BeanUtils.copyProperties(info, adminInfo); adminInfoService.update(adminInfo); } if (2 == level) { UserInfo userInfo = new UserInfo(); BeanUtils.copyProperties(info, userInfo); userInfoService.update(userInfo); } info.setLevel(level); info.setName(account.getName()); // 清空session,让用户重新登录 request.getSession().setAttribute("user", null); return Result.success(); } @PostMapping("/resetPassword") public Result resetPassword(@RequestBody Account account) { Integer level = account.getLevel(); if (1 == level) { AdminInfo info = adminInfoService.findByUserName(account.getName()); if (info == null) { return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg); } info.setPassword(SecureUtil.md5("123456")); adminInfoService.update(info); } if (2 == level) { UserInfo info = userInfoService.findByUserName(account.getName()); if (info == null) { return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg); } info.setPassword(SecureUtil.md5("123456")); userInfoService.update(info); } return Result.success(); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:05:53

LabVIEW条码追踪系统:一场代码与效率的优雅 dance

Labview条码追踪系统JKI AMC结合的框架&#xff0c;扩展性强&#xff0c;适用于各种项目在工业自动化和物流管理的舞台上&#xff0c;条码追踪系统正在上演一幕幕效率与精准并存的精彩演出。而在这场演出的背后&#xff0c;是LabVIEW这位重量级选手带来的技术支持。选择合适的开…

作者头像 李华
网站建设 2026/4/19 7:48:15

互联网大厂Java面试实战:Spring Boot、微服务与Kafka在电商场景中的应用

互联网大厂Java面试实战&#xff1a;Spring Boot、微服务与Kafka在电商场景中的应用 在互联网大厂的Java求职面试中&#xff0c;技术栈涵盖了Java SE、Spring Boot、微服务架构、Kafka消息队列等前沿技术。本文通过一个电商场景的面试故事&#xff0c;展现了严肃的面试官与搞笑…

作者头像 李华
网站建设 2026/4/20 19:02:10

基于大数据文化旅游信息公开管理平台的设计与实现

目录大数据文化旅游信息公开管理平台的设计与实现摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作大数据文化旅游信息公开管理平台的设计与实现摘要 大数据技术的快速发展为文化旅游行业的信息化管理提…

作者头像 李华
网站建设 2026/4/16 11:58:35

学长亲荐!更贴合专科生的AI论文写作软件,千笔AI VS 灵感ai

随着人工智能技术的迅猛迭代与普及&#xff0c;AI辅助写作工具已逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生&#xff0c;开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华
网站建设 2026/4/17 16:09:55

【Linux】库制作与原理(二):动态库的制作与使用

✨道路是曲折的&#xff0c;前途是光明的&#xff01; &#x1f4dd; 专注C/C、Linux编程与人工智能领域&#xff0c;分享学习笔记&#xff01; &#x1f31f; 感谢各位小伙伴的长期陪伴与支持&#xff0c;欢迎文末添加好友一起交流&#xff01; 一、基础背景二、动态库的制作三…

作者头像 李华
网站建设 2026/4/16 9:17:53

AI Agent记忆系统全面解析:形态-功能-动力学三维框架详解

这篇由多所顶尖大学联合出品的综述&#xff0c;采用"形态-功能-动力学"三维框架分析200最新论文&#xff0c;提出Token-level/Parametric/Latent三大记忆形态。内容涵盖记忆形式化定义、三大功能、生命周期管理及7大前沿方向&#xff0c;提供30个评测集和20开源框架&…

作者头像 李华