Browse Source

fix:供应商

super-yimizi 2 months ago
parent
commit
f1d281e805

+ 26 - 13
application/api/controller/inspection/Order.php

@@ -42,6 +42,7 @@ class Order extends Base
           if (empty($order)) {
           if (empty($order)) {
               $this->error('未找到订单');
               $this->error('未找到订单');
           }
           }
+          /** @var \app\common\model\Order $order */
           //$order->append(['order_status_text']);
           //$order->append(['order_status_text']);
           $address = OrderService::getAddressInfo($orderId);
           $address = OrderService::getAddressInfo($orderId);
           $order->address = $address;
           $order->address = $address;
@@ -87,12 +88,21 @@ class Order extends Base
       public function send()
       public function send()
       {
       {
           // 验证请求参数
           // 验证请求参数
-        $validate = new \app\api\validate\Order();
-        $orderId = $this->request->post('orderId');
-        $params = ['orderId' => $orderId];
-        if (!$validate->scene('detail')->check($params)) {
+        $userId = $this->auth->id;
+        $validate = new \app\api\validate\inspection\Order();
+        $params = [
+            'order_id' => $this->request->post('order_id'),
+            'express_name' => $this->request->post('express_name'),
+            'express_no' => $this->request->post('express_no'),
+            'express_image' => $this->request->post('express_image/a', [])
+        ];
+        if (!$validate->scene('send')->check($params)) {
             $this->error($validate->getError());
             $this->error($validate->getError());
         }        
         }        
+        $orderId = $params['order_id'] ?? 0;
+        if(empty($orderId)){
+            $this->error('订单ID不能为空');
+        }
         $order = OrderService::getByOrderId($orderId);
         $order = OrderService::getByOrderId($orderId);
         if (empty($order)) {
         if (empty($order)) {
             $this->error('订单不存在');
             $this->error('订单不存在');
@@ -100,12 +110,14 @@ class Order extends Base
         if ($order->user_id != $this->auth->id) {
         if ($order->user_id != $this->auth->id) {
             $this->error('该订单不属于当前用户');
             $this->error('该订单不属于当前用户');
         }
         }
-        $expressname = $this->request->post('expressname');
-        $expressno = $this->request->post('expressno');
+        $expressname = $params['express_name'];
+        $expressno = $params['express_no'];
+        $expressImage = $params['express_image'];
         $order = OrderService::getDetail($orderId, $this->auth->id);
         $order = OrderService::getDetail($orderId, $this->auth->id);
         if (empty($order)) {
         if (empty($order)) {
             $this->error('未找到订单');
             $this->error('未找到订单');
         }
         }
+        /** @var \app\common\model\Order $order */
         //发货 / 修改快递信息
         //发货 / 修改快递信息
         if ($order->order_status == OrderEnum::STATUS_INSPECTION_PASS) {
         if ($order->order_status == OrderEnum::STATUS_INSPECTION_PASS) {
             $oldStatus = $order->order_status;
             $oldStatus = $order->order_status;
@@ -113,20 +125,21 @@ class Order extends Base
             $order->express_no = $expressno;
             $order->express_no = $expressno;
             $order->order_status = OrderEnum::STATUS_SHIP;
             $order->order_status = OrderEnum::STATUS_SHIP;
             $order->shipping_time = time();
             $order->shipping_time = time();
+            $order->express_image = json_encode($expressImage);
             $order->save();
             $order->save();
-            
             // 记录管理员操作
             // 记录管理员操作
-            OrderActionService::recordAdminAction(
+            $orderActionService = new OrderActionService();
+            $orderActionService->addInspectionAction(
                 $order->order_sn,
                 $order->order_sn,
                 OrderActionEnum::ACTION_SHIP,
                 OrderActionEnum::ACTION_SHIP,
-                '验货端',
+                $userId,
                 '验货通过,发货,快递公司:' . $expressname . ',快递单号:' . $expressno,
                 '验货通过,发货,快递公司:' . $expressname . ',快递单号:' . $expressno,
-                $this->auth->id ?? 0,
+                $userId ?? 0,   
                 [
                 [
                     'express_name' => $expressname,
                     'express_name' => $expressname,
                     'express_no' => $expressno,
                     'express_no' => $expressno,
                 ]
                 ]
-            );            
+            );             
             $this->success('发货成功');
             $this->success('发货成功');
           }else{
           }else{
             $this->error('订单不允许确认收货');
             $this->error('订单不允许确认收货');
@@ -234,9 +247,9 @@ class Order extends Base
               ->where('createtime', '<=', $endTime)
               ->where('createtime', '<=', $endTime)
               ->count();
               ->count();
           
           
-          // 统计售后订单(退款相关)
+          // 统计待验收订单
           $aftersaleCount = \app\common\model\Order::where('user_id', $userId)
           $aftersaleCount = \app\common\model\Order::where('user_id', $userId)
-              ->whereIn('order_status', [OrderEnum::STATUS_REFUND, OrderEnum::STATUS_REFUND_CONFIRM])
+              ->whereIn('order_status', [OrderEnum::STATUS_PAY])
               ->where('createtime', '>=', $startTime)
               ->where('createtime', '>=', $startTime)
               ->where('createtime', '<=', $endTime)
               ->where('createtime', '<=', $endTime)
               ->count();
               ->count();

+ 58 - 4
application/api/validate/inspection/Order.php

@@ -33,7 +33,7 @@ class Order extends Validate
         
         
         // 订单操作相关
         // 订单操作相关
         'order_sn'        => 'require|alphaNum',
         'order_sn'        => 'require|alphaNum',
-        'orderId'        => 'require|integer|gt:0',
+        'order_id'        => 'require|integer|gt:0',
         'pay_type'         => 'require|in:alipay,wechat,unionpay,balance',
         'pay_type'         => 'require|in:alipay,wechat,unionpay,balance',
         'method'          => 'require|in:web,wap,app,miniapp,mp,mini',
         'method'          => 'require|in:web,wap,app,miniapp,mp,mini',
         
         
@@ -50,6 +50,11 @@ class Order extends Validate
         'type'            => 'require|in:day,month,year',
         'type'            => 'require|in:day,month,year',
         'date'            => 'require|date',
         'date'            => 'require|date',
         'days'            => 'integer|between:1,365',
         'days'            => 'integer|between:1,365',
+        
+        // 发货相关
+        'express_name'    => 'require|max:50',
+        'express_no'      => 'require|alphaNum|max:50', 
+        'express_image'   => 'require|array|max:9|checkExpressImages',
     ];
     ];
 
 
     /**
     /**
@@ -86,9 +91,9 @@ class Order extends Validate
         // 订单操作相关
         // 订单操作相关
         'order_sn.require'      => '订单号不能为空',
         'order_sn.require'      => '订单号不能为空',
         'order_sn.alphaNum'     => '订单号格式错误',
         'order_sn.alphaNum'     => '订单号格式错误',
-        'orderId.require'       => '订单ID不能为空',
-        'orderId.integer'       => '订单ID必须是整数',
-        'orderId.gt'            => '订单ID必须大于0',
+        'order_id.require'       => '订单ID不能为空',
+        'order_id.integer'       => '订单ID必须是整数',
+        'order_id.gt'            => '订单ID必须大于0',
         'pay_type.require'       => '支付方式不能为空',
         'pay_type.require'       => '支付方式不能为空',
         'pay_type.in'            => '支付方式不支持',
         'pay_type.in'            => '支付方式不支持',
         'method.require'        => '支付方法不能为空',
         'method.require'        => '支付方法不能为空',
@@ -110,6 +115,16 @@ class Order extends Validate
         'date.date'                 => '统计日期格式错误',
         'date.date'                 => '统计日期格式错误',
         'days.integer'              => '天数必须是整数',
         'days.integer'              => '天数必须是整数',
         'days.between'              => '天数必须在1-365之间',
         'days.between'              => '天数必须在1-365之间',
+        
+        // 发货相关提示
+        'express_name.require'      => '快递公司不能为空',
+        'express_name.max'          => '快递公司名称不能超过50个字符',
+        'express_no.require'        => '快递单号不能为空',
+        'express_no.alphaNum'       => '快递单号只能包含字母和数字',
+        'express_no.max'            => '快递单号不能超过50个字符',
+        'express_image.require'     => '快递图片不能为空',
+        'express_image.array'       => '快递图片必须是数组格式',
+        'express_image.max'         => '快递图片最多上传9张',
     ];
     ];
 
 
     /**
     /**
@@ -132,6 +147,9 @@ class Order extends Validate
         // 统计相关场景
         // 统计相关场景
         'statistics'  => ['type', 'date'],
         'statistics'  => ['type', 'date'],
         'trend'       => ['type', 'days'],
         'trend'       => ['type', 'days'],
+        
+        // 发货相关场景
+        'send'        => ['order_id', 'express_name', 'express_no', 'express_image'],
     ];
     ];
 
 
 
 
@@ -313,4 +331,40 @@ class Order extends Validate
         
         
         return true;
         return true;
     }
     }
+
+    /**
+     * 自定义验证规则:验证快递图片数组
+     * @param $value
+     * @param $rule
+     * @param $data
+     * @return bool|string
+     */
+    protected function checkExpressImages($value, $rule, $data)
+    {
+        if (!is_array($value)) {
+            return '快递图片必须是数组格式';
+        }
+        
+        if (empty($value)) {
+            return '快递图片不能为空';
+        }
+        
+        if (count($value) > 9) {
+            return '快递图片最多上传9张';
+        }
+        
+        // 验证每个图片URL格式
+        foreach ($value as $index => $image) {
+            if (!is_string($image) || empty($image)) {
+                return "第" . ($index + 1) . "张图片URL不能为空";
+            }
+            
+            // 验证图片URL格式(可以是相对路径或完整URL)
+            if (!preg_match('/\.(jpg|jpeg|png|gif|bmp|webp)$/i', $image)) {
+                return "第" . ($index + 1) . "张图片格式不正确,支持jpg、jpeg、png、gif、bmp、webp格式";
+            }
+        }
+        
+        return true;
+    }
 } 
 } 

+ 2 - 0
application/common/Enum/OrderActionEnum.php

@@ -27,11 +27,13 @@ class OrderActionEnum
     const USER_TYPE_CUSTOMER = 'customer';    // 前端用户
     const USER_TYPE_CUSTOMER = 'customer';    // 前端用户
     const USER_TYPE_ADMIN = 'admin';          // 后台管理员
     const USER_TYPE_ADMIN = 'admin';          // 后台管理员
     const USER_TYPE_SYSTEM = 'system';        // 系统操作
     const USER_TYPE_SYSTEM = 'system';        // 系统操作
+    const USER_TYPE_INSPECTION = 'inspection'; // 验货端
 
 
     // 操作员类型
     // 操作员类型
     const OPERATOR_TYPE_USER = 'user';        // 用户操作
     const OPERATOR_TYPE_USER = 'user';        // 用户操作
     const OPERATOR_TYPE_ADMIN = 'admin';      // 管理员操作
     const OPERATOR_TYPE_ADMIN = 'admin';      // 管理员操作
     const OPERATOR_TYPE_SYSTEM = 'system';    // 系统操作
     const OPERATOR_TYPE_SYSTEM = 'system';    // 系统操作
+    const OPERATOR_TYPE_INSPECTION = 'inspection'; // 验货端
 
 
     // 操作优先级
     // 操作优先级
     const PRIORITY_LOW = 1;                   // 低优先级
     const PRIORITY_LOW = 1;                   // 低优先级

+ 13 - 0
application/common/Service/OrderActionService.php

@@ -101,6 +101,19 @@ class OrderActionService
         ]);
         ]);
     }
     }
 
 
+    public function addInspectionAction($order_sn, $action_type, $operator, $memo = '', $user_id = 0, $extra = []){
+        return $this->addAction([
+            'order_sn' => $order_sn,
+            'action_type' => $action_type,
+            'operator' => $operator,
+            'memo' => $memo,
+            'user_type' => OrderActionEnum::USER_TYPE_INSPECTION,
+            'operator_type' => OrderActionEnum::OPERATOR_TYPE_INSPECTION,
+            'user_id' => $user_id,
+            'extra_data' => $extra,
+        ]);
+    }
+
     /**
     /**
      * 添加管理员操作记录
      * 添加管理员操作记录
      * @param string $order_sn 订单编号
      * @param string $order_sn 订单编号

+ 1 - 0
application/common/Service/OrderService.php

@@ -206,6 +206,7 @@ class OrderService
                 'sale_status'          => 0, // 销售状态:0=待申请
                 'sale_status'          => 0, // 销售状态:0=待申请
                 'comment_status'       => 0, // 评论状态:0=未评论
                 'comment_status'       => 0, // 评论状态:0=未评论
                 'status'               => 1, // 状态
                 'status'               => 1, // 状态
+                'supplier_id'          => $item->goods->supplier_id,
             ];
             ];
             
             
             $orderItem[] = $orderItemData;
             $orderItem[] = $orderItemData;

+ 1 - 0
application/common/service/OrderService.php

@@ -206,6 +206,7 @@ class OrderService
                 'sale_status'          => 0, // 销售状态:0=待申请
                 'sale_status'          => 0, // 销售状态:0=待申请
                 'comment_status'       => 0, // 评论状态:0=未评论
                 'comment_status'       => 0, // 评论状态:0=未评论
                 'status'               => 1, // 状态
                 'status'               => 1, // 状态
+                'supplier_id'          => $item->goods->supplier_id,
             ];
             ];
             
             
             $orderItem[] = $orderItemData;
             $orderItem[] = $orderItemData;