Silent 6 years ago
parent
commit
a47329ed11

+ 42 - 1
app/Http/Controllers/WeChat/ApiController.php

xqd xqd
@@ -135,6 +135,27 @@ class ApiController extends Controller
         return response()->json(['status' => 'success', 'info' => '操作成功', 'data' => $data]);
     }
 
+    public function getPhone(Request $request)
+    {
+        if(empty($request->input('id')) || empty($we_chat_user = WeChatUser::find($request->input('id')))) {
+            return response()->json(['status' => 'fail', 'info' => '找不到用户']);
+        }
+        if(empty($request->input('iv')) || empty($request->input('encryptedData'))) {
+            return response()->json(['status' => 'error', 'info' => '参数错误']);
+        }
+        $iv = $request->input('iv');
+        $encryptedData = $request->input('encryptedData');
+        $session_key = $we_chat_user->session_key;
+        $app = app('wechat.mini_program');
+
+
+        $info = $app->encryptor->decryptData($session_key, $iv, $encryptedData);
+        if(isset($info['purePhoneNumber'])) {
+            return response()->json(['status' => 'success', 'info' => '操作成功', 'phone' => $info['purePhoneNumber']]);
+        }
+        return response()->json(['status' => 'fail', 'info' => '没有绑定手机']);
+    }
+
     public function bindPhone(Request $request)
     {
         if(empty($request->input('id')) || empty($we_chat_user = WeChatUser::find($request->input('id')))) {
@@ -150,7 +171,27 @@ class ApiController extends Controller
 
 
         $info = $app->encryptor->decryptData($session_key, $iv, $encryptedData);
-        Log::info($info);
+        if(isset($info['purePhoneNumber'])) {
+            $student = Student::where('phone', $info['purePhoneNumber'])->first();
+            if(empty($student)) {
+                return response()->json(['status' => 'fail', 'info' => '找不到学员']);
+            }
+            $res = $student->update([
+                'open_id' => $we_chat_user->open_id,
+                'nickname' => $we_chat_user->nickname,
+                'gender' => $we_chat_user->gender,
+                'city' => $we_chat_user->city,
+                'province' => $we_chat_user->province,
+                'country' => $we_chat_user->country,
+                'avatar_url' => $we_chat_user->avatar_url
+            ]);
+            if(empty($res)) {
+                return response()->json(['status' => 'fail', 'info' => '数据更新失败']);
+            }
+            $data = ['id' => $student->id, 'nickname' => $student->nickname, 'avatar_url' => $student->avatar_url];
+            return response()->json(['status' => 'success', 'info' => '操作成功', 'data' => $data]);
+        }
+        return response()->json(['status' => 'fail', 'info' => '没有绑定手机']);
     }
 
     public function checkPosition(Request $request)

+ 2 - 1
routes/wechat.php

xqd
@@ -16,4 +16,5 @@ Route::get('remarkTeacher', 'ApiController@remarkTeacher');
 Route::get('getArticleContent', 'ApiController@getArticleContent');
 Route::get('getAnnounces', 'ApiController@getAnnounces');
 Route::post('updateUserInfo', 'ApiController@updateUserInfo');
-Route::post('bindPhone', 'ApiController@bindPhone');
+Route::post('bindPhone', 'ApiController@bindPhone');
+Route::post('getPhone', 'ApiController@getPhone');

+ 26 - 2
wechat/pages/bind-phone/index.js

xqd xqd
@@ -1,11 +1,13 @@
 // pages/bind-phone/index.js
+const api = require('../../utils/api.js')
+
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
-  
+    phone: ''
   },
 
   /**
@@ -15,10 +17,32 @@ Page({
   
   },
 
+  formSubmit: e => {
+    console.log(e)
+  },
+
   getPhoneNumber: e => {
+    var that = this;
     if (e.detail.errMsg == 'getPhoneNumber:ok') {
       wx.request({
-        url: 'updateUserPhone',
+        url: api.getPhoneUrl,
+        method: 'POST',
+        data: {
+          'id': wx.getStorageSync('we_chat_user_id'),
+          'iv': e.detail.iv,
+          'encryptedData': e.detail.encryptedData,
+        },
+        success: res => {
+          if(res.data.status == 'success') {
+            that.setData({
+              'phone': res.data.phone
+            })
+          } else if(res.data.status == 'fail') {
+            wx.showToast({
+              title: res.data.info,
+            })
+          }
+        }
       })
     }
     console.log(e)

+ 1 - 1
wechat/pages/bind-phone/index.wxml

xqd
@@ -13,7 +13,7 @@
     <zan-row>
       <view class='sg-row'>
         <zan-col col="16" col-class="custom-zan-col">
-          <zan-field placeholder="输入手机号" focus="true" name='phone'></zan-field>
+          <zan-field placeholder="输入手机号" focus="true" name='phone' value='{{ phone }}'></zan-field>
         </zan-col>
         <zan-col col="8" col-class="custom-zan-col">
           <zan-button type='warn' openType="getPhoneNumber" class='get-phone-btn' bindgetphonenumber='getPhoneNumber'>获取</zan-button>

+ 10 - 3
wechat/pages/index/index.js

xqd
@@ -35,9 +35,16 @@ Page({
     })
     var pt_student = wx.getStorageSync('pt_student')
     if (!pt_student) {
-      wx.redirectTo({
-        url: '/pages/login/index',
-      })
+      var we_chat_user = wx.getStorageSync('we_chat_user')
+      if(we_chat_user) {
+        wx.redirectTo({
+          url: '/pages/bind-phone/index',
+        })
+      } else {
+        wx.redirectTo({
+          url: '/pages/login/index',
+        })
+      }
     } else {
       app.globalData.ptStudent = pt_student;
     }

+ 1 - 0
wechat/utils/api.js

xqd
@@ -16,4 +16,5 @@ module.exports = {
   getArticleContentUrl: headUrl + 'getArticleContent',
   getAnnouncesUrl: headUrl + 'getAnnounces',
   updateUserInfoUrl: headUrl + 'updateUserInfo',
+  bindPhoneUrl: headUrl + 'bindPhone',
 }