一、个人简介
💖💖作者:计算机编程果茶熊
💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💕💕文末获取源码联系计算机编程果茶熊
二、系统介绍
开发语言:Java+Python
数据库:MySQL
系统架构:B/S
后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django
前端:Vue+HTML+CSS+JavaScript+jQuery
《西西家居全屋定制系统》是一套基于B/S架构的家居定制管理平台,采用Java/Python双语言支持,分别基于Spring Boot(Spring+SpringMVC+Mybatis)和Django框架开发,前端使用Vue+ElementUI+HTML技术栈,数据存储依托MySQL数据库。系统功能完善,包括首页展示、用户管理、设计师管理、家具分类管理、家具信息管理、家具定制管理、定制分配管理、家具数据管理、公告信息管理、系统管理、订单管理、个人信息维护以及家具推送等十余个核心模块,实现了从家具展示、用户定制需求提交到设计师接单、生产管理的全流程数字化管理。通过该系统,家居企业可高效管理定制家具业务,消费者可便捷提交个性化定制需求,设计师能够精准对接客户需求并提供专业设计方案,实现了家居定制行业的信息化、智能化升级,为家居企业提供了完整的业务管理解决方案。
三、西西家居全屋定制系统-视频解说
你的毕设还在为技术选型发愁吗?《西西家居全屋定制系统》或许是最佳答案
四、西西家居全屋定制系统-功能展示
登录注册
前台首页
前台家具信息
前台家具详情页
前台家具推送
前台个人中心
后台设计师定制分配
后台管理员订单管理
五、西西家居全屋定制系统-代码展示
```
// 核心功能1: 家具定制管理 - 处理用户定制需求并生成定制方案
@Service
public class FurnitureCustomizationService {
@Autowired
private FurnitureCustomizationRepository customizationRepository;
@Autowired
private DesignerRepository designerRepository;
@Autowired
private MaterialRepository materialRepository;
@Autowired
private NotificationService notificationService;
/**
* 创建家具定制方案
*/
public CustomizationPlan createCustomizationPlan(CustomizationRequest request) {
// 验证请求参数
if (request.getDimensions() == null || request.getMaterialIds().isEmpty()) {
throw new InvalidRequestException("定制尺寸和材料不能为空");
}
// 计算定制价格
BigDecimal basePrice = calculateBasePrice(request.getFurnitureType(), request.getDimensions());
List<Material> selectedMaterials = materialRepository.findAllById(request.getMaterialIds());
BigDecimal materialCost = selectedMaterials.stream()
.map(material -> material.getPricePerUnit().multiply(new BigDecimal(request.getMaterialQuantities().get(material.getId()))))
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 计算工时费
int estimatedHours = calculateEstimatedHours(request.getFurnitureType(), request.getComplexityLevel());
BigDecimal laborCost = new BigDecimal(estimatedHours).multiply(new BigDecimal("150"));
// 生成定制方案
CustomizationPlan plan = new CustomizationPlan();
plan.setUserId(request.getUserId());
plan.setFurnitureType(request.getFurnitureType());
plan.setDimensions(request.getDimensions());
plan.setMaterials(selectedMaterials);
plan.setComplexityLevel(request.getComplexityLevel());
plan.setBasePrice(basePrice);
plan.setMaterialCost(materialCost);
plan.setLaborCost(laborCost);
plan.setTotalPrice(basePrice.add(materialCost).add(laborCost));
plan.setEstimatedCompletionDays(estimatedHours / 8 + 5); // 工作日 + 固定生产时间
plan.setStatus(CustomizationStatus.PENDING_APPROVAL);
plan.setCreatedAt(LocalDateTime.now());
// 分配设计师
Designer availableDesigner = findAvailableDesigner(request.getFurnitureType());
if (availableDesigner != null) {
plan.setDesignerId(availableDesigner.getId());
notificationService.notifyDesigner(availableDesigner.getId(),
"新的家具定制需求已分配给您,请尽快处理", plan.getId());
}
return customizationRepository.save(plan);
}
}
// 核心功能2: 订单管理 - 处理订单状态流转和支付流程
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private PaymentService paymentService;
@Autowired
private UserRepository userRepository;
@Autowired
private FurnitureCustomizationRepository customizationRepository;
@Autowired
private NotificationService notificationService;
/**
* 创建并处理订单
*/
@Transactional
public Order processOrder(OrderRequest orderRequest) {
// 验证用户和定制方案
User user = userRepository.findById(orderRequest.getUserId())
.orElseThrow(() -> new EntityNotFoundException("用户不存在"));
CustomizationPlan plan = customizationRepository.findById(orderRequest.getCustomizationPlanId())
.orElseThrow(() -> new EntityNotFoundException("定制方案不存在"));
if (!plan.getStatus().equals(CustomizationStatus.APPROVED)) {
throw new InvalidOperationException("定制方案尚未获得批准,无法创建订单");
}
// 创建订单
Order order = new Order();
order.setOrderNumber(generateOrderNumber());
order.setUserId(user.getId());
order.setCustomizationPlanId(plan.getId());
order.setTotalAmount(plan.getTotalPrice());
order.setDeliveryAddress(orderRequest.getDeliveryAddress());
order.setContactPhone(orderRequest.getContactPhone());
order.setOrderStatus(OrderStatus.PENDING_PAYMENT);
order.setCreatedAt(LocalDateTime.now());
order.setEstimatedDeliveryDate(LocalDateTime.now().plusDays(plan.getEstimatedCompletionDays()));
// 应用优惠券或折扣
if (orderRequest.getCouponId() != null) {
Coupon coupon = validateAndApplyCoupon(orderRequest.getCouponId(), user.getId(), order.getTotalAmount());
if (coupon != null) {
order.setCouponId(coupon.getId());
order.setDiscountAmount(coupon.getDiscountAmount());
order.setFinalAmount(order.getTotalAmount().subtract(coupon.getDiscountAmount()));
} else {
order.setFinalAmount(order.getTotalAmount());
}
} else {
order.setFinalAmount(order.getTotalAmount());
}
// 保存订单
Order savedOrder = orderRepository.save(order);
// 处理支付
if (orderRequest.isPayNow()) {
PaymentRequest paymentRequest = new PaymentRequest();
paymentRequest.setOrderId(savedOrder.getId());
paymentRequest.setAmount(savedOrder.getFinalAmount());
paymentRequest.setPaymentMethod(orderRequest.getPaymentMethod());
paymentRequest.setPaymentDetails(orderRequest.getPaymentDetails());
PaymentResult paymentResult = paymentService.processPayment(paymentRequest);
if (paymentResult.isSuccessful()) {
savedOrder.setOrderStatus(OrderStatus.PAID);
savedOrder.setPaidAt(LocalDateTime.now());
savedOrder = orderRepository.save(savedOrder);
// 更新定制方案状态
plan.setStatus(CustomizationStatus.IN_PRODUCTION);
customizationRepository.save(plan);
// 发送通知
notificationService.notifyUser(user.getId(), "订单支付成功,订单号: " + savedOrder.getOrderNumber());
notificationService.notifyAdmin("新订单已支付,订单号: " + savedOrder.getOrderNumber());
} else {
notificationService.notifyUser(user.getId(), "订单支付失败,原因: " + paymentResult.getFailureReason());
}
}
return savedOrder;
}
}
// 核心功能3: 家具推送 - 基于用户偏好的智能推荐系统
@Service
public class FurnitureRecommendationService {
@Autowired
private FurnitureRepository furnitureRepository;
@Autowired
private UserBehaviorRepository userBehaviorRepository;
@Autowired
private OrderRepository orderRepository;
@Autowired
private UserPreferenceRepository userPreferenceRepository;
/**
* 为用户生成个性化家具推荐
*/
public List<FurnitureRecommendation> generatePersonalizedRecommendations(Long userId, int limit) {
// 获取用户行为数据
List<UserBehavior> userBehaviors = userBehaviorRepository.findByUserIdOrderByTimestampDesc(userId);
// 获取用户历史订单
List<Order> userOrders = orderRepository.findByUserIdOrderByCreatedAtDesc(userId);
// 获取用户明确设置的偏好
UserPreference userPreference = userPreferenceRepository.findByUserId(userId)
.orElse(new UserPreference(userId));
// 计算用户对各类家具的兴趣分数
Map<String, Double> categoryScores = calculateCategoryScores(userBehaviors, userOrders, userPreference);
// 计算用户对各种材料的兴趣分数
Map<String, Double> materialScores = calculateMaterialScores(userBehaviors, userOrders, userPreference);
// 计算用户对价格范围的偏好
PriceRange preferredPriceRange = calculatePreferredPriceRange(userOrders, userPreference);
// 获取候选家具列表
List<Furniture> candidateFurniture = furnitureRepository.findAvailableFurniture();
// 为每件家具计算综合推荐分数
List<FurnitureRecommendation> scoredFurniture = new ArrayList<>();
for (Furniture furniture : candidateFurniture) {
double categoryScore = categoryScores.getOrDefault(furniture.getCategory(), 0.0);
double materialScore = 0.0;
for (String material : furniture.getMaterials()) {
materialScore += materialScores.getOrDefault(material, 0.0);
}
materialScore = materialScore / furniture.getMaterials().size();
// 价格匹配度评分
double priceScore = calculatePriceMatchScore(furniture.getPrice(), preferredPriceRange);
// 流行度分数
double popularityScore = calculatePopularityScore(furniture);
// 新品加权
double newProductBonus = furniture.getCreatedAt().isAfter(LocalDateTime.now().minusMonths(1)) ? 0.2 : 0.0;
// 计算综合分数 (权重可调整)
double totalScore = categoryScore * 0.4 + materialScore * 0.25 + priceScore * 0.2 +
popularityScore * 0.1 + newProductBonus;
scoredFurniture.add(new FurnitureRecommendation(furniture, totalScore));
}
// 排序并选择前N个推荐
scoredFurniture.sort((a, b) -> Double.compare(b.getScore(), a.getScore()));
List<FurnitureRecommendation> topRecommendations = scoredFurniture.stream()
.limit(limit)
.collect(Collectors.toList());
// 记录推荐历史
saveRecommendationHistory(userId, topRecommendations);
return topRecommendations;
}
}
```
六、西西家居全屋定制系统-文档展示
部分文档
七、END
感谢
💕💕文末获取源码联系计算机编程果茶熊