package cn.superdesk.uniorder.service.order.base;

import cn.superdesk.uniorder.common.enums.common.CommonOrderSubjectSituationEnum;
import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.dao.entity.base.UnifiedOrder;
import cn.superdesk.uniorder.dao.entity.base.UnifiedOrderReturn;
import cn.superdesk.uniorder.dto.vo.unified.UnifiedOrderReturnVo;
import cn.superdesk.uniorder.dto.vo.unified.UnifiedOrderCommonHeadSum;
import cn.superdesk.uniorder.dto.vo.unified.ViewUnifiedOrderReturn;
import cn.superdesk.uniorder.service.base.BaseService;

import java.util.List;
import java.util.Map;


/**
 * @Description: 重构 唉 为了京东对账 ,不得不重构
 * @Author: linjinyu
 * @CreateDate: 2021/10/21 下午3:26
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/10/21 下午3:26
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface UnifiedOrderReturnService extends BaseService<UnifiedOrderReturn> {

	UnifiedOrderCommonHeadSum getPageHeadSum(Map<String, Object> queryParams);

	List<ViewUnifiedOrderReturn> findView(Map<String, Object> queryParams);

	R<List<UnifiedOrderReturnVo>> findViewReturnVo(Map<String, Object> queryParams, int pageNum, int pageSize);


	/****************************************** 工具方法 start ******************************************/

	/**
	 * 退单单号找退单
	 *
	 * @param refundOrderSn
	 * @return
	 */
	List<UnifiedOrderReturn> findByRefundOrderSn(String refundOrderSn);

	UnifiedOrderReturn getByRefundOrderSn(String refundOrderSn);

	/**
	 * 正单单号找退单
	 *
	 * @param orderSn
	 * @return
	 */
	List<UnifiedOrderReturn> findByOrderSn(String orderSn);

	UnifiedOrderReturn getByOrderSn(String orderSn);

	/**
	 * 此方法的前题是 相信京东 京东已经告诉你 有售后 , 没有这个前题的情况下,是否适用,要考量
	 * <p>
	 * 还有一个前题 只适用 供应商结算场景 与 侨城汇 企业结算(积分) 无关 服务于 京东对账
	 * 还有一个作用 就是 隐藏关注 退单的问题 修饰为 只用正单实体就能解决问题
	 *
	 * @param orderSn
	 * @param situationEnum
	 * @return
	 */
	UnifiedOrder getByOrderSnAndCheckUpAndFixField(String orderSn, CommonOrderSubjectSituationEnum situationEnum);

	/****************************************** 工具方法   end ******************************************/

}
