【小程序】利民家装小程序 uni-app|微信小程序|安卓 计算机毕业设计项目 微信小程序开发工具部署 附源码+文档+讲解

69 阅读4分钟

前言

一.开发工具简介

  • 后端开发语言: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);
    }
}


六.系统文档展示

在这里插入图片描述

结束

💕💕文末获取源码联系 计算机程序员小杨