all(); $page_size=$input['page_size']; $page_index=$input['page_index']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $time=$input['time']; if(empty($time)){ $time=date("Y-m-d H:i:s"); } $where=[]; $where['level']=3; $data=User::where($where); if(!empty($time)){ $data->with(['user_pay'=>function($query)use($time){ $query->where('created_at','<=',$time)->orderByDesc('id'); }]); } if($search_name){ $data->where(function ($query) use ($search_name) { $query->where('nickname', 'like', '%' . $search_name . '%') ->orWhere('realname', 'like', '%' . $search_name . '%') ->orWhere('mobile', $search_name ); }); } $count=$data->count(); Log::error($count); if($count==0){ $this->error('400001','没有数据'); } $users=$data->select('id','nickname','realname','mobile','money','level')->get(); Log::error('time'.(time()-$st)); if(!empty($time)){ $totalMoney=0; foreach($users as $key=>$val){ if(count($val->user_pay)>0){ $totalMoney+=$val->user_pay[0]->user_money; }else{ Log::info($val); } } $totalMoney1=User::where('level',3)->sum('money'); }else{ $totalMoney=$data->sum('money'); } Log::error($totalMoney.'======'.$totalMoney1); $list['totalMoney']=round($totalMoney,2); $list['info']=$users; return $this->success_list($list,'获取数据成功',$count); } public function income(Request $request) { $input=$request->all(); $rules=[ 'user_id'=>'required', 'money'=>'required|regex:/^[0-9]+(.[0-9]{1,2})?$/', // 'remark'=>'required', 'style'=>'required' ]; $messages=[ 'user_id.required'=>'无客户信息.', 'money.required'=>'金额不能为空.', 'money.regex'=>'金额格式有误.', // 'remark.required'=>'备注不能为空.', 'style.required'=>'转账方式不能为空.' ]; $validator = Validator::make($input, $rules, $messages); if($validator->fails()){ return $this->error('400013',$validator->errors()->first()); } if($input['money']<=0){ return $this->error('450001','充值金额必须大于0元');} $user_id=$input['user_id']; $data['user_id']=$user_id; $data['pay_money']=$input['money']; $data['remark']=$input['remark']; $data['type']=0; $data['style']=$input['style']; $data['pay_num']=$this->pay_num($user_id); $data['op_name']=Auth::user()->name; $user=User::where('id',$user_id)->lockForUpdate()->first(); $cur_money=$user->money+$input['money']; $data['user_money']=$user->money=$cur_money; DB::beginTransaction(); $row=$user->save(); $res=UserPay::create($data); if($row && $res){ if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的充值金额已成功到账', 'keyword1' => number_format($input['money'],2), 'keyword2' => date("Y-m-d H:i"), 'keyword3' => number_format($cur_money,2), 'remark' => '点击链接进入系统,查看详情', ]; event(new AgentIncome($mes)); } DB::commit(); return $this->success([]); }else{ DB::rollback(); return $this->error(); } } public function export(Request $request){ $input=$request->all(); // $page_size=$input['page_size']; // $page_index=$input['page_index']; // $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $time=$input['time']; if(empty($time)){ $time=date("Y-m-d H:i:s"); } $where=[]; $where['level']=3; $data=User::where($where); if(!empty($time)){ $data->with(['user_pay'=>function($query)use($time){ $query->where('created_at','<=',$time)->orderByDesc('id'); }]); } if($search_name){ $data->where(function ($query) use ($search_name) { $query->where('nickname', 'like', '%' . $search_name . '%') ->orWhere('realname', 'like', '%' . $search_name . '%') ->orWhere('mobile', $search_name ); }); } $count=$data->count(); if($count==0){ $this->error('400001','没有数据'); } $users=$data->select('id','nickname','realname','mobile','money','level')->get(); if(!empty($time)){ $totalMoney=0; foreach($users as $key=>$val){ if(count($val->user_pay)>0){ $totalMoney+=$val->user_pay[0]->user_money; } } }else{ $totalMoney=$data->sum('money'); } $list['totalMoney']=round($totalMoney,2); $list['info']=$users; return $this->success_list($list,'获取数据成功',$count); } public function import(Request $request){ $input=$request->all(); // if(empty($input['style'])){ // return $this->error(40013,'转账方式不能为空'); // } if(empty($input['data'])){ return $this->error(40013,'充值信息不能为空'); } foreach ($input['data'] as $key=>$val){ if(empty($val['客户名称'])){ return $this->error(40013,'第'.($key+1).'位客户,名称不能为空'); } if(empty($val['手机号'])){ return $this->error(40013,'第'.($key+1).'位客户,手机号不能为空'); } $user=User::where('mobile',$val['手机号'])->first(); if (!$user){ return $this->error(40013,'客户'.$val['客户名称'].'('.$val['手机号'].')不存在'); } if(empty($val['金额']) || $val['金额']<=0){ return $this->error(40013,'客户'.$val['客户名称'].'('.$val['手机号'].')充值金额必须大于0元'); } if(!preg_match('/^[0-9]+(.[0-9]{1,2})?$/',$val['金额'])){ return $this->error(40013,'客户'.$val['客户名称'].'('.$val['手机号'].')充值金额格式有误'); } // if(empty($val['备注'])){ // return $this->error(40013,'客户'.$val['客户名称'].'充值备注不能为空'); // } } Log::error(111); DB::beginTransaction(); try{ foreach ($input['data'] as $key=>$val){ $users=User::where('mobile',$val['手机号'])->where('level',3)->first(); $user=User::where('id',$users->id)->lockForUpdate()->first(); $user->money=$user->money+$val['金额']; if(!$user->save()){ Log::error('批量充值失败(客户)'.$val['手机号']); } $userpay=new UserPay(); $userpay->pay_money=$val['金额']; $userpay->type=0; $userpay->op_name=Auth::user()->name; $userpay->user_id=$user->id; $userpay->pay_num=$this->pay_num($user->id); $userpay->user_money=$user->money; $userpay->remark=isset($val['备注'])?$val['备注']:""; $userpay->style=isset($val['转账方式'])?$val['转账方式']:""; if(!$userpay->save()){ Log::error('批量充值失败(支付)'.$val['手机号']); } // if($user->openid){ // $mes['openid']=$user->openid; // $mes['data']=[ // 'first' => '您的充值金额已成功到账', // 'keyword1' => number_format($val['金额'],2), // 'keyword2' => date("Y-m-d H:i"), // 'keyword3' => number_format($user->money,2), // 'remark' => '点击链接进入系统,查看详情', // ]; // AI::dispatch($mes); // } } DB::commit(); return $this->success([],'充值完成'); }catch (\Exception $exception){ DB::rollBack(); return $this->error(40013,'充值失败,出错客户手机号为'.$val['手机号']); } } //支付单号 public function pay_num($user_id){ $num=date('Ymd',time()).'100000'.str_pad($user_id,6,0,STR_PAD_LEFT).rand(11111,99999); $count=UserPay::where('pay_num',$num)->count(); if ($count>0){ $num=$this->pay_num($user_id); return $num; } return $num; } public function detail(Request $request) { $input=$request->all(); $user_id=$input['id']; $page_size=$input['page_size']; $page_index=$input['page_index']; $num = ($page_index - 1) * $page_size; $where=[]; $where['user_id']=$user_id; $userPay=UserPay::where($where); $user=[]; $user['info']=User::select('id','nickname','level','money')->where('id',$user_id)->first(); if($input['start_time'] && $input['end_time']){ $starTime=date("Y-m-d 00:00:00",strtotime($input['start_time'])); $endTime=date("Y-m-d 23:59:59",strtotime($input['end_time'])); $userPay=UserPay::whereBetween('created_at',[$starTime,$endTime])->where($where); } $userPay1=clone $userPay; $userPay2=clone $userPay; $user['incomeMoney']=$userPay1->whereIn('type',['0','2'])->sum('pay_money'); $user['spendingMoney']=$userPay2->whereIn('type',['1','3'])->sum('pay_money'); $user['total']=$userPay->count(); $user['list']=$userPay->select('id','pay_money','pay_num','created_at','type','style','remark','user_money') ->orderBy('id','desc')->skip($num)->take($page_size)->get(); // DB::raw('CONCAT("【",style,"】",remark) as remarks'), return $this->success($user); } public function deductions(Request $request) { $input=$request->all(); $rules=[ 'user_id'=>'required', 'money'=>'required|regex:/^[0-9]+(.[0-9]{1,2})?$/', 'remark'=>'required' ]; $messages=[ 'user_id.required'=>'无客户信息.', 'money.required'=>'金额不能为空.', 'money.regex'=>'金额格式有误.', 'remark.required'=>'备注不能为空.' ]; $validator = Validator::make($input, $rules, $messages); if($validator->fails()){ return $this->error('400013',$validator->errors()->first()); } if($input['money']<=0){ return $this->error('扣款金额必须大于0元');} $user_id=$input['user_id']; $user=User::where('id',$user_id)->first(); if($user->money-$input['money']<0){ return $this->error('扣款金额不能大于客户账户余额');} $data['user_id']=$user_id; $data['pay_money']=$input['money']; $data['remark']=$input['remark']; $data['type']=3; $data['pay_num']=$this->pay_num($user_id); $data['op_name']=Auth::user()->name; $data['user_money']=$user->money=$user->money-$input['money']; DB::beginTransaction(); $row=$user->save(); $res=UserPay::create($data); if($row && $res){ // if($user->openid){ // $mes['openid']=$user->openid; // $mes['data']=[ // 'first' => '后台人工操作扣款成功', // 'keyword1' => '-'.number_format($input['money'], 2), // 'keyword2' => number_format($user->money, 2), // 'keyword3' => date("Y-m-d H:i"), // 'keyword4' => '人工扣款', // 'remark' => $input['remark'].PHP_EOL.'点击链接进入系统,查看详情', // ]; // event(new OrderPay($mes)); // } DB::commit(); return $this->success([]); }else{ DB::rollback(); return $this->error(); } } //添加充值方式 public function addIncomeStyle(Request $request){ $input=$request->all(); $style=IncomeStyle::where('title',$input['title'])->first(); if($style){ return $this->error('450001','该方式已存在'); } $row=IncomeStyle::create([ 'title'=>$input['title'], 'admin'=>Auth::user()->name ]); if($row){ return $this->success([]); } return $this->error(); } //获取充值方式 public function getIncomeStyle(){ $list=IncomeStyle::all(); if($list){ return $this->success($list); } return $this->error(); } //删除充值转账方式 public function deleteIncomeStyle(Request $request){ $input=$request->all(); $res=IncomeStyle::where('id',$input['id'])->delete(); if($res){ return $this->success([]); } return $this->error(); } public function order_info(){ $arr_info=['menL'=> 153, 'menXL'=> 154, 'men2XL'=> 155, 'men3XL'=> 156, 'men4XL'=> 157, 'men5XL'=> 158, // 'womenM'=> 115, // 'womenL'=> 116, // 'womenXL'=> 117, // 'women2XL'=> 118, // 'women3XL'=> 119, // 'women4XL'=> 120 ]; $r=DB::table('red')->get(); $data=[]; // $all1=0; foreach ($r as $k=>$v){ $info=(array)$v; unset($info['id']); foreach ($info as $kes=>$vas){ if ($kes>3){ if (!$vas){ $info[$kes]=0; } if (is_numeric($vas)){ $info[$kes]=(int)$vas; } } } $info['tag']='预报'; $info['seq']=$k+1; $info['all']=40; $data[]=$info; $order=[]; $user_id=DB::table('users') ->where('mobile',$v->mobile)->value('id'); $order_id=DB::table('order') ->where('is_deleted',0) ->where('user_id',$user_id) ->where('created_at','>','2024-12-11 09:00:00') ->pluck('id'); $all1=0; foreach ($arr_info as $ke=>$va){ $num_in=DB::table('order_detail') ->whereIn('order_id',$order_id) ->where('goods_id',$va)->sum('num'); $order[$ke]=(int)$num_in; $all1+=$num_in; } $order['seq']=$k+1; // $order['all']=random_int(35,50); $order['all']=$all1; $order['nickname']=$v->nickname; $order['realname']=$v->realname; $order['mobile']=$v->mobile; $order['kefu']=$v->kefu; $order['tag']='实际下单'; $data[]=$order; } return $this->success($data); } }