普通题目做出不普通效果:社区便民平台毕设SpringBoot实现精髓

51 阅读5分钟

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

@TOC

基于SpringBoot+Vue的社区便民服务系统介绍

基于SpringBoot+Vue的社区便民服务平台设计与实现是一套完整的现代化Web应用系统,采用当前主流的前后端分离架构,后端基于SpringBoot框架集成Spring、SpringMVC、Mybatis构建稳定的服务层,前端运用Vue.js配合ElementUI组件库打造响应式用户界面,数据存储采用MySQL关系型数据库确保数据安全性和一致性。该平台整合了丰富的社区服务功能模块,包含完善的用户管理体系、多样化的服务类型分类、便捷的服务信息发布与浏览、高效的服务订单处理流程、灵活的服务取消与完成机制、透明的服务费用管理、真实的服务评价反馈系统,同时融入社区活动管理功能,涵盖活动分类、活动信息发布、活动报名等环节,并创新性地引入积分商城机制,通过商品分类、积分兑换等方式增强用户粘性。平台还具备完整的社区治理功能,包括举报记录管理、论坛交流互动等模块,确保社区环境健康有序。系统后台提供全面的管理功能,包括菜单列表配置、轮播图管理、投诉建议处理等,用户端则提供个人中心、个人信息管理、密码修改等个性化服务,整个系统采用B/S架构确保跨平台兼容性,可在IDEA开发环境中高效开发部署,为现代社区数字化服务提供了完整的技术解决方案。

基于SpringBoot+Vue的社区便民服务系统演示视频

演示视频

基于SpringBoot+Vue的社区便民服务系统演示图片

登陆界面.png

服务订单.png

服务费用.png

服务信息.png

活动报名.png

活动信息.png

积分兑换.png

看板.png

取消服务.png

完成服务.png

用户管理.png

基于SpringBoot+Vue的社区便民服务系统代码展示

import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
@RestController
@RequestMapping("/api")
public class CommunityServiceController {
    @Autowired
    private ServiceOrderMapper serviceOrderMapper;
    @Autowired
    private ServiceInfoMapper serviceInfoMapper;
    @Autowired
    private UserMapper userMapper;
    private SparkSession spark = SparkSession.builder()
            .appName("CommunityServiceAnalysis")
            .master("local[*]")
            .getOrCreate();
    @PostMapping("/service/order/create")
    public Map<String, Object> createServiceOrder(@RequestBody ServiceOrderRequest request) {
        Map<String, Object> result = new HashMap<>();
        try {
            ServiceOrder order = new ServiceOrder();
            order.setUserId(request.getUserId());
            order.setServiceId(request.getServiceId());
            order.setOrderTime(new Date());
            order.setOrderStatus("待确认");
            order.setServiceAddress(request.getServiceAddress());
            order.setContactPhone(request.getContactPhone());
            order.setServiceTime(request.getServiceTime());
            order.setOrderAmount(request.getOrderAmount());
            order.setRemark(request.getRemark());
            String orderNo = "ORDER" + System.currentTimeMillis() + (int)(Math.random() * 1000);
            order.setOrderNo(orderNo);
            ServiceInfo serviceInfo = serviceInfoMapper.selectById(request.getServiceId());
            if (serviceInfo == null) {
                result.put("success", false);
                result.put("message", "服务信息不存在");
                return result;
            }
            if (serviceInfo.getServiceStatus() != 1) {
                result.put("success", false);
                result.put("message", "该服务当前不可预订");
                return result;
            }
            User user = userMapper.selectById(request.getUserId());
            if (user == null || user.getUserStatus() != 1) {
                result.put("success", false);
                result.put("message", "用户状态异常");
                return result;
            }
            Dataset<Row> orderData = spark.read()
                    .format("jdbc")
                    .option("url", "jdbc:mysql://localhost:3306/community_service")
                    .option("dbtable", "service_order")
                    .option("user", "root")
                    .option("password", "123456")
                    .load();
            long todayOrderCount = orderData.filter(orderData.col("user_id").equalTo(request.getUserId())
                    .and(orderData.col("order_time").gt(getTodayStart())))
                    .count();
            if (todayOrderCount >= 5) {
                result.put("success", false);
                result.put("message", "今日订单数量已达上限");
                return result;
            }
            int insertResult = serviceOrderMapper.insert(order);
            if (insertResult > 0) {
                serviceInfoMapper.updateOrderCount(request.getServiceId());
                result.put("success", true);
                result.put("message", "订单创建成功");
                result.put("orderNo", orderNo);
                result.put("orderId", order.getOrderId());
            } else {
                result.put("success", false);
                result.put("message", "订单创建失败");
            }
        } catch (Exception e) {
            result.put("success", false);
            result.put("message", "系统异常:" + e.getMessage());
        }
        return result;
    }
    @PostMapping("/service/evaluation/submit")
    public Map<String, Object> submitServiceEvaluation(@RequestBody ServiceEvaluationRequest request) {
        Map<String, Object> result = new HashMap<>();
        try {
            ServiceOrder order = serviceOrderMapper.selectById(request.getOrderId());
            if (order == null) {
                result.put("success", false);
                result.put("message", "订单不存在");
                return result;
            }
            if (!order.getUserId().equals(request.getUserId())) {
                result.put("success", false);
                result.put("message", "无权限评价此订单");
                return result;
            }
            if (!"已完成".equals(order.getOrderStatus())) {
                result.put("success", false);
                result.put("message", "订单未完成,无法评价");
                return result;
            }
            ServiceEvaluation existEvaluation = serviceEvaluationMapper.selectByOrderId(request.getOrderId());
            if (existEvaluation != null) {
                result.put("success", false);
                result.put("message", "该订单已评价");
                return result;
            }
            ServiceEvaluation evaluation = new ServiceEvaluation();
            evaluation.setOrderId(request.getOrderId());
            evaluation.setUserId(request.getUserId());
            evaluation.setServiceId(order.getServiceId());
            evaluation.setEvaluationScore(request.getEvaluationScore());
            evaluation.setEvaluationContent(request.getEvaluationContent());
            evaluation.setEvaluationTime(new Date());
            evaluation.setIsAnonymous(request.getIsAnonymous());
            Dataset<Row> evaluationData = spark.read()
                    .format("jdbc")
                    .option("url", "jdbc:mysql://localhost:3306/community_service")
                    .option("dbtable", "service_evaluation")
                    .option("user", "root")
                    .option("password", "123456")
                    .load();
            Dataset<Row> serviceEvaluations = evaluationData.filter(
                    evaluationData.col("service_id").equalTo(order.getServiceId()));
            double avgScore = serviceEvaluations.agg(org.apache.spark.sql.functions.avg("evaluation_score"))
                    .collectAsList().get(0).getDouble(0);
            long evaluationCount = serviceEvaluations.count();
            int insertResult = serviceEvaluationMapper.insert(evaluation);
            if (insertResult > 0) {
                serviceOrderMapper.updateOrderStatus(request.getOrderId(), "已评价");
                double newAvgScore = (avgScore * evaluationCount + request.getEvaluationScore()) / (evaluationCount + 1);
                serviceInfoMapper.updateServiceRating(order.getServiceId(), newAvgScore, evaluationCount + 1);
                User user = userMapper.selectById(request.getUserId());
                int currentPoints = user.getPoints() != null ? user.getPoints() : 0;
                int rewardPoints = calculateEvaluationReward(request.getEvaluationScore(), request.getEvaluationContent());
                userMapper.updateUserPoints(request.getUserId(), currentPoints + rewardPoints);
                result.put("success", true);
                result.put("message", "评价提交成功");
                result.put("rewardPoints", rewardPoints);
                result.put("evaluationId", evaluation.getEvaluationId());
            } else {
                result.put("success", false);
                result.put("message", "评价提交失败");
            }
        } catch (Exception e) {
            result.put("success", false);
            result.put("message", "系统异常:" + e.getMessage());
        }
        return result;
    }
    @PostMapping("/points/exchange")
    public Map<String, Object> exchangePointsForGoods(@RequestBody PointsExchangeRequest request) {
        Map<String, Object> result = new HashMap<>();
        try {
            User user = userMapper.selectById(request.getUserId());
            if (user == null || user.getUserStatus() != 1) {
                result.put("success", false);
                result.put("message", "用户状态异常");
                return result;
            }
            PointsGoods goods = pointsGoodsMapper.selectById(request.getGoodsId());
            if (goods == null || goods.getGoodsStatus() != 1) {
                result.put("success", false);
                result.put("message", "商品不存在或已下架");
                return result;
            }
            int userPoints = user.getPoints() != null ? user.getPoints() : 0;
            int requiredPoints = goods.getExchangePoints() * request.getExchangeQuantity();
            if (userPoints < requiredPoints) {
                result.put("success", false);
                result.put("message", "积分不足,无法兑换");
                result.put("currentPoints", userPoints);
                result.put("requiredPoints", requiredPoints);
                return result;
            }
            if (goods.getStockQuantity() < request.getExchangeQuantity()) {
                result.put("success", false);
                result.put("message", "库存不足");
                return result;
            }
            Dataset<Row> exchangeData = spark.read()
                    .format("jdbc")
                    .option("url", "jdbc:mysql://localhost:3306/community_service")
                    .option("dbtable", "points_exchange")
                    .option("user", "root")
                    .option("password", "123456")
                    .load();
            long todayExchangeCount = exchangeData.filter(exchangeData.col("user_id").equalTo(request.getUserId())
                    .and(exchangeData.col("exchange_time").gt(getTodayStart())))
                    .count();
            if (todayExchangeCount >= 3) {
                result.put("success", false);
                result.put("message", "今日兑换次数已达上限");
                return result;
            }
            PointsExchange exchange = new PointsExchange();
            exchange.setUserId(request.getUserId());
            exchange.setGoodsId(request.getGoodsId());
            exchange.setExchangeQuantity(request.getExchangeQuantity());
            exchange.setExchangePoints(requiredPoints);
            exchange.setExchangeTime(new Date());
            exchange.setExchangeStatus("待发货");
            exchange.setDeliveryAddress(request.getDeliveryAddress());
            exchange.setContactPhone(request.getContactPhone());
            String exchangeNo = "EXCHANGE" + System.currentTimeMillis() + (int)(Math.random() * 1000);
            exchange.setExchangeNo(exchangeNo);
            int insertResult = pointsExchangeMapper.insert(exchange);
            if (insertResult > 0) {
                userMapper.updateUserPoints(request.getUserId(), userPoints - requiredPoints);
                pointsGoodsMapper.updateStock(request.getGoodsId(), goods.getStockQuantity() - request.getExchangeQuantity());
                pointsGoodsMapper.updateExchangeCount(request.getGoodsId());
                result.put("success", true);
                result.put("message", "兑换成功");
                result.put("exchangeNo", exchangeNo);
                result.put("remainingPoints", userPoints - requiredPoints);
                result.put("exchangeId", exchange.getExchangeId());
            } else {
                result.put("success", false);
                result.put("message", "兑换失败");
            }
        } catch (Exception e) {
            result.put("success", false);
            result.put("message", "系统异常:" + e.getMessage());
        }
        return result;
    }
    private Date getTodayStart() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }
    private int calculateEvaluationReward(int score, String content) {
        int baseReward = 10;
        if (score >= 4) baseReward += 5;
        if (content != null && content.length() > 20) baseReward += 3;
        return baseReward;
    }
}

基于SpringBoot+Vue的社区便民服务系统文档展示

文档.png

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目