admin->id); $end = Redis::hGet('CRM:USER:ONLINE:END', $request->admin->id); if(!empty($lastTime) && time() - $lastTime <= 5 * 60) { } elseif(empty($lastTime) && $end) { $has = Onlines::where("admin_id", $request->admin->id)->order('id desc')->find(); if($has && empty($has->end)) { Onlines::where("id", $has->id)->update(['end' => $end]); }else{ $start = Redis::hGet('CRM:USER:ONLINE', $request->admin->id); //创建一个新的 Onlines::create([ 'admin_id' => $request->admin->id, 'start' => $start, 'end' => $end ]); } //创建一个新的 Onlines::create([ 'admin_id' => $request->admin->id, 'start' => time(), 'end' => 0 ]); } else { //第一次,给建个新的 Onlines::create([ 'admin_id' => $request->admin->id, 'start' => time(), 'end' => 0 ]); } Redis::Set('CRM:USER:ONLINE:'.$request->admin->id, time(), 'ex', 10 *60); Redis::hSet('CRM:USER:ONLINE:END', $request->admin->id, time() + 60); $new = Redis::get('CRM:USER:ONLINE:NEW:'.$request->admin->id); Redis::del('CRM:USER:ONLINE:NEW:'.$request->admin->id); $back = Redis::set('CRM:USER:ONLINE:FOLLOW:LOCK:'. $request->admin->id, time(), 'EX', 60, 'nx'); $follow = $backs = 0; if($back) { $follow = Orders::where('admin_id', $request->admin->id)->whereBetween('next_follow',[1,(time()-60)*1000])->count(); $backs = Backs::where('admin', $request->admin->id)->where('status', 0)->count(); } return $this->success(['new'=> $new ??0, 'follow'=> $follow,'back' => $backs]); } public function line() { $time = strtotime(date('Y-m-d')); $data = []; for($i=10; $i>0; $i--) { $_time = $time - 3600*24*$i; $d = Finances::whereBetween('create_time', [$_time, $_time + 24*3600-1]) ->where('status',1) ->fieldRaw('SUM(IF(type=1,`total`,0))/100 as total, SUM(IF(type=2,`total`,0))/100 as refund') ->find(); $d->date = date("m-d", $_time); $data[] = $d; } $_data = []; foreach($data as $d) { $_data['title'][] = trim($d->date); $_data['total'][] = $d->total ??0; $_data['refund'][] = abs($d->refund ??0); } return $this->success($_data); } public function orders(Request $request) { $order = Orders::where('admin_id', $request->admin->id)->fieldRaw('SUM(IF(status=0,1,0)) as wait, SUM(IF(status=1,1,0)) as doing, SUM(total_price) as total,count(id) as `all`')->find(); return $this->success(['wait' => $order->wait ?? 0,'doing' => $order->doing ?? 0,'total' => $order->total ?? 0,'all' => $order->all ?? 0 ]); } public function pie() { $time = strtotime(date('Y-m-d')); $_time = $time - 3600*24*10; $data = Orders::whereBetween('create_time', [$_time, time()])->fieldRaw('sum(total_price) as value, status')->group('status')->select(); $ddd = []; foreach(Orders::StatusName as $k=>$d) { $item['name'] = $d; $item['value'] = 0; foreach($data as $dd) { if($dd->status == $k) { $item['value'] = $dd->value/100; break; } } $ddd[] = $item; } return $this->success($ddd); } public function Info(Request $request) { $info = Admins::where('id', $request->admin->id)->find(); return $this->success([ 'roles'=> [$info->is_super ? 'admin': 'editor'], 'avatar'=> $info->avatar ?? '/avatar.webp', 'name'=> $info->name, 'is_anchor'=> $info->is_anchor ?1:0, 'oss'=> Orders::OSS ]); } public function qiniu() { // 用于签名的公钥和私钥 $accessKey = config('qiniu.accessKey'); $secretKey = config('qiniu.secretKey'); // 初始化签权对象 $auth = new Auth($accessKey, $secretKey); $bucket = 'tt-api'; $key = 'imgs/'.Date('Ym/d-His').'.jpg'; // 生成上传Token $token = $auth->uploadToken($bucket); return $this->success(['qiniu_key'=> $key, 'qiniu_token' => $token,'qiniu_url' => 'http://up-z2.qiniup.com']); } public function avatar(Request $request) { $file = $request->file("file"); $filename = '/uploads/avatar/'.$request->admin->id.'.'.$file->getUploadExtension(); $file->move(public_path().$filename); $item = Admins::where('id', $request->admin->id)->find(); $item->avatar = $filename; $item->save(); return $this->success($filename); } }