mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-22 18:35:35 +08:00
235 lines
8.0 KiB
PHP
235 lines
8.0 KiB
PHP
<?php
|
||
/**
|
||
* Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
* See LICENSE file for license details.
|
||
*/
|
||
|
||
class invoice_ctl_admin_channel extends desktop_controller
|
||
{
|
||
public function __construct($app)
|
||
{
|
||
parent::__construct($app);
|
||
}
|
||
|
||
public function index()
|
||
{
|
||
$this->title = '电子发票渠道列表';
|
||
$params = array(
|
||
'title'=>$this->title,
|
||
'use_buildin_import'=>false,
|
||
'use_buildin_recycle'=>false,
|
||
'actions' =>array(
|
||
array(
|
||
'label'=>'添加',
|
||
'href'=>'index.php?app=invoice&ctl=admin_channel&act=add',
|
||
'target' => 'dialog::{width:620,height:460,title:\'添加来源\'}',
|
||
),
|
||
)
|
||
);
|
||
|
||
$this->finder('invoice_mdl_channel', $params);
|
||
}
|
||
|
||
public function add(){
|
||
$this->_edit('add','');
|
||
}
|
||
|
||
public function edit($channel_id){
|
||
$this->_edit('edit',$channel_id);
|
||
}
|
||
|
||
public function _edit($action='add',$channel_id)
|
||
{
|
||
//来源类型信息
|
||
$funcObj = kernel::single('invoice_func');
|
||
$this->pagedata['channels'] = $funcObj->channels('');
|
||
|
||
if ($channel_id) {
|
||
$channel = app::get('invoice')->model('channel')->db_dump($channel_id);
|
||
$channel['extend_data'] = @json_decode($channel['extend_data'], true);
|
||
$this->pagedata['channel'] = $channel;
|
||
}
|
||
|
||
$this->display("admin/channel.html");
|
||
}
|
||
|
||
/**
|
||
* 加载对应平台配置
|
||
*
|
||
* @param string $channel_type 类型
|
||
* @param int $channel_id 类型ID
|
||
* @return void
|
||
* @author
|
||
*/
|
||
public function getAuthConfigs($channel_type, $channel_id = 0)
|
||
{
|
||
$authObj = kernel::single('invoice_auth_' . $channel_type);
|
||
|
||
$configs = $authObj->getAuthConfigs();
|
||
|
||
if ($channel_id) {
|
||
$channel = app::get('invoice')->model('channel')->db_dump($channel_id,'extend_data,shop_id');
|
||
|
||
$extend_data = @json_decode($channel['extend_data'], true);
|
||
$extend_data['shop_id'] = $channel['shop_id'];
|
||
|
||
if ($extend_data) {
|
||
foreach ((array) $configs as $key => $value) {
|
||
if (isset($extend_data[$key])) $configs[$key]['value'] = $extend_data[$key];
|
||
}
|
||
}
|
||
}
|
||
|
||
$ui = new base_component_ui($this);
|
||
foreach ((array) $configs as $key => $value) {
|
||
$configs[$key]['inputer'] = $ui->input($value);
|
||
}
|
||
|
||
$this->pagedata['configs'] = $configs;
|
||
|
||
$this->display('admin/auth/config.html');
|
||
}
|
||
|
||
public function delChannel()
|
||
{
|
||
$this->begin('index.php?app=invoice&ctl=admin_channel&act=index');
|
||
$obj_order_setting = kernel::single('invoice_mdl_order_setting');
|
||
$obj_channel = kernel::single('invoice_mdl_channel');
|
||
|
||
$isSelectedAll = $_POST['isSelectedAll'];
|
||
$channel_ids = $_POST['channel_id'];
|
||
|
||
if($isSelectedAll != '_ALL_' && $channel_ids){
|
||
$basefilter = array('channel_id'=>$channel_ids);
|
||
}else{
|
||
$basefilter = array();
|
||
}
|
||
$all_channel_ids = $obj_channel->getList('channel_id',$basefilter);
|
||
$channel_ids = array_map('current', $all_channel_ids);
|
||
|
||
foreach($channel_ids as $channel_id){
|
||
$rs = $obj_order_setting->getList('*',array('channel_id'=>$channel_id));
|
||
if(!empty($rs)){
|
||
$this->end(false,'渠道已被使用,不能关闭!');
|
||
}
|
||
}
|
||
|
||
foreach($channel_ids as $id){
|
||
$obj_channel->update(array('status'=>'false'),array('channel_id'=>$id));
|
||
}
|
||
|
||
$this->end(true, $this->app->_('关闭成功'));
|
||
}
|
||
|
||
function do_save()
|
||
{
|
||
$this->begin('index.php?app=invoice&ctl=admin_channel&act=index');
|
||
$channelMdl = app::get('invoice')->model('channel');
|
||
|
||
$data = array();
|
||
$data['channel_id'] = $_POST['channel_id'];
|
||
$data['name'] = $_POST['name'];
|
||
if ($_POST['channel_type']) $data['golden_tax_version'] = $_POST['golden_tax_version'];
|
||
$data['extend_data'] = json_encode($_POST['extend_data']);
|
||
|
||
if (!$data['channel_id']) $data['create_time'] = time();
|
||
if ($_POST['channel_type']) $data['channel_type'] = $_POST['channel_type'];
|
||
if ($_POST['shop_id']) $data['shop_id'] = $_POST['shop_id'];
|
||
|
||
if ($data['shop_id'] && $channelMdl->dump(array('shop_id'=>$data['shop_id'],'channel_id|noequal'=>$data['channel_id']))) {
|
||
$this->end(false,'店铺已经存在');
|
||
}
|
||
|
||
if ($_POST['shop_id']) {
|
||
$shopInfo = app::get('ome')->model('shop')->db_dump(['shop_id' => $_POST['shop_id']]);
|
||
if ($shopInfo['shop_type'] == 'taobao') {
|
||
$data['node_id'] = $shopInfo['node_id'];
|
||
$data['node_type'] = $shopInfo['node_type'];
|
||
}
|
||
}
|
||
|
||
if (!$channelMdl->save($data)) {
|
||
$this->end(false,'保存失败');
|
||
}
|
||
|
||
if (!defined('DEV_ENV') || (defined('DEV_ENV') && 'sandbox' == constant("DEV_ENV")) ) {}
|
||
$channel = $channelMdl->db_dump($data['channel_id']);
|
||
// 缺失节点,进行绑定
|
||
if(!$channel['node_id']){
|
||
$force = true;
|
||
$needResponse = true;
|
||
$result = kernel::single('erpapi_router_request')->set('bind', $channel['channel_type'])->bind_bind($_POST['extend_data'], $force, $needResponse);
|
||
|
||
if (!$result) {
|
||
$this->end(false, '绑定失败');
|
||
}
|
||
|
||
// 如果实际发起请求,则处理回写
|
||
if (is_array($result)) {
|
||
list($rs, $errmsg) = $channelMdl->bindChannelCallback($data, $result);
|
||
|
||
if (!$rs) {
|
||
$this->end(false, '绑定失败:' . $errmsg);
|
||
}
|
||
}
|
||
}
|
||
|
||
$this->end(true, '新建成功');
|
||
}
|
||
|
||
//开启或关闭状态切换
|
||
public function status($status,$channel_id = null)
|
||
{
|
||
$this->begin('index.php?app=invoice&ctl=admin_channel&act=index');
|
||
$obj_channel = app::get('invoice')->model('channel');
|
||
$obj_order_setting = kernel::single('invoice_mdl_order_setting');
|
||
if(empty($channel_id)){
|
||
$this->end(false,$this->app->_('设置失败'));
|
||
}
|
||
$filter = array('channel_id'=>$channel_id);
|
||
$all_channel_ids = $obj_channel->getList('channel_id',$filter);
|
||
$channel_ids = array_map('current', $all_channel_ids);
|
||
$rs = $obj_order_setting->getList('*',array('channel_id'=>$channel_ids));
|
||
if(!empty($rs)){
|
||
$this->end(false,'该渠道已被使用,不能关闭!');
|
||
}
|
||
|
||
$data['status'] = $status;
|
||
$obj_channel->update($data,$filter);
|
||
|
||
$this->end(true,$this->app->_('设置成功'));
|
||
}
|
||
|
||
public function unbind($channel_id)
|
||
{
|
||
$channelMdl = app::get('invoice')->model('channel');
|
||
$channel = $channelMdl->db_dump($channel_id);
|
||
if (!$channel) {
|
||
$this->splash('error', $this->url, '渠道不存在');
|
||
}
|
||
|
||
if (!$channel['node_id']) {
|
||
$this->splash('error', $this->url, '渠道未绑定');
|
||
}
|
||
//不是淘宝开票渠道的才需要请求解绑
|
||
if ($channel['channel_type'] != 'taobao') {
|
||
$result = kernel::single('erpapi_router_request')
|
||
->set('bind', $channel['channel_type'])
|
||
->bind_unbind([
|
||
'to_node' => $channel['node_id'],
|
||
'node_type' => $channel['node_type'],
|
||
'title' => $channel['name'],
|
||
]);
|
||
}else{
|
||
$result = true;
|
||
}
|
||
|
||
if ($result){
|
||
$channelMdl->update(['node_id'=>''], ['channel_id'=>$channel['channel_id']]);
|
||
$this->splash('success', $this->url, '解绑成功');
|
||
} else {
|
||
$this->splash('error', $this->url, '解绑失败');
|
||
}
|
||
}
|
||
}
|