businessCardSelect($memberSearch,$siteId); break; case 'distributor': // 经销商用户选择器 $model = $this->distributorSelect($memberSearch,$siteId); break; default: $model = $this->defaultSelect($memberSearch,$siteId); } $result = $model->paginate(['list_rows' => $pageSize,'page' => $page]); if($result) $result = $result->toArray(); $list = [ 'count' => $result['total'], 'list' => $result['data'], 'page_count' => $result['last_page'], ]; return $this->success($list); } /** * Common: 用戶选择器 —— 默认 * Author: wu-hui * Time: 2022/10/20 14:54 * @param $memberSearch * @param $siteId * @return Member */ private function defaultSelect($memberSearch,$siteId){ $field = [ 'member_id', 'headimg', 'nickname', 'point', 'balance' ]; return $this ->field($field) ->where('site_id',$siteId) ->where('is_delete',0) ->where( 'mobile|email|nickname', 'like', "%{$memberSearch}%"); } /** * Common: 用户选择器 —— 名片用户选择 * Author: wu-hui * Time: 2022/10/20 14:52 * @param $memberSearch * @param $siteId * @return mixed */ private function businessCardSelect($memberSearch,$siteId){ $field = [ 'a.member_id', 'a.headimg', 'a.nickname', 'a.point', 'a.balance', 'min(b.status) as min_status', 'min(b.delete_time)', 'b.id' ]; return $this ->field($field)->alias('a') ->join('business_card b','a.member_id = b.member_id','LEFT') ->where('a.site_id',$siteId) ->where('a.is_delete',0) ->having('min(b.delete_time) > 0 OR min(b.member_id) IS NULL ') ->where('a.mobile|a.email|a.nickname', 'like', "%{$memberSearch}%") ->order('a.member_id DESC,b.id DESC') ->group('a.member_id'); } /** * Common: 用户选择器 —— 经销商 * Author: wu-hui * Time: 2022/11/21 18:06 * @param $memberSearch * @param $siteId * @return mixed */ private function distributorSelect($memberSearch,$siteId){ $field = [ 'a.member_id', 'a.headimg', 'a.nickname', 'a.point', 'a.balance' ]; return $this ->field($field)->alias('a') ->join('distributor b','a.member_id = b.member_id','LEFT') ->where('a.site_id',$siteId) ->where('a.is_delete',0) ->having('min(b.delete_time) > 0 OR min(b.member_id) IS NULL ') ->where('a.mobile|a.email|a.nickname', 'like', "%{$memberSearch}%") ->order('a.member_id DESC,b.id DESC') ->group('a.member_id'); } /** * Common: 获取文章详情中的显示用户信息 * Author: wu-hui * Time: 2022/11/03 13:36 * @param $memberId * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getArticleMemberInfo($memberId){ // 获取用户信息 $info = $this ->field('member_id,share_member,nickname,mobile,headimg,is_fenxiao,level_expire_time') ->where('member_id',$memberId) ->find(); if($info) $info = $info->toArray(); // 当前用户存在推荐人且本人不是分销商-显示推荐人信息,不存在推荐人或者本人是分销商-显示本人信息 if($info['share_member'] > 0 && $info['is_fenxiao'] != 1){ $shareMember = $this ->field('nickname,mobile,headimg') ->where('member_id',$info['share_member']) ->find(); $info['nickname'] = $shareMember['nickname']; $info['mobile'] = $shareMember['mobile']; $info['headimg'] = $shareMember['headimg']; } // 信息处理 $info['nickname'] = desensitizationHandle($info['nickname'],1,0); $info['mobile'] = desensitizationHandle($info['mobile'],3,4); // 当:本人不是分销商或者会员卡已过期-显示升级名片,本人是分销商且会员卡未过期-显示我要分享 if($info['is_fenxiao'] != 1 || $info['level_expire_time'] <= time())$info['show_type'] = 'upgrade'; else $info['show_type'] = 'share'; return $info; } /** * Common: 获取个人名片中的个人中心的用户信息 * Author: wu-hui * Time: 2022/11/04 16:42 * @param $memberId * @return array * @throws \think\db\exception\DbException */ public function getBusinessCardInfo($memberId){ // 获取用户信息 $field = [ 'm.member_id', 'm.headimg', 'm.nickname as member_nickname', 'm.level_expire_time', 'm.member_level_name', 'm.balance_money', 'bc.id as card_id', 'bc.is_show', 'bc.auto_examine', 'bc.agreement', ]; $info = (new Cards())->getSingleInfo($memberId,$field)['data']; $info['level_status'] = 0; // 未开通 // 会员卡是否有效 if($info['level_expire_time'] > time()) { $info['level_status'] = 1; // 正常 $info['level_expire_time'] = date('Y-m-d',$info['level_expire_time']); }else if($info['level_expire_time'] > 0 && $info['level_expire_time'] <= time()){ $info['level_status'] = 2; // 过期 } // 获取统计信息 $info['total_share'] = (new ShareRecord())->where('member_id',$memberId)->where('type',1)->count(); $info['total_fabulous'] = (new ArticleFabulous())->where('member_id',$memberId)->count(); $info['total_history'] = (new ArticleHistory())->where('member_id',$memberId)->count(); $info['integral'] = (new Member())->where('member_id',$memberId)->value('point'); // 获取名片设置信息 $info['set'] = (new Config())->getConfigInfo('BUSINESS_CARD_SETTING'); // 获取可提现金额 $info['account'] = (float)$info['balance_money']; return $this->success($info); } /** * Common: 关联会员卡 * Author: wu-hui * Time: 2022/10/28 17:19 * @return \think\model\relation\HasOne */ public function level(){ return $this->hasOne(MemberLevel::class,'level_id','member_level'); } }