cqpCow 9 月之前
父節點
當前提交
07f668ae66

+ 3 - 3
app/Http/Controllers/Api/TestController.php

@@ -28,10 +28,10 @@ class TestController extends BaseController
     public function aa(){
         //测试消息发送
         $tmp_data = [
-            "测试",
-            '测试',
+            "22222",
+            '222',
             '审核通过',
-            '测试',
+            '22222',
             date('Y-m-d H:i:s'),
 
         ];

+ 1 - 0
app/Model/Construction.php

@@ -42,4 +42,5 @@ class Construction extends UseScopeBaseModel
         self::STATE_ONE => '已排期',
     ];
     const range_function = 'constructionRange';
+    const is_check_function = 'constructionCheck';
 }

+ 1 - 0
app/Model/InvoiceOrder.php

@@ -19,4 +19,5 @@ class InvoiceOrder extends UseScopeBaseModel
     ];
 
     const range_function = 'invoiceRange';
+    const is_check_function = 'invoiceCheck';
 }

+ 1 - 0
app/Model/PaymentReceipt.php

@@ -38,4 +38,5 @@ class PaymentReceipt extends UseScopeBaseModel
     ];
 
     const prefix = "T9RMO.";
+    const is_check_function = 'paymentReceiptCheck';
 }

+ 1 - 0
app/Model/PurchaseOrder.php

@@ -36,4 +36,5 @@ class PurchaseOrder extends UseScopeBaseModel
     ];
 
     const range_function = 'purchaseRange';
+    const is_check_function = 'purchaseCheck';
 }

+ 1 - 0
app/Model/ReturnExchangeOrder.php

@@ -44,4 +44,5 @@ class ReturnExchangeOrder extends UseScopeBaseModel
         self::Model_type_three => 'TK',
     ];
     const range_function = 'returnExchangeOrderRange';
+    const is_check_function = 'returnExchangeOrderCheck';
 }

+ 1 - 0
app/Model/SalesOrder.php

@@ -9,6 +9,7 @@ class SalesOrder extends UseScopeBaseModel
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
     const range_function = 'salesOrderRange';
+    const is_check_function = 'salesOrderCheck';
     const Order_type_one = 1;//安装件
     const Order_type_two = 2;//快递件
     public static $order_type = [

+ 166 - 25
app/Model/UseScopeBaseModel.php

@@ -2,7 +2,6 @@
 
 namespace App\Model;
 
-use App\Scopes\TopDepartmentScope;
 use App\Service\RangeService;
 use Illuminate\Database\Eloquent\Model;
 
@@ -10,6 +9,7 @@ class UseScopeBaseModel extends Model
 {
     //可见范围
     const range_function = '';
+    const is_check_function = '';
 
     public function __construct(array $attributes = [])
     {
@@ -67,12 +67,39 @@ class UseScopeBaseModel extends Model
         //权限范围内的部门
         $depart_range = $user['depart_range'] ?? [];
         //我可见的
-        $is_see = $search['is_see'] ?? 0;
+        if(isset($search['is_see'])){
+            if($search['is_see']){
+                $is_see = 1;
+            }else{
+                $is_see = 0;
+            }
+        }else{
+            $is_see = 0;
+        }
+
+        //全部 待审 待我审核
+        if(isset($search['is_check'])){
+            if($search['is_check']){
+                $is_check = $search['is_check'];
+            }else{
+                $is_check = 0;
+            }
+        }else{
+            $is_check = 0;
+        }
 
-        //可见范围方法
         $model = $query->getModel(); // 获取模型的实例
-        $range_function = $model::range_function ?? ""; // 访问静态属性
-        $is_function_range = $this->hasMethod(new RangeService(),$range_function);
+        $className = get_class($model); // 获取模型类名
+
+        //可见范围方法
+        $range_function = "";
+        if (defined($className . '::range_function')) $range_function = $className::range_function;
+        $function_range_bool = $this->hasMethod(new RangeService(),$range_function);
+
+        //全部 待审 已审
+        $is_check_function = "";
+        if (defined($className . '::is_check_function')) $is_check_function = $className::is_check_function;
+        $is_check_function_bool = $this->hasMethod(new RangeService(),$is_check_function);
 
         //顶级部门
         $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
@@ -86,8 +113,12 @@ class UseScopeBaseModel extends Model
         }
 
         $id = [];
-        //可见范围 以及单据里面填写人员
-        if($is_function_range) $id = RangeService::$range_function($user,$search);
+        //可见范围 以及单据里面填写人员 (状态类 是全部时检索)
+        if($function_range_bool) $id = RangeService::$range_function($user,$search);
+
+        //全部0 待审1 已审2 (状态类 是全部时检索)
+        $check_search = "";
+        if($is_check_function_bool && $is_check) $check_search = RangeService::$is_check_function($user,$search);
 
         //个人部门所有
         $auth_type = $this->getQx($search,$user);
@@ -95,73 +126,183 @@ class UseScopeBaseModel extends Model
         if($is_all_depart){
             //所有权限
             if(empty($search_depart_id)){
-                if(! $is_see){
+                if($is_see){
+                    //可见
+                    $query->whereIn('id', $id);
+                }elseif ($is_check){
+                    if(! $auth_type){
+                        //全部
+                        $query->whereIn('depart_id', $depart_range)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            });
+                    }else{
+                        if($auth_type == 1) { //我创建的 且加上可见
+                            $query->where('crt_id',$user['id'])
+                                ->when(! empty($check_search), function ($query) use ($check_search) {
+                                    return $query->whereRaw($check_search);
+                                })
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            //自己权限范围内的部门 或 所有
+                            $query->whereIn('depart_id', $depart_range)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            });
+                        }
+                    }
+                }else{
                     if(! $auth_type){
                         //全部
                         $query->whereIn('depart_id', $depart_range);
                     }else{
                         if($auth_type == 1) { //我创建的 且加上可见
                             $query->where('crt_id',$user['id'])
-                                ->orWhereIn('id', $id);
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
                         }elseif ($auth_type == 2 || $auth_type == 3){
                             //自己权限范围内的部门 或 所有
                             $query->whereIn('depart_id', $depart_range);
                         }
                     }
-                }else{
-                    //可见
-                    $query->whereIn('id', $id);
                 }
             }else{
-                if(! $is_see){
+                if($is_see){
+                    //查看指定公司 且 我可见
+                    $query->whereIn('id', $id);
+                }elseif ($is_check){
                     if(! $auth_type){
                         //查看指定公司
-                        $query->where('top_depart_id', $top_depart_id);
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            });
                     }else{
                         if($auth_type == 1) { //指定公司下 且 我创建的  且加上可见
                             $query->where('top_depart_id', $top_depart_id)
                                 ->where('crt_id',$user['id'])
-                                ->orWhereIn('id', $id);
+                                ->when(! empty($check_search), function ($query) use ($check_search) {
+                                    return $query->whereRaw($check_search);
+                                })
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
                         }elseif ($auth_type == 2 || $auth_type == 3){
                             // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
                             $query->where('top_depart_id', $top_depart_id)
                                 ->whereIn('depart_id', $depart_range)
-                                ->orWhereIn('id', $id);
+                                ->when(! empty($check_search), function ($query) use ($check_search) {
+                                    return $query->whereRaw($check_search);
+                                })
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
                         }
                     }
                 }else{
-                    //查看指定公司 且 我可见
-                    $query->whereIn('id', $id);
+                    if(! $auth_type){
+                        //查看指定公司
+                        $query->where('top_depart_id', $top_depart_id);
+                    }else{
+                        if($auth_type == 1) { //指定公司下 且 我创建的  且加上可见
+                            $query->where('top_depart_id', $top_depart_id)
+                                ->where('crt_id',$user['id'])
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
+                            $query->where('top_depart_id', $top_depart_id)
+                                ->whereIn('depart_id', $depart_range)
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }
+                    }
                 }
             }
         }else{
             //非所有权限
-            if(! $is_see){
+            if($is_see){
+                //某个分社可见
+                $query->whereIn('id', $id);
+            }elseif ($is_check){
                 if(! $auth_type){
                     //指定公司下全部  且加上可见
                     $query->where('top_depart_id', $top_depart_id)
                         ->whereIn('depart_id', $depart_range)
-                        ->orWhereIn('id', $id);
+                        ->when(! empty($check_search), function ($query) use ($check_search) {
+                            return $query->whereRaw($check_search);
+                        })
+                        ->when(! empty($id), function ($query) use ($id) {
+                            return $query->orWhereIn('id', $id);
+                        });
                 }else{
                     if($auth_type == 1) {
                         //指定公司下 且 我创建的 且加上可见
                         $query->where('top_depart_id', $top_depart_id)
                             ->where('crt_id',$user['id'])
-                            ->orWhereIn('id', $id);
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            })
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
                     }elseif ($auth_type == 2) {
                         //指定公司下 且 自己权限范围内的部门 且加上可见
                         $query->where('top_depart_id', $top_depart_id)
                             ->whereIn('depart_id', $depart_range)
-                            ->orWhereIn('id', $id);
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            })
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
                     }elseif ($auth_type == 3) {
                         // 指定公司下所有 且加上可见
                         $query->where('top_depart_id', $top_depart_id)
-                            ->orWhereIn('id', $id);
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            })
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
                     }
                 }
             }else{
-                //某个分社可见
-                $query->whereIn('id', $id);
+                if(! $auth_type){
+                    //指定公司下全部  且加上可见
+                    $query->where('top_depart_id', $top_depart_id)
+                        ->whereIn('depart_id', $depart_range)
+                        ->when(! empty($id), function ($query) use ($id) {
+                            return $query->orWhereIn('id', $id);
+                        });
+                }else{
+                    if($auth_type == 1) {
+                        //指定公司下 且 我创建的 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->where('crt_id',$user['id'])
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }elseif ($auth_type == 2) {
+                        //指定公司下 且 自己权限范围内的部门 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->whereIn('depart_id', $depart_range)
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }elseif ($auth_type == 3) {
+                        // 指定公司下所有 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }
+                }
             }
         }
 

+ 7 - 19
app/Service/OaService.php

@@ -38,13 +38,14 @@ use Illuminate\Support\Facades\Route;
  */
 class OaService extends Service
 {
-
     public $user;
+
     public function __construct($user = '')
     {
         parent::__construct();
         $this->user = $user;
     }
+
     public function oaList($data,$user)
     {
         $list = Oa::from('oa as o')
@@ -246,7 +247,6 @@ class OaService extends Service
 
     }
 
-
     public function oaEdit($data, $user)
     {
 
@@ -410,19 +410,14 @@ class OaService extends Service
         return [true, $return];
     }
 
-
     public function createOaOrder($data)
     {
-
-//        $crt_id = request()->userData->id;
         Log::channel('request')->info('request', ['param' => $data]);
         if (!isset($data['order_number'])) $data['order_number'] = $data['order_no'];
         $orderObject = $data['order_number'];
         $menu_id = $data['menu_id'];
         $order_no = $data['order_number'];
         $type = isset($data['opt_case']) ? $data['opt_case'] : 0;
-//        $this->returnOa($order_no,1,$type);
-//        return [200,''];
 
         //特殊的审批
         $list = Oa::from('oa as o')
@@ -446,13 +441,12 @@ class OaService extends Service
             $list = $list->orderBy('os.sort')->get()->toArray();
         }
 
-
-
         if (empty($list)) {
             list($parent_status,$parent_msg) = $this->returnOa($order_no, 1, $type);
             if(!$parent_status) return [false, $parent_msg];
             return [true, ''];
         }
+
         try {
             DB::beginTransaction();
 
@@ -487,8 +481,8 @@ class OaService extends Service
             $oa_order_sub_id = $oa_order_sub->id;
 
             $insert = [];
-            //处理数据发送通知消息
 
+            //处理数据发送通知消息
             foreach ($employee_ids as $employee_id) {
                 $insert[] = [
                     'oa_order_id' => $id,
@@ -515,7 +509,6 @@ class OaService extends Service
 
     }
 
-
     public function oaCommon($menu_id, $param, $sort = 1, $parent_id = 0,$user='')
     {
         $request = request();
@@ -596,7 +589,6 @@ class OaService extends Service
         } else return false;
     }
 
-
     public function oaCheck($data, $user)
     {
         $user_id = $user['id'];
@@ -720,7 +712,6 @@ class OaService extends Service
         }
     }
 
-
     public function report($oaOrder, $oa_sub_id,$user_id)
     {
         $oa_sub_report_employee = OaSubReportEmployee::where('oa_sub_id', $oa_sub_id)->select('*')->get()->toArray();
@@ -766,7 +757,6 @@ class OaService extends Service
         return [$bool, $msg];
     }
 
-
     public function oaGetData($menu_id, $request,$user='')
     {
 
@@ -813,7 +803,6 @@ class OaService extends Service
         return [true, $list];
     }
 
-
     public function oaOrderState($data, $user)
     {
         $user_id = $user['id'];
@@ -864,7 +853,6 @@ class OaService extends Service
         return [true, ''];
     }
 
-
     public function oaCheckMove($data, $user_id)
     {
         $id = $data['id'];
@@ -965,7 +953,6 @@ class OaService extends Service
 
     }
 
-
     public function reportCheck($data){
         $id = $data['sid'];
         OaReportOrder::wherein('id',$id)->where('channel',$this->user['depart_top'][0]['depart_id'])->update([
@@ -973,6 +960,7 @@ class OaService extends Service
         ]);
         return [true,''];
     }
+
     public function reportCount($data,$user){
         $id = $user['id'];
         $list = OaReportOrder::from('oa_report_order_employee as e')
@@ -990,10 +978,10 @@ class OaService extends Service
         return [true,['time'=>'20小时10分钟']];
     }
 
-    public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data){
+    public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = ""){
         $service = new WxSendMessageService();
         file_put_contents('msg_result.txt',date('Y-m-d H:i:s') . "入参:" . json_encode([$user_id,$type,$state,$menu_id,$order_data]). PHP_EOL,8);
-        list($status, $msg) = $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data);
+        list($status, $msg) = $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath);
         file_put_contents('msg_result.txt',date('Y-m-d H:i:s') . "结果:" .  $msg . PHP_EOL,8);
     }
 

+ 86 - 0
app/Service/RangeService.php

@@ -3,13 +3,19 @@
 namespace App\Service;
 
 use App\Model\BasicType;
+use App\Model\Construction;
 use App\Model\ConstructionInfo;
 use App\Model\Customer;
 use App\Model\CustomerInfo;
 use App\Model\Depart;
 use App\Model\Employee;
+use App\Model\InvoiceOrder;
+use App\Model\PaymentReceipt;
 use App\Model\PaymentReceiptInfo;
 use App\Model\Product;
+use App\Model\PurchaseOrder;
+use App\Model\ReturnExchangeOrder;
+use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
 use App\Model\SeeRange;
 use Illuminate\Support\Facades\DB;
@@ -526,4 +532,84 @@ class RangeService extends Service
             ->select('id')->get()->toArray();
         return array_column($result,'id');
     }
+
+    //全部 待审 已审核 -----------------------------------------------
+    public static function paymentReceiptCheck($user,$search){
+        $args = "";
+        if($search['is_check'] == 1) {
+            //待审核
+            $args = "(state = ". PaymentReceipt::STATE_ONE . ")";
+        }elseif($search['is_check'] == 2){
+            //已审
+            $args = "(state = ". PaymentReceipt::STATE_TWO . ")";
+        }
+
+        return $args;
+    }
+
+    public static function salesOrderCheck($user,$search){
+        $args = "";
+        if($search['is_check'] == 1) {
+            //待审核
+            $args = "(sales_order_type = " . SalesOrder::Order_type_one . " and state = ". SalesOrder::State_one . ")";
+        }elseif($search['is_check'] == 2){
+            //已审
+            $args = "(sales_order_type = " . SalesOrder::Order_type_one . " and state = ". SalesOrder::State_two . ")";
+        }
+
+        return $args;
+    }
+
+    public static function invoiceCheck($user,$search){
+        $args = "";
+        if($search['is_check'] == 1) {
+            //待审核
+            $args = "(state = ". InvoiceOrder::STATE_ONE . ")";
+        }elseif($search['is_check'] == 2){
+            //已审
+            $args = "(state = ". InvoiceOrder::STATE_TWO . ")";
+        }
+
+        return $args;
+    }
+
+    public static function returnExchangeOrderCheck($user,$search){
+        $args = "";
+        if($search['is_check'] == 1) {
+            //待审核
+            $args = "(state = ". ReturnExchangeOrder::State_one . ")";
+        }elseif($search['is_check'] == 2){
+            //已审
+            $args = "(state = ". ReturnExchangeOrder::State_two . ")";
+        }
+
+        return $args;
+    }
+
+    public static function constructionCheck($user,$search){
+        $args = "";
+        if($search['is_check'] == 1) {
+            //待审核
+            $args = "(state = ". Construction::STATE_ONE . ")";
+        }elseif($search['is_check'] == 2){
+            //已审
+            $args = "(state = ". Construction::STATE_TWO . ")";
+        }
+
+        return $args;
+    }
+
+    public static function purchaseCheck($user,$search){
+        $args = "";
+        if($search['is_check'] == 1) {
+            //待审核
+            $args = "(state = ". PurchaseOrder::STATE_ONE . ")";
+        }elseif($search['is_check'] == 2){
+            //已审
+            $args = "(state = ". PurchaseOrder::STATE_TWO . ")";
+        }
+
+        return $args;
+    }
+    //全部 待审 已审核 -----------------------------------------------
 }

+ 4 - 5
app/Service/Weixin/WxSendMessageService.php

@@ -18,7 +18,7 @@ class WxSendMessageService extends WeixinService
      * @param $order_data
      * @return array
      */
-    public function wx_sendMsg($user_id,$type,$state,$menu_id,$order_data){
+    public function wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = ""){
         $openid = WxEmployeeOfficial::where('employee_id',$user_id)->value('openid');
         if(empty($openid)) return [false,'not invaild openid'];
         $config = config('wx.msg');
@@ -41,14 +41,14 @@ class WxSendMessageService extends WeixinService
         foreach ($detail as $k=>$v){
             $data[$v] = $order_data[$k];
         }
-        list($status,$msg) = $this->sendTmpMsg($openid,$tmp_id,['detail'=>$data]);
+        list($status,$msg) = $this->sendTmpMsg($openid,$tmp_id,['detail'=>$data],$pagepath);
         if(! $status) return [false, $msg];
 
 
         return [true,''];
     }
 
-    public function sendTmpMsg($openid,$tempid,$data)
+    public function sendTmpMsg($openid,$tempid,$data,$pagepath="")
     {
         $reload_url = $data['reload_url'] ?? '';
         list($status, $token) = $this->getToken();
@@ -60,7 +60,7 @@ class WxSendMessageService extends WeixinService
            "url":"' . $reload_url . '",
            "miniprogram":{
              "appid":"wxc0bc3dfc58b4e00e",
-             "pagepath":""
+             "pagepath":"' . $pagepath . '"
            },
            "data":{
                    "first": {
@@ -76,7 +76,6 @@ class WxSendMessageService extends WeixinService
        }';
         $content = "";
         foreach ($data['detail'] as $k => $v) {
-
             $content .= '"' . $k . '": {
                        "value":"' . $v . '",
                        "color":"#173177"