package com.xinelu.applet.mapper.nursingorder;


import com.xinelu.applet.vo.nursingorder.AppletGoodsOrderVO;
import com.xinelu.applet.vo.nursingorder.ConsultationGoodVO;
import com.xinelu.applet.vo.nursingorder.NursingOrderInfoVO;
import com.xinelu.applet.vo.nursingorder.PatientOrder;
import com.xinelu.applet.vo.specialdisease.AppointmentOrderDetailsInfoVO;
import com.xinelu.common.core.domain.entity.SysDictData;
import com.xinelu.manage.domain.goodsOrder.GoodsOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 功能描述: 护理站订单信息
 *
 * @author zhangheng
 */
public interface NursingOrderMapper {

    /**
     * 根据被护理人patientId查询订单信息
     *
     * @param patientId 会员id
     * @return 订单列表
     */
    List<NursingOrderInfoVO> getNursingOrderVOByPatientId(Long patientId);

    /**
     * 根据护理人id以及订单状态查询订单信息
     *
     * @param goodsOrderVO 订单信息
     * @return AppletGoodsOrderVO
     **/
    List<AppletGoodsOrderVO> getGoodsOrder(AppletGoodsOrderVO goodsOrderVO);

    /**
     * 根据订单编号查询专家咨询订单详情
     *
     * @param orderNo 订单信息
     * @return ConsultationGoodVO
     **/
    ConsultationGoodVO getConsultationOrder(String orderNo);

    /**
     * 查询退款原因
     *
     * @param sysDictData 退款原因
     * @return com.xinyilu.common.core.domain.entity.SysDictData
     **/
    List<SysDictData> getRefundReason(SysDictData sysDictData);

    /**
     * 修改商品订单(退款售后记录信息)
     *
     * @param goodsOrder 商品订单
     * @return 结果
     */
    int updateGoodsOrder(GoodsOrder goodsOrder);

    /**
     * 根据预约订单编号查询对应得详情信息
     *
     * @param orderNo 订单编号
     * @return 详情信息
     */
    AppointmentOrderDetailsInfoVO getAppointmentOrderDetailsInfo(String orderNo);

    /**
     * 查询护理站信息
     *
     * @param nurseStationItemId 护理站项目id
     * @return 护理站信息
     */
    AppointmentOrderDetailsInfoVO getNurseStationByItemId(Long nurseStationItemId);

    /**
     * 根据openid编号查询对应得订单
     *
     * @param patientId   openid编号
     * @param orderStatus 订单状态
     * @return AjaxResult
     */
    List<PatientOrder> getAppointmentOrderListByParentId(@Param("patientId") Long patientId, @Param("orderStatus") String orderStatus);

    /**
     * 根据openid编号查询对应得订单
     *
     * @param patientId       openid编号
     * @param orderStatusList 订单状态
     * @return AjaxResult
     */
    List<PatientOrder> getGoodsOrderAndConsultationOrder(@Param("patientId") Long patientId, @Param("orderStatusList") List<String> orderStatusList);

    /**
     * 根据patientId编号查询评价信息
     *
     * @param patientId openid编号
     * @return AjaxResult
     */
    List<PatientOrder> getOrderEvaluateByPatientId(Long patientId);
}
