/b2b/core/api/shipping/2.0/api_b2b_2_0_region.php
PHP | 182 lines | 134 code | 18 blank | 30 comment | 17 complexity | b64fe775be90fd9a9d9e06672978ec9b MD5 | raw file
- <?php
- include_once(CORE_DIR.'/api/shop_api_object.php');
- class api_b2b_2_0_region extends shop_api_object {
- var $app_error=array(
- 'region has not info'=>array('no'=>'b_region_001','debug'=>'','level'=>'warning','info'=>'??????????','desc'=>'')
- );
-
-
- function getColumns(){
- /* $columns=array(
- 'area_id'=>array('type'=>'int'),
- 'name'=>array('type'=>'int'),
- 'disabled'=>array('type'=>'int'),
- 'ordernum'=>array('type'=>'string')
- );
- return $columns;*/
- }
-
- /**
- * ???????????
- *
- * @param array $data
- *
- * @return ?????????
- */
- function search_sub_regions($data){
- $p_region_id = $data['p_region_id'];
- $region_id = array();
- if($p_region_id == 0){
- $sql='select region_id,local_name,region_grade from sdb_regions where disabled="false" and p_region_id IS NULL';
- }else{
- $sql='select region_id,local_name,region_grade from sdb_regions where disabled="false" and p_region_id ='.$p_region_id;
- }
- $region_list = $this->db->select($sql);
- //????
- foreach($region_list as $k=>$region){
- $region_id[$k]=$region['region_id'];//????????region_id
- $region_list[$k]['is_node'] = 0;//??????0?0:???? 1:?????
- unset($region_list[$k]['region_grade']);
- }
-
- $sql ="SELECT DISTINCT(p_region_id) FROM sdb_regions WHERE disabled='false' AND p_region_id IN (".implode(",",$region_id).")";
- $list = $this->db->select($sql);
- if($list){
- foreach($list as $key => $val){
- $search_result = array_search($val['p_region_id'],$region_id);
- if($search_result!==false){
- $region_list[$search_result]['is_node']=1;
- }
- }
- }
- $result['data_info'] = $region_list;
- $this->api_response('true',false,$result);
- }
-
- /**
- * ???????????
- *
- * @param array $data
- *
- * @return ?????????
- */
- function search_child_regions($data){
- //$key = md5($data['id'].$data['certificate_id']);//TTServer key?
-
- $case = $data['need'];
- if($case == 'md5'){
- $result['regions_md5key'] = $this->system->getConf('regions.md5key');
- if(!$result['regions_md5key']){
- $this->set_info();
- $result['regions_md5key'] = $this->system->getConf('regions.md5key');
- }
- }elseif ($case == 'all'){
- $result['regions_md5key'] = $this->system->getConf('regions.md5key');
- $result['regions_list'] = $this->system->getConf('regions.list');
- if(!$result['regions_md5key'] || !$result['regions_list']){
- $this->set_info();
- $result['regions_md5key'] = $this->system->getConf('regions.md5key');
- $result['regions_list'] = $this->system->getConf('regions.list');
- }
- }
- $this->api_response('true',false,array('data_info'=>$result));
- }
-
- function set_info()
- {
- $sql='select region_id,local_name,region_grade,p_region_id,region_path from sdb_regions where disabled="false"';
- $region_list = $this->db->select($sql);
- foreach($region_list as $k=>$region){
- $region_id[$k]=$region['region_id'];//????????region_id
- $region_list[$k]['is_node'] = 0;//??????0?0:???? 1:?????
- unset($region_list[$k]['region_grade']);
- }
- $sql ="SELECT DISTINCT(p_region_id) FROM sdb_regions WHERE disabled='false' AND p_region_id IN (".implode(",",$region_id).")";
- $list = $this->db->select($sql);
- if($list){
- foreach($list as $key => $val){
- $search_result = array_search($val['p_region_id'],$region_id);
- if($search_result!==false){
- $region_list[$search_result]['is_node']=1;
- }
- }
- }
- $listjson = serialize($region_list);
- $key = md5($listjson);
- $this->system->setConf('regions.md5key',$key,false);
- $this->system->setConf('regions.list',$listjson,false);
- }
-
- /* ????ID????ID?????????
- *
- * @param array $data
- *
- * @return ????ID????ID?????????
- */
- function search_dly_type_byid($data){
- //$dly_type = $this->db->selectrow('select '.implode(',',$data['columns']).' from sdb_dly_type where disabled = "false" and dt_id="'.$data['delivery_id'].'"');
- $dly_type_list = $this->_dltype_byarea($data['area_id']);
-
- if(!$dly_type_list){
- $this->add_application_error($this->app_error['region has not info']);
- }
-
- $dly_type = false;
- foreach($dly_type_list as $dly_type_row){
- if($dly_type_row['dt_id'] == $data['delivery_id']){
- $dly_type = $dly_type_row;
- break;
- }
- }
-
- if(!$dly_type){
- $this->add_application_error('region has not info');
- }
-
- $result['data_info'] = $dly_type;
- $this->api_response('true',false,$result);
- }
-
-
- function search_dltype_byarea($data){ //??????????????
- $rs = $this->_dltype_byarea($data['area_id']);
- $result['data_info'] = $rs;
-
- $this->api_response('true',false,$result);
- }
-
- function _dltype_byarea($areaid){
- $rsall = array();
-
- $rs1 = $this->db->select('SELECT t.dt_id,t.dt_name, t.protect, t.detail ,a.config AS dt_config, t.minprice,t.protect_rate,a.expressions, a.has_cod AS pad, t.ordernum
- FROM sdb_dly_type t INNER JOIN sdb_dly_h_area a ON t.dt_id = a.dt_id
- WHERE t.disabled = \'false\' AND t.dt_status = 1 AND a.areaid_group like \'%,'.intval($areaid).',%\' '.$where.' ORDER BY t.ordernum ASC , a.dha_id ASC');
- foreach( $rs1 as $val1) {
- if( !$rsall[$val1['dt_id']] )
- $rsall[$val1['dt_id']] = $val1;
- }
- $rs2 = $this->db->select('SELECT t.dt_id,t.dt_name, t.has_cod AS pad, t.protect, t.dt_config,
- t.dt_expressions AS expressions ,t.detail,t.minprice,t.protect_rate, t.ordernum
- FROM sdb_dly_type t WHERE t.disabled = \'false\' AND t.dt_status = 1
- AND ( dt_config LIKE \'%"setting";s:11:"setting_hda"%\'
- OR ( dt_config LIKE \'%"defAreaFee";i:1%\' AND dt_config LIKE \'%"setting";s:11:"setting_sda"%\') ) '
- .( $rsall?' AND t.dt_id NOT IN ( '.implode(',',array_keys($rsall)).' ) ':'' )
- .$where.' ORDER BY t.ordernum');
- foreach( $rs2 as $val2) {
- $rsall[$val2['dt_id']] = $val2;
- }
- $rsall1 = array();
- foreach( $rsall as $rsv ){
- $rsall1[$rsv['ordernum']][] = $rsv;
- }
- ksort( $rsall1 );
- $rs = array();
- foreach( $rsall1 as $rsorderv ){
- foreach( $rsorderv as $rsallv ){
- $rs[] = $rsallv;
- }
- }
-
- return $rs;
- }
- }