UserRecord.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. class UserRecord{
  3. public static function get($id){
  4. $key = __CLASS__.$id;
  5. $cache = new ARedisCache();
  6. $res = $cache->getValue($key);
  7. if($res){
  8. return unserialize($res);
  9. }else{
  10. $user = RUser::get(new MongoId($id));
  11. if($user){
  12. $data = $user->parseRow($user);
  13. $cache->setValue($key,serialize($data));
  14. return $data;
  15. }else{
  16. return false;
  17. }
  18. }
  19. }
  20. public static function getCityUsers($city){
  21. if(!$city){
  22. return false;
  23. }
  24. $cache = new ARedisCache();
  25. $key = 'city_users_'.md5($city);
  26. $data_cache = $cache->get($key);
  27. $res = array();
  28. if($data_cache && false){
  29. $res = unserialize($data_cache);
  30. }else{
  31. $criteria = new EMongoCriteria;
  32. $criteria->city_info->city('==',$city);
  33. $criteria->certify_status('!=',1);
  34. $criteria->sort('topic_count',EMongoCriteria::SORT_DESC);
  35. $criteria->limit(30);
  36. $cursor = RUser::model()->findAll($criteria);
  37. $res = RUser::model()->parse($cursor,true,array('id','user_name','sex','avatar','level','city_info','pets','certify_status','certify_info','can_access','last_visit_time'));
  38. $cache->set($key,serialize($res),3600);
  39. }
  40. return $res;
  41. }
  42. public static function getCertifyUser($cerity_type = 'all'){
  43. $cache = new ARedisCache();
  44. $key = 'city_users_'.md5($cerity_type);
  45. $data_cache = $cache->get($key);
  46. $res = array();
  47. if($data_cache && false){
  48. $res = unserialize($data_cache);
  49. }else{
  50. $criteria = new EMongoCriteria;
  51. if($cerity_type != 'all' && !empty($cerity_type)){
  52. $criteria->certify_type('==',$cerity_type);
  53. }
  54. $criteria->sort('topic_count',EMongoCriteria::SORT_DESC);
  55. $criteria->certify_status('==',1);
  56. $criteria->limit(20);
  57. $cursor = RUser::model()->findAll($criteria);
  58. $res = RUser::model()->parse($cursor,true,array('id','user_name','sex','avatar','level','city_info','pets','certify_status','certify_info','can_access','last_visit_time'));
  59. $cache->set($key,serialize($res),3600);
  60. }
  61. return $res;
  62. }
  63. }