随着互联网时代的快速发展,实体餐厅模式正在发生着形态的转变,越来越多的餐饮业借助互联网模式进行宣传发展。同城跑腿、网上购物和各种程序便利服务层出不穷,不仅为快节奏的生活提供了便利,也促进了经济的快速发展。

搭建一套完善的同城跑腿系统源码,系统选择很重要。对于运营者来说,要想运营好一套同城跑腿系统,就要选择好的系统程序,特别是订单高峰期的时候,出现延迟或是卡顿,会影响到送餐的速度,降低用户对系统的使用感。

所以选择一套成熟的系统是非常有必要的。那么一套完善的同城跑腿系统应该具备哪些功能呢?

1、主页显示功能:在同城跑腿系统的主页,显示各种服务的主要功能,商家选择,会员详细资料,订单详情,更多个人信息设置等。

2、地理位置精准系统:同城跑腿系统需要获取客户精准的地理位置,帮助工作者提高工作效率,并减少时间消耗。

3、精细的技术框架:同城跑腿系统源码对服务器的要求很高,所以系统必须是稳定的。只有技术精细合理,才能实现分秒级的订单响应,避免多订单堆。

4、订单查询功能:当配送员收到订单时,使用者可以不定时,随时随地的在系统上查看订单详情。订单状态显示为"正在进行中的订单任务"、"订单已完成"等等,这样用户能更加清楚的了解订单状况。

5、用户评论功能:订单显示完成后,用户需要对订单进行评估评价。用户评价可以为其他用户提供一定的参考数据,同时对跑腿人员起到督促监督作用,提高工作效率。

<?phpnamespace app\student\controller;use cmf\controller\HomeBaseController;
use think\Db;if (!session_id()) session_start();
/*** 登录*/
class LoginController extends HomebaseController {/* 手机验证码 */public function getCode(){$rs=['code'=>0,'msg'=>'','info'=>[]];$data = $this->request->param();$type=isset($data['type']) ? $data['type']: '0';$mobile=isset($data['mobile']) ? $data['mobile']: '';$mobile=checkNull($mobile);if($mobile==''){$this->error('请输入手机号');}$where['user_login']=$mobile;$checkuser = checkUser($where);if($type==1){/* 忘记密码 */if(!$checkuser){$this->error('该手机号尚未注册,请先注册');}$s_a='forget_account';$s_c='forget_code';$s_e='forget_expiretime';}else if($type==0){/* 登录 */if(!$checkuser){$this->error('该手机号尚未注册,请先注册');}$s_a='login_account';$s_c='login_code';$s_e='login_expiretime';}else{/* 注册 */if($checkuser){$this->error('该手机号已注册,请更换手机号');}$s_a='reg_account';$s_c='reg_code';$s_e='reg_expiretime';}$nowtime=time();if(isset($_SESSION[$s_a]) && $_SESSION[$s_a]==$mobile && isset($_SESSION[$s_e]) && $_SESSION[$s_e]> $nowtime ){$this->error('验证码5分钟有效,请勿多次发送');}$mobile_code = random(6,1);//密码可以使用明文密码或使用32位MD5加密$result = sendCode($mobile,$mobile_code);if($result['code']==0){$_SESSION[$s_a] = $mobile;$_SESSION[$s_c] = $mobile_code;$_SESSION[$s_e] = time() +60*5;}else if($result['code']==667){$_SESSION[$s_a] = $mobile;$_SESSION[$s_c] = $result['msg'];$_SESSION[$s_e] = time() +60*5;$this->success("验证码为:{$result['msg']}");}else{$this->error($result['msg']);}$this->success('验证码已送');}/* 注册 */public function reg(){$data = $this->request->param();$name=isset($data['name']) ? $data['name']: '';$pass=isset($data['pass']) ? $data['pass']: '';$code=isset($data['code']) ? $data['code']: '';$name=checkNull($name);$pass=checkNull($pass);$code=checkNull($code);if($name==''){$this->error('请输入手机号');}if($code==''){$this->error('请输入验证码');}if($pass==''){$this->error('请输入密码');}if( !isset($_SESSION['reg_account']) || !isset($_SESSION['reg_code']) ){$this->error('请先获取验证码');}if( !isset($_SESSION['reg_expiretime']) || $_SESSION['reg_expiretime'] < time() ){$this->error('验证码已过期');}if($name!=$_SESSION['reg_account']){$this->error('手机号码不一致');}if($code!=$_SESSION['reg_code']){$this->error('验证码错误');}$user_pass=cmf_password($pass);$avatar='/default.png';$avatar_thumb='/default_thumb.png';$default=array('user_login'=>$name,'user_pass' =>$user_pass,'signature' =>'','avatar' =>$avatar,'avatar_thumb' =>$avatar_thumb,'last_login_ip' =>get_client_ip(),'create_time' => time(),'user_status' => 1,'gradeid'=>0);$result=Db::name('users')->insert($default);if(!$result){$this->error('注册失败');}$userinfo=Db::name('users')->where(['user_login'=>$name])->find();$this->handleInfo($userinfo);$this->success('注册成功');}/* 密码登录 */public function loginbypass(){$data = $this->request->param();$name=isset($data['name']) ? $data['name']: '';$pass=isset($data['pass']) ? $data['pass']: '';$name=checkNull($name);$pass=checkNull($pass);if($name==''){$this->error('请输入手机号');}if($pass==''){$this->error('请输入密码');}$user_pass=cmf_password($pass);$where['user_login']=$name;$userinfo=Db::name('users')->where($where)->find();if(!$userinfo || $userinfo['user_pass'] != $user_pass){$this->error('账号或密码错误');}$this->handleInfo($userinfo);$this->success('登陆成功');}/* 验证码登录 */public function loginbycode(){$data = $this->request->param();$name=isset($data['name']) ? $data['name']: '';$code=isset($data['code']) ? $data['code']: '';$name=checkNull($name);$code=checkNull($code);if($name==''){$this->error('请输入手机号');}if($code==''){$this->error('请输入验证码');}if( !isset($_SESSION['login_account']) || !isset($_SESSION['login_code']) ){$this->error('请先获取验证码');}if( !isset($_SESSION['login_expiretime']) || $_SESSION['login_expiretime'] < time() ){$this->error('验证码已过期');}if($name!=$_SESSION['login_account']){$this->error('手机号码不一致');}if($code!=$_SESSION['login_code']){$this->error('验证码错误');}$where['user_login']=$name;$userinfo=Db::name('users')->where($where)->find();$this->handleInfo($userinfo);$this->success('登陆成功');}public function forget(){$data = $this->request->param();$name=isset($data['name']) ? $data['name']: '';$pass=isset($data['pass']) ? $data['pass']: '';$code=isset($data['code']) ? $data['code']: '';$name=checkNull($name);$pass=checkNull($pass);$code=checkNull($code);if($name==''){$this->error('请输入手机号');}if($code==''){$this->error('请输入验证码');}if($pass==''){$this->error('请输入密码');}if( !isset($_SESSION['forget_account']) || !isset($_SESSION['forget_code']) ){$this->error('请先获取验证码');}if( !isset($_SESSION['forget_expiretime']) || $_SESSION['forget_expiretime'] < time() ){$this->error('验证码已过期');}if($name!=$_SESSION['forget_account']){$this->error('手机号码不一致');}if($code!=$_SESSION['forget_code']){$this->error('验证码错误');}$check = checkPass($pass);if(!$check){$this->error('密码为6-20位数字与字母组合');}$user_pass=cmf_password($pass);$where['user_login']=$name;$ifreg=DB::name('users')->field("id")->where($where)->find();if(!$ifreg){$this->error('该帐号不存在');}$result=DB::name('users')->where('id',$ifreg['id'])->setField("user_pass",$user_pass);if($result===false){$this->error('重置失败,请重试');}$this->success('操作成功');}/* 退出 */public function logout(){session('student',null);$this->success('退出成功');}//qq第三方登录========public function qq(){$href=$_SERVER['HTTP_REFERER'];cookie('href',$href,3600000);cookie('identity','student',3600000);$referer = $_SERVER['HTTP_REFERER'];session('login_referer', $referer);require_once CMF_ROOT.'sdk/qqApi/qqConnectAPI.class.php';$qc1 = new \QC();$qc1->qq_login();}/**微信登陆**/public function weixin(){$configpri=getConfigPri();//-------配置$href=$_SERVER['HTTP_REFERER'];cookie('href',$href,3600000);$AppID = $configpri['wx_appid_pc'];$AppSecret = $configpri['wx_appsecret_pc'];$callback  = get_upload_path('/student/login/weixin_callback'); //回调地址//微信登录if (!session_id()) session_start();//-------生成唯一随机串防CSRF攻击$state  = md5(uniqid(rand(), TRUE));$_SESSION["wx_state"]    = $state; //存到SESSION$callback = urlencode($callback);$wxurl = "https://open.weixin.qq.com/connect/qrconnect?appid=".$AppID."&redirect_uri={$callback}&response_type=code&scope=snsapi_login&state={$state}#wechat_redirect";header("Location: $wxurl");}/**微信登陆回调**/public function weixin_callback(){$configpri=getConfigPri();$code=isset($_GET['code']) ? $_GET['code']:'';if($code!=""){$AppID = $configpri['wx_appid_pc'];$AppSecret = $configpri['wx_appsecret_pc'];$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$AppID.'&secret='.$AppSecret.'&code='.$code.'&grant_type=authorization_code';$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_URL, $url);$json =  curl_exec($ch);curl_close($ch);$arr=json_decode($json,1);if(isset($arr['errcode'])){$this->error($arr['errmsg']);}//得到 access_token 与 openid$url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_URL, $url);$json =  curl_exec($ch);curl_close($ch);$arr=json_decode($json,1);//得到 用户资料// $openid=$arr['openid'];$openid=$arr['unionid'];$type='2';$openid=$openid;$nickname=$arr['nickname'];$avatar=$arr['headimgurl'];$this->loginByThird($type,$openid,$nickname,$avatar);}}protected function loginByThird($type,$openid,$nickname,$avatar){$userinfo=DB::name('users')//->where("openid='{$openid}' and login_type='{$type}'")->where('openid',$openid)->where('login_type',$type)->find();if(!$userinfo){$nowtime = time();/* 注册 */$type_a=['web','qq','wx','sina','facebook','twitter'];$user_login=$type_a[$type].'_'.$nowtime.rand(100,999);if(!$nickname){//$nickname=\PhalApi\T('用户').substr($openid,-3);$nickname='';}$data=array('user_login' => $user_login,'user_nickname' =>$nickname,"source"=>'web',"openid"=>$openid,"login_type"=>$type,);if($avatar){$avatar=htmlspecialchars_decode($avatar);$avatar_thumb=$avatar;$data['avatar']=$avatar;$data['avatar_thumb']=$avatar_thumb;}$user_pass='edu'.$nowtime;$user_pass=cmf_password($user_pass);$avatar='/default.png';$avatar_thumb='/default_thumb.png';$default=array('user_pass' =>$user_pass,'signature' =>'','avatar' =>$avatar,'avatar_thumb' =>$avatar_thumb,'last_login_ip' =>get_client_ip(),'create_time' => $nowtime,'user_status' => 1,);if(isset($data['user_pass'])){$data['user_pass']=cmf_password($data['user_pass']);}$insert=array_merge($default,$data);$rs=Db::name('users')->insertGetId($insert);$id=$rs;$userinfo=Db::name('users')->where(['id'=>$id])->find();}$this->handleInfo($userinfo);$href=cookie('href');echo "<meta http-equiv=refresh content='0; url=$href'>";exit;}/* 更新token 登陆信息 */protected function handleInfo($userinfo) {if(!$userinfo){$this->error('账号未注册');}if($userinfo['user_status']==0){$this->error('账号已被禁用');}$token=md5(md5($userinfo['id'].$userinfo['user_login'].time()));$userinfo['token']=$token;$this->updateToken($userinfo['id'],$userinfo['token']);$gradeid = session('student.gradeid');$gradeinfo = Db::name('course_grade')->where(['id'=>$gradeid])->find();if($gradeinfo){$gradename = $gradeinfo['name'];}else{$gradename = '';}$userinfo['gradename'] = $gradename;session('student',$userinfo);}/* 更新token 登陆信息 */protected function updateToken($uid,$token) {$nowtime=time();$expiretime=$nowtime+60*60*24*300;$ip = get_client_ip();$ipinfo=Db::name('ip_garde')->where(['ip'=>$ip])->find();$gradeid = 0;if($ipinfo){$gradeid = $ipinfo['gardeid'];}DB::name("users")->where("id",$uid)->update(array('last_login_time' => $nowtime, "last_login_ip"=>get_client_ip(0,true),'gradeid'=>$gradeid ));$isok=DB::name("users_token")->where("user_id",$uid)->update(array("token"=>$token, "expire_time"=>$expiretime , "create_time"=>$nowtime ));if(!$isok){DB::name("users_token")->insert(array("user_id"=>$uid,"token"=>$token, "expire_time"=>$expiretime , "create_time"=>$nowtime ));}$token_info=array('uid'=>$uid,'token'=>$token,'expire_time'=>$expiretime,);setcaches("token_".$uid,$token_info);/* 删除PUSH信息 */DB::name("users_pushid")->where("uid",$uid)->delete();return 1;}
}

配送的高效率和高质量是运行跑腿系统源码的成功之处。作为团队运营者,需要了解同城跑腿者中可能遇到的各种复杂问题,做出正确的应对措施,并定期对团队人员进行培训考试,给他们分享配送技能,保证在物品完好准确送达的同时,提高配送效率。

同城跑腿系统源码,买货送货不出门,办事排队不用等相关推荐

  1. 直接购买同城跑腿系统源码,有什么好处呢?

    为什么很多时候咨询各种开发公司的客服,都会建议购买源码,那么只针对同城跑腿系统源码,购买源码和saas系统究竟有何区别?购买哪个更划算呢? 首先就是针对两种系统在运营层面的区别: 首位肯定是所有问题的 ...

  2. 同城跑腿系统源码,点对点配送,帮你省时省力

    随着互联网的发展,越来越多的人开始依赖网络来解决生活中的各种问题.而同城跑腿系统就是其中一个受欢迎的解决方案. ​同城跑腿系统是指一种基于互联网的服务,通过在线平台将用户和服务提供者连接起来,以便用户 ...

  3. 开发一个同城跑腿系统平台需要多少钱?如何选择跑腿系统源码

    现在的人越来越来懒,懒得爬楼,于是有了电梯:懒得出门购物,于是有了网上购物.直播带货:出门懒得带银行卡,于是就有了微信支付.支付宝支付:懒得收拾家务,于是扫地机器人.智能洗碗机出现:懒得做饭.买菜,于 ...

  4. 同城外卖跑腿系统源码分析

    外卖订餐已经成为很多"社畜"日常不可分割的一部分,足不出户,只需要一部电子设备即可在线订餐,并且可提供的选择非常多样化,与传统的电话订餐外卖模式相比也更便捷的多. 因此,同城外卖跑 ...

  5. JAVA同城外卖跑腿系统源码优势?

    JAVA同城外卖跑腿系统源码是一款基于JAVA语言开发的同城外卖跑腿系统,具有以下优势: 1.技术优势:JAVA作为一种高性能.跨平台的编程语言,在企业应用方面有着广泛的应用.JAVA同城外卖跑腿系统 ...

  6. 快速搭建自己的跑腿服务平台:开源跑腿系统源码分享

    在现代社会,人们生活节奏加快,很多时候需要在短时间内完成各种任务,如购物.送货等.这就催生了跑腿服务的兴起.跑腿服务平台为用户提供一站式服务,让用户可以轻松地找到可靠的跑腿服务,并实现便捷快速的服务体 ...

  7. JAVA 开发同城外卖系统源码有哪些功能?

    当开发同城外卖系统时,应该配置以下功能: Java开发同城外卖系统源码是一款基于Java语言开发的在线外卖订餐平台,为用户提供在线订餐.支付.配送等一系列服务.整个系统包括前台网站和后台管理系统,主要 ...

  8. 直播带货系统源码,居家“神器”不出门就能购物

    如今,直播带货的火爆程度已经超出了人们的想象.线下销售行业的卖家也开启了直播带货模式,直播带货的的火爆归根到底还是消费者的购物方式发生的变化.从传统的线下购物到电商购物,再到今天的直接直播带货.从各大 ...

  9. 彩虹云商城系统源码 刚货分享

    源码程序无任何授权,一套程序,有些还附带了授权! 上传压缩包至根目录,解压 修改config.php数据库配置 设定thinkphp伪静态 输入域名安装即可 学习资料地址:彩虹商城6.6版本.zip ...

最新文章

  1. 痛!“做C#半年,挣的不如做AI 1个月?”看到第二句泪目……
  2. R安德森-达令检验( Anderson-Darling Test)
  3. linux grep 快速,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  4. Hive Fetch Task
  5. WebServices中使用cxf开发日志拦截器以及自定义拦截器
  6. c#中一个简单的深拷贝方法
  7. 修改unity变量名但不丢失序列化值
  8. linux 目录sbit,linux中SUID,SGID与SBIT的奇妙用途详解
  9. linux下的打包和解压缩命令,浅析Linux打包压缩解压缩命令大全(收藏)
  10. finding the way
  11. centos mysql proxy_CentOS7搭建MysqlProxy实现读写分离
  12. C#4.0的十种语法糖
  13. 安卓地图的实现附源码
  14. selenium所有检测点和绕过方式[运行命令后被检测/打开就被检测/环境检测]
  15. LCD驱动芯片/LCD段式液晶显示驱动芯片-VK0192M/VK0256/B/C技术资料简介
  16. Mac、移动硬盘中拷贝后文件夹和文件都为灰色解决办法
  17. 快速学习Grasshopper的方法
  18. java制作安卓游戏脚本_autoA开源(用java写安卓无障碍脚本)
  19. Excel表格的密码设置与取消
  20. 自动化测试运行脚本(python)

热门文章

  1. 疑难杂症 | Win 运行C4D按Alt卡住
  2. 二十天初级会计能过吗?
  3. MySql 5.7授权远程登陆
  4. 肖特基二极管和整流二极管区别在哪里
  5. OpenCV中RGB转HSV
  6. 电感和磁珠的6大区别
  7. SDL Trados 中翻译Json文件的处理和设置
  8. Vista系统安装CCTVBox插件出错解决方法
  9. 国外天气api 国际天气预报今天、未来3天、未来7天的天气预报信息接口
  10. Java 8 函数式接口就是一个有且仅有一个(除和Object中方法有相同签名的外)抽象方法