cqpCow 2 years ago
parent
commit
c4aef1558e

+ 21 - 0
app/Http/Controllers/Api/CodeController.php

@@ -0,0 +1,21 @@
+<?php
+namespace App\Http\Controllers\Api;
+
+use App\Service\CodeService;
+use Illuminate\Http\Request;
+
+//验证码
+class CodeController extends BaseController
+{
+    public function sendCodeToWx(Request $request){
+        $service = new CodeService();
+        list($status,$data) = $service->sendCodeToWx($request->all(),$request->header('Authorization'));
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+        return $this->json_return(200,'', ['token' => $jwtToken]);
+    }
+}

+ 13 - 0
app/Http/Controllers/Api/FinanceController.php

@@ -74,4 +74,17 @@ class FinanceController extends BaseController{
             return $this->json_return(201,$data);
         }
     }
+
+    public function financeChangeStatus(Request $request)
+    {
+        $service = new FinanceService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->financeChangeStatus($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 38 - 0
app/Service/CodeService.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Service;
+
+use Illuminate\Support\Facades\Cache;
+
+class CodeService extends Service
+{
+    public function sendCodeToWx($data,$token){
+        $cacheKey = "code_" . $token;
+        if(! $this->isSubmitlimitation($cacheKey)) return [false,'已发送验证码,请勿重复操作!'];
+
+        $code = $this->createCode();
+
+        //如果发送成功
+        if($this->sendCode()){
+            Cache::add($cacheKey,$code,1);
+            return [true,''];
+        }else{
+            return [false,'意外错误!'];
+        }
+    }
+
+    public function createCode(){
+        return "123123";
+    }
+
+    public function sendCode(){
+        return true;
+    }
+
+    public function isSubmitlimitation($cacheKey){
+        if(Cache::has($cacheKey)){
+            return false;
+        }
+        return true;
+    }
+}

+ 15 - 0
app/Service/FinanceService.php

@@ -140,4 +140,19 @@ class FinanceService extends Service
 
         return [true, ''];
     }
+
+    public function financeChangeStatus($data){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+        if($this->isEmpty($data,'code')) return [false,'验证码不能为空!'];
+
+        //校验验证码 TODO
+
+        //校验通过删除 会话中的令牌 或者等待自己过期
+
+        //更新状态
+        Finance::whereIn('id',$data['id'])
+            ->update(['status' => 1]);
+
+        return [true,''];
+    }
 }

+ 63 - 0
app/Service/WxService.php

@@ -0,0 +1,63 @@
+<?php
+
+namespace App\Service;
+
+use Illuminate\Support\Facades\Cache;
+
+class WxService extends Service
+{
+    private $appID = 'wx8c710e2210bee651';
+    private $appSecret = 'd98ec1fb5b9c9de648f12d1a38db227e';
+
+    public function getToken($cacheKey){
+        if(Cache::has($cacheKey)){
+            $accessToken = Cache::get($cacheKey);
+        }else{
+            // 获取访问令牌(Access Token)
+            $apiURL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appID}&secret={$this->appSecret}";
+            $response = file_get_contents($apiURL);
+            $result = json_decode($response, true);
+            if(isset($result['errcode'])){
+                return [false,"错误码:{$result['errcode']} 详细信息:{$result['errmsg']}"];
+            }
+            $accessToken = $result['access_token'];
+        }
+
+        return [true,$accessToken];
+    }
+
+    public function sendToWx($accessToken,$code){
+        // 发送模板消息
+        $sendURL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$accessToken";
+
+        $userOpenID = '';
+        $template_id = '';
+        // 准备模板消息的数据
+        $templateData = array(
+            'touser' => $userOpenID,
+            'template_id' => $template_id,
+            'data' => array(
+                'code' => array(
+                    'value' => $code,
+                ),
+            ),
+        );
+
+        $sendData = json_encode($templateData);
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $sendURL);
+        curl_setopt($ch, CURLOPT_POST, 1);
+        curl_setopt($ch, CURLOPT_POSTFIELDS, $sendData);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        $response = curl_exec($ch);
+        curl_close($ch);
+
+        // 处理发送结果
+        $result = json_decode($response, true);
+        if ($result['errcode'] == 0) {
+            return [true,'验证码已成功发送到微信用户!'];
+        } else {
+            return [false, '发送验证码时出错:' . $result['errmsg']] ;
+        }
+    }
+}

+ 4 - 0
routes/api.php

@@ -43,8 +43,12 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('employeeDepart', 'Api\EmployeeController@employeeDepart');
     $route->any('employeeRole', 'Api\EmployeeController@employeeRole');
 
+    //验证码
+    $route->any('sendCodeToWx', 'Api\CodeController@sendCodeToWx');
+
     //出账
     $route->any('financeList', 'Api\FinanceController@financeList');
     $route->any('financeDetailList', 'Api\FinanceController@financeDetailList');
     $route->any('financeImport', 'Api\FinanceController@financeImport');
+    $route->any('financeChangeStatus', 'Api\FinanceController@financeChangeStatus');
 });