rk
7 小时以前 7eebfc8a64d2cbbd73453a2b653d5a5bfd66a32f
server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -1,30 +1,40 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.dto.*;
import com.doumee.dao.vo.OrderReleaseVO;
import com.wechat.pay.java.service.refund.model.RefundNotification;
import com.doumee.dao.dto.CalculateLocalPriceDTO;
import com.doumee.dao.dto.CalculateRemotePriceDTO;
import com.doumee.dao.dto.CreateOrderDTO;
import com.doumee.dao.dto.DispatchDTO;
import com.doumee.dao.dto.CommentOrderDTO;
import com.doumee.dao.dto.MyOrderDTO;
import com.doumee.dao.vo.MyOrderDetailVO;
import com.doumee.dao.vo.MyOrderVO;
import com.doumee.dao.vo.OrderDetailVO;
import com.doumee.dao.vo.OrderDispatchVO;
import com.doumee.dao.vo.OrderSummaryVO;
import com.doumee.dao.vo.OverdueFeeVO;
import com.doumee.dao.vo.PayResponse;
import com.doumee.dao.vo.PriceCalculateVO;
import java.math.BigDecimal;
import java.util.List;
/**
 * 订单信息记录Service定义
 * @author 江蹄蹄
 * @date 2025/07/09 12:00
 * 寄存订单信息Service定义
 * @author rk
 * @date 2026/04/10
 */
public interface OrdersService {
    /**
     * 创建
     *
     *
     * @param orders 实体对象
     * @return Integer
     */
    OrderReleaseVO create(Orders orders);
    Integer create(Orders orders);
    /**
     * 主键删除
@@ -52,15 +62,14 @@
     *
     * @param orders 实体对象
     */
//    void updateById(Orders orders);
    void updateById(Orders orders);
    void update(Orders orders);
    /**
     * 批量主键更新
     *
     * @param orderss 实体集
     * @param ordersList 实体集
     */
    void updateByIdInBatch(List<Orders> orderss);
    void updateByIdInBatch(List<Orders> ordersList);
    /**
     * 主键查询
@@ -85,7 +94,7 @@
     * @return List<Orders>
     */
    List<Orders> findList(Orders orders);
    /**
     * 分页查询
     *
@@ -102,56 +111,248 @@
     */
    long count(Orders orders);
    void accept(Integer orderId, Member member);
    void begin(Integer orderId,Member member);
//    void updOrderData(UpdOrderDataDTO updOrderDataDTO);
//
    void confirmUpd(ConfirmUpdOrderDTO confirmUpdOrderDTO);
    /**
     * 查询订单详情
     *
     * @param id 主键
     * @return OrderDetailVO
     */
    OrderDetailVO findDetail(Integer id);
    /**
     * 订单取消前置提示
     * @param orderId
     * @param member
     * @return
     * 会员端订单详情
     *
     * @param id       订单主键
     * @param memberId 会员主键
     * @return MyOrderDetailVO
     */
    String cancelTips(Integer orderId,Member member);
    void cancelOrder(Integer orderId,Member member);
    OrderReleaseVO doneOrder(DoneOrderDTO doneOrderDTO);
    void comment(CommentDTO commentDTO);
    MyOrderDetailVO findMyOrderDetail(Integer id, Integer memberId);
    /**
     * 支付回调业务
     * @param preOrderId
     * @return
     * 会员取消订单(仅异地寄存)
     *
     * @param orderId  订单主键
     * @param memberId 会员主键
     * @param reason   取消原因
     */
    String payNotify(String preOrderId,String paymentNo);
    void cancelOrder(Integer orderId, Integer memberId, String reason);
    void platformCancel(Integer orderId, LoginUserInfo loginUserInfo);
    /**
     * 寄存订单支付回调处理
     *
     * @param outTradeNo 商户订单号
     * @param wxTradeNo  微信订单号
     */
    void handleStorageOrderPayNotify(String outTradeNo, String wxTradeNo);
    PageData<Orders> findPageForMini(PageWrap<Orders> pageWrap);
    /**
     * 门店核销收件
     *
     * @param verifyCode 核销码
     * @param shopId     门店主键
     * @param images     图片地址列表(最多3张)
     * @param remark     备注
     */
    void shopVerifyOrder(String verifyCode, Integer shopId, List<String> images, String remark);
    Orders getDetail(Integer id,Member member);
    /**
     * 门店端查询订单详情
     * 支持按订单主键或核销码查询,复用会员端详情逻辑
     *
     * @param orderId    订单主键(与verifyCode二选一)
     * @param verifyCode 核销码(与orderId二选一)
     * @return 订单详情
     */
    MyOrderDetailVO findShopOrderDetail(Integer orderId, String verifyCode);
    void refundCallback(RefundNotification refundNotification);
    /**
     * 查询手动派单信息
     *
     * @param id 订单主键
     * @return OrderDispatchVO
     */
    OrderDispatchVO findDispatchInfo(Integer id);
    void autoComment();
    /**
     * 订单派单
     *
     * @param dto 派单参数
     */
    void dispatch(DispatchDTO dto);
    void autoConfirm();
    /**
     * 根据分页查询条件统计订单汇总
     *
     * @param pageWrap 分页查询条件
     * @return OrderSummaryVO
     */
    OrderSummaryVO findSummary(PageWrap<Orders> pageWrap);
    Long getTotal(Orders orders);
    /**
     * 计算保价费用
     *
     * @param declaredValue 报价金额
     * @return 保价费用
     */
    BigDecimal calculateInsuranceFee(BigDecimal declaredValue);
    void autoGrabOrders();
    /**
     * 计算就地存取预估费用
     *
     * @param dto 就地存取计价请求参数
     * @return 价格计算结果
     */
    PriceCalculateVO calculateLocalPrice(CalculateLocalPriceDTO dto);
    void initializeCode();
    /**
     * 计算异地存取预估费用
     *
     * @param dto 异地存取计价请求参数
     * @return 价格计算结果
     */
    PriceCalculateVO calculateRemotePrice(CalculateRemotePriceDTO dto);
    OrderReleaseVO reusePay(ReusePayDTO reusePayDTO);
    /**
     * 创建订单并唤起微信支付
     *
     * @param dto      创建订单请求参数
     * @param memberId 当前登录会员ID
     * @return 支付响应
     */
    PayResponse createOrder(CreateOrderDTO dto, Integer memberId);
    void confirmFee(ConfirmFeeOrderDTO orders);
    /**
     * 继续支付(待支付订单重新唤起微信支付)
     *
     * @param orderId  订单主键
     * @param memberId 当前登录会员ID
     * @return 支付响应
     */
    PayResponse continuePay(Integer orderId, Integer memberId);
    void autoCancelWaitPay();
}
    /**
     * 小程序端-查询我的订单分页
     *
     * @param pageWrap 分页查询参数(model含status)
     * @param memberId 会员主键
     * @return 分页结果
     */
    PageData<MyOrderVO> findMyOrderPage(PageWrap<MyOrderDTO> pageWrap, Integer memberId);
    /**
     * 查询订单超时费用
     *
     * @param orderId 订单主键
     * @return 超时费用计算结果
     */
    OverdueFeeVO calculateOverdueFee(Integer orderId);
    /**
     * 司机核销(异地寄存且有取件门店)
     * 派送中(4) → 已到店(5),校验司机核销码
     *
     * @param verifyCode 司机核销码
     * @param images     图片地址列表(最多3张)
     * @param remark     备注
     * @param driverId   司机(会员)主键
     */
    void driverVerifyOrder(String verifyCode, List<String> images, String remark, Integer driverId);
    /**
     * 确认顾客已到店
     * 就地寄存/异地寄存,且存在取件门店,状态为待取件(5)
     * 检查逾期状态:逾期则标记逾期,未逾期则完成订单
     *
     * @param orderId 订单主键
     * @param shopId  当前操作门店主键
     */
    void confirmCustomerArrived(Integer orderId, Integer shopId);
    /**
     * 逾期费用支付(唤起微信支付)
     *
     * @param orderId  寄存订单主键
     * @param memberId 当前登录会员ID
     * @return 支付响应
     */
    PayResponse payOverdueFee(Integer orderId, Integer memberId);
    /**
     * 逾期费用支付回调处理
     *
     * @param outTradeNo 商户订单号
     * @param wxTradeNo  微信订单号
     */
    void handleOverdueFeePayNotify(String outTradeNo, String wxTradeNo);
    /**
     * 取件门店确认出库
     * 就地寄存/异地寄存,存在取件门店,status=5,overdueStatus=0/2,confirmArriveTime不为空
     * 出库后订单完成
     *
     * @param orderId 订单主键
     * @param shopId  当前操作门店主键
     * @param images  出库图片(最多3张)
     * @param remark  出库备注
     */
    void confirmStoreOut(Integer orderId, Integer shopId, List<String> images, String remark);
    /**
     * 计算并更新订单三方收益(存件门店/取件门店/司机)
     * 就地寄存:仅存件门店收益
     * 异地寄存:存件门店 + 司机收益;有取件门店时加上取件门店收益
     *
     * @param orderId 订单主键
     */
    void calculateAndSaveOrderFees(Integer orderId);
    /**
     * 会员删除订单(逻辑删除,仅已完成/已取消/已退款订单可删除)
     *
     * @param orderId  订单主键
     * @param memberId 会员主键
     */
    void deleteMyOrder(Integer orderId, Integer memberId);
    /**
     * 门店支付押金(唤起微信支付)
     *
     * @param shopId 门店主键
     * @return 支付响应
     */
    PayResponse payShopDeposit(Integer shopId);
    /**
     * 门店押金支付回调处理
     *
     * @param outTradeNo 商户订单号
     * @param wxTradeNo  微信订单号
     */
    void handleShopDepositPayNotify(String outTradeNo, String wxTradeNo);
    /**
     * 订单结算:根据 SETTLEMENT_DATE 配置,将已完成的待结算订单进行结算
     * 更新订单结算状态、Revenue 入账状态、门店/司机余额
     */
    void settleOrders();
    /**
     * 订单评价
     * status=7且commentStatus=0时可评价,按对象(存件门店/取件门店/司机)分别记录评分
     *
     * @param dto      评价请求
     * @param memberId 当前登录会员ID
     */
    void commentOrder(CommentOrderDTO dto, Integer memberId);
    /**
     * 门店端订单分页列表
     * 查询存件门店或取件门店等于当前登录门店的订单
     *
     * @param pageWrap 分页查询参数(model含status/combinedStatus)
     * @param shopId   当前登录门店主键
     * @return 分页结果
     */
    PageData<MyOrderVO> findShopOrderPage(PageWrap<MyOrderDTO> pageWrap, Integer shopId);
}