/** * 取得会员详细信息(优先查询缓存) * 如果未找到,则缓存所有字段 * @param int $member_id * @param string $field 需要取得的缓存键值, 例如:'*','member_name,member_sex' * @return array */ public function getMemberInfoByID($member_id, $fields = '*') { $member_info = uk86_rcache($member_id, 'member', $fields); if (empty($member_info)) { $member_info = $this->getMemberInfo(array('member_id' => $member_id), '*', true); uk86_wcache($member_id, $member_info, 'member'); } return $member_info; }
/** * 取得当前有效卡券包数量 * @param int $member_id */ public function getCurrentAvailableVoucherCount($member_id) { $info = uk86_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); uk86_wcache($member_id, array('voucher_count' => $voucher_count), 'm_voucher'); } else { $voucher_count = intval($info['voucher_count']); } return $voucher_count; }
/** * 读取商品限时折扣缓存 * @param int $goods_id * @return array/bool */ private function _rGoodsXianshiCache($goods_id) { return uk86_rcache($goods_id, 'goods_xianshi'); }
/** * 专题可用项目列表(用于前台显示仅显示可用项目) * @param int $special_id * */ public function getMbSpecialItemUsableListByID($special_id) { $prefix = 'mb_special'; $item_list = uk86_rcache($special_id, $prefix); //缓存有效 if (!empty($item_list)) { return unserialize($item_list['special']); } //缓存无效查库并缓存 $condition = array(); $condition['special_id'] = $special_id; $condition['item_usable'] = self::SPECIAL_ITEM_USABLE; $item_list = $this->_getMbSpecialItemList($condition); if (!empty($item_list)) { $new_item_list = array(); foreach ($item_list as $value) { //处理图片 $item_data = $this->_formatMbSpecialData($value['item_data'], $value['item_type']); $new_item_list[] = array($value['item_type'] => $item_data); } $item_list = $new_item_list; } $cache = array('special' => serialize($item_list)); uk86_wcache($special_id, $cache, $prefix); return $item_list; }
/** * 读取商品抢购缓存 * @param int $goods_commonid * @return array/bool */ private function _rGoodsGroupbuyCache($goods_commonid) { return uk86_rcache($goods_commonid, 'goods_groupbuy'); }
/** * 礼品购物车礼品数量 * * @param array $member_id 会员ID */ public function countPointCart($member_id) { $info = uk86_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); uk86_wcache($member_id, array('pointcart_count' => $pointcart_count), 'm_pointcart'); } else { $pointcart_count = intval($info['pointcart_count']); } return $pointcart_count; }
/** * 读取商品图片缓存 * @param int $key ($goods_commonid .'|'. $color_id) * @param string $fields * @return array */ private function _rGoodsImageCache($key) { return uk86_rcache($key, 'goods_image'); }
/** * 喜欢商品(访客登录后操作) */ public function editlikeOp() { $obj_validate = new Uk86Validate(); $validate_arr[] = array("input" => $_GET["id"], "require" => "true", "message" => Uk86Language::uk86_get('sns_likegoods_choose')); $obj_validate->validateparam = $validate_arr; $error = $obj_validate->uk86_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(Uk86Language::uk86_get('sns_member_error'), '', 'error'); } //查询商品信息 $goods_model = Model('goods'); $goods_info = $goods_model->getGoodsOnlineInfoForShare(intval($_GET["id"])); if (empty($goods_info)) { showDialog(Uk86Language::uk86_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(Uk86Language::uk86_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 = uk86_rcache($hash_key, 'product')) { $_cache['likenum'] = intval($_cache['likenum']) + 1; //缓存商品信息 uk86_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'] = Uk86Language::uk86_get('sns_likegoods_title'); $content_str = ''; $content_str .= "<div class=\"fd-media\">\n\t\t\t\t<div class=\"goodsimg\"><a target=\"_blank\" href=\"" . uk86_urlShop('goods', 'index', array('goods_id' => $goods_info['goods_id'])) . "\"><img src=\"" . uk86_thumb($goods_info, 240) . "\" onload=\"javascript:DrawImage(this,120,120);\" alt=\"{$goods_info['goods_name']}\"></a></div>\n\t\t\t\t<div class=\"goodsinfo\">\n\t\t\t\t\t<dl>\n\t\t\t\t\t\t<dt><a target=\"_blank\" href=\"" . uk86_urlShop('goods', 'index', array('goods_id' => $goods_info['goods_id'])) . "\">" . $goods_info['goods_name'] . "</a></dt>\n\t\t\t\t\t\t<dd>" . Uk86Language::uk86_get('sns_sharegoods_price') . Uk86Language::uk86_get('nc_colon') . Uk86Language::uk86_get('currency') . $goods_info['goods_price'] . "</dd>\n\t\t\t\t\t\t<dd>" . Uk86Language::uk86_get('sns_sharegoods_freight') . Uk86Language::uk86_get('nc_colon') . Uk86Language::uk86_get('currency') . $goods_info['goods_freight'] . "</dd>\n \t\t<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']}\\');\">" . Uk86Language::uk86_get('sns_sharegoods_collect') . "</a> (" . $goods_info['goods_collect'] . Uk86Language::uk86_get('sns_collecttip') . ")</dd>\n \t</dl>\n </div>\n </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(Uk86Language::uk86_get('nc_common_op_succ'), '', 'succ', $js); } else { showDialog(Uk86Language::uk86_get('nc_common_op_fail'), '', 'error'); } }
/** * 读取商品推荐搭配缓存 * @param int $goods_id * @return array */ private function _rGoodsComboCache($goods_id) { return uk86_rcache($goods_id, 'goods_combo'); }
/** * 读取店铺商品分类缓存 * @param int $store_id * @param string $fields * @return array */ private function _rStoreGoodsClassCache($store_id) { return uk86_rcache($store_id, 'store_goods_class'); }
/** * 将缓存中的浏览记录存入数据库中,并删除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 = uk86_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 = uk86_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); } //重新赋值浏览历史缓存 uk86_dcache($hash_key, 'goodsbrowse'); $_cache['goodsid'] = serialize($cachegoodsid_arr); uk86_wcache($hash_key, $_cache, 'goodsbrowse'); } } } } //删除30天前的浏览历史 $model->delGoodsbrowse(array('browsetime' => array('lt', $monthago))); }
/** * 读取商品满即送缓存 * @param int $store_id * @return array */ private function _rGoodsMansongCache($store_id) { return uk86_rcache($store_id, 'goods_mansong'); }
/** * 最新话题/热门话题/人气回复 */ protected function themeTop() { $prefix = 'circle_themetop'; $data = uk86_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']); }
/** * 读取店铺关联板式缓存缓存 * @param int $plate_id * @param string $fields * @return array */ private function _rStorePlateCache($plate_id, $fields) { return uk86_rcache($plate_id, 'store_plate', $fields); }
/** * 读取商品优惠套装缓存 * @param int $goods_id * @return array */ private function _rGoodsBundlingCache($goods_id) { return uk86_rcache($goods_id, 'goods_bundling'); }
/** * 根据分类编号获取分类评分数据 */ public function getEvaluateStoreInfoByScID($sc_id) { $prefix = 'sc_evaluate_store_info'; $info = uk86_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); uk86_wcache($sc_id, $cache, $prefix, 60 * 24); } else { $info = unserialize($info['evaluate_store_info']); } return $info; }
/** * 根据抢购编号查询商品评价信息 */ public function getEvaluateGoodsInfoByCommonidID($goods_commonid) { $prefix = 'goods_common_evaluation'; $info = uk86_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); } } uk86_wcache($goods_commonid, $info, $prefix, 24 * 60); // 缓存周期1天。 } return $info; }
/** * 更新礼品浏览次数 */ 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 = uk86_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; uk86_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)); uk86_wcache($prod_id, array('pgoods_view' => $viewnum, 'view_updatetime' => $tmptime), 'pointprod'); } else { //如果缓存时间未超出1小时,则更新浏览次数 uk86_wcache($prod_id, array('pgoods_view' => $viewnum), 'pointprod'); } } } return array('state' => true); }
/** * 浏览过的商品加入浏览历史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 = uk86_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); } //缓存商品信息 uk86_wcache($hash_key, $_cache, 'goodsbrowse'); return array('state' => true); }
public function indexOp() { header("Content-type:text/html; charset=utf-8"); $goods_id = intval($_GET['goods_id']); //添加浏览记录 $this->addbrowse($goods_id); $model_goods = Model('goods'); $goods_detail = $model_goods->getGoodsDetail($goods_id); $goods_info = $goods_detail['goods_info']; if (empty($goods_info)) { $this->wap_showDialog('商品已下架或不存在', 'error', uk86_getReferer()); } $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_mobile']); Tpl::output('mansong_info', $goods_detail['mansong_info']); Tpl::output('gift_array', $goods_detail['gift_array']); // 生成缓存的键值 $hash_key = $goods_info['goods_id']; $_cache = uk86_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']; // 缓存商品信息 uk86_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); $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 = Uk86Language::uk86_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); //所有评价 Tpl::output('all_comments', $this->_get_comments($goods_info['goods_id'], 'all')); //好评 Tpl::output('good_comments', $this->_get_comments($goods_info['goods_id'], '1')); //中评 Tpl::output('normal_comments', $this->_get_comments($goods_info['goods_id'], '2')); //差评 Tpl::output('bad_comments', $this->_get_comments($goods_info['goods_id'], '3')); $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_info'); }
/** * 用户详细信息 */ 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 = uk86_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; uk86_wcache($member_id, $member_info, 'sns_member'); } return $member_info; }
/** * 查询会员已经兑换商品数 * @param int $member_id 会员编号 */ public function getMemberPointsOrderGoodsCount($member_id) { $info = uk86_rcache($member_id, 'm_pointorder', 'pointordercount'); if (empty($info['pointordercount']) && $info['pointordercount'] !== 0) { //获取兑换订单状态 $pointorderstate_arr = $this->getPointOrderStateBySign(); $where = array(); $where['point_buyerid'] = $member_id; $where['point_orderstate'] = array('neq', $pointorderstate_arr['canceled'][0]); $list = $this->getPointOrderAndGoodsList($where, 'SUM(point_goodsnum) as goodsnum'); $pointordercount = 0; if ($list) { $pointordercount = intval($list[0]['goodsnum']); } uk86_wcache($member_id, array('pointordercount' => $pointordercount), 'm_pointorder'); } else { $pointordercount = intval($info['pointordercount']); } return $pointordercount; }
/** * 读取商品公共缓存 * @param int $goods_id * @return array */ private function _rGoodsGiftCache($goods_id) { return uk86_rcache($goods_id, 'goods_gift'); }
public function indexOp() { uk86_rcache('circle_level', true); uk86_showMessage(L('nc_common_op_succ'), 'index.php?act=circle_setting'); }
/** * 获取店铺商品数 * * @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 = uk86_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']; uk86_wcache($value['store_id'], $value['goods_count'], 'store_goods_count'); } } } return $store_array_new; }