where('mobile', $mobile) ->find(); return $info; } /** * 根据邀请码获取会员信息 * @param $invitation_code * @return array|bool|\PDOStatement|string|Model|null */ public static function getByInvitationCode($invitation_code) { $info = self::where('invitation_code', $invitation_code) ->find(); return $info; } /** * 获取代理信息 * @param $invitation_code * @return array|null */ public static function getAgentRechargeInfoByAgentId($agent_id) { $data['usdt'] = ''; $data['bank'] = []; $data['agent_id'] = $agent_id; $info = self::where('id', $agent_id) ->where('is_agent', 1) ->where('is_lock', 0) ->where('is_delete', 0) ->find(); if(empty($info)){ //没找到代理时,默认显示系统配置 if((new Config())->getValue('recharge_usdt_switch')){ $data['usdt'] = (new Config())->getValue('recharge_usdt_address'); } if((new Config())->getValue('recharge_bank_switch')){ $data['bank']['bank_name'] = (new Config())->getValue('recharge_bank_name'); $data['bank']['bank_card'] = (new Config())->getValue('recharge_bank_card'); $data['bank']['account_name'] = (new Config())->getValue('recharge_account_name'); } $data['agent_id'] = 0; return $data; } if($info['agent_in_usdt']){ $data['usdt'] = $info['agent_usdt_address']; } if($info['agent_in_bank']){ $bank_info = $info['agent_bank_info']; $data['bank']['bank_name'] = $bank_info['bank_name']; $data['bank']['bank_card'] = $bank_info['bank_card']; $data['bank']['real_name'] = $bank_info['real_name']; } if(empty($data['usdt']) && empty($data['bank'])){ return []; } return $data; } /** * 获取代理信息 * @param $invitation_code * @return array|null */ public static function getAgentWithdrawInfoByAgentId($agent_id) { $data['agent_id'] = $agent_id; $info = self::where('id', $agent_id) ->where('is_agent', 1) ->where('is_lock', 0) ->where('is_delete', 0) ->find(); if(empty($info)){ //没找到代理时,默认显示系统配置 $data['usdt'] = (new Config())->getValue('withdraw_usdt_switch'); $data['bank'] = (new Config())->getValue('withdraw_bank_switch'); $data['agent_id'] = 0; return $data; } $data['usdt'] = $info['agent_out_usdt']; $data['bank'] = $info['agent_out_bank']; return $data; } /** * 获取头像 * @param string $value * @param array $data * @return string */ public function getAvatarAttr($value, $data) { if (!$value) { //如果不需要启用首字母头像,请使用 //$value = '/assets/img/avatar.png'; $value = letter_avatar($data['nickname']); } return $value; } /** * 获取验证字段数组值 * @param string $value * @param array $data * @return object */ public function getVerificationAttr($value, $data) { $value = array_filter((array)json_decode($value, true)); $value = array_merge(['email' => 0, 'mobile' => 0], $value); return (object)$value; } /** * 设置验证字段 * @param mixed $value * @return string */ public function setVerificationAttr($value) { $value = is_object($value) || is_array($value) ? json_encode($value) : $value; return $value; } /** * 变更会员余额 * @param int $money 余额 * @param int $user_id 会员ID * @param string $memo 备注 */ public static function money($money, $user_id, $memo) { Db::startTrans(); try { $user = self::lock(true)->find($user_id); if ($user && $money != 0) { $before = $user->money; //$after = $user->money + $money; $after = function_exists('bcadd') ? bcadd($user->money, $money, 2) : $user->money + $money; //更新会员信息 $user->save(['money' => $after]); //写入日志 MoneyLog::create(['user_id' => $user_id, 'money' => $money, 'before' => $before, 'after' => $after, 'memo' => $memo]); } Db::commit(); } catch (\Exception $e) { Db::rollback(); } } /** * 变更会员积分 * @param int $score 积分 * @param int $user_id 会员ID * @param string $memo 备注 */ public static function score($score, $user_id, $memo) { Db::startTrans(); try { $user = self::lock(true)->find($user_id); if ($user && $score != 0) { $before = $user->score; $after = $user->score + $score; $level = self::nextlevel($after); //更新会员信息 $user->save(['score' => $after, 'level' => $level]); //写入日志 ScoreLog::create(['user_id' => $user_id, 'score' => $score, 'before' => $before, 'after' => $after, 'memo' => $memo]); } Db::commit(); } catch (\Exception $e) { Db::rollback(); } } /** * 根据积分获取等级 * @param int $score 积分 * @return int */ public static function nextlevel($score = 0) { $lv = array(1 => 0, 2 => 30, 3 => 100, 4 => 500, 5 => 1000, 6 => 2000, 7 => 3000, 8 => 5000, 9 => 8000, 10 => 10000); $level = 1; foreach ($lv as $key => $value) { if ($score >= $value) { $level = $key; } } return $level; } }