/** * 根据商品编号查询商品评价信息 */ 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; }
/** * 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; } }
/** * 取得会员详细信息(优先查询缓存) * 如果未找到,则缓存所有字段 * @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; }
/** * 礼品购物车礼品数量 * * @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; }
/** * 根据分类编号获取分类评分数据 */ 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; }
/** * 取得当前有效代金券数量 * @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; }
/** * 获取商品收藏排行 * * @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'); }
/** * 根据分类编号获取分类评分数据 */ 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); }
/** * 读取商品公共缓存 * @param int $goods_id * @return array */ private function _rGoodsGiftCache($goods_id) { return rcache($goods_id, 'goods_gift'); }
/** * 用户详细信息 */ 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; }
/** * 读取店铺商品分类缓存 * @param int $store_id * @param string $fields * @return array */ private function _rStoreGoodsClassCache($store_id) { return rcache($store_id, 'store_goods_class'); }
/** * 单个商品信息页 */ 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'); }
/** * 店铺列表 */ 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'); }
/** * 获取店铺商品数 * * @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); }
/** * 最新话题/热门话题/人气回复 */ 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']); }
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'); }
/** * 喜欢商品(访客登录后操作) */ 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> (".$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'); } }
/** * 读取商品满即送缓存 * @param int $store_id * @return array */ private function _rGoodsMansongCache($store_id) { return rcache($store_id, 'goods_mansong'); }
/** * 将缓存中的浏览记录存入数据库中,并删除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))); }
/** * 会员信息 * * @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; }
/** * 读取商品推荐搭配缓存 * @param int $goods_id * @return array */ private function _rGoodsComboCache($goods_id) { return rcache($goods_id, 'goods_combo'); }
/** * 根据抢购编号查询商品评价信息 */ 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; }
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; }
/** * 卖家中心首页 * * @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'); }
/** * 更新礼品浏览次数 */ 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); }
/** * 读取商品抢购缓存 * @param int $goods_commonid * @return array/bool */ private function _rGoodsGroupbuyCache($goods_commonid) { return rcache($goods_commonid, 'goods_groupbuy'); }