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;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |