Files
OMS/app/logisticsmanager/lib/finder/channel.php
2025-12-28 23:13:25 +08:00

268 lines
10 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
class logisticsmanager_finder_channel
{
public $addon_cols = "channel_id,status,channel_type,logistics_code,shop_id,bind_status";
public $column_control = '操作';
// public $column_control_width = '60';
public $column_control_order = COLUMN_IN_HEAD;
public $detail_shop_address = '发货地址';
public $detail_log = '导入面单号记录';
/**
* column_control
* @param mixed $row row
* @return mixed 返回值
*/
public function column_control($row)
{
$channel_id = $row[$this->col_prefix . 'channel_id'];
$bind_status = $row[$this->col_prefix.'bind_status'];
$channel_type = $row[$this->col_prefix.'channel_type'];
$finder_id = $_GET['_finder']['finder_id'];
$button = "<a href='javascript:void(0);' onclick=\"new Dialog('index.php?app=logisticsmanager&ctl=admin_channel&act=edit&p[0]={$channel_id}&finder_id={$_GET['_finder']['finder_id']}',{width:620,height:260,title:'来源添加/编辑'}); \">编辑</a>";
if ($channel_type == '360buy' || $channel_type == 'jdalpha') {
list($jdbusinesscode,$shop_id) = explode('|||',$row[$this->col_prefix.'shop_id']);
if ($shop_id === '00000000') {
$api_ur = urlencode(kernel::base_url(true).kernel::url_prefix().'/api');
$callback_url = urlencode(kernel::openapi_url('openapi.logisticsmanager.channel','callback',array('channel_id'=>$channel_id)));
$button .= $bind_status == 'false' ? sprintf(" | <a href='index.php?app=logisticsmanager&ctl=admin_channel&act=apply_bindrelation&p[0]=%s&p[1]=%s' target='dialog::{width:800,title:\"京东授权\",onClose:function(){window.finderGroup[\"%s\"].refresh();}}'>京东授权</a>", $api_ur,$callback_url,$finder_id) : sprintf(" | <a class='c-red' href='javascirpt:void(0);' url='index.php?app=logisticsmanager&ctl=admin_channel&act=cancel_bindrelation&p[0]=%s&finder_id=%s' onclick='javascript:if(confirm(\"确认取消授权?\")){W.page(this.get(\"url\"));}'>取消授权</a>", $channel_id,$finder_id);
}
}
return $button;
}
public $column_channel_type = '来源类型';
public $column_channel_type_width = '80';
public $column_channel_type_order = COLUMN_IN_TAIL;
/**
* column_channel_type
* @param mixed $row row
* @return mixed 返回值
*/
public function column_channel_type($row)
{
$funcObj = kernel::single('logisticsmanager_waybill_func');
$channel_type = $row[$this->col_prefix . 'channel_type'];
$channels = $funcObj->channels($channel_type);
if ($channels) {
return $channels['name'];
} else {
return '未知';
}
}
public $column_logistics = '物流公司';
public $column_logistics_width = '80';
public $column_logistics_order = COLUMN_IN_TAIL;
/**
* column_logistics
* @param mixed $row row
* @return mixed 返回值
*/
public function column_logistics($row)
{
$channel_type = $row[$this->col_prefix . 'channel_type'];
if ($channel_type && class_exists('logisticsmanager_waybill_' . $channel_type)) {
$wlbObj = kernel::single('logisticsmanager_waybill_' . $channel_type);
$logistics_code = $row[$this->col_prefix . 'logistics_code'];
$logistics = $wlbObj->logistics($logistics_code);
}
if ($logistics) {
return $logistics['name'];
} else {
return '未知';
}
}
public $column_waybillnum = '本地可用';
public $column_waybillnum_width = '80';
public $column_waybillnum_order = COLUMN_IN_TAIL;
/**
* column_waybillnum
* @param mixed $row row
* @return mixed 返回值
*/
public function column_waybillnum($row)
{
$waybillObj = app::get('logisticsmanager')->model('waybill');
$filter = array('status' => 0);
$filter['channel_id'] = $row[$this->col_prefix . 'channel_id'];
$filter['logistics_code'] = $row[$this->col_prefix . 'logistics_code'];
$count = $waybillObj->count($filter);
return "<span class=show_list channel_id=" . $filter['channel_id'] . " billtype='active'><a >" . $count . "</a></span>";
}
public $column_shop = '适用店铺';
public $column_shop_width = '150';
public $column_shop_order = COLUMN_IN_TAIL;
/**
* column_shop
* @param mixed $row row
* @return mixed 返回值
*/
public function column_shop($row)
{
if (in_array($row[$this->col_prefix . 'channel_type'], ['wlb', 'taobao', 'kuaishou', 'wphvip'])) {
$shopObj = app::get('ome')->model('shop');
$shop = $shopObj->dump($row[$this->col_prefix . 'shop_id'], 'name');
return $shop['name'];
} elseif ($row[$this->col_prefix . 'channel_type'] == 'ems') {
if ($row[$this->col_prefix . 'bind_status'] == 'true') {
return '全部';
} else {
return '未绑定';
}
} elseif ($row[$this->col_prefix . 'channel_type'] == '360buy') {
$logistics_code = $row[$this->col_prefix . 'logistics_code'];
if (strtoupper($logistics_code) == 'SOP') {
return '京东' . $logistics_code;
} else {
return '京东';
}
} else {
return '全部';
}
}
/**
* 作废物流单号.
* @param
* @return
* @access
* @author sunjing@shopex.cn
*/
public $column_recycle_waybill = '本地作废';
public $column_recycle_waybill_width = '80';
/**
* column_recycle_waybill
* @param mixed $row row
* @return mixed 返回值
*/
public function column_recycle_waybill($row)
{
$waybillObj = app::get('logisticsmanager')->model('waybill');
$filter = array('status' => 2);
$filter['channel_id'] = $row[$this->col_prefix . 'channel_id'];
$filter['logistics_code'] = $row[$this->col_prefix . 'logistics_code'];
$count = $waybillObj->count($filter);
return "<span class='show_list' channel_id=" . $filter['channel_id'] . " billtype='recycle' ><a >" . $count . "</a></span>";
}
/**
* 作废物流单号.
* @param
* @return
* @access
* @author sunjing@shopex.cn
*/
public $column_use_waybill = '本地已用';
public $column_use_waybill_width = '80';
/**
* column_use_waybill
* @param mixed $row row
* @return mixed 返回值
*/
public function column_use_waybill($row)
{
$waybillObj = app::get('logisticsmanager')->model('waybill');
$filter = array('status' => 1);
$filter['channel_id'] = $row[$this->col_prefix . 'channel_id'];
$filter['logistics_code'] = $row[$this->col_prefix . 'logistics_code'];
$count = $waybillObj->count($filter);
return "<span class='show_list' channel_id=" . $filter['channel_id'] . " billtype='used' ><a >" . $count . "</a></span>";
}
/**
* 店铺地址
* @param
* @return
* @access public
* @author sunjing@shopex.cn
*/
public function detail_shop_address($channel_id)
{
$htmlUrl = 'admin/channel/detail_address.html';
$render = app::get('logisticsmanager')->render();
$channelObj = app::get('logisticsmanager')->model('channel');
$channel_detail = $channelObj->dump($channel_id, 'channel_type,bind_status');
$render->pagedata['channel_id'] = $channel_id;
$render->pagedata['channel_detail'] = $channel_detail;
$extendObj = app::get('logisticsmanager')->model('channel_extend');
$extend = $extendObj->dump(array('channel_id' => $channel_id), '*');
$extend['addon'] = is_array($extend['addon']) ? $extend['addon'] : [];
if (in_array($channel_detail['channel_type'], app::get('logisticsmanager')->model('channel')->getWaybillAccountFromApi)) {
$htmlUrl = 'admin/channel/detail_address_wxshipin.html';
}
// $render->pagedata['show_shop_address'] = $show_shop_address;
$render->pagedata['extend_detail'] = $extend;
unset($extend);
return $render->fetch($htmlUrl);
}
public $detail_electron = '面单使用情况';
/**
* detail_electron
* @param mixed $channelId ID
* @return mixed 返回值
*/
public function detail_electron($channelId)
{
$sql = 'SELECT
COUNT(*) AS count,status,channel_id,logistics_code
FROM
sdb_logisticsmanager_waybill
WHERE channel_id = ' . $channelId . '
GROUP BY status';
$result = kernel::database()->select($sql);
$waybillCount = array();
foreach ($result as $arr) {
$waybillCount[$arr['status']] = $arr['count'];
}
$render = app::get('logisticsmanager')->render();
$render->pagedata['channel_id'] = $channelId;
$render->pagedata['waybill_count'] = $waybillCount;
return $render->fetch('admin/channel/waybill_detail.html');
}
/**
* detail_log
* @param mixed $channel_id ID
* @return mixed 返回值
*/
public function detail_log($channel_id)
{
$render = app::get('logisticsmanager')->render();
$oOperation_log = app::get('ome')->model('operation_log');
$log_list = $oOperation_log->read_log(array('obj_id' => $channel_id, 'obj_type' => 'channel@logisticsmanager'), 0, -1);
foreach ($log_list as $k => $v) {
$log_list[$k]['operate_time'] = date('Y-m-d H:i:s', $v['operate_time']);
}
$channelObj = app::get('logisticsmanager')->model('channel');
$channel_detail = $channelObj->getlist('channel_type', array('channel_id' => $channel_id), 0, 1);
$render->pagedata['channel_type'] = $channel_detail[0]['channel_type'];
$render->pagedata['channel_id'] = $channel_id;
$render->pagedata['log_list'] = $log_list;
return $render->fetch('admin/channel/detail_log.html');
}
}