package com.ssj.service.weixin.order.service;

import com.ssj.bean.weixin.order.domain.Order;
import com.ssj.bean.weixin.sales.domain.LibOrderDetails;
import com.ssj.bean.weixin.user.domain.User;
import com.ssj.framework.core.common.service.BaseService;
import com.ssj.framework.core.util.ResponseEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;



public interface OrderService extends BaseService<Order, String>{

	 public void updateOrderStatus(String orderNo,String transactionId,Integer orderStatus);
	 /**
	  * 退款成功后处理订单改为已退款状态
	 * @param orderNo
	 * 创建人：ZhangCaibao 
	 * 2017年5月5日 下午2:36:12 
	 * @void
	  */
	 public void updateOrderClosed(String orderNo);
	 
	 /**
	  * 退款直接修改订单记录
	 * @param orderNo
	 * 创建人：ZhangCaibao 
	 * 2017年5月5日 下午2:40:04 
	 * @void
	  */
	 public void updateOrderRefunds(String orderNo);
	 
	 Page<Map<String, Object>> findForPageList(Map<String, Object> searchParams, Pageable pageable);
	 
	 /**
	  * 
	  * @Title: findUserDepositOrder
	  * @Description: 找到用户支付押金的订单
	  * @param @param userId
	  * @param @return    设定文件
	  * @return Order    返回类型
	  * @author shenhao
	  * @date 2017年6月28日 下午6:22:13
	  * @throws
	  */
	public Order findUserDepositOrder(String userId);
	
	
	 /**
	  * 通过orderNo查询多月购卡的总金额
	 * @param orderNo
	 * 创建人：wuwen 
	 * 2017年11月1日11:41:59
	 * @void
	  */
	 public Order findOrderNo(String orderNo);
	 /**
	  * 
	 * 创建人:zhanglin
	 * @param @param searchParams
	 * @param @return       
	 * 方法说明：导出资金流水
	  * @date 2018年1月24日 下午4:06:07
	  */
	 
	 List<Map<String, Object>> getOrder(Map<String, Object> searchParams);
	 
	 
	 /*
	  * 创建人:wuwen
	  * 以订单为单位统计财务数据 
	  * 2018年7月2日14:38:36
	  */
	 Page<Map<String, Object>> findForPageLessonServiceList(Map<String, Object> searchParams, Pageable pageable);
	 
	 
	 /*
	  * 创建人:wuwen
	  * 课耗明细表
	  * 2018年7月2日14:38:36
	  */
	 Page<Map<String, Object>> findForPageLessonServiceByCourseList(Map<String, Object> searchParams, Pageable pageable);
	 
	 
	 /*
	  * 创建人:wuwen
	  * 老师业绩表
	  * 2018年7月2日14:38:36
	  */
	 Page<Map<String, Object>> findForPageLessonServiceByTeacherList(Map<String, Object> searchParams, Pageable pageable);
	 
	 
	 public Map<String, Object>  payInfo(User user,String total_fee,String pay_type);
	 public Map<String, Object>  payVIP(User user,LibOrderDetails libOrderDetails);
	 public ResponseEntity  refund(String orderId,BigDecimal refund_fee,String  userId);
}
