package com.fs.hisStore.service;

import com.fs.hisStore.domain.FsStoreUserEndCategoryScrm;
import com.fs.hisStore.dto.FsStoreProductSortItemDTO;
import com.fs.hisStore.vo.FsStoreUserEndCategoryProductVO;

import java.util.List;

/**
 * 商品用户分端类 Service 接口
 */
public interface IFsStoreUserEndCategoryScrmService {

    FsStoreUserEndCategoryScrm selectById(Long id);

    List<FsStoreUserEndCategoryScrm> selectList(FsStoreUserEndCategoryScrm query);

    /** 分页列表：一页10条，排序值相同按创建时间倒序 */
    List<FsStoreUserEndCategoryScrm> selectListPage(FsStoreUserEndCategoryScrm query);

    /** 添加商品时选择：按金刚区/瀑布流分组，各最多8条（仅展示用由前端截取） */
    List<FsStoreUserEndCategoryScrm> selectListForProduct(Long storeId);

    /** 用户端首页：按位置（1金刚区 2瀑布流）取前8条，status=1，排序 sort asc, create_time desc */
    List<FsStoreUserEndCategoryScrm> selectTop8ByPosition(Long storeId, Integer position);

    /** 按用户端分类ID分页查询关联商品（去重商品ID分页，再查商品简表+标签并组装） */
    List<FsStoreUserEndCategoryProductVO> listProductsByCategoryId(Long categoryId, String keyword);

    /** 批量更新关联排序（写入 fs_store_product_user_end_category.sort，需指定用户分端类 id） */
    int saveProductsSort(Long userEndCategoryId, List<FsStoreProductSortItemDTO> items);

    /** 首页商品列表：id 为空查全部（分页商品ID后查简表+标签），id 不为空按用户端分类查；position=1金刚区/2瀑布区 时按区域查全部；返回 list+total */
    java.util.Map<String, Object> listProductsForApp(Long id, String keyword, Integer pageNum, Integer pageSize, Long storeId, Integer position);

    int insert(FsStoreUserEndCategoryScrm entity);

    int update(FsStoreUserEndCategoryScrm entity);

    int deleteById(Long id);

    int deleteByIds(Long[] ids);
}
