示例#1
0
 /**
  * 初始化商品促销过滤.
  *
  * @param array $aGoodsId // array(xxx,xxx,xxx);
  */
 private function _init_config($goods_id_arr, $filter = array())
 {
     if (empty($goods_id_arr)) {
         return false;
     }
     $filter['goods_id'] = $goods_id_arr;
     $current_member = vmc::singleton('b2c_cart_stage')->get_member();
     if (!$filter['member_lv']) {
         $filter['member_lv'] = $current_member['member_lv'] ? $current_member['member_lv'] : -1;
     }
     //开启的促销
     $where[] = "pref.status = 'true'";
     //一定商品范围的促销
     $where[] = 'pref.goods_id IN (' . implode(',', $filter['goods_id']) . ')';
     //一定会员级别的促销
     $where[] = ' (find_in_set(\'' . $filter['member_lv'] . '\', pref.member_lv_ids))';
     //促销时间限制
     if (!empty($filter['current_time'])) {
         $where[] = sprintf('(%s >= pref.from_time or pref.from_time=0)', $filter['current_time']);
         $where[] = sprintf('(%s <= pref.to_time or pref.to_time=0)', $filter['current_time']);
     }
     $SQL = 'SELECT pref.*,srg.name,srg.s_template
                 FROM vmc_b2c_sales_rule_goods AS srg
                 JOIN vmc_b2c_goods_promotion_ref AS pref  ON pref.rule_id = srg.rule_id
                 WHERE ' . implode(' AND ', $where) . '
                 ORDER BY pref.sort_order ASC,pref.ref_id DESC';
     $res = vmc::database()->select($SQL);
     if (empty($res)) {
         return false;
     }
     return utils::array_change_key($res, 'goods_id', true);
 }
示例#2
0
 public function index($status = 'all', $page = 1)
 {
     $mdl_order = app::get('b2c')->model('orders');
     $mdl_order_items = app::get('b2c')->model('order_items');
     $limit = 5;
     $status_filter = $mdl_order->filter();
     $this->pagedata['status'] = $status;
     $filter = $status_filter[$status];
     $filter['store_id'] = $this->store['store_id'];
     $order_list = $mdl_order->getList('*', $filter, ($page - 1) * $limit, $limit);
     foreach ($order_list as $key => $value) {
         //所属店铺信息
         $store_info = vmc::singleton('store_store_object')->store_info($value['store_id'], 'store_id, store_name');
         $order_list[$key]['store_name'] = $store_info['store_name'];
     }
     $oids = array_keys(utils::array_change_key($order_list, 'order_id'));
     $order_items = $mdl_order_items->getList('*', array('order_id' => $oids));
     $order_items_group = utils::array_change_key($order_items, 'order_id', true);
     $order_count = $mdl_order->count($filter);
     $this->pagedata['type'] = 'orders';
     $this->pagedata['current_status'] = $status;
     $this->pagedata['status_map'] = $status_filter;
     $this->pagedata['order_list'] = $order_list;
     $this->pagedata['order_count'] = $order_count;
     $this->pagedata['order_items_group'] = $order_items_group;
     $this->pagedata['pager'] = array('total' => ceil($order_count / $limit), 'current' => $page, 'link' => array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'orders', 'args' => array($status, $token = time())), 'token' => $token);
     $this->output();
 }
示例#3
0
文件: goods.php 项目: noikiy/msk.com
 /**
  *批量确认收藏及数量
  */
 public function check_favs($member_id = null, $goods_id = null)
 {
     if (!$goods_id || !is_array($goods_id)) {
         return false;
     }
     $filter['goods_id'] = $goods_id;
     $filter['type'] = 'fav';
     $fav_list = $this->getList('member_id,goods_id', $filter);
     $fav_list_group = utils::array_change_key($fav_list, 'goods_id', true);
     foreach ($fav_list_group as $gid => $fav_group) {
         $tmp_fav_group = utils::array_change_key($fav_group, 'member_id');
         $tmp_fav_group = array_keys($tmp_fav_group);
         $fav_count = count($tmp_fav_group);
         if (in_array($member_id, $tmp_fav_group)) {
             $is_fav = true;
         } else {
             $is_fav = false;
         }
         unset($fav_list_group[$gid]);
         $fav_list_group[$gid]['goods_id'] = $gid;
         $fav_list_group[$gid]['is_fav'] = $is_fav;
         $fav_list_group[$gid]['fav_count'] = $fav_count;
     }
     return array_values($fav_list_group);
 }
示例#4
0
文件: tagcols.php 项目: 453111208/bbc
 public function column_tag(&$colList, $list)
 {
     //todo  如果list为空则 retunn
     if (!$list) {
         return;
     }
     $idColumnKey = $list[0]['idColumn'];
     $appId = $list[0]['app_id'];
     $tagType = $list[0]['tag_type'];
     $list = utils::array_change_key($list, $idColumnKey);
     // 获取所有当前finder主键列表
     $relatedIds = array_keys(utils::array_change_key($list, $idColumnKey));
     $filter = array('rel_id' => $relatedIds, 'tag_type' => $tagType, 'app_id' => $appId);
     // 获取tag列表
     $tagRows = app::get('desktop')->model('tag_rel')->getList('tag_id, rel_id', $filter);
     /*-----start------>*/
     $tagIds = array_keys(utils::array_change_key($tagRows, 'tag_id'));
     if ($tagIds) {
         $tagList = app::get('desktop')->model('tag')->getList('*', array('tag_id' => $tagIds));
         $tagList = utils::array_change_key($tagList, 'tag_id');
     }
     /*<----end-------->*/
     foreach ($tagRows as $row) {
         $relatedRows[$row['rel_id']][] = $tagList[$row['tag_id']];
     }
     $i = 0;
     foreach ($relatedIds as $id) {
         $colList[$i] = $this->getColumnTagHtml($relatedRows[$id]);
         $i++;
     }
 }
示例#5
0
 public function index()
 {
     $mdl_brand = $this->app->model('brand');
     $brand_list = $mdl_brand->getList();
     $this->pagedata['brand_list'] = utils::array_change_key($brand_list, 'brand_initial', true);
     $this->set_tmpl('brand');
     $this->page('mobile/brand/index.html');
 }
示例#6
0
 public function avg_mark($gids)
 {
     $sql = 'SELECT avg(mark_star) as num,goods_id FROM ' . $this->table_name(1) . ' WHERE  goods_id in (' . implode(',', (array) $gids) . ') group by goods_id';
     $res = $this->db->select($sql);
     if (!$res || empty($res) || count($res) < 1) {
         return $res;
     }
     return utils::array_change_key($res, 'goods_id');
 }
示例#7
0
 /**
  * 订单发货操作完成时.
  *
  * @delivery_sdf array - 发货单据SDF
  * @msg  异常消息
  *
  * @return bool - 执行成功与否
  */
 public function exec($delivery_sdf, &$msg = '')
 {
     $order_id = $delivery_sdf['order_id'];
     if (!$order_id) {
         $msg = '未知订单id';
         return false;
     }
     $all_send = true;
     $order_items = app::get('b2c')->model('order_items')->getList('*', array('order_id' => $order_id));
     $order_items = utils::array_change_key($order_items, 'item_id');
     foreach ($delivery_sdf['delivery_items'] as $item) {
         $order_items[$item['order_item_id']]['sendnum'] += $item['sendnum'];
         if ($order_items[$item['order_item_id']]['sendnum'] > $order_items[$item['order_item_id']]['nums']) {
             $msg = '发货异常,超出应发数量';
             return false;
         }
         if ($order_items[$item['order_item_id']]['sendnum'] < $order_items[$item['order_item_id']]['nums']) {
             $all_send = false;
             //部分发货
         }
     }
     $order_sdf = array('order_id' => $order_id, 'items' => $order_items, 'ship_status' => $all_send ? '1' : '2');
     if (!app::get('b2c')->model('orders')->save($order_sdf)) {
         $msg = '订单状态修改失败!';
         return false;
     }
     //库存冻结释放,真实扣除库存
     $stock_data = array();
     foreach ($delivery_sdf['delivery_items'] as $key => $value) {
         $stock_data[] = array('sku' => $value['bn'], 'quantity' => $value['sendnum']);
     }
     if (!vmc::singleton('b2c_goods_stock')->unfreeze($stock_data, $msg)) {
         logger::error('库存冻结释放异常!ORDER_ID:' . $order_sdf['order_id'] . ',' . $msg);
     }
     if (!vmc::singleton('b2c_goods_stock')->delivery($stock_data, $msg)) {
         logger::error('库存扣减异常!ORDER_ID:' . $order_sdf['order_id'] . ',' . $msg);
     }
     //订单日志记录
     vmc::singleton('b2c_order_log')->set_operator(array('ident' => $delivery_sdf['op_id'], 'model' => 'shopadmin', 'name' => '操作员'))->set_order_id($order_sdf['order_id'])->success('shipment', '订单' . (!$all_send ? '部分' : '') . '发货成功!', $delivery_sdf);
     /*
      * 消息通知
      * @args1 事件名称
      * @args2 消息模板数据填充
      * @args3 消息目标
      */
     $pam_data = vmc::singleton('b2c_user_object')->get_pam_data('*', $delivery_sdf['member_id']);
     logger::debug('pam_data' . var_export($pam_data, 1));
     $dlycorp = app::get('b2c')->model('dlycorp')->dump($delivery_sdf['dlycorp_id']);
     $consignee_area = $delivery_sdf['consignee']['area'];
     $consignee_area = explode(':', $consignee_area);
     $consignee_area = $consignee_area[1];
     //消息模板参数
     $env_list = array('order_id' => $delivery_sdf['order_id'], 'consignee_name' => $delivery_sdf['consignee']['name'], 'consignee_area' => $consignee_area, 'consignee_addr' => $delivery_sdf['consignee']['addr'], 'consignee_tel' => $delivery_sdf['consignee']['tel'], 'consignee_mobile' => $delivery_sdf['consignee']['mobile'], 'dlycorp_name' => $dlycorp['name'], 'dlycorp_code' => $dlycorp['corp_code'], 'dlycorp_website' => $dlycorp['website'], 'logistics_no' => $delivery_sdf['logistics_no'], 'timestr' => date('Y-m-d H:i:s', $delivery_sdf['last_modify']));
     vmc::singleton('b2c_messenger_stage')->trigger('orders-shipping', $env_list, array('mobile' => $pam_data['mobile'] ? $pam_data['mobile']['login_account'] : $order_sdf['consignee']['mobile'], 'email' => $pam_data['email'] ? $pam_data['email']['login_account'] : $order_sdf['consignee']['email'], 'member_id' => $delivery_sdf['member_id']));
     return true;
 }
示例#8
0
 private function _get_member_list($filter = false, $limit = array(0, -1), $orderby = null)
 {
     $mdl_members = app::get('b2c')->model('members');
     $mdl_member_account = app::get('pam')->model('members');
     $members = $mdl_members->getList('member_id,regtime,member_lv_id,name,order_num,mobile,tel,email', $filter, $limit[0], $limit[1], $orderby);
     $member_ids = array_keys(utils::array_change_key($members, 'member_id'));
     $accounts = $mdl_member_account->getList('login_account,member_id', array('member_id' => $member_ids));
     $accounts = utils::array_change_key($accounts, 'member_id');
     foreach ($members as $key => $value) {
         $members[$key]['login_account'] = $accounts[$value['member_id']]['login_account'];
     }
     return $members;
 }
示例#9
0
 public function detail_products($gid)
 {
     $mdl_products = app::get('b2c')->model('products');
     $products = $mdl_products->getList('*', array('goods_id' => $gid));
     $mdl_stock = app::get('b2c')->model('stock');
     $sku_bn = array_keys(utils::array_change_key($products, 'bn'));
     $stock_list = $mdl_stock->getList('*', array('sku_bn' => $sku_bn));
     $stock_list = utils::array_change_key($stock_list, 'sku_bn');
     $render = $this->app->render();
     $render->pagedata['data_detail'] = app::get('b2c')->model('goods')->dump($gid, '*', 'default');
     $render->pagedata['products'] = $products;
     $render->pagedata['stock_list'] = $stock_list;
     $render->pagedata['gpromotion_openapi'] = vmc::openapi_url('openapi.goods', 'promotion', array('goods_id' => $gid));
     return $render->fetch('admin/goods/detail/detail.html');
 }
示例#10
0
文件: stock.php 项目: noikiy/snk
 public function confirm($args = array())
 {
     $args = array_merge((array) $args, $this->req_params);
     $sku = $args['sku'];
     if (!$sku) {
         $this->_failure('缺少参数');
     }
     $_echo = array();
     $sku_bn = explode(',', $sku);
     if (count($sku_bn) > 0) {
         $result = app::get('b2c')->model('stock')->getList('sku_bn,warehouse,quantity-freez_quantity as num', array('sku_bn' => $sku_bn));
         $_echo = utils::array_change_key($result, 'sku_bn');
     }
     $this->_success($_echo);
 }
示例#11
0
 /**
  * 初始化商品过滤规
  *
  * @param array $aGoodsId // array(xxx,xxx,xxx);
  */
 private function _init_rule($aGoodsId, $filter = array())
 {
     if (empty($aGoodsId)) {
         return false;
     }
     $filter['goods_id'] = $aGoodsId;
     $arrMemberInfo = kernel::single("b2c_frontpage")->get_current_member();
     $filter['member_lv'] = $arrMemberInfo['member_lv'] ? $arrMemberInfo['member_lv'] : -1;
     $filter['member_lv'] = -1;
     $sSql = "SELECT * FROM sdb_b2c_goods_promotion_ref\n                 WHERE " . $this->_filter_sql($filter) . "\n                 ORDER BY sort_order DESC";
     $aResult = $this->app->model('cart')->db->select($sSql);
     if (empty($aResult)) {
         return false;
     }
     //是否允许同一商品有多个预过滤规则
     return utils::array_change_key($aResult, 'goods_id', 1);
 }
示例#12
0
 /**
  * 组织SEO数据,更换动态占位符 ENV_key.
  */
 public function generate_seo_data($goods_detail)
 {
     $keywords = '';
     if (isset($goods_detail['keywords'])) {
         foreach ($goods_detail['keywords'] as $key => $value) {
             $keywords .= $value['keyword'] . ',';
         }
     }
     $tags = array();
     if (isset($goods_detail['tag'])) {
         foreach ($goods_detail['tag'] as $key => $value) {
             $tags[] = $key;
         }
         $tags = app::get('desktop')->model('tag')->getList('tag_name', array('tag_id' => $tags));
         $tags = utils::array_change_key($tags, 'tag_name');
         $tags = array_keys($tags);
     }
     return array('goods_name' => $goods_detail['name'] . '_' . $goods_detail['product']['spec_info'], 'goods_brand' => $goods_detail['brand']['brand_name'], 'goods_bn' => $goods_detail['product']['bn'], 'goods_cat' => $goods_detail['category']['cat_name'], 'goods_intro' => $goods_detail['brief'], 'goods_barcode' => $goods_detail['product']['barcode'], 'goods_keywords' => $keywords, 'goods_tags' => implode(',', $tags));
 }
示例#13
0
 public function index($goods_id, $product_id)
 {
     #更新货品表到库存维护表
     //vmc::singleton('b2c_goods_stock')->refresh($msg);
     if (!empty($goods_id)) {
         $sku = app::get('b2c')->model('products')->getList('bn', array('goods_id' => $goods_id));
         $goods = app::get('b2c')->model('goods')->getRow('name,image_default_id', array('goods_id' => $goods_id));
     } elseif ($product_id) {
         $sku = app::get('b2c')->model('products')->getList('*', array('product_id' => $product_id));
         $goods = $sku[0];
     }
     if ($sku) {
         $base_filter = array('sku_bn' => array_keys(utils::array_change_key($sku, 'bn')));
     }
     $finder_options = array('title' => '商品库存管理', 'use_buildin_import' => true, 'use_buildin_export' => true, 'actions' => array(array('label' => '批量编辑', 'icon' => 'fa-edit', 'data-submit' => 'index.php?app=b2c&ctl=admin_stock&act=batch_edit', 'data-target' => '_ACTION_MODAL_')), 'finder_extra_view' => array(array('app' => 'b2c', 'view' => '/admin/goods/stock/finder_extra.html', 'extra_pagedata' => $goods)));
     if ($base_filter) {
         $finder_options['base_filter'] = $base_filter;
     }
     $this->finder('b2c_mdl_stock', $finder_options);
 }
示例#14
0
 function product_filter()
 {
     $filter = $_POST['filter'];
     $f_value = array_values($filter);
     $f_value = $f_value[0];
     if (trim($f_value) == '') {
         die('');
     }
     $mdl_goods = app::get('b2c')->model('goods');
     $mdl_product = app::get('b2c')->model('products');
     $products = $mdl_product->getList('*', $filter, 0, 100);
     foreach ($products as $key => $value) {
         $item_group[$value['goods_id']][] = $value;
     }
     $gids = array_keys($item_group);
     $gimages = $mdl_goods->getList('goods_id,image_default_id', array('goods_id' => $gids));
     $this->pagedata['item_group'] = $item_group;
     $this->pagedata['gimages'] = utils::array_change_key($gimages, 'goods_id');
     $this->display('admin/pos/item_group.html');
 }
示例#15
0
 /**
  * 获得分组详细评价列表
  */
 public function groupList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null, $group_by = 'product_id')
 {
     $orderType = ' createtime DESC';
     //fixOrder
     $list = parent::getList($cols = '*', $filter, $offset, $limit, $orderType);
     $list = utils::array_change_key($list, $group_by, true);
     foreach ($list as $group => &$items) {
         $items = utils::array_change_key($items, 'comment_id');
         foreach ($items as $key => &$comment) {
             if (!empty($comment['for_comment_id'])) {
                 $items[$comment['for_comment_id']]['reply'][$comment['comment_id']] = $comment;
                 $items[$comment['for_comment_id']]['lastreply'] = $items[$comment['for_comment_id']]['lastreply'] ? $items[$comment['for_comment_id']]['lastreply'] : $comment['createtime'];
                 unset($items[$key]);
                 continue;
             }
             $comment['mark'] = app::get('b2c')->model('goods_mark')->getRow('mark_star', array('comment_id' => $comment['comment_id']));
             $comment['images'] = app::get('image')->model('image_attach')->getList('image_id', array('target_id' => $comment['comment_id']));
         }
     }
     return $list;
 }
示例#16
0
文件: goods.php 项目: noikiy/snk
 /**
  * 获得相关商品.
  */
 public function related($args = array())
 {
     $args = array_merge((array) $args, $this->req_params);
     $gid = $args['goods_id'];
     if (!$gid) {
         $this->_failure('缺少参数');
     }
     $mdl_goods = app::get('b2c')->model('goods');
     $req_params = vmc::singleton('base_component_request')->get_params(true);
     $rate = $mdl_goods->getLinkList($gid);
     $gids = array_keys(utils::array_change_key($rate, 'goods_id'));
     if (count($gids) < 1) {
         $this->_failure('空数据');
     }
     $glist = $mdl_goods->getList('goods_id,gid,name,type_id,cat_id,brand_id,brief,image_default_id,spec_desc', array('goods_id' => $gids));
     //数据包装
     vmc::singleton('b2c_goods_stage')->gallery($glist);
     foreach ($glist as &$item) {
         $this->_format($item);
     }
     $this->_success(array_values($glist));
 }
示例#17
0
 /**
  * 订单退货操作完成时
  * @params array - 退货单据数据SDF
  * @return boolean - 执行成功与否
  */
 public function exec($delivery_sdf, &$msg = '')
 {
     $order_id = $delivery_sdf['order_id'];
     if (!$order_id) {
         $msg = '未知订单id';
         return false;
     }
     $all_send = true;
     $order_items = app::get('b2c')->model('order_items')->getList('*', array('order_id' => $order_id));
     $order_items = utils::array_change_key($order_items, 'item_id');
     foreach ($delivery_sdf['delivery_items'] as $item) {
         $order_items[$item['order_item_id']]['sendnum'] -= $item['sendnum'];
         if ($order_items[$item['order_item_id']]['sendnum'] < 0) {
             $msg = '退货时,造成订单明细数据异常';
             return false;
         }
         if ($order_items[$item['order_item_id']]['sendnum'] != 0) {
             $all_send = false;
             //部分退货
         }
     }
     $order_sdf = array('order_id' => $order_id, 'items' => $order_items, 'ship_status' => $all_send ? '4' : '3');
     if (!app::get('b2c')->model('orders')->save($order_sdf)) {
         $msg = '订单状态修改失败!';
         return false;
     }
     //库存冻结释放,真实扣除库存
     $stock_data = array();
     foreach ($delivery_sdf['delivery_items'] as $key => $value) {
         $stock_data[] = array('sku' => $value['bn'], 'quantity' => $value['sendnum']);
     }
     if (!vmc::singleton('b2c_goods_stock')->returned($stock_data, $msg)) {
         logger::error('库存回滚异常!ORDER_ID:' . $order_sdf['order_id'] . ',' . $msg);
     }
     //订单日志记录
     vmc::singleton('b2c_order_log')->set_operator(array('ident' => $delivery_sdf['op_id'], 'model' => 'shopadmin', 'name' => '操作员'))->set_order_id($order_sdf['order_id'])->success('reship', '订单' . (!$all_send ? '部分' : '') . '退货成功!', $delivery_sdf);
     return true;
 }
示例#18
0
文件: list.php 项目: noikiy/snk.com
 private function _screen_data_by_brand($brand_id)
 {
     $filter = array();
     if ($brand_id) {
         $filter['brand_id'] = $brand_id;
     }
     $gprops_arr = $this->app->model('goods')->lw_getList('brand_id,type_id', $filter);
     $type_id_arr = array_keys(utils::array_change_key($gprops_arr, 'type_id'));
     //扩展属性
     if ($type_id_arr) {
         foreach ($type_id_arr as $type_id) {
             $type_info = $this->app->model('goods_type')->dump2(array('type_id' => $type_id));
             $props = $type_info['props'];
             foreach ($props as $key => $prop) {
                 $_return['p_' . $key]['title'] = $prop['name'];
                 $_return['p_' . $key]['options'] = $prop['options'];
             }
         }
     }
     return $_return;
 }
示例#19
0
 public function index($cat_id = '', $urlFilter = null, $orderBy = 0, $tab = null, $page = 1, $cat_type = null, $view = null)
 {
     $tab = intval($tab);
     $urlFilter = $this->RemoveXSS($urlFilter);
     // 20130204 Andrew 俱乐部专区功能,俱乐部专区只能俱乐部访问
     $goods_cat = $this->app->model('goods_cat')->dump($cat_id);
     if ($goods_cat['cat_name'] == '俱乐部专区') {
         $custom_user = kernel::single('custom_member')->get_custom_user(helper::current_account_id());
         if ((!$custom_user['club'] || !$custom_user['vip']) && !$custom_user['leader']) {
             $back_url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site', 'act' => 'index'));
             $this->splash('failed', $back_url, app::get('b2c')->_('本页需要认证俱乐部才能进入'));
         }
     }
     // 20130204 End
     $urlFilter = htmlspecialchars(urldecode($urlFilter));
     $_GET['scontent'] = htmlspecialchars($_GET['scontent']);
     if (!empty($urlFilter) && $urlFilter != $_GET['scontent']) {
         $urlFilter .= '_' . $_GET['scontent'];
     } else {
         $urlFilter = $_GET['scontent'];
     }
     $virCatObj =& $this->app->model('goods_virtual_cat');
     if ($cat_type) {
         $vcatid = $cat_type;
         $oSearch =& $this->app->model('search');
         /** 颗粒缓存商品虚拟分类 **/
         if (!cachemgr::get('goods_virtual_cat_' . intval($vcatid), $vcat)) {
             cachemgr::co_start();
             $vcat = $virCatObj->getList('cat_id,cat_path,virtual_cat_id,filter,virtual_cat_name as cat_name', array('virtual_cat_id' => intval($vcatid)));
             cachemgr::set('goods_virtual_cat_' . intval($vcatid), $vcat, cachemgr::co_end());
         }
         $vcat = current($vcat);
         $vcatFilters = $virCatObj->_mkFilter($vcat['filter']);
         $vcatFilters = $virCatObj->getFilter($vcatFilters);
         $old_cat_id = $cat_id;
         $old_urlFilter = $urlFilter;
         $cat_id = $cat_id ? $cat_id . implode(",", $vcatFilters['cat_id']) : implode(",", $vcatFilters['cat_id']);
         $urlFilter = $urlFilter ? $urlFilter : $oSearch->encode($vcatFilters);
     }
     $page = $page > 1 ? intval($page) : 1;
     if ($cat_id == '_ANY_') {
         unset($cat_id);
     }
     if ($cat_id) {
         $cat_id = explode(",", $cat_id);
         foreach ($cat_id as $k => $v) {
             if ($v) {
                 $cat_id[$k] = intval($v);
             }
         }
         $this->id = implode(",", $cat_id);
     } else {
         $cat_id = array('');
         $this->id = '';
     }
     $pageLimit = $this->app->getConf('gallery.display.listnum');
     $pageLimit = $pageLimit ? $pageLimit : 20;
     $this->pagedata['pdtPic'] = array('width' => 100, 'heigth' => 100);
     $productCat =& $this->app->model('goods_cat');
     $objGoods = $this->app->model('goods');
     $global_runtime_path = "";
     // ajx 这里添加对分类的判断,当分类不存在时不做缓存处理
     if (!cachemgr::get('global_runtime_path' . $this->id, $global_runtime_path)) {
         cachemgr::co_start();
         if ($cat_type) {
             $global_runtime_path = $virCatObj->getPath($cat_type, '');
         } else {
             $global_runtime_path = $productCat->getPath($cat_id[0], '');
         }
         cachemgr::set('global_runtime_path', $global_runtime_path, cachemgr::co_end());
     }
     /****ajx 以下是为了当搜索条件存在时 面包屑中显示 搜索条件 ***/
     if ($_GET['scontent'] && strlen($urlFilter) > 0) {
         $global_runtime_path = array(array('type' => 'goodsCat', 'title' => app::get('site')->_('首页'), 'link' => kernel::base_url(1)));
         $title_ = explode('_', $urlFilter);
         $title_arr = "";
         foreach ($title_ as $val_xin) {
             $title_xin = explode(',', $val_xin);
             if (count($title_xin) > 2) {
                 unset($title_xin[0]);
                 foreach ($title_xin as $xin_val) {
                     $title_arr[] = $xin_val;
                 }
             } else {
                 $title_arr[] = $title_xin[1];
             }
         }
         $title = implode(',', $title_arr);
         array_push($global_runtime_path, array('type' => 'goodsCat', 'title' => app::get('site')->_($title), 'link' => kernel::base_url(1)));
     }
     // ajx 以下是为了当无分类和搜索条件时 显示所有商品
     if (count($global_runtime_path) < 2) {
         $global_runtime_path = array(array('type' => 'goodsCat', 'title' => app::get('site')->_('首页'), 'link' => kernel::base_url(1)), array('type' => 'goodsCat', 'title' => app::get('site')->_('所有商品'), 'link' => kernel::base_url(1)));
     }
     $GLOBALS['runtime']['path'] = $global_runtime_path;
     if ($cat_id[0]) {
         if (!cachemgr::get('goods_cat_' . $cat_id[0], $this->cat_result)) {
             cachemgr::co_start();
             $this->cat_result = $productCat->getList('cat_name,gallery_setting,type_id', array('cat_id|in' => $cat_id), 0, 1);
             cachemgr::set('goods_cat_' . $cat_id[0], $this->cat_result, cachemgr::co_end());
         }
         $type_filter['type_id'] = $this->cat_result[0]['type_id'];
     }
     if (isset($this->cat_result[0]['gallery_setting']['gallery_template']) && $this->cat_result[0]['gallery_setting']['gallery_template']) {
         $this->set_tmpl_file($this->cat_result[0]['gallery_setting']['gallery_template']);
         //添加模板
     }
     if (empty($view)) {
         $view = $this->app->getConf('gallery.default_view') ? $this->app->getConf('gallery.default_view') : 'index';
     }
     if (!cachemgr::get('goods_cat_childnode_' . $cat_id[0], $this->pagedata['childnode'])) {
         cachemgr::co_start();
         $this->pagedata['childnode'] = $productCat->getCatParentById($cat_id, $view);
         cachemgr::set('goods_cat_childnode_' . $cat_id[0], $this->pagedata['childnode'], cachemgr::co_end());
     }
     $cat = kernel::service('b2c_site_goods_list_viewer_apps')->get_view($cat_id, $view, $type_filter['type_id'], $cat_type);
     $args = array($cat_type ? $old_cat_id : $this->id, $cat_type ? $old_urlFilter : urlencode($urlFilter), $orderBy, $tab, $page, $cat_type, $view);
     $this->pagedata['args'] = $args;
     $this->pagedata['args1'] = $args[1];
     $args[1] = null;
     $this->pagedata['args2'] = $args;
     if ($this->app->getConf('system.seo.noindex_catalog')) {
         $this->header .= '<meta name="robots" content="noindex,noarchive,follow" />';
     }
     $searchtools =& $this->app->model('search');
     $path = array();
     $propargs = $searchtools->decode($urlFilter, $path, $cat);
     if (is_array($propargs)) {
         foreach ($propargs as $rk => $rv) {
             $pos = strpos($rk, 'p_');
             if ($pos === 0) {
                 $propz[$rk] = $rv[0];
                 $rk = substr($rk, 2);
                 $proparg[$rk] = $rv;
                 $prot[] = $rk;
             }
         }
     }
     if (isset($propargs['name'])) {
         $GLOBALS['runtime']['search_key'] = $propargs['name'][0];
     }
     $this->pagedata['prot'] = $prot;
     $filter = $propargs;
     if (is_array($filter)) {
         $filter = array_merge(array('cat_id' => $cat_id, 'marketable' => 'true'), $filter);
         if (($filter['cat_id'][0] === '' || $filter['cat_id'][0] === null) && !isset($filter['cat_id'][1])) {
             unset($filter['cat_id']);
         }
         if (($filter['brand_id'][0] === '' || $filter['brand_id'][0] === null) && !isset($filter['brand_id'][1])) {
             unset($filter['brand_id']);
         }
     } else {
         $filter = array('cat_id' => $cat_id, 'marketable' => 'true');
     }
     //--------获取类型关联的规格
     $type_id = $type_filter['type_id'];
     $gType =& $this->app->model('goods_type');
     if (!cachemgr::get('goods_type_' . $type_id, $SpecList)) {
         cachemgr::co_start();
         $SpecList = $gType->getSpec($type_id, 1);
         //获取关联的规格
         cachemgr::set('goods_type_' . $type_id, $SpecList, cachemgr::co_end());
     }
     if ($SpecList) {
         $this->spec_goods = $SpecList[1];
     }
     $oGoodsTypeSpec = $this->app->model('goods_type_spec');
     if (!cachemgr::get('goods_type_spec' . $type_id, $type_spec)) {
         cachemgr::co_start();
         $type_spec = $oGoodsTypeSpec->get_type_spec($type_id);
         cachemgr::set('goods_type_spec' . $type_id, $type_spec, cachemgr::co_end());
     }
     $filter['cat_id'] = $cat_id;
     $filter['goods_type'] = 'normal';
     $filter['marketable'] = 'true';
     //-----查找当前类别子类别的关联类型ID
     if ($urlFilter) {
         if ($vcat['type_id']) {
             //$filter['type_id']=$vcat['type_id'];
             $filter['type_id'] = null;
         }
     }
     //--------
     foreach ($path as $p) {
         $arg = unserialize(serialize($this->pagedata['args']));
         $arg[1] = $p['str'];
         $title = array();
         if ($p['type'] == 'brand_id') {
             $brand = array();
             foreach ($cat['brand'] as $b) {
                 $brand[$b['brand_id']] = $b['brand_name'];
             }
             foreach ($p['data'] as $i) {
                 $title[] = $brand[$i];
                 $tip = __("品牌");
             }
             unset($brand);
         } elseif (substr($p['type'], 0, 2) == 's_') {
             $spec = array();
             foreach ($p['data'] as $spk => $spv) {
                 $tmp = explode(",", $spv);
                 $tip = $SpecList[$tmp[0]]['name'];
                 $title[] = $SpecList[$tmp[0]]['spec_value'][$tmp[1]]['spec_value'];
                 $g['pdt_desc'] = $SpecList[$tmp[0]]['spec_value'][$tmp[1]]['spec_value'];
                 /*前台搜索商品规格筛选,所要获取的pdt_desc*/
             }
         }
         $curSpec[$tmp[0]] = $tmp[1];
     }
     $this->pagedata['tabs'] = $cat['tabs'];
     $this->pagedata['cat_id'] = implode(",", $cat_id);
     $views = $cat['setting']['list_tpl'];
     foreach ($views as $key => $val) {
         $this->pagedata['views'][$key] = array($cat_type ? $old_cat_id : $this->id, '', $orderBy, $tab, $page, $cat_type, $val);
     }
     if ($cat['tabs'][$tab]) {
         parse_str($cat['tabs'][$tab]['filter'], $_filter);
         $filter = array_merge($filter, $_filter);
     }
     if (isset($this->pagedata['orderBy'][$orderBy])) {
         $orderby = $this->pagedata['orderBy'][$orderBy]['sql'];
     }
     $selector = array();
     $search = array();
     /***********************/
     if ($SpecList) {
         if ($curSpec) {
             $curSpecKey = array_keys($curSpec);
         }
         foreach ($SpecList as $spk => $spv) {
             $selected = 0;
             if ($curSpecKey && in_array($spk, $curSpecKey)) {
                 $spv['spec_value'][$curSpec[$spk]]['selected'] = true;
                 $selected = 1;
             }
             if ($spv['spec_style'] == "select") {
                 //下拉
                 $SpecSelList[$spk] = $spv;
                 if ($selected) {
                     $SpecSelList[$spk]['selected'] = true;
                 }
             } elseif ($spv['spec_style'] == "flat") {
                 $SpecFlatList[$spk] = $spv;
                 if ($selected) {
                     $SpecFlatList[$spk]['selected'] = true;
                 }
             }
         }
     }
     $this->pagedata['SpecFlatList'] = $SpecFlatList;
     foreach ($SpecFlatList as $sk => $sv) {
         if (strpos($sv['name'], '颜色') !== false) {
             foreach ($sv['spec_value'] as $ssk => $ssv) {
                 $this->pagedata['allcolor'] = $sk;
             }
         }
     }
     $this->pagedata['specimagewidth'] = $this->app->getConf('spec.image.width');
     $this->pagedata['specimageheight'] = $this->app->getConf('spec.image.height');
     $this->pagedata['orderBy'] = $objGoods->orderBy();
     //排序方式
     if (empty($orderBy)) {
         $orderBy = 1;
     }
     if (!isset($this->pagedata['orderBy'][$orderBy])) {
         $this->_response->set_http_response_code(404);
     } else {
         $orderby = $this->pagedata['orderBy'][$orderBy]['sql'];
     }
     $selector['ordernum'] = $cat['ordernum'];
     if (app::get('base')->getConf('server.search_server.search_goods')) {
         $searchApp = search_core::instance('search_goods');
         $sfilter['filter'] = $filter;
         $sfilter['from'] = $pageLimit * ($page - 1);
         //分页
         $sfilter['to'] = $pageLimit;
         $sfilter['order'] = $orderby;
         $sfilter['scount'] = count($cat['props']);
     }
     $res = false;
     //初始化
     if (is_object($searchApp)) {
         $sphinxstart = true;
         $queryRes = $searchApp->query($sfilter);
         if ($queryRes) {
             $res = $searchApp->commit();
             $nprop = $res['prop'];
             //属性搜索
             $cbrand = $res['brand'];
             $rfilter['goods_id'] = $res['result'];
             if (is_array($res['result'])) {
                 $count = $res['total'];
                 $search_data = $objGoods->getList('*', $rfilter);
                 foreach ($search_data as $tmp_data) {
                     $tmp_search_data[$tmp_data['goods_id']] = $tmp_data;
                 }
                 foreach ($res['result'] as $v) {
                     if (!isset($tmp_search_data[$v])) {
                         continue;
                     }
                     $aProduct[] = $tmp_search_data[$v];
                     //产品
                 }
                 unset($search_data);
                 unset($tmp_search_data);
             } else {
                 $count = 0;
                 $aProduct = array();
             }
         }
     }
     if ($res === false) {
         if (isset($filter['tag'][0]) && !$filter['tag'][0]) {
             unset($filter['tag']);
         }
         $tmp_filter['str_where'] = $objGoods->_filter($filter);
         $aProduct = $objGoods->getList('*', $tmp_filter, $pageLimit * ($page - 1), $pageLimit, $orderby);
         $count = $objGoods->count($tmp_filter);
     }
     /************************/
     if (is_array($cat['brand'])) {
         if ($sphinxstart) {
             $bCount = $cbrand;
         } else {
             $bCount = $objGoods->countBrandGoods($tmp_filter, $cat['brand']);
         }
         foreach ($cat['brand'] as $bk => $bv) {
             if (is_array($filter['brand_id'])) {
                 $bid = array_flip($filter['brand_id']);
             }
             $brand = array('name' => app::get('b2c')->_('品牌'), 'value' => $bid);
             $brandArray[$bv['brand_id']] = $bv['brand_name'];
         }
         foreach ((array) $bCount as $sk => $sv) {
             if (isset($brandArray[$bCount[$sk]['brand_id']])) {
                 $tmpOp[$bCount[$sk]['brand_id']] = $brandArray[$bCount[$sk]['brand_id']] . "<span class='num'>(" . $bCount[$sk]['_count'] . ")</span>";
             }
         }
         $brand['options'] = $tmpOp;
         $selector['brand_id'] = $brand;
     }
     $goods_relate = array();
     if (!is_array($cat_id) && $cat_id || $cat_id[0] || $cat_type) {
         //$goods_relate = $aProduct;
         $goods_relate = $objGoods->getList("p_1,p_2,p_3,p_4,p_5,p_6,p_7,p_8,p_9,p_10,p_11,p_12,p_13,p_14,p_15,p_16,p_17,p_18,p_19,p_20", $filter, 0, 100);
     }
     foreach ((array) $cat['props'] as $prop_id => $prop) {
         if ($prop['search'] == 'select') {
             if (count($prop['options']) > 0) {
                 $prop['value'] = $filter['p_' . $prop_id][0];
                 $searchSelect[$prop_id] = $prop;
             }
         } elseif ($prop['search'] == 'input') {
             $prop['value'] = $filter['p_' . $prop_id][0];
             $searchInput[$prop_id] = $prop;
         } elseif ($prop['search'] == 'nav') {
             if (is_array($filter['brand_id']) && isset($filter['p_' . $prop_id])) {
                 $prop['value'] = array_flip($filter['p_' . $prop_id]);
             }
             $plugadd = array();
             if (is_array($goods_relate)) {
                 foreach ($goods_relate as $k => $v) {
                     if ($v["p_" . $prop_id] != null) {
                         if ($plugadd[$v["p_" . $prop_id]]) {
                             $plugadd[$v["p_" . $prop_id]] = $plugadd[$v["p_" . $prop_id]] + 1;
                         } else {
                             $plugadd[$v["p_" . $prop_id]] = 1;
                         }
                     }
                     $aFilter['goods_id'][] = $v['goods_id'];
                     //当前的商品结果集
                 }
             }
             $navselector = 0;
             if (is_array($prop['options'])) {
                 foreach ($prop['options'] as $q => $e) {
                     if ($plugadd[$q]) {
                         $prop['options'][$q] = $prop['options'][$q] . "<span class='num'>(" . $plugadd[$q] . ")</span>";
                         if (!$navselector) {
                             $navselector = 1;
                         }
                     } else {
                         unset($prop['options'][$q]);
                     }
                 }
             }
             $selector[$prop_id] = $prop;
         }
     }
     if ($navselector) {
         $nsvcount = 0;
         $noshow = 0;
         foreach ($selector as $sk => $sv) {
             if ($sv['value']) {
                 $nsvcount++;
             }
             if (is_numeric($sk) && !$sv['show']) {
                 $noshow++;
             }
         }
         if ($nsvcount == intval(count($selector) - $noshow)) {
             $navselector = 0;
         }
     }
     foreach ((array) $cat['spec'] as $spec_id => $spec_name) {
         $sId['spec_id'][] = $spec_id;
     }
     $cat['ordernum'] = $cat['ordernum'] ? $cat['ordernum'] : array('' => 2);
     if ($cat['ordernum']) {
         if ($selector) {
             foreach ($selector as $key => $val) {
                 if (!in_array($key, $cat['ordernum']) && $val) {
                     $selectorExd[$key] = $val;
                 }
             }
         }
     }
     if (is_array($aProduct)) {
         foreach ($aProduct as $apk => $apv) {
             $rfilter[] = $apv['goods_id'];
         }
     }
     if (is_object(kernel::service('propselect.prop_search'))) {
         $dprop = kernel::service('propselect.prop_search')->getProps($filter, $propz, $prot, $dprop, $searchSelect);
     }
     $this->pagedata['dprop'] = $dprop;
     $this->pagedata['nprop'] = $nprop;
     //对商品进行预处理
     $this->pagedata['mask_webslice'] = $this->app->getConf('system.ui.webslice') ? ' hslice' : null;
     $this->pagedata['searchInput'] =& $searchInput;
     $this->pagedata['selectorExd'] = $selectorExd;
     $this->cat_id = $cat_id;
     $this->_plugins['function']['selector'] = array(&$this, '_selector');
     $this->pagedata['pager'] = array('current' => $page, 'total' => ceil($count / $pageLimit), 'link' => $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_gallery', 'full' => 1, 'act' => 'index', 'args' => array($cat_type ? $old_cat_id : implode(',', $cat_id), '', $orderBy, $tab, $tmp = time(), $cat_type, $view))) . '?scontent=' . urlencode($p['str']), 'token' => $tmp);
     if ($page != 1 && $page > $this->pagedata['pager']['total']) {
         $this->_response->set_http_response_code(404);
     }
     if (!$count) {
         $this->pagedata['emtpy_info'] = kernel::single('site_errorpage_get')->getConf('errorpage.search');
     }
     $this->pagedata['searchtotal'] = $count;
     $aData = $this->get_current_member();
     if (is_array($aProduct) && count($aProduct) > 0) {
         $objProduct = $this->app->model('products');
         if ($this->app->getConf('site.show_mark_price') == 'true') {
             $setting['mktprice'] = $this->app->getConf('site.show_mark_price');
             if (isset($aProduct)) {
                 foreach ($aProduct as $pk => $pv) {
                     if (empty($aProduct[$pk]['mktprice'])) {
                         $aProduct[$pk]['mktprice'] = $objProduct->getRealMkt($pv['price']);
                     }
                 }
             }
         } else {
             $setting['mktprice'] = 0;
         }
         $setting['saveprice'] = $this->app->getConf('site.save_price');
         $setting['buytarget'] = $this->app->getConf('site.buy.target');
         $this->pagedata['setting'] = $setting;
         //spec_desc
         $this->site_member_lv_id = $aData['member_lv'];
         $oGoodsLv =& $this->app->model('goods_lv_price');
         $oMlv =& $this->app->model('member_lv');
         if ($this->site_member_lv_id) {
             $mlv = $oMlv->getList('dis_count', array('member_lv_id' => $this->site_member_lv_id));
         }
         $tmpGoods = array();
         $tmp_goods_ids = array_map('current', $aProduct);
         /** 获取所有商品对应的货品 **/
         $tmp_products = $objProduct->getList('product_id, spec_info, price,mktprice, freez, store,   marketable, goods_id', array('goods_id|in' => $tmp_goods_ids, 'marketable' => 'true'));
         $tmp_products = utils::array_change_key($tmp_products, 'goods_id', 1);
         /** 促销处理 **/
         $aProduct['goods_ids'] = $tmp_goods_ids;
         $aPromotion_price = kernel::single('b2c_goods_promotion_price')->process($aProduct);
         unset($aProduct['goods_ids']);
         foreach ($aProduct as $key => &$val) {
             $db = kernel::database();
             $tvPrice = array();
             //$temp = $objProduct->getList('mktprice,product_id, spec_info, price, freez, store,   marketable, goods_id',array('goods_id'=>$val['goods_id'],'marketable'=>'true'));
             $temp = $tmp_products[$val['goods_id']];
             $priceArea = array();
             $mktpriceArea = array();
             foreach ($tmp_products[$val['goods_id']] as $tpv) {
                 $tvPrice[] = $tpv['price'];
                 $priceArea[] = $tpv['price'];
                 //销售价区域
                 if ($tpv['mktprice'] == '' || $tpv['mktprice'] == null) {
                     $mktpriceArea[] = $objProduct->getRealMkt($tpv['mktprice']);
                 } else {
                     $mktpriceArea[] = $tpv['mktprice'];
                 }
             }
             if ($this->app->getConf('site.show_mark_price') == "true" && count($priceArea) > 1) {
                 //列表页价格区间@lujy
                 $minprice = min($priceArea);
                 $maxprice = max($priceArea);
                 if ($minprice != $maxprice) {
                     $val['minprice'] = $minprice;
                     $val['maxprice'] = $maxprice;
                 }
             }
             if ($this->app->getConf('site.show_mark_price') == "true" && count($mktpriceArea) > 1) {
                 //列表也市场价区间
                 $mktminprice = min($mktpriceArea);
                 $mktmaxprice = max($mktpriceArea);
                 if ($mktminprice != $mktmaxprice) {
                     $val['minmktprice'] = $mktminprice;
                     $val['maxmktprice'] = $mktmaxprice;
                 }
             }
             $val['price'] = min($tvPrice);
             $val['mktprice'] = max($mktpriceArea);
             if ($mlv) {
                 $tmpGoods = array();
                 foreach ($oGoodsLv->getList('product_id,price', array('goods_id' => $val['goods_id'], 'level_id' => $this->site_member_lv_id)) as $k => $v) {
                     $tmpGoods[$v['product_id']] = $v['price'];
                 }
                 foreach ($temp as &$tv) {
                     $tv['price'] = isset($tmpGoods[$tv['product_id']]) ? $tmpGoods[$tv['product_id']] : $mlv[0]['dis_count'] * $tv['price'];
                 }
                 $val['price'] = isset($tmpGoods[$tv['product_id']]) ? $tmpGoods[$tv['product_id']] : $mlv[0]['dis_count'] * $val['price'];
             }
             if ($aPromotion_price[$val['goods_id']]) {
                 $promotion_price = $aPromotion_price[$val['goods_id']];
                 if ($promotion_price['price']) {
                     $val['timebuyprice'] = $promotion_price['price'];
                 } else {
                     $val['timebuyprice'] = $val['price'];
                 }
                 $val['show_button'] = $promotion_price['show_button'];
                 $val['timebuy_over'] = $promotion_price['timebuy_over'];
             }
             $val['spec_desc_info'] = $temp;
             $aProduct[$key]['product_id'] = $temp[0]['product_id'];
         }
         // add here by liuyong
         // show tag on goods image
         foreach (kernel::servicelist('tags_special.add') as $services) {
             if (is_object($services)) {
                 if (method_exists($services, 'add')) {
                     $services->add($rfilter, $aProduct);
                 }
             }
         }
         // end of add
         // 获取商品评分和频率
         $objPoint = $this->app->model('comment_goods_point');
         $salesGoods = $this->app->model('goods_promotion_ref');
         foreach ($aProduct as $k => $v) {
             $aProduct[$k]['goods_point'] = $objPoint->get_single_point($v['goods_id']);
             $aProduct[$k]['total_point_nums'] = $objPoint->get_point_nums($v['goods_id']);
             //获取促销商品折扣图片
             $aProduct[$k]['salse_description'] = $db->select("SELECT gpr.`goods_id`,gpr.`description`,srg.`image` FROM `sdb_b2c_goods_promotion_ref` as gpr\n                                                                left join sdb_b2c_sales_rule_goods as srg on gpr.rule_id = srg.rule_id\n                                                                WHERE gpr.`goods_id`=" . $v['goods_id'] . "");
             //                $aProduct[$k]['salse_description'] = $salesGoods->getList('goods_id,description,image', array('goods_id' => $v['goods_id']));
         }
         $this->pagedata['products'] =& $aProduct;
     }
     if (!$aData['member_id']) {
         $this->pagedata['login'] = '******';
     }
     if ($SpecSelList) {
         $this->pagedata['SpecSelList'] = $SpecSelList;
     }
     if ($searchSelect) {
         $this->pagedata['searchSelect'] =& $searchSelect;
     }
     $this->pagedata['curView'] = $view;
     $this->pagedata['selector'] =& $selector;
     $this->pagedata['cat_type'] = $cat_type;
     if ($GLOBALS['search_array'] && is_array($GLOBALS['search_array'])) {
         $this->pagedata['search_array'] = implode("+", $GLOBALS['search_array']);
     }
     $this->pagedata['_PDT_LST_TPL'] = $cat['tpl'];
     $this->pagedata['filter'] = $filter;
     unset($filter['name']);
     $this->pagedata['bfilter'] = $filter;
     $this->set_tmpl('gallery');
     $this->pagedata['gallery_display'] = $this->app->getConf('gallery.display.grid.colnum');
     $this->pagedata['show_cat'] = $this->app->getConf('site.cat.select');
     if ($count < $this->pagedata['gallery_display']) {
         $this->pagedata['gwidth'] = $count * (100 / $this->pagedata['gallery_display']);
     } else {
         $this->pagedata['gwidth'] = 100;
     }
     $this->pagedata['property_select'] = $this->app->getConf('site.property.select');
     $imageDefault = app::get('image')->getConf('image.set');
     $this->pagedata['image_set'] = $imageDefault;
     $this->pagedata['defaultImage'] = $imageDefault['S']['default_image'];
     $this->pagedata['proparg'] = $proparg;
     /** 获取商品表相关meta **/
     if ($cat_id) {
         $obj_meta_register = app::get('dbeav')->model('meta_register');
         $arr_meta_register = $obj_meta_register->getList('*', array('tbl_name' => $productCat->table_name(1), 'col_name' => 'seo_info'));
         if (!$arr_meta_register) {
             $productCat->cat_meta_register();
         }
         $meta_desc = $arr_meta_register[0]['col_desc'];
         $col_type = $arr_meta_register[0]['col_type'];
         $obj_meta_value = app::get('dbeav')->model('meta_value_' . $col_type);
         $seo_info = $obj_meta_value->select($arr_meta_register[0]['mr_id'], $cat_id);
         if (is_array($seo_info) && count($seo_info) == 1) {
             $seo_info = $seo_info[$cat_id[0]];
         } elseif (is_string($seo_info)) {
             $seo_info = unserialize($seo_info[$cat_id[0]]);
         } elseif (!$seo_info) {
             $seo_info = "";
         }
     }
     if (!empty($seo_info['seo_info']['seo_title']) || !empty($seo_info['seo_info']['seo_keywords']) || !empty($seo_info['seo_info']['seo_description'])) {
         $this->title = $seo_info['seo_info']['seo_title'];
         $this->keywords = $seo_info['seo_info']['seo_keywords'];
         $this->description = $seo_info['seo_info']['seo_description'];
     } else {
         $this->setSeo('site_gallery', 'index', $this->prepareSeoData($this->pagedata));
     }
     $this->page('site/gallery/index.html');
 }
示例#20
0
    public function createView()
    {
        $page = $_GET['page'] ? $_GET['page'] : 1;
        $allCols = $this->all_columns();
        $modifiers = array();
        $filter_builder = new desktop_finder_builder_filter_render();
        //$fb_return_data = $filter_builder->main($this->object->table_name() , $this->app, $filter, $this->controller, true);
        $type_modifier = array();
        $key_modifier = array();
        $object_modifier = array();
        $modifier_object = new modifiers();
        $tmparr_columns = array();
        foreach ($this->columns as $col) {
            if (isset($allCols[$col])) {
                $colArray[$col] =& $allCols[$col];
                if (method_exists($this->object, 'modifier_' . $col)) {
                    $key_modifier[$col] = 'modifier_' . $col;
                } elseif (is_string($colArray[$col]['type'])) {
                    if (substr($colArray[$col]['type'], 0, 6) == 'table:') {
                        $object_modifier[$colArray[$col]['type']] = array();
                    } elseif (method_exists($modifier_object, $colArray[$col]['type'])) {
                        $type_modifier[$colArray[$col]['type']] = array();
                    }
                }
                if (isset($allCols[$col]['sql'])) {
                    $sql[] = $allCols[$col]['sql'] . ' as ' . $col;
                } elseif ($col == '_tag_') {
                    $sql[] = $dbschema['idColumn'] . ' as _tag_';
                } else {
                    $sql[] = '`' . $col . '`';
                }
                $label = $colArray[$col]['label'];
                $orderby_sign = '<i class="fa fa-sort text-default"></i>';
                if ($this->orderBy == $col) {
                    if ($this->orderType == 'desc') {
                        $orderby_sign = '<i class="fa fa-sort-desc"></i>';
                    } else {
                        $orderby_sign = '<i class="fa fa-sort-asc"></i>';
                    }
                } elseif (!isset($allCols[$col]['orderby']) || $allCols[$col]['orderby'] !== true) {
                    $orderby_sign = '';
                } elseif (strpos($col, 'column_') === false) {
                } elseif (strpos($col, 'column_') !== false && $allCols[$col]['order_field']) {
                    if ($this->orderBy == $allCols[$col]['order_field']) {
                        if ($this->orderType == 'desc') {
                            $orderby_sign = '<i class="fa fa-sort-desc"></i>';
                        } else {
                            $orderby_sign = '<i class="fa fa-sort-asc"></i>';
                        }
                    }
                    $col = $allCols[$col]['order_field'];
                } else {
                    $orderby_sign = '';
                }
                if ($orderby_sign != '') {
                    $column_th_html_classname = 'order-able';
                } else {
                    $column_th_html_classname = '';
                }
                if ($column_th_html_classname) {
                    $column_th_html .= <<<EOF
    <th data-key="{$col}" data-order="{$this->orderType}" class="{$column_th_html_classname}">
        {$label}&nbsp;{$orderby_sign}
    </th>
EOF;
                } else {
                    $column_th_html .= <<<EOF
    <th data-key="{$col}">
        {$label}&nbsp;{$orderby_sign}
    </th>
EOF;
                }
                if (false && ($fcol = $fb_return_data['filter_cols'][$col])) {
                    $filter_column_html .= <<<EOF
        <th>
            {$fcol['addon']}{$fcol['inputer']}
        </th>
EOF;
                }
            }
        }
        foreach ((array) $this->service_object as $k => $object) {
            if ($object->addon_cols) {
                $object->col_prefix = '_' . $k . '_';
                foreach (explode(',', $object->addon_cols) as $col) {
                    $sql[] = $col . ' as ' . $object->col_prefix . $col;
                }
            }
        }
        $sql = (array) $sql;
        if (!isset($colArray[$this->dbschema['idColumn']])) {
            array_unshift($sql, $this->dbschema['idColumn']);
        }
        if ($this->params === -1) {
            $list = array();
        } else {
            $this->object->filter_use_like = true;
            $count_method = $this->object_method['count'];
            // 如果有view_tab的情况下,则直接使用计算顶部view_tab的addon时记下的总数,减少同一finder两次进行count计算,增加性能
            $item_count = $this->current_view_count ? $this->current_view_count : $this->object->{$count_method}($this->params);
            $total_pages = ceil($item_count / $this->pagelimit);
            if ($page < 0 || $page > 1 && $page > $total_pages) {
                $page = 1;
            }
            $getlist_method = $this->object_method['getlist'];
            $order = $this->orderBy ? $this->orderBy . ' ' . $this->orderType : '';
            if ($this->orderBy) {
                if (in_array($this->orderBy, $this->object->metaColumn)) {
                    //meta排序暂时不做修改
                } else {
                    list(, $obj_name, $fkey) = explode(':', $this->object->schema['columns'][$this->orderBy]['type']);
                    if ($obj_name) {
                        if ($p = strpos($obj_name, '@')) {
                            $app_id = substr($obj_name, $p + 1);
                            $obj_name = substr($obj_name, 0, $p);
                            $o = app::get($app_id)->model($obj_name);
                        } else {
                            $o = $this->object->app->model($obj_name);
                        }
                        $o_idColumn = $o->getList($o->idColumn, array(), 0, -1, $o->schema['textColumn'] . ' ' . $this->orderType);
                        foreach ($o_idColumn as $o_k => $o_v) {
                            $filed = $filed . ",'" . $o_v[$o->idColumn] . "'";
                        }
                        $order = ' FIELD(' . $this->orderBy . $filed . ')';
                    }
                }
            }
            $list = $this->object->{$getlist_method}(implode(',', $sql), $this->params, ($page - 1) * $this->pagelimit, $this->pagelimit, $order);
            /*当有row_style 定义时,Finder多取一次数据*/
            if ($this->row_style_func) {
                $abs_list = $this->object->{$getlist_method}('*', $this->params, ($page - 1) * $this->pagelimit, $this->pagelimit, $order);
                $abs_list = utils::array_change_key($abs_list, $this->dbschema['idColumn']);
                foreach ($list as $k => $item) {
                    $list[$k]['@row'] = $abs_list[$item[$this->dbschema['idColumn']]];
                }
            }
            $body = $this->item_list_body($page, $list, $colArray, $key_modifier, $object_modifier, $type_modifier);
            $count = count($list);
            $total_pages = ceil($item_count / max($count, $this->pagelimit));
            $this->pager_info = array('current' => $page, 'list' => $count, 'count' => $item_count, 'total' => $total_pages ? $total_pages : 1);
            $this->object->filter_use_like = false;
        }
        if ($this->detail_url) {
            $detail_th_html = '<th class="text-center">' . '查看' . '</th>';
            $filter_td_html = '<td></td>';
        }
        $render = $this->render;
        $render->pagedata['detail_th_html'] = $detail_th_html;
        $render->pagedata['column_th_html'] = $column_th_html;
        $render->pagedata['pinfo'] = $this->pager_info;
        $render->pagedata['body'] = $body;
        $render->pagedata['filter_td_html'] = $filter_td_html;
        $render->pagedata['filter_column_html'] = $filter_column_html;
        $render->pagedata['use_buildin_selectrow'] = $this->use_buildin_selectrow;
    }
示例#21
0
 /**
  * 售后服务申请
  */
 public function newrequest($order_id, $product_id, $action = 'input')
 {
     if ($action == 'save') {
         $mdl_as_request = $this->app_current->model('request');
         $image_upload_arr = array('name' => $_FILES['images']['name'], 'tmp_name' => $_FILES['images']['tmp_name'], 'error' => $_FILES['images']['error'], 'size' => $_FILES['images']['size'], 'type' => $_FILES['images']['type']);
         $ready_upload = array();
         $success_upload_images = array();
         foreach ($image_upload_arr['tmp_name'] as $key => $value) {
             if (!isset($value) || empty($value)) {
                 continue;
             }
             $size = $image_upload_arr['size'][$key];
             $max_conf = $this->app_current->getConf('request_image_size') . 'M';
             $max_size = utils::parse_str_size($max_conf);
             //byte
             if (isset($image_upload_arr['error'][$key]) && !empty($image_upload_arr['error'][$key]) && $image_upload_arr['error'][$key] > 0) {
                 $this->_upload_error($key, '文件上传失败!' . $image_upload_arr['error'][$key]);
             }
             if ($size > $max_size) {
                 $this->_upload_error($key, '文件大小不能超过' . $max_conf);
             }
             list($w, $h, $t) = getimagesize($value);
             if (!in_array($t, array(1, 2, 3, 6))) {
                 //1 = GIF,2 = JPG,3 = PNG,6 = BMP
                 $this->_upload_error($key, '文件类型错误');
             }
             $ready_upload[] = array('tmp' => $value, 'name' => $image_upload_arr['name'][$key]);
         }
         $mdl_image = app::get('image')->model('image');
         foreach ($ready_upload as $k => $item) {
             $image_id = $mdl_image->store($item['tmp'], null, null, $item['name']);
             $success_upload_images[] = array('target_type' => 'asrequest', 'image_id' => $image_id);
             logger::info('前台售后服务图片上传操作' . 'TMP_NAME:' . $item['tmp'] . ',FILE_NAME:' . $item['name']);
         }
         $new_request = array_merge(array('request_id' => $mdl_as_request->apply_id(), 'member_id' => $this->member['member_id'], 'order_id' => $order_id, 'createtime' => time(), 'images' => $success_upload_images, 'product' => array('product_id' => $product_id, 'quantity' => $_POST['product_return_num'])), $_POST['request']);
         $new_request['subject'] = substr(preg_replace('/\\s/', '', $new_request['description']), 0, 100) . '...';
         if ($mdl_as_request->save($new_request)) {
             $this->_send('success', $new_request);
         }
     } else {
         //表单
         $redirect_order = array('app' => 'aftersales', 'ctl' => 'mobile_member', 'act' => 'order');
         if (!$order_id || !$product_id) {
             $this->redirect(array('app' => 'aftersales', 'ctl' => 'mobile_member', 'act' => 'order'));
         }
         $mdl_order = app::get('b2c')->model('orders');
         $order = $mdl_order->dump($order_id, '*', array('items' => array('*')));
         $order_items = $order['items'];
         $order_items = utils::array_change_key($order_items, 'product_id');
         if ($order['member_id'] != $this->member['member_id'] || !isset($order_items[$product_id])) {
             $this->splash('error', $redirect_order, '非法操作!');
         }
         $this->pagedata['order'] = $order;
         $this->pagedata['request_item'] = $order_items[$product_id];
         $goods = app::get('b2c')->model('goods')->getRow('type_id', array('type_id|than' => 0, 'goods_id' => $this->pagedata['request_item']['goods_id']));
         if ($goods) {
             $type_info = app::get('b2c')->model('goods_type')->dump($goods['type_id']);
         }
         $this->pagedata['gtype_assrule'] = $type_info['setting']['assrule'];
         $this->output('aftersales');
     }
 }
示例#22
0
 /**
  * 获得所有子孙含自己的cat_id
  */
 public function get_all_children_id($cat_id)
 {
     //子类
     $filter['cat_id'] = $cat_id;
     if ($filter['cat_id'] || $filter['cat_id'] === 0) {
         $cats = $this->getList('cat_path,cat_id', array('cat_id' => $filter['cat_id']));
         $path = '';
         if ($cats) {
             foreach ($cats as $v) {
                 $path .= ' cat_path LIKE \'' . $v['cat_path'] . ',%\' OR';
             }
         }
         if ($cat_ids = $this->db->select('SELECT cat_id FROM vmc_b2c_goods_cat WHERE ' . $path . ' cat_id in (' . implode((array) $filter['cat_id'], ' , ') . ')')) {
             $filter['cat_id'] = array_keys(utils::array_change_key($cat_ids, 'cat_id'));
         }
         return $filter['cat_id'];
     }
     return $cat_id;
 }
示例#23
0
文件: goods.php 项目: syjzwjj/quyeba
 function _get_products($aProductId)
 {
     $imageDefault = app::get('image')->getConf('image.set');
     $json = kernel::single('b2c_cart_json');
     $router = app::get('site')->router();
     if (empty($aProductId)) {
         return array();
     }
     //防sql注入处理
     foreach ($aProductId as $k => $id) {
         $aProductId[$k] = (int) $id;
     }
     $aProductId = array_unique($aProductId);
     ///////////////// 货品信息 ///////////////////////
     $sSql = "SELECT\n                     p.product_id,p.goods_id,p.bn,g.score as gain_score,p.cost,p.name, p.store, p.marketable, g.params, g.package_scale, g.package_unit, g.package_use, p.freez,\n                     g.goods_type, g.nostore_sell, g.min_buy,g.type_id,g.cat_id,g.image_default_id,p.spec_info,p.spec_desc,p.price,p.weight,\n                     t.setting, t.floatstore\n                 FROM  sdb_b2c_products AS p\n                 LEFT JOIN  sdb_b2c_goods AS g    ON p.goods_id = g.goods_id\n                 LEFT JOIN sdb_b2c_goods_type AS t ON g.type_id  = t.type_id\n                 WHERE product_id IN (" . implode(',', $aProductId) . ")";
     $aProduct = $this->oCartObjects->db->select($sSql);
     ////////// 设置了的会员价 //////////////////////////
     $sSql = "SELECT p.product_id,p.price\n                FROM sdb_b2c_goods_lv_price AS p\n                LEFT JOIN sdb_b2c_member_lv AS lv ON p.level_id = lv.member_lv_id\n                WHERE p.level_id=" . intval($this->arr_member_info['member_lv']) . " AND p.product_id IN (" . implode(',', $aProductId) . ")";
     $aPrice = $this->oCartObjects->db->select($sSql);
     $tmp = array();
     foreach ($aPrice as $val) {
         $tmp[$val['product_id']] = $val;
     }
     $aPrice = $tmp;
     $tmp = null;
     $aPrice = empty($aPrice) ? array() : utils::array_change_key($aPrice, 'product_id');
     //////////// 获取会员折扣 //////////////////////////
     //empty($this->arr_member_info)
     if (empty($this->arr_member_info)) {
         // 非登录用户
         $discout = 1;
     } else {
         // 登录用户
         $discout = $this->discout;
     }
     //////////// 整理数据 /////////////////////////////
     $aResult = array();
     foreach ($aProduct as $row) {
         //$products_store[$row['product_id']]['store'] = $row['store'];
         if ($row['marketable'] == 'false') {
             //商品下架购物车中消失处理!
             unset($row);
             continue;
         }
         //商品不存在时购物车里也同时删除
         $key = array_search($row['product_id'], $aProductId);
         if ($key === false) {
             $arrDelGoods[] = $aProductId[$key];
         }
         //商品不存在时购物车里也同时删除
         $aResult[$row['product_id']] = array('bn' => $row['bn'], 'price' => array('price' => $row['price'], 'cost' => $row['cost'], 'member_lv_price' => empty($aPrice[$row['product_id']]) ? $this->omath->number_multiple(array($row['price'], $discout)) : $aPrice[$row['product_id']]['price'], 'buy_price' => empty($aPrice[$row['product_id']]) ? $this->omath->number_multiple(array($row['price'], $discout)) : $aPrice[$row['product_id']]['price']), 'product_id' => $row['product_id'], 'goods_id' => $row['goods_id'], 'goods_type' => $row['goods_type'], 'name' => $row['name'], 'consume_score' => 0, 'gain_score' => intval($row['gain_score']), 'type_setting' => is_array($row['setting']) ? $row['setting'] : @unserialize($row['setting']), 'type_id' => $row['type_id'], 'cat_id' => $row['cat_id'], 'min_buy' => $row['min_buy'], 'spec_info' => $row['spec_info'], 'spec_desc' => is_array($row['spec_desc']) ? $row['spec_desc'] : @unserialize($row['spec_desc']), 'weight' => $row['weight'], 'quantity' => 1, 'params' => is_array($row['params']) ? $row['params'] : @unserialize($row['params']), 'floatstore' => $row['floatstore'] ? $row['floatstore'] : 0, 'store' => $row['nostore_sell'] ? $this->__max_goods_store : (empty($row['store']) ? (int) $row['store'] === 0 && $row['store'] !== null && $row['store'] !== '' ? 0 : $this->__max_goods_store : $row['store'] - $row['freez']), 'package_scale' => $row['package_scale'], 'package_unit' => $row['package_unit'], 'package_use' => $row['package_use'], 'default_image' => array('thumbnail' => $row['image_default_id'] ? $row['image_default_id'] : $imageDefault['M']['default_image']));
         //组合JSON格式让JS显示
         $aResult[$row['product_id']]['json_price']['price'] = $json->get_cur_order($aResult[$row['product_id']]['price']['price']);
         $aResult[$row['product_id']]['json_price']['cost'] = $json->get_cur_order($aResult[$row['product_id']]['price']['cost']);
         $aResult[$row['product_id']]['json_price']['member_lv_price'] = $json->get_cur_order($aResult[$row['product_id']]['price']['member_lv_price']);
         $aResult[$row['product_id']]['json_price']['buy_price'] = $json->get_cur_order($aResult[$row['product_id']]['price']['buy_price']);
         $aResult[$row['product_id']]['url'] = $router->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'full' => 1, 'act' => 'index', 'arg' => $aResult[$row['product_id']]['goods_id']));
         $aResult[$row['product_id']]['thumbnail'] = base_storager::image_path($aResult[$row['product_id']]['default_image']['thumbnail'], 's');
         $tmp = $aResult[$row['product_id']];
         $this->getScroe($tmp);
         $aResult[$row['product_id']] = $tmp;
         if ($row['package_use']) {
             if ($row['package_scale']) {
                 $aResult[$row['product_id']]['quantity'] = $row['package_scale'];
                 foreach ($aResult[$row['product_id']]['price'] as &$s_v_price) {
                     $s_v_price *= $row['package_scale'];
                 }
             }
         }
         $tmp = $aResult[$row['product_id']]['spec_info'];
         $aResult[$row['product_id']]['new_name'] = $row['name'] . ($tmp ? ' (' . $tmp . ')' : '');
     }
     //商品不存在时购物车里也同时删除
     if (!empty($arrDelGoods)) {
         foreach ($aResult as $key => &$val) {
             if (in_array($val['goods_id'], $arrDelGoods)) {
                 unset($aResult[$key]);
             }
         }
     }
     //商品不存在时购物车里也同时删除
     return $aResult;
 }
示例#24
0
 function _get_products($aProductId)
 {
     if (empty($aProductId)) {
         return array();
     }
     ///////////////// 货品信息 ///////////////////////
     $sSql = "SELECT\n                     p.product_id,p.goods_id,p.bn,g.score as gain_score,p.cost,p.name, p.store, p.marketable, g.params, g.package_scale, g.package_unit, g.package_use, p.freez, \n                     g.goods_type, g.nostore_sell, g.min_buy,g.type_id,g.image_default_id,p.spec_info,p.spec_desc,p.price,p.weight,\n                     t.setting, t.floatstore\n                 FROM  sdb_b2c_products AS p\n                 LEFT JOIN  sdb_b2c_goods AS g    ON p.goods_id = g.goods_id\n                 LEFT JOIN sdb_b2c_goods_type AS t ON g.type_id  = t.type_id\n                 WHERE product_id IN (" . implode(',', $aProductId) . ")";
     $aProduct = $this->oCartObjects->db->select($sSql);
     ////////// 设置了的会员价 //////////////////////////
     $sSql = "SELECT p.product_id,p.price\n                FROM sdb_b2c_goods_lv_price AS p\n                LEFT JOIN sdb_b2c_member_lv AS lv ON p.level_id = lv.member_lv_id\n                WHERE p.level_id=" . intval($this->arr_member_info['member_lv']) . " AND p.product_id IN (" . implode(',', $aProductId) . ")";
     $aPrice = $this->oCartObjects->db->select($sSql);
     $tmp = array();
     foreach ($aPrice as $val) {
         $tmp[$val['product_id']] = $val;
     }
     $aPrice = $tmp;
     $tmp = null;
     $aPrice = empty($aPrice) ? array() : utils::array_change_key($aPrice, 'product_id');
     //////////// 获取会员折扣 //////////////////////////
     //empty($this->arr_member_info)
     if (empty($this->arr_member_info)) {
         // 非登陆用户
         $discout = 1;
     } else {
         // 登陆用户
         $discout = $this->discout;
     }
     //////////// 整理数据 /////////////////////////////
     $aResult = array();
     foreach ($aProduct as $row) {
         //$products_store[$row['product_id']]['store'] = $row['store'];
         if ($row['marketable'] == 'false') {
             //商品下架购物车中消失处理!
             unset($row);
             continue;
         }
         //商品不存在时购物车里也同时删除
         $key = array_search($row['product_id'], $aProductId);
         if ($key === false) {
             $arrDelGoods[] = $aProductId[$key];
         }
         //商品不存在时购物车里也同时删除
         $aResult[$row['product_id']] = array('bn' => $row['bn'], 'price' => array('price' => $row['price'], 'cost' => $row['cost'], 'member_lv_price' => empty($aPrice[$row['product_id']]) ? $row['price'] * $discout : $aPrice[$row['product_id']]['price'], 'buy_price' => empty($aPrice[$row['product_id']]) ? $row['price'] * $discout : $aPrice[$row['product_id']]['price']), 'product_id' => $row['product_id'], 'goods_id' => $row['goods_id'], 'goods_type' => $row['goods_type'], 'name' => $row['name'], 'consume_score' => 0, 'gain_score' => intval($row['gain_score']), 'type_setting' => is_array($row['setting']) ? $row['setting'] : @unserialize($row['setting']), 'type_id' => $row['type_id'], 'min_buy' => $row['min_buy'], 'spec_info' => $row['spec_info'], 'spec_desc' => is_array($row['spec_desc']) ? $row['spec_desc'] : @unserialize($row['spec_desc']), 'weight' => $row['weight'], 'quantity' => 1, 'params' => is_array($row['params']) ? $row['params'] : @unserialize($row['params']), 'floatstore' => $row['floatstore'], 'store' => $row['nostore_sell'] ? 99999999999 : (empty($row['store']) ? $row['store'] === 0 ? 0 : 99999999999 : $row['store'] - $row['freez']), 'package_scale' => $row['package_scale'], 'package_unit' => $row['package_unit'], 'package_use' => $row['package_use'], 'default_image' => array('thumbnail' => $row['image_default_id']));
         if ($row['package_use']) {
             if ($row['package_scale']) {
                 $aResult[$row['product_id']]['quantity'] = $row['package_scale'];
                 foreach ($aResult[$row['product_id']]['price'] as &$s_v_price) {
                     $s_v_price *= $row['package_scale'];
                 }
             }
         }
         $tmp = $aResult[$row['product_id']]['spec_info'];
         $aResult[$row['product_id']]['new_name'] = $row['name'] . ($tmp ? ' (' . $tmp . ')' : '');
     }
     //商品不存在时购物车里也同时删除
     if (!empty($arrDelGoods)) {
         foreach ($aResult as $key => &$val) {
             if (in_array($val['goods_id'], $arrDelGoods)) {
                 unset($aResult[$key]);
             }
         }
     }
     //商品不存在时购物车里也同时删除
     return $aResult;
 }
示例#25
0
文件: view.php 项目: 453111208/bbc
 public function modifyRowsWithRelatedKey($columnName, $type, &$colList)
 {
     list(, $relatedModelName, $foreignKey) = explode(':', $type);
     list($relatedModelName, $appId) = explode('@', $relatedModelName);
     $appId = $appId ?: $this->object->app->app_id;
     $model = $this->object;
     $relatedModel = app::get($appId)->model($relatedModelName);
     $foreignKey = $foreignKey ?: $relatedModel->textColumn;
     // 这个看似多余的步骤是为了阻断$colList数组的引用传染.
     foreach ($colList as $k => $v) {
         $copyColList[$k] = $v;
     }
     $relatedRows = $relatedModel->getList($relatedModel->idColumn . ',' . $foreignKey, [$relatedModel->idColumn => array_unique($copyColList)]);
     $relatedRows = utils::array_change_key($relatedRows, $relatedModel->idColumn);
     foreach ($colList as $k => $v) {
         $colList[$k] = $relatedRows[$v][$foreignKey];
     }
 }
示例#26
0
文件: stage.php 项目: noikiy/snk
 public function check($params)
 {
     $member_id = $params['member_id'];
     $addr_id = $params['addr_id'];
     $dlytype_id = $params['dlytype_id'];
     $payapp_id = $params['payapp_id'];
     $cart_result = $params['cart_result'];
     //支付方式过滤
     $payapp_filter = array('status' => 'true', 'platform_allow' => array('pc'));
     if ($params['payapp_filter']) {
         $payapp_filter = array_merge($payapp_filter, $params['payapp_filter']);
     }
     $_return = array();
     $mdl_maddr = app::get('b2c')->model('member_addrs');
     $mdl_dltype = app::get('b2c')->model('dlytype');
     $mdl_payapps = app::get('ectools')->model('payment_applications');
     if ($member_addrs = $mdl_maddr->getList('*', array('member_id' => $member_id), 0, -1, '`is_default` ASC,updatetime DESC,`addr_id`')) {
         $def_addr = $member_addrs[0];
         //会员默认收货地址
         $member_addrs = utils::array_change_key($member_addrs, 'addr_id');
         $last_checkout = $this->get_default($member_id);
         //会员最后一次购物时选择的配送和支付方式
         if ($addr_id) {
             $member_addrs[$addr_id]['selected'] = 'true';
             $area = $member_addrs[$addr_id]['area'];
         } else {
             $area = $def_addr['area'];
             $member_addrs[$def_addr['addr_id']]['selected'] = 'true';
         }
         $area_id = array_pop(explode(':', $area));
         $_return['member_addrs'] = $member_addrs;
     }
     //根据地区获得送货方式
     $dlytypes = $mdl_dltype->getAvailable($area_id);
     $dlytypes = utils::array_change_key($dlytypes, 'dt_id');
     if ($dlytype_id = $dlytype_id ? $dlytype_id : $last_checkout['dlytype_id']) {
         if ($dlytypes[$dlytype_id]) {
             $dlytypes[$dlytype_id]['selected'] = 'true';
             if ($dlytypes[$dlytype_id]['has_cod'] == 'true') {
                 $is_cod = true;
                 //为了货到付款锁定在线支付
             }
         } else {
             $dlytypes[key($dlytypes)]['selected'] = 'true';
         }
     }
     if ($is_cod) {
         $payapp_filter['app_id'] = 'cod';
     }
     $paymentapps = $mdl_payapps->getList('*', $payapp_filter);
     $paymentapps = utils::array_change_key($paymentapps, 'app_id');
     if ($payapp_id = $payapp_id ? $payapp_id : $last_checkout['pay_app']) {
         if ($paymentapps[$payapp_id]) {
             $paymentapps[$payapp_id]['selected'] = 'true';
         } else {
             $paymentapps[key($paymentapps)]['selected'] = 'true';
         }
     }
     $_return['dlytypes'] = $dlytypes;
     $_return['paymentapps'] = $paymentapps;
     if (!$params['ignore_return_cart_result']) {
         $_return['cart_result'] = $cart_result;
     }
     $_return['cart_md5'] = utils::array_md5($cart_result);
     $order_sdf_tmp = array('consignee' => array('area' => $area), 'dlytype_id' => $dlytype_id);
     $_return['total'] = vmc::singleton('b2c_order_total')->detail($order_sdf_tmp, $cart_result);
     //总价
     return $_return;
 }
示例#27
0
文件: filter.php 项目: syjzwjj/quyeba
 /**
  * 生成options选择项
  *
  * @param array | string $aData
  * @return  arraty | null
  */
 public function _makeOptions($aData)
 {
     if (is_array($aData)) {
         return $aData;
     }
     if (is_string($aData)) {
         $aData = explode(':', $aData);
         switch ($aData[0]) {
             case 'table':
                 $aResult = kernel::database()->select($aData[1]);
                 return utils::array_change_key($aResult, 'id');
                 break;
             default:
                 break;
         }
     }
     return null;
 }
示例#28
0
文件: goods.php 项目: noikiy/snk
 public function pre_recycle($rows)
 {
     $this->recycle_msg = '删除成功!';
     $gids = array_keys(utils::array_change_key($rows, 'goods_id'));
     $order_items = app::get('b2c')->model('order_items')->getList('*', array('goods_id' => $gids));
     if ($order_items) {
         $order_id = array_keys(utils::array_change_key($order_items, 'order_id'));
         if (app::get('b2c')->model('orders')->count(array('status' => 'active', 'order_id' => $order_id))) {
             $this->recycle_msg = '活动订单:' . implode(',', $order_id) . '包含要删除的商品!请先完成或作废订单.';
             return false;
         }
     }
     return true;
 }
示例#29
0
文件: member.php 项目: noikiy/snk
 /**
  * 我的优惠券.
  */
 public function coupon($action = 'list')
 {
     $member_id = $this->member['member_id'];
     $this->pagedata['available_coupons'] = vmc::singleton('b2c_coupon_stage')->get_member_couponlist($member_id, $mycoupons);
     $this->pagedata['mycoupons'] = $mycoupons;
     $memc_code_arr = array();
     foreach ($mycoupons as $coupon) {
         $memc_code_arr[] = $coupon['memc_code'];
     }
     $couponlogs = $this->app->model('member_couponlog')->getList('*', array('member_id' => $member_id, 'memc_code' => $memc_code_arr));
     $this->pagedata['couponlogs'] = utils::array_change_key($couponlogs, 'memc_code');
     $this->output();
 }
示例#30
0
 public function detail($order_id, $showlogistics = false)
 {
     $mdl_order = $this->app->model('orders');
     $bills = app::get('ectools')->model('bills');
     $mdl_order_log = $this->app->model('order_log');
     $mdl_delivery = $this->app->model('delivery');
     $order = $mdl_order->dump($order_id, '*', array('items' => array('*'), 'promotions' => array('*'), ':dlytype' => array('*')));
     if ($order['member_id'] != $this->app->member_id) {
         $this->splash('error', '非法操作!');
     }
     foreach ($mdl_order_log->getList('behavior,log_time', array('order_id' => $order['order_id'], 'result' => 'success')) as $log) {
         $order['process'][$log['behavior']] = $log['log_time'];
     }
     $this->pagedata['order'] = $order;
     $this->pagedata['payapp'] = app::get('ectools')->model('payment_applications')->dump($order['pay_app']);
     if ($order['ship_status'] != '0' && $order['need_shipping'] == 'Y') {
         $delivery_list = $mdl_delivery->getList('delivery_id', array('member_id' => $this->app->member_id, 'order_id' => $order['order_id'], 'logistics_no|notin' => array('', null, 'null')));
         $this->pagedata['delivery_id'] = array_keys(utils::array_change_key($delivery_list, 'delivery_id'));
     }
     foreach ($order['promotions'] as $pitem) {
         switch ($pitem['pmt_type']) {
             case 'goods':
                 $this->pagedata['goods_pmt'][$pitem['product_id']][] = $pitem;
                 break;
             case 'order':
                 $this->pagedata['order_pmt'][] = $pitem;
                 break;
         }
     }
     $this->set_tmpl('order');
     $this->page('mobile/order/detail.html');
 }