package com.palmnest.service.wechat;

import com.palmnest.model.estateserve.Product;
import com.palmnest.model.estateserve.Recharge;

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


/**
 * 充值端接口
 *
 * @author xiemin
 * @since 2017-05-18
 */
public interface RechargeManager {

	/**
	 * 根据省份、运营商查询产品
	 *
	 * @param province
	 * @param carrieroperator
	 * @param type
	 * @return
	 */
	public List<Product> findProduct(String province, String carrieroperator, String type, String isEnabled);

	/**
	 * 添加充值记录
	 *
	 * @param map
	 * @return
	 */
	public int addRecharge(Map<String, String> map);

	/**
	 * 更新支付状态
	 *
	 * @param xmlMsg
	 * @return
	 */
	public String updateRechargeStatus(Map<String, String> map);

	/**
	 * 根据充值id查询充值信息
	 *
	 * @param id
	 * @return
	 */
	public Recharge findRecharge(String id);

	/**
	 * 更新充值状态
	 *
	 * @param id
	 * @param ststus
	 * @return
	 */
	public int updateRecharge(Integer id, int ststus);

	/**
	 * 更新充值信息
	 *
	 * @param id
	 * @param ststus
	 * @return
	 */
	public int updateRecharge(Recharge re);

	/**
	 * 查询产品信息
	 *
	 * @param productId
	 * @return
	 */
	public Map<String, String> findProductById(int productId);

	/**
	 * 根据订单号查询充值信息
	 *
	 * @param ordId
	 * @return
	 */
	public Recharge findRechargeByOrdId(String ordId);

	/**
	 * 查询充值记录信息
	 *
	 * @param openId
	 * @return
	 */
	public List<Map<String, Object>> getRechargeRecode(String openId);

	/**
	 * 根据主键ID查询订单详情
	 *
	 * @param id
	 * @return
	 */
	public Map<String, Object> getRechareRecordInfo(Integer id);

	/**
	 * 创建订单
	 *
	 * @param reqParams
	 * @return
	 * @throws Exception
	 */
	public Map<String, String> createOrder(Map<String, String> reqParams) throws Exception;

	/**
	 * 恢复无项目的订单数据
	 * 根据微信用户所属的项目初始化订单项目信息
	 *
	 * @param month 月份（2017-08）
	 */
	public void assignRecoveryRecharge(String month);
}
