Example #1
0
 /**
  * 取得会员详细信息(优先查询缓存)
  * 如果未找到,则缓存所有字段
  * @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;
 }
Example #2
0
 /**
  * 取得当前有效卡券包数量
  * @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');
 }
Example #4
0
 /**
  * 专题可用项目列表(用于前台显示仅显示可用项目)
  * @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;
 }
Example #5
0
 /**
  * 读取商品抢购缓存
  * @param int $goods_commonid
  * @return array/bool
  */
 private function _rGoodsGroupbuyCache($goods_commonid)
 {
     return uk86_rcache($goods_commonid, 'goods_groupbuy');
 }
Example #6
0
 /**
  * 礼品购物车礼品数量
  *
  * @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;
 }
Example #7
0
 /**
  * 读取商品图片缓存
  * @param int $key ($goods_commonid .'|'. $color_id)
  * @param string $fields
  * @return array
  */
 private function _rGoodsImageCache($key)
 {
     return uk86_rcache($key, 'goods_image');
 }
Example #8
0
 /**
  * 喜欢商品(访客登录后操作)
  */
 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>&nbsp;&nbsp;(" . $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');
 }
Example #11
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 = 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)));
 }
Example #12
0
 /**
  * 读取商品满即送缓存
  * @param int $store_id
  * @return array
  */
 private function _rGoodsMansongCache($store_id)
 {
     return uk86_rcache($store_id, 'goods_mansong');
 }
Example #13
0
 /**
  * 最新话题/热门话题/人气回复
  */
 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']);
 }
Example #14
0
 /**
  * 读取店铺关联板式缓存缓存
  * @param int $plate_id
  * @param string $fields
  * @return array
  */
 private function _rStorePlateCache($plate_id, $fields)
 {
     return uk86_rcache($plate_id, 'store_plate', $fields);
 }
Example #15
0
 /**
  * 读取商品优惠套装缓存
  * @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;
 }
Example #18
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 = 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);
 }
Example #20
0
 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');
 }
Example #21
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 = 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;
 }
Example #22
0
 /**
  * 查询会员已经兑换商品数
  * @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;
 }
Example #23
0
 /**
  * 读取商品公共缓存
  * @param int $goods_id
  * @return array
  */
 private function _rGoodsGiftCache($goods_id)
 {
     return uk86_rcache($goods_id, 'goods_gift');
 }
Example #24
0
 public function indexOp()
 {
     uk86_rcache('circle_level', true);
     uk86_showMessage(L('nc_common_op_succ'), 'index.php?act=circle_setting');
 }
Example #25
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 = 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;
 }