123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
- <?php
- /**
- * 应用首页接口,后面可能根据不同版本独立
- */
- class IndexController extends ApiBaseController {
- public function beforeAction($action){
- // $weixin_use = array('staticSource');
- // if(Yii::app()->getRequest()->getParam("request_from") == 'weixin' && in_array($action->id,$weixin_use)){
- // return true;
- // }
- //todo user first login
- return $this->verify();
- }
- public function actionV3(){
- //根据自定义参数生成缓存key
- $user_id = Yii::app()->request->getParam('user_id','');
- $device_id = Yii::app()->request->getParam('device_id','0');
- $city_info = json_decode(Yii::app()->request->getParam('city_info'),true);
- $province = isset($city_info['province'])?$city_info['province']:'';
- $position_city_info = json_decode(Yii::app()->request->getParam('position_city_info'),true);
- $position_province = isset($position_city_info['province'])?$position_city_info['province']:'';
- $get_new = Yii::app()->request->getParam('get_new',0);
- $z_User = new ZUser();
- $host = ENVIRONMENT=='product'?'www.wozhua.mobi':'wwwtest.wozhua.mobi';
- $f_host = ENVIRONMENT=='product'?'f.wozhua.mobi':'ftest.wozhua.mobi';
- $user = $z_User->idExist($user_id);
- //$new_user_coupons = 0;
- $no_recommond_groups = Yii::app()->params['no_recommond_groups'];
- //登陆用户根据上次访问时间,关注圈子,页数,当前时间生成唯一key
- if($user){
- $add_score = $this->today_first_login($user_id);
- $last_visit_hours = CommonFn::get_user_last_visit_hours($user['last_visit_time']);
- $group_ids = $user['groups'];
- $sort_group = array();
- foreach ($group_ids as $key => $value) {
- $sort_group[] = (string)$value;
- }
- sort($sort_group);
- $stamp = '3';
- foreach ($sort_group as $key => $value) {
- $stamp.=$value;
- }
- $cache_key = md5($stamp.$last_visit_hours.$get_new);
- //未登录用户根据页数,默认获取推荐关注圈子七天内帖子
- }elseif($device_id){
- $cache = new ARedisCache();
- $key = 'guest_last_visit_time_'.$device_id;
- $guest_last_visit_time = $cache->get($key);
- if($guest_last_visit_time){
- $last_visit_hours = CommonFn::get_user_last_visit_hours($guest_last_visit_time);
- }else{
- $last_visit_hours = 168;
- }
- $cache->set($key,time());
- //未登录用户获取获取推荐的圈子
- $default_follow_group = Service::factory('VariableService')->getVariable('default_follow_group');
- $groups = explode(',',trim($default_follow_group,','));
- if(isset($city_info['province'])){
- $criteria = new EMongoCriteria();
- $criteria->status('==',1);
- $criteria->addCond('city_info.province','==',$city_info['province']);
- $cursor = Group::model()->findAll($criteria);
- foreach ($cursor as $value) {
- $groups[] = (string)$value->_id;
- }
- }
- $stamp = '3';
- foreach ($groups as $key => $value) {
- if(!CommonFn::isMongoId($value)){
- unset($groups[$key]);
- continue;
- }
- $groups[$key] = new MongoId($value);
- $stamp.=$value;
- }
- $group_ids = array_values($groups);
- $cache_key = md5($stamp.$last_visit_hours.$get_new);
- }else{
- $default_follow_group = Service::factory('VariableService')->getVariable('default_follow_group');
- $groups = explode(',',trim($default_follow_group,','));
- $stamp = '3';
- foreach ($groups as $key => $value) {
- if(!CommonFn::isMongoId($value)){
- unset($groups[$key]);
- continue;
- }
- $groups[$key] = new MongoId($value);
- $stamp.=$value;
- }
- $group_ids = array_values($groups);
- $last_visit_hours = 168;
- $cache_key = md5($stamp.$last_visit_hours.$get_new);
- }
- foreach ($group_ids as $key => $value) {
- if(in_array((string)$value,$no_recommond_groups)){
- unset($group_ids[$key]);
- }
- }
- $group_ids = array_values($group_ids);
- $cache = new ARedisCache();
- $cache_data = $cache->get($cache_key);
- if($cache_data && !YII_DEBUG){
- $cache_res = unserialize($cache_data);
- $data = $cache_res['data'];
- }else{
- //按钮链接
- $link_button[] = array(
- 'title'=>'买宠物',
- 'link_text'=>'有保障/大礼包',
- 'icon_url'=>'http://7oxep6.com1.z0.glb.clouddn.com/huotijiaoyi.png',
- 'link'=>'http://'.$host.'/o2o/web/index/deal?need_header=0'
- );
- $link_button[] = array(
- 'title'=>'问专家',
- 'link_text'=>'看病/训犬/养护',
- 'icon_url'=>'http://7oxep6.com1.z0.glb.clouddn.com/doctorhij.png',
- 'link'=>'http://'.$host.'/group/54a0fa1f0eb9fb17308b47a6'
- );
- $data['link_button'] = $link_button;
- //活体交易部分
- $deal['type'] = 'deal';
- $deal['title'] = '放心、有保障的宠物交易';
- $deal['more'] = 'http://'.$host.'/o2o/web/index/deal?need_header=0';
- //todo pettype
- $new_pets = DealPet::getNewPet();
- foreach ($new_pets as $key => $value) {
- $new_pets[$key]['url'] = 'http://'.$host.'/o2o/web/index/deal?need_header=0/#!/detail/'.$value['id'];
- }
- $deal['pets'] = $new_pets;
- $data['modules'][] = $deal;
- $res_topics = array();
- $conditions = array(
- 'group'=>array('in',$group_ids),
- 'status'=>array('==',1),
- 'time'=>array('>=',time()-3600*$last_visit_hours)
- );
- //最新最热帖排序规则
- $order = $get_new?['_id'=>'desc']:['like_count'=>'desc'];
- $model = new Topic();
- $pagedata = CommonFn::getPagedata($model,1,20,$conditions,$order,false);
- $topics = $pagedata['res'];
- foreach($topics as $topic){
- $_topic = $model->parseRow($topic,array('id','content','city_info','city_info_str','city_topic_str','time','time_str','group','visit_count','reply_count','fav_count','like_count','user','pics','voice','video','last_post_time','last_post_time_str'));
- if($user){
- $z_like = new ZLike();
- $like = $z_like->getLikeByLikeObj((string)$user['_id'],$_topic['id']);
- if(empty($like)){
- $_topic['is_liked'] = false;
- }else{
- $_topic['is_liked'] = true;
- }
- }else{
- $_topic['is_liked'] = false;
- }
- $res_topics[] = $_topic;
- }
- $data['topics'] = $res_topics;
- $cache_data = array();
- $cache_data['data'] = $data;
- $cache->set($cache_key,serialize($cache_data),3600);
- }
- //首页轮播图
- $province_tag = isset($city_info['province'])?$city_info['province']:'no';
- $slide = Slide::getIndexSlide($province_tag);
- $data['slide'] = $slide;
- if(isset($add_score['status'])){
- $score_info['score_change'] = $add_score['score'];
- $score_info['current_score'] = $add_score['current_score'];
- $score_info['score_type'] = '签到';
- CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data,303,$score_info);
- }else{
- CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data,200,array('last_visit_hours' =>$last_visit_hours));
- }
- }
- public function actionV4(){
- //根据自定义参数生成缓存key
- $user_id = Yii::app()->request->getParam('user_id','');
- $device_id = Yii::app()->request->getParam('device_id','0');
- $page = intval(Yii::app()->request->getParam('page',1));
- $city_info = json_decode(Yii::app()->request->getParam('city_info'),true);
- $province = isset($city_info['province'])?$city_info['province']:'';
- $position_city_info = json_decode(Yii::app()->request->getParam('position_city_info'),true);
- $position_province = isset($position_city_info['province'])?$position_city_info['province']:'';
- $get_new = Yii::app()->request->getParam('get_new',0);
- $z_User = new ZUser();
- $host = ENVIRONMENT=='product'?'www.wozhua.mobi':'wwwtest.wozhua.mobi';
- $f_host = ENVIRONMENT=='product'?'f.wozhua.mobi':'ftest.wozhua.mobi';
- $user = $z_User->idExist($user_id);
- //$new_user_coupons = 0;
- $no_recommond_groups = Yii::app()->params['no_recommond_groups'];
- //登陆用户根据上次访问时间,关注圈子,页数,当前时间生成唯一key
- if($user){
- $add_score = $this->today_first_login($user_id);
- $last_visit_hours = CommonFn::get_user_last_visit_hours($user['last_visit_time']);
- $group_ids = $user['groups'];
- $sort_group = array();
- foreach ($group_ids as $key => $value) {
- $sort_group[] = (string)$value;
- }
- sort($sort_group);
- $stamp = '3';
- foreach ($sort_group as $key => $value) {
- $stamp.=$value;
- }
- $cache_key = md5($stamp.$last_visit_hours.$get_new);
- //未登录用户根据页数,默认获取推荐关注圈子七天内帖子
- }elseif($device_id){
- $cache = new ARedisCache();
- $key = 'guest_last_visit_time_'.$device_id;
- $guest_last_visit_time = $cache->get($key);
- if($guest_last_visit_time){
- $last_visit_hours = CommonFn::get_user_last_visit_hours($guest_last_visit_time);
- }else{
- $last_visit_hours = 168;
- }
- $cache->set($key,time());
- //未登录用户获取获取推荐的圈子
- $default_follow_group = Service::factory('VariableService')->getVariable('default_follow_group');
- $groups = explode(',',trim($default_follow_group,','));
- if(isset($city_info['province'])){
- $criteria = new EMongoCriteria();
- $criteria->status('==',1);
- $criteria->addCond('city_info.province','==',$city_info['province']);
- $cursor = Group::model()->findAll($criteria);
- foreach ($cursor as $value) {
- $groups[] = (string)$value->_id;
- }
- }
- $stamp = '3';
- foreach ($groups as $key => $value) {
- if(!CommonFn::isMongoId($value)){
- unset($groups[$key]);
- continue;
- }
- $groups[$key] = new MongoId($value);
- $stamp.=$value;
- }
- $group_ids = array_values($groups);
- $cache_key = md5($stamp.$last_visit_hours.$get_new);
- }else{
- $default_follow_group = Service::factory('VariableService')->getVariable('default_follow_group');
- $groups = explode(',',trim($default_follow_group,','));
- $stamp = '3';
- foreach ($groups as $key => $value) {
- if(!CommonFn::isMongoId($value)){
- unset($groups[$key]);
- continue;
- }
- $groups[$key] = new MongoId($value);
- $stamp.=$value;
- }
- $group_ids = array_values($groups);
- $last_visit_hours = 168;
- $cache_key = md5($stamp.$last_visit_hours.$get_new);
- }
- foreach ($group_ids as $key => $value) {
- if(in_array((string)$value,$no_recommond_groups)){
- unset($group_ids[$key]);
- }
- }
- $group_ids = array_values($group_ids);
- $cache = new ARedisCache();
- $cache_data = $cache->get($cache_key.'v4');
- if($cache_data && !YII_DEBUG){
- $cache_res = unserialize($cache_data);
- $data = $cache_res['data'];
- }else{
-
- //按钮链接
- $link_button[] = array(
- 'title'=>'买宠物',
- 'link_text'=>'有保障/大礼包',
- 'icon_url'=>'http://7oxep6.com1.z0.glb.clouddn.com/huotijiaoyi.png',
- 'link'=>'http://'.$host.'/o2o/web/index/deal?need_header=0'
- );
- $link_button[] = array(
- 'title'=>'问专家',
- 'link_text'=>'看病/训犬/养护',
- 'icon_url'=>'http://7oxep6.com1.z0.glb.clouddn.com/doctorhij.png',
- 'link'=>'http://'.$host.'/group/54a0fa1f0eb9fb17308b47a6'
- );
- $data['link_button'] = $link_button;
- //活体交易部分
- $deal['type'] = 'deal';
- $deal['title'] = '放心、有保障的宠物交易';
- $deal['more'] = 'http://'.$host.'/o2o/web/index/deal?need_header=0';
- //todo pettype
- $new_pets = DealPet::getNewPet();
- foreach ($new_pets as $key => $value) {
- $new_pets[$key]['url'] = 'http://'.$host.'/o2o/web/index/deal?need_header=0/#!/detail/'.$value['id'];
- }
- $deal['pets'] = $new_pets;
- $data['modules'][] = $deal;
- $res_topics = array();
- $conditions = array(
- 'group'=>array('in',$group_ids),
- 'status'=>array('==',1),
- 'time'=>array('>=',time()-3600*$last_visit_hours)
- );
- //最新最热帖排序规则
- $order = $get_new?['_id'=>'desc']:['like_count'=>'desc'];
- $model = new Topic();
- $pagedata = CommonFn::getPagedata($model,1,200,$conditions,$order,false);
- $topics = $pagedata['res'];
- foreach($topics as $topic){
- $res_topics[] = $topic['_id'];
- }
- $data['topics'] = $res_topics;
- $cache_data = array();
- $cache_data['data'] = $data;
- $cache->set($cache_key.'v4',serialize($cache_data),3600);
- }
- $res_topics = array();
- $topics = $data['topics'];
- $skip = 20*$page-20;
- if($skip+20 >= count($topics)){
- $has_more = 0;
- }else{
- $has_more = 1;
- }
- $topics_ids = array_slice($topics,$skip,20);
- $model = new Topic();
- foreach ($topics_ids as $key => $topic_id) {
- $_topic = $model->parseRow(Topic::get(new MongoId($topic_id)),array('id','content','city_info','city_info_str','city_topic_str','time','time_str','group','visit_count','reply_count','fav_count','like_count','user','pics','voice','video','last_post_time','last_post_time_str'));
- if($user){
- $z_like = new ZLike();
- $like = $z_like->getLikeByLikeObj((string)$user['_id'],$_topic['id']);
- if(empty($like)){
- $_topic['is_liked'] = false;
- }else{
- $_topic['is_liked'] = true;
- }
- }else{
- $_topic['is_liked'] = false;
- }
- $res_topics[] = $_topic;
- }
- $data['topics'] = $res_topics;
- //首页轮播图
- $province_tag = isset($city_info['province'])?$city_info['province']:'no';
- $slide = Slide::getIndexSlide($province_tag);
- $data['slide'] = $slide;
- if(isset($add_score['status'])){
- $score_info['score_change'] = $add_score['score'];
- $score_info['current_score'] = $add_score['current_score'];
- $score_info['score_type'] = '签到';
- CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data,303,$score_info);
- }else{
- CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data,200,array('has_more'=>$has_more,'last_visit_hours' =>$last_visit_hours));
- }
- }
- }
|