前言
- 💖💖作者:计算机程序员小杨
- 💙💙个人简介:我是一名计算机相关专业的从业者,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。热爱技术,喜欢钻研新工具和框架,也乐于通过代码解决实际问题,大家有技术代码这一块的问题可以问我!
- 💛💛想说的话:感谢大家的关注与支持!
- 💕💕文末获取源码联系 计算机程序员小杨
- 💜💜
- 网站实战项目
- 安卓/小程序实战项目
- 大数据实战项目
- 深度学习实战项目
- 计算机毕业设计选题
- 💜💜
一.开发工具简介
- 后端开发语言:Java
- 后端框架:Spring Boot(Spring+SpringMVC+Mybatis)
- 前端:微信小程序
- 数据库:MySQL
- 系统架构:C/S
- 开发工具:微信小程序开发工具
二.系统内容简介
《利民家装小程序》是一款基于微信小程序平台的家庭装修服务管理系统,采用Java作为后端开发语言,结合Spring Boot框架构建稳定的服务端架构,前端通过微信小程序开发工具实现用户界面,数据存储采用MySQL关系型数据库,整体采用C/S架构模式保证系统的可扩展性和维护性。系统涵盖了装修行业的完整业务流程,包括业主信息管理、装修公司资源整合、项目分类与信息管理、预约服务管理、装修方案设计、施工记录跟踪、用户反馈收集、物料分类与采购管理、工艺展示以及系统资讯发布等核心功能模块。通过该系统,业主可以便捷地浏览装修公司信息,预约装修服务,查看装修方案,跟踪施工进度,而装修公司则能够高效管理项目资源,优化物料采购流程,提升服务质量,实现装修行业的数字化转型和服务标准化。
三.系统功能演示
四.系统界面展示
五.系统源码展示
import org.apache.spark.sql.SparkSession;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
@RestController
@RequestMapping("/api")
public class HomeDecorationController {
@Autowired
private ProjectService projectService;
@Autowired
private AppointmentService appointmentService;
@Autowired
private MaterialService materialService;
private SparkSession sparkSession = SparkSession.builder()
.appName("HomeDecorationAnalysis")
.master("local[*]")
.getOrCreate();
@PostMapping("/project/manage")
public ResponseEntity<Map<String, Object>> manageProject(@RequestBody ProjectRequest request) {
Map<String, Object> result = new HashMap<>();
try {
ProjectInfo project = new ProjectInfo();
project.setProjectName(request.getProjectName());
project.setProjectType(request.getProjectType());
project.setOwnerId(request.getOwnerId());
project.setCompanyId(request.getCompanyId());
project.setProjectBudget(request.getBudget());
project.setProjectArea(request.getArea());
project.setProjectAddress(request.getAddress());
project.setProjectDescription(request.getDescription());
project.setCreateTime(new Date());
project.setProjectStatus("待确认");
if (validateProjectData(project)) {
List<ProjectInfo> existingProjects = projectService.findByOwnerIdAndStatus(
request.getOwnerId(), "进行中");
if (existingProjects.size() >= 3) {
result.put("code", 400);
result.put("message", "同时进行的项目数量已达上限");
return ResponseEntity.ok(result);
}
DecorationCompany company = projectService.getCompanyById(request.getCompanyId());
if (company == null || !company.getStatus().equals("正常")) {
result.put("code", 400);
result.put("message", "装修公司状态异常");
return ResponseEntity.ok(result);
}
double companyScore = calculateCompanyScore(company.getCompanyId());
if (companyScore < 3.0) {
result.put("code", 400);
result.put("message", "装修公司评分过低,暂不可接单");
return ResponseEntity.ok(result);
}
project.setProjectId(generateProjectId());
ProjectPlan plan = createProjectPlan(project);
project.setProjectPlan(plan);
boolean saveResult = projectService.saveProject(project);
if (saveResult) {
sendNotificationToCompany(request.getCompanyId(), project);
updateOwnerProjectCount(request.getOwnerId());
result.put("code", 200);
result.put("message", "项目创建成功");
result.put("projectId", project.getProjectId());
result.put("estimatedDuration", plan.getEstimatedDuration());
} else {
result.put("code", 500);
result.put("message", "项目保存失败");
}
} else {
result.put("code", 400);
result.put("message", "项目数据验证失败");
}
} catch (Exception e) {
result.put("code", 500);
result.put("message", "系统异常:" + e.getMessage());
}
return ResponseEntity.ok(result);
}
@PostMapping("/appointment/process")
public ResponseEntity<Map<String, Object>> processAppointment(@RequestBody AppointmentRequest request) {
Map<String, Object> result = new HashMap<>();
try {
AppointmentInfo appointment = new AppointmentInfo();
appointment.setOwnerId(request.getOwnerId());
appointment.setCompanyId(request.getCompanyId());
appointment.setAppointmentType(request.getAppointmentType());
appointment.setAppointmentTime(request.getAppointmentTime());
appointment.setContactPhone(request.getContactPhone());
appointment.setServiceAddress(request.getServiceAddress());
appointment.setAppointmentNote(request.getNote());
appointment.setCreateTime(new Date());
appointment.setAppointmentStatus("待确认");
if (validateAppointmentTime(request.getAppointmentTime())) {
List<AppointmentInfo> conflictAppointments = appointmentService.findConflictAppointments(
request.getCompanyId(), request.getAppointmentTime());
if (!conflictAppointments.isEmpty()) {
result.put("code", 400);
result.put("message", "该时间段已被预约,请选择其他时间");
return ResponseEntity.ok(result);
}
OwnerInfo owner = appointmentService.getOwnerById(request.getOwnerId());
if (owner == null || !owner.getStatus().equals("正常")) {
result.put("code", 400);
result.put("message", "业主信息异常");
return ResponseEntity.ok(result);
}
int todayAppointmentCount = appointmentService.countTodayAppointments(request.getOwnerId());
if (todayAppointmentCount >= 2) {
result.put("code", 400);
result.put("message", "今日预约次数已达上限");
return ResponseEntity.ok(result);
}
appointment.setAppointmentId(generateAppointmentId());
CompanyServiceInfo serviceInfo = getCompanyServiceInfo(request.getCompanyId(), request.getAppointmentType());
if (serviceInfo != null) {
appointment.setEstimatedDuration(serviceInfo.getServiceDuration());
appointment.setServiceFee(serviceInfo.getServiceFee());
}
boolean saveResult = appointmentService.saveAppointment(appointment);
if (saveResult) {
sendAppointmentNotification(appointment);
updateAppointmentStatistics(request.getCompanyId());
result.put("code", 200);
result.put("message", "预约提交成功,请等待确认");
result.put("appointmentId", appointment.getAppointmentId());
result.put("estimatedResponseTime", "2小时内");
} else {
result.put("code", 500);
result.put("message", "预约保存失败");
}
} else {
result.put("code", 400);
result.put("message", "预约时间不合法");
}
} catch (Exception e) {
result.put("code", 500);
result.put("message", "系统异常:" + e.getMessage());
}
return ResponseEntity.ok(result);
}
@PostMapping("/material/purchase")
public ResponseEntity<Map<String, Object>> processMaterialPurchase(@RequestBody MaterialPurchaseRequest request) {
Map<String, Object> result = new HashMap<>();
try {
MaterialPurchase purchase = new MaterialPurchase();
purchase.setProjectId(request.getProjectId());
purchase.setPurchaseType(request.getPurchaseType());
purchase.setMaterialList(request.getMaterialList());
purchase.setTotalAmount(request.getTotalAmount());
purchase.setSupplierId(request.getSupplierId());
purchase.setPurchaseRemark(request.getRemark());
purchase.setCreateTime(new Date());
purchase.setPurchaseStatus("待审批");
if (validateMaterialPurchase(purchase)) {
ProjectInfo project = materialService.getProjectById(request.getProjectId());
if (project == null || !project.getProjectStatus().equals("进行中")) {
result.put("code", 400);
result.put("message", "项目状态异常,无法进行采购");
return ResponseEntity.ok(result);
}
double remainingBudget = calculateRemainingBudget(request.getProjectId());
if (request.getTotalAmount() > remainingBudget) {
result.put("code", 400);
result.put("message", "采购金额超出剩余预算");
return ResponseEntity.ok(result);
}
SupplierInfo supplier = materialService.getSupplierById(request.getSupplierId());
if (supplier == null || !supplier.getStatus().equals("合作中")) {
result.put("code", 400);
result.put("message", "供应商状态异常");
return ResponseEntity.ok(result);
}
for (MaterialItem item : request.getMaterialList()) {
MaterialInfo material = materialService.getMaterialById(item.getMaterialId());
if (material == null || material.getStock() < item.getQuantity()) {
result.put("code", 400);
result.put("message", "物料 " + item.getMaterialName() + " 库存不足");
return ResponseEntity.ok(result);
}
}
purchase.setPurchaseId(generatePurchaseId());
purchase.setExpectedDeliveryDate(calculateDeliveryDate(supplier.getAverageDeliveryDays()));
boolean saveResult = materialService.savePurchase(purchase);
if (saveResult) {
updateMaterialStock(request.getMaterialList());
createPurchaseWorkflow(purchase);
sendPurchaseNotification(purchase);
updateProjectBudgetUsage(request.getProjectId(), request.getTotalAmount());
result.put("code", 200);
result.put("message", "采购申请提交成功");
result.put("purchaseId", purchase.getPurchaseId());
result.put("expectedDelivery", purchase.getExpectedDeliveryDate());
} else {
result.put("code", 500);
result.put("message", "采购申请保存失败");
}
} else {
result.put("code", 400);
result.put("message", "采购数据验证失败");
}
} catch (Exception e) {
result.put("code", 500);
result.put("message", "系统异常:" + e.getMessage());
}
return ResponseEntity.ok(result);
}
}
六.系统文档展示
结束
💕💕文末获取源码联系 计算机程序员小杨