=',strtotime($get['start_time'])]; } if(isset($get['end_time']) && $get['end_time']!=''){ $where[] = ['create_time','<=',strtotime($get['end_time'])]; } //订单的来源 $channel = Db::name('orderchannel')->column('name','id'); //订单的类型 $brand = Db::name('goods_brand')->where('del',0)->column('name','id'); $order_count = Db::name('order') ->where($where) ->count(); $order_list = Db::name('order') ->where($where) ->field('password,pay_password,salt',true) ->page($get['page'],$get['limit']) ->order('id desc') ->select(); foreach ($order_list as &$item){ $item['channel'] = '系统自助下单'; $item['create_time']=date("Y-m-d",$item['create_time']); if(isset($channel[$item['channel_id']])){ $item['channel'] = $channel[$item['channel_id']]; } if(isset($brand[$item['type_id']])){ $item['brand'] = $brand[$item['type_id']]; } //获取到用户信息 $user=Db::name('user_address')->where('id',$item['user_id'])->find(); if($user){ $item['nickname']=$user['contact']; if($user['wx']==2){ $item['wx']='已添加企业微信'; }else{ $item['wx']='未添加企业微信'; } $item['areas']=$user['areas']; $item['staff_remarks']=$user['staff_remarks']; $item['admin_remarks']=$user['admin_remarks']; $item['pet']=$user['pet']; $item['hbl']=$user['hbl']; } $userimg=Db::name('user')->where('id',$item['user_id'])->find(); if($userimg){ $item['avatar']=$userimg['avatar']; } //获取订单的商品 $goods=Db::name('goods')->where('id',$item['goods_id'])->find(); if($goods){ $item['goods_name']=$goods['name']; } $item['sycs']=Db::name('order_exe')->where('order_sn',$item['order_sn'])->where('status',1)->count(); if($item['code']==0){ $update=Db::name('order')->where('order_sn',$item['order_sn'])->update(['static'=>2]); } if($item['number']==$item['sycs']){ $update=Db::name('order')->where('order_sn',$item['order_sn'])->update(['static'=>2]); } } return ['count'=>$order_count , 'lists'=>$order_list]; } /** * 选择客户的列表 * @param $get * @return array */ public static function getUserList($get,$is_item = false){ $where = []; $where[] = ['del', '=', '0']; //根据客户电话查询 if(isset($get['phone']) && $get['phone'] != ''){ $phone=Db::name('user_address')->whereLike('phone',$get['phone'])->find(); $where[] = ['user_id','=',$phone['user_id']]; } //根据客户姓名查询 if(isset($get['name']) && $get['name'] != ''){ $phone=Db::name('user_address')->whereLike('consignee',$get['name'])->find(); $where[] = ['user_id','=',$phone['user_id']]; } $goods_count = Db::name('user') ->where($where) ->count(); $goods_list = Db::name('user') ->where($where) ->page($get['page'], $get['limit']) ->column('*','id'); foreach ($goods_list as &$item) { $item['avatar'] = UrlServer::getFileUrl($item['avatar']); $adder=Db::name('user_address')->where('user_id',$item['user_id'])->find(); $item['phone']= $adder['phone']; $item['name']= $adder['consignee']; } return ['count' => $goods_count, 'list' =>array_values($goods_list)]; } /** * 增加预排的订单 * @param $get * @return array */ public static function add($post,$admin){ $orderinfo=OrderLogic::orderinfo($post['order_sn']); $logdate=[ 'admin_id'=>$admin, 'order_sn'=>$orderinfo['id'], 'show'=>'创建预排订单', 'cram_time'=>time() ]; $log=Db::name('log_order')->data($logdate)->insert(); $count=count(explode(',',$post['privilege'])); $staff=explode(',',$post['privilege']); $post['fworder_sn']=createSn('order_exe', 'fworder_sn', '', 6); //非常固定单执行的代码 if($post['type']==3){ for($i=0;$i<$post['number'];$i++){ $data=[ 'order_sn'=>$post['order_sn'], 'remark'=>$post['remark'], 'create_time'=>time(), 'fworder_sn'=> $post['fworder_sn'], 'date'=>$post['end_time'], 'xq'=>UserLogic::Get_Chinese_WeekDay($post['end_time']), 'type'=>$post['type'], 'status'=>0, 'addtime'=>$post['addtim'], 'autotime'=>strtotime($post['end_time']), ]; $list=Db::name('order_exe')->data($data)->insert(); } if($list){ $order=db::name('order')->where('order_sn',$post['order_sn'])->update(['code'=>$orderinfo['code']-$post['number']]); return $list; } } //判断日期固定派单 else if($post['type']==1){ if($post['datas']==''){ return $list=3; } //段一个人去执行的炒作 for($s=0;$s<$count;$s++){ $data=[ 'order_sn'=>$post['order_sn'], 'staff_id'=>$staff[$s++], 'remark'=>$post['remark'], 'create_time'=>time(), 'fworder_sn'=> $post['fworder_sn'], 'xq'=>UserLogic::Get_Chinese_WeekDay($post['end_time']), 'type'=>3, 'status'=>0, 'addtime'=>$post['addtims'], 'autotime'=>strtotime($post['end_time']), ]; for($i=0;$i<$post['datas'];$i+1){ $number=$post['datatime']*$i++; $time=strtotime($post['end_time']); $seconds_to= $number*24*60*60; $data['autotime']=$time+$seconds_to; $data['date']=date("Y-m-d H:i:s", $data['autotime']);; $list=Db::name('order_exe')->data($data)->insert(); } if($list){ $order=db::name('order')->where('order_sn',$post['order_sn'])->update(['code'=>$orderinfo['code']-$post['datas']]); return $list; } } return $list; } else if($post['type']==2){ if($count!=(int)$post['number']){ return $list=3; } if(isset($post['arr1_data'])) { $data1=$post['arr1_data']; }else{ $data1=[]; } //判断获取数组二为空 if(isset($post['arr2_data'])) { $data2=$post['arr2_data']; }else{ $data2=[]; } foreach($data1 as $v=>$k){ foreach($data1[$v] as $item=>$s){ $data1[$v][$item]['order_sn']=$post['order_sn']; $data1[$v][$item]['fworder_sn']= $post['fworder_sn']; $data1[$v][$item]['create_time']=time(); $data1[$v][$item]['addtime']=1; $data1[$v][$item]['staff_id']=$staff[0]; $data1[$v][$item]['remark']=$post['remark']; } } foreach($data2 as $v=>$k){ foreach($data2[$v] as $item=>$s){ $data2[$v][$item]['order_sn']=$post['order_sn']; $data2[$v][$item]['fworder_sn']= $post['fworder_sn']; $data2[$v][$item]['create_time']=time(); $data2[$v][$item]['addtime']=2; $data2[$v][$item]['staff_id']=$staff[0]; $data2[$v][$item]['remark']=$post['remark']; } } $data=array_merge($data1,$data2); $one_dimensional_array = call_user_func_array('array_merge', $data); foreach($one_dimensional_array as $v=>$k){ $list=Db::name('order_exe')->data($one_dimensional_array[$v])->insert(); } //判断是不是俩个人 if($count==2){ $data1=$post['arr1_data']; //判断获取数组二为空 if(isset($post['arr2_data'])) { $data2=$post['arr2_data']; }else{ $data2=[]; } foreach($data1 as $v=>$k){ foreach($data1[$v] as $item=>$s){ $data1[$v][$item]['order_sn']=$post['order_sn']; $data1[$v][$item]['fworder_sn']= $post['fworder_sn']; $data1[$v][$item]['create_time']=time(); $data1[$v][$item]['addtime']=1; $data1[$v][$item]['staff_id']=$staff[1]; $data1[$v][$item]['remark']=$post['remark']; } } foreach($data2 as $v=>$k){ foreach($data2[$v] as $item=>$s){ $data2[$v][$item]['order_sn']=$post['order_sn']; $data2[$v][$item]['fworder_sn']= $post['fworder_sn']; $data2[$v][$item]['create_time']=time(); $data2[$v][$item]['addtime']=2; $data2[$v][$item]['staff_id']=$staff[1]; $data2[$v][$item]['remark']=$post['remark']; } } $data=array_merge($data1,$data2); $one_dimensional_array = call_user_func_array('array_merge', $data); foreach($one_dimensional_array as $v=>$k){ $list=Db::name('order_exe')->data($one_dimensional_array[$v])->insert(); } } } $order=db::name('order')->where('order_sn',$post['order_sn'])->update(['code'=>0,'type'=>1]); } /** * 获取渠道来源 * @return array */ public static function infoPosition($pid) { $position_list = Db::name('orderchannel') ->where(['id' => $pid]) ->group('name') ->column('id,name', 'id'); asort($position_list); return $position_list; } /** * 修改员工的基础信息 * @param $id 员工的ID * @return array */ public static function edits($post){ $data = [ 'updatetime' => time(), 'name'=>$post['name'], 'mobile'=>$post['mobile'], 'sex'=>$post['sex'], 'age'=>$post['age'], 'group_id'=>$post['brand_id'], 'first_order'=>2, 'identity'=>$post['identity'], 'lng'=>$post['lng'], 'addr'=>$post['addr'], 'avatar'=>$post['image'], 'lat'=>$post['lat'], 'province'=>$post['first_category_id'], 'city'=>$post['second_category_id'], 'area'=>$post['third_category_id'], ]; $list=Db::name('staff')->where('id',$post['id'])->data($data)->update(); return $list; } public static function exportFile($get) { $where[] = ['del','=', '0']; //查询 if(isset($get['keyword']) && $get['keyword']){ $where[] = [$get['keyword_type'],'like','%'.$get['keyword'].'%']; } //等级查询 if(isset($get['level']) && $get['level'] != ''){ $where[] = ['level','=',$get['level']]; } //分组查询 if(isset($get['group_id']) && $get['group_id']){ $where[] = ['group_id','=',$get['group_id']]; } //消费金额 if(isset($get['total_amount_start']) && $get['total_amount_start']){ $where[] = ['total_order_amount','>=',$get['total_amount_start']]; } if(isset($get['total_amount_end']) && $get['total_amount_end']){ $where[] = ['total_order_amount','<=',$get['total_amount_end']]; } //注册时间 if(isset($get['start_time']) && $get['start_time']!=''){ $where[] = ['create_time','>=',strtotime($get['start_time'])]; } if(isset($get['end_time']) && $get['end_time']!=''){ $where[] = ['create_time','<=',strtotime($get['end_time'])]; } $user_list = Db::name('user')->where($where) ->order('id desc') ->select(); //会员分组 $user_group = Db::name('user_group')->where(['del'=>0])->column('name','id'); //会员等级 $user_level = Db::name('user_level')->where(['del'=>0])->column('name','id'); // 所有会员信息 $all_user_list = User::where(['del'=>0])->column('sn,nickname,mobile,level','id'); $exportData = []; foreach ($user_list as $item){ $groupName = '-'; $levelName = '无等级'; //会员所属分组 if(isset($user_group[$item['group_id']])){ $groupName = $user_group[$item['group_id']]; } if(isset($user_level[$item['level']])){ $levelName = $user_level[$item['level']]; } $referrer_user_info = ''; $referrer_nickname = ''; $referrer_sn = ''; $referrer_mobile = ''; $referrer_level_name = '-'; if(isset($all_user_list[$item['first_leader']])){ $referrer_user = $all_user_list[$item['first_leader']]; $referrer_nickname = $referrer_user['nickname']; $referrer_sn = $referrer_user['sn']; $referrer_mobile = $referrer_user['mobile']; if(isset($user_level[$referrer_user['level']])){ $referrer_level_name =$user_level[$referrer_user['level']]; } $referrer_user_info.= '【昵称:'.$referrer_nickname.' 编号:'.$referrer_sn. ' 手机:'. $referrer_mobile . ' 等级:'. $referrer_level_name.'】'; } $loginTime = date('Y-m-d H:i:s', $item['login_time']); $exportData[] = [$item['sn'], $item['nickname'], $levelName, $groupName, $referrer_user_info, $item['total_order_amount'], $item['user_money'], $item['user_integral'], $loginTime]; } $exportTitle = ['会员编号', '会员昵称', '会员等级', '会员分组', '推荐人信息', '消费金额', '账户余额', '积分', '最后登录时间']; $exportExt = 'xls'; return ['exportTitle'=> $exportTitle, 'exportData' => $exportData, 'exportExt'=>$exportExt, 'exportName'=>'会员列表'.date('Y-m-d H:i:s')]; } /** * Notes: 获取会员信息 * @param $id * @param bool $getdata 是否获取原始数据 * @param bool $expenditure 是否显示会员消费 * @return User|mixed */ public static function getUser($id,$getdata = false,$expenditure = false){ $user = User::get($id); $user->append(['level_name','group_name']); if($getdata){ $user = $user->getData(); if($user['birthday']) $user['birthday'] = date('Y-m-d',$user['birthday']); } $user['abs_avatar'] = UrlServer::getFileUrl($user['avatar']); if($expenditure){ //本月的消费金额 $month_amount = Db::name('order') ->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY]) ->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID]) ->whereTime('create_time', 'month') ->sum('order_amount'); //本月的订单笔数 $month_num = Db::name('order') ->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY]) ->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID]) ->whereTime('create_time', 'month') ->count(); //累计消费笔数 $total_num =Db::name('order') ->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY]) ->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID]) ->sum('order_amount'); $avg_amount = Db::name('order') ->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY]) ->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID]) ->avg('order_amount'); $user['month_amount'] = '¥'.round($month_amount,2); $user['month_num'] = round($month_num,2); $user['total_num'] = round($total_num,2); $user['avg_amount'] = '¥'.round($avg_amount,2); //分销会员 $user['distribution_tips'] = '否'; $user['superior_referrer'] = '-'; $user['superior_referrer_sn'] = '-'; if($user['is_distribution']){ $user['distribution_tips'] = '是'; $superior_referrer = Db::name('user')->where(['id'=>$user['first_leader']])->field('nickname,sn')->findOrEmpty(); $user['superior_referrer'] = '-'; $user['superior_referrer_sn'] = '-'; if($superior_referrer) { $user['superior_referrer'] = $superior_referrer['nickname']; $user['superior_referrer_sn'] = $superior_referrer['sn']; } } // 头像 $user['avatar'] = UrlServer::getFileUrl($user['avatar']); } return $user; } /* * 批量设置会员分组 */ public static function setGroup($post){ return Db::name('user')->where(['id'=>$post['user_ids']])->update(['group_id'=>$post['group_id']]); } /* * 根据订单编号查询订单编号 */ public static function info($id){ $list=Db::name('order')->where('order_sn',$id)->find(); $ordernumber=Db::name('order_exe')->where('order_sn', $list['order_sn'])->where('status',0)->count(); $list['sycs']= $ordernumber; $list['ysycs']= Db::name('order_exe')->where('order_sn', $list['order_sn'])->where('status',1)->count(); $list['ztcs']=Db::name('order_exe')->where('order_sn', $list['order_sn'])->where('status',3)->count(); return $list; } /* * 查看预排的订单的 */ public static function infolist($get){ $order=Db::name('order')->where('order_sn',$get['order_sn'])->find(); //获取订单的坐标 $orderexe=Db::name('order_exe')->where('order_sn',$get['order_sn'])->count(); //获取订单的总条数 $number= $orderexe- $order['number']; if($number>0){ $del=Db::name('order_exe')->where('order_sn',$get['order_sn'])->order('autotime desc')->limit($number)->delete(); } $list=Db::name('order_exe')->where('order_sn',$get['order_sn']) ->page($get['page'],$get['limit']) ->order('autotime asc') ->select(); $count=Db::name('order_exe')->where('order_sn',$get['order_sn']) ->order('autotime asc') ->count(); foreach ($list as &$item){ if($item['staff_id']==0){ $staff=[]; $staff['lat']='26.59064600'; $staff['lng']='106.67770700'; $item['staff_name']='无保洁'; $item['mobile']='无'; }else{ $staff=StaffLogic::infostaff($item['staff_id']); //获取员工定位 if($staff){ $item['staff_id']=$staff['id']; $item['staff_name']=$staff['name']; $item['staff_mobile']=$staff['mobile']; $item['km']=number_format(UserLogic::haversine_distance($order['lat'], $order['lng'],$staff['lat'],$staff['lng'])/ 1000,1); } } if(intval(($item['autotime']-time())/86400)>1){ $item['jldate']=intval(($item['autotime']-time())/86400); }else{ $item['jldate']='-'; } $item['autotime']=date("Y-m-d",$item['autotime']); if($item['addtime']==1){ $item['addtime']="上午"; }else if($item['addtime']==2){ $item['addtime']="下午"; } $item['consignee']=$order['consignee']; $item['mobile']=$order['mobile']; $item['address']=$order['address']; } return ['count'=>$count,'list' =>$list]; } /* * 修改固定排单的时间 */ public static function eittime($id,$post){ $xq=UserLogic::Get_Chinese_WeekDay($post['end_time']); //获取星期 $date=date('Y-m-d',strtotime($post['end_time'])); $addtime=intval($post['addtime']); return Db::name('order_exe')->where('id',$id)->update(['xq'=>$xq,'autotime'=>strtotime($post['end_time']),'addtime'=>$addtime,'staff_id'=>$post['privilege'],'date'=>$date,'staff_status'=>0]); } public static function staff($id,$post){ $count=count(explode(',',$post['privilege'])); $staff=explode(',',$post['privilege']); if($count>=2){ return $list=2; }else{ return Db::name('order_exe')->where('id',$id)->update(['staff_id'=>intval($post['privilege'])]); } } public static function prent($id){ $list=Db::name('order')->where('id',$id)->update(['status'=>1]); $order_id=OrderLogic::orderinfoid($id); $order_exe=Db::name('order_exe')->where('order_sn',$order_id['order_sn'])->where('status',0)->update(['status'=>3]); return $order_exe; } public static function prentsd($id){ $list=Db::name('order')->where('id',$id)->update(['status'=>0,'type'=>0]); $order_id=OrderLogic::orderinfoid($id); $order_exe=Db::name('order_exe')->where('order_sn',$order_id['order_sn'])->where('status',3)->update(['status'=>0]); return $order_exe; } /** * Notes: 订单备注 * @param $post * @param string $type * @return int|string * @throws \think\Exception * @throws \think\exception\PDOException */ public static function remarks($post, $type="get") { if ($type==='get') { return Db::name('order_exe')->field('id,remark') ->where(['id'=>$post['id']]) ->findOrEmpty(); } else { return Db::name('order_exe') ->where(['id'=>$post['id']]) ->update(['remark'=>$post['order_remarks']]); } } /** * Notes: 根据执行ID查询订单的经纬度 * @param $post * @param string $type * @return int|string * @throws \think\Exception * @throws \think\exception\PDOException */ public static function orderexeinfo($id){ $list=Db::name('order_exe')->where('id',$id)->find(); $order=OrderLogic::orderinfo($list['order_sn']); $list['lng']= $order['lng']; $list['lat']= $order['lat']; $list['date']=date('Y-m-d H:i:s',strtotime($list['date'])); return $list; } public static function log($get){ $count=Db::name('log_order')->where('order_sn',$get['order_sn'])->count(); $lists=Db::name('log_order')->where('order_sn',$get['order_sn']) ->page($get['page'], $get['limit']) ->order('id desc') ->select(); foreach ($lists as &$item) { $admin=Db::name('admin')->where('id',$item['admin_id'])->find(); $item['admin_name']=$admin['name']; $item['createtime']=date("Y-m-d H:i:s",$item['cram_time']); } return ['count'=>$count , 'lists'=>$lists]; } public static function orderlog($get){ $count=Db::name('log_orders')->where('order_sn',$get['order_sn'])->count(); $lists = Db::name('log_orders') //->where('order_sn', 'like', '%' . $get['order_sn'] . '%') ->where('order_sn',$get['order_sn']) ->page($get['page'], $get['limit']) ->order('id desc') ->select(); foreach ($lists as &$item) { $admin=Db::name('admin')->where('id',$item['admin_id'])->find(); $item['admin_name']=$admin['name']; $item['createtime']=date("Y-m-d H:i:s",$item['cram_time']); } return ['count'=>$count , 'lists'=>$lists]; } public static function orderinfo($get){ $data=Db::name('user_order_imges')->where('order_id',$get['id'])->find(); if($data){ $data['image1'] = json_decode($data['image1'],true); $data['image2'] = json_decode($data['image2'],true); $data['image3'] = json_decode($data['image3'],true); foreach ($data['image1'] as $k=>$v){ $data['image1'][$k]['url'] = 'https://web.dulmao.com'.$v['url']; } foreach ($data['image2'] as $k=>$v){ $data['image2'][$k]['url'] = 'https://web.dulmao.com'.$v['url']; } foreach ($data['image3'] as $k=>$v){ $data['image3'][$k]['url'] = 'https://web.dulmao.com'.$v['url']; } return $data; } } }