app/Customize/Controller/TopController.php line 45

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Customize\Controller;
  13. use Eccube\Entity\Master\CustomerStatus;
  14. use Eccube\Entity\Master\Sex;
  15. use Eccube\Repository\CartRepository;
  16. use Eccube\Repository\Master\CustomerStatusRepository;
  17. use Eccube\Repository\Master\PrefRepository;
  18. use Eccube\Security\Core\Encoder\PasswordEncoder;
  19. use Eccube\Service\SystemService;
  20. use Firebase\JWT\JWT;
  21. use Firebase\JWT\Key;
  22. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  26. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  27. use Eccube\Repository\CustomerRepository;
  28. use Eccube\Repository\OrderRepository;
  29. use Symfony\Component\HttpFoundation\Request;
  30. use Eccube\Controller\AbstractController;
  31. use Eccube\Entity\Master\OrderStatus;
  32. use Eccube\Entity\Customer;
  33. class TopController extends AbstractController
  34. {
  35.     private $keyJwt '4UEX8^j8G|CFz]fzV[';
  36.     /**
  37.      * @Route("/", name="homepage", methods={"GET"})
  38.      * @Template("index.twig")
  39.      */
  40.     public function index(TokenStorageInterface $tokenStorageCustomerRepository $customerRepositoryRequest $request)
  41.     {
  42.         $tokenLogin $request->get('tokenLogin');
  43.         if(!empty($tokenLogin)) {
  44.             try {
  45.                 $decoded JWT::decode($tokenLogin, new Key($this->keyJwt'HS256'));
  46.                 $Customer $customerRepository->findOneBy(['phone_number' => $decoded->phone]);
  47.                 if($Customer) {
  48.                     $token = new UsernamePasswordToken($Customer'customer', ['ROLE_USER']);
  49.                     $tokenStorage->setToken($token);
  50.                     $request->getSession()->migrate(true);
  51.                     return $this->redirect($this->generateUrl('homepage'));
  52.                 }
  53.             } catch (\Exception $e) {
  54.             }
  55.         }
  56.         return [];
  57.     }
  58.     /**
  59.      * @Route("/syncRegisterBel", name="syncRegisterBel", methods={"GET"})
  60.      */
  61.     public function syncRegisterBel(PasswordEncoder $passwordEncoderCustomerStatusRepository $customerStatusRepositoryPrefRepository $prefRepositoryCustomerRepository $customerRepositoryRequest $request) {
  62.         $token $request->get('token');
  63.         if(!empty($token)) {
  64.             try {
  65.                 $decoded JWT::decode($token, new Key($this->keyJwt'HS256'));
  66.                 $CustomerStatus $customerStatusRepository->find(CustomerStatus::ACTIVE);
  67.                 $checkPhone $customerRepository->findOneBy(['phone_number' => $decoded->phone]);
  68.                 if($checkPhone) {
  69.                     return new JsonResponse(['status' => 4,], 200);
  70.                 }
  71. //                $checkEmail = $customerRepository->findOneBy(['email' => $decoded->user_email]);
  72. //                if($checkEmail) {
  73. //                    return new JsonResponse(['status' => 5,], 200);
  74. //                }
  75.                 $sexRepository $this->entityManager->getRepository(Sex::class);
  76.                 $Sex $sexRepository->find(4);
  77.                 $salt $passwordEncoder->createSalt();
  78.                 $password $passwordEncoder->encodePassword($decoded->password$salt);
  79.                 $secretKey $customerRepository->getUniqueSecretKey();
  80.                 $pref '';
  81.                 $firstPortcode substr($decoded->postcode03);
  82.                 if(strlen($firstPortcode) >= 3) {
  83.                     $curl curl_init();
  84.                     $options = [
  85.                         CURLOPT_RETURNTRANSFER => 1,
  86.                         CURLOPT_URL => "https://yubinbango.github.io/yubinbango-data/data/" $firstPortcode ".js",
  87.                         CURLOPT_POST => false,
  88.                         CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
  89.                     ];
  90.                     curl_setopt_array($curl$options);
  91.                     $output curl_exec($curl);
  92.                     $output str_replace('$yubin('''$output);
  93.                     $output str_replace(');'''$output);
  94.                     $result = (array)json_decode($output);
  95.                     curl_close($curl);
  96.                     if(isset($result[$decoded->postcode])) {
  97.                         $pref $result[$decoded->postcode][0];
  98.                     }
  99.                 }
  100.                 $email $decoded->user_email;
  101.                 if(empty($email)) {
  102.                     $email $decoded->phone.'@generatebelmony.com';
  103.                 }
  104.                 $Customer = new Customer();
  105.                 $Customer
  106.                     ->setName01($decoded->user_name)
  107.                     ->setName02('')
  108.                     ->setKana01('')
  109.                     ->setKana02('')
  110.                     ->setCompanyName('')
  111.                     ->setEmail($email)
  112.                     ->setPhonenumber($decoded->phone)
  113.                     ->setSex($Sex)
  114.                     ->setPostalcode($decoded->postcode)
  115.                     ->setAddr02('')
  116.                     ->setStatus($CustomerStatus)
  117.                     ->setSalt($salt)
  118.                     ->setPassword($password)
  119.                     ->setSecretKey($secretKey)
  120.                     ->setBirth(new \DateTime($decoded->user_birthday))
  121.                     ->setPoint(0);
  122.                 if (!empty($pref)) {
  123.                     $Pref $prefRepository->find($pref);
  124.                     if($Pref) {
  125.                         $Customer->setPref($Pref);
  126.                     }
  127.                     $Customer->setAddr01(str_replace($Pref->getName(), ''$decoded->user_address));
  128.                 }else {
  129.                     $Customer->setAddr01($decoded->user_address);
  130.                 }
  131.                 $this->entityManager->persist($Customer);
  132.                 $this->entityManager->flush();
  133.                 return new JsonResponse(['status' => 1,], 200);
  134.             } catch (\Exception $e) {
  135.                 return new JsonResponse(['status' => 2,], 200);
  136.             }
  137.         }
  138.         return new JsonResponse(['status' => 3,], 200);
  139.     }
  140.     /**
  141.      * @Route("/checkConnectLogin", name="checkConnectLogin", methods={"GET"})
  142.      */
  143.     public function checkConnectLogin(TokenStorageInterface $tokenStorageCustomerRepository $customerRepositoryRequest $request) {
  144.         $tokenLogin $request->get('tokenLogin');
  145.         if(!empty($tokenLogin)) {
  146.             try {
  147.                 $decoded JWT::decode($tokenLogin, new Key($this->keyJwt'HS256'));
  148.                 $Customer $customerRepository->findOneBy(['phone_number' => $decoded->phone]);
  149.                 if($Customer) {
  150.                     die('1');
  151.                 }
  152.             } catch (\Exception $e) {
  153.                 die('2');
  154.             }
  155.         }
  156.         die('3');
  157.     }
  158.     /**
  159.      * @Route("/syncUpdate", name="syncUpdate", methods={"GET"})
  160.      */
  161.     public function syncUpdate(PasswordEncoder $passwordEncoderCustomerStatusRepository $customerStatusRepositoryPrefRepository $prefRepositoryCustomerRepository $customerRepositoryRequest $request) {
  162.         $tokenLogin $request->get('token');
  163.         if(!empty($tokenLogin)) {
  164.             try {
  165.                 $decoded JWT::decode((string)$tokenLogin, new Key($this->keyJwt'HS256'));
  166.                 //dd($decoded);
  167.                 $Customer $customerRepository->findOneBy(['phone_number' => $decoded->phone]);
  168.                 //dd($Customer);
  169.                 if($Customer) {
  170.                     $sexRepository $this->entityManager->getRepository(Sex::class);
  171.                     $Sex $sexRepository->find(4);
  172.                     $email $decoded->user_email;
  173.                     if (empty($email)) {
  174.                         $email $decoded->phone '@generatebelmony.com';
  175.                     }
  176.                     if($email != $Customer->getEmail()) {
  177.                         $Customer->setEmail($email);
  178.                     }
  179.                     $pref '';
  180.                     $firstPortcode substr($decoded->postcode03);
  181.                     if(strlen($firstPortcode) >= 3) {
  182.                         $curl curl_init();
  183.                         $options = [
  184.                             CURLOPT_RETURNTRANSFER => 1,
  185.                             CURLOPT_URL => "https://yubinbango.github.io/yubinbango-data/data/" $firstPortcode ".js",
  186.                             CURLOPT_POST => false,
  187.                             CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
  188.                         ];
  189.                         curl_setopt_array($curl$options);
  190.                         $output curl_exec($curl);
  191.                         $output str_replace('$yubin('''$output);
  192.                         $output str_replace(');'''$output);
  193.                         $result = (array)json_decode($output);
  194.                         curl_close($curl);
  195.                         if(isset($result[$decoded->postcode])) {
  196.                             $pref $result[$decoded->postcode][0];
  197.                         }
  198.                     }
  199.                     $salt $passwordEncoder->createSalt();
  200.                     if(!empty($decoded->password)) {
  201.                         $password $passwordEncoder->encodePassword($decoded->password$salt);
  202.                         $secretKey $customerRepository->getUniqueSecretKey();
  203.                         $Customer->setPassword($password);
  204.                     }
  205.                     $Customer->setSecretKey($secretKey);
  206.                     $Customer->setName01($decoded->user_name);
  207.                     $Customer->setSex($Sex);
  208.                     $Customer->setPostalcode($decoded->postcode);
  209.                     $Customer->setSalt($salt);
  210.                     $Customer->setSecretKey($secretKey);
  211.                     $Customer->setBirth(new \DateTime($decoded->user_birthday));
  212.                     if (!empty($pref)) {
  213.                         $Pref $prefRepository->find($pref);
  214.                         if($Pref) {
  215.                             $Customer->setPref($Pref);
  216.                         }
  217.                         $Customer->setAddr01(str_replace($Pref->getName(), ''$decoded->user_address));
  218.                     }else {
  219.                         $Customer->setAddr01($decoded->user_address);
  220.                     }
  221.                     $this->entityManager->persist($Customer);
  222.                     $this->entityManager->flush();
  223.                     return new JsonResponse(['status' => 1,], 200);
  224.                 }
  225.             } catch (\Exception $e) {
  226.                 return new JsonResponse(['status' => 2,], 200);
  227.             }
  228.         }
  229.         return new JsonResponse(['status' => 3,], 200);
  230.     }
  231.     /**
  232.      * @Route("/checkSyncOrder", name="checkSyncOrder", methods={"GET"})
  233.      */
  234.     public function checkSyncOrder(OrderRepository $orderRepositoryCustomerRepository $customerRepositoryRequest $request) {
  235.         $token $request->get('token');
  236.         if(!empty($token)) {
  237.             try {
  238.                 $decoded JWT::decode($token, new Key($this->keyJwt'HS256'));
  239.                 $Customer $customerRepository->findOneBy(['phone_number' => $decoded->user_phone]);
  240.                 if($Customer) {
  241.                     $order $orderRepository->findOneBy(['id' => $decoded->order_id]);
  242.                     if($order) {
  243.                         if(
  244.                             ( ( $order->getOrderStatus()->getId() == OrderStatus::NEW || $order->getOrderStatus()->getId() == OrderStatus::PENDING or $order->getOrderStatus()->getId() == OrderStatus::PROCESSING) &&
  245.                                 $decoded->created_at_order == $order->getCreateDate()->format('Y-m-d H:i:s') &&
  246.                                 $decoded->usePoint == $order->getUsePoint() && $decoded->addPoint == $order->getAddPoint()) ||
  247.                             ($order->getOrderStatus()->getId() != OrderStatus::PROCESSING &&
  248.                                 $decoded->created_at_order == $order->getCreateDate()->format('Y-m-d H:i:s') &&
  249.                                 $decoded->updated_at_order == $order->getUpdateDate()->format('Y-m-d H:i:s') &&
  250.                                 $decoded->usePoint == $order->getUsePoint() && $decoded->addPoint == $order->getAddPoint())
  251.                         ) {
  252.                             $customerOrder $order->getCustomer();
  253.                             if($customerOrder->getId()) {
  254.                                 if ($customerOrder->getId() == $Customer->getId()) {
  255.                                     die('1');
  256.                                 }
  257.                             }
  258.                         }
  259.                     }
  260.                 }
  261.             } catch (\Exception $e) {
  262.                 die('2');
  263.             }
  264.         }
  265.         die('3');
  266.     }
  267.     /**
  268.      * @Route("/syncPointBel", name="syncPointBel", methods={"GET"})
  269.      */
  270.     public function syncPointBel(CustomerRepository $customerRepositoryRequest $request) {
  271.         $token $request->get('token');
  272.         if(!empty($token)) {
  273.             try {
  274.                 $decoded JWT::decode($token, new Key($this->keyJwt'HS256'));
  275.                 $Customer $customerRepository->findOneBy(['phone_number' => $decoded->user_phone]);
  276.                 if($Customer) {
  277.                     $Customer->setPoint($decoded->pointBel);
  278.                     $this->entityManager->persist($Customer);
  279.                     $this->entityManager->flush();
  280.                     return new JsonResponse(['status' => 1,], 200);
  281.                 }
  282.             } catch (\Exception $e) {
  283.                 return new JsonResponse(['status' => 2,], 200);
  284.             }
  285.         }
  286.         return new JsonResponse(['status' => 3,], 200);
  287.     }
  288.     /**
  289.      * @Route("/syncCustomerDelete", name="syncCustomerDelete", methods={"GET"})
  290.      */
  291.     public function syncCustomerDelete(CartRepository $cartRepositoryOrderRepository $orderRepositoryCustomerRepository $customerRepositoryCustomerStatusRepository $customerStatusRepositoryRequest $request) {
  292.         $token $request->get('token');
  293.         if(!empty($token)) {
  294.             try {
  295.                 $decoded JWT::decode($token, new Key($this->keyJwt'HS256'));
  296.                 $Customer $customerRepository->findOneBy(['phone_number' => $decoded->user_phone]);
  297.                 if($Customer) {
  298.                     $Cart $cartRepository->findOneBy(['Customer' => $Customer]);
  299.                     if($Cart) {
  300.                         $cartRepository->delete($Cart);
  301.                         $this->entityManager->flush();
  302.                     }
  303.                     $CustomerStatus $customerStatusRepository->find(CustomerStatus::WITHDRAWING);
  304.                     $Customer->setStatus($CustomerStatus);
  305.                     $Customer->setEmail('9999'.$Customer->getEmail());
  306.                     $Customer->setPhonenumber('9999'.$Customer->getPhonenumber());
  307.                     $this->entityManager->persist($Customer);
  308.                     $this->entityManager->flush();
  309.                     return new JsonResponse(['status' => 1,], 200);
  310.                 }
  311.             } catch (\Exception $e) {
  312.                 return new JsonResponse(['status' => 2,], 200);
  313.             }
  314.         }
  315.         return new JsonResponse(['status' => 3,], 200);
  316.     }
  317.     /**
  318.      * @Route("/updatePointPC", name="updatePointPC", methods={"GET"})
  319.      */
  320.     public function updatePointPC(CustomerRepository $customerRepositoryRequest $request) {
  321.         return false;
  322. //        $Customers = $customerRepository->findAll();
  323. //        $secretkeyToken = '4UEX8^j8G|CFz]fzV[';
  324. //        $arrPhone = [];
  325. //        $i = 0;
  326. //        $min = 2000;
  327. //        $max = 2500;
  328. //        foreach ($Customers as $Customer) {
  329. //            $i++;
  330. //            if($i < $min) {
  331. //                continue;
  332. //            }
  333. //            if($i > $max) {
  334. //                var_dump($i);
  335. //                dd('Done');
  336. //                break;
  337. //            }
  338. //            $token = JWT::encode(['email' => $Customer->getEmail(), 'phone' => $Customer->getPhoneNumber()], $secretkeyToken, 'HS256');
  339. //            $curl = curl_init();
  340. //            $options = [
  341. //                CURLOPT_RETURNTRANSFER => 1,
  342. //                CURLOPT_URL => env('SYNC_URL')."/api/syncPoint?token=".$token,
  343. //                CURLOPT_POST => false,
  344. //                CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
  345. //            ];
  346. //            curl_setopt_array($curl, $options);
  347. //            $output = curl_exec($curl);
  348. //            $result = json_decode($output);
  349. //            curl_close($curl);
  350. //
  351. //            if($result) {
  352. //                if ($result->status == 'success') {
  353. //                    $point = (int)$result->data->point;
  354. //                    $arrPhone[$Customer->getPhoneNumber()] = $point;
  355. //                    $Customer->setPoint($point);
  356. //                } else {
  357. //                    $Customer->setPoint(0);
  358. //                }
  359. //            } else {
  360. //                $Customer->setPoint(0);
  361. //            }
  362. //            $this->entityManager->flush();
  363. //
  364. //        }
  365. //        dd($arrPhone);
  366.     }
  367. }