where('status','neq','cancel'); } public function getIsPwdAttr($value, $data) { if(!isset($data['password'])) return ""; return $data['password'] == "" ? "N" : "Y"; } public function getInviteBindTimeAttr($value, $data) { return $value == "0" ? "" : date("Y-m-d H:i:s",$value); } public function getPddAuthorityAttr($value, $data) { if(!defined($value)) return 0; return MOBILE_INFO == 'IOS' ? $data['pdd_authority_ios'] : $data['pdd_authority_android']; } public function getCreatetimeAttr($value, $data) { return empty($value) ? "未知" : date("Y-m-d H:i:s",$value); } /** * 获取头像 * @param string $value * @param array $data * @return string */ public function getAvatarAttr($value, $data) { if (!$value) { //如果不需要启用首字母头像,请使用 //$value = '/assets/img/avatar.png'; $value = cdnurl(config('site.default_avatar')); }else{ if(stripos($value,'http') !== false){ return $value; }else{ return cdnurl($value); } } return $value; } /** * 获取会员的组别 */ public function getGroupAttr($value, $data) { return UserGroup::get($data['group_id']); } /** * 获取验证字段数组值 * @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; } public function userLevel(){ return $this->hasOne('UserLevel','level','level')->field('level,level_name')->bind('level_name'); } /** * 设置验证字段 * @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($type,$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; $money = round($money,2); if($type == 'dec'){ $after = function_exists('bcsub') ? bcsub($user->money, $money, 2) : $user->money - $money; $money = '-'.$money; }else if($type == 'inc'){ $after = function_exists('bcadd') ? bcadd($user->money, $money, 2) : $user->money + $money; } //更新会员信息 $user->save(['money' => $after]); $res = Moneylog::create(['user_id' => $user_id,'money' => $money, 'before' => $before, 'after' => $after, 'memo' => $memo]); } Db::commit(); } catch (\Exception $e) { dump($e->getMessage());exit; 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; } public function wechat() { return $this->hasOne(ModelThird::class,'user_id','id')->where('platform','wechat'); } }