gogs 1 سال پیش
والد
کامیت
6f3828f190

+ 7 - 8
app/Http/Controllers/Api/WxController.php

@@ -95,14 +95,13 @@ class WxController extends BaseController
 
     public function ttt(){
         $a = new WxService();
-        $order_data = [
-            '下单人',
-            '经办人',
-            date('Y-m-d H:i:s'),
-            'so1233123',
-            '客户名称',
-        ];
-        $a = $a->wx_sendMsg('180','1','0','37',$order_data);
+        //[88,1,0,37,["T9XX.20240502","\u5f85\u5ba1\u6838","\u8d85\u7ea7\u7ba1\u7406\u5458","\u8ba2\u5355\u5408\u540c","2024-05-02 02:50:04"]]
+        $user_id = 88;
+        $type = 1;
+        $state = 0;
+        $menu_id = 37;
+        $order_data = json_decode('["刁法森","\u5201\u6cd5\u68ee","2024-05-02 03:09:36","T9XX.202405020249365948(\u8ba2\u5355\u5408\u540c)"]',true);
+        $a = $a->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data);
 
         return $a;
     }

+ 66 - 3
app/Service/OaService.php

@@ -23,6 +23,7 @@ use App\Model\RollFilmCombine;
 use App\Model\RollFilmCompany;
 use App\Model\SysMenu;
 use App\Model\Team;
+use App\Service\Wx\WxService;
 use Illuminate\Support\Facades\App;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
@@ -419,10 +420,11 @@ class OaService extends Service
         try {
             DB::beginTransaction();
 
-            list($employee_ids, $oa_sub_id) = $this->oaCommon($menu_id, ['order_number' => $orderObject], 1,0,$this->user);
+            list($employee_ids, $oa_sub_id,$order_detail) = $this->oaCommon($menu_id, ['order_number' => $orderObject], 1,0,$this->user);
             if (empty($employee_ids)) {
                 $this->returnOa($order_no, 1, $type);
                 DB::commit();
+
                 return [true, '审核成功'];
             }
             $order = new OaOrder();
@@ -443,12 +445,21 @@ class OaService extends Service
             $oa_order_sub_id = $oa_order_sub->id;
 
             $insert = [];
+            //处理数据发送通知消息
+
             foreach ($employee_ids as $employee_id) {
                 $insert[] = [
                     'oa_order_id' => $id,
                     'oa_order_sub_id' => $oa_order_sub_id,
                     'employee_id' => $employee_id,
                 ];
+                $tmp_data = [
+                    $orderObject,
+                    $order_detail['crt_name'].'('.SysMenu::where('id',$menu_id)->value('title').')',
+                    Employee::where('id',$employee_id)->value('emp_name'),
+                    date('Y-m-d H:i:s'),
+                ];
+                $this->sendWxMsg($employee_id,1,0,$menu_id,$tmp_data);
             }
             OaOrderSubEmployee::insert($insert);
             DB::commit();
@@ -517,7 +528,7 @@ class OaService extends Service
                 continue;
             }
         }
-        return [$employee_ids, $oa_sub_id];
+        return [$employee_ids, $oa_sub_id,$detail];
     }
 
     public function formulaRule($params, $detail)
@@ -562,12 +573,23 @@ class OaService extends Service
             switch ($state) {
                 case 1:
                     $sort = $detail['sort'] + 1;
-                    list($employee_ids, $oa_sub_id) = $this->oaCommon($oaOrder->menu_id, ['order_number' => $oaOrder->order_no], $sort, $detail['oa_sub_id'],$user);
+                    list($employee_ids, $oa_sub_id,$order_detail) = $this->oaCommon($oaOrder->menu_id, ['order_number' => $oaOrder->order_no], $sort, $detail['oa_sub_id'],$user);
 //                    var_dump($employee_ids);
 //                    var_dump($oa_sub_id);die;
                     if (empty($employee_ids)) {
                         $oaOrder->state = 2;
                         $oaOrder->save();
+                        //审核通过
+                        $tmp_data = [
+                            $order_detail['order_number'],
+                            SysMenu::where('id',$oaOrder->menu_id)->value('title'),
+                            '通过',
+                            Employee::where('id',$user_id)->value('emp_name'),
+                            date('Y-m-d H:i:s'),
+
+
+                        ];
+                        $this->sendWxMsg($order_detail['crt_id'],2,0,$oaOrder->menu_id,$tmp_data);
                         $this->returnOa($oaOrder->order_no, 1, $oaOrder->opt_case);
                     } else {
                         $oaOrder->state = 1;
@@ -582,22 +604,47 @@ class OaService extends Service
                         $oa_order_sub_id = $oa_order_sub->id;
 
                         $insert = [];
+
+
                         foreach ($employee_ids as $employee_id) {
                             $insert[] = [
                                 'oa_order_id' => $oaOrder->id,
                                 'oa_order_sub_id' => $oa_order_sub_id,
                                 'employee_id' => $employee_id,
                             ];
+                            $tmp_data = [
+                                $order_detail['order_number'],
+                                $order_detail['crt_name'].'('.SysMenu::where('id',$oaOrder->menu_id)->value('title').')',
+                                Employee::where('id',$employee_id)->value('emp_name'),
+                                date('Y-m-d H:i:s'),
+                            ];
+                            $this->sendWxMsg($employee_id,1,0,$oaOrder->menu_id,$tmp_data);
                         }
+
                         OaOrderSubEmployee::insert($insert);
                     }
                     break;
                 case 2:
+                    list($employee_ids, $oa_sub_id,$order_detail) = $this->oaCommon($oaOrder->menu_id, ['order_number' => $oaOrder->order_no], 1, $detail['oa_sub_id'],$user);
+                    $tmp_data = [
+                        $oaOrder['order_no'],
+                        '拒绝',
+                        $order_detail['crt_time'],
+                        $remark,
 
+                    ];
                     if ($detail['sort'] == 1) {
                         $oaOrder->state = 3;
                         $oaOrder->save();
+                        $this->sendWxMsg($order_detail['crt_id'],3,2,$oaOrder->menu_id,$tmp_data);
                         $this->returnOa($oaOrder->order_no, 2, $oaOrder->opt_case);
+                    }else{
+                        $id = OaOrderSub::where('sort', ($detail['sort'] - 1))->where('oa_order_id', $oaOrder->id)->value('id');
+                        $employee_ids = OaOrderSubEmployee::where('oa_order_sub_id',$id)->pluck()->toArray();
+                        foreach ($employee_ids as $v){
+                            $this->sendWxMsg($v,3,2,$oaOrder->menu_id,$tmp_data);
+                        }
+
                     }
                     OaOrderSub::where('sort', ($detail['sort'] - 1))->where('oa_order_id', $oaOrder->id)->update([
                         'state' => 0,
@@ -631,11 +678,22 @@ class OaService extends Service
             $report->user_id = $user_id;
             $report->channel = $this->user['depart_top'][0]['depart_id'];
             $report->save();
+
+            $tmp_data = [
+                $oaOrder->order_no,
+                SysMenu::where('id',$oaOrder->menu_id)->value('title'),
+                '审核通过',
+                Employee::where('id',$user_id)->value('emp_name'),
+                date('Y-m-d H:i:s'),
+
+            ];
+
             foreach ($oa_sub_report_employee as $v) {
                 $list[] = [
                     'employee_id' => $v['employee_id'],
                     'oa_report_order_id' => $report->id,
                 ];
+                $this->sendWxMsg($v['employee_id'],2,0,$oaOrder->menu_id,$tmp_data);
             }
             OaReportOrderEmployee::insert($list);
         }
@@ -865,4 +923,9 @@ class OaService extends Service
 
         return [true,['time'=>'20小时10分钟']];
     }
+
+    public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data){
+        $service = new WxService();
+        $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data);
+    }
 }

+ 35 - 35
app/Service/Weixin/WxSendMessageService.php

@@ -5,43 +5,43 @@ namespace App\Service\Weixin;
 use App\Service\Service;
 use Illuminate\Support\Facades\Log;
 
-class WxSendMessageService extends Service
+class WxSendMessageService extends WeixinService
 {
-    public function sendSalaryMessage($data,$temple_id){
-        list($status,$token) = (new WeixinService())->getToken();
-        if(! $status) return [false,'TOKEN错误,发送失败!'];
-        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$token;
+    public function sendSalaryMessage($openid,$tempid,$data)
+    {
+        $reload_url = $data['reload_url'] ?? '';
+        list($status, $token) = $this->getToken();
+        if (!$status) return [false, $token];
+        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $token;
+        $post = '{
+           "touser":"' . $openid . '",
+           "template_id":"' . $tempid . '",
+           "url":"' . $reload_url . '",
+           "data":{
+                   "first": {
+                       "value":"1",
+                       "color":"#173177"
+                   },
+                   %s
+                   "remark":{
+                       "value":"1",
+                       "color":"#173177"
+                   }
+           }
+       }';
+        $content = "";
+        foreach ($data['detail'] as $k => $v) {
 
-        foreach ($data as $value){
-            $post = '{
-           "touser":"'.$value['openid'].'",
-           "template_id":"'.$temple_id.'",
-           "url":"'.$value['url'].'",            
-               "data":{
-                       "thing1":{
-                           "value":"'.$value['emp_name'].'",
-                           "color":"#173177"
-                       },
-                       "amount2": {
-                           "value":"'.$value['amount'].'",
-                           "color":"#173177"
-                       },
-                       "time3": {
-                           "value":"'.$value['salary_time'].'",
-                           "color":"#173177"
-                       },
-                        "thing4":{
-                           "value":"'.$value['cagetoryanddepart'].'",
-                           "color":"#173177"
-                       }
-               }
-           }';
-            $data = array('url'=>$url,'post'=>$post);
-            $res = $this->curlOpen($url,['post'=>$post]);
-            $res = json_decode($res,true);
-            if(isset($res['errcode']) && $res['errcode'] == 0){
-            }
-            Log::channel('request')->info('request', ['res_send'=>$res]);
+            $content .= '"' . $k . '": {
+                       "value":"' . $v . '",
+                       "color":"#173177"
+                   },';
         }
+        $post = sprintf($post, $content);
+        $res = $this->curlOpen($url, ['post' => $post]);
+        $res = json_decode($res, true);
+        if (isset($res['errcode']) && $res['errcode'] != 0) return [false, $res['errmsg']];
+        if (isset($res['errcode']) && $res['errcode'] === 0) return [true, ''];
+        return [false, json_encode($res)];
     }
 }

+ 3 - 2
app/Service/Wx/WxService.php

@@ -10,8 +10,8 @@ class WxService extends Service
 //    public $appid = 'wx4e1324c600df37a6';
 //    public $secret = '72f8c912d462b0f4ff46cbedac0c80bf';
 
-    public $appid = 'wxe048bcdcc21aae6e';
-    public $secret = '191789c5b4ef2b3d5b9e79bb62428092';
+    public $appid = 'wx4e1324c600df37a6';
+    public $secret = 'cec65770bf168a57dc8e5a012d4c9537';
 
     public function getOpenid($code){
 
@@ -82,6 +82,7 @@ class WxService extends Service
      * @return array
      */
     public function wx_sendMsg($user_id,$type,$state,$menu_id,$order_data){
+        file_put_contents('tt.txt',json_encode([$user_id,$type,$state,$menu_id,$order_data]));
         $openid = WxEmployeeOfficial::where('employee_id',$user_id)->value('openid');
         if(empty($openid)) return [false,'not invaild openid'];
         $config = config('wx.msg');

+ 8 - 9
config/wx/msg.php

@@ -9,23 +9,22 @@ return [
 
     'wx_tmp_id' => [
         1=>[
-            'tmp_id'=>'5azHlaoAu6MgRzkxn_HL6ygFt_wIkXEz9CklPWEdP70',
+            'tmp_id'=>'5azHlaoAu6MgRzkxn_HL69dFinNFUQLQffCCXYCnAeQ',
             'param' => [
+                'character_string3',
                 'thing2',
                 'thing6',
                 'time4',
-                'character_string3',
-                'thing1',
             ]
         ],
         2=>[
-            'tmp_id'=>'xuddRh6WEE6lDI4ujc3G24W9VLHQu9oYPMVS80rlMHY',
+            'tmp_id'=>'ukAyDJg6oueXjD_dhg9zMFwdFSk5NYSUkCbwAOl1m88',
             'param' => [
-                'character_string8',
-                'const10',
-                'const11',
-                'time2',
-                'thing17',
+                'character_string2',
+                'thing7',
+                'phrase15',
+                'thing10',
+                'time11',
             ]
         ],
         3=>[