示例#1
0
 /**
  * 根据商品编号查询商品评价信息 
  */
 public function getEvaluateGoodsInfoByGoodsID($goods_id)
 {
     $prefix = 'evaluation_goods_info';
     $info = rcache($goods_id, $prefix);
     if (empty($info)) {
         $info = array();
         $good = $this->field('count(*) as count')->where(array('geval_goodsid' => $goods_id, 'geval_scores' => array('in', '4,5')))->find();
         $info['good'] = $good['count'];
         $normal = $this->field('count(*) as count')->where(array('geval_goodsid' => $goods_id, 'geval_scores' => array('in', '2,3')))->find();
         $info['normal'] = $normal['count'];
         $bad = $this->field('count(*) as count')->where(array('geval_goodsid' => $goods_id, 'geval_scores' => array('in', '1')))->find();
         $info['bad'] = $bad['count'];
         $info['all'] = $info['good'] + $info['normal'] + $info['bad'];
         if (intval($info['all']) > 0) {
             $info['good_percent'] = intval($info['good'] / $info['all'] * 100);
             $info['normal_percent'] = intval($info['normal'] / $info['all'] * 100);
             $info['bad_percent'] = intval($info['bad'] / $info['all'] * 100);
             $info['good_star'] = ceil($info['good'] / $info['all'] * 5);
         } else {
             $info['good_percent'] = 100;
             $info['normal_percent'] = 0;
             $info['bad_percent'] = 0;
             $info['good_star'] = 5;
         }
         //更新商品表好评星级和评论数
         $model_goods = Model('goods');
         $update = array();
         $update['evaluation_good_star'] = $info['good_star'];
         $update['evaluation_count'] = $info['all'];
         $model_goods->editGoods($update, array('goods_id' => $goods_id));
         wcache($goods_id, $info, $prefix);
     }
     return $info;
 }
示例#2
0
 /**
  * GET 圈子详情
  */
 public function circleInfoOp()
 {
     $c_id = $_GET['circle_id'];
     if ($c_id != '' && $c_id > 0) {
         $circle_info = Model()->table('circle')->find($c_id);
         if (empty($circle_info)) {
             output_error("圈子不存在");
             die;
         }
         //圈主和管理员信息
         $prefix = 'circle_managelist';
         $manager_list = rcache($this->c_id, $prefix);
         if (empty($manager_list)) {
             $manager_list = Model()->table('circle_member')->where(array('circle_id' => $this->c_id, 'is_identity' => array('in', array(1, 2))))->page($this->page)->select();
             $manager_list = array_under_reset($manager_list, 'is_identity', 2);
             $manager_list[2] = array_under_reset($manager_list[2], 'member_id', 1);
             wcache($this->c_id, $manager_list, $prefix);
         }
         $circle_info['circle_masteravatar'] = getMemberAvatarForID($circle_info['circle_masterid']);
         output_data(array('circle_info' => $circle_info, 'creator' => $manager_list[1][0], 'manager_list' => $manager_list[2]));
     } else {
         output_error("圈子id错误");
         die;
     }
 }
示例#3
0
 /**
  * 取得会员详细信息(优先查询缓存)
  * 如果未找到,则缓存所有字段
  * @param int $member_id
  * @param string $field 需要取得的缓存键值, 例如:'*','member_name,member_sex'
  * @return array
  */
 public function getMemberInfoByID($member_id, $fields = '*') {
     $member_info = rcache($member_id, 'member', $fields);
     if (empty($member_info)) {
         $member_info = $this->getMemberInfo(array('member_id'=>$member_id),'*',true);
         wcache($member_id, $member_info, 'member');
     }
     return $member_info;
 }
示例#4
0
	/**
	 * 礼品购物车礼品数量
	 *
	 * @param array $member_id 会员ID
	 */
	public function countPointCart($member_id) {
	    $info = rcache($member_id, 'm_pointcart', 'pointcart_count');
	    if (empty($info['pointcart_count']) && $info['pointcart_count'] !== 0) {
	        $pointcart_count = $this->table('points_cart')->where(array('pmember_id'=>$member_id))->count();
	        $pointcart_count = intval($pointcart_count);
	        wcache($member_id, array('pointcart_count' => $pointcart_count), 'm_pointcart');
	    } else {
	        $pointcart_count = intval($info['pointcart_count']);
	    }
	    return $pointcart_count;
	}
示例#5
0
 /**
  * 根据分类编号获取分类评分数据
  */
 public function getEvaluateStoreInfoByScID($sc_id)
 {
     $prefix = 'sc_evaluate_store_info';
     $info = rcache($sc_id, $prefix);
     if (empty($info)) {
         $model_store = Model('store');
         $store_id_string = $model_store->getStoreIDString(array('sc_id' => $sc_id));
         $info = $this->_getEvaluateStore(array('seval_storeid' => array('in', $store_id_string)));
         wcache($sc_id, $info, $prefix);
     }
     return $info;
 }
示例#6
0
	/**
	 * 取得当前有效代金券数量
	 * @param int $member_id
	 */
	public function getCurrentAvailableVoucherCount($member_id) {
	    $info = rcache($member_id, 'm_voucher', 'voucher_count');
	    if (empty($info['voucher_count']) && $info['voucher_count'] !== 0) {
	        $condition['voucher_owner_id'] = $member_id;
	        $condition['voucher_end_date'] = array('gt',TIMESTAMP);
	        $condition['voucher_state'] = 1;
	        $voucher_count = $this->table('voucher')->where($condition)->count();
	        $voucher_count = intval($voucher_count);
			wcache($member_id, array('voucher_count' => $voucher_count), 'm_voucher');
	    } else {
	        $voucher_count = intval($info['voucher_count']);
	    }
	    return $voucher_count;
	}
示例#7
0
 /**
  * 获取商品收藏排行
  *
  * @param int $store_id 店铺编号
  * @param int $limit 数量
  * @return array	商品信息
  */
 public function getHotCollectList($store_id, $limit = 5)
 {
     $prefix = 'store_collect_sales_list_' . $limit;
     $hot_collect_list = rcache($store_id, $prefix);
     if (empty($hot_collect_list)) {
         $model_goods = Model('goods');
         $hot_collect_list = $model_goods->getGoodsOnlineList(array('store_id' => $store_id), '*', 0, 'goods_collect desc', $limit);
         wcache($store_id, $hot_collect_list, $prefix);
     }
     return $hot_collect_list;
 }
 /**
  * 读取商品优惠套装缓存
  * @param int $goods_id
  * @return array
  */
 private function _rGoodsBundlingCache($goods_id)
 {
     return rcache($goods_id, 'goods_bundling');
 }
示例#9
0
 /**
  * 根据分类编号获取分类评分数据
  */
 public function getEvaluateStoreInfoByScID($sc_id)
 {
     $prefix = 'sc_evaluate_store_info';
     $info = rcache($sc_id, $prefix);
     if (empty($info)) {
         $model_store = Model('store');
         $store_id_string = $model_store->getStoreIDString(array('sc_id' => $sc_id));
         $info = $this->_getEvaluateStore(array('seval_storeid' => array('in', $store_id_string)));
         $cache = array();
         $cache['evaluate_store_info'] = serialize($info);
         wcache($sc_id, $cache, $prefix, 60 * 24);
     } else {
         $info = unserialize($info['evaluate_store_info']);
     }
     return $info;
 }
 /**
  * 读取店铺关联板式缓存缓存
  * @param int $plate_id
  * @param string $fields
  * @return array
  */
 private function _rStorePlateCache($plate_id, $fields)
 {
     return rcache($plate_id, 'store_plate', $fields);
 }
示例#11
0
 /**
  * 读取商品公共缓存
  * @param int $goods_id
  * @return array
  */
 private function _rGoodsGiftCache($goods_id)
 {
     return rcache($goods_id, 'goods_gift');
 }
示例#12
0
 /**
  * 用户详细信息
  */
 protected function get_member_detail_info($member_info)
 {
     //生成缓存的键值
     $member_id = $member_info['member_id'];
     if ($member_id <= 0) {
         return null;
     }
     //写入缓存的数据
     $cachekey_arr = array('member_name', 'store_id', 'member_avatar', 'member_qq', 'member_email', 'member_msn', 'member_ww', 'member_points', 'available_predeposit', 'member_snsvisitnum', 'credit_arr', 'fan_count', 'attention_count');
     //先查找$member_id缓存
     if ($_cache = rcache($member_id, 'sns_member')) {
         foreach ($_cache as $k => $v) {
             $member_info[$k] = $v;
         }
     } else {
         $model = Model();
         //粉丝数
         $fan_count = $model->table('sns_friend')->where(array('friend_tomid' => $member_id))->count();
         $member_info['fan_count'] = $fan_count;
         //关注数
         $attention_count = $model->table('sns_friend')->where(array('friend_frommid' => $member_id))->count();
         $member_info['attention_count'] = $attention_count;
         //兴趣标签
         $mtag_list = $model->table('sns_membertag,sns_mtagmember')->field('mtag_name')->on('sns_membertag.mtag_id = sns_mtagmember.mtag_id')->join('inner')->where(array('sns_mtagmember.member_id' => $member_id))->select();
         $tagname_array = array();
         if (!empty($mtag_list)) {
             foreach ($mtag_list as $val) {
                 $tagname_array[] = $val['mtag_name'];
             }
         }
         $member_info['tagname'] = $tagname_array;
         wcache($member_id, $member_info, 'sns_member');
     }
     return $member_info;
 }
示例#13
0
 /**
  * 读取店铺商品分类缓存
  * @param int $store_id
  * @param string $fields
  * @return array
  */
 private function _rStoreGoodsClassCache($store_id)
 {
     return rcache($store_id, 'store_goods_class');
 }
示例#14
0
 /**
  * 单个商品信息页
  */
 public function indexOp()
 {
     $goods_id = intval($_GET['goods_id']);
     // 商品详细信息
     $model_goods = Model('goods');
     $goods_detail = $model_goods->getGoodsDetail($goods_id);
     $goods_info = $goods_detail['goods_info'];
     if (empty($goods_info)) {
         showMessage(L('goods_index_no_goods'), '', 'html', 'error');
     }
     // by 33hao.com
     $rs = $model_goods->getGoodsList(array('goods_commonid' => $goods_info['goods_commonid']));
     $count = 0;
     foreach ($rs as $v) {
         $count += $v['goods_salenum'];
     }
     $goods_info['goods_salenum'] = $count;
     //  添加 end
     $this->getStoreInfo($goods_info['store_id']);
     Tpl::output('spec_list', $goods_detail['spec_list']);
     Tpl::output('spec_image', $goods_detail['spec_image']);
     Tpl::output('goods_image', $goods_detail['goods_image']);
     Tpl::output('mansong_info', $goods_detail['mansong_info']);
     Tpl::output('gift_array', $goods_detail['gift_array']);
     // 生成缓存的键值
     $hash_key = $goods_info['goods_id'];
     $_cache = rcache($hash_key, 'product');
     if (empty($_cache)) {
         // 查询SNS中该商品的信息
         $snsgoodsinfo = Model('sns_goods')->getSNSGoodsInfo(array('snsgoods_goodsid' => $goods_info['goods_id']), 'snsgoods_likenum,snsgoods_sharenum');
         $data = array();
         $data['likenum'] = $snsgoodsinfo['snsgoods_likenum'];
         $data['sharenum'] = $snsgoodsinfo['snsgoods_sharenum'];
         // 缓存商品信息
         wcache($hash_key, $data, 'product');
     }
     $goods_info = array_merge($goods_info, $_cache);
     $inform_switch = true;
     // 检测商品是否下架,检查是否为店主本人
     if ($goods_info['goods_state'] != 1 || $goods_info['goods_verify'] != 1 || $goods_info['store_id'] == $_SESSION['store_id']) {
         $inform_switch = false;
     }
     Tpl::output('inform_switch', $inform_switch);
     // 如果使用运费模板
     if ($goods_info['transport_id'] > 0) {
         // 取得三种运送方式默认运费
         $model_transport = Model('transport');
         $transport = $model_transport->getExtendList(array('transport_id' => $goods_info['transport_id'], 'is_default' => 1));
         if (!empty($transport) && is_array($transport)) {
             foreach ($transport as $v) {
                 $goods_info[$v['type'] . "_price"] = $v['sprice'];
             }
         }
     }
     Tpl::output('goods', $goods_info);
     //v3-b11 抢购商品是否开始
     $IsHaveBuy = 0;
     if (!empty($_SESSION['member_id'])) {
         $buyer_id = $_SESSION['member_id'];
         $promotion_type = $goods_info["promotion_type"];
         if ($promotion_type == 'groupbuy') {
             //检测是否限购数量
             $upper_limit = $goods_info["upper_limit"];
             if ($upper_limit > 0) {
                 //查询些会员的订单中,是否已买过了
                 $model_order = Model('order');
                 //取商品列表
                 $order_goods_list = $model_order->getOrderGoodsList(array('goods_id' => $goods_id, 'buyer_id' => $buyer_id, 'goods_type' => 2));
                 if ($order_goods_list) {
                     //取得上次购买的活动编号(防一个商品参加多次团购活动的问题)
                     $promotions_id = $order_goods_list[0]["promotions_id"];
                     //用此编号取数据,检测是否这次活动的订单商品。
                     $model_groupbuy = Model('groupbuy');
                     $groupbuy_info = $model_groupbuy->getGroupbuyInfo(array('groupbuy_id' => $promotions_id));
                     if ($groupbuy_info) {
                         $IsHaveBuy = 1;
                     } else {
                         $IsHaveBuy = 0;
                     }
                 }
             }
         }
     }
     Tpl::output('IsHaveBuy', $IsHaveBuy);
     //end
     $model_plate = Model('store_plate');
     // 顶部关联版式
     if ($goods_info['plateid_top'] > 0) {
         $plate_top = $model_plate->getStorePlateInfoByID($goods_info['plateid_top']);
         Tpl::output('plate_top', $plate_top);
     }
     // 底部关联版式
     if ($goods_info['plateid_bottom'] > 0) {
         $plate_bottom = $model_plate->getStorePlateInfoByID($goods_info['plateid_bottom']);
         Tpl::output('plate_bottom', $plate_bottom);
     }
     Tpl::output('store_id', $goods_info['store_id']);
     // 输出一级地区
     $area_list = Model('area')->getTopLevelAreas();
     if (strtoupper(CHARSET) == 'GBK') {
         $area_list = Language::getGBK($area_list);
     }
     Tpl::output('area_list', $area_list);
     //优先得到推荐商品
     $goods_commend_list = $model_goods->getGoodsOnlineList(array('store_id' => $goods_info['store_id'], 'goods_commend' => 1), 'goods_id,goods_name,goods_jingle,goods_image,store_id,goods_price', 0, 'rand()', 5, 'goods_commonid');
     Tpl::output('goods_commend', $goods_commend_list);
     // 当前位置导航
     $nav_link_list = Model('goods_class')->getGoodsClassNav($goods_info['gc_id'], 0);
     $nav_link_list[] = array('title' => $goods_info['goods_name']);
     Tpl::output('nav_link_list', $nav_link_list);
     //评价信息
     $goods_evaluate_info = Model('evaluate_goods')->getEvaluateGoodsInfoByGoodsID($goods_id);
     Tpl::output('goods_evaluate_info', $goods_evaluate_info);
     $seo_param = array();
     $seo_param['name'] = $goods_info['goods_name'];
     $seo_param['key'] = $goods_info['goods_keywords'];
     $seo_param['description'] = $goods_info['goods_description'];
     Model('seo')->type('product')->param($seo_param)->show();
     Tpl::showpage('goods');
 }
示例#15
0
 /**
  * 店铺列表
  */
 public function indexOp()
 {
     /**
      * 读取语言包
      */
     Language::read('home_store_class_index');
     $lang = Language::getLangContent();
     //店铺类目快速搜索
     $class_list = ($h = F('store_class')) ? $h : rcache('store_class', true, 'file');
     if (!key_exists($_GET['cate_id'], $class_list)) {
         $_GET['cate_id'] = 0;
     }
     Tpl::output('class_list', $class_list);
     //店铺搜索
     $model = Model();
     $condition = array();
     $keyword = trim($_GET['keyword']);
     if (C('fullindexer.open') && !empty($keyword)) {
         //全文搜索
         $condition = $this->full_search($keyword);
     } else {
         if ($keyword != '') {
             $condition['store_name|store_zy'] = array('like', '%' . $keyword . '%');
         }
         if ($_GET['user_name'] != '') {
             $condition['member_name'] = trim($_GET['user_name']);
         }
     }
     if (!empty($_GET['area_id'])) {
         $condition['area_id'] = intval($_GET['area_id']);
     }
     if ($_GET['cate_id'] > 0) {
         $child = array_merge((array) $class_list[$_GET['cate_id']]['child'], array($_GET['cate_id']));
         $condition['sc_id'] = array('in', $child);
     }
     $condition['store_state'] = 1;
     if (!in_array($_GET['order'], array('desc', 'asc'))) {
         unset($_GET['order']);
     }
     if (!in_array($_GET['key'], array('store_sales', 'store_credit'))) {
         unset($_GET['key']);
     }
     $order = 'store_sort asc';
     if (isset($condition['store.store_id'])) {
         $condition['store_id'] = $condition['store.store_id'];
         unset($condition['store.store_id']);
     }
     $model_store = Model('store');
     $store_list = $model_store->where($condition)->order($order)->page(10)->select();
     //获取店铺商品数,推荐商品列表等信息
     $store_list = $model_store->getStoreSearchList($store_list);
     //print_r($store_list);exit();
     //信用度排序
     if ($_GET['key'] == 'store_credit') {
         if ($_GET['order'] == 'desc') {
             $store_list = sortClass::sortArrayDesc($store_list, 'store_credit_average');
         } else {
             $store_list = sortClass::sortArrayAsc($store_list, 'store_credit_average');
         }
     } else {
         if ($_GET['key'] == 'store_sales') {
             //销量排行
             if ($_GET['order'] == 'desc') {
                 $store_list = sortClass::sortArrayDesc($store_list, 'num_sales_jq');
             } else {
                 $store_list = sortClass::sortArrayAsc($store_list, 'num_sales_jq');
             }
         }
     }
     Tpl::output('store_list', $store_list);
     Tpl::output('show_page', $model->showpage(2));
     //当前位置
     if (intval($_GET['cate_id']) > 0) {
         $nav_link[1]['link'] = 'index.php?act=shop_search';
         $nav_link[1]['title'] = $lang['site_search_store'];
         $nav = $class_list[$_GET['cate_id']];
         //如果有父级
         if ($nav['sc_parent_id'] > 0) {
             $tmp = $class_list[$nav['sc_parent_id']];
             //存入父级
             $nav_link[] = array('title' => $tmp['sc_name'], 'link' => "index.php?act=shop_search&cate_id=" . $nav['sc_parent_id']);
         }
         //存入当前级
         $nav_link[] = array('title' => $nav['sc_name']);
     } else {
         $nav_link[1]['link'] = 'index.php';
         $nav_link[1]['title'] = $lang['homepage'];
         $nav_link[2]['title'] = $lang['site_search_store'];
     }
     $purl = $this->getParam();
     Tpl::output('nav_link_list', $nav_link);
     Tpl::output('purl', urlShop($purl['act'], $purl['op'], $purl['param']));
     //SEO
     Model('seo')->type('index')->show();
     Tpl::output('html_title', (empty($_GET['keyword']) ? '' : $_GET['keyword'] . ' - ') . C('site_name') . $lang['nc_common_search']);
     Tpl::showpage('shop_search');
 }
示例#16
0
 /**
  * 获取店铺商品数
  *
  * @param array $store_array 店铺数组
  * @return array $store_array 包含商品数goods_count的店铺数组
  */
 public function getGoodsCountByStoreArray($store_array)
 {
     $store_array_new = array();
     $model = Model();
     $no_cache_store = '';
     foreach ($store_array as $value) {
         $goods_count = rcache($value['store_id'], 'store_goods_count');
         if (!empty($goods_count) && $goods_count !== FALSE) {
             //有缓存的直接赋值
             $value['goods_count'] = $goods_count;
         } else {
             //没有缓存记录store_id,统计从数据库读取
             $no_cache_store .= $value['store_id'] . ',';
             $value['goods_count'] = '0';
         }
         $store_array_new[$value['store_id']] = $value;
     }
     if (!empty($no_cache_store)) {
         //从数据库读取店铺商品数赋值并缓存
         $no_cache_store = rtrim($no_cache_store, ',');
         $condition = array();
         $condition['goods_state'] = '1';
         $condition['store_id'] = array('in', $no_cache_store);
         $goods_count_array = $model->table('goods')->field('store_id,count(*) as goods_count')->where($condition)->group('store_id')->select();
         if (!empty($goods_count_array)) {
             foreach ($goods_count_array as $value) {
                 $store_array_new[$value['store_id']]['goods_count'] = $value['goods_count'];
                 wcache($value['store_id'], $value['goods_count'], 'store_goods_count');
             }
         }
     }
     return $store_array_new;
 }
 /**
  * 浏览过的商品加入浏览历史cache
  *
  * @param mixed $goods_id 商品ID或者商品ID数组
  * @param int $member_id 会员ID(一般传递$_SESSION['member_id'])
  * @param int $store_id 店铺ID(一般传递$_SESSION['store_id'])
  * @param array $goods_info 如果已经获取了商品信息则可传递至函数,避免重复查询
  * @return array
  */
 public function addViewedGoodsToCache($goods_id, $member_id, $store_id = 0, $goods_info = array())
 {
     if (!$goods_id || $member_id <= 0) {
         return array('state' => false, 'msg' => '参数错误');
     }
     $browsetime = time();
     if (!$goods_info) {
         //查询商品详细信息
         $model_goods = Model('goods');
         if (is_array($goods_id)) {
             $goods_infotmp = $model_goods->getGoodsList(array('goods_id' => array('in', $goods_id)), 'goods_id,gc_id,gc_id_1,gc_id_2,gc_id_3,store_id');
             if (!$goods_infotmp) {
                 return array('state' => true);
             }
             foreach ($goods_infotmp as $k => $v) {
                 if ($store_id != $goods_infotmp['store_id']) {
                     //店铺浏览自己的商品不加入浏览历史
                     $goods_infotmp[$v['goods_id']] = $v;
                 }
             }
             if (!$goods_infotmp) {
                 return array('state' => true);
             }
             //对数组按照浏览先后进行排序
             foreach ($goods_id as $v) {
                 if ($goods_infotmp[$v]) {
                     $goods_info[$v] = $goods_infotmp[$v];
                 }
             }
         } else {
             $goods_infotmp = $model_goods->getGoodsInfoByID($goods_id, 'goods_id,gc_id,gc_id_1,gc_id_2,gc_id_3,store_id');
             if (!$goods_infotmp || $store_id == $goods_infotmp['store_id']) {
                 //店铺浏览自己的商品不加入浏览历史
                 return array('state' => true);
             }
             $goods_info[$goods_id] = $goods_infotmp;
         }
     }
     //生成缓存的键值
     $hash_key = $member_id;
     //处理浏览历史cache中商品ID
     $_cache = rcache($hash_key, 'goodsbrowse', 'goodsid');
     $goodsid_arr = $_cache['goodsid'] ? unserialize($_cache['goodsid']) : array();
     if ($goodsid_arr) {
         //如果商品ID已经存在则先删除该ID,然后在数组末尾新增该ID
         $goodsid_arr = array_diff($goodsid_arr, array_keys($goods_info));
         array_push($goodsid_arr, implode(',', array_keys($goods_info)));
     } else {
         $goodsid_arr = array_keys($goods_info);
     }
     $_cache['goodsid'] = serialize($goodsid_arr);
     //处理浏览历史cache中商品详细信息
     foreach ($goods_info as $k => $v) {
         $tmp_arr = array();
         $tmp_arr['goods_id'] = $v['goods_id'];
         $tmp_arr['member_id'] = $member_id;
         $tmp_arr['browsetime'] = $v['browsetime'] ? $v['browsetime'] : $browsetime;
         $tmp_arr['gc_id'] = $v['gc_id'];
         $tmp_arr['gc_id_1'] = $v['gc_id_1'];
         $tmp_arr['gc_id_2'] = $v['gc_id_2'];
         $tmp_arr['gc_id_3'] = $v['gc_id_3'];
         $_cache[$k] = serialize($tmp_arr);
     }
     //缓存商品信息
     wcache($hash_key, $_cache, 'goodsbrowse');
     return array('state' => true);
 }
示例#18
0
文件: control.php 项目: uwitec/xbshop
 /**
  * 最新话题/热门话题/人气回复
  */
 protected function themeTop()
 {
     $prefix = 'circle_themetop';
     $data = rcache('circle', $prefix);
     if (empty($data)) {
         $model = Model();
         // 最新话题
         $data['new_themelist'] = $model->table('circle_theme')->where(array('is_closed' => 0))->order('theme_id desc')->limit(10)->select();
         // 热门话题
         $data['hot_themelist'] = $model->table('circle_theme')->where(array('is_closed' => 0))->order('theme_browsecount desc')->limit(10)->select();
         // 人气回复
         $data['reply_themelist'] = $model->table('circle_theme')->where(array('is_closed' => 0))->order('theme_commentcount desc')->limit(10)->select();
     }
     Tpl::output('new_themelist', $data['new_themelist']);
     Tpl::output('hot_themelist', $data['hot_themelist']);
     Tpl::output('reply_themelist', $data['reply_themelist']);
 }
示例#19
0
 public function indexOp()
 {
     rcache('circle_level', true);
     showMessage(L('nc_common_op_succ'), 'index.php?act=circle_setting');
 }
 /**
  * 读取商品限时折扣缓存
  * @param int $goods_id
  * @return array/bool
  */
 private function _rGoodsXianshiCache($goods_id)
 {
     return rcache($goods_id, 'goods_xianshi');
 }
示例#21
0
	/**
	 * 喜欢商品(访客登录后操作)
	 */
	public function editlikeOp(){
		$obj_validate = new Validate();
		$validate_arr[] = array("input"=>$_GET["id"], "require"=>"true","message"=>Language::get('sns_likegoods_choose'));
		$obj_validate -> validateparam = $validate_arr;
		$error = $obj_validate->validate();
		if ($error != ''){
			showDialog($error,'','error');
		}
		//查询会员信息
		$member_model = Model('member');
		$member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
		if (empty($member_info)){
			showDialog(Language::get('sns_member_error'),'','error');
		}
		//查询商品信息
		$goods_model = Model('goods');
		$goods_info = $goods_model->getGoodsOnlineInfoForShare(intval($_GET["id"]));
		if (empty($goods_info)){
			showDialog(Language::get('sns_goods_error'),'','error');
		}
		$sharegoods_model = Model('sns_sharegoods');
		//判断该商品是否已经存在分享记录
		$sharegoods_info = $sharegoods_model->getSharegoodsInfo(array('share_memberid'=>"{$_SESSION['member_id']}",'share_goodsid'=>"{$goods_info['goods_id']}"));
		if (!empty($sharegoods_info) && $sharegoods_info['share_islike'] == 1){
			showDialog(Language::get('sns_likegoods_exist'),'','error');
		}
		if (empty($sharegoods_info)){
			//添加分享商品信息
			$insert_arr = array();
			$insert_arr['share_goodsid'] = $goods_info['goods_id'];
			$insert_arr['share_memberid'] = $_SESSION['member_id'];
			$insert_arr['share_membername'] = $_SESSION['member_name'];
			$insert_arr['share_content'] = '';
			$insert_arr['share_likeaddtime'] = time();
			$insert_arr['share_privacy'] = 0;
			$insert_arr['share_commentcount'] = 0;
			$insert_arr['share_islike'] = 1;
			$result = $sharegoods_model->sharegoodsAdd($insert_arr);
			unset($insert_arr);
		}else {
			//更新分享商品信息
			$update_arr = array();
			$update_arr['share_likeaddtime'] = time();
			$update_arr['share_islike'] = 1;
			$result = $sharegoods_model->editSharegoods($update_arr,array('share_id'=>"{$sharegoods_info['share_id']}"));
			unset($update_arr);
		}
		if ($result){
			//商品缓存数据更新
			//生成缓存的键值
			$hash_key = $goods_info['goods_id'];
			//先查找$hash_key缓存
			if ($_cache = rcache($hash_key,'product')){
				$_cache['likenum'] = intval($_cache['likenum'])+1;
				//缓存商品信息
				wcache($hash_key,$_cache,'product');
			}
			//更新SNS商品表信息
			$snsgoods_model = Model('sns_goods');
			$snsgoods_info = $snsgoods_model->getGoodsInfo(array('snsgoods_goodsid'=>"{$goods_info['goods_id']}"));
			if (empty($snsgoods_info)){
				//添加SNS商品
				$insert_arr = array();
				$insert_arr['snsgoods_goodsid'] = $goods_info['goods_id'];
				$insert_arr['snsgoods_goodsname'] = $goods_info['goods_name'];
				$insert_arr['snsgoods_goodsimage'] = $goods_info['goods_image'];
				$insert_arr['snsgoods_goodsprice'] = $goods_info['goods_price'];
				$insert_arr['snsgoods_storeid'] = $goods_info['store_id'];
				$insert_arr['snsgoods_storename'] = $goods_info['store_name'];
				$insert_arr['snsgoods_addtime'] = time();
				$insert_arr['snsgoods_likenum'] = 1;
				$insert_arr['snsgoods_likemember'] = "{$_SESSION['member_id']}";
				$insert_arr['snsgoods_sharenum'] = 0;
				$snsgoods_model->goodsAdd($insert_arr);
				unset($insert_arr);
			}else {
				//更新SNS商品
				$update_arr = array();
				$update_arr['snsgoods_likenum'] = intval($snsgoods_info['snsgoods_likenum'])+1;
				$likemember_arr = array();
				if (!empty($snsgoods_info['snsgoods_likemember'])){
					$likemember_arr = explode(',',$snsgoods_info['snsgoods_likemember']);
				}
				$likemember_arr[] = $_SESSION['member_id'];
				$update_arr['snsgoods_likemember'] = implode(',',$likemember_arr);
				$snsgoods_model->editGoods($update_arr,array('snsgoods_goodsid'=>"{$goods_info['goods_id']}"));
			}
			//添加喜欢动态
			$tracelog_model = Model('sns_tracelog');
			$insert_arr = array();
			$insert_arr['trace_originalid'] = '0';
			$insert_arr['trace_originalmemberid'] = '0';
			$insert_arr['trace_memberid'] = $_SESSION['member_id'];
			$insert_arr['trace_membername'] = $_SESSION['member_name'];
			$insert_arr['trace_memberavatar'] = $member_info['member_avatar'];
			$insert_arr['trace_title'] = Language::get('sns_likegoods_title');
			$content_str = '';
			$content_str .= "<div class=\"fd-media\">
				<div class=\"goodsimg\"><a target=\"_blank\" href=\"".urlShop('goods', 'index', array('goods_id'=>$goods_info['goods_id']))."\"><img src=\"".thumb($goods_info, 240)."\" onload=\"javascript:DrawImage(this,120,120);\" alt=\"{$goods_info['goods_name']}\"></a></div>
				<div class=\"goodsinfo\">
					<dl>
						<dt><a target=\"_blank\" href=\"".urlShop('goods', 'index', array('goods_id'=>$goods_info['goods_id']))."\">".$goods_info['goods_name']."</a></dt>
						<dd>".Language::get('sns_sharegoods_price').Language::get('nc_colon').Language::get('currency').$goods_info['goods_price']."</dd>
						<dd>".Language::get('sns_sharegoods_freight').Language::get('nc_colon').Language::get('currency').$goods_info['goods_freight']."</dd>
                  		<dd nctype=\"collectbtn_{$goods_info['goods_id']}\"><a href=\"javascript:void(0);\" onclick=\"javascript:collect_goods(\'{$goods_info['goods_id']}\',\'succ\',\'collectbtn_{$goods_info['goods_id']}\');\">".Language::get('sns_sharegoods_collect')."</a>&nbsp;&nbsp;(".$goods_info['goods_collect'].Language::get('sns_collecttip').")</dd>
                  	</dl>
                  </div>
             </div>";
			$insert_arr['trace_content'] = $content_str;
			$insert_arr['trace_addtime'] = time();
			$insert_arr['trace_state'] = '0';
			$insert_arr['trace_privacy'] = 0;
			$insert_arr['trace_commentcount'] = 0;
			$insert_arr['trace_copycount'] = 0;
			$result = $tracelog_model->tracelogAdd($insert_arr);
			$js = "var obj = $(\"#likestat_{$goods_info['goods_id']}\"); $(\"#likestat_{$goods_info['goods_id']}\").find('i').addClass('noaction');$(obj).find('a').addClass('noaction'); var countobj=$('[nc_type=\'likecount_{$goods_info['goods_id']}\']');$(countobj).html(parseInt($(countobj).text())+1);";
			showDialog(Language::get('nc_common_op_succ'),'','succ',$js);
		}else {
			showDialog(Language::get('nc_common_op_fail'),'','error');
		}
	}
示例#22
0
 /**
  * 读取商品满即送缓存
  * @param int $store_id
  * @return array
  */
 private function _rGoodsMansongCache($store_id)
 {
     return rcache($store_id, 'goods_mansong');
 }
示例#23
0
 /**
  * 将缓存中的浏览记录存入数据库中,并删除30天前的浏览历史
  */
 public function browseOp()
 {
     $model = Model('goods_browse');
     //将cache中的记录存入数据库
     if (C('cache.type') != 'file') {
         //如果浏览记录已经存入了缓存中,则将其整理到数据库中
         //上次更新缓存的时间
         $latest_record = $model->getGoodsbrowseOne(array(), '', 'browsetime desc');
         $starttime = ($t = intval($latest_record['browsetime'])) ? $t : 0;
         $monthago = strtotime(date('Y-m-d', time())) - 86400 * 30;
         $model_member = Model('member');
         //查询会员信息总条数
         $countnum = $model_member->getMemberCount(array());
         $eachnum = 100;
         for ($i = 0; $i < $countnum; $i += $eachnum) {
             //每次查询100条
             $member_list = $model_member->getMemberList(array(), '*', 0, 'member_id asc', "{$i},{$eachnum}");
             foreach ((array) $member_list as $k => $v) {
                 $insert_arr = array();
                 $goodsid_arr = array();
                 //生成缓存的键值
                 $hash_key = $v['member_id'];
                 $browse_goodsid = rcache($hash_key, 'goodsbrowse', 'goodsid');
                 if ($browse_goodsid) {
                     //删除缓存中多余的浏览历史记录,仅保留最近的30条浏览历史,先取出最近30条浏览历史的商品ID
                     $cachegoodsid_arr = $browse_goodsid['goodsid'] ? unserialize($browse_goodsid['goodsid']) : array();
                     unset($browse_goodsid['goodsid']);
                     if ($cachegoodsid_arr) {
                         $cachegoodsid_arr = array_slice($cachegoodsid_arr, -30, 30, true);
                     }
                     //处理存入数据库的浏览历史缓存信息
                     $_cache = rcache($hash_key, 'goodsbrowse');
                     foreach ((array) $_cache as $c_k => $c_v) {
                         $c_v = unserialize($c_v);
                         if ($c_v['browsetime'] >= $starttime) {
                             //如果 缓存中的数据未更新到数据库中(即添加时间大于上次更新到数据库中的数据时间)则将数据更新到数据库中
                             $tmp_arr = array();
                             $tmp_arr['goods_id'] = $c_v['goods_id'];
                             $tmp_arr['member_id'] = $v['member_id'];
                             $tmp_arr['browsetime'] = $c_v['browsetime'];
                             $tmp_arr['gc_id'] = $c_v['gc_id'];
                             $tmp_arr['gc_id_1'] = $c_v['gc_id_1'];
                             $tmp_arr['gc_id_2'] = $c_v['gc_id_2'];
                             $tmp_arr['gc_id_3'] = $c_v['gc_id_3'];
                             $insert_arr[] = $tmp_arr;
                             $goodsid_arr[] = $c_v['goods_id'];
                         }
                         //除了最近的30条浏览历史之外多余的浏览历史记录或者30天之前的浏览历史从缓存中删除
                         if (!in_array($c_v['goods_id'], $cachegoodsid_arr) || $c_v['browsetime'] < $monthago) {
                             unset($_cache[$c_k]);
                         }
                     }
                     //删除已经存在的该商品浏览记录
                     if ($goodsid_arr) {
                         $model->delGoodsbrowse(array('member_id' => $v['member_id'], 'goods_id' => array('in', $goodsid_arr)));
                     }
                     //将缓存中的浏览历史存入数据库
                     if ($insert_arr) {
                         $model->addGoodsbrowseAll($insert_arr);
                     }
                     //重新赋值浏览历史缓存
                     dcache($hash_key, 'goodsbrowse');
                     $_cache['goodsid'] = serialize($cachegoodsid_arr);
                     wcache($hash_key, $_cache, 'goodsbrowse');
                 }
             }
         }
     }
     //删除30天前的浏览历史
     $model->delGoodsbrowse(array('browsetime' => array('lt', $monthago)));
 }
示例#24
0
 /**
  * 会员信息
  *
  * @return array
  */
 public function get_member_info()
 {
     //生成缓存的键值
     $hash_key = $this->master_id;
     if ($hash_key <= 0) {
         showMessage(L('wrong_argument'), '', '', 'error');
     }
     //写入缓存的数据
     $cachekey_arr = array('member_name', 'store_id', 'member_avatar', 'member_qq', 'member_email', 'member_ww', 'member_goldnum', 'member_points', 'available_predeposit', 'member_snsvisitnum', 'credit_arr', 'fan_count', 'attention_count');
     //先查找$hash_key缓存
     if ($_cache = rcache($hash_key, 'sns_member')) {
         foreach ($_cache as $k => $v) {
             $member_info[$k] = $v;
         }
     } else {
         $model = Model();
         $member_info = $model->table('member')->where(array('member_id' => $this->master_id))->find();
         if (empty($member_info)) {
             showMessage(L('wrong_argument'), 'index.php?act=member_snshome', '', 'error');
         }
         //粉丝数
         $fan_count = $model->table('sns_friend')->where(array('friend_tomid' => $this->master_id))->count();
         $member_info['fan_count'] = $fan_count;
         //关注数
         $attention_count = $model->table('sns_friend')->where(array('friend_frommid' => $this->master_id))->count();
         $member_info['attention_count'] = $attention_count;
         //兴趣标签
         $mtag_list = $model->table('sns_membertag,sns_mtagmember')->field('mtag_name')->on('sns_membertag.mtag_id = sns_mtagmember.mtag_id')->join('inner')->where(array('sns_mtagmember.member_id' => $this->master_id))->select();
         $tagname_array = array();
         if (!empty($mtag_list)) {
             foreach ($mtag_list as $val) {
                 $tagname_array[] = $val['mtag_name'];
             }
         }
         $member_info['tagname'] = $tagname_array;
         wcache($hash_key, $member_info, 'sns_member');
     }
     Tpl::output('member_info', $member_info);
     return $member_info;
 }
示例#25
0
 /**
  * 读取商品推荐搭配缓存
  * @param int $goods_id
  * @return array
  */
 private function _rGoodsComboCache($goods_id)
 {
     return rcache($goods_id, 'goods_combo');
 }
示例#26
0
 /**
  * 根据抢购编号查询商品评价信息 
  */
 public function getEvaluateGoodsInfoByCommonidID($goods_commonid)
 {
     $prefix = 'goods_common_evaluation';
     $info = rcache($goods_commonid, $prefix);
     if (empty($info)) {
         $info = array();
         $info['good_percent'] = 100;
         $info['normal_percent'] = 0;
         $info['bad_percent'] = 0;
         $info['good_star'] = 5;
         $info['all'] = 0;
         $info['good'] = 0;
         $info['normal'] = 0;
         $info['bad'] = 0;
         $condition = array();
         $condition['goods_commonid'] = $goods_commonid;
         $goods_list = Model('goods')->getGoodsList($condition, 'goods_id');
         if (!empty($goods_list)) {
             $goodsid_array = array();
             foreach ($goods_list as $value) {
                 $goodsid_array[] = $value['goods_id'];
             }
             $good = $this->where(array('geval_goodsid' => array('in', $goodsid_array), 'geval_scores' => array('in', '4,5')))->count();
             $info['good'] = $good;
             $normal = $this->where(array('geval_goodsid' => array('in', $goodsid_array), 'geval_scores' => array('in', '2,3')))->count();
             $info['normal'] = $normal;
             $bad = $this->where(array('geval_goodsid' => array('in', $goodsid_array), 'geval_scores' => array('in', '1')))->count();
             $info['bad'] = $bad;
             $info['all'] = $info['good'] + $info['normal'] + $info['bad'];
             if (intval($info['all']) > 0) {
                 $info['good_percent'] = intval($info['good'] / $info['all'] * 100);
                 $info['normal_percent'] = intval($info['normal'] / $info['all'] * 100);
                 $info['bad_percent'] = intval($info['bad'] / $info['all'] * 100);
                 $info['good_star'] = ceil($info['good'] / $info['all'] * 5);
             }
         }
         wcache($goods_commonid, $info, $prefix, 24 * 60);
         // 缓存周期1天。
     }
     return $info;
 }
示例#27
0
文件: control.php 项目: noikiy/ecmall
 protected function get_member_detail_info($member_info)
 {
     $member_id = $member_info['member_id'];
     if ($member_id <= 0) {
         header("location: " . MICROSHOP_SITEURL);
         exit;
     }
     $cachekey_arr = array("member_name", "store_id", "member_avatar", "member_qq", "member_email", "member_msn", "member_ww", "member_goldnum", "member_points", "available_predeposit", "member_snsvisitnum", "credit_arr", "fan_count", "attention_count");
     if ($_cache = rcache($member_id, "sns_member")) {
         foreach ($_cache as $k => $v) {
             $member_info[$k] = $v;
         }
         return $member_info;
     }
     $model = model();
     $member_info['credit_arr'] = getcreditarr(intval($member_info['member_credit']));
     $fan_count = $model->table("sns_friend")->where(array("friend_tomid" => $member_id))->count();
     $member_info['fan_count'] = $fan_count;
     $attention_count = $model->table("sns_friend")->where(array("friend_frommid" => $member_id))->count();
     $member_info['attention_count'] = $attention_count;
     $mtag_list = $model->table("sns_membertag,sns_mtagmember")->field("mtag_name")->on("sns_membertag.mtag_id = sns_mtagmember.mtag_id")->join("inner")->where(array("sns_mtagmember.member_id" => $member_id))->select();
     $tagname_array = array();
     if (!empty($mtag_list)) {
         foreach ($mtag_list as $val) {
             $tagname_array[] = $val['mtag_name'];
         }
     }
     $member_info['tagname'] = $tagname_array;
     wcache($member_id, $member_info, "sns_member");
     return $member_info;
 }
示例#28
0
 /**
  * 卖家中心首页
  *
  * @param 
  * @return 
  */
 public function indexOp()
 {
     Language::read('member_home_index');
     $lang = Language::getLangContent();
     //支付方式列表
     if (C('payment')) {
         $model_payment = Model('payment');
         if (file_exists(BasePath . DS . 'api' . DS . 'payment' . DS . 'payment.inc.php')) {
             //$payment_inc
             require_once BasePath . DS . 'api' . DS . 'payment' . DS . 'payment.inc.php';
         }
         $payment_list = $model_payment->getPaymentList();
         if (strtoupper(CHARSET) == 'GBK') {
             $payment_list = Language::getGBK($payment_list);
         }
         $payment_list = $model_payment->checkinstallPayment($payment_list);
         $store_payment = array();
         if (is_array($payment_list) && !empty($payment_list)) {
             foreach ($payment_list as $key => $val) {
                 if ($val['install'] == 1 && @in_array($val['code'], $payment_inc)) {
                     $store_payment[] = $val;
                 }
             }
         }
         Tpl::output('store_payment', $store_payment);
     }
     /**
      * 实例化店铺模型
      */
     $model_store = Model('store');
     $store_info = $model_store->shopStore(array('store_id' => $_SESSION['store_id']));
     if ($store_info['store_end_time'] != '') {
         $store_info['store_end_time'] = number_format(($store_info['store_end_time'] - time()) / (3600 * 24), 2);
     }
     $store_info['store_end_time'] = $store_info['store_end_time'] ? $store_info['store_end_time'] <= 0 ? $lang['store_end'] : $store_info['store_end_time'] . $lang['store_day'] : $lang['store_no_limit'];
     /**
      * 店铺信用
      */
     $store_info['credit_arr'] = getCreditArr($store_info['store_credit']);
     //生成缓存的键值
     $hash_key = $_SESSION['store_id'];
     if ($_cache = rcache($hash_key, 'store')) {
         foreach ($_cache as $k => $v) {
             $store_info[$k] = $v;
         }
     } else {
         //动态评价
         $store_info['store_desccredit_rate'] = @round($store_info['store_desccredit'] / 5 * 100, 2);
         $store_info['store_servicecredit_rate'] = @round($store_info['store_servicecredit'] / 5 * 100, 2);
         $store_info['store_deliverycredit_rate'] = @round($store_info['store_deliverycredit'] / 5 * 100, 2);
         //实例化店铺等级模型
         $store_grade = ($setting = F('store_grade')) ? $setting : H('store_grade', true, 'file');
         $store_grade = $store_grade[$store_info['grade_id']];
         $store_info['grade_id'] = $store_grade['sg_id'];
         $store_info['grade_name'] = $store_grade['sg_name'];
         $store_info['grade_goodslimit'] = $store_grade['sg_goods_limit'];
         $store_info['grade_albumlimit'] = $store_grade['sg_album_limit'];
     }
     if (!file_exists(BasePath . DS . ATTACH_GOODS . DS . $_SESSION['store_id'])) {
         mkdir(BasePath . DS . ATTACH_GOODS . DS . $_SESSION['store_id']);
     }
     //		$store_info['goods_count'] = $model_store->table('goods')->where(array('store_id'=>$store_info['store_id']))->count();
     //		$store_info['goods_count'] = intval($store_info['goods_count'])>0?intval($store_info['goods_count']):0;
     //		$store_info['grade_goodslimit']	= $store_info['grade_goodslimit'] == 0 ? $lang['store_none_limit'] : $store_info['goods_count'].'/'.$store_info['grade_goodslimit'];
     Tpl::output('store_info', $store_info);
     $model_goods = Model('goods');
     $model = Model();
     $add_time_to = date("Y-m-d");
     //当前日期
     $add_time_from = date("Y-m-d", strtotime($add_time_to) - 60 * 60 * 24 * 30);
     //30天前
     Tpl::output('add_time_from', $add_time_from);
     Tpl::output('add_time_to', $add_time_to);
     //查询会员现有金币数,预存款
     $member_model = Model('member');
     $member_info = $member_model->infoMember(array('member_id' => $_SESSION['member_id']));
     Tpl::output('member_info', $member_info);
     $model_article = Model('article');
     $condition = array();
     $condition['article_show'] = '1';
     $condition['ac_id'] = '1';
     $condition['order'] = 'article_sort desc,article_time desc';
     $condition['limit'] = '5';
     $show_article = $model_article->getArticleList($condition);
     Tpl::output('show_article', $show_article);
     $phone_array = explode(',', C('site_phone'));
     Tpl::output('phone_array', $phone_array);
     Tpl::output('menu_sign', 'index');
     Tpl::showpage('home');
 }
示例#29
0
 /**
  * 更新礼品浏览次数
  */
 public function editPointProdViewnum($prod_id)
 {
     if (intval($prod_id) <= 0) {
         return array('state' => false, 'msg' => '参数错误');
     }
     $viewnum = 0;
     //最新浏览次数
     $cache_arr = array();
     $tmptime = time();
     if (!C('cache_open')) {
         //直接更新数据库浏览次数
         $this->editPointProd(array('pgoods_view' => array('exp', 'pgoods_view+1')), array('pgoods_id' => $prod_id));
     } else {
         //通过缓存记录浏览次数
         $prod_info = rcache($prod_id, 'pointprod', 'pgoods_view,view_updatetime');
         if (empty($prod_info)) {
             //如果兑换礼品的浏览次数缓存不存在,则查询兑换礼品数据库信息,建立缓存
             //查询兑换礼品信息
             $prod_info = $this->getPointProdInfo(array('pgoods_id' => $prod_id), 'pgoods_view');
             $viewnum = intval($prod_info['pgoods_view']) + 1;
             wcache($prod_id, array('pgoods_view' => $viewnum, 'view_updatetime' => $tmptime), 'pointprod');
         } else {
             $viewnum = intval($prod_info['pgoods_view']) + 1;
             if ($prod_info['view_updatetime'] + 3600 < $tmptime) {
                 //如果缓存时间超出1小时,则将更新进入数据库,时间初始为当前时间
                 $this->editPointProd(array('pgoods_view' => $viewnum), array('pgoods_id' => $prod_id));
                 wcache($prod_id, array('pgoods_view' => $viewnum, 'view_updatetime' => $tmptime), 'pointprod');
             } else {
                 //如果缓存时间未超出1小时,则更新浏览次数
                 wcache($prod_id, array('pgoods_view' => $viewnum), 'pointprod');
             }
         }
     }
     return array('state' => true);
 }
示例#30
0
 /**
  * 读取商品抢购缓存
  * @param int $goods_commonid
  * @return array/bool
  */
 private function _rGoodsGroupbuyCache($goods_commonid)
 {
     return rcache($goods_commonid, 'goods_groupbuy');
 }