Commit 16f63aa2 authored by 梁俊杰's avatar 梁俊杰
Browse files

产品接口更新,新方法提取

parent 2e19bdf8
Loading
Loading
Loading
Loading
+46 −0
Original line number Original line Diff line number Diff line
<?php
/**
 * Created by PhpStorm.
 * User: 王源
 * Date: 2020/1/9
 * Time: 15:07
 */

namespace Meibuyu\Micro\Service\Interfaces\Product;

interface PlatformProductServiceInterface
{

    /**
     * 获取单个数据
     * @param int $id 平台产品id
     * @param array $relations 平台产品的关联关系,支持:["status","product","amazon_warehouse","platform_product_children"]
     * @param array $columns 平台产品表的字段,默认['id', 'sku', 'product_id', 'name', 'team_id', 'site_id', 'price'
     * , 'currency_id', 'platform_product_status_id', 'creator_id', 'asin', 'amazon_warehouse_id', 'info_completed']
     * @return array
     */
    public function get($id, array $relations = []
        , $columns = ['id', 'sku', 'product_id', 'name', 'team_id', 'site_id', 'price'
            , 'currency_id', 'platform_product_status_id', 'creator_id', 'asin'
            , 'amazon_warehouse_id', 'info_completed']): array;

    /**
     * 通过id列表获取平台产品数组
     * @param array $idList 平台产品id的列表
     * @param array $relations 平台产品的关联关系,支持["status","product","amazon_warehouse","platform_product_children"]
     * @param array $columns 平台产品表的字段,默认['id', 'sku', 'product_id', 'name', 'team_id', 'site_id', 'price'
     * , 'currency_id', 'platform_product_status_id', 'creator_id', 'asin', 'amazon_warehouse_id', 'info_completed']
     * @return array
     */
    public function getByIdList(array $idList, array $relations = []
        , $columns = ['id', 'sku', 'product_id', 'name', 'team_id', 'site_id', 'price'
            , 'currency_id', 'platform_product_status_id', 'creator_id', 'asin'
            , 'amazon_warehouse_id', 'info_completed']): array;

    /**
     * 获取全部平台产品状态列表
     * @param array $columns 默认['id', 'name']
     * @return array
     */
    public function platformProductStatus(array $columns = ['id', 'name']): array;
}
+34 −59
Original line number Original line Diff line number Diff line
@@ -6,7 +6,7 @@
 * Time: 15:07
 * Time: 15:07
 */
 */


namespace Meibuyu\Micro\Service\Interfaces;
namespace Meibuyu\Micro\Service\Interfaces\Product;


interface ProductServiceInterface
interface ProductServiceInterface
{
{
@@ -15,108 +15,83 @@ interface ProductServiceInterface
     * 获取单个数据
     * 获取单个数据
     * @param int $id 产品id
     * @param int $id 产品id
     * @param array $relations 产品的关联关系,支持:["brand","category","ingredient","product_name","status","type","images","price_info","product_children"]
     * @param array $relations 产品的关联关系,支持:["brand","category","ingredient","product_name","status","type","images","price_info","product_children"]
     * @param array $columns 产品表的字段,默认['id', 'sku', 'name', 'en_name', 'brand_id'
     * , 'team_id', 'hs_code', 'origin_country_id', 'production_address', 'unit', 'category_id'
     * , 'ingredient_id', 'product_name_id', 'type_id', 'status_id', 'style', 'info_completed'
     * , 'bar_code', 'bar_code_image', 'creator_id', 'hot']
     * @return array
     * @return array
     */
     */
    public function get($id, array $relations = []): array;
    public function get($id, array $relations = []
        , $columns = ['id', 'sku', 'name', 'en_name', 'brand_id', 'team_id'
            , 'hs_code', 'origin_country_id', 'production_address', 'unit', 'category_id'
            , 'ingredient_id', 'product_name_id', 'type_id', 'status_id', 'style'
            , 'info_completed', 'bar_code', 'bar_code_image', 'creator_id', 'hot']): array;


    /**
    /**
     * 通过id列表获取产品数组
     * 通过id列表获取产品数组
     * @param array $idList 产品id的列表
     * @param array $idList 产品id的列表
     * @param array $relations 产品的关联关系,支持["brand","category","ingredient","product_name","status","type","images","price_info","product_children"]
     * @param array $relations 产品的关联关系,支持["brand","category","ingredient","product_name","status","type","images","price_info","product_children"]
     * @param array $columns 产品表的字段,默认显示全部
     * @param array $columns 产品表的字段,默认['id', 'sku', 'name', 'en_name', 'brand_id'
     * , 'team_id', 'hs_code', 'origin_country_id', 'production_address', 'unit', 'category_id'
     * , 'ingredient_id', 'product_name_id', 'type_id', 'status_id', 'style', 'info_completed'
     * , 'bar_code', 'bar_code_image', 'creator_id', 'hot']
     * @return array
     * @return array
     */
     */
    public function getByIdList(array $idList, array $relations = [], array $columns = ['*']): array;
    public function getByIdList(array $idList, array $relations = []
        , array $columns = ['id', 'sku', 'name', 'en_name', 'brand_id', 'team_id'
            , 'hs_code', 'origin_country_id', 'production_address', 'unit', 'category_id'
            , 'ingredient_id', 'product_name_id', 'type_id', 'status_id', 'style'
            , 'info_completed', 'bar_code', 'bar_code_image', 'creator_id', 'hot']): array;




    /**
     * 通过产品列表
     * @param int $page 第几页数据,默认:1
     * @param array $relations 产品的关联关系,支持["brand","category","ingredient","product_name","status","type","images","price_info","product_children"]
     * @param int $pageSize 每页产品数默认:15,最大支持100
     * @param array $columns 产品表的字段,默认显示全部
     * @return array
     */
    public function list($page = 1, array $relations = [], $pageSize = 15, array $columns = ['*']): array;


    /**
     * 获取某个产品的子产品,包含颜色和尺码
     * @param int $productId 产品编号
     * @return array
     */
    public function getProductChildren($productId): array;

    /** 获取某个产品的平台产品,包含颜色和尺码
     * @param int $productId 产品编号
     * @param int $site_id 站点id,可选,默认为空
     * @return array
     */
    public function getPlatformProduct($productId, $site_id = null): array;

    /**
     * 获取平台产品的子产品
     * @param int $platformProductId 平台产品id
     * @return array
     */
    public function getPlatformProductChildren($platformProductId): array;

    /**
     * 获取某个站点的所有平台产品
     * @param int $site_id 站点id
     * @param int $page 第几页数据,默认:1
     * @param array $relations 平台产品的关联关系,支持["product","amazon_warehouse","platform_product_images","platform_product_children"]
     * @param int $pageSize 每页列表数默认:15,最大支持100
     * @param array $columns 平台产品表的字段,默认显示全部
     * @return array
     */
    public function getPlatformProductListBySite($site_id, $page = 1, array $relations = [], $pageSize = 15, array $columns = ['*']): array;

    /**
    /**
     * 获取全部尺码列表
     * 获取全部尺码列表
     * @param array $columns 默认['id', 'name']
     * @return array
     * @return array
     */
     */
    public function sizes(): array;
    public function sizes(array $columns = ['id', 'name']): array;


    /**
    /**
     * 获取全部颜色列表
     * 获取全部颜色列表
     * @param array $columns 默认['id', 'code', 'cn_name', 'en_name']
     * @return array
     * @return array
     */
     */
    public function colors(): array;
    public function colors(array $columns = ['id', 'code', 'cn_name', 'en_name']): array;


    /**
    /**
     * 获取全部品类列表
     * 获取全部品类列表
     * @param bool $asTree 是否作为树返回
     * @param array $columns 默认['id', 'name', 'parent_id']
     * @return array
     * @return array
     */
     */
    public function categories(): array;
    public function categories($asTree = false, array $columns = ['id', 'name', 'parent_id']): array;


    /**
    /**
     * 获取全部品牌列表
     * 获取全部品牌列表
     * @param array $columns 默认['id', 'name']
     * @return array
     * @return array
     */
     */
    public function brands(): array;
    public function brands(array $columns = ['id', 'name']): array;


    /**
    /**
     * 获取全部报关品名列表
     * 获取全部报关品名列表
     * @param array $columns 默认['id', 'name','en_name']
     * @return array
     * @return array
     */
     */
    public function productNames(): array;
    public function productNames(array $columns = ['id', 'name', 'en_name']): array;


    /**
    /**
     * 获取全部成分列表
     * 获取全部成分列表
     * @param array $columns 默认['id', 'name']
     * @return array
     * @return array
     */
     */
    public function ingredients(): array;
    public function ingredients(array $columns = ['id', 'name', 'en_name']): array;


    /**
    /**
     * 获取全部产品状态列表
     * 获取全部产品状态列表
     * @param array $columns 默认['id', 'name']
     * @return array
     * @return array
     */
     */
    public function productStatus(): array;
    public function productStatus(array $columns = ['id', 'name']): array;


    /**
     * 获取全部平台产品状态列表
     * @return array
     */
    public function platformProductStatus(): array;
}
}
+35 −0
Original line number Original line Diff line number Diff line
@@ -606,6 +606,41 @@ if (!function_exists('info')) {
    }
    }
}
}


if (!function_exists('make_belong_relation_function')) {
    /**
     * 创建我属于关联关系的函数
     * @param string $relationName 关联关系的名字
     * @param array $mainModelColumns 使用关联关系的主表要筛选的列
     * @param array $relationColumns 关联关系的列 默认['id', 'name']
     * @param string $mainModelRelationKey 主表和关联关系对应的字段 空的话为$relationName+"_id"
     * @param callable|null $callback 内嵌级联调用
     * @return Closure 返回关联关系的匿名函数
     */
    function make_belong_lation_function($relationName, array &$mainModelColumns, $relationColumns = ['id', 'name'], $mainModelRelationKey = "", callable $callback = null)
    {
        $key = $mainModelRelationKey ? $mainModelRelationKey : $relationName . "_id";
        if (!in_array($key, $mainModelColumns)) array_push($mainModelColumns, $key);
        return make_has_relation_function($relationColumns, $callback);
    }
}
if (!function_exists('make_has_relation_function')) {
    /**
     * 创建我有关联关系的函数
     * @param array $relationColumns 关联关系的列 默认['id', 'name']
     * @return Closure 返回关联关系的匿名函数
     * @param callable|null $callback 内嵌级联调用
     * @return Closure
     */
    function make_has_relation_function($relationColumns = ['id', 'name'], callable $callback = null)
    {
        return function ($q) use ($relationColumns, $callback) {
            $q->select($relationColumns);
            if (is_callable($callback)) {
                $callback($q);
            }
        };
    }
}