144 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| namespace  app\common\model\user;
 | |
| 
 | |
| use app\common\basics\Models;
 | |
| use app\common\model\distribution\Distribution;
 | |
| use app\common\model\user\UserLevel;
 | |
| use app\common\model\distribution\DistributionOrderGoods;
 | |
| use app\common\server\UrlServer;
 | |
| use app\common\enum\ClientEnum;
 | |
| 
 | |
| class User extends Models
 | |
| {
 | |
|     public function getSexAttr($value)
 | |
|     {
 | |
|         switch ($value){
 | |
|             case 1:
 | |
|                 return '男';
 | |
|             case 2:
 | |
|                 return '女';
 | |
|             default:
 | |
|                 return '未知';
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function getBirthdayAttr($value)
 | |
|     {
 | |
|         return $value ? date('Y-m-d', $value) : $value;
 | |
|     }
 | |
| 
 | |
|     public function getLoginTimeAttr($value)
 | |
|     {
 | |
|         return date('Y-m-d H:i:s', $value);
 | |
|     }
 | |
| 
 | |
|     public function getAbsAvatarAttr($value)
 | |
|     {
 | |
|         return empty($value) ? '' : UrlServer::getFileUrl($value);
 | |
|     }
 | |
| 
 | |
|     public function getClientDescAttr($value, $data)
 | |
|     {
 | |
|         return ClientEnum::getClient($data['client']);
 | |
|     }
 | |
| 
 | |
|     public function getLevelNameAttr($value, $data)
 | |
|     {
 | |
|         $levelName = '-';
 | |
|         if($data['level']) {
 | |
|             $levelName = UserLevel::where(['id'=>$data['level'], 'del'=>0])->value('name');
 | |
|         }
 | |
|         return $levelName;
 | |
|     }
 | |
| 
 | |
|     public function getGroupNameAttr($value, $data) {
 | |
|         $groupName = '-';
 | |
|         if($data['group_id']) {
 | |
|             $groupName = UserGroup::where(['id'=>$data['group_id'], 'del'=>0])->value('name');
 | |
|         }
 | |
|         return $groupName;
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public function getFansAttr($value, $data){
 | |
|         $fans = User::where('find_in_set('. $data['id']. ',ancestor_relation)')->count();
 | |
|         return $fans;
 | |
|     }
 | |
| 
 | |
|     public function getDistributionOrderAttr($value, $data) {
 | |
|         $info = DistributionOrderGoods::alias('d')
 | |
|             ->leftJoin('order_goods g', 'g.id=d.order_goods_id')
 | |
|             ->leftJoin('order o', 'o.id=g.order_id')
 | |
|             ->field('count(d.id) as num, sum(d.money) as money, sum(o.order_amount) as amount')
 | |
|             ->where([
 | |
|                 'd.user_id' => $data['id'],
 | |
|                 'd.status' => 2, // 已结算
 | |
|             ])
 | |
|             ->find();
 | |
|         return $info;
 | |
|     }
 | |
| 
 | |
|     // 获取上级
 | |
|     public function getLeaderAttr($value, $data) {
 | |
|         $firstLeader = [];
 | |
|         if($data['first_leader']) {
 | |
|             $firstLeader = self::field('id,sn,nickname,mobile,level')->where('id', $data['first_leader'])->find()->toArray();
 | |
|             if($firstLeader['level']) {
 | |
|                 $firstLeader['levelName'] = UserLevel::where(['id'=>$firstLeader['level'], 'del'=>0])->value('name');
 | |
|             }else{
 | |
|                 $firstLeader['levelName']  = '-';
 | |
|             }
 | |
|         }
 | |
|         return $firstLeader;
 | |
|     }
 | |
| 
 | |
|     public function level()
 | |
|     {
 | |
|         return $this->hasOne(UserLevel::class,'id', 'level');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 根据user_id确认分销资格
 | |
|      */
 | |
|     public function confirmDistribution($user_id)
 | |
|     {
 | |
|         if ($this->where(['id'=>$user_id,'is_distribution'=>1,'freeze_distribution'=>0])->find()){
 | |
|             return true;
 | |
|         }
 | |
|         return false;
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function getDistributionAttr($value)
 | |
|     {
 | |
|         $distribution = Distribution::where('user_id', $value)->findOrEmpty()->toArray();
 | |
|         if (!empty($distribution) && $distribution['is_distribution'] == 1) {
 | |
|             return '是';
 | |
|         }
 | |
|         return '否';
 | |
|     }
 | |
| 
 | |
|     public function searchDistributionAttr($query, $value, $params)
 | |
|     {
 | |
|         // 非分销会员
 | |
|         if (isset($params['is_distribution']) && $params['is_distribution'] != 'all' && $params['is_distribution'] == 0) {
 | |
|             $ids = Distribution::where('is_distribution', 1)->column('user_id');
 | |
|             $query->where('id', 'not in', $ids);
 | |
|         }
 | |
|         // 分销会员
 | |
|         if (isset($params['is_distribution']) && $params['is_distribution'] != 'all' && $params['is_distribution'] == 1) {
 | |
|             $ids = Distribution::where('is_distribution', 1)->column('user_id');
 | |
|             $query->where('id', 'in', $ids);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static function getUserInfo($userId)
 | |
|     {
 | |
|         $user = self::field('id,sn,nickname,avatar')->findOrEmpty($userId)->toArray();
 | |
|         if (empty($user)) {
 | |
|             return '系统';
 | |
|         }
 | |
|         $user['avatar'] = empty($user['avatar']) ? '' : UrlServer::getFileUrl($user['avatar']);
 | |
|         return $user;
 | |
|     }
 | |
| } |