'simple', 'ship_tel' => 'phone', 'ship_mobile' => 'phone', 'ship_addr' => 'simple', ); /** * table_name * @param mixed $real real * @return mixed 返回值 */ public function table_name($real = false){ if($real){ $table_name = 'sdb_ome_delivery'; }else{ $table_name = 'delivery'; } return $table_name; } /** * 获取_schema * @return mixed 返回结果 */ public function get_schema(){ return app::get('ome')->model('delivery')->get_schema(); } function searchOptions(){ $parentOptions = parent::searchOptions(); $childOptions = array( 'delivery_bn'=>app::get('base')->_('发货单号'), 'order_bn'=>app::get('base')->_('订单号'), 'member_uname'=>app::get('base')->_('用户名'), 'ship_name'=>app::get('base')->_('收货人'), 'ship_tel_mobile'=>app::get('base')->_('联系电话'), 'product_bn'=>app::get('base')->_('货号'), 'product_barcode'=>app::get('base')->_('条形码'), 'delivery_ident'=>app::get('base')->_('打印批次号'), ); return array_merge($childOptions,$parentOptions); } /** * _filter * @param mixed $filter filter * @param mixed $tableAlias tableAlias * @param mixed $baseWhere baseWhere * @return mixed 返回值 */ public function _filter($filter,$tableAlias=null,$baseWhere=null) { $baseWhere = (array) $baseWhere; $tPre = ($tableAlias?$tableAlias:'`'.$this->table_name(true).'`').'.'; //setting $deliveryIds = array(); $where = ''; //filter - 加密字段处理 $encryptWhere = kernel::single('ome_filter_encrypt')->encrypt($filter, $this->__encrypt_cols, $tPre, 'delivery'); $baseWhere = array_merge($baseWhere, $encryptWhere); if(isset($filter['ship_tel_mobile'])){ $encryptVal = kernel::single('ome_security_factory')->encryptPublic($filter['ship_tel_mobile'],'phone'); $encryptVal = utils::addslashes_array($encryptVal); $originalVal = utils::addslashes_array($filter['ship_tel_mobile']); $baseWhere[] = "({$tPre}ship_tel IN('".$originalVal."','".$encryptVal."')||{$tPre}ship_mobile IN('".$originalVal."','".$encryptVal."'))"; unset($filter['ship_tel_mobile']); } if(isset($filter['extend_delivery_id'])){ $where .= ' OR delivery_id IN ('.implode(',', $filter['extend_delivery_id']).')'; unset($filter['extend_delivery_id']); } if (isset($filter['member_uname'])){ $memberObj = app::get('ome')->model("members"); $rows = $memberObj->getList('member_id',array('uname|has'=>$filter['member_uname'])); $memberId[] = 0; foreach($rows as $row){ $memberId[] = $row['member_id']; } $where .= ' AND member_id IN ('.implode(',', $memberId).')'; unset($filter['member_uname']); } if(isset($filter['outer_dlybn'])) { if(strpos($filter['outer_dlybn'], "\n") !== false){ $filter['outer_dlybn'] = array_unique(array_map('trim', array_filter(explode("\n", $filter['outer_dlybn'])))); } $rows = app::get('console')->model('delivery_extension')->getList('delivery_bn',['original_delivery_bn'=>$filter['outer_dlybn']]); unset($filter['outer_dlybn']); $rows = array_column($rows, 'delivery_bn'); $rows[] = 0; $where .= ' AND delivery_bn IN ("'.implode('","', $rows).'")'; } if (isset($filter['order_bn'])){ // 多订单号查询 if(strpos($filter['order_bn'], "\n") !== false){ $filter['order_bn'] = array_unique(array_map('trim', array_filter(explode("\n", $filter['order_bn'])))); } $orderObj = app::get('ome')->model("orders"); $rows = $orderObj->getList('order_id',array('order_bn'=>$filter['order_bn'])); $orderId[] = 0; foreach($rows as $row){ $orderId[] = $row['order_id']; } $deliOrderObj = app::get('ome')->model("delivery_order"); $rows = $deliOrderObj->getList('delivery_id',array('order_id'=>$orderId)); //delivery_id $tempDlyIds = array(0); foreach($rows as $row) { $temp_dly_id = $row['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } unset($filter['order_bn']); } //按基础物料搜索 if (isset($filter['material_bn'])){ //多货号查询 if(strpos($filter['material_bn'], "\n") !== false){ $material_bns = array_unique(array_map('trim', array_filter(explode("\n", $filter['material_bn'])))); $filter['material_bn'] = $material_bns; } //search_delivery_items $itemsObj = app::get('ome')->model("delivery_items"); $rows = $itemsObj->getDeliveryIdByPbn($filter); //delivery_id $tempDlyIds = array(0); foreach($rows as $row) { $temp_dly_id = $row['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } //unset unset($filter['material_bn']); } //按货号搜索 if(isset($filter['product_bn'])){ //search_delivery_items $itemsObj = app::get('ome')->model("delivery_items"); $rows = $itemsObj->getDeliveryIdByFilter($filter); //delivery_id $tempDlyIds = array(0); foreach($rows as $row) { $temp_dly_id = $row['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } //unset unset($filter['product_bn']); } //按条形码搜索 if(isset($filter['product_barcode'])){ //search_delivery_items $itemsObj = app::get('ome')->model("delivery_items"); //获取条形码关联的货号 $codeSql = "SELECT a.code, b.bm_id,b.material_bn FROM sdb_material_codebase AS a LEFT JOIN sdb_material_basic_material AS b ON a.bm_id=b.bm_id "; $codeSql .= " WHERE a.code='". addslashes($filter['product_barcode']) ."'"; $materialInfo = $itemsObj->db->selectrow($codeSql); //用货号进行搜索 $filter['product_bn'] = $materialInfo['material_bn']; //unset(一定要注销掉,防止重复调用) unset($filter['product_barcode']); //list $rows = $itemsObj->getDeliveryIdByFilter($filter); //delivery_id $tempDlyIds = array(0); foreach($rows as $row) { $temp_dly_id = $row['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } //unset unset($filter['product_bn']); } if(isset($filter['logi_no_ext'])){ $logObj = app::get('ome')->model("delivery_log"); $rows = $logObj->getDeliveryIdByLogiNO($filter['logi_no_ext']); //delivery_id $tempDlyIds = array(0); foreach($rows as $row) { $temp_dly_id = $row['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } unset($filter['logi_no_ext']); } if(isset($filter['addonSQL'])){ $where .= ' AND '.$filter['addonSQL']; unset($filter['addonSQL']); } if(isset($filter['delivery_ident'])){ //delivery_id $tempDlyIds = array(0); $arr_delivery_ident = explode('_',$filter['delivery_ident']); $mdl_queue = app::get('ome')->model("print_queue"); if(count($arr_delivery_ident) == 2){ $ident_dly = array_pop($arr_delivery_ident); $ident = implode('-',$arr_delivery_ident); $queueItem = $mdl_queue->findQueueItem($ident,$ident_dly); if($queueItem){ $temp_dly_id = $queueItem['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } }else{ if (1 == substr_count($filter['delivery_ident'], '-')) { $queues = $mdl_queue->getList('dly_bns',array('ident|head'=>$filter['delivery_ident'])); if ($queues){ //$queue['dly_bns'] = implode(',', array_map('current', $queues)); $tempDlyIds = array_map('current', $queues); } } else { //获取实际的打印批次号 $delivery_id = $mdl_queue->findQueueDeliveryId($filter['delivery_ident'],'delivery_id'); if($delivery_id){ //$queue['dly_bns'] = $delivery_id; $tempDlyIds = explode(',', $delivery_id); } } } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } unset($filter['delivery_ident']); } if($filter['todo']==1){ $where .= " AND (stock_status='false' or expre_status='false' or deliv_status='false')"; unset($filter['todo']); } if($filter['todo']==2){ $where .= " AND (stock_status='false' or expre_status='false')"; unset($filter['todo']); } if($filter['todo']==3){ $where .= " AND (expre_status='false' or deliv_status='false')"; unset($filter['todo']); } if($filter['todo']==4){ $where .= " AND expre_status='false'"; unset($filter['todo']); } if (isset($filter['print_finish'])) { $where_or = array(); foreach((array)$filter['print_finish'] as $key=> $value){ $or = "(deli_cfg='".$key."'"; switch($value) { case '1_1': $or .= " AND stock_status='true' AND deliv_status='true' "; break; case '1_0': $or .= " AND stock_status='true' "; break; case '0_1': $or .= " AND deliv_status='true' "; break; case '0_0': break; } $or .= ')'; $where_or[] = $or; } if($where_or){ $where .= ' AND ('.implode(' OR ',$where_or).')'; } unset($filter['print_finish']); } if (isset($filter['ext_branch_id'])) { if (isset($filter['branch_id'])){ $filter['branch_id'] = array_intersect((array)$filter['branch_id'],(array)$filter['ext_branch_id']); $filter['branch_id'] = $filter['branch_id'] ? $filter['branch_id'] : 'false'; }else{ $filter['branch_id'] = $filter['ext_branch_id']; } unset($filter['ext_branch_id']); } if(isset($filter['logi_no'])){ $obj_delivery_bill = $deliOrderObj = app::get('ome')->model("delivery_bill"); #获取子表物流单号 $delivery_id = $obj_delivery_bill->dump(array('logi_no'=>$filter['logi_no']),'delivery_id'); if(!empty($delivery_id['delivery_id'])){ $temp_dly_id = $delivery_id['delivery_id']; $tempDlyIds = array(0); $tempDlyIds[$temp_dly_id] = $temp_dly_id; //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } unset($filter['logi_no']); } } //客服备注 if(isset($filter['mark_text'])){ $mark_text = $filter['mark_text']; $sql = "SELECT do.delivery_id FROM sdb_ome_delivery_order do JOIN sdb_ome_orders o ON do.order_id=o.order_id and o.process_status='splited' and o.mark_text like "."'%{$mark_text}%'"; $_rows = $this->db->select($sql); if(!empty($_rows)){ $tempDlyIds = array(0); foreach($_rows as $_orders) { $temp_dly_id = $_orders['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } unset($filter['mark_text']); } } //买家留言 if(isset($filter['custom_mark'])){ $custom_mark = $filter['custom_mark']; $sql = "SELECT do.delivery_id FROM sdb_ome_delivery_order do JOIN sdb_ome_orders o ON do.order_id=o.order_id and o.process_status='splited' and o.custom_mark like "."'%{$custom_mark}%'"; $_rows = $this->db->select($sql); if(!empty($_rows)){ $tempDlyIds = array(0); foreach($_rows as $_orders) { $temp_dly_id = $_orders['delivery_id']; $tempDlyIds[$temp_dly_id] = $temp_dly_id; } //intersection if(empty($deliveryIds)){ $deliveryIds = $tempDlyIds; }else{ $deliveryIds = array_intersect($deliveryIds, $tempDlyIds); } unset($filter['custom_mark']); } } //同步状态筛查 if (isset($filter['sync_filter'])) { $boolSync = kernel::single('console_delivery_bool_sync')->getBoolSync($filter['sync_filter']); $where .= ' AND sync IN ("'.implode('","', $boolSync).'")'; unset($filter['sync_filter']); } //delivery_ids if($deliveryIds){ $where .= " AND delivery_id IN ('". implode("','", $deliveryIds) ."')"; } //订单标记 if($filter['order_label']){ $ordLabelObj = app::get('ome')->model('bill_label'); $tempData = $ordLabelObj->getList('bill_id', array('label_id'=>$filter['order_label'], 'bill_type'=>'ome_delivery')); if($tempData){ $orderId = array(); foreach ($tempData as $tempKey => $tempVal) { $temp_order_id = $tempVal['bill_id']; $orderId[$temp_order_id] = $temp_order_id; } $where .= ' AND delivery_id IN ("'. implode('","', $orderId) .'")'; }else{ $where .= ' AND delivery_id = "-1"'; } unset($filter['order_label'], $tempData); } if (isset($filter['delivery_bn'])){ // 多发货号查询 if(strpos($filter['delivery_bn'], "\n") !== false){ $filter['delivery_bn'] = array_unique(array_map('trim', array_filter(explode("\n", $filter['delivery_bn'])))); } } return parent::_filter($filter,$tableAlias,$baseWhere).$where; } /* * 根据订单id获取是否撤销失败发货单 * * * @param bigint $order_id * * @return array $ids */ function getDeliveryByOrderId($order_id){ $delivery_ids = $this->db->select("SELECT dord.delivery_id FROM sdb_ome_delivery_order AS dord LEFT JOIN sdb_ome_delivery AS d ON(dord.delivery_id=d.delivery_id) WHERE dord.order_id={$order_id} AND (d.parent_id=0 OR d.is_bind='true') AND d.disabled='false' AND d.status NOT IN('failed','cancel','back','return_back','succ') AND sync='fail'"); $ids = array(); if($delivery_ids){ foreach($delivery_ids as $v){ $ids[] = $v['delivery_id']; } } return $ids; } public function update($data, $filter=array(), $mustUpdate = null) { foreach ($this->__encrypt_cols as $field => $type) { if (isset($data[$field])) { $data[$field] = (string) kernel::single('ome_security_factory')->encryptPublic($data[$field],$type); } } //调用原有处理 $result = parent::update($data, $filter, $mustUpdate); return $result; } /** * insert * @param mixed $data 数据 * @return mixed 返回值 */ public function insert(&$data) { foreach ($this->__encrypt_cols as $field => $type) { if (isset($data[$field])) { $data[$field] = (string) kernel::single('ome_security_factory')->encryptPublic($data[$field],$type); } } return parent::insert($data); } public function getList($cols='*', $filter=array(), $offset=0, $limit=-1, $orderType=null) { $data = parent::getList($cols,$filter,$offset,$limit,$orderType); foreach ((array) $data as $key => $value) { foreach ($this->__encrypt_cols as $field => $type) { if (isset($value[$field])) { $data[$key][$field] = (string) kernel::single('ome_security_factory')->decryptPublic($value[$field],$type); } } } return $data; } public function finder_getList($cols='*', $filter=array(), $offset=0, $limit=-1, $orderType=null) { $data = parent::finder_getList($cols,$filter,$offset,$limit,$orderType); foreach ((array) $data as $key => $value) { foreach ($this->__encrypt_cols as $field => $type) { if (isset($value[$field])) { $data[$key][$field] = (string) kernel::single('ome_security_factory')->decryptPublic($value[$field],$type); } } } return $data; } /** * modifier_ship_name * @param mixed $ship_name ship_name * @param mixed $list list * @param mixed $row row * @return mixed 返回值 */ public function modifier_ship_name($ship_name,$list,$row) { if ($this->is_export_data) { if ('false' != app::get('ome')->getConf('ome.sensitive.exportdata.encrypt')) { return kernel::single('ome_view_helper2')->modifier_ciphertext($ship_name,'delivery','ship_name'); } return $ship_name; } $is_encrypt = kernel::single('ome_security_hash')->check_encrypt($ship_name); if (!$is_encrypt) return $ship_name; $base_url = kernel::base_url(1);$delivery_id = $row['delivery_id']; $encryptShipName = kernel::single('ome_view_helper2')->modifier_ciphertext($ship_name,'delivery','ship_name'); $return =<<{$encryptShipName} HTML; return $ship_name?$return:$ship_name; } /** * modifier_ship_tel * @param mixed $tel tel * @param mixed $list list * @param mixed $row row * @return mixed 返回值 */ public function modifier_ship_tel($tel,$list,$row) { if ($this->is_export_data) { if ('false' != app::get('ome')->getConf('ome.sensitive.exportdata.encrypt')) { return kernel::single('ome_view_helper2')->modifier_ciphertext($tel,'delivery','ship_tel'); } return $tel; } $is_encrypt = kernel::single('ome_security_hash')->check_encrypt($tel); if (!$is_encrypt) return $tel; $base_url = kernel::base_url(1);$delivery_id = $row['delivery_id']; $encryptTel = kernel::single('ome_view_helper2')->modifier_ciphertext($tel,'delivery','ship_tel'); $return =<<{$encryptTel} HTML; return $tel?$return:$tel; } /** * modifier_ship_mobile * @param mixed $mobile mobile * @param mixed $list list * @param mixed $row row * @return mixed 返回值 */ public function modifier_ship_mobile($mobile,$list,$row) { if ($this->is_export_data) { if ('false' != app::get('ome')->getConf('ome.sensitive.exportdata.encrypt')) { return kernel::single('ome_view_helper2')->modifier_ciphertext($mobile,'delivery','ship_mobile'); } return $mobile; } $is_encrypt = kernel::single('ome_security_hash')->check_encrypt($mobile); if (!$is_encrypt) return $mobile; $base_url = kernel::base_url(1);$delivery_id = $row['delivery_id']; $encryptMobile = kernel::single('ome_view_helper2')->modifier_ciphertext($mobile,'delivery','ship_mobile'); $return =<<{$encryptMobile} HTML; return $mobile?$return:$mobile; } /** * modifier_ship_addr * @param mixed $ship_addr ship_addr * @param mixed $list list * @param mixed $row row * @return mixed 返回值 */ public function modifier_ship_addr($ship_addr,$list,$row) { if ($this->is_export_data) { if ('false' != app::get('ome')->getConf('ome.sensitive.exportdata.encrypt')) { return kernel::single('ome_view_helper2')->modifier_ciphertext($ship_addr,'delivery','ship_addr'); } return $ship_addr; } $is_encrypt = kernel::single('ome_security_hash')->check_encrypt($ship_addr); if (!$is_encrypt) return $ship_addr; $base_url = kernel::base_url(1);$delivery_id = $row['delivery_id']; $encryptAddr = kernel::single('ome_view_helper2')->modifier_ciphertext($ship_addr,'delivery','ship_addr'); $return =<<{$encryptAddr} HTML; return $ship_addr?$return:$ship_addr; } /** * modifier_member_id * @param mixed $member_id ID * @param mixed $list list * @param mixed $row row * @return mixed 返回值 */ public function modifier_member_id($member_id,$list,$row) { static $members; if (!$member_id) return ''; if ($members) return $members[$row['delivery_id']]; $members = array (); foreach ($list as $key => $value) { $members[$value['delivery_id']] = $value['member_id']; } $rows = array (); if ($mid = array_filter($members)) { $mdl = app::get('ome')->model('members'); foreach ($mdl->getList('member_id,uname',array('member_id'=>$mid)) as $value) { $rows[$value['member_id']] = $value['uname']; } } foreach ($members as $delivery_id => $value) { $uname = $rows[$value]; $is_encrypt = kernel::single('ome_security_hash')->check_encrypt($uname); if ($is_encrypt) { $encrypt = kernel::single('ome_view_helper2')->modifier_ciphertext($uname,'delivery','uname'); $uname = <<{$encrypt} HTML; } $members[$delivery_id] = $uname; } return $members[$row['delivery_id']]; } function getOrderIdByDeliveryId($dly_ids){ $dly_orderObj = app::get('ome')->model('delivery_order'); $filter['delivery_id'] = $dly_ids; $data = $dly_orderObj->getList('order_id', $filter); foreach ($data as $item){ $ids[] = $item['order_id']; } return $ids; } }