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<AppletOrderListVO> getOrderList(AppletOrderListQuery query, Integer appUserId) {
|
Page<AppletOrderListVO> page = new Page<>(query.getPageNum(), query.getPageSize());
|
List<AppletOrderListVO> 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);
|
}
|
}
|