xiansin 2 vuotta sitten
vanhempi
commit
d89ab17d8f

+ 1 - 1
mini/manifest.json

xqd
@@ -50,7 +50,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wx4d0105fabd19dfe2",
+        "appid" : "wxc614ff7099796009",
         "setting" : {
             "urlCheck" : false,
             "minified" : true,

+ 10 - 0
mini/pages.json

xqd
@@ -8,14 +8,24 @@
     {
       "path": "pages/index/index",
       "style": {
+        // #ifdef  MP-KUAISHOU
+        "navigationBarTitleText": "四海剧场",
+        // #endif
+        // #ifdef  MP-TOUTIAO
         "navigationBarTitleText": "张四爷剧场",
+        // #endif
         "enablePullDownRefresh": false
       }
     },
     {
       "path": "pages/login",
       "style": {
+        // #ifdef  MP-KUAISHOU
+        "navigationBarTitleText": "四海剧场",
+        // #endif
+        // #ifdef  MP-TOUTIAO
         "navigationBarTitleText": "张四爷剧场",
+        // #endif
         "enablePullDownRefresh": false
       }
     },

+ 8 - 7
mini/pages/episode/play.vue

xqd xqd xqd
@@ -57,7 +57,7 @@
             v-for="(item,index) in episode.lists"
             :key="index"
           >
-            <!-- #ifdef  MP-TOUTIAO -->
+            <!-- #ifdef  MP-TOUTIAO | MP-WEIXIN-->
             <!-- 控制按钮 - 播放 -->
             <view v-if="!item.isPlaying" class="play-layer main-center cross-center" @tap="handlePlay(item)">
               <u-icon name="play-right-fill" size="100rpx" :color="$colors.defaultColor" />
@@ -186,15 +186,16 @@ export default {
       isCollect: false,
       isFav: false,
       video: {
-        // #ifdef  MP-KUAISHOU
         controls: true,
+        // #ifdef  MP-KUAISHOU |  MP-TOUTIAO
+        progress: false,
         // #endif
-        // #ifdef  MP-TOUTIAO
-        controls: true,
+        // #ifdef  MP-TOUTIAO | MP-WEIXIN
+        progress: true,
         // #endif
         fullscreenBtn: false,
-        playBtn: false,
-        progress: false
+        playBtn: false
+
       },
       toast: {
         status: 'success',
@@ -600,7 +601,7 @@ export default {
         // #ifdef  MP-KUAISHOU
         bottom: 150rpx;
         // #endif
-        // #ifdef  MP-TOUTIAO
+        // #ifdef  MP-TOUTIAO | MP-WEIXIN
         bottom: 100rpx;
         // #endif
         left: 50%;

+ 49 - 2
mini/pages/my/index.vue

xqd xqd xqd xqd
@@ -4,17 +4,40 @@
     <view class="header main-between cross-center">
       <view class="user-box main-left cross-center">
         <view class="head-img">
-          <image :src="userInfo.avatar?userInfo.avatar:'@/static/image/default-head-img.png'" />
+          <!--   #ifdef  MP-KUAISHOU | MP-TOUTIAO   -->
+          <image :src="userInfo.avatar?userInfo.avatar:'/static/image/default-head-img.png'" />
+          <!--   #endif  -->
+          <!--   #ifdef  MP-WEIXIN   -->
+          <button open-type="chooseAvatar" class="avatar cross-center" @chooseavatar="handleGetUserInfo">
+            <image :src="userInfo.avatar?userInfo.avatar:'/static/image/default-head-img.png'" />
+          </button>
+          <!--   #endif  -->
         </view>
         <view class="base">
+          <!--   #ifdef  MP-KUAISHOU | MP-TOUTIAO   -->
           <view v-if="!userInfo.nickname" class="nickname cross-center" @click="handleGetUserInfo">未授权登陆</view>
+          <!--   #endif  -->
+          <!--   #ifdef  MP-WEIXIN   -->
+          <input
+            v-if="!userInfo.nickname"
+            class="nickname cross-center"
+            type="nickname"
+            value="填写昵称"
+            @change="handleNickname"
+          >
+          <!--   #endif  -->
           <view v-if="userInfo.nickname" class="nickname cross-center">{{ userInfo.nickname }}</view>
           <view v-if="userInfo.info.is_vip" class="vip cross-center">
             VIP到期时间: {{ userInfo.info.end_at }}
           </view>
         </view>
       </view>
+      <!--   #ifdef  MP-KUAISHOU | MP-TOUTIAO   -->
       <button open-type="getUserInfo" class="refresh" @click="handleGetUserInfo">刷新</button>
+      <!--   #endif  -->
+      <!--   #ifdef  MP-WEIXIN   -->
+      <!--      <button class="refresh" @click="handleNickname">保存</button>-->
+      <!--   #endif  -->
     </view>
     <!--充值-->
     <view class="recharge main-between cross-center">
@@ -108,7 +131,7 @@ export default {
         this.$u.route(menu.href)
       }
     },
-    handleGetUserInfo() {
+    handleGetUserInfo(res) {
       // #ifdef  MP-KUAISHOU
       this.$loading('数据刷新中...')
       uni.authorize({
@@ -159,6 +182,27 @@ export default {
         }
       })
       // #endif
+      // #ifdef  MP-WEIXIN
+      this.$api.user.update({ avatar: res.detail.avatarUrl }).then(res => {
+        this.code = null
+        this.$hideLoading()
+        this.$store.dispatch('user/info', res.data)
+      }).catch(() => {
+        this.$hideLoading()
+      })
+      // #endif
+    },
+    handleNickname(res) {
+      if (res.detail.value === '填写昵称') {
+        return
+      }
+      this.$api.user.update({ nickname: res.detail.value }).then(res => {
+        this.code = null
+        this.$hideLoading()
+        this.$store.dispatch('user/info', res.data)
+      }).catch(() => {
+        this.$hideLoading()
+      })
     },
     getCode() {
       return new Promise(resolve => {
@@ -192,6 +236,9 @@ export default {
     >.header{
       .user-box{
         .head-img{
+          .avatar{
+            background: transparent;
+          }
           image{
             width: 100rpx;
             height: 100rpx;

+ 57 - 59
server/app/Http/Controllers/V1/AuthController.php

xqd xqd xqd xqd xqd
@@ -11,6 +11,7 @@ use App\Services\JPushService;
 use App\Services\SmsServer;
 use Cache;
 use EasyWeChat\Factory;
+use Illuminate\Http\JsonResponse;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
@@ -22,7 +23,11 @@ class AuthController extends Controller
 {
     public function __construct()
     {
-        $this->wxConfig = ['app_id' => env("WECHAT_MINI_PROGRAM_APPID"), 'secret' => env("WECHAT_MINI_PROGRAM_SECRET"), 'response_type' => 'array'];
+        $this->wxConfig = [
+            'app_id' => env("WECHAT_MINI_PROGRAM_APPID"),
+            'secret' => env("WECHAT_MINI_PROGRAM_SECRET"),
+            'response_type' => 'array'
+        ];
     }
 
     //注册
@@ -115,7 +120,7 @@ class AuthController extends Controller
                 $data['user'] = [];
             } else {
                 $account = $user->mobile ?: $user->email;
-                $data = $this->doLogin($account, $request->post('jpush_reg_id', ''));
+                $data = $this->doLogin1($account, $request->post('jpush_reg_id', ''));
             }
         } catch (Exception $exception) {
             ErrorMsgServive::write($exception, requst()->url());
@@ -158,41 +163,30 @@ class AuthController extends Controller
 
     }
 
+    public function wechat(Request $request): JsonResponse
+    {
+        try {
+            $code = $request->input('code');
+            /* */
+            $app = $this->getUniFactory(3);
+            $res = $app->auth->session($code);
+
+            return $this->doLogin($res['openid'], '',3,  $res['session_key']);
+        } catch (\Exception $e) {
+            ErrorMsgServive::write($e, \request()->url());
+            return $this->error('微信授权登陆出错');
+        }
+    }
+
     // 字节跳动登陆 code
-    public function bytedance(Request $request)
+    public function bytedance(Request $request): JsonResponse
     {
         try {
             $code = $request->input('code');
             $app = $this->getUniFactory();
             $res = $app->login($code);
 
-            $openId = $res['openid'];
-            $user = User::where('open_id', $openId)->first();
-            if (!$user) {
-                $user = new User();
-                $user->open_id = $openId;
-                $user->union_id = $res['unionid'];
-                $user->remember_token = $res['session_key'];
-                $user->save();
-
-                $info = new UserInfo();
-                $info->user_id = $user->id;
-                $info->platform = 1;
-                $info->save();
-
-                $user = User::where('id', $user->id)->first();
-            }else{
-                $user->remember_token = $res['session_key'];
-                $user->save();
-            }
-
-            $token = Auth::guard('api')->fromUser($user);
-            $user = User::with(['info'])->where('id', $user->id)->first();
-            $data = [
-                'token' => "Bearer " . $token,
-                'user_info' => $user,
-            ];
-            return $this->success($data);
+            return $this->doLogin($res['openid'],$res['unionid'],1, $res['session_key']);
         } catch (\Exception $e) {
             ErrorMsgServive::write($e, \request()->url());
             return $this->error('字节授权登陆出错');
@@ -200,48 +194,52 @@ class AuthController extends Controller
     }
 
     // 快手登陆 code
-    public function kuaishou(Request $request)
+    public function kuaishou(Request $request): JsonResponse
     {
         try {
             $code = $request->input('code');
             $app = $this->getUniFactory(2);
             $res = $app->login($code);
 
-            $openId = $res['open_id'];
-            $user = User::where('open_id', $openId)->first();
-            if (!$user) {
-                $user = new User();
-                $user->open_id = $openId;
-                $user->union_id = ''; // 没有 union_id
-                $user->remember_token = $res['session_key'];
-                $user->save();
-
-                $info = new UserInfo();
-                $info->user_id = $user->id;
-                $info->platform = 2;
-                $info->save();
-
-                $user = User::where('id', $user->id)->first();
-            }else{
-                $user->remember_token = $res['session_key'];
-                $user->save();
-            }
-
-            $token = Auth::guard('api')->fromUser($user);
-            $user = User::with(['info'])->where('id', $user->id)->first();
-            $data = [
-                'token' => "Bearer " . $token,
-                'user_info' => $user,
-            ];
-            return $this->success($data);
+            return $this->doLogin($res['open_id'],'',2, $res['session_key']);
         } catch (\Exception $e) {
             ErrorMsgServive::write($e, \request()->url());
             return $this->error('快手授权登陆出错');
         }
     }
 
+    private function doLogin($openid, $unionId, $platform, $sessionKey)
+    {
+        $user = User::where('open_id', $openid)->first();
+        if (!$user) {
+            $user = new User();
+            $user->open_id = $openid;
+            $user->union_id = $unionId; // 没有 union_id
+            $user->remember_token = $sessionKey;
+            $user->save();
+
+            $info = new UserInfo();
+            $info->user_id = $user->id;
+            $info->platform = $platform;
+            $info->save();
+
+            $user = User::where('id', $user->id)->first();
+        }else{
+            $user->remember_token = $sessionKey;
+            $user->save();
+        }
+
+        $token = Auth::guard('api')->fromUser($user);
+        $user = User::with(['info'])->where('id', $user->id)->first();
+        return $this->success([
+            'token' => "Bearer " . $token,
+            'user_info' => $user,
+        ]);
+    }
+
+
     //执行登录
-    public function doLogin($user, $jpush_reg_id = null)
+    public function doLogin1($user, $jpush_reg_id = null)
     {
         if (!empty($jpush_reg_id)) {
             //清除登陆过本设备的账号设备id

+ 19 - 5
server/app/Http/Controllers/V1/Controller.php

xqd xqd xqd xqd
@@ -8,6 +8,8 @@ use App\Helper\UniPlatform\Bytedance\ByteDanceAPI;
 use App\Helper\UniPlatform\Kuaishou\KuaishouAPI;
 use App\Models\PayConfig;
 use Dingo\Api\Routing\Helpers;
+use EasyWeChat\Factory;
+use EasyWeChat\MiniProgram\Application;
 use Illuminate\Foundation\Bus\DispatchesJobs;
 use Illuminate\Routing\Controller as BaseController;
 use Illuminate\Foundation\Validation\ValidatesRequests;
@@ -64,18 +66,20 @@ class Controller extends BaseController
 
     /**
      * @param int $platform
-     * @return ByteDance|Kuaishou
+     * @return ByteDance|Kuaishou|Application
      */
-    protected function getUniFactory($platform = 1)
+    protected function getUniFactory(int $platform = 1)
     {
         if($platform == 1){
             return $this->getByteDanceFactory();
+        }elseif($platform == 2){
+            return $this->getKuishouFactory();
         }
 
-        return $this->getKuishouFactory();
+        return $this->getWechatFactory();
     }
 
-    protected function getByteDanceFactory()
+    protected function getByteDanceFactory(): ByteDance
     {
         $setting = PayConfig::first();
         return (new ByteDance(app(ByteDanceAPI::class)))->factory([
@@ -86,7 +90,7 @@ class Controller extends BaseController
         ]);
     }
 
-    protected function getKuishouFactory()
+    protected function getKuishouFactory(): Kuaishou
     {
         $setting = PayConfig::first();
         return (new Kuaishou(app(KuaishouAPI::class)))->factory([
@@ -95,4 +99,14 @@ class Controller extends BaseController
         ]);
     }
 
+    protected function getWechatFactory(): Application
+    {
+        $setting = PayConfig::first();
+        return Factory::miniProgram([
+            'app_id' => $setting->mini_app_id,
+            'secret' => $setting->mini_app_key,
+            'response_type' => 'array'
+        ]);
+    }
+
 }

+ 21 - 9
server/app/Http/Controllers/V1/UserController.php

xqd
@@ -93,21 +93,33 @@ class UserController extends Controller
         try
         {
             $req = $request->all();
-            $app = $this->getUniFactory(\user()->info->platform);
             /* @var User $user*/
             $user = User::with(['info'])->find(\user()->id);
-            $res = $app->login($req['code']);
+            // 微信已经更改策略了
+            if(\user()->info->platform == 3){
+                if(isset($req['avatar'])){
+                    $user->avatar = $req['avatar'];
+                }
+                if(isset($req['nickname'])){
+                    $user->nickname = $req['nickname'];
+                }
+            }else{
+                $app = $this->getUniFactory(\user()->info->platform);
+                $res = $app->login($req['code']);
 
-            $user->remember_token = $res['session_key'];
-            $decryptedData = $app->decryptData($user->remember_token, $req['iv'], $req['encryptedData']);
+                $user->remember_token = $res['session_key'];
+                $decryptedData = $app->decryptData($user->remember_token, $req['iv'], $req['encryptedData']);
 
 
-            if (isset($decryptedData['nickName'])) {
-                $user->nickname = $decryptedData['nickName'];
-                $user->avatar = $decryptedData['avatarUrl'];
-            }else{
-                $user->mobile = $decryptedData['phoneNumber'];
+                if (isset($decryptedData['nickName'])) {
+                    $user->nickname = $decryptedData['nickName'];
+                    $user->avatar = $decryptedData['avatarUrl'];
+                }else{
+                    $user->mobile = $decryptedData['phoneNumber'];
+                }
             }
+
+
             $user->save();
             return $this->success($user);
         }catch (\Exception $e){

+ 1 - 0
server/routes/api.php

xqd
@@ -41,6 +41,7 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
         $api->get('mini_code', 'AuthController@miniCode'); //获取微信小程序 code
         $api->post('bytedance', 'AuthController@bytedance'); //获取字节跳动小程序 code
         $api->post('kuaishou', 'AuthController@kuaishou'); //获取快手小程序 code
+        $api->post('wechat', 'AuthController@wechat'); //获取微信小程序 code
 
     });