src/Controller/DataSynch/CommodityController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller\DataSynch;
  3. use App\Controller\Validator\CommonSignatureAppValidator;
  4. use Common\Crisp\CrispItem\CommodityItem;
  5. use Common\DataSynch\Crisp\Model\CrispCommodityModel;
  6. use Common\DataTrans\Crisp\Model\CrispProductModel;
  7. use Common\Helper\ArrayHelper;
  8. use Common\Helper\SimplifyAsSnakeArray\SimplifyAsSnakeArrayHelper;
  9. use Common\PimcoreHelper\ControllerHelper\BaseJsonController;
  10. use Common\Signature\Exception\BaseSignatureException;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use function array_diff;
  14. use function array_intersect;
  15. use function array_map;
  16. use function array_values;
  17. class CommodityController extends BaseJsonController{
  18.     /**
  19.      * @Symfony\Component\Routing\Annotation\Route("/data_synch/commodity/get_diff_from_product_id_list")
  20.      * @throws BaseSignatureException
  21.      */
  22.     function getDiffFromProductIdList(Request $request):Response{
  23.         (new CommonSignatureAppValidator())->validateRequest($request);
  24.         $input=[];
  25.         $body=function(array $input):array{
  26.             $productIdList=CrispProductModel::getOrderKeyAscList();
  27.             $commodityIdList=CrispCommodityModel::getArticleIdListByArticleStatusAllowed();
  28.             $surplus=array_values(array_diff($commodityIdList,$productIdList));
  29.             $lack=array_values(array_diff($productIdList,$commodityIdList));
  30.             $intersect=array_values(array_intersect($productIdList,$commodityIdList));
  31.             $res=[
  32.                 'surplus_commodity_id_list'=>$surplus,
  33.                 'lack_product_id_list'=>$lack,
  34.                 'intersect'=>$intersect,
  35.             ];
  36.             return $res;
  37.         };
  38.         $res=$this->run($input,$body);
  39.         return $res;
  40.     }
  41.     /**
  42.      * @Symfony\Component\Routing\Annotation\Route("/data_synch/commodity/get_commodity_id_list")
  43.      * @throws BaseSignatureException
  44.      */
  45.     function getCommodityIdList(Request $request):Response{
  46.         (new CommonSignatureAppValidator())->validateRequest($request);
  47.         $input=[];
  48.         $body=function(array $input):array{
  49.             return [
  50.                 'commodity_id_list'=>CrispCommodityModel::getOrderKeyAscList(),
  51.             ];
  52.         };
  53.         $res=$this->run($input,$body);
  54.         return $res;
  55.     }
  56.     /**
  57.      * @Symfony\Component\Routing\Annotation\Route("/data_synch/commodity/get_commodity_list")
  58.      * @throws BaseSignatureException
  59.      */
  60.     function getCommodityList(Request $request):Response{
  61.         (new CommonSignatureAppValidator())->validateRequest($request);
  62.         $commodityIdList=$request->get('commodity_id_list')??[];
  63.         $input=[
  64.             'commodity_id_list'=>$commodityIdList,
  65.         ];
  66.         $body=function(array $input):array{
  67.             $allowedCommodityIdList=CrispCommodityModel::getArticleStatusAllowedArticleIdListByArticleIdList($input['commodity_id_list']);
  68.             $pimcoreObjectList=CrispCommodityModel::getListByArticleIdList($allowedCommodityIdList);
  69.             $parserObjectList=CommodityItem::dataObjectListExportToInstanceList($pimcoreObjectList);
  70.             $finalList=SimplifyAsSnakeArrayHelper::simplifyAsSnakeArrayMass($parserObjectList);
  71.             return [//'commodity_list'=>$finalList,
  72.             ];
  73.         };
  74.         $res=$this->run($input,$body);
  75.         return $res;
  76.     }
  77.     /**
  78.      * @Symfony\Component\Routing\Annotation\Route("/data_synch/commodity/get_commodity_info_list")
  79.      * @throws BaseSignatureException
  80.      */
  81.     function getCommodityInfoList(Request $request):Response{
  82.         $appKey=(new CommonSignatureAppValidator())->validateRequest($request);
  83.         $commodityIdList=$request->get('commodity_id_list')??[];
  84.         $infoList=$request->get('info_list')??[];
  85.         switch(true){
  86.             case $appKey->is('product_ro'):
  87.                 $infoList=array_intersect($infoList,['article_id','article_description']);
  88.                 break;
  89.             case $appKey->is('product_ro_2'):
  90.                 break;
  91.             default:
  92.                 $infoList=[];
  93.         }
  94.         $input=[
  95.             'commodity_id_list'=>$commodityIdList,
  96.             'info_list'=>$infoList,
  97.         ];
  98.         $body=function(array $input):array{
  99.             $allowedCommodityIdList=CrispCommodityModel::getArticleStatusAllowedArticleIdListByArticleIdList($input['commodity_id_list']);
  100.             $pimcoreObjectList=CrispCommodityModel::getListByArticleIdList($allowedCommodityIdList);
  101.             $parserObjectList=CommodityItem::dataObjectListExportToInstanceList($pimcoreObjectList);
  102.             $finalList=SimplifyAsSnakeArrayHelper::simplifyAsSnakeArrayMass($parserObjectList);
  103.             $finalList=array_map(fn(array $row):array => ArrayHelper::fetch($row,$input['info_list']),$finalList);
  104.             return [
  105.                 'commodity_info_list'=>$finalList,
  106.             ];
  107.         };
  108.         $res=$this->run($input,$body);
  109.         return $res;
  110.     }
  111. }