package com.iamberry.wechat.service.agent;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import org.apache.commons.lang.StringUtils;
import com.iamberry.wechat.core.entity.agent.AgentOrderDto;
import com.iamberry.wechat.face.agent.AgentOrderService;
import com.iamberry.wechat.service.agent.dao.AgentOrderDAO;
import com.iamberry.wechat.tools.ResultInfo;

/**
 * 微代理订单 Service
 * @author 穆再兴
 *	2016年4月19日10:44:18
 */
@Service
public class AgentOrderServiceImpl implements AgentOrderService{

	@Autowired
	private AgentOrderDAO agentOrderDAO;

	/**
	 * 根据当前用户<微代理>openid<AgentOrderDto.openid> 查询所有订单
	 * @author 穆再兴
	 * @return
	 */
	public List<AgentOrderDto> getAgentOrderListByOpenId(AgentOrderDto agentOrderDto) {
		return agentOrderDAO.getAgentOrderListByOpenId(agentOrderDto);
	}
	
	/**
	 * 根据当前用户<微代理>userid<AgentOrderDesc.userid> 查询所有订单 总数
	 * @author 穆再兴
	 * @param agentOrderDesc
	 * @return
	 */
	public Integer getAgentOrderCountByUserId(AgentOrderDto agentOrderDto){
		agentOrderDto.getPage().initRecordBegin();
		return agentOrderDAO.getAgentOrderCountByUserId(agentOrderDto);
	}

	/**
	 * 根据当前用户<微代理>openId 查询所有订单 商品总数
	 * @param userId
	 * @return
	 */
	public Integer getProductCountByOpenId(String openId){
		return agentOrderDAO.getProductCountByOpenId(openId);
	}
	
	/**
	 * 根据openid查询 完成的订单总数
	 * 2016年5月11日
	 * @param openid
	 * @return
	 */
	public Integer selectCountOrderByOpenId(String openid){
		return agentOrderDAO.selectCountOrderByOpenId(openid);
	}
	
	/**
	 * 根据openid 查询 状态是：已支付、已发货、换货完成 的 第一条订单
	 * 2016年6月3日
	 * @author 穆再兴
	 * @param openid
	 * @return
	 */
	public String getPayedOrderByOpenId(String openid){
		return agentOrderDAO.getPayedOrderByOpenId(openid);
	}
	
	/**
	 * 根据openid 修改订单的锁定状态
	 * 2016年6月3日
	 * @author 穆再兴
	 * @param openid
	 * @return
	 */
	public Integer updateOrderLockTypeByOrderId(String orderid){
		return agentOrderDAO.updateOrderLockTypeByOrderId(orderid);
	}
	
	@Override
	public Map<String, Object> getOrderListAndCountByOpenid(
			AgentOrderDto orderDto) {
		Map<String, Object> map = new HashMap<String, Object>();
		if(orderDto == null || orderDto.getOrderOpenid() == null){
			return map;
		}
		orderDto.getPage().initRecordBegin();
		List<AgentOrderDto> orderList = new ArrayList<AgentOrderDto>();
		orderList = agentOrderDAO.getAgentOrderListByOpenId(orderDto);//代理订单
		map.put("orderList", orderList);
		return map;
	}
}
