package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.mapper.AppletOrderMapper; import com.ruoyi.system.model.TBigGiftPackage; import com.ruoyi.system.model.TBigGiftPackageOrder; import com.ruoyi.system.model.TPhysicalGoods; import com.ruoyi.system.model.TPhysicalGoodsOrder; import com.ruoyi.system.query.AppletOrderListQuery; import com.ruoyi.system.service.AppletOrderService; import com.ruoyi.system.service.TBigGiftPackageOrderService; import com.ruoyi.system.service.TPhysicalGoodsOrderService; import com.ruoyi.system.vo.AppletOrderDetailVO; import com.ruoyi.system.vo.AppletOrderListVO; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; /** * 小程序端订单Service实现 * * @author mitao * @since 2025-12-20 */ @Service @RequiredArgsConstructor(onConstructor_ = @Lazy) public class AppletOrderServiceImpl implements AppletOrderService { private final AppletOrderMapper appletOrderMapper; private final TPhysicalGoodsOrderService physicalGoodsOrderService; private final TBigGiftPackageOrderService bigGiftPackageOrderService; @Override public Page getOrderList(AppletOrderListQuery query, Integer appUserId) { Page page = new Page<>(query.getPageNum(), query.getPageSize()); List list = appletOrderMapper.selectOrderList(page, query, appUserId); page.setRecords(list); return page; } @Override public AppletOrderDetailVO getPhysicalOrderDetail(Integer orderId, Integer appUserId) { TPhysicalGoodsOrder order = physicalGoodsOrderService.getById(orderId); if (order == null || !order.getAppUserId().equals(appUserId)) { return null; } AppletOrderDetailVO vo = BeanUtil.copyProperties(order, AppletOrderDetailVO.class); vo.setOrderType(2); // 实物商品 // 解析商品JSON if (order.getPhysicalGoods() != null) { TPhysicalGoods goods = JSON.parseObject(order.getPhysicalGoods(), TPhysicalGoods.class); if (goods != null) { vo.setGoodsName(goods.getName()); vo.setGoodsIntro(goods.getIntroduction()); vo.setGoodsCover(goods.getCoverImage()); vo.setGoodsPrice(goods.getTotalPrice()); } } return vo; } @Override public AppletOrderDetailVO getBigGiftOrderDetail(Integer orderId, Integer appUserId) { TBigGiftPackageOrder order = bigGiftPackageOrderService.getById(orderId); if (order == null || !order.getAppUserId().equals(appUserId)) { return null; } AppletOrderDetailVO vo = BeanUtil.copyProperties(order, AppletOrderDetailVO.class); vo.setOrderType(1); // 大礼包 // 解析商品JSON if (order.getBigGiftPackage() != null) { TBigGiftPackage goods = JSON.parseObject(order.getBigGiftPackage(), TBigGiftPackage.class); if (goods != null) { vo.setGoodsName(goods.getName()); vo.setGoodsIntro(goods.getIntroduction()); vo.setGoodsCover(goods.getCoverImage()); vo.setGoodsPrice(goods.getTotalPrice()); } } return vo; } @Override public boolean confirmPhysicalOrder(Integer orderId, Integer appUserId) { TPhysicalGoodsOrder order = physicalGoodsOrderService.getById(orderId); // 校验订单存在、归属、状态(2=完成支付才能确认收货) if (order == null || !order.getAppUserId().equals(appUserId) || order.getStatus() != 2) { return false; } order.setStatus(3); // 确认收货 order.setDeliveryTime(LocalDateTime.now()); return physicalGoodsOrderService.updateById(order); } @Override public boolean confirmBigGiftOrder(Integer orderId, Integer appUserId) { TBigGiftPackageOrder order = bigGiftPackageOrderService.getById(orderId); // 校验订单存在、归属、状态(3=完成支付才能确认收货) if (order == null || !order.getAppUserId().equals(appUserId) || order.getStatus() != 3) { return false; } order.setStatus(4); // 确认收货 order.setDeliveryTime(LocalDateTime.now()); return bigGiftPackageOrderService.updateById(order); } }