feat: 调整登录逻辑

This commit is contained in:
duanshuwen 2025-09-12 22:20:01 +08:00
parent 07752394eb
commit c03a4200be
12 changed files with 248 additions and 175 deletions

View File

@ -1,5 +1,13 @@
NODE_ENV = development NODE_ENV = development
VITE_BASE_URL = https://biz.nianxx.cn # 测试
VITE_BASE_URL = https://onefeel.brother7.cn/ingress
VITE_WSS_URL = wss://biz.nianxx.cn/agent/ws/chat # 生产
# VITE_BASE_URL = https://biz.nianxx.cn
# 测试
ITE_WSS_URL = wss://onefeel.brother7.cn/ingress/agent/ws/chat
# 生产
# VITE_WSS_URL = wss://biz.nianxx.cn/agent/ws/chat

View File

@ -1,5 +1,13 @@
NODE_ENV = production NODE_ENV = production
VITE_BASE_URL = https://biz.nianxx.cn # 测试
VITE_BASE_URL = https://onefeel.brother7.cn/ingress
VITE_WSS_URL = wss://biz.nianxx.cn/agent/ws/chat # 生产
# VITE_BASE_URL = https://biz.nianxx.cn
# 测试
ITE_WSS_URL = wss://onefeel.brother7.cn/ingress/agent/ws/chat
# 生产
# VITE_WSS_URL = wss://biz.nianxx.cn/agent/ws/chat

View File

@ -1,5 +1,13 @@
NODE_ENV = staging NODE_ENV = staging
VITE_BASE_URL = https://biz.nianxx.cn # 测试
VITE_BASE_URL = https://onefeel.brother7.cn/ingress
VITE_WSS_URL = wss://biz.nianxx.cn/agent/ws/chat # 生产
# VITE_BASE_URL = https://biz.nianxx.cn
# 测试
ITE_WSS_URL = wss://onefeel.brother7.cn/ingress/agent/ws/chat
# 生产
# VITE_WSS_URL = wss://biz.nianxx.cn/agent/ws/chat

36
App.vue
View File

@ -1,28 +1,8 @@
<script setup> <script setup>
import { onLaunch, onShow, onHide, onLoad } from "@dcloudio/uni-app"; import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
import { checkPhone } from "@/manager/LoginManager";
import { goLogin } from "@/hooks/useGoLogin";
import { goHome } from "@/hooks/useGoHome";
onLaunch(async () => { onLaunch(async () => {
console.log("App Launch"); console.log("App Launch");
const token = uni.getStorageSync("token");
// token
if (!token) {
goLogin();
return;
}
if (token) {
const res = await checkPhone();
if (res.data) {
goHome();
}
}
}); });
onShow(() => { onShow(() => {
@ -55,4 +35,18 @@ body,
.mb12 { .mb12 {
margin-bottom: 12px; margin-bottom: 12px;
} }
//
.reset-btn {
background: none;
border: none;
outline: none;
padding: 0;
margin: 0;
&::after {
border: none;
content: " ";
}
}
</style> </style>

View File

@ -1 +1,33 @@
import { loginAuth, checkPhone, bindPhone } from "@/manager/LoginManager";
// 跳转登录
export const goLogin = () => uni.reLaunch({ url: "/pages/login/index" }); export const goLogin = () => uni.reLaunch({ url: "/pages/login/index" });
// 登录逻辑
export const onLogin = (e) => {
const { code } = e.detail;
console.info("onLogin code: ", code);
loginAuth().then(async () => {
// 检测是否绑定手机号
const res = await checkPhone();
if (res.data) return;
const params = { wechatPhoneCode: code, clientId: "2" };
// 绑定手机号
bindPhone(params);
});
};
// 检测token
export const checkToken = async () => {
return new Promise((resolve) => {
const token = uni.getStorageSync("token");
if (!token) return;
resolve(token);
});
};

View File

@ -1,49 +1,48 @@
import { import {
wxLogin, wxLogin,
bindUserPhone, bindUserPhone,
checkUserPhone, checkUserPhone,
} from "../request/api/LoginApi"; } from "../request/api/LoginApi";
import { getWeChatAuthCode } from "./AuthManager"; import { getWeChatAuthCode } from "./AuthManager";
const loginAuth = async () => { const loginAuth = () => {
try { return new Promise(async (resolve, reject) => {
const openIdCode = await getWeChatAuthCode(); const openIdCode = await getWeChatAuthCode();
console.log("获取到的微信授权code:", openIdCode); console.log("获取到的微信授权code:", openIdCode);
const response = await wxLogin({ const response = await wxLogin({
openIdCode: [openIdCode], openIdCode: [openIdCode],
grant_type: "wechat", grant_type: "wechat",
scope: "server", scope: "server",
clientId: "2", clientId: "2",
}); });
console.log("获取到的微信授权response:", response); console.log("获取到的微信授权response:", response);
if (response.access_token) { if (response.access_token) {
uni.setStorageSync("token", response.access_token); uni.setStorageSync("token", response.access_token);
return response;
} else { resolve();
throw new Error(response.message || "登录失败"); } else {
} reject(response.message || "登录失败");
} catch (err) {
throw err;
} }
});
}; };
const bindPhone = async (params) => { const bindPhone = async (params) => {
try { try {
const response = await bindUserPhone(params); const response = await bindUserPhone(params);
return response; return response;
} catch (error) { } catch (error) {
throw err; throw err;
} }
}; };
const checkPhone = async (phone) => { const checkPhone = async (phone) => {
try { try {
const response = await checkUserPhone(phone); const response = await checkUserPhone(phone);
return response; return response;
} catch (error) { } catch (error) {
throw err; throw err;
} }
}; };
export { loginAuth, bindPhone, checkPhone }; export { loginAuth, bindPhone, checkPhone };

View File

@ -1,102 +1,102 @@
{ {
"name" : "YGTianmuCS", "name": "YGTianmuCS",
"appid" : "__UNI__BB03E8A", "appid": "__UNI__BB03E8A",
"description" : "", "description": "",
"versionName" : "1.0.0", "versionName": "1.0.0",
"versionCode" : "100", "versionCode": "100",
"transformPx" : false, "transformPx": false,
/* 5+App */ /* 5+App */
"app-plus" : { "app-plus": {
"usingComponents" : true, "usingComponents": true,
"nvueStyleCompiler" : "uni-app", "nvueStyleCompiler": "uni-app",
"compilerVersion" : 3, "compilerVersion": 3,
"splashscreen" : { "splashscreen": {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender": true,
"waiting" : true, "waiting": true,
"autoclose" : true, "autoclose": true,
"delay" : 0 "delay": 0
},
"safearea" : {
"bottom" : {
"offset" : "auto" //
}
},
/* */
"modules" : {},
/* */
"distribute" : {
/* android */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios */
"ios" : {},
/* SDK */
"sdkConfigs" : {
"oauth" : {}
}
}
}, },
/* */ "safearea": {
"quickapp" : {}, "bottom": {
/* */ "offset": "auto" //
"mp-weixin" : { }
"appid" : "wx23f86d809ae80259",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true,
"requiredPrivateInfos" : [ "getLocation" ],
"permission" : {
"scope.userLocation" : {
"desc" : "用于获取当前所在城市信息"
}
},
"plugins" : {
"WechatSI" : {
"version" : "0.3.6",
"provider" : "wx069ba97219f66d99"
}
},
"__usePrivacyCheck__" : true
}, },
"mp-alipay" : { /* */
"usingComponents" : true "modules": {},
}, /* */
"mp-baidu" : { "distribute": {
"usingComponents" : true /* android */
}, "android": {
"mp-toutiao" : { "permissions": [
"usingComponents" : true, "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"usePrivacyCheck" : true "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
}, "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"uniStatistics" : { "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"enable" : false "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
}, "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"vueVersion" : "3", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"h5" : { "<uses-permission android:name=\"android.permission.CAMERA\"/>",
"router" : { "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"base" : "./", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"mode" : "hash" "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
}, "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"devServer" : { "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"https" : false "<uses-feature android:name=\"android.hardware.camera\"/>",
} "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios */
"ios": {},
/* SDK */
"sdkConfigs": {
"oauth": {}
}
} }
},
/* */
"quickapp": {},
/* wx23f86d809ae80259 wx5e79df5996572539 */
"mp-weixin": {
"appid": "wx5e79df5996572539",
"setting": {
"urlCheck": false
},
"usingComponents": true,
"requiredPrivateInfos": ["getLocation"],
"permission": {
"scope.userLocation": {
"desc": "用于获取当前所在城市信息"
}
},
"plugins": {
"WechatSI": {
"version": "0.3.6",
"provider": "wx069ba97219f66d99"
}
},
"__usePrivacyCheck__": true
},
"mp-alipay": {
"usingComponents": true
},
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao": {
"usingComponents": true,
"usePrivacyCheck": true
},
"uniStatistics": {
"enable": false
},
"vueVersion": "3",
"h5": {
"router": {
"base": "./",
"mode": "hash"
},
"devServer": {
"https": false
}
}
} }

View File

@ -97,12 +97,18 @@
/> />
<ActivityListComponent <ActivityListComponent
v-if="mainPageDataModel.activityList && mainPageDataModel.activityList.length > 0" v-if="
mainPageDataModel.activityList &&
mainPageDataModel.activityList.length > 0
"
:activityList="mainPageDataModel.activityList" :activityList="mainPageDataModel.activityList"
/> />
<RecommendPostsComponent <RecommendPostsComponent
v-if="mainPageDataModel.recommendTheme && mainPageDataModel.recommendTheme.length > 0" v-if="
mainPageDataModel.recommendTheme &&
mainPageDataModel.recommendTheme.length > 0
"
:recommendThemeList="mainPageDataModel.recommendTheme" :recommendThemeList="mainPageDataModel.recommendTheme"
/> />
</ChatCardOther> </ChatCardOther>
@ -165,6 +171,7 @@ import WebSocketManager from "@/utils/WebSocketManager";
import TypewriterManager from "@/utils/TypewriterManager"; import TypewriterManager from "@/utils/TypewriterManager";
import { IdUtils } from "@/utils"; import { IdUtils } from "@/utils";
import { useAppStore } from "@/store"; import { useAppStore } from "@/store";
import { checkToken } from "@/hooks/useGoLogin";
const appStore = useAppStore(); const appStore = useAppStore();
/// ///
@ -346,14 +353,18 @@ onLoad(() => {
}); });
}); });
onMounted(async () => { onMounted(() => {
try { try {
getMainPageData(); getMainPageData();
await loadRecentConversation();
loadConversationMsgList();
addNoticeListener(); addNoticeListener();
initTypewriterManager(); initTypewriterManager();
initWebSocket();
// tokensocket
checkToken().then(async () => {
await loadRecentConversation();
loadConversationMsgList();
initWebSocket();
});
} catch (error) { } catch (error) {
console.error("页面初始化错误:", error); console.error("页面初始化错误:", error);
} }

View File

@ -6,9 +6,14 @@
v-for="(item, index) in itemList" v-for="(item, index) in itemList"
:key="index" :key="index"
> >
<text class="more-tips-item-title" @click="sendReply(item)">{{ <button
item class="reset-btn more-tips-item-title"
}}</text> open-type="getPhoneNumber"
@getphonenumber="onLogin"
@click="sendReply(item)"
>
{{ item }}
</button>
</view> </view>
</view> </view>
</view> </view>
@ -16,6 +21,8 @@
<script setup> <script setup>
import { defineProps } from "vue"; import { defineProps } from "vue";
import { onLogin, checkToken } from "@/hooks/useGoLogin";
const emits = defineEmits(["replySent"]); const emits = defineEmits(["replySent"]);
defineProps({ defineProps({
@ -34,7 +41,9 @@ defineProps({
}); });
const sendReply = (text) => { const sendReply = (text) => {
emits("replySent", text); // checkToken().then(() => {
emits("replySent", text); //
});
}; };
</script> </script>

View File

@ -38,6 +38,7 @@
<script setup> <script setup>
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { getLoginUserPhone } from "@/request/api/LoginApi"; import { getLoginUserPhone } from "@/request/api/LoginApi";
import { checkToken } from "@/hooks/useGoLogin";
// //
const userInfo = ref({ const userInfo = ref({
@ -60,11 +61,14 @@ const menuList = ref([
// //
onMounted(() => { onMounted(() => {
getLoginUserPhoneInfo(); checkToken().then(() => {
getLoginUserPhoneInfo();
});
}); });
const getLoginUserPhoneInfo = async () => { const getLoginUserPhoneInfo = async () => {
const res = await getLoginUserPhone(); const res = await getLoginUserPhone();
if (res.code === 0) { if (res.code === 0) {
userInfo.value.phone = res.data; userInfo.value.phone = res.data;
} }

View File

@ -1,5 +1,5 @@
{ {
"appid": "wx23f86d809ae80259", "appid": "wx5e79df5996572539",
"compileType": "miniprogram", "compileType": "miniprogram",
"libVersion": "3.8.10", "libVersion": "3.8.10",
"packOptions": { "packOptions": {

View File

@ -50,10 +50,10 @@ function request(url, args = {}, method = "POST", customConfig = {}) {
success: (res) => { success: (res) => {
console.log("请求响应:" + JSON.stringify(res)); console.log("请求响应:" + JSON.stringify(res));
resolve(res.data); resolve(res.data);
if (res.statusCode && res.statusCode === 424) { // if (res.statusCode && res.statusCode === 424) {
uni.setStorageSync("token", ""); // uni.setStorageSync("token", "");
goLogin(); // goLogin();
} // }
}, },
fail: (err) => { fail: (err) => {
console.error("请求失败:", err); console.error("请求失败:", err);