package com.iamberry.wechat.service.mapper;

import java.util.List;

import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
import com.iamberry.wechat.core.entity.drp.PlaceInfo;
import com.iamberry.wechat.core.entity.member.Member;
import com.iamberry.wechat.core.entity.order.Order;
import com.iamberry.wechat.core.entity.order.OrderItem;
import com.iamberry.wechat.core.entity.order.OrderRebackMoney;

public interface AdminOrderMapper {
	
	
	
	/**
	 * 根据订单编号，获取该订单的返利信息
	 * @param orderId  订单编号
	 * @return List<OrderRebackMoney> 返利信息
	 */
	public List<OrderRebackMoney> selectOrderRebackByOrderId(String orderId);
	
	//后台订单列表查询
	public List<Order> selectShopOrder(Order order);
	
	//根据页面条件查询订单列表
	public List<Order> selectShopOrderByOrderId(Order order);
	
	//根据订单id查询订单
	public Order getShopOrderByOrderId(String orderId);
	
	//根据订单id查询订单项
	public List<OrderItem> getShopOrderItemByOrderId(String orderId);
	
	//根据条件获取订单总数
	public Integer selectShopOrderCount(Order order);
	
	//根据orderId查询订单的状态
	public Order selectOrderStatusByOrderId(String orderId);
	
	//根据orderId修改订单状态
	public Integer updateOrderStatusByOrderId(Order order);
	
	//根据orderid添加发货信息并修改状态
	public Integer deliverOrderByOrderId(Order order);
	
	//根据orderId和oldStatus修改发货信息和状态
	public Integer updateOrderDeliver(Order order);
	
	//修改备注信息
	public Integer updateOrderAdminRemarkByOrderId(Order order);
	
	//获取没有奖励积分但可以奖励的数据
	public List<Order> selectOrderByIntegral(Order order);
	
	//按条件查询订单总数量
	public Integer getOrderNum(Order order);
	
	//对客户进行积分奖励
	public Integer updateOrderIntegral(String orderId);
	
	//线下代理现金记录表中插入奖励积分的数据
	public Integer addplaceLogs(Order order);
	
	//根据openid查询用户是通过哪个渠道购买的商品
	public Member getUserByOpenId(String openId);
	
	//根据推荐人id查询该推荐人总积分和可用积分
	public Member getUserByUserRefereeid(Integer userId);
	
	//通过userid修改会员积分信息
	public Integer updateUserByUserId(Member member);
	
	//根据id获取系统规则
	public ShopSystemRule getReluByRid(Integer rId);
	
	//根据类型查询系统规则
	public ShopSystemRule getReluByRtype(Integer ruleType);
	
	//修改线下代理信息表对应的金额
	public Integer updatePlaceInfo(PlaceInfo placeInfo);
	
	//获取单个分销信息
	public PlaceInfo getPlaceInfoByPlaceId(int id);
	
	// 根据订单号，获取订单的所属人
	public String selectSalesOpenIdByOrderId(String orderId);
	
	//根据创建时间查询订单
	public List<Order> getOrderByCreateTime(Order order);
	
	//根据创建时间查询订单-最后5分钟的数据
	public List<Order> getOrderByCreateTimeAndFiveMinutes(Order order);
	
	//根据order集合对象批量修改订单状态
	public Integer updateOrderByOrderId(List<String> list);
	
	// 根据订单号和订单状态修改订单状态
	public Integer updateOrderStatusByOrderIdAndToStatus(Order order);
	
	/**
	 * 获取某个订单的所有产品的总个数
	 * @param orderId
	 * @return
	 */
	public List<OrderItem> getItemsNumByOrderId(String orderId);
	
	/**
	 * 批量修改订单状态
	 * @param list
	 * @return
	 */
	public Integer updateOrderListStatus(List<Order> list);
	
	/**
	 * 查询状态为待发货的所有订单号
	 * @return
	 */
	public List<Order> getOrderList(Order order);
}