本文将完成一个物流原型系统核心代码的编写。该系统采用thinkphp作为后端框架,bootstrap作为前端主框架,并使用百度地图api作为地图载体。
一、系统需求
系统需完成的功能包括:
- 订单提交
- 订单追踪(出发地、目的地、当前位置)
- 地图集成(百度地图api)
- 用户管理
二、技术基础
- 后端:php,框架:thinkphp
- 前端:bootstrap,jquery,百度api
关于thinkphp的核心学习可参考前一篇《利用thinkphp建立一个简单的站点》,其中介绍了该框架的基础入门教程。
三、系统设计
1、控制器及视图
由于是原型系统,所以在控制器上不分其他控制器,因此只需创建一个index的控制器,然后在该控制器的方法上做文章。视图文件也可就放在一个index文件夹中,方便调用。
2、数据库设计
user表:
- id:int 8(用户编号)
- name:varchar 20(用户名)
- password:varchar 20(密码)
- type:int 1(用户类型:用户、司机、管理员等)
order表:
- id:int 8(订单编号)
- start:varchar 50(订单起始地,位置信息用字符串描述)
- end:varchar 50(订单目的地,位置信息用字符串描述)
- time:varchar 50(订单上传时间)
- lal:varchar 50(订单目前所处位置)
四、核心代码
1、index控制器
控制器index的核心代码如下:
<?php
namespace app\index\controller;
//引入多个包
use think\Controller;
use think\View;
use think\Db;
use think\Request;
use think\Session;
class Index extends Controller
{
public function index()//首页
{
$DB=new Db;
$order=$DB::table("order")->select();
$this->assign('order',$order);
$this->assign('name',Session::get('name'));
$this->assign('type',Session::get('type')==0?"用户":"司机");
return $this->fetch();
}
public function query()//查询页
{
if(request()->isPost()){
$DB=new Db;
$map['id']=input('id');
$order=$DB::table("order")->where($map)->find();
$this->assign('order',$order);
return $this->fetch();
}
$this->error("错误");
}
public function view($id)//订单页
{
$DB=new Db;
$map['id']=$id;
$order=$DB::table("order")->where($map)->find();
$this->assign('order',$order);
return $this->fetch('query');
}
public function add()//添加订单
{
if(request()->isPost()){
$data=[
'start'=>input('start'),
'end'=>input('end'),
'time'=>time(),
];
$DB=new Db;
$DB::name('order')->insert($data);
}
$this->success("添加成功!");
}
public function del($id)//删除订单
{
$DB=new Db;
$info=$DB::table("order")->where('id',$id)->delete();
if($info){
$this->success("删除成功!");
}else{
$this->error($file->getError());
}
}
public function douser()//验证用户
{
$request = Request::instance();
if(request()->isPost()){
$m['name']=input('name');
$m['password']=input('password');
$DB=new Db;
$userdata=$DB::table("user")->where($m)->find();
if($userdata==null){
return $this->error('用户名或密码错误!');
}else{