Files
OMS/app/pos/controller/store.php
2026-01-04 19:08:31 +08:00

161 lines
5.1 KiB
PHP

<?php
/**
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class pos_ctl_store extends desktop_controller
{
function index() {
$this->title='门店列表';
$servers = kernel::single('pos_event_trigger_common')->getChannelId('pekon');
$server_id = $servers['server_id'];
$filter = $this->baseFilter();
$_GET['view'] = intval($_GET['view']);
$actions =[];
//if(in_array($_GET['view'],array('1','2'))){
$actions[] = array(
'label' => '批量同步',
'submit' => 'index.php?app=pos&ctl=store&act=syncstoreDailog',
'target'=>'dialog::{width:600,height:300,title:\'批量同步\'}"'
);
//}
$params = array(
'title' => $this->title,
'use_buildin_new_dialog' => false,
'use_buildin_set_tag'=>false,
'use_buildin_recycle'=>false,
'use_buildin_export'=>false,
'use_buildin_import'=>false,
'use_buildin_importxls'=>true,
'use_buildin_filter'=>true,
'use_view_tab'=>true,
'base_filter' => $filter,
'actions'=>$actions,
);
$this->finder('pos_mdl_store', $params);
}
function _views() {
$storeMdl = app::get('pos')->model('store');
$base_filter = $this->baseFilter();
$sub_menu[0] = array('label' => app::get('base')->_('全部'), 'filter' => array_merge($base_filter), 'optional' => false);
$sub_menu[1] = array('label' => app::get('base')->_('未同步'), 'filter' => array_merge($base_filter, array('sync_status'=>'0')), 'optional' => false);
$sub_menu[2] = array('label' => app::get('base')->_('同步失败'),'filter' => array_merge($base_filter,array('sync_status' => '2')),'optional' => false);
$sub_menu[3] = array('label' => app::get('base')->_('同步成功'),'filter' => array_merge($base_filter,array('sync_status' => '1')),'optional' => false);
foreach ($sub_menu as $k => $v) {
$sub_menu[$k]['filter'] = $v['filter'] ? $v['filter'] : null;
$sub_menu[$k]['addon'] = $v['addon'] ? $v['addon'] : $storeMdl->viewcount($v['filter']);
$sub_menu[$k]['href'] = 'index.php?app=pos&ctl=' . $_GET['ctl'] . '&act=' . $_GET['act'] . '&flt=' . $_GET['flt'] . '&view=' . $k . $s;
}
return $sub_menu;
}
/**
* syncstoreDailog
* @return mixed 返回值
*/
public function syncstoreDailog()
{
$this->pagedata['request_url'] = 'index.php?app=pos&ctl=store&act=ajaxSyncstore';
$this->pagedata['autotime'] = '500';
if ($_POST['isSelectedAll'] == '_ALL_') {
$view = intval($_POST['view']);
$subMenu = $this->_views();
$baseFilter = $subMenu[$view]['filter'];
$_POST = array_merge($baseFilter, $_POST);
}else{
$base_filter = $this->baseFilter();
$_POST = array_merge($_POST, $_GET,$base_filter);
}
parent::dialog_batch('pos_mdl_store',true,10);
}
/**
* ajaxSyncstore
* @return mixed 返回值
*/
public function ajaxSyncstore()
{
parse_str($_POST['primary_id'], $primary_id);
if (!$primary_id) { echo 'Error: 请先选择数据';exit;}
$retArr = array(
'itotal' => 0,
'isucc' => 0,
'ifail' => 0,
'err_msg' => array(),
);
$storeMdl = app::get('pos')->model('store');
$storeMdl->filter_use_like = true;
$stores = $storeMdl->getList('store_id',$primary_id['f'],$primary_id['f']['offset'],$primary_id['f']['limit']);
$retArr['itotal'] = count($stores);
foreach ($stores as $v) {
list($rs,$msg) = kernel::single('pos_event_trigger_shop')->add($v['store_id']);
if ($rs) {
$retArr['isucc']++;
} else {
$retArr['ifail']++;
$retArr['err_msg'] = sprintf('[%s]', $msg);
}
}
echo json_encode($retArr),'ok.';exit;
}
/**
* baseFilter
* @return mixed 返回值
*/
public function baseFilter(){
$servers = kernel::single('pos_event_trigger_common')->getChannelId('pekon');
$server_id = $servers['server_id'];
$base_filter = [
'server_id' => $server_id,
];
return $base_filter;
}
}