package com.doumee.service.business; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Orders; 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.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 rk * @date 2026/04/10 */ public interface OrdersService { /** * 创建 * * @param orders 实体对象 * @return Integer */ Integer create(Orders orders); /** * 主键删除 * * @param id 主键 */ void deleteById(Integer id); /** * 删除 * * @param orders 实体对象 */ void delete(Orders orders); /** * 批量主键删除 * * @param ids 主键集 */ void deleteByIdInBatch(List ids); /** * 主键更新 * * @param orders 实体对象 */ void updateById(Orders orders); /** * 批量主键更新 * * @param ordersList 实体集 */ void updateByIdInBatch(List ordersList); /** * 主键查询 * * @param id 主键 * @return Orders */ Orders findById(Integer id); /** * 条件查询单条记录 * * @param orders 实体对象 * @return Orders */ Orders findOne(Orders orders); /** * 条件查询 * * @param orders 实体对象 * @return List */ List findList(Orders orders); /** * 分页查询 * * @param pageWrap 分页对象 * @return PageData */ PageData findPage(PageWrap pageWrap); /** * 条件统计 * * @param orders 实体对象 * @return long */ long count(Orders orders); /** * 查询订单详情 * * @param id 主键 * @return OrderDetailVO */ OrderDetailVO findDetail(Integer id); /** * 会员端订单详情 * * @param id 订单主键 * @param memberId 会员主键 * @return MyOrderDetailVO */ MyOrderDetailVO findMyOrderDetail(Integer id, Integer memberId); /** * 会员取消订单(仅异地寄存) * * @param orderId 订单主键 * @param memberId 会员主键 * @param reason 取消原因 */ void cancelOrder(Integer orderId, Integer memberId, String reason); /** * 寄存订单支付回调处理 * * @param outTradeNo 商户订单号 * @param wxTradeNo 微信订单号 */ void handleStorageOrderPayNotify(String outTradeNo, String wxTradeNo); /** * 门店核销收件 * * @param verifyCode 核销码 * @param shopId 门店主键 * @param images 图片地址列表(最多3张) * @param remark 备注 */ void shopVerifyOrder(String verifyCode, Integer shopId, List images, String remark); /** * 门店端查询订单详情 * 支持按订单主键或核销码查询,复用会员端详情逻辑 * * @param orderId 订单主键(与verifyCode二选一) * @param verifyCode 核销码(与orderId二选一) * @return 订单详情 */ MyOrderDetailVO findShopOrderDetail(Integer orderId, String verifyCode); /** * 查询手动派单信息 * * @param id 订单主键 * @return OrderDispatchVO */ OrderDispatchVO findDispatchInfo(Integer id); /** * 订单派单 * * @param dto 派单参数 */ void dispatch(DispatchDTO dto); /** * 根据分页查询条件统计订单汇总 * * @param pageWrap 分页查询条件 * @return OrderSummaryVO */ OrderSummaryVO findSummary(PageWrap pageWrap); /** * 计算保价费用 * @param declaredValue 报价金额 * @return 保价费用 */ BigDecimal calculateInsuranceFee(BigDecimal declaredValue); /** * 计算就地存取预估费用 * @param dto 就地存取计价请求参数 * @return 价格计算结果 */ PriceCalculateVO calculateLocalPrice(CalculateLocalPriceDTO dto); /** * 计算异地存取预估费用 * @param dto 异地存取计价请求参数 * @return 价格计算结果 */ PriceCalculateVO calculateRemotePrice(CalculateRemotePriceDTO dto); /** * 创建订单并唤起微信支付 * @param dto 创建订单请求参数 * @param memberId 当前登录会员ID * @return 支付响应 */ PayResponse createOrder(CreateOrderDTO dto, Integer memberId); /** * 继续支付(待支付订单重新唤起微信支付) * @param orderId 订单主键 * @param memberId 当前登录会员ID * @return 支付响应 */ PayResponse continuePay(Integer orderId, Integer memberId); /** * 小程序端-查询我的订单分页 * @param pageWrap 分页查询参数(model含status) * @param memberId 会员主键 * @return 分页结果 */ PageData findMyOrderPage(PageWrap 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 images, String remark, Integer driverId); /** * 确认顾客已到店 * 就地寄存/异地寄存,且存在取件门店,状态为待取件(5) * 检查逾期状态:逾期则标记逾期,未逾期则完成订单 * * @param orderId 订单主键 * @param shopId 当前操作门店主键 */ void confirmCustomerArrived(Integer orderId, Integer shopId); }