feat(user): 实现扫码登录和推荐人绑定功能- 添加扫码登录相关API接口,包括生成二维码、检查状态、确认登录等
- 在用户注册时支持从邀请参数中获取推荐人ID并绑定 - 修改管理员面板UI,添加统一扫码功能入口- 更新用户管理相关API地址,统一使用SERVER_API_URL - 调整优惠券卡片样式,移除小程序不支持的CSS属性 - 添加聊天会话和消息管理相关API模块 - 新增分销商银行卡管理API接口 - 修改系统用户模型,增加推荐人ID字段 - 更新广告位查询接口,支持根据code获取广告位 - 调整邀请绑定接口参数,将refereeId改为dealerId - 修改环境配置中的应用名称为"时里院子市集" - 移除分享到朋友圈的相关代码 - 添加管理员面板组件,提供统一扫码等管理功能 -修复用户管理API请求参数传递问题 - 添加聊天消息和会话管理的完整CRUD接口 - 更新系统用户相关接口URL,确保正确调用后端服务 - 添加分销商银行卡管理的完整API接口实现 - 修改邀请绑定接口,使用dealerId替代refereeId参数 - 修复扫码登录相关API的URL拼接问题 - 添加二维码内容解析功能,支持多种格式的token提取 - 更新用户信息模型,增加推荐人ID字段 -优化管理员面板样式和交互逻辑- 调整优惠券组件样式,兼容小程序环境限制- 修复用户管理模块的API调用问题 - 添加聊天相关数据模型和接口定义 - 更新环境配置中的应用名称 -修复邀请绑定相关的参数传递问题- 添加扫码登录状态枚举和相关数据结构定义- 优化管理员功能面板的UI展示和交互体验- 修复系统用户管理接口的请求参数问题 - 添加分销商银行卡管理相关接口实现- 调整聊天消息和会话管理接口的数据结构定义 -修复用户管理模块中的API调用路径问题 - 添加扫码登录相关工具函数,如设备信息获取等 - 更新邀请绑定接口的数据模型定义 -优化管理员面板组件的样式和功能实现 -修复系统用户管理接口中的参数传递问题 - 添加聊天相关模块的完整API接口实现 - 调整分销商银行卡管理模块的数据结构定义- 修复扫码登录相关接口的URL拼接问题- 更新用户管理模块中的API调用方式 - 添加聊天消息批量发送等相关接口实现- 修复邀请绑定接口中的参数名称问题- 优化管理员面板组件的功能和交互逻辑 - 调整系统用户管理接口的请求参数传递方式 - 添加分销商银行卡管理模块的完整接口实现 -修复聊天相关接口中的数据结构问题 - 更新扫码登录相关接口的数据模型定义 - 优化管理员功能面板的展示效果和用户体验
This commit is contained in:
66
src/hooks/useAdminMode.ts
Normal file
66
src/hooks/useAdminMode.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { useState, useCallback, useEffect } from 'react';
|
||||
import Taro from '@tarojs/taro';
|
||||
|
||||
/**
|
||||
* 管理员模式Hook
|
||||
* 用于管理管理员用户的模式切换(普通用户模式 vs 管理员模式)
|
||||
*/
|
||||
export function useAdminMode() {
|
||||
const [isAdminMode, setIsAdminMode] = useState<boolean>(false);
|
||||
|
||||
// 从本地存储加载管理员模式状态
|
||||
useEffect(() => {
|
||||
try {
|
||||
const savedMode = Taro.getStorageSync('admin_mode');
|
||||
if (savedMode !== undefined) {
|
||||
setIsAdminMode(savedMode === 'true' || savedMode === true);
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Failed to load admin mode from storage:', error);
|
||||
}
|
||||
}, []);
|
||||
|
||||
// 切换管理员模式
|
||||
const toggleAdminMode = useCallback(() => {
|
||||
const newMode = !isAdminMode;
|
||||
setIsAdminMode(newMode);
|
||||
|
||||
try {
|
||||
// 保存到本地存储
|
||||
Taro.setStorageSync('admin_mode', newMode);
|
||||
|
||||
// 显示切换提示
|
||||
Taro.showToast({
|
||||
title: newMode ? '已切换到管理员模式' : '已切换到普通用户模式',
|
||||
icon: 'success',
|
||||
duration: 1500
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Failed to save admin mode to storage:', error);
|
||||
}
|
||||
}, [isAdminMode]);
|
||||
|
||||
// 设置管理员模式
|
||||
const setAdminMode = useCallback((mode: boolean) => {
|
||||
if (mode !== isAdminMode) {
|
||||
setIsAdminMode(mode);
|
||||
try {
|
||||
Taro.setStorageSync('admin_mode', mode);
|
||||
} catch (error) {
|
||||
console.error('Failed to save admin mode to storage:', error);
|
||||
}
|
||||
}
|
||||
}, [isAdminMode]);
|
||||
|
||||
// 重置为普通用户模式
|
||||
const resetToUserMode = useCallback(() => {
|
||||
setAdminMode(false);
|
||||
}, [setAdminMode]);
|
||||
|
||||
return {
|
||||
isAdminMode,
|
||||
toggleAdminMode,
|
||||
setAdminMode,
|
||||
resetToUserMode
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user