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