alias('team') ->field('team.*, user.nickName, user.avatarUrl') ->with(['referee','grade']) ->join('user', 'user.user_id = team.user_id') ->where('team.is_delete', '=', 0) ->order(['team.create_time' => 'desc']); // 查询条件 if (!empty($search)) { $model = $model->where('user.nickName|team.real_name|team.mobile', 'like', '%' . $search . '%'); } // 获取列表数据 $list = $model->paginate($limit); foreach ($list as $user){ $user['total_money'] = sprintf('%.2f', $user['money'] + $user['freeze_money'] + $user['total_money']); } return $list; } /** * 编辑队长用户 * @param $data * @return bool */ public function edit($data) { return $this->save($data) !== false; } /** * 删除队长用户 * @return mixed */ public function setDelete() { return $this->transaction(function () { // 获取一级团队成员ID集 $RefereeModel = new RefereeModel; // 清空下级推荐记录 $RefereeModel->onClearTeam($this['user_id']); // 标记当前队长记录为已删除 return $this->save([ 'is_delete' => 1 ]); }); } /** * 一级团队成员归属到平台 * @param $userIds * @return false|int */ private function setFromplatform($userIds) { return $this->where('user_id', 'in', $userIds) ->where('is_delete', '=', 0) ->save(['referee_id' => 0]); } /** * 递减队长成员数量 */ private function setDecTeamNum($team_id, $level, $number) { $field = [1 => 'first_num', 2 => 'second_num', 3 => 'third_num']; return $this->where('user_id', '=', $team_id) ->where('is_delete', '=', 0) ->dec($field[$level], $number); } /** * 提现打款成功:累积提现佣金 */ public static function totalMoney($user_id, $money) { $model = self::detail($user_id); return $model->save([ 'freeze_money' => $model['freeze_money'] - $money, 'total_money' => $model['total_money'] + $money, ]); } /** * 提现驳回:解冻队长资金 */ public static function backFreezeMoney($user_id, $money) { $model = self::detail($user_id); return $model->save([ 'money' => $model['money'] + $money, 'freeze_money' => $model['freeze_money'] - $money, ]); } /** * 删除用户的上级推荐关系 * @param $userId * @return bool * @throws \think\Exception */ public function onDeleteReferee($userId) { // 获取推荐人列表 $list = RefereeModel::getRefereeList($userId); if (!$list->isEmpty()) { // 递减推荐人的下级成员数量 foreach ($list as $item) { $item['team1'] && $this->setDecTeamNum($item['team_id'], $item['level'], 1); } // 清空上级推荐关系 (new RefereeModel)->onClearReferee($userId); } return true; } /** * 获取平台的总销售额 */ public function getTotalMoney($type = 'all_money') { $model = $this; if($type == 'money'){ return $model->sum('money'); } else if($type == 'freeze_money'){ return $model->sum('freeze_money'); } else if($type == 'total_money'){ return $model->sum('total_money'); } else if($type == 'all_money'){ return $model->sum('total_money') + $model->sum('freeze_money') + $model->sum('money'); } return 0; } /** * 指定会员等级下是否存在用户 */ public static function checkExistByGradeId($gradeId) { $model = new static; return !!$model->where('grade_id', '=', (int)$gradeId) ->where('is_delete', '=', 0) ->value('user_id'); } }