Quellcode durchsuchen

✨ 个人信息:增加读取社交信息的接口

YunaiV vor 1 Jahr
Ursprung
Commit
4d9343d2db

+ 20 - 23
pages/user/info.vue

@@ -127,9 +127,9 @@
       </view>
     </uni-forms>
 
+    <!-- 当前社交平台的绑定关系,只处理 wechat 微信场景 -->
     <view v-if="sheep.$platform.name !== 'H5'">
       <view class="title-box ss-p-l-30">第三方账号绑定</view>
-
       <view class="account-list ss-flex ss-row-between">
         <view v-if="'WechatOfficialAccount' === sheep.$platform.name" class="ss-flex ss-col-center">
           <image
@@ -153,16 +153,16 @@
           <text class="list-name">微信开放平台</text>
         </view>
         <view class="ss-flex ss-col-center">
-          <view class="info ss-flex ss-col-center" v-if="state.thirdOauthInfo">
+          <view class="info ss-flex ss-col-center" v-if="state.thirdInfo">
             <image
               class="avatar ss-m-r-20"
-              :src="sheep.$url.cdn(state.thirdOauthInfo.avatar)"
-            ></image>
-            <text class="name">{{ state.thirdOauthInfo.nickname }}</text>
+              :src="sheep.$url.cdn(state.thirdInfo.avatar)"
+            />
+            <text class="name">{{ state.thirdInfo.nickname }}</text>
           </view>
           <view class="bind-box ss-m-l-20">
             <button
-              v-if="state.thirdOauthInfo"
+              v-if="state.thirdInfo.openid"
               class="ss-reset-button relieve-btn"
               @tap="unBindThirdOauth"
             >
@@ -193,7 +193,7 @@
   const state = reactive({
     model: {}, // 个人信息
     rules: {},
-    thirdOauthInfo: null,
+    thirdInfo: {}, // 社交用户的信息
   });
 
   const placeholderStyle = 'color:#BBBBBB;font-size:28rpx;line-height:normal';
@@ -210,17 +210,17 @@
 
   const userInfo = computed(() => sheep.$store('user').userInfo);
 
-  // 选择性别 TODO
+  // 选择性别
   function onChangeGender(e) {
     state.model.sex = e.detail.value;
   }
 
-  // 修改手机号 TODO
+  // 修改手机号
   const onChangeMobile = () => {
     showAuthModal('changeMobile');
   };
 
-  // TODO 芋艿:微信公众号的处理,暂时忽略;后续再说
+  // 选择微信的头像,进行上传
   function onChooseAvatar(e) {
     const tempUrl = e.detail.avatarUrl || '';
     uploadAvatar(tempUrl);
@@ -258,7 +258,7 @@
     }
   }
 
-  // 解绑第三方账号 TODO
+  // 解绑第三方账号
   function unBindThirdOauth() {
     uni.showModal({
       title: '解绑提醒',
@@ -266,11 +266,12 @@
       cancelText: '再想想',
       confirmText: '确定',
       success: async function (res) {
-        if (res.confirm) {
-          const result = await sheep.$platform.useProvider('wechat').unbind();
-          if (result) {
-            getUserInfo();
-          }
+        if (!res.confirm) {
+          return;
+        }
+        const result = await sheep.$platform.useProvider('wechat').unbind(state.thirdInfo.openid);
+        if (result) {
+          await getUserInfo();
         }
       },
     });
@@ -294,14 +295,10 @@
     const userInfo = await sheep.$store('user').getInfo();
     state.model = clone(userInfo);
 
-    // TODO 芋艿:第三方授权信息,待搞
+    // 获得社交用户的信息
     if (sheep.$platform.name !== 'H5') {
-		  return;
-		  // 这个先注释,要不然小程序保存个人信息有问题,
-      let { data, error } = await sheep.$api.user.thirdOauthInfo();
-      if (error === 0) {
-        state.thirdOauthInfo = data;
-      }
+      const result = await sheep.$platform.useProvider('wechat').getInfo();
+      state.thirdInfo = result || {};
     }
   };
 

+ 54 - 0
sheep/api/member/social.js

@@ -0,0 +1,54 @@
+import request from '@/sheep/request';
+
+const SocialApi = {
+  // 获得社交用户
+  getSocialUser: (type) => {
+    return request({
+      url: '/app-api/member/social-user/get',
+      method: 'GET',
+      params: {
+        type
+      },
+      custom: {
+        showLoading: false,
+      },
+    });
+  },
+  // 社交绑定
+  socialBind: (type, code, state) => {
+    return request({
+      url: '/app-api/member/social-user/bind',
+      method: 'POST',
+      data: {
+        type,
+        code,
+        state
+      },
+      custom: {
+        custom: {
+          showSuccess: true,
+          loadingMsg: '绑定中',
+          successMsg: '绑定成功',
+        },
+      },
+    });
+  },
+  // 社交绑定
+  socialUnbind: (type, openid) => {
+    return request({
+      url: '/app-api/member/social-user/unbind',
+      method: 'DELETE',
+      data: {
+        type,
+        openid
+      },
+      custom: {
+        showLoading: false,
+        loadingMsg: '解除绑定',
+        successMsg: '解绑成功',
+      },
+    });
+  },
+};
+
+export default SocialApi;

+ 0 - 12
sheep/api/third.js

@@ -28,18 +28,6 @@ export default {
         },
       }),
 
-    // 解除绑定微信
-    unbind: (data) =>
-      request({
-        url: 'third/wechat/unbind',
-        method: 'POST',
-        data,
-        custom: {
-          showSuccess: true,
-          loadingMsg: '解除绑定',
-        },
-      }),
-
     // 公众号授权
     oauthLogin: (data) =>
       request({

+ 14 - 7
sheep/platform/provider/wechat/miniProgram.js

@@ -1,6 +1,6 @@
 import third from '@/sheep/api/third';
-import $store from '@/sheep/store';
 import AuthUtil from '@/sheep/api/member/auth';
+import SocialApi from '@/sheep/api/member/social';
 
 const socialType = 34; // 社交类型 - 微信小程序
 
@@ -83,11 +83,9 @@ const bind = () => {
 };
 
 // 微信小程序解除绑定
-const unbind = async () => {
-  const { error } = await third.wechat.unbind({
-    platform: 'miniProgram',
-  });
-  return !error;
+const unbind = async (openid) => {
+  const { code } = await SocialApi.socialUnbind(socialType, openid);
+  return code === 0;
 };
 
 // 小程序更新
@@ -183,13 +181,22 @@ function setOpenid(openid) {
   uni.setStorageSync('openid', openid);
 }
 
+// 获得社交信息
+async function getInfo() {
+  const { code, data } = await SocialApi.getSocialUser(socialType);
+  if (code !== 0) {
+    return undefined;
+  }
+  return data;
+}
+
 export default {
   load,
   login,
   bind,
   unbind,
-  checkUpdate,
   bindUserPhoneNumber,
   mobileLogin,
+  getInfo,
   subscribeMessage,
 };

+ 15 - 7
sheep/platform/provider/wechat/officialAccount.js

@@ -2,6 +2,7 @@ import third from '@/sheep/api/third';
 import $wxsdk from '@/sheep/libs/sdk-h5-weixin';
 import { getRootUrl } from '@/sheep/helper';
 import AuthUtil from '@/sheep/api/member/auth';
+import SocialApi from '@/sheep/api/member/social';
 
 const socialType = 31; // 社交类型 - 微信公众号
 
@@ -51,13 +52,10 @@ async function bind(code = '') {
 }
 
 // 微信公众号解除绑定
-async function unbind() {
-  debugger
-  const { error } = await third.wechat.unbind({
-    platform: 'officialAccount',
-  });
-  return Promise.resolve(!error);
-}
+const unbind = async (openid) => {
+  const { code } = await SocialApi.socialUnbind(socialType, openid);
+  return code === 0;
+};
 
 // 获取公众号登陆地址
 async function getLoginUrl(event = 'login') {
@@ -104,10 +102,20 @@ function setOpenid(openid) {
   uni.setStorageSync('openid', openid);
 }
 
+// 获得社交信息
+async function getInfo() {
+  const { code, data } = await SocialApi.getSocialUser(socialType);
+  if (code !== 0) {
+    return undefined;
+  }
+  return data;
+}
+
 export default {
   load,
   login,
   bind,
   unbind,
+  getInfo,
   jssdk: $wxsdk,
 };

+ 18 - 0
sheep/platform/provider/wechat/openPlatform.js

@@ -1,7 +1,9 @@
 // 登录
 import third from '@/sheep/api/third';
+import SocialApi from '@/sheep/api/member/social';
 
 // TODO 芋艿:等后面搞 App 再弄
+const socialType = 32; // 社交类型 - 微信开放平台
 
 const load = async () => {};
 
@@ -37,7 +39,23 @@ const login = () => {
   });
 };
 
+// 微信 App 解除绑定
+const unbind = async (openid) => {
+  const { code } = await SocialApi.socialUnbind(socialType, openid);
+  return code === 0;
+};
+
+// 获得社交信息
+async function getInfo() {
+  const { code, data } = await SocialApi.getSocialUser(socialType);
+  if (code !== 0) {
+    return undefined;
+  }
+  return data;
+}
+
 export default {
   load,
   login,
+  getInfo
 };