nickname; } /** * 更新用户信息 * @param int $id 用户ID * @param array $params 可传 province、city、country、headimgurl、sex * @return boolen */ static function updateInfo($id, $params) { \Log::info('~~~~~~~~~~~~~~~~~====update User====~~~~~~~~~~~~~~~~' . "\n"); \Log::info($id); \Log::info($params); return User::updateInfo($id, $params); } /** * 根据union和分销id获取用户信息 * @param $union * @param $channel_id * @return mixed */ static function getUserByUnionAndChannelId($openid, $channel_id) { return User::where('openid', $openid)->where('distribution_channel_id', $channel_id)->select('id', 'openid', 'unionid')->first(); } /** * 用户余额充值 * @param $uid * @param $fee * @return mixed */ static function addBalance($uid, $fee, $charge, $given) { return User::addBalance($uid, $fee, $charge, $given); } /** * 查询推广注册用户总数 * @param $send_order_id * @return mixed */ static function getPromotionTotal($send_order_id) { return User::getPromotionTotal($send_order_id); } /** * 查询渠道某天注册用户总数 * @param $channel_id * @param $date * @return mixed */ static function getChannelDayTotal($channel_id, $date) { return User::getChannelDayTotal($channel_id, $date); } /** * 查询渠道注册用户总数 * @param $channel_id * @return mixed */ static function getChannelTotal($channel_id) { return User::getChannelTotal($channel_id); } /** * 查询渠道某段时间注册用户总数 * @param $channel_id * @param $startDate * @param $endDate * @return mixed */ static function getChannelDayToDayTotal($channel_id, $startDate = '', $endDate = '') { return User::getChannelDayToDayTotal($channel_id, $startDate, $endDate); } /** * 查询渠道某段时间注册用户总数 * @param array $channelIds * @param $startDate * @param $endDate * @return mixed */ static function getChannelsDayToDayTotal($channelIds, $startDate = '', $endDate = '') { return User::getChannelsDayToDayTotal($channelIds, $startDate, $endDate); } /** * 查询注册用户总数 * @param $params */ static function getTotalCount($params) { return User::getTotalCount($params); } /** * 查询渠道是否有登录 * @param $channelId * @param $start_time * @param $end_time * @return int */ static function judgeUserYesterdayLogin($channelId, $start_time, $end_time) { $user_behavior = DB::table('channel_operate_record') ->where([ ['distribution_channel_id', '=', $channelId], ['created_at', '>=', $start_time], ['created_at', '<=', $end_time] ]) ->first(); if ($user_behavior) return 1; return 0; } /** * @param $date * @param $company_id * @return mixed */ static function getCompanyDayTotal($date, $company_id) { $end_date = date('Y-m-d', strtotime($date) + 86400); $info = User::leftjoin('distribution_channels', 'distribution_channels.id', '=', 'users.distribution_channel_id') ->leftjoin('channel_users', 'channel_users.id', '=', 'distribution_channels.channel_user_id') ->where([ ['users.created_at', '>=', $date], ['users.created_at', '<', $end_date], ['channel_users.company_id', '=', $company_id] ]) ->groupBy('channel_users.company_id') ->select(DB::raw("count(users.id) as register_sum")) ->first(); if ($info) return $info->register_sum; //\Log::info('getCompanyDayTotal error:' . $company_id); return $info; } static function getCompanyTotal($company_id) { $info = User::leftjoin('distribution_channels', 'distribution_channels.id', '=', 'users.distribution_channel_id') ->leftjoin('channel_users', 'channel_users.id', '=', 'distribution_channels.channel_user_id') ->where('channel_users.company_id', $company_id) ->groupBy('channel_users.company_id') ->select(DB::raw("count(users.id) as register_sum")) ->first(); if ($info) return $info->register_sum; //\Log::error('getCompanyTotal error:' . $company_id); return $info; } static function transfromBalanceByUser($from_uid, $to_uid) { $add_balance_sql = "update users,(select * from users where id =" . $from_uid . ") as u2 set users.balance = users.balance + u2.balance, users.reward_balance = users.reward_balance +u2.reward_balance, users.charge_balance = users.charge_balance +u2.charge_balance where users.id =" . $to_uid; $res = DB::update($add_balance_sql); return User::updateInfo($from_uid, ['balance' => 0, 'reward_balance' => 0, 'charge_balance' => 0]); } public static function rfmLevel($uid,$register_timestamp){ $register_time_diff = time()-$register_timestamp; if($register_time_diff < 86400) return []; $order_result = Order::where('uid',$uid)->where('status','PAID')->select('id','price','created_at')->orderBy('id','desc')->get(); if($order_result->count() <= 0){ return ['r'=>0,'f'=>0,'m'=>0]; } if($register_time_diff < 3*86400){ $after_one_day_charge = []; $charge_max_amount = 0; $in_one_day_charge = []; $in_one_hour_charge = []; foreach ($order_result as $item){ $charge_max_amount = $item->price > $charge_max_amount? $item->price:$charge_max_amount; if( ($item->created_at->timestamp - $register_timestamp) >= 86400 ){ $after_one_day_charge[] = $item->price; }else{ $in_one_day_charge[] = $item->price; if( ($item->created_at->timestamp - $register_timestamp) <= 3600 ){ $in_one_hour_charge[] = $item->price; } } } if($after_one_day_charge_count = count($after_one_day_charge) >0){ return ['r'=>2,'f'=>$after_one_day_charge_count>1 ? 2:1,'m'=>$charge_max_amount>30 ?2:1]; }elseif(count($in_one_day_charge) >0){ if($in_one_day_charge_count = count($in_one_day_charge) == count($in_one_hour_charge)){ return ['r'=>1,'f'=>$in_one_day_charge_count >1?2:1,'m'=>$charge_max_amount>30 ?2:1]; }else{ return ['r'=>2,'f'=>$in_one_day_charge_count >1?2:1,'m'=>$charge_max_amount>30 ?2:1]; } } } if($register_time_diff < 18*86400){ $after_three_day_charge = []; $charge_max_amount = 0; $in_three_day_charge = []; $in_one_hour_charge = []; foreach ($order_result as $item){ $charge_max_amount = $item->price > $charge_max_amount? $item->price:$charge_max_amount; if( ($item->created_at->timestamp - $register_timestamp) >= 3*86400 ){ $after_three_day_charge[] = $item->price; }else{ $in_three_day_charge[] = $item->price; if( ($item->created_at->timestamp - $register_timestamp) <= 3600 ){ $in_one_hour_charge[] = $item->price; } } } if($after_three_day_charge_count = count($after_three_day_charge) >0){ return ['r'=>2,'f'=>$after_three_day_charge_count>1 ? 2:1,'m'=>$charge_max_amount>30 ?2:1]; }elseif(count($in_three_day_charge) >0){ if($in_three_day_charge_count = count($in_three_day_charge) == count($in_one_hour_charge)){ return ['r'=>1,'f'=>$in_three_day_charge_count >1?2:1,'m'=>$charge_max_amount>30 ?2:1]; }else{ return ['r'=>2,'f'=>$in_three_day_charge_count >1?2:1,'m'=>$charge_max_amount>30 ?2:1]; } } } $latest_18_day_charge_count = $order_result->where('created_at','>=',date('Y-m-d H:i:s',time()-360*3600))->count(); $latest_18_day_charge_max_amount = $order_result->where('created_at','>=',date('Y-m-d H:i:s',time()-360*3600))->max('price'); if(time() - $order_result->first()->created_at->timestamp <= 360*3600){ return ['r'=>2,'f'=>$latest_18_day_charge_count >1?2:1,'m'=>$latest_18_day_charge_max_amount>30 ?2:1]; } return ['r'=>1,'f'=>$latest_18_day_charge_count >1?2:1,'m'=>$latest_18_day_charge_max_amount>30 ?2:1]; } }