Browse Source

modify config file format

stanley-king 4 years atrás
parent
commit
bdbcccd023

+ 8 - 5
data/config/dev/refill.ini.php

@@ -23,10 +23,12 @@ $lx_oil = ['name' => 'lx', 'store_id' => 10, 'card_type' => ['sinopec'],
         500 => ['goods_id' => 6236, 'price' => 477.5],
         1000 => ['goods_id' => 6237, 'price' => 955],
         2000 => ['goods_id' => 6238, 'price' => 1910]],
-    'period' => ['start' => '8:30', 'end' => '22:30'], 'official_sn' => true, 'refill_type' => 'inner_store'];
+    'period' => ['start' => '8:30', 'end' => '22:30'], 'official_sn' => true];
 
-$oil_providers = ['suhc' => $suhc_oil, 'suhctm' => $suhctm_oil,'lx' => $lx_oil];
-//$oil_providers = ['lx' => $lx_oil];
+$oil_providers = [
+    ['name' => 'suhc', 'cfg' => $suhc_oil, 'opened' => true, 'sort' => 1],
+    ['name' => 'suhctm', 'cfg' => $suhctm_oil, 'opened' => true, 'sort' => 2],
+    ['name' => 'lx', 'cfg' => $lx_oil, 'opened' => true, 'sort' => 3]];
 $config['oil_providers'] = $oil_providers;
 
 
@@ -42,6 +44,7 @@ $bxtwt_phone = ['name' => 'bxtwt', 'store_id' => 10, 'card_type' => ['chinamobil
         200 => ['goods_id' => 6300, 'price' => 192]],
     'refill_type' => 'api'];
 
-$phone_providers = ['beixt' => $beixt_phone, 'bxtwt' => $bxtwt_phone];
-//$phone_providers = ['beixt' => $beixt_phone];
+$phone_providers = [
+        ['name' => 'beixt', 'cfg' => $beixt_phone, 'opened' => true, 'sort' => 1],
+        ['name' => 'bxtwt', 'cfg' => $bxtwt_phone, 'opened' => true, 'sort' => 2]];
 $config['phone_providers'] = $phone_providers;

+ 16 - 13
data/config/prod/refill.ini.php

@@ -13,16 +13,14 @@ $suhctm_oil = ['name' => 'suhctm', 'store_id' => 7, 'card_type' => ['sinopec'],
     'amount' => [100 => ['goods_id' => 6290, 'price' => 96.8],
         200 => ['goods_id' => 6291, 'price' => 193.6],
         500 => ['goods_id' => 6292, 'price' => 484],
-        1000 => ['goods_id' => 6293, 'price' => 968]
-    ],
+        1000 => ['goods_id' => 6293, 'price' => 968]],
     'period' => ['start' => '8:30', 'end' => '22:20'], 'refill_type' => 'api'];
 
 $suhcpdd_oil = ['name' => 'suhcpdd', 'store_id' => 7, 'card_type' => ['sinopec'],
     'amount' => [100 => ['goods_id' => 6290, 'price' => 96.8],
         200 => ['goods_id' => 6291, 'price' => 193.6],
         500 => ['goods_id' => 6292, 'price' => 484],
-        1000 => ['goods_id' => 6293, 'price' => 968]
-    ],
+        1000 => ['goods_id' => 6293, 'price' => 968]],
     'period' => ['start' => '8:30', 'end' => '22:20'], 'refill_type' => 'api'];
 
 //赵梓暄提供的加油通道
@@ -40,6 +38,7 @@ $lx_oil = ['name' => 'lx', 'store_id' => 14, 'card_type' => ['sinopec'],
     ],
     'period' => ['start' => '14:00', 'end' => '19:00'], 'official_sn' => true, 'refill_type' => 'inner_store'];
 
+//赛虎
 $saihu_oil = ['name' => 'saihu', 'store_id' => 15, 'card_type' => ['sinopec'],
     'amount' => [100 => ['goods_id' => 6313, 'price' => 97],
         200 => ['goods_id' => 6314, 'price' => 194],
@@ -47,10 +46,13 @@ $saihu_oil = ['name' => 'saihu', 'store_id' => 15, 'card_type' => ['sinopec'],
         1000 => ['goods_id' => 6316, 'price' => 970],
         2000 => ['goods_id' => 6317, 'price' => 1940]], 'refill_type' => 'api'];
 
-//'zzx' => $zzx_oil,
-//$oil_providers = ['suhc' => $suhc_oil, 'suhctm' => $suhctm_oil, 'lx' => $lx_oil];
-//$oil_providers = ['suhctm' => $suhctm_oil];
-$oil_providers = ['suhcpdd' => $suhcpdd_oil];
+$oil_providers = [
+    ['name' => 'suhc', 'cfg' => $suhc_oil, 'opened' => false, 'sort' => 3],
+    ['name' => 'suhctm', 'cfg' => $suhctm_oil, 'opened' => true, 'sort' => 2],
+    ['name' => 'suhcpdd', 'cfg' => $suhcpdd_oil, 'opened' => false, 'sort' => 1],
+    ['name' => 'zzx', 'cfg' => $zzx_oil, 'opened' => false, 'sort' => 5],
+    ['name' => 'lx', 'cfg' => $lx_oil, 'opened' => false, 'sort' => 1],
+    ['name' => 'saihu', 'cfg' => $saihu_oil, 'opened' => false, 'sort' => 6]];
 $config['oil_providers'] = $oil_providers;
 
 $beixt_phone = ['name' => 'beixt', 'store_id' => 8, 'card_type' => ['chinamobile', 'chinaunicom', 'chinatelecom'],
@@ -65,7 +67,6 @@ $bxtwt_phone = ['name' => 'bxtwt', 'store_id' => 10, 'card_type' => ['chinamobil
         200 => ['goods_id' => 6300, 'price' => 192]],
     'refill_type' => 'api'];
 
-
 $bjb_phone = ['name' => 'bjb', 'store_id' => 12, 'card_type' => ['chinaunicom', 'chinatelecom'],
     'amount' => [10 => ['goods_id' => 6305, 'price' => 9.55],
         20 => ['goods_id' => 6306, 'price' => 19.1],
@@ -87,8 +88,10 @@ $jiec_phone = ['name' => 'jiec', 'store_id' => 17, 'card_type' => ['chinaunicom'
         100 => ['goods_id' => 6325, 'price' => 95.8],
         200 => ['goods_id' => 6326, 'price' => 191.6]], 'official_sn' => true, 'refill_type' => 'api'];
 
-//$phone_providers = ['bjb' => $bjb_phone];
-$phone_providers = ['jiec' => $jiec_phone];
-
-//$phone_providers = ['beixt' => $beixt_phone, 'bxtwt' => $bxtwt_phone, 'bjb' => $bjb_phone];
+$phone_providers = [
+    ['name' => 'beixt', 'cfg' => $beixt_phone, 'opened' => false, 'sort' => 1],
+    ['name' => 'bxtwt', 'cfg' => $bxtwt_phone, 'opened' => false, 'sort' => 2],
+    ['name' => 'bjb', 'cfg' => $bjb_phone, 'opened' => false, 'sort' => 2],
+    ['name' => 'yifa', 'cfg' => $yifa_phone, 'opened' => false, 'sort' => 5],
+    ['name' => 'jiec', 'cfg' => $jiec_phone, 'opened' => true, 'sort' => 1]];
 $config['phone_providers'] = $phone_providers;

+ 23 - 4
helper/refill/IRefill.php

@@ -7,17 +7,19 @@ namespace refill;
 abstract class IRefill
 {
     protected $mName;
-    protected $mSotreID;
+    protected $mStoreID;
     protected $mRefillType;
     protected $mOfficialSN;
     protected $mCardType = [];
     protected $mAmounts = [];
     protected $mPeriod;
+    protected $mOpened;
+    protected $mSort;
 
     public function __construct($cfgs)
     {
         $this->mName = $cfgs['name'];
-        $this->mSotreID = $cfgs['store_id'];
+        $this->mStoreID = $cfgs['store_id'];
         $this->mRefillType = $cfgs['refill_type'];
 
         foreach ( $cfgs['amount'] as $k => $v) {
@@ -26,6 +28,8 @@ abstract class IRefill
 
         $this->mPeriod = $cfgs['period'];
         $this->mOfficialSN = $cfgs['official_sn'] ?? false;
+        $this->mOpened = true;
+        $this->mSort = 65536;
     }
 
     abstract public function add($card_no,$card_type,$amount,$params);
@@ -36,7 +40,7 @@ abstract class IRefill
     }
 
     public function store_id() {
-        return $this->mSotreID;
+        return $this->mStoreID;
     }
 
     public function official_sn() {
@@ -81,12 +85,27 @@ abstract class IRefill
     {
         if(array_key_exists($amout,$this->mAmounts)) {
             $params = $this->mAmounts[$amout];
-            return [$params['goods_id'], $params['price']];
+            return [$params['goods_id'], round($params['price'],2)];
         }
         else {
             return [];
         }
     }
+    public function setOpened(bool $opened) {
+        $this->mOpened = $opened;
+    }
+
+    public function opened() {
+        return $this->mOpened;
+    }
+
+    public function setSort(int $sort) {
+        $this->mSort = $sort;
+    }
+
+    public function sort() {
+        return $this->mSort;
+    }
 
     public function check(int $amount,int $card_type) : array
     {

+ 31 - 5
helper/refill/RefillFactory.php

@@ -127,14 +127,22 @@ class RefillFactory
         $oil_configs = $config['oil_providers'];
 
         $names = [];
-        foreach ($oil_configs as $cfg) {
-            $name = $cfg['name'];
+        foreach ($oil_configs as $item)
+        {
+            $name = $item['name'];
+            $cfg = $item['cfg'];
+            $opened = $item['opened'] ?? true;
+            $sort = $item['sort'] ?? 65536;
+
             $names[] = $name;
 
             try {
                 $class = "refill\\{$name}\\RefillOil";
                 if (class_exists($class, false)) {
                     $provider = new $class($cfg);
+                    $provider->setOpened($opened);
+                    $provider->setSort($sort);
+
                     $this->mOilProvider[] = $provider;
                 } else {
                     $error = "Base Error: class {$class} isn't exists!";
@@ -146,14 +154,22 @@ class RefillFactory
         }
 
         $pho_configs = $config['phone_providers'];
-        foreach ($pho_configs as $cfg) {
-            $name = $cfg['name'];
+        foreach ($pho_configs as $item)
+        {
+            $name = $item['name'];
+            $cfg = $item['cfg'];
+            $opened = $item['opened'] ?? true;
+            $sort = $item['sort'] ?? 65536;
+
             $names[] = $name;
 
             try {
                 $class = "refill\\{$name}\\RefillPhone";
                 if (class_exists($class, false)) {
                     $provider = new $class($cfg);
+                    $provider->setOpened($opened);
+                    $provider->setSort($sort);
+
                     $this->mPhoneProvider[] = $provider;
                 } else {
                     $error = "Base Error: class {$class} isn't exists!";
@@ -358,13 +374,23 @@ class RefillFactory
             [$lid, $lprice] = $l->goods($amount);
             [$rid, $rprice] = $r->goods($amount);
 
-            return $lprice < $rprice ? -1 : 1;
+            $lsort = $l->sort();
+            $rsort = $r->sort();
+
+            if($lprice == $rprice) {
+                return $lsort < $rsort ? -1 : 1;
+            }
+            else {
+                return $lprice < $rprice ? -1 : 1;
+            }
         };
         usort($providers, $ascending);
 
         $refill_state = false;
         foreach ($providers as $provider)
         {
+            if(!$provider->opened()) continue;
+
             $channel_name = $provider->name();
             [$goods_id, $price] = $provider->goods($amount);
 

+ 1 - 1
helper/refill/jiec/RefillCallBack.php

@@ -36,7 +36,7 @@ class RefillCallBack implements refill\IRefillCallBack
         }
         $order_id = $order_info['order_id'];
 
-        $data['official_sn'] = $params['order'];
+        $data['official_sn'] = strtolower($params['order']) == 'null' ? '' : $params['order'];
         Model('refill_order')->edit($order_id, $data);
 
         if ($status === 'success') {

+ 9 - 0
test/TestTime.php

@@ -121,8 +121,17 @@ class TestTime extends TestCase
         $date = date('Y-m-d',time());
         $day_start = strtotime("{$date}");
         $begin = $day_start - 6 * 86400;
+    }
+
+    public function testFloat()
+    {
+        $x = 1.6;
+        $y = 8;
+        $t = $x == ($y - 6.4);
 
+        $ta = round($x,2) == round($y - 6.4,2);
 
     }
 
+
 }