package com.goafanti.order.service;

import java.math.BigDecimal;
import java.text.ParseException;
import com.goafanti.core.mybatis.page.Pagination;
import com.goafanti.order.bo.BillListBo;
import com.goafanti.order.bo.C2BOrderDetailBo;
import com.goafanti.order.bo.C2COrderDetailBo;

public interface OrderService {
	
	/**
	 * 查询商品详情
	 * @param commodityId 商品id
	 * @param orderType 订单类型
	 * @return
	 */
	C2COrderDetailBo selectCommodityDetail(String commodityId,Integer orderType);

	/**
	 * 添加意向
	 * @param orderNo 订单编号
	 * @param commodityId 商品id
	 * @param commodityMode 商品型号
	 * @param commodityQuantity 商品数量
	 * @param commodityType 商品类型
	 * @param createTime 创建时间
	 * @param remarks 备注
	 * @return
	 */
	int addIntention(String orderNo, String commodityId, String commodityMode, Integer commodityQuantity,Integer commodityType,
			String createTime, String remarks) throws ParseException ;

	/**
	 * 支付定金
	 * @param orderNo 订单编号
	 * @param fundAmount 金额
	 * @return remarks 备注
	 */
	int updatePayForFirst(String orderNo, BigDecimal fundAmount,String remarks);

	/**
	 * 支付尾款
	 * @param orderNo 订单编号
	 * @param fundAmount 金额
	 * @param remarks 备注
	 * @return
	 */
	int updatePayForLast(String orderNo, BigDecimal fundAmount, String remarks);

	/**
	 * 
	 * @param confirm 是否
	 * @return
	 */
	Pagination<C2BOrderDetailBo> selectOrderList(boolean confirm,Integer pageNo,Integer PageSize);

	/**
	 * 查询订单详情
	 * @param orderNo
	 * @return
	 */
	C2BOrderDetailBo selectOrderDetail(String orderNo);

	/**
	 * 用户查询流水记录
	 * @param orderNo
	 * @return
	 */
	Pagination<BillListBo> selectOrderBillList(String orderNo,Integer pageNo,Integer pageSize);

	/**
	 * 提现
	 * @param orderNo
	 * @return
	 */
	int updateApplyForWithdraw(String orderNo,String remarks);

	/**
	 * 取消订单
	 * @param orderNo
	 * @return
	 */
	int updateApplyForCancel(String orderNo);

	/**
	 * 确认意向订单
	 * @param orderNo 订单编号
	 * @param confirm 是否确认
	 * @return
	 */
	int updateConfirmIntention(String orderNo, boolean confirm);
	
	/**
	 * 申请退款(买家)
	 * @param orderNo
	 * @return
	 */
	int updateApplyForRefund(String orderNo);

	/**
	 * 确认退款(买家)
	 * @param orderNo
	 * @return
	 */
	int updateConfirmRefund(String orderNo,boolean confirm);
}
