package com.czg.product.service;

/**
 * @author ww
 * @description
 */
public interface ShopSyncService {

    /**
     * 同步数据 将源店铺信息 同步到目标店铺(包括分组 分类 单位 规格 商品 SKU 耗材)
     *
     * @param sourceShopId 源店铺ID
     * @param targetShopId 目标店铺ID
     */
    void sync(Long sourceShopId, Long targetShopId, Long sysUserId);

    /**
     * 同步单位（新增/修改字段/逻辑删除 不包含删除） 将源店铺的单位同步到 开了同步商品开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param unitId       主店单位Id
     */
    void syncUnitBySourceShop(Long sourceShopId, Long unitId, Long sysUserId);

    /**
     * 同步规格（新增/修改字段/逻辑删除 不包含删除） 将源店铺的规格同步到 开了同步商品开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param specId       主店规格Id
     */
    void syncSpecBySourceShop(Long sourceShopId, Long specId, Long sysUserId);

    /**
     * 同步分类（新增/修改字段/逻辑删除 不包含删除） 将源店铺的分类同步到 开了同步商品开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param categoryId   主店分类Id
     */
    void syncCategoryBySourceShop(Long sourceShopId, Long categoryId, Long sysUserId);

    /**
     * 同步商品 会同步Sku（新增/修改字段/逻辑删除 不包含删除） 将源店铺的商品同步到 开了同步商品开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param productId    主店商品Id
     */
    void syncProductBySourceShop(Long sourceShopId, Long productId, Long sysUserId);

    /**
     * 同步分组 （新增/修改字段/逻辑删除 不包含删除） 将源店铺的分组同步到 开了同步商品开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param groupId      主店分组Id
     */
    void syncGroupBySourceShop(Long sourceShopId, Long groupId, Long sysUserId);

    /**
     * 同步耗材分组 （新增/修改字段/逻辑删除 不包含删除） 将源店铺的耗材分组同步到 开了同步耗材开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param consGroupId  主店耗材分组Id
     */
    void syncConsGroupBySourceShop(Long sourceShopId, Long consGroupId, Long sysUserId);

    /**
     * 同步耗材信息（新增/修改字段/逻辑删除 不包含删除） 将源店铺的耗材信息同步到 开了同步耗材开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param consInfoId   主店ID
     */
    void syncConsInfoBySourceShop(Long sourceShopId, Long consInfoId, Long sysUserId);

    /**
     * 同步商品绑定耗材关联关系 开了同步耗材开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param sourceProdId 主店商品ID
     */
    void syncConsProBySourceShop(Long sourceShopId, Long sourceProdId, Long sysUserId);

    /**
     * 同步供应商 开了同步耗材开关的子店铺
     *
     * @param sourceShopId 主店ID
     * @param vendorId     供应商Id
     */
    void syncVendorBySourceShop(Long sourceShopId, Long vendorId, Long sysUserId);

    /**
     * 同步优惠券
     * @param type 1 新增 2 修改 3 删除
     */
    void syncCouponBySourceShop(Long sourceShopId, Long couponId, Integer type);
}
