package com.iamberry.wechat.service.mapper;

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

import com.iamberry.wechat.core.entity.PaperBean;
import com.iamberry.wechat.core.entity.drp.IncomeRecord;
import com.iamberry.wechat.core.entity.drp.ObjRecord;
import com.iamberry.wechat.core.entity.drp.ObjRecord2;
import com.iamberry.wechat.core.entity.order.Order;
import com.iamberry.wechat.core.entity.reback.RebackInfo;
import com.iamberry.wechat.core.entity.reback.RolesListDto;
import com.iamberry.wechat.core.entity.reback.StoreStatiscInfo;
import com.iamberry.wechat.core.entity.task.TaskModel;

/**
 * 
 * @author 欧阳明
 * @date 2016-05-25
 */
public interface RebackInfoMapper {

	// 获取单个返现对象
	public RebackInfo getOneById(int id);

	// 根据查询条件获取返现对象
	public List<RebackInfo> selectAll(RebackInfo rebackInfo);

	// 分页统计条数
	public int getAllCount(RebackInfo rebackInfo);

	// 批量插入数据
	public int batchInsert(List<RebackInfo> rebackInfoList);

	// 插入对象
	public int insert(RebackInfo rebackInfo);

	// 更新对象
	public int update(RebackInfo rebackInfo);

	// 更新订单对应的状态 订单号是查询条件
	public int updateStatus(RebackInfo rebackInfo);

	// 防止订单重复load
	public int alreadyIn(String orderId);

	// ================================订单部分的=============================
	// 加载订单表记录
	public List<Order> loadOrder(Order order);

	// 加载订单条数
	public int loadOrderCount(Order order);

	// 获取单条订单
	public Order getOrderById(String id);

	// 获取订单里所有商品的总数
	public int getItemsProductNums(String id);

	// ============================微信统计===================================
	// 获取最近7天的订单收入记录-未入账
	public List<ObjRecord> getRecentIncome7Day(Map map);

	// 获取最近6个月的订单收入记录
	public List<ObjRecord> getRecentIncome6Month(Map map);

	// 获取未入账分销订单
	public List<ObjRecord> getUnInComeRecord(Map map);

	// 获取分销订单的记录
	public List<IncomeRecord> getSearchInComeRecord(Map map);

	// 获取分销订单的总数
	public int getSearchInComeRecordCount(Map map);

	// 获取未入账的总金额
	public int getUnIncomeMoney(String openid);

	// 获取未入账的总金额(对于总代理而言的)
	public int getUnIncomeMoney2(Map map);

	// 获取未入账分销订单(父级代理)
	public List<ObjRecord2> getDrpUnInComeRecord(Map map);

	// 获取未入账分销订单(父级代理)
	public List<ObjRecord2> getDrpUnInComeRecord2(Map map);

	// 合作商
	public List<StoreStatiscInfo> getUnderlingStatisc(Map map);

	// 获取下级的角色列表
	public List<RolesListDto> getRolesList(Integer pid);

	// 分销商的下属微代理用户
	public List<StoreStatiscInfo> getUnderlingStatisc2(Map map);

	// 分销商的在用户表的ids
	public List<String> getUnderlingUserIds(Map map);

	// 分销商的用户表的ids(门店的多级)
	public List<String> getUnderlingUserIds2(Map map);

	/**
	 * 获取某一个微代理在规定的时间内,某一个产品类型销售达到X台的用户以及销售数量，已返利 
	 * @param bean
	 * @return
	 */
	public List<TaskModel> getByDate(PaperBean bean);
}
