using BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto;
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos;
using BPA.SAAS.Manage.Application.DataBase.Dtos.GoodsEnergyConfig;
using BPA.SAAS.Manage.Core.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Services
{
    public interface IGoodsService
    {
        /// <summary>
        /// 分页查询商品
        /// </summary>
        /// <param name="inputDto"></param>
        /// <returns></returns>
        Task<PageUtil<List<GoodsDto>>> GetGoodsPageList(GoodsPageInputDto inputDto);
        /// <summary>
        /// 添加商品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<bool> AddGoods(BaseRequestDto<GoodsInsertDto> dto);
        /// <summary>
        /// 更新商品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<bool> UpdateGoods(BaseRequestDto<GoodsUpdateDto> dto);
        /// <summary>
        /// 删除商品
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<bool> DeleteGoods(DeleteGoodsDto dto);
        /// <summary>
        ///添加商品属性
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
       Task<bool> AddGoodsAttribute(GoodsAttributeinsertDto dto);
        Task<bool> AddGoodsAttributeValue(List<GoodsAttributeValue> dto);
        /// <summary>
        /// 查询商品属性
        /// </summary>
        /// <returns></returns>
       Task<List<GoodsAttributeVewDto>> GetGoodsAttributeList(GoodsIdDto dto);
        /// <summary>
        /// 查询商品工艺
        /// </summary>
        /// <param name="goodsId"></param>
        /// <returns></returns>
       Task<List<GoodsTechnologyActionListViewDto>> GetGoodsTechnologyAction(GoodsIdDto goodsId);
        Task<PageUtil> GetGoodsTypePage(GoodstypeQueryDto dto);
        Task<bool> AddGoodsType(List<GoodstypeInsertDto> dto);
        Task<bool> UpdateGoodsType(GoodstypeUpdateDto dto);
        Task<bool> DelGoodsType(GoodstypeDelDto dto);
        Task<PageUtil> GetGoodsUintPage(GoodsUintQueryDto dto);
        Task<bool> AddGoodsUint(List<GoodsUintInsertDto> dto);
        Task<bool> UpdateGoodsUint(GoodsUintUpdateDto dto);
        Task<bool> DelGoodsUint(GoodsUintDelDto dto);
        /// <summary>
        /// 查询商品能量配置
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
       Task<List<GoodsEnergyConfigVuewDto>> GetGoodsEnergyConfigPage(GoodsEnergyConfigQuDto dto);
    }
}
