Ver código fonte

1. 收货地址为空bug修改
2. app收货地址服务器接口数据格式化
3. 一些PHP特性注释

songjiyuan 9 anos atrás
pai
commit
15c0864ec6

+ 1 - 0
data/logic/buy.logic.php

@@ -593,6 +593,7 @@ class buyLogic {
      */
     private function _createOrderStep4() {
 
+        // extract() 函数从数组中将变量导入到当前的符号表。
         extract($this->_order_data);
 
         $member_id = $this->_member_info['member_id'];

+ 43 - 0
data/model/area.model.php

@@ -162,5 +162,48 @@ class areaModel extends Model {
         return $data;
     }
 
+    /**
+     * 格式化地址, 返回格式化字符串, 省\t市\t区
+     * @return string
+     */
+    public function formatAddress($address) {
+       $topLevelAreas = $this->getTopLevelAreas();
+       $cityProvince = $this->getCityProvince();
+       $areaNames = $this->getAreaNames();
+
+        // 过滤空格等各种不可见字符
+        $address = trim($address);// 首先去掉头尾空格
+        $address = preg_replace('/\s(?=\s)/', '', $address);// 接着去掉两个空格以上的
+        $address = preg_replace('/[\n\r\t]/', '', $address);// 最后将非空格替换为没空格
+
+       // 省
+       foreach ($topLevelAreas as $key => $topValue) {
+            $topLevelLen = strlen($topValue);
+
+            // 匹配不到省, 跳过
+            $ret = strncmp($address, $topValue, $topLevelLen);
+            if ($ret != 0) continue;
+
+            $topLevelLen = mb_strlen($topValue);
+            // 市
+            foreach ($cityProvince as $cityValue => $parent) {
+                if ($parent != $key) continue;
+
+                $cityValue = $areaNames[$cityValue];
+                $cityLen = mb_strlen($cityValue);
+
+                $tmp = mb_substr($address, $topLevelLen, $cityLen);
+                // 匹配不到省, 跳过
+                if (strcmp($tmp, $cityValue) != 0) continue;
+
+                // 地区
+                $tmp = mb_substr($address, $topLevelLen+$cityLen, NULL);
+                return "{$topValue}\t{$cityValue}\t{$tmp}";
+            }
+       }
+
+       return null;
+    }
+
     protected $cachedData;
 }

+ 3 - 0
mobile/control/member_address.php

@@ -113,6 +113,9 @@ class member_addressControl extends mbMemberControl
             return joutput_error(errcode::ErrAddress, '地址数量已达上限');
         }
 
+        // 格式化区域信息
+        $model_area = Model('area');
+        $address_info['area_info'] = $model_area->formatAddress($address_info['area_info']);
         $result = $model_address->addAddress($address_info);
         if ($result) {
             $address_count = $model_address->field('count(*) as address_count')->where(array('member_id' => $this->member_info['member_id']))->select();

+ 21 - 0
mobile/control/test.php

@@ -81,6 +81,27 @@ class testControl extends mobileHomeControl
 //        $payment = 500;
 //        $payment = $payment = $this->getAndUpdateBonus(36218,$payment);
 //        joutput_data(array('$payment'=>$payment));
+
+        // 修改地址
+        $order_id = "order_id in (297, 401, 923, 928,1097,1145,1150,1154,1244,1248,1281)";
+        $model = Model('order_common')->where($order_id)->select();
+        $model_address = Model('area');
+        $recv_info_array = array();
+        if ($model != null) {
+
+            foreach ($model as $val) {
+                $recv_info = unserialize($val['reciver_info']);
+
+                $recv_info['area'] = $model_address->formatAddress($recv_info['area']);
+                Model()->table('recv_info')->insert(array('order_id' => $val['order_id'], 'reciver_info' => serialize($recv_info)));
+
+                Model('order_common')->where(array('order_id'=>$val['order_id']))->update(array('reciver_info' => serialize($recv_info)));
+
+                array_push($recv_info_array, $recv_info);
+            }
+        }
+
+        joutput_data($recv_info_array);
     }
 
     public function getAndUpdateBonus($user_id,$pay_amount){