RUser.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /**
  3. * User: charlie
  4. * 用户模型
  5. */
  6. class RUser extends MongoAr
  7. {
  8. public $_id;
  9. public $user_name;
  10. public $sex = 3; //性别 1男 2女 3不告诉你
  11. public $avatar = ''; //头像七牛的地址
  12. public $channel = ''; //注册渠道
  13. public $register_time; //注册时间
  14. public $openid; //微信和微博授权登陆的用户才有
  15. public $wx_pub_openid; //微信公众号openid
  16. public $city_info = array(); ////用户所属的城市信息 不限定城市的圈子,该字段就为空 "province"=>"上海","city"=>"上海","area"=>"浦东" 或者 "province"=>"江苏","city"=>"苏州","area"="昆山"
  17. public $position=array(); //用户的坐标
  18. public $unionid; //微信授权登陆用户才有 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
  19. public $address = array(); //用户地址列表
  20. public $wx_have_follow = 0; //用户是否关注微信公众号
  21. public $order_count = 0; // 用户有效订单总数
  22. public $shop_address = array(); //用户收货地址列表
  23. public $balance = 0;//账户余额
  24. public function __construct($scenario='insert'){
  25. $this->setMongoDBComponent(Yii::app()->getComponent('mongodb_data'));
  26. parent::__construct($scenario);
  27. $this->onBeforeValidate = function($event){
  28. $model = $event->sender;
  29. };
  30. }
  31. public static function model($className=__CLASS__)
  32. {
  33. return parent::model($className);
  34. }
  35. public function getCollectionName()
  36. {
  37. return 'users';
  38. }
  39. public static function get($_id) {
  40. if(CommonFn::isMongoId($_id)){
  41. $criteria = new EMongoCriteria();
  42. $criteria->_id('==', $_id);
  43. $model = self::model()->find($criteria);
  44. return $model;
  45. }else{
  46. return false;
  47. }
  48. }
  49. /**
  50. * 根据用户name返回用户
  51. */
  52. public static function getUserByName($user_name){
  53. $criteria = new EMongoCriteria();
  54. $criteria->user_name('==', $user_name);
  55. $user = self::model()->find($criteria);
  56. return $user;
  57. }
  58. public function parseRow($row,$output=array(),$no_cache = false){
  59. $newRow = array();
  60. $newRow['id'] = (string)$row['_id'];
  61. $newRow['sex'] = CommonFn::get_val_if_isset($row,'sex',3);
  62. $newRow['avatar'] = CommonFn::get_val_if_isset($row,'avatar',Yii::app()->params['defaultUserAvatar']);
  63. if($newRow['avatar']==''){
  64. $newRow['avatar'] = Yii::app()->params['defaultUserAvatar'];
  65. }
  66. $newRow['order_count'] = CommonFn::get_val_if_isset($row, 'order_count', 0);
  67. $newRow['balance'] = CommonFn::get_val_if_isset($row, 'balance', 0);
  68. $newRow['openid'] = CommonFn::get_val_if_isset($row,'openid','');
  69. $newRow['wx_pub_openid'] = CommonFn::get_val_if_isset($row,'wx_pub_openid','');
  70. $newRow['longitude'] = isset($row['position'][0]) ? floatval($row['position'][0]) : 121;
  71. $newRow['latitude'] = isset($row['position'][1]) ? floatval($row['position'][1]) : 31;
  72. $newRow['address'] = CommonFn::get_val_if_isset($row,'address',array());
  73. if(is_array($newRow['address'])&&count($newRow['address'])){
  74. $shop_address = array();
  75. foreach($newRow['address'] as $address){
  76. $temp_addr = isset($address['province'])?$address['province']:'';
  77. $temp_addr = isset($address['city'])?$temp_addr.$address['city']:$temp_addr;
  78. $temp_addr = isset($address['area'])?$temp_addr.$address['area']:$temp_addr;
  79. $temp_addr = isset($address['poi']['name'])?$temp_addr.$address['poi']['name']:$temp_addr;
  80. $temp_addr = isset($address['detail'])?$temp_addr.$address['detail']:$temp_addr;
  81. $address['address_view'] = $temp_addr;
  82. $shop_address[] = $address;
  83. }
  84. $newRow['address'] = $shop_address;
  85. }else{
  86. $newRow['address'] = array();
  87. }
  88. $newRow['user_name'] = CommonFn::get_val_if_isset($row,'user_name','');
  89. $newRow['register_time'] = CommonFn::get_val_if_isset($row,'register_time',time());
  90. $newRow['register_time_str'] = CommonFn::sgmdate("Y年n月d日", $newRow['register_time'],1);
  91. $newRow['city_info'] = CommonFn::get_val_if_isset($row,'city_info',array("province"=>"","city"=>"","area"=>""));
  92. $newRow['shop_address'] = CommonFn::get_val_if_isset($row,'shop_address',array());
  93. if(is_array($newRow['shop_address'])&&count($newRow['shop_address'])){
  94. $shop_address = array();
  95. foreach($newRow['shop_address'] as $address){
  96. $temp_addr = isset($address['province'])?$address['province']:'';
  97. $temp_addr = isset($address['city'])?$temp_addr.$address['city']:$temp_addr;
  98. $temp_addr = isset($address['area'])?$temp_addr.$address['area']:$temp_addr;
  99. $temp_addr = isset($address['poi']['name'])?$temp_addr.$address['poi']['name']:$temp_addr;
  100. $temp_addr = isset($address['detail'])?$temp_addr.$address['detail']:$temp_addr;
  101. $address['address_view'] = $temp_addr;
  102. $shop_address[] = $address;
  103. }
  104. $newRow['shop_address'] = $shop_address;
  105. }else{
  106. $newRow['shop_address'] = array();
  107. }
  108. if(!isset($newRow['city_info']['province'])){
  109. $newRow['city_info']['province'] = '';
  110. }
  111. if(!isset($newRow['city_info']['city'])){
  112. $newRow['city_info']['city'] = '';
  113. }
  114. if(!isset($newRow['city_info']['area'])){
  115. $newRow['city_info']['area'] = '';
  116. }
  117. if(APPLICATION=='admin'){
  118. $newRow['channel'] = CommonFn::get_val_if_isset($row,'channel','');
  119. $newRow['unionid'] = CommonFn::get_val_if_isset($row,'unionid','');
  120. $newRow['action_user'] = CommonFn::get_val_if_isset($row,'action_user',"");
  121. $newRow['action_time'] = CommonFn::get_val_if_isset($row,'action_time',"");
  122. $newRow['action_log'] = CommonFn::get_val_if_isset($row,'action_log',"");
  123. //unset($newRow['status']);
  124. }
  125. return $this->output($newRow,$output);
  126. }
  127. }