Selaa lähdekoodia

background update

ayHaru 4 vuotta sitten
vanhempi
commit
a0070e9a55

+ 38 - 13
application/index/controller/Cabinet.php

@@ -39,15 +39,6 @@ class Cabinet extends Base
         json_success($result['data']);
     }
     /**
-     * 自提柜向服务器上报
-     */
-    public function record_store(){
-        $order_sn   = input('param.order_sn');
-        $trunk      = input('param.trunk');
-        $cabinet    = input('param.cabinet');
-        $state      = input('param.state');
-    }
-    /**
      * 自提柜向服务器上报用户取走商品。
     */
     public function record_fetch(){
@@ -238,16 +229,53 @@ class Cabinet extends Base
 
         $CabinetModel = new CabinetModel();
         $selectResult = $CabinetModel->getCabinetsByWhere($offset, $limit);
+        $cabinet_status = ['1' => '运行中' , '2' => '已锁定'];
+        // 拼装参数
+        foreach($selectResult as $key=>$vo){
+            $selectResult[$key]['cabinet_status'] = $cabinet_status[$vo['cabinet_status']];
+        }
+        $return['total'] = $CabinetModel->getAllCabinets();  //总数量
+        $return['rows'] = $selectResult;
+        json_success($return);
+    }
+
+    public function BoxList(){
+        $cabinet_number = input('cabinet_number');
+        $limit = isset($param['pageSize']) ? $param['pageSize'] : 10;
+        $param['pageNumber'] = isset($param['pageNumber']) ? $param['pageNumber'] : 1;
+        $offset = ($param['pageNumber'] - 1) * $limit;
 
+        $BoxModel = new BoxModel();
+        $selectResult = $BoxModel->getBoxsByWhere($offset, $limit);
+        $box_status = ['1' => '空闲' , '2' => '已使用' , '3' => '锁定中'];
         // 拼装参数
         foreach($selectResult as $key=>$vo){
+            $selectResult[$key]['box_status'] = $box_status[$vo['box_status']];
+        }
+        $return['total'] = $BoxModel->getAllCounts();  //总数量
+        $return['rows'] = $selectResult;
+        json_success($return);
+    }
+    public function BoxActionList(){
+        $param = input('param.');
 
+        $limit = isset($param['pageSize']) ? $param['pageSize'] : 10;
+        $param['pageNumber'] = isset($param['pageNumber']) ? $param['pageNumber'] : 1;
+        $offset = ($param['pageNumber'] - 1) * $limit;
+
+        $BoxActionModel = new BoxActionModel();
+        $selectResult = $BoxActionModel->getBoxActionsByWhere($offset, $limit);
+        $status = ['1' => '开箱' , '2' => '关箱'];
+        // 拼装参数
+        foreach($selectResult as $key=>$vo){
+            $selectResult[$key]['type'] = $status[$vo['type']];
         }
-        $return['total'] = $CabinetModel->getAllCabinets();  //总数量
+        $return['total'] = $BoxActionModel->getAllCounts();  //总数量
         $return['rows'] = $selectResult;
         json_success($return);
     }
 
+
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     private function proc_request($queue_name, $key, $params){
         QueueClient::push($queue_name,self::redis_host , self::redis_port ,$key,$params);
@@ -287,9 +315,6 @@ class Cabinet extends Base
 
         return [false,false];
     }
-    /**
-     * 更新箱子时间
-    */
 
     /**
      * 自提柜箱子修改状态

+ 75 - 18
application/index/controller/Order.php

@@ -2,6 +2,8 @@
 
 namespace app\index\controller;
 
+use app\index\model\BoxActionModel;
+use app\index\model\BoxModel;
 use app\index\model\OrderModel;
 use think\Controller;
 
@@ -9,36 +11,91 @@ class Order extends Controller
 {
     public function CheckRcode(){
         $order_sn = input('param.order_sn');
+        //商网接口
+        json_success([]);
+    }
+
+    /**
+     * 自提柜向服务器上报
+     */
+    public function RecordStore(){
+        $order_sn   = input('param.order_sn');
+        $trunk      = input('param.trunk');
+        $cabinet    = input('param.cabinet');
+        $ret = $this->CreateOrderBindBox($order_sn , $trunk , $cabinet);
+        if($ret['code'] != 0){
+            json_error(1006);
+        }else{
+            $this->box_action_record($cabinet , $trunk , 1);
+            json_success([]);
+        }
+    }
+    public function CheckFcode(){
+        $code = input('param.code');
         $OrderModel = new OrderModel();
-        $order = $OrderModel->getOne($order_sn);
+        $order = $OrderModel->CheckCode($code);
         if(empty($order)){
-            return json(json_error_exception(2002));
+            json_error(2003);
         }
-        $ret = ['existed' => true,'order_sn' => $order_sn];
-        json_success($ret);
+        //发送商网验证结果柜号 order_sn
+
+        //返回access
+        $data['code'] = $code;
+        $data['existed'] = true;
+        $data['trunk'] = $order['box_number'];
+        $data['cabinet'] = $order['cabinet_number'];
+        json_success($data);
+    }
+
+    public function RecordFetch(){
+        $trunk      = input('param.trunk');
+        $cabinet    = input('param.cabinet');
+        $BoxModel = new BoxModel();
+        $Box = $BoxModel->getOneCabinetBox($cabinet , $trunk);
+        if(empty($Box)){
+            json_error(2004);
+        }
+        $ret = $BoxModel->editData(['cabinet_number' => $cabinet , 'box_number' => $trunk] , ['order_sn' => '' , 'box_status' => 1]);
+        if($ret['code'] != 0){
+            json_error(1006);
+        }
+        $OrderModel = new OrderModel();
+        $OrderModel->editData(['order_sn' => $Box['order_sn']] , ['order_status' => 2 , 'out_time' => date("Y-m-d H:i:s")]);
+        $this->box_action_record($cabinet , $trunk , 2);
+        json_success([]);
     }
+
+
     /**
-     * 订单绑定校验码
+     * 生成订单并绑定箱子
     */
-    public function OrderBindCode(){
-        $order_sn = input('param.order_sn');
+    private function CreateOrderBindBox($order_sn , $box_number , $cabinet){
+        $code = $this->createRandCode();
+        $data['order_sn'] = $order_sn;
+        $data['cabinet_number'] = $cabinet;
+        $data['box_number'] = $box_number;
+        $data['code'] = $code;
+        $data['enter_time'] = date("Y-m-d H:i:s");
         $OrderModel = new OrderModel();
+        return $OrderModel->CreateOrder($data);
+    }
 
-        $order = $OrderModel->getOne($order_sn);
-        if(empty($order)){
-            return json(json_error_exception(1008));
-        }
-        $code = $this->createRandCode();
-        $result = $OrderModel->editData(['order_sn' => $order_sn],['code' => $code]);
-        if($result['code'] != 1){
-            return json(json_error_exception('1006',$result['msg']));
-        }
-        json_success('');
+    /**
+     * 记录箱子开启/关闭
+     */
+    private function box_action_record($cabinet_number , $box_number , $type){
+        $BoxActionModel = new BoxActionModel();
+        $params['cabinet_number']       = $cabinet_number;
+        $params['box_number']           = $box_number;
+        $params['type']                 = $type;
+        $params['datetime']             = date("Y-m-d H:i:s");
+        $BoxActionModel->save($params);
     }
+
     /**
      * 生成校验码
     */
-    public function createRandCode(){
+    private function createRandCode(){
         $code = rand(100000,999999);
         $OrderModel = new OrderModel();
         $order = $OrderModel->where('code',$code)->find();

+ 17 - 0
application/index/model/BoxActionModel.php

@@ -9,4 +9,21 @@ class BoxActionModel extends Model {
     // 确定链接表名
     protected $name = 'box_action_record';
 
+    /**
+     * 根据搜索条件获取箱子列表信息
+     * @param $offset
+     * @param $limit
+     */
+    public function getBoxActionsByWhere($offset, $limit)
+    {
+        return $this->limit($offset, $limit)->order('box_number asc')->select();
+    }
+
+    /**
+     * 根据搜索条件获取所有的箱子数量
+     */
+    public function getAllCounts()
+    {
+        return $this->count();
+    }
 }

+ 18 - 0
application/index/model/BoxModel.php

@@ -39,4 +39,22 @@ class BoxModel extends Model {
             return msg(-2, '', $e->getMessage());
         }
     }
+
+    /**
+     * 根据搜索条件获取箱子列表信息
+     * @param $offset
+     * @param $limit
+     */
+    public function getBoxsByWhere($offset, $limit)
+    {
+        return $this->limit($offset, $limit)->order('box_number asc')->select();
+    }
+
+    /**
+     * 根据搜索条件获取所有的箱子数量
+     */
+    public function getAllCounts()
+    {
+        return $this->count();
+    }
 }

+ 2 - 2
application/index/model/CabinetModel.php

@@ -52,7 +52,7 @@ class CabinetModel extends Model{
     }
 
     /**
-     * 根据搜索条件获取用户列表信息
+     * 根据搜索条件获取柜子列表信息
      * @param $where
      * @param $offset
      * @param $limit
@@ -63,7 +63,7 @@ class CabinetModel extends Model{
     }
 
     /**
-     * 根据搜索条件获取所有的用户数量
+     * 根据搜索条件获取所有的柜子数量
      * @param $where
      */
     public function getAllCabinets()

+ 26 - 2
application/index/model/OrderModel.php

@@ -2,8 +2,9 @@
 
 namespace app\index\model;
 
-use think\Model;
 use app\index\model\BoxModel;
+use think\Exception;
+use think\Model;
 
 class OrderModel extends Model{
 
@@ -19,6 +20,30 @@ class OrderModel extends Model{
         return $this->hasOne('BoxModel', 'order_sn', 'order_sn');
     }
 
+    public function CreateOrder($params){
+        try {
+            $result = $this->save($params);
+            if(false === $result){
+                // 验证失败 输出错误信息
+                return msg(-1, '', $this->getError());
+            }else{
+                $BoxModel = new BoxModel();
+                $ret = $BoxModel->save(['order_sn' => $params['order_sn'] , 'box_status' => 2] , ['cabinet_number' => $params['cabinet_number'] , 'box_number' => $params['box_number']]);
+                if($ret === false){
+                    return msg(-1, '', $this->getError());
+                }else{
+                    return msg(1, '', 'success');
+                }
+            }
+        }catch (Exception $e){
+            return msg(-2, '', $e->getMessage());
+        }
+    }
+
+    public function CheckCode($code){
+        return $this->where('code' , $code)->find();
+    }
+
     /**
      * 根据既定条件修改信息
      * @where $param
@@ -32,7 +57,6 @@ class OrderModel extends Model{
                 // 验证失败 输出错误信息
                 return msg(-1, '', $this->getError());
             }else{
-
                 return msg(1, '', 'success');
             }
         }catch(\Exception $e){

+ 2 - 0
config/errorCode.php

@@ -19,4 +19,6 @@ return [
     '2000'  =>  'access通信失败',
     '2001'  =>  '柜体服务器错误',
     '2002'  =>  '订单不存在',
+    '2003'  =>  '取件码无效',
+    '2004'  =>  '箱子不存在',
 ];

+ 6 - 1
route/route.php

@@ -18,5 +18,10 @@
         'QueryState'                => 'index/cabinet/QueryState',
 
         'CheckRcode'                => 'index/order/CheckRcode',
-        'OrderBindCode'             => 'index/order/OrderBindCode',
+        'RecordStore'               => 'index/order/RecordStore',
+
+
+        'CabinetList'               => 'index/cabinet/CabinetList',
+        'BoxList'                   => 'index/cabinet/BoxList',
+        'BoxActionList'             => 'index/cabinet/BoxActionList',
     ));