package cn.lili.modules.order.order.service; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.system.entity.vo.Traces; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 子订单业务层 * * @author Chopper * @since 2020/11/17 7:36 下午 */ public interface OrderService extends IService { /** * 系统取消订单 * * @param orderSn 订单编号 * @param reason 错误原因 * @param refundMoney 是否退款 */ void systemCancel(String orderSn, String reason,Boolean refundMoney); /** * 根据sn查询 * * @param orderSn 订单编号 * @return 订单信息 */ Order getBySn(String orderSn); /** * 订单查询 * * @param orderSearchParams 查询参数 * @return 简短订单分页 */ IPage queryByParams(OrderSearchParams orderSearchParams); /** * 订单信息 * * @param orderSearchParams 查询参数 * @return 订单信息 */ List queryListByParams(OrderSearchParams orderSearchParams); /** * 根据促销查询订单 * * @param orderPromotionType 订单类型 * @param payStatus 支付状态 * @param parentOrderSn 依赖订单编号 * @param orderSn 订单编号 * @return 订单信息 */ List queryListByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn); /** * 根据促销查询订单 * * @param orderPromotionType 订单类型 * @param payStatus 支付状态 * @param parentOrderSn 依赖订单编号 * @param orderSn 订单编号 * @return 订单信息 */ long queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn); /** * 父级拼团订单分组 * * @param pintuanId 拼团id * @return 拼团订单信息 */ List queryListByPromotion(String pintuanId); /** * 查询导出订单列表 * * @param orderSearchParams 查询参数 * @return 导出订单列表 */ void queryExportOrder(HttpServletResponse response,OrderSearchParams orderSearchParams) ; /** * 订单详细 * * @param orderSn 订单SN * @return 订单详细 */ OrderDetailVO queryDetail(String orderSn); /** * 创建订单 * 1.检查交易信息 * 2.循环交易购物车列表,创建订单以及相关信息 * * @param tradeDTO 交易DTO */ void intoDB(TradeDTO tradeDTO); /** * 订单付款 * 修改订单付款信息 * 记录订单流水 * * @param orderSn 订单编号 * @param paymentMethod 支付方法 * @param receivableNo 第三方流水 */ void payOrder(String orderSn, String paymentMethod, String receivableNo); /** * 订单确认成功 * * @param orderSn */ void afterOrderConfirm(String orderSn); /** * 取消订单 * * @param orderSn 订单SN * @param reason 取消理由 * @return 订单 */ Order cancel(String orderSn, String reason); /** * 发货信息修改 * 日志功能内部实现 * * @param orderSn 订单编号 * @param memberAddressDTO 收货地址信息 * @return 订单 */ Order updateConsignee(String orderSn, MemberAddressDTO memberAddressDTO); /** * 订单发货 * * @param orderSn 订单编号 * @param invoiceNumber 发货单号 * @param logisticsId 物流公司 * @return 订单 */ Order delivery(String orderSn, String invoiceNumber, String logisticsId); /** * 订单发货 * * @param orderSn 订单编号 * @return 订单 */ Order shunFengDelivery(String orderSn); /** * 获取物流踪迹 * * @param orderSn 订单编号 * @return 物流踪迹 */ Traces getTraces(String orderSn); /** * 获取地图版 物流踪迹 * * @param orderSn 订单编号 * @return 物流踪迹 */ Traces getMapTraces(String orderSn); /** * 订单核验 * * @param verificationCode 验证码 * @param orderSn 订单编号 * @return 订单 */ Order take(String orderSn, String verificationCode); /** * 订单核验 * * @param verificationCode 验证码 * @return 订单 */ Order take(String verificationCode); /** * 根据核验码获取订单信息 * * @param verificationCode 验证码 * @return 订单 */ Order getOrderByVerificationCode(String verificationCode); /** * 订单完成 * * @param orderSn 订单编号 */ void complete(String orderSn); /** * 系统定时完成订单 * * @param orderSn 订单编号 */ void systemComplete(String orderSn); /** * 通过trade 获取订单列表 * * @param tradeSn 交易编号 * @return 订单列表 */ List getByTradeSn(String tradeSn); /** * 发送更新订单状态的信息 * * @param orderMessage 订单传输信息 */ void sendUpdateStatusMessage(OrderMessage orderMessage); /** * 根据订单sn逻辑删除订单 * * @param sn 订单sn */ void deleteOrder(String sn); /** * 开具发票 * * @param sn 订单sn * @return */ Boolean invoice(String sn); /** * 自动成团订单处理 * * @param pintuanId 拼团活动id * @param parentOrderSn 拼团订单sn */ void agglomeratePintuanOrder(String pintuanId, String parentOrderSn); /** * 获取待发货订单编号列表 * * @param response 响应 * @param logisticsName 店铺已选择物流公司列表 */ void getBatchDeliverList(HttpServletResponse response, List logisticsName); /** * 订单批量发货 * * @param files 文件 */ void batchDeliver(MultipartFile files); /** * 获取订单实际支付的总金额 * * @param orderSn 订单sn * @return 金额 */ Double getPaymentTotal(String orderSn); /** * 查询订单支付记录 * * @param page 分页 * @param queryWrapper 查询条件 * @return 订单支付记录分页 */ IPage queryPaymentLogs(IPage page, Wrapper queryWrapper); /** * 检查是否开始虚拟成团 * * @param pintuanId 拼团活动id * @param requiredNum 成团人数 * @param fictitious 是否开启成团 * @return 是否成功 */ boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious); /** * 订单部分发货 * * @param partDeliveryParamsDTO 参数 * @return 订单 */ Order partDelivery(PartDeliveryParamsDTO partDeliveryParamsDTO); /** * 卖家订单备注 * * @param orderSn 订单编号 * @param sellerRemark 卖家订单备注 * @return 订单 */ Order updateSellerRemark(String orderSn, String sellerRemark); }