package com.xinelu.applet.service.nursingstationgoods;

import com.xinelu.applet.dto.nursingstationgoods.GoodDetails;
import com.xinelu.applet.dto.nursingstationgoods.GoodsList;
import com.xinelu.applet.dto.nursingstationgoods.GoodsOrderPatient;
import com.xinelu.applet.dto.nursingstationgoods.GoodsOrderStationDTO;
import com.xinelu.applet.vo.nursingstationgoods.UpdateDefaultAddressVO;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.manage.domain.goodsCategory.GoodsCategory;
import com.xinelu.manage.domain.receiveAddressInfo.ReceiveAddressInfo;
import com.xinelu.manage.vo.sysarea.SysAreaVO;
import java.util.List;

/**
 * 商品信息
 *
 * @author zhangheng
 * @date 2022-09-06
 */
public interface INursingStationGoodsService {

    /**
     * 查询商品分类信息列表
     *
     * @param goodsCategory 商品分类信息
     * @return 商品分类信息集合
     */
    List<GoodsCategory> getGoodsCategoryList(GoodsCategory goodsCategory);

    /**
     * 查询商品二级分类信息列表
     *
     * @param goodsCategoryId 商品分类信息
     * @return 商品分类信息集合
     */
    AjaxResult getGoodsCategoryNameList(Long goodsCategoryId);

    /**
     * 根据商品分类id查询商品信息
     *
     * @param goodsList 商品信息
     * @return 商品基本信息集合
     */
    TableDataInfo getGoodsInfoList(GoodsList goodsList);

    /**
     * 根据商品id查询商品详细信息
     *
     * @param goodsInfoId 商品详细id
     * @param patientId   用户信息id
     * @return com.xinyilu.nurseapplet.domain.nursingStationGoods.GoodDetails
     **/
    GoodDetails getGoodsDetails(Long goodsInfoId, Long patientId);

    /**
     * 根据被护理人id查询基本信息
     *
     * @param patientId 被护理人id
     * @return com.xinyilu.base.domain.patientinfo.PatientInfo
     **/
    AjaxResult getReceiveAddressInfoList(Long patientId);

    /**
     * 查询收货人地址信息
     *
     * @param id 收货人地址信息主键
     * @return 收货人地址信息
     */
    ReceiveAddressInfo selectReceiveAddressInfoById(Long id);

    /**
     * 新增收货人地址信息
     *
     * @param receiveAddressInfo 收货人地址信息
     * @return 结果
     */
    int insertReceiveAddressInfo(ReceiveAddressInfo receiveAddressInfo);


    /**
     * 修改收货人地址信息
     *
     * @param receiveAddressInfo 收货人地址信息
     * @return 结果
     */
    int updateReceiveAddressInfo(ReceiveAddressInfo receiveAddressInfo);

    /**
     * 批量删除收货人地址信息
     *
     * @param ids 需要删除的收货人地址信息主键集合
     * @return 结果
     */
    int deleteReceiveAddressInfoByIds(Long[] ids);

    /**
     * 下级区域寻找上级区域
     *
     * @param areaCode 区域编码
     * @return com.xinyilu.base.domain.vo.sysarea.SysAreaVO
     **/
    SysAreaVO getSubordinateRegionsFindSuperiorRegions(String areaCode);

    /**
     * 新增商品订单以及详细信息
     *
     * @param goodsOrder 商品订单
     * @return 结果
     */
    AjaxResult insertNurseStationGoodsOrder(GoodsOrderStationDTO goodsOrder);

    /**
     * 根据订单编号查询订单信息
     *
     * @param orderNo 订单信息编号
     * @return com.xinyilu.nurseapplet.domain.nursingStationGoods.GoodsOrderPatient
     **/
    GoodsOrderPatient selectGoodsOrderPatient(String orderNo);

    /**
     * App和小程序确认收货
     *
     * @param orderNo 订单编号
     * @return 结果
     */
    AjaxResult confirmReceipt(String orderNo);

    /**
     * 微信小程序和会员App设置默认地址接口
     *
     * @param defaultAddressList 默认地址标识集合
     * @return 结果
     */
    AjaxResult updateDefaultAddress(List<UpdateDefaultAddressVO> defaultAddressList);

}
