/** * 头部 */ function function_header() { $ret = '<base href="' . kernel::base_url(1) . '"/>'; $path = app::get('site')->res_url; $debug_css = defined('DEBUG_CSS') && constant('DEBUG_CSS'); $debug_js = defined('DEBUG_JS') && constant('DEBUG_JS'); $css_mini = $debug_css ? '' : '_mini'; $cssver = kernel::single('base_component_ui')->getVer($debug_css); $jsver = kernel::single('base_component_ui')->getVer($debug_js); if (!defined("DONOTUSE_CSSFRAMEWORK") || !constant('DONOTUSE_CSSFRAMEWORK')) { $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/typical.css' . $cssver . '" />'; } $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css' . $cssver . '" />'; $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site', 'pdir' => 'js_mini')); $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'b2c', 'pdir' => 'js_mini')); if ($debug_js) { $ret .= '<script src="' . $path . '/js/mootools.js?' . $jsver . '"></script> <script src="' . $path . '/js/moomore.js' . $jsver . '"></script> <script src="' . $path . '/js/jstools.js' . $jsver . '"></script> <script src="' . $path . '/js/switchable.js' . $jsver . '"></script> <script src="' . $path . '/js/dragdropplus.js' . $jsver . '"></script> <script src="' . $path . '/js/shopwidgets.js' . $jsver . '"></script>'; } else { $ret .= '<script src="' . $path . '/js_mini/moo.min.js' . $jsver . '"></script> <script src="' . $path . '/js_mini/ui.min.js' . $jsver . '"></script> <script src="' . $path . '/js_mini/shopwidgets.min.js' . $jsver . '"></script>'; } foreach (kernel::serviceList('site_theme_view_helper') as $service) { if (method_exists($service, 'function_header')) { $ret .= $service->function_header(); } } return $ret; }
/** * 头部 */ function function_header() { $ret = '<base href="' . kernel::base_url(1) . '"/>'; $path = app::get('site')->res_url; $css_min = defined('DEBUG_CSS') && constant('DEBUG_CSS') ? '' : '_min'; $css_mini = $css_min ? '_mini' : ''; $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_min . '/framework.css" type="text/css" />'; $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css" type="text/css" />'; $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site')); if (defined('DEBUG_JS') && constant('DEBUG_JS')) { $ret .= '<script src="' . $path . '/js/mootools.js?' . time() . '"></script> <script src="' . $path . '/js/moomore.js?' . time() . '"></script> <script src="' . $path . '/js/jstools.js?' . time() . '"></script> <script src="' . $path . '/js/coms/switchable.js?' . time() . '"></script> <script src="' . $path . '/js/dragdropplus.js?' . time() . '"></script> <script src="' . $path . '/js/shopwidgets.js?' . time() . '"></script>'; } else { $ret .= '<script src="' . $path . '/js_mini/moo_min.js"></script> <script src="' . $path . '/js_mini/switchable_min.js"></script> <script src="' . $path . '/js_mini/shopwidgets_min.js"></script>'; } foreach (kernel::serviceList('site_theme_view_helper') as $service) { if (method_exists($service, 'function_header')) { $ret .= $service->function_header(); } } return $ret; }
function dorecycle($mdl_name, $filter = null) { $oRecycle = app::get('desktop')->model('recycle'); list($app_id, $table) = explode('_mdl_', $mdl_name); $o = app::get($app_id)->model($table); $recycle_item = array(); $recycle_item['drop_time'] = time(); $recycle_item['item_type'] = $o->table_name(); $dbschema = $o->get_schema(); $textColumn = $dbschema['textColumn']; $pkey = $dbschema['idColumn']; foreach ($dbschema['columns'] as $k => $col) { if ($col['is_title'] && $col['sdfpath']) { $textColumn = $col['sdfpath']; break; } } $rows = $o->getList('*', $filter, 0, -1); if (method_exists($o, 'pre_recycle')) { if (!$o->pre_recycle($rows)) { return false; } } $menus = app::get('desktop')->model('menus'); $permission_id = $menus->permissionId($_GET); foreach ($rows as $k => $v) { $pkey_value = $v[$pkey]; $v = $o->dump($v[$pkey], '*', 'delete'); $recycle_item['item_sdf'] = $v; $recycle_item['app_key'] = $app_id; $recycle_item['item_title'] = $v[$textColumn]; if (method_exists($o, 'title_recycle')) { $recycle_item['item_title'] = $o->title_recycle($v); } $tmp = $recycle_item; $tmp['permission'] = $permission_id; $return = $oRecycle->save($tmp); unset($tmp[$pkey]); $o->delete(array($pkey => $pkey_value)); #↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓记录管理员操作日志@lujy↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ if ($obj_operatorlogs = kernel::service('operatorlog.system')) { if (method_exists($obj_operatorlogs, 'dorecycle')) { $obj_operatorlogs->dorecycle($v); } } #↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑记录管理员操作日志@lujy↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ } if (method_exists($o, 'suf_recycle')) { if (!$o->suf_recycle($_POST)) { return false; } } $services = kernel::serviceList('desktop_finder_callback.' . get_class($o)); foreach ($services as $service) { if (method_exists($service, 'recycle')) { $service->recycle($_POST); } } return true; }
public function pre_display(&$content) { foreach (kernel::serviceList('base_render_pre_display') as $service) { if (method_exists($service, 'pre_display')) { $service->pre_display($content); } } }
public static function exception_handler($exception) { foreach (kernel::serviceList('base_exception_handler') as $service) { if (method_exists($service, 'pre_display')) { $service->pre_display($content); } } $message = $exception->getMessage(); $code = $exception->getCode(); $file = $exception->getFile(); $line = $exception->getLine(); $trace = $exception->getTrace(); $trace_message = $exception->getTraceAsString(); $trace_message = null; $root_path = realpath(ROOT_DIR); $output = ob_end_clean(); $position = str_replace($root_path, '> ', $file) . ':' . $line; $i = 0; foreach ($trace as $t) { if (!($t['class'] == 'kernel' && $t['function'] == 'exception_error_handler')) { $t['file'] = str_replace($root_path, 'ROOT:', $t['file']); $basename = basename($t['file']); if ($i == 0) { $trace_message .= '<tr class="code" style="color:#000"><td><b>> </b></td>'; } else { $trace_message .= '<tr class="code" style="color:#999"><td></td>'; } if ($t['args']) { $args_info = htmlspecialchars(implode(',', $t['args'])); if (trim($args_info)) { $args = "<span class=\"lnk\" onclick=\"alert(this.nextSibling.innerHTML)\">...</span><span style='display:none'>{$args_info}</span>"; } else { $args = "\"{$args_inf}\""; } } else { $args = ''; } if ($t['line']) { $trace_message .= "<td>#{$i}</td><td>{$t['class']}{$t['type']}{$t['function']}({$args})</td><td>{$basename}:{$t['line']}</td></tr>"; } else { $trace_message .= "<td>#{$i}</td><td>{$t['class']}{$t['type']}{$t['function']}({$args})</td><td>{$basename}</td></tr>"; } $i++; } } $output = <<<EOF <p style="background:#eee;border:1px solid #ccc;padding:10px;margin:10px 0">{$message}</p> <div style="padding:10px 0;font-weight:bold;color:#000">{$position}</div> <table cellspacing="0" cellpadding='0' style="width:100%;"> {$trace_message} </table> EOF; self::output($output, 'Track'); }
/** * 重写getList方法 */ public function getList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null) { $arr_list = parent::getList($cols, $filter, $offset, $limit, $orderType); $obj_extends_order_service = kernel::serviceList('b2c.api_reship_extends_actions'); if ($obj_extends_order_service) { foreach ($obj_extends_order_service as $obj) { $obj->extend_item_list($arr_list); } } return $arr_list; }
function main() { $this->controller->begin(); $oRecycle = app::get('desktop')->model('recycle'); $recycle_item = array(); $recycle_item['drop_time'] = time(); $recycle_item['item_type'] = $this->object->table_name(); $o = $this->app->model($this->object->table_name()); $this->dbschema = $this->object->get_schema(); $textColumn = $this->dbschema['textColumn']; foreach ($this->dbschema['columns'] as $k => $col) { if ($col['is_title'] && $col['sdfpath']) { $textColumn = $col['sdfpath']; break; } } $pkey = $this->dbschema['idColumn']; $pkey_value = $_POST[$pkey]; //explode('|',$_POST['_PKEY_']); $rows = $o->getList('*', array($pkey => $pkey_value), 0, -1); if (method_exists($o, 'pre_recycle')) { if (!$o->pre_recycle($rows)) { $this->controller->end(false, $o->recycle_msg ? $o->recycle_msg : '删除失败'); return false; } } foreach ($rows as $k => $v) { $pkey_value = $v[$pkey]; $v = $o->dump($v[$pkey], '*', 'delete'); $recycle_item['item_sdf'] = $v; $recycle_item['app_key'] = $this->app->app_id; $recycle_item['item_title'] = $v[$textColumn]; $tmp = $recycle_item; $return = $oRecycle->save($tmp); unset($tmp[$pkey]); $o->delete(array($pkey => $pkey_value)); } if (method_exists($o, 'suf_recycle')) { if (!$o->suf_recycle($_POST)) { $this->controller->end(false, $o->recycle_msg ? $o->recycle_msg : '删除失败'); return false; } } $services = kernel::serviceList('desktop_finder_callback.' . get_class($o)); foreach ($services as $service) { if (method_exists($service, 'recycle')) { $service->recycle($_POST); } } $this->controller->end(true, '删除成功', 'javascript:finderGroup["' . $_GET['finder_id'] . '"].unselectAll();finderGroup["' . $_GET['finder_id'] . '"].refresh();'); }
public function getList($cols = '*', $filter = array('status' => 'false'), $offset = 0, $limit = -1, $orderby = null) { $services = kernel::serviceList('passport'); foreach ($services as $service) { if ($service instanceof pam_interface_passport) { $a_temp = $service->get_config(); $item['passport_id'] = $a_temp['passport_id']['value']; $item['passport_name'] = $a_temp['passport_name']['value']; $item['passport_status'] = $a_temp['passport_status']['value']; $item['passport_version'] = $a_temp['passport_version']['value']; $ret[] = $item; } } return $ret; }
function function_header() { $ret = '<base href="' . kernel::base_url(1) . '"/>'; $path = app::get('site')->res_full_url; $debug_css = defined('DEBUG_CSS') && constant('DEBUG_CSS'); $debug_js = defined('DEBUG_JS') && constant('DEBUG_JS'); $css_mini = $debug_css ? '' : '_mini'; $cssver = kernel::single('base_component_ui')->getVer($debug_css); $jsver = kernel::single('base_component_ui')->getVer($debug_js); if (!defined("DONOTUSE_CSSFRAMEWORK") || !constant('DONOTUSE_CSSFRAMEWORK')) { $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/typical.css' . $cssver . '" />'; } $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css' . $cssver . '" />'; $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site', 'pdir' => 'js_mini')); $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'b2c', 'pdir' => 'js_mini')); if ($debug_js) { $ret .= '<script src="' . $path . '/js/mootools.js' . $jsver . '"></script> <script src="' . $path . '/js/moomore.js' . $jsver . '"></script> <script src="' . $path . '/js/jstools.js' . $jsver . '"></script> <script src="' . $path . '/js/switchable.js' . $jsver . '"></script> <script src="' . $path . '/js/dragdropplus.js' . $jsver . '"></script> <script src="' . $path . '/js/widgetsinstance.js' . $jsver . '"></script>'; } else { $ret .= '<script src="' . $path . '/js_mini/moo.min.js' . $jsver . '"></script> <script src="' . $path . '/js_mini/ui.min.js' . $jsver . '"></script> <script src="' . $path . '/js_mini/widgetsinstance.min.js' . $jsver . '"></script>'; } if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) { $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info; $ret .= "<script>\n window.addEvent('domready',function(){\n new Element('link',{href:'" . $theme_color_href . "',type:'text/css',rel:'stylesheet'}).injectBottom(document.head);\n });\n </script>"; } /*$ret .= '<script> window.addEvent(\'domready\',function(){(parent.loadedPart[1])++}); parent.document.getElementById(\'loadpart\').style.display="none"; parent.document.getElementById(\'body\').style.display="block"; </script>'; */ foreach (kernel::serviceList('site_theme_view_helper') as $service) { if (method_exists($service, 'function_header')) { $ret .= $service->function_header(); } } return $ret; }
/** * 每小时例行任务 * @param null * @return null */ public function analysis_hour() { $data = $this->fetch_by_interval('hour'); foreach (kernel::serviceList('ectools_analyse_hour') as $service) { if (!$service instanceof ectools_analysis_interface) { continue; } $run_task = false; $service_name = get_class($service); $run_hour = strtotime(date("Y-m-d H", time() - 3600) . ':00:00'); if (!isset($data[$service_name])) { $new_service = array('service' => $service_name, 'interval' => 'hour'); if ($analysis_id = app::get('ectools')->model('analysis')->insert($new_service)) { $run_task = true; } } elseif ($data[$service_name]['modify'] + 3600 <= $run_hour) { $run_hour = $data[$service_name]['modify'] + 3600; $run_task = true; $analysis_id = $data[$service_name]['id']; unset($data[$service_name]); } else { unset($data[$service_name]); } if ($run_task) { $rows = $service->get_logs($run_hour); if ($rows) { foreach ($rows as $row) { $logs = array(); $logs['analysis_id'] = $analysis_id; $logs['type'] = $row['type']; $logs['target'] = $row['target']; $logs['flag'] = $row['flag']; $logs['value'] = $row['value']; $logs['time'] = $run_hour; app::get('ectools')->model('analysis_logs')->insert($row); } } app::get('ectools')->model('analysis')->update(array('modify' => $run_hour), array('id' => $analysis_id)); } } }
function function_header() { $ret = '<base href="' . kernel::base_url(1) . '"/>'; $path = app::get('site')->res_full_url; $debug_css = config::get('app.debug', false); $debug_js = config::get('app.debug', false); $css_mini = $debug_css ? '' : '.min'; $cssver = view::ui()->getVer($debug_css); $jsver = view::ui()->getVer($debug_js); $ret .= '<link rel="stylesheet" href="' . $path . '/stylesheets/widgets_edit' . $css_mini . '.css' . $cssver . '" />'; $ret .= view::ui()->lang_script(array('src' => 'lang.js', 'app' => 'site')); if ($debug_js) { $ret .= '<script src="' . $path . '/scripts/lib/mootools.js' . $jsver . '"></script> <script src="' . $path . '/scripts/lib/moomore.js' . $jsver . '"></script> <script src="' . $path . '/scripts/jstools.js' . $jsver . '"></script> <script src="' . $path . '/scripts/switchable.js' . $jsver . '"></script> <script src="' . $path . '/scripts/dragdropplus.js' . $jsver . '"></script> <script src="' . $path . '/scripts/widgetsinstance.js' . $jsver . '"></script>'; } else { $ret .= '<script src="' . $path . '/scripts/lib/mootools.min.js' . $jsver . '"></script> <script src="' . $path . '/scripts/ui.min.js' . $jsver . '"></script> <script src="' . $path . '/scripts/widgetsinstance.min.js' . $jsver . '"></script>'; } if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) { $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info; $ret .= "<script>\n window.addEvent('domready',function(){\n new Element('link',{href:'" . $theme_color_href . "',rel:'stylesheet'}).injectBottom(document.head);\n });\n </script>"; } /*$ret .= '<script> window.addEvent(\'domready\',function(){(parent.loadedPart[1])++}); parent.document.getElementById(\'loadpart\').style.display="none"; parent.document.getElementById(\'body\').style.display="block"; </script>'; */ foreach (kernel::serviceList('site_theme_view_helper') as $service) { if (method_exists($service, 'function_header')) { $ret .= $service->function_header(); } } return $ret; }
function function_header() { $ret = '<base href="' . kernel::base_url(1) . '"/>'; $path = app::get('site')->res_full_url; $css_mini = defined('DEBUG_CSS') && constant('DEBUG_CSS') ? '' : '_mini'; $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/framework.css" type="text/css" />'; $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css" type="text/css" />'; $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site')); if (defined('DEBUG_JS') && constant('DEBUG_JS')) { $ret .= '<script src="' . $path . '/js/mootools.js?' . time() . '"></script> <script src="' . $path . '/js/moomore.js?' . time() . '"></script> <script src="' . $path . '/js/jstools.js?' . time() . '"></script> <script src="' . $path . '/js/coms/switchable.js?' . time() . '"></script> <script src="' . $path . '/js/dragdropplus.js?' . time() . '"></script> <script src="' . $path . '/js/shopwidgets.js?' . time() . '"></script>'; } else { $ret .= '<script src="' . $path . '/js_mini/moo_min.js"></script> <script src="' . $path . '/js_mini/tools_min.js"></script> <script src="' . $path . '/js_mini/ui_min.js"></script> <script src="' . $path . '/js_mini/shopwidgets_min.js"></script>'; } //$ret.='<script src="'.$path.'/js_mini/patch.js"></script>'; if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) { $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info; $ret .= "<script>\n window.addEvent('domready',function(){\n new Element('link',{href:'" . $theme_color_href . "',type:'text/css',rel:'stylesheet'}).inject(document.head);\n });\n </script>"; } /* $ret .= '<script> window.addEvent(\'domready\',function(){(parent.loadedPart[1])++}); parent.document.getElementById(\'loadpart\').style.display="none"; parent.document.getElementById(\'body\').style.display="block"; </script>'; */ foreach (kernel::serviceList('site_theme_view_helper') as $service) { if (method_exists($service, 'function_header')) { $ret .= $service->function_header(); } } return $ret; }
function __construct(&$app) { parent::__construct($app); if (@constant('WITHOUT_STRIP_HTML')) { $this->enable_strip_whitespace = false; } $this->app = $app; $this->_request = kernel::single('base_component_request'); $this->_response = kernel::single('base_component_response'); foreach (kernel::serviceList('site_controller_construct') as $service) { $service->prepare($this); } //构造时加载 //finish modify controler-action html foreach (kernel::serviceList(sprintf('site_controller_content.%s.%s.%s', $this->_request->get_app_name(), $this->_request->get_ctl_name(), $this->_request->get_act_name())) as $class_name => $service) { if ($service instanceof site_interface_controller_content) { if (method_exists($service, 'modify')) { $this->__finish_modifier[$class_name] = $service; } if (method_exists($service, 'boot')) { $service->boot($this); } } } }
/** * 创建发货单 * @params array - 订单数据 * @params obj - 应用对象 * @params string - 支付单生成的记录 * @return boolean - 创建成功与否 */ public function generate($sdf, &$controller = null, &$msg = '') { /** * 发货之前的判断 */ $is_allow_delivery = true; $obj_before_delivery = kernel::servicelist('b2c.order.delivery.before'); if ($obj_before_delivery) { foreach ($obj_before_delivery as $obj) { if (method_exists($obj, 'generate')) { $is_allow_delivery = $obj->generate($sdf, $msg); } } } if (!$is_allow_delivery) { return false; } $manual = true; // 得到delivery的一些信息 $sdf['delivery_id'] = $this->model->gen_id(); $this->model->op_id = $controller->user->user_id; $this->model->op_name = $controller->user->user_data['name']; // 处理返货单据信息,得到订单的发送量。 $order = $controller->app->model('orders'); $odelivery = $controller->app->model('delivery'); $subsdf = array('order_objects' => array('*', array('order_items' => array('*', array(':products' => '*'))))); $sdf_order = $order->dump($sdf['order_id'], '*', $subsdf); $order_items = array(); // 所有的goods type 处理的服务的初始化. $arr_service_goods_type_obj = array(); $arr_service_goods_type = kernel::servicelist('order_goodstype_operation'); foreach ($arr_service_goods_type as $obj_service_goods_type) { $goods_types = $obj_service_goods_type->get_goods_type(); $arr_service_goods_type_obj[$goods_types] = $obj_service_goods_type; } $goods_item_type = ''; $obj_order_item = $this->app->model('order_items'); $is_process = true; $is_start = true; foreach ($sdf_order['order_objects'] as $k => $v) { if ($v['obj_type'] != 'goods' && $v['obj_type'] != 'gift') { $arr_goods = array(); $arr_service_goods_type_obj[$v['obj_type']]->get_order_object($v, $arr_goods); foreach ($arr_goods as $arr) { $sdf['extend_send'][$arr['item_id']] = floatval($sdf['extend_send'][$arr['item_id']]); if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['extend_send'][$arr['item_id']]) && !$arr['floatstore']) { $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存'); return false; } } $arr_extends_keys = array_keys($sdf['extend_send']); foreach ($v['order_items'] as $arr_order_items) { if ($arr_order_items['quantity'] == $arr_order_items['sendnum']) { $is_process = true && $is_process; $is_start = false; } else { if (in_array($arr_order_items['item_id'], $arr_extends_keys) && floatval($sdf['extend_send'][$arr_order_items['item_id']]) > 0) { $is_process = true && $is_process; $is_start = false; } else { $is_process = false; } } } if ($is_start) { $extends_goods_status = 'delivery_start'; } else { if ($is_process) { $extends_goods_status = 'delivery_finish'; } else { $extends_goods_status = 'delivery_process'; } } foreach (kernel::servicelist('b2c.order_store_extends') as $object) { if ($object->get_goods_type() != $v['obj_type']) { continue; } $obj_extends_store = $object; if ($obj_extends_store) { $obj_extends_store->store_change($v, 'delivery', $extends_goods_status); } } } foreach ($v['order_items'] as &$__arr_order_items) { $arr_goods = array(); if ($__arr_order_items['item_type'] == 'product') { $goods_item_type = 'goods'; } else { $goods_item_type = $__arr_order_items['item_type']; } if (!isset($__arr_order_items['products']) || !$__arr_order_items['products']) { $arr_tmp = $obj_order_item->getList('*', array('item_id' => $__arr_order_items['item_id'])); if ($arr_tmp) { $__arr_order_items['products']['product_id'] = $arr_tmp[0]['product_id']; $__arr_order_items['products']['goods_id'] = $arr_tmp[0]['goods_id']; } } $arr_service_goods_type_obj[$goods_item_type]->get_order_object($__arr_order_items['products'], $arr_goods); $__arr_order_items['floatstore'] = $arr_goods['type']['floatstore']; if ($sdf['send'] && array_key_exists($__arr_order_items['item_id'], $sdf['send'])) { $sdf['send'][$__arr_order_items['item_id']] = floatval($sdf['send'][$__arr_order_items['item_id']]); if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['send'][$__arr_order_items['item_id']]) && !$__arr_order_items['floatstore']) { $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存'); return false; } } else { if ($sdf['gift_send'] && array_key_exists($__arr_order_items['item_id'], $sdf['gift_send'])) { $sdf['gift_send'][$__arr_order_items['item_id']] = floatval($sdf['gift_send'][$__arr_order_items['item_id']]); if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['gift_send'][$__arr_order_items['item_id']]) && !$__arr_order_items['floatstore']) { $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存'); return false; } } } } $order_items = array_merge($order_items, $v['order_items']); } $this->objMath = kernel::single('ectools_math'); if (isset($sdf['send']) || isset($sdf['gift_send']) || isset($sdf['extend_send'])) { if ($sdf['logi_id']) { //这里在php5.4兼容改造中修改过,可能会导致逻辑错误,以前为: //$oCorp = &$controller->app->model('dlycorp');//2014.5.16 $oCorp = $controller->app->model('dlycorp'); $aCorp = $oCorp->dump($sdf['logi_id'], '*'); } $delivery = array('money' => $this->objMath->number_plus(array($sdf['money'], $sdf['cost_protect'])), 'is_protect' => $sdf['is_protect'], 'delivery' => $sdf['delivery'], 'delivery_id' => $sdf['delivery_id'], 'logi_id' => $sdf['logi_id'], 'logi_no' => $sdf['logi_no'], 'logi_name' => $aCorp['name'], 'ship_name' => $sdf['ship_name'], 'ship_area' => $sdf['ship_area'], 'ship_addr' => $sdf['ship_addr'], 'ship_zip' => $sdf['ship_zip'], 'ship_tel' => $sdf['ship_tel'], 'ship_mobile' => $sdf['ship_mobile'], 'ship_email' => $sdf['ship_email'], 'memo' => $sdf['memo']); } else { $delivery = array('money' => $this->objMath->number_plus(array($sdf_order['cost_freight'], $sdf_order['cost_protect'])), 'is_protect' => $sdf_order['shipping']['is_protect'], 'delivery' => $sdf_order['shipping']['method'], 'delivery_id' => $odelivery->gen_id(), 'logi_id' => '', 'logi_no' => $sdf['logi_no'], 'logi_name' => $sdf['logi_name'], 'ship_name' => $sdf_order['consignee']['name'], 'ship_area' => $sdf_order['consignee']['area'], 'ship_addr' => $sdf_order['consignee']['addr'], 'ship_zip' => $sdf_order['consignee']['zip'], 'ship_tel' => $sdf_order['consignee']['telephone'], 'ship_mobile' => $sdf_order['consignee']['mobile'], 'ship_email' => $sdf_order['consignee']['email']); } /** * @function: 订单明细赋值,读取订单详细表sdb_order_items的addon字段 * @params: * @$dinfo['addon']: 订单序列化字段,存放订单物品等资料 * @$delivery['op_name']: 订单操作人员 * @$aUpdate['ship_status']:订单发货状态 1为发货状态 */ $delivery['order_id'] = $sdf['order_id']; $delivery['member_id'] = $sdf_order['member_id']; $delivery['t_begin'] = time(); $delivery['op_name'] = $sdf['opname']; $delivery['type'] = 'delivery'; $delivery['status'] = 'progress'; $delivery_id = $delivery['delivery_id']; //遍历订单明细 $aBill = array(); $nonGoods = 0; //是否完全发货商品标识 if (!isset($sdf['send']) && !isset($sdf['gift_send']) && !isset($sdf['extend_send'])) { //非弹窗确认 foreach ($order_items as $key => $dinfo) { if ($dinfo['item_type'] != 'gift') { $dinfo['send'] = $dinfo['quantity'] - $dinfo['sendnum']; } else { $dinfo['gift_send'] = $dinfo['quantity'] - $dinfo['sendnum']; } //须发送=未发送 $order_items[$key] = $dinfo; } } else { //弹窗确认 $is_all_send_none = true; if ($is_all_send_none && isset($sdf['send']) && $sdf['send']) { foreach ((array) $sdf['send'] as $arr_send) { if ($arr_send > 0) { $is_all_send_none = false; break; } } } if ($is_all_send_none && isset($sdf['gift_send']) && $sdf['gift_send']) { foreach ((array) $sdf['gift_send'] as $arr_send) { if ($arr_send > 0) { $is_all_send_none = false; break; } } } if ($is_all_send_none && isset($sdf['extend_send']) && $sdf['extend_send']) { foreach ((array) $sdf['extend_send'] as $arr_send) { if ($arr_send > 0) { $is_all_send_none = false; break; } } } if ($is_all_send_none) { $msg = app::get('b2c')->_('请输入发货数量!'); return false; } foreach ($order_items as $key => $dinfo) { if ($dinfo['item_type'] == 'product' || $dinfo['item_type'] == 'adjunct') { if (isset($sdf['send'][$dinfo['item_id']]) && floatval($sdf['send'][$dinfo['item_id']]) > 0) { //弹窗并且输入了发货数量>=1 if (floatval($sdf['send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { $msg = app::get('b2c')->_("发货数量超过需要发货量!"); return false; } elseif (floatval($sdf['send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { //足量发送 $dinfo['send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum'])); //须发送=未发送 } else { //部分发送 $dinfo['send'] = $this->objMath->number_minus(array(floatval($sdf['send'][$dinfo['item_id']]), 0)); $nonGoods = 1; } } else { if (!is_null($sdf['send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) { $dinfo['send'] = 0; $nonGoods = 1; } } if (isset($sdf['extend_send'][$dinfo['item_id']]) && floatval($sdf['extend_send'][$dinfo['item_id']]) > 0) { //弹窗并且输入了发货数量>=1 if (floatval($sdf['extend_send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { $msg = app::get('b2c')->_("发货数量超过需要发货量!"); return false; } elseif (floatval($sdf['extend_send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { //足量发送 $dinfo['extend_send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum'])); //须发送=未发送 } else { //部分发送 $dinfo['extend_send'] = $this->objMath->number_minus(array(floatval($sdf['extend_send'][$dinfo['item_id']]), 0)); $nonGoods = 1; } } else { if (!is_null($sdf['extend_send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) { $dinfo['extend_send'] = 0; $nonGoods = 1; } } } else { // 赠品发送过程... if (isset($sdf['gift_send'][$dinfo['item_id']]) && floatval($sdf['gift_send'][$dinfo['item_id']]) > 0) { //弹窗并且输入了发货数量>=1 if (floatval($sdf['gift_send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { $msg = app::get('b2c')->_("发货数量超过需要发货量!"); return false; } elseif (floatval($sdf['gift_send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { //足量发送 $dinfo['gift_send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum'])); //须发送=未发送 } else { //部分发送 $dinfo['gift_send'] = $this->objMath->number_minus(array(floatval($sdf['gift_send'][$dinfo['item_id']]), 0)); $nonGoods = 1; } } else { if (!is_null($sdf['gift_send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) { $dinfo['gift_send'] = 0; $nonGoods = 1; } } // 其他发送过程 if (isset($sdf['extend_send'][$dinfo['item_id']]) && floatval($sdf['extend_send'][$dinfo['item_id']]) > 0) { //弹窗并且输入了发货数量>=1 if (floatval($sdf['extend_send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { $msg = app::get('b2c')->_("发货数量超过需要发货量!"); return false; } elseif (floatval($sdf['extend_send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) { //足量发送 $dinfo['extend_send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum'])); //须发送=未发送 } else { //部分发送 $dinfo['extend_send'] = $this->objMath->number_minus(array(floatval($sdf['extend_send'][$dinfo['item_id']]), 0)); $nonGoods = 1; } } else { if (!is_null($sdf['extend_send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) { $dinfo['extend_send'] = 0; $nonGoods = 1; } } } $order_items[$key] = $dinfo; } } if ($order_items) { //实体商品 $arr_items = array(); if ($manual || !$manual && $this->app->getConf('system.auto_delivery_physical') != 'no') { if (!$manual) { $delivery['status'] = $this->app->getConf('system.auto_delivery_physical') == 'yes' ? 'progress' : 'ready'; } $iLoop = 0; foreach ($order_items as $dinfo) { if ($dinfo['send']) { $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'goods_id' => $dinfo['goods_id'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => isset($dinfo['addon']['adjname']) && $dinfo['addon']['adjname'] ? $dinfo['name'] . $dinfo['addon']['adjname'] : $dinfo['name'], 'number' => $dinfo['send']); $items[] = $dinfo; $arr_items[] = array('number' => $dinfo['send'], 'name' => $dinfo['name']); $this->toInsertItem($item); $iLoop++; } if ($dinfo['gift_send']) { $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'goods_id' => $dinfo['goods_id'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'], 'number' => $dinfo['gift_send']); $items[] = $dinfo; $arr_items[] = array('number' => $dinfo['gift_send'], 'name' => $dinfo['name']); $this->toInsertItem($item); $iLoop++; } if ($dinfo['extend_send']) { $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'goods_id' => $dinfo['goods_id'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'], 'number' => $dinfo['extend_send']); $items[] = $dinfo; $arr_items[] = array('number' => $dinfo['extend_send'], 'name' => $dinfo['name'] . $dinfo['addon']['adjname']); $this->toInsertItem($item); $iLoop++; } } } if ($iLoop > 0) { $delivery_id = $delivery['delivery_id']; $is_save = $odelivery->insert($delivery); if (!$is_save) { $msg = app::get('b2c')->_('发货单生成失败!'); return false; } $arr_delivery['status'] = 'succ'; $delivery['status'] = 'succ'; $delivery['delivery_id'] = $delivery_id; $is_save = $odelivery->update($arr_delivery, array('delivery_id' => $delivery_id)); if (!$is_save) { $msg = app::get('b2c')->_('发货单修改失败!'); return false; } } $order_delivery = $controller->app->model('order_delivery'); $order_delivery_data = array('order_id' => $delivery['order_id'], 'dly_id' => $delivery_id, 'dlytype' => 'delivery', 'items' => $items); $order_delivery->save($order_delivery_data); } //没有完全发货 if ($nonGoods) { $aUpdate['ship_status'] = '2'; } else { $aUpdate['ship_status'] = '1'; } $aUpdate['order_id'] = $sdf['order_id']; $aUpdate['ship_status'] = $aUpdate['ship_status']; $tmp_order = $order->getList('ship_status', array('order_id' => $sdf['order_id'])); if ($aUpdate['ship_status'] == '1' && $tmp_order[0]['ship_status'] != '3' && $tmp_order[0]['ship_status'] != '4') { $order->addSellLog($sdf); } $order->save($aUpdate); $aUpdate['total_amount'] = $sdf_order['total_amount']; $aUpdate['is_tax'] = $sdf_order['is_tax']; $aUpdate['member_id'] = $sdf_order['member_id']; $aUpdate['delivery'] = $delivery; $aUpdate['ship_billno'] = $delivery['logi_no']; $aUpdate['ship_corp'] = $delivery['logi_name']; // 配送方式名称 $obj_dlytype = $this->app->model('dlytype'); $arr_dlytype = $obj_dlytype->dump($delivery['delivery'], 'dt_name'); $aUpdate['delivery']['delivery'] = $arr_dlytype['dt_name']; if ($sdf_order['member_id']) { $pamMembers = app::get('pam')->model('members'); $arr_member = $pamMembers->getList('login_account', array('member_id' => $sdf_order['member_id'], 'login_type' => 'email')); } $aUpdate['email'] = !$sdf_order['member_id'] ? $sdf_order['consignee']['email'] : $arr_member[0]['login_account']; $order->fireEvent('shipping', $aUpdate, $sdf_order['member_id']); $is_change_point = true; // 订单积分结算埋点 $policy_stage = $this->app->getConf("site.consume_point.stage"); if ($sdf_order['pay_status'] == '1' && $aUpdate['ship_status'] == '1' && $policy_stage == '2') { $stage = '1'; } else { $stage = '0'; } // 扣除积分,使用积分 $obj_reducte_point = kernel::service('b2c_member_point_reducte'); if ($stage) { $is_change_point = $obj_reducte_point->change_point($sdf_order['member_id'], 0 - intval($sdf_order['score_u']), $msg, 'order_pay_use', 1, $stage, $sdf['order_id'], $controller->user->user_id, 'delivery'); } if (!$is_change_point) { $msg = app::get('b2c')->_('积分扣除超过会员已有积分'); return false; } // 订单积分结算埋点 $policy_stage = $this->app->getConf("site.get_policy.stage"); if ($sdf_order['pay_status'] == '1' && $aUpdate['ship_status'] == '1' && $policy_stage == '2') { $stage = '1'; } else { $stage = '0'; } // 获得积分 $obj_add_point = kernel::service('b2c_member_point_add'); if ($stage) { $obj_add_point->change_point($sdf_order['member_id'], intval($sdf_order['score_g']), $msg, 'order_pay_get', 2, $stage, $sdf['order_id'], $controller->user->user_id, 'delivery'); } //取得发货的具体信息,add by hujianxin $message_part1 = ""; $message = ""; $ship_status = $aUpdate['ship_status']; if ($ship_status == '1') { //全部发货 $message_part1 = app::get('b2c')->_("发货完成"); } else { if ($ship_status == '2') { //部分发货 $message_part1 = app::get('b2c')->_("已发货"); } } $message = "" . app::get('b2c')->_('订单') . "<!--order_id=" . $sdf['order_id'] . "&delivery_id=" . $delivery['delivery_id'] . "&ship_status=" . $ship_status . "-->" . $message_part1; $log_text = ""; if ($ship_status == '1') { $log_text[] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">全部商品</a>发货完成'), 'data' => array(0 => $delivery['delivery_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES))); if ($aCorp) { $log_text[] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name'])); } if ($delivery['logi_no']) { $log_text[] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $delivery['logi_no'])); $log_addon['logi_no'] = $delivery['logi_no']; $log_addon = serialize($log_addon); } /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,"".$delivery['delivery_id'].""," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ") \" href=\"javascript:void(0)\">".app::get('b2c')->_('全部商品')."</a>".app::get('b2c')->_('发货完成')."," . (($aCorp) ? "".app::get('b2c')->_('物流公司:')."<a href=\"" . $aCorp['request_url'] . "\" title=\"" . $aCorp['name'] . "\" target=\"_blank\" class=\"lnk\">" . $aCorp['name'] . "</a>(".app::get('b2c')->_('可点击进入物流公司网站跟踪配送').")" : "") . (($delivery['logi_no']) ? "".app::get('b2c')->_('物流单号:')."" . $delivery['logi_no'] : "");*/ } if ($ship_status == '2') { $log_text['items'] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">部分商品</a>已发货'), 'data' => array(0 => $delivery['delivery_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES))); if ($aCorp) { $log_text['dlycorp'] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name'])); } if ($delivery['logi_no']) { $log_text['logi_no'] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $delivery['logi_no'])); $log_addon['logi_no'] = $delivery['logi_no']; $log_addon = serialize($log_addon); } /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,"".$delivery['delivery_id'].""," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ") \" href=\"javascript:void(0)\">".app::get('b2c')->_('部分商品')."</a>".app::get('b2c')->_('已发货')."," . (($aCorp) ? "".app::get('b2c')->_('物流公司:')."<a href=\"" . $aCorp['request_url'] . "\" title=\"" . $aCorp['name'] . "\" target=\"_blank\" class=\"lnk\">" . $aCorp['name'] . "</a>(".app::get('b2c')->_('可点击进入物流公司网站跟踪配送').")" : "") . (($delivery['logi_no']) ? "".app::get('b2c')->_('物流单号:')."" . $delivery['logi_no'] : "");*/ } $log_text = serialize($log_text); // 更新发货日志结果 $objorder_log = $this->app->model('order_log'); $sdf_order_log = array('rel_id' => $sdf['order_id'], 'op_id' => $sdf['opid'], 'op_name' => $sdf['opname'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'delivery', 'result' => 'SUCCESS', 'log_text' => $log_text, 'addon' => $log_addon); $log_id = $objorder_log->save($sdf_order_log); // 发货单结束后的处理任务 $obj_after_delivery_service = kernel::serviceList('b2c.order.delivery.after'); if ($obj_after_delivery_service) { $delivery['delivery_items'] = $items; $delivery['orders'] = $order_delivery_data; foreach ($obj_after_delivery_service as $obj) { if (method_exists($obj, 'generate')) { $obj->generate($delivery); } } } return true; }
public static function get_global_varys() { $app_varys = array(); $serviceList = kernel::serviceList('cachemgr_global_vary'); foreach ($serviceList as $service) { $class_name = get_class($service); $p = strpos($class_name, '_'); if (method_exists($service, 'get_varys')) { $varys = $service->get_varys(); } if (is_array($varys) && $p) { $app_id = substr($class_name, 0, $p); if (isset($app_varys[$app_id])) { $app_varys[$app_id] = array_merge($app_varys[$app_id], $varys); } else { $app_varys[$app_id] = $varys; } if (is_array($app_varys[$app_id])) { ksort($app_varys[$app_id]); } } } ksort($app_varys); return $app_varys; }
/** * 创建退货单 * @params array - 订单数据 * @params obj - 应用对象 * @params string - 支付单生成的记录 * @return boolean - 创建成功与否 */ public function generate($sdf, &$controller = null, &$msg = '') { $order = $controller->app->model('orders'); $subsdf = array('order_objects' => array('*', array('order_items' => array('*', array(':products' => '*'))))); $sdf_order = $order->dump($sdf['order_id'], '*', $subsdf); $order_items = array(); // 所有的goods type 处理的服务的初始化. $arr_service_goods_type_obj = array(); $arr_service_goods_type = kernel::servicelist('order_goodstype_operation'); foreach ($arr_service_goods_type as $obj_service_goods_type) { $goods_types = $obj_service_goods_type->get_goods_type(); $arr_service_goods_type_obj[$goods_types] = $obj_service_goods_type; } $goods_item_type = ''; $obj_order_item = $this->app->model('order_items'); $nonGoods_extends = 3; $is_process = true; $is_start = true; foreach ($sdf_order['order_objects'] as $k => $v) { if ($v['obj_type'] != 'goods' && $v['obj_type'] != 'gift') { $arr_goods = array(); $arr_service_goods_type_obj[$v['obj_type']]->get_order_object($v, $arr_goods); $sdf['send'][$arr['item_id']] = floatval($sdf['send'][$arr['item_id']]); foreach ($arr_goods as $arr) { if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['send'][$arr['item_id']]) && !$arr['floatstore']) { $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存'); return false; } } $arr_extends_keys = array_keys($sdf['send']); foreach ($v['order_items'] as $arr_order_items) { if ($arr_order_items['quantity'] > $arr_order_items['sendnum']) { $is_process = true && $is_process; $is_start = false; } else { if (in_array($arr_order_items['item_id'], $arr_extends_keys) && floatval($sdf['send'][$arr_order_items['item_id']]) > 0) { $is_process = true && $is_process; $is_start = false; } else { $is_process = false; } } } if ($is_start) { $extends_goods_status = 'delivery_start'; } else { if ($is_process) { $extends_goods_status = 'delivery_finish'; } else { $extends_goods_status = 'delivery_process'; } } foreach (kernel::servicelist('b2c.order_store_extends') as $object) { if ($object->get_goods_type() != $v['obj_type']) { continue; } $obj_extends_store = $object; if ($obj_extends_store) { $obj_extends_store->store_change($v, 'reship', $extends_goods_status); } } } foreach ($v['order_items'] as &$__arr_order_items) { $arr_goods = array(); if ($__arr_order_items['item_type'] == 'product') { $goods_item_type = 'goods'; } else { $goods_item_type = $__arr_order_items['item_type']; } if (!isset($__arr_order_items['products']) || !$__arr_order_items['products']) { $arr_tmp = $obj_order_item->getList('*', array('item_id' => $__arr_order_items['item_id'])); if ($arr_tmp) { $__arr_order_items['products']['product_id'] = $arr_tmp[0]['product_id']; $__arr_order_items['products']['goods_id'] = $arr_tmp[0]['goods_id']; } } $arr_service_goods_type_obj[$goods_item_type]->get_order_object($__arr_order_items['products'], $arr_goods); $__arr_order_items['floatstore'] = $arr_goods['type']['floatstore']; $sdf['send'][$__arr_order_items['item_id']] = floatval($sdf['send'][$__arr_order_items['item_id']]); if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['send'][$__arr_order_items['item_id']]) && !$__arr_order_items['floatstore']) { $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存'); return false; } } $order_items = array_merge($order_items, $v['order_items']); } $oreship = $controller->app->model('reship'); if (isset($sdf['send'])) { if ($sdf['logi_id']) { $oCorp =& $controller->app->model('dlycorp'); $aCorp = $oCorp->dump($sdf['logi_id'], '*'); } $reship = array('money' => floatval($sdf['money']) + floatval($sdf['cost_protect']), 'is_protect' => $sdf['is_protect'], 'delivery' => $sdf['delivery'], 'reship_id' => $sdf['reship_id'], 'logi_id' => $sdf['logi_id'], 'logi_no' => $sdf['logi_no'], 'logi_name' => $aCorp['name'], 'ship_name' => $sdf['ship_name'], 'ship_area' => $sdf['ship_area'], 'ship_addr' => $sdf['ship_addr'], 'ship_zip' => $sdf['ship_zip'], 'ship_tel' => $sdf['ship_tel'], 'ship_mobile' => $sdf['ship_mobile'], 'ship_email' => $sdf['ship_email'], 'memo' => $sdf['memo']); } else { $reship = array('money' => $sdf_order['cost_freight'] + $sdf_order['cost_protect'], 'is_protect' => $sdf['is_protect'], 'delivery' => $sdf['delivery'], 'reship_id' => $oreship->gen_id(), 'logi_id' => '', 'logi_no' => $sdf['logi_no'], 'logi_name' => $sdf['logi_name'], 'ship_name' => $sdf['ship_name'], 'ship_area' => $sdf['ship_area'], 'ship_addr' => $sdf['ship_addr'], 'ship_zip' => $sdf['ship_zip'], 'ship_tel' => $sdf['ship_tel'], 'ship_mobile' => $sdf['ship_mobile'], 'ship_email' => $sdf['ship_email'], 'memo' => $sdf['memo']); } $reship['order_id'] = $sdf['order_id']; $reship['member_id'] = $sdf_order['member_id']; $reship['t_begin'] = time(); $reship['op_name'] = $sdf['opname']; $v['type'] = 'reship'; $reship['status'] = 'progress'; $reship_id = $reship['reship_id']; //遍历订单明细 $aBill = array(); $nonGoods = 3; if (!isset($sdf['send'])) { //非弹窗确认 foreach ($order_items as $key => $dinfo) { $dinfo['send'] = $dinfo['sendnum']; //须退货=已发送 $order_items[$key] = $dinfo; } } else { //弹窗确认 $is_all_send_none = true; if ($is_all_send_none && isset($sdf['send']) && $sdf['send']) { foreach ((array) $sdf['send'] as $arr_send) { if ($arr_send > 0) { $is_all_send_none = false; break; } } } if ($is_all_send_none) { $msg = app::get('b2c')->_('请输入退货数量!'); return false; } foreach ($order_items as $key => $dinfo) { if (isset($sdf['send'][$dinfo['item_id']]) && floatval($sdf['send'][$dinfo['item_id']]) > 0) { //弹窗并且输入了发货数量>=1 if (floatval($sdf['send'][$dinfo['item_id']]) > $dinfo['sendnum']) { $msg = app::get('b2c')->_("超过实际需要的退货量!"); return false; } elseif (floatval($sdf['send'][$dinfo['item_id']]) == $dinfo['sendnum']) { //足量退货 $dinfo['send'] = $this->objMath->number_minus(array($dinfo['sendnum'], 0)); ////须退货=已发送 } else { //部分退货 $dinfo['send'] = $this->objMath->number_minus(array($sdf['send'][$dinfo['item_id']], 0)); $nonGoods = 4; } } else { if (0 < $dinfo['sendnum'] && $dinfo['sendnum'] <= $dinfo['quantity'] && $nonGoods != 4) { $nonGoods = 4; } } $order_items[$key] = $dinfo; } } if ($order_items) { //实体商品 $iLoop = 0; $arr_items = array(); foreach ($order_items as $dinfo) { $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'reship_id' => $reship['reship_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'] . $dinfo['addon']['adjname'], 'number' => $dinfo['send']); if ($dinfo['send']) { $items[] = $dinfo; $arr_items[] = array('number' => $dinfo['send'], 'name' => $dinfo['name'] . $dinfo['addon']['adjname']); $this->toInsertItem($item); $iLoop++; } } if ($iLoop > 0) { $is_save = $oreship->insert($reship); if (!$is_save) { $msg = app::get('b2c')->_('退货单生成失败!'); return false; } $up_reship['status'] = 'succ'; $reship['status'] = 'succ'; $reship['reship_id'] = $reship_id; $is_save = $oreship->update($up_reship, array('reship_id' => $reship_id)); if (!$is_save) { $msg = app::get('b2c')->_('退货单修改失败!'); return false; } } } //没有完全退货 if ($nonGoods != 4 && $nonGoods_extends != 4) { $aUpdate['ship_status'] = 4; } else { $aUpdate['ship_status'] = 3; } $aUpdate['order_id'] = $sdf['order_id']; $aUpdate['ship_status'] = $aUpdate['ship_status']; $order->save($aUpdate); $order_reship = $controller->app->model('order_delivery'); $order_reship_data = array('order_id' => $reship['order_id'], 'dly_id' => $reship_id, 'dlytype' => 'reship', 'items' => $items); $order_reship->save($order_reship_data); $aUpdate['total_amount'] = $sdf_order['total_amount']; $aUpdate['is_tax'] = $sdf_order['is_tax']; $aUpdate['member_id'] = $sdf_order['member_id']; $aUpdate['delivery'] = $reship; $aUpdate['ship_billno'] = $reship['logi_no']; // 取得物流公司的名称 $obj_dlycorp = $this->app->model('dlycorp'); $arr_dlycorp = $obj_dlycorp->dump($reship['logi_id'], 'name'); $aUpdate['ship_corp'] = $arr_dlycorp['name']; if ($sdf_order['member_id']) { $member = $this->app->model('members'); $arr_member = $member->dump($sdf_order['member_id'], '*', array(':account@pam' => '*')); } $aUpdate['email'] = !$sdf_order['member_id'] ? $sdf_order['consignee']['email'] : $arr_member['contact']['email']; $order->fireEvent('returned', $aUpdate, $sdf_order['member_id']); //取得发货的具体信息,add by hujianxin $message_part1 = ""; $message = ""; $ship_status = $aUpdate['ship_status']; if ($ship_status == '4') { //全部发货 $message_part1 = app::get('b2c')->_("完全退货"); } else { if ($ship_status == '3') { //部分发货 $message_part1 = app::get('b2c')->_("部分退货"); } } $message = "" . app::get('b2c')->_('订单') . "<!--order_id=" . $sdf['order_id'] . "&reship_id=" . $reship['reship_id'] . "&ship_status=" . $ship_status . "-->" . $message_part1; // 更新退款日志结果 $log_text = ""; if ($ship_status == '4') { $log_text[] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">全部商品</a>退货完成'), 'data' => array(0 => $reship['reship_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES))); if ($aCorp) { $log_text[] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name'])); } if ($reship['logi_no']) { $log_text[] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $reship['logi_no'])); $log_addon['logi_no'] = $reship['logi_no']; $log_addon = serialize($log_addon); } /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,"".$reship['reship_id'].""," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ") \" href=\"javascript:void(0)\">".app::get('b2c')->_('全部商品')."</a>".app::get('b2c')->_('退货完成')."";*/ } if ($ship_status == '3') { $log_text[] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">部分商品</a>已退货'), 'data' => array(0 => $reship['reship_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES))); if ($aCorp) { $log_text[] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name'])); } if ($reship['logi_no']) { $log_text[] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $reship['logi_no'])); $log_addon['logi_no'] = $reship['logi_no']; $log_addon = serialize($log_addon); } /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,"".$reship['reship_id'].""," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ") \" href=\"javascript:void(0)\">".app::get('b2c')->_('部分商品')."</a>".app::get('b2c')->_('已退货')."";*/ } $log_text = serialize($log_text); $objorder_log = $this->app->model('order_log'); $sdf_order_log = array('rel_id' => $sdf['order_id'], 'op_id' => $sdf['op_id'], 'op_name' => $sdf['opname'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'reship', 'result' => 'SUCCESS', 'log_text' => $log_text, 'addon' => $log_addon); $log_id = $objorder_log->save($sdf_order_log); // 退货单结束后的处理任务 $obj_after_reship_service = kernel::serviceList('b2c.order.reship.after'); $is_after_reship_task = true; if ($obj_after_reship_service) { $reship['reship_items'] = $items; $reship['orders'] = $order_reship_data; foreach ($obj_after_reship_service as $obj) { $is_after_reship_task = $obj->generate($reship, $msg); } } return $is_after_reship_task; }
function function_wapheader() { $ret = '<base href="' . kernel::base_url(1) . '"/>'; $path = app::get('site')->res_full_url; $pathtopm = app::get('topm')->res_full_url; $debug_css = config::get('app.debug', false); $debug_js = config::get('app.debug', false); $css_mini = $debug_css ? '' : '.min'; $js_mini = $debug_js ? '' : '.min'; $cssver = view::ui()->getVer($debug_css); $jsver = view::ui()->getVer($debug_js); if ($debug_css) { $ret .= '<link rel="stylesheet" href="' . $pathtopm . '/stylesheets/base.css' . $cssver . '" />'; } else { $ret .= '<link rel="stylesheet" href="' . $pathtopm . '/stylesheets/base' . $css_mini . '.css' . $cssver . '" />'; } $ret .= '<link rel="stylesheet" href="' . $path . '/stylesheets/widgets_edit' . $css_mini . '.css' . $cssver . '" />'; $ret .= view::ui()->lang_script(array('src' => 'lang.js', 'app' => 'site')); $ret .= view::ui()->lang_script(array('src' => 'lang.js', 'app' => 'b2c', 'pdir' => 'js_mini')); if ($debug_js) { $ret .= '<script src="' . $path . '/scripts/lib/jquery.js' . $jsver . '"></script> <script src="' . $path . '/scripts/lib/jquery.cookie.js' . $jsver . '"></script> <script src="' . $pathtopm . '/scripts/gmu.js' . $jsver . '"></script> <script src="' . $pathtopm . '/scripts/common.js' . $jsver . '"></script> <script src="' . $pathtopm . '/scripts/zepto.js' . $jsver . '"></script> <script src="' . $path . '/scripts/tools.js' . $jsver . '"></script> <script src="' . $path . '/scripts/shopwidgets.js' . $jsver . '"></script>'; } else { $ret .= '<script src="' . $path . '/scripts/jquery' . $js_mini . '.js' . $jsver . '"></script> <script src="' . $path . '/scripts/ui' . $js_mini . '.js' . $jsver . '"></script> <script src="' . $path . '/scripts/shopwidgets' . $js_mini . '.js' . $jsver . '"></script>'; } if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) { $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info; $ret .= "<script>\n window.addEvent('domready',function(){\n new Element('link',{rel:'stylesheet',href:'" . $theme_color_href . "'}).inject(document.head);\n });\n </script>"; } /* $ret .= '<script> window.addEvent(\'domready\',function(){(parent.loadedPart[1])++}); parent.document.getElementById(\'loadpart\').style.display="none"; parent.document.getElementById(\'body\').style.display="block"; </script>'; */ foreach (kernel::serviceList('site_theme_view_helper') as $service) { if (method_exists($service, 'function_wapheader')) { $ret .= $service->function_wapheader(); } } return $ret; }
public function save() { $this->begin(); $dtime = $this->_request->get_post('_DTIME_'); $post = $this->_request->get_post('article'); $article_id = $this->_request->get_post('article_id'); if (!empty($post['indexs']['pubtime'])) { $post['indexs']['pubtime'] = $post['indexs']['pubtime'] . ' ' . $dtime['H']['article[indexs']['pubtime'] . ':' . $dtime['M']['article[indexs']['pubtime']; $post['indexs']['pubtime'] = strtotime($post['indexs']['pubtime']); } if ($post['ext']['enable_goods_info'] > 0) { $post['bodys']['goods_info'] = $post['ext']['goods']; } else { $post['bodys']['goods_info'] = ''; } if ($post['ext']['enable_hot_link'] > 0) { $post['bodys']['hot_link'] = $post['ext']['hot']; } else { $post['bodys']['hot_link'] = ''; } if ($article_id > 0) { $res = app::get('content')->model('article_indexs')->update($post['indexs'], array('article_id' => $article_id)); if ($res) { $res = app::get('content')->model('article_bodys')->update($post['bodys'], array('article_id' => $article_id)); if ($res) { $services = kernel::serviceList('content_article_index'); foreach ($services as $service) { if ($service instanceof content_interface_index) { $service->update($article_id, $post); } } $this->end(true, app::get('content')->_('保存成功')); } else { $this->end(false, app::get('content')->_('保存失败')); } } else { $this->end(false, app::get('content')->_('保存失败')); } } else { $res = app::get('content')->model('article_indexs')->insert($post['indexs']); if ($res) { $post['bodys']['article_id'] = $res; $res = app::get('content')->model('article_bodys')->insert($post['bodys']); if ($res) { $services = kernel::serviceList('content_article_index'); foreach ($services as $service) { if ($service instanceof content_interface_index) { $service->insert($post); } } $this->end(true, app::get('content')->_('添加成功'), null, array('id' => $post['bodys']['article_id'])); } else { $this->end(false, app::get('content')->_('添加失败')); } } else { $this->end(false, app::get('content')->_('添加失败')); } } }
public function pre_display(&$content) { parent::pre_display($content); if ($this->_ignore_pre_display === false) { foreach (kernel::serviceList('desktop_render_pre_display') as $service) { if (method_exists($service, 'pre_display')) { $service->pre_display($content); } } } }
/** * 重写getList方法 */ public function getList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null) { $arr_list = parent::getList($cols, $filter, $offset, $limit, $orderType); $obj_extends_order_service = kernel::serviceList('b2c_order_extends_actions'); if ($obj_extends_order_service) { foreach ($obj_extends_order_service as $obj) { $obj->extend_list($arr_list); } } $info_object = kernel::service('sensitive_information'); if (is_object($info_object)) { $info_object->opinfo($arr_list, 'b2c_mdl_orders', __FUNCTION__); } return $arr_list; }
/** * 重写getList方法 */ public function getList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null) { if (!$cols) { $cols = $this->defaultCols; } if (!empty($this->appendCols)) { $cols .= ',' . $this->appendCols; } if ($this->use_meta) { $meta_info = $this->prepare_select($cols); } $orderType = $orderType ? $orderType : $this->defaultOrder; $sql = 'SELECT ' . $cols . ' FROM `' . $this->table_name(true) . '` WHERE ' . $this->_filter_sql($filter); if ($orderType) { $sql .= ' ORDER BY ' . (is_array($orderType) ? implode($orderType, ' ') : $orderType); } $data = $this->db->selectLimit($sql, $limit, $offset); $this->tidy_data($data, $cols); if ($this->use_meta && count($meta_info['metacols']) && $data) { foreach ($meta_info['metacols'] as $col) { $obj_meta = new dbeav_meta($this->table_name(true), $col, $meta_info['has_pk']); $obj_meta->select($data); } } $arr_list = $data; $obj_extends_order_service = kernel::serviceList('b2c_order_extends_actions'); if ($obj_extends_order_service) { foreach ($obj_extends_order_service as $obj) { $obj->extend_list($arr_list); } } $info_object = kernel::service('sensitive_information'); if (is_object($info_object)) { $info_object->opinfo($arr_list, 'b2c_mdl_orders', __FUNCTION__); } return $arr_list; }
public function save() { $this->begin('index.php?app=content&ctl=admin_node&act=index'); $post = $this->_request->get_post('node'); $node_id = $this->_request->get_post('node_id'); if (empty($post)) { $this->end(false, '错误请求'); } if ($post['parent_id']) { //存在父节点时,查看父节点是否启用 $aInfo = kernel::single("content_article_node")->get_node($post['parent_id']); if ($aInfo['ifpub'] == 'false' && $post['ifpub']) { if ($post['ifpub'] != $aInfo['ifpub']) { $post['ifpub'] = $aInfo['ifpub']; $msg = '父节点未发布!'; } } } $post['uptime'] = time(); $post['homepage'] = $post['homepage'] ? $post['homepage'] : 'false'; if ($node_id > 0) { $res = app::get('content')->model('article_nodes')->update($post, array('node_id' => $node_id)); if ($res) { $services = kernel::serviceList('content_article_node'); foreach ($services as $service) { if ($service instanceof content_interface_node) { $service->update($node_id, $post); } } $this->end(true, '保存成功!' . $msg); } else { $this->end(false, '保存失败!' . $msg); } } else { $res = app::get('content')->model('article_nodes')->insert($post); if ($res) { $services = kernel::serviceList('content_article_node'); foreach ($services as $service) { if ($service instanceof content_interface_node) { $service->insert($post); } } $this->end(true, '添加成功!' . $msg); } else { $this->end(false, '添加失败!' . $msg); } } }