当前位置: 首页 > news >正文

群控系统服务端开发模式-应用开发-个人资料

        群控系统服务端开发模式后端基础框架现在就差个人资料、及权限验证。下面开发个人资料。

一、获取个人信息

        1、添加路由

                在根目录下route文件夹下面app.php文件中添加如下代码:

Route::post('member/personal_data','permission.Member/personalData');// 获取个人信息接口

        2、添加控制层管理及对应方法

                在根目录下app文件夹下controller文件夹下permission文件夹中创建个人资料控制文件并命名为Member,代码如下:

<?php
/*** 个人信息控制-也就是登录者信息及角色对外方法* User: 龙哥·三年风水* Date: 2024/10/30* Time: 14:18*/
namespace app\controller\permission;
use app\controller\Base;
use app\model\param\Department as PDModel;
use app\model\param\Grade as PGModel;
use app\model\permission\Role as PRModel;
use app\model\param\System as PSModel;
use app\model\permission\Admin as PAModel;
use Other\Tree;
use Redis\Redis;
use app\model\permission\Menu as PMModel;
class Member extends Base
{/*** 获取个人信息* User: 龙哥·三年风水* Date: 2024/10/30* Time: 14:23* @ return \think\response\Json*/public function personalData(){$data = [];$data['username'] = $this->username;$data['avatar'] = $this->avatar;$data['email'] = $this->email;$data['realname'] = $this->realname;$data['ip'] = empty($this->ip) ? '' : $this->ip;$departmentTitle = PDModel::dataFind(['id' => $this->departmentId],'title',false);$data['department_title'] = empty($departmentTitle) ? '' : $departmentTitle;$gradeTitle = PGModel::dataFind(['id' => $this->gradeId],'title',false);$data['grade_title'] = empty($gradeTitle) ? '' : $gradeTitle;$data['rolename'] = PRModel::dataFind(['id' => $this->roleId],'rolename',false);$res = $this->getRoleMenu();$data['key'] = $res['key'];$data['butt'] = $res['butts'];return succ('操作成功',$data);}
}

二、获取登录者菜单

        1、添加路由

                在根目录下route文件夹下面app.php文件中添加如下代码:

Route::post('member/personal_menu','permission.Member/personalMenu');// 获取个人菜单接口

        2、添加方法

                在根目录下app文件夹下controller文件夹下permission文件夹下Member控制文件中添加获取个人菜单接口的方法,代码如下:

    /*** 登录者菜单权限* User: 龙哥·三年风水* Date: 2024/11/5* Time: 17:32* @ return \think\response\Json*/public function personalMenu(){$listMenu = unserialize(Redis::select(config('cache.stores.redis.cache_db'))->get('menu_list'.$this->userId));if($listMenu === false){if(count($this->rules) == 0)$this->setAuth();$listMenu = PMModel::getAll([['id', 'in', $this->rules], ['status', '=', 1], ['is_menu', '=', 1]], 'id,menuname,pid,title,path,component,icon,redirect,always_show,is_hidden,is_icon,is_cache','sort DESC,id DESC');if(empty($listMenu)) return err("该用户没有权限");$seconds = rand(60,120);Redis::select(config('cache.stores.redis.cache_db'))->setex('menu_list'.$this->userId,$seconds,serialize($listMenu));}$data['menu'] = Tree::list_to_tree($listMenu,0, 'id', 'pid', 'children');return succ('操作成功',$data);}

三、修改个人信息

        1、添加路由

                在根目录下route文件夹下面app.php文件中添加如下代码:

Route::post('member/update_personal','permission.Member/updatePersonal');// 修改个人信息接口

        2、添加方法

                在根目录下app文件夹下controller文件夹下permission文件夹下Member控制文件中添加编辑个人信息接口的方法,代码如下:

    /*** 修改个人资料* User: 龙哥·三年风水* Date: 2024/11/5* Time: 9:31*/public function updatePersonal(){$param = $this->request->param();$validate = new \app\validate\permission\UpdateAdmin;$param['id'] = $this->userId;if (!$validate->check($param)) return err($validate->getError());if(!empty($param['password'])){$securityPassword = PSModel::dataFind(['id' => 1],'security_password')['security_password'];$data['password'] = sha1($param['password'] . $securityPassword);}$data['username'] = $param['username'];$data['avatar'] = empty($param['avatar']) ? $this->avatar : $param['avatar'];$data['realname'] = $param['realname'];$data['email'] = $param['email'];PAModel::redisSave($data, $this->userId);return succ('操作成功',[]);}

相关文章:

群控系统服务端开发模式-应用开发-个人资料

群控系统服务端开发模式后端基础框架现在就差个人资料、及权限验证。下面开发个人资料。 一、获取个人信息 1、添加路由 在根目录下route文件夹下面app.php文件中添加如下代码&#xff1a; Route::post(member/personal_data,permission.Member/personalData);// 获取个人信息…...

openssl生成加密,公钥实现非对称加密

私钥用于加密&#xff0c;公钥用于解密 私钥用于颁发token&#xff0c;公钥用于验证token&#xff0c;公钥不能颁发token 私钥和公钥是一对&#xff0c;不能单独使用&#xff0c;利用私钥生成公钥&#xff0c;利用公钥进行解密 使用openssl来生成一对私钥和公钥&#xff1a;ope…...

[CKS] K8S Admission Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于Admission。 Whats Admission Kubernetes Admission是Kubernetes集群中一种机制&#xff0c;用于控制和修改集群中的资源对象。它允许您在Kubernetes资源被创建、更新或删除之前&#xff0c;对资源…...

前端学习Day13 CSS盒子的定位(固定定位篇“附练习”)

一、固定定位 固定定位 &#xff08;position:fixed&#xff09;其实是绝对定位的子类别&#xff0c;一个设置了 position:fixed 的元素是相对于视窗固定的&#xff0c;就算页面文档发生了滚动&#xff0c;它也会一直待在相同的地方。 ⚠️&#xff1a;固定定位会脱离文档流。…...

Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.

现象 Tomcat 启动后&#xff0c;控制台输出卡在了&#xff1a; At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JA…...

计算机网络:网络层 —— 移动 IP 技术

文章目录 IPv6IPv6 的诞生背景主要优势IPv6引进的主要变化 IPv6数据报的基本首部IPv6数据报首部与IPv4数据报首部的对比 IPv6数据报的拓展首部IPv6地址IPv6地址空间大小IPv6地址的表示方法 IPv6地址的分类从IPv4向IPv6过渡使用双协议栈使用隧道技术 网际控制报文协议 ICMPv6ICM…...

useCrudSchemas

摘要&#xff1a; useCrudSchemas 不是一个标准的JavaScript或数据库操作库函数&#xff0c;也不是一个广泛认知的术语。它可能是某个特定项目或应用程序中定义的一个自定义函数或方法&#xff0c;用于简化CRUD&#xff08;创建、读取、更新、删除&#xff09;操作。 在Web开发…...

SpringBoot3集成Junit5

目录 1. 确保项目中包含相关依赖2. 配置JUnit 53. 编写测试类4、Junit5 新增特性4.1 注解4.2 断言4.3 嵌套测试4.4 总结 在Spring Boot 3中集成JUnit 5的步骤相对简单。以下是你可以按照的步骤&#xff1a; 1. 确保项目中包含相关依赖 首先&#xff0c;确保你的pom.xml文件中…...

【EMNLP2024】阿里云人工智能平台 PAI 多篇论文入选 EMNLP2024

近期&#xff0c;阿里云人工智能平台 PAI 的多篇论文在 EMNLP2024 上入选。论文成果是阿里云与华南理工大学金连文教授团队、复旦大学王鹏教授团队共同研发。EMNLP 是人工智能自然语言处理领域的顶级国际会议&#xff0c;聚焦于自然语言处理技术在各个应用场景的学术研究&#…...

Spark的Shuffle过程

一、Shuffle 的作用是什么&#xff1f; Shuffle 操作可以理解为将集群中各个节点上的数据进行重新整理和分类的过程。这一概念源自 Hadoop 的 MapReduce 模型&#xff0c;Shuffle 是连接 Map 阶段和 Reduce 阶段的关键环节。在分布式计算中&#xff0c;每个计算节点通常只处理任…...

Java+Swing可视化图像处理软件

JavaSwing可视化图像处理软件 一、系统介绍二、功能展示1.图片裁剪2.图片缩放3.图片旋转4.图像灰度处理5.图像变形6.图像扭曲7.图像移动 三、系统实现1.ImageProcessing.java 四、其它1.其他系统实现2.获取源码 一、系统介绍 该系统实现了图片裁剪、缩放、旋转、图像灰度处理、…...

RDD转换算子:【mapValues、mapPartitions】

文章目录 1、mapValues算子功能语法举例 2、mapPartitions算子功能语法举例 1、mapValues算子 功能 针对二元组KV类型的RDD&#xff0c;对RDD中每个元素的Value进行map处理&#xff0c;结果放入一个新的RDD中 语法 def mapValues(self: RDD[Tuple[K,V]], f: (V) -> U) -…...

数组和指针的复杂关系

C语言中指针和数组的关系似乎很“纠结”&#xff0c;让人爱恨交织。本文试图帮助读者理清它们之间的复杂关系&#xff01; 数组名的理解 数组元素在内存中是连续存放的&#xff0c;在C语言中&#xff0c;数组名有特殊的含义&#xff0c;它表示数组首元素的地址。因此&#xf…...

Linux系统I/O调优实例

文章目录 一 、资源限制二、测试硬盘速度&#xff1a; 一 、资源限制 限制用户资源配置文件&#xff1a;/etc/security/limits.conf [rootxuegod63 ~]# vim /etc/security/limits.conf 每行的格式&#xff1a; 用户名/用户组名 类型(软限制/硬限制) 选项 值 通常我们在服务器…...

记录Ubuntu OS的异常

PS: 参加过408改卷的ZJU ghsongzju.edu.cn 开启嘲讽: 你们知道408有多简单吗&#xff0c;操作系统真实水平自己知道就行&#xff5e;&#xff5e; dmesg dmesg 是一个用于显示内核环形缓冲区消息的命令&#xff0c;主要用于查看系统启动时的消息、驱动程序加载信息、硬件错误…...

Vue 3 单元测试与E2E测试

在Vue 3应用的开发过程中&#xff0c;测试是一个至关重要的环节。它不仅能够确保代码的正确性&#xff0c;还能在后续的代码重构和升级过程中提供安全保障。本文将深入探讨Vue 3的单元测试&#xff08;Unit Testing&#xff09;和端到端测试&#xff08;End-to-End Testing, E2…...

猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!

换毛季家里孩子不省心&#xff0c;疯狂掉落的猫毛和空气中乱飞的浮毛可把我折磨死了。每天下班都要抽出时间来清理&#xff0c;不然这个家就不能要了。猫毛靠我自己可以打扫&#xff0c;浮毛还得借助宠物空气净化器这种专业工具。所以我最近着手做功课&#xff0c;打算入手一台…...

第十九课 Vue组件中的方法

Vue组件中的方法 组件中的方法拓展与实例对象中的方法拓展类似 <div id"app"><test></test> </div> <script>Vue.component(test, {template: <input type"button" value"这是个按钮组件" click"fun()…...

【JavaScript】V8,Nodejs 与浏览器

V8 V8 是一个 JavaScript engine&#xff0c;负责编译并执行 JavaScript 源代码&#xff0c;处理对象的内存分配&#xff0c;并对不再需要的对象进行垃圾收集。 V8 包含两个主要组件&#xff1a; Memory Heap&#xff1a;负责存储分配。 Call Stack&#xff1a;代码执行时&am…...

内存马浅析

之前在jianshu上写了很多博客&#xff0c;但是安全相关的最近很多都被锁了。所以准备陆陆续续转到csdn来。内存马前几年一直是个很热门的漏洞攻击手段&#xff0c;因为相对于落地的木马&#xff0c;无文件攻击的内存马隐蔽性、持久性更强&#xff0c;适用的漏洞场景也更多。 J…...

低成本AI助手方案:OpenClaw+Qwen3-32B私有镜像替代GPT-4

低成本AI助手方案&#xff1a;OpenClawQwen3-32B私有镜像替代GPT-4 1. 为什么选择本地化AI助手 去年冬天&#xff0c;当我第37次收到OpenAI API的账单时&#xff0c;手指悬在支付按钮上迟迟按不下去——单月$127的支出已经超出了个人项目的预算红线。作为一个独立开发者&…...

新手必看!用Python+OpenCV实现简易版视觉里程计(附车道线检测代码)

PythonOpenCV实战&#xff1a;从车道线检测到简易视觉里程计 在自动驾驶和机器人导航领域&#xff0c;视觉里程计(VO)是一项基础而关键的技术。它像是一双"数字眼睛"&#xff0c;通过分析连续图像帧之间的变化来估算设备的运动轨迹。想象一下&#xff0c;当你闭着眼…...

AI智能体应用工程师:少数人掌握的高薪未来,你离入场还有多远

AI智能体应用工程师 — 国家战略人才项目|企业刚需资质—国务院发布关于实施“人工智能”行动。文中指出:到2027年&#xff0c;率先实现人工智能与6大重点领域广泛深度融合&#xff0c;新一代智能体终端、智能体等应用普及率超过70%。 各地省政府于2025年市级“A1产业”专项基金…...

Agisoft/PhotoScan手动对齐照片的实用技巧与常见问题解决

1. 手动对齐照片的核心原理与适用场景 当你用Agisoft/PhotoScan处理航拍或近景摄影测量数据时&#xff0c;可能会遇到部分照片无法自动对齐的情况。这种情况通常发生在拍摄场景缺乏明显纹理特征&#xff08;比如大片草地、水面&#xff09;或存在重复图案&#xff08;如整齐排列…...

推荐系统优化秘籍:如何用Metric Learning解决冷启动问题?

推荐系统优化秘籍&#xff1a;如何用Metric Learning解决冷启动问题&#xff1f; 在推荐系统领域&#xff0c;冷启动问题一直是困扰算法工程师和产品经理的核心挑战之一。新用户缺乏历史行为数据&#xff0c;新商品没有足够的曝光记录&#xff0c;传统协同过滤方法在这些场景下…...

FPGA加速二值化CNN:从MNIST手写识别到硬件优化实践

1. 二值化神经网络与FPGA加速基础 二值化神经网络&#xff08;BNN&#xff09;是近年来边缘计算领域的重要突破&#xff0c;它将传统神经网络中的32位浮点权重和激活值压缩到仅用1位表示&#xff08;1或-1&#xff09;。这种极端量化带来的直接好处是存储需求降低32倍&#xff…...

终极Ponzu数据迁移指南:快速掌握内容导入导出和批量操作技巧

终极Ponzu数据迁移指南&#xff1a;快速掌握内容导入导出和批量操作技巧 【免费下载链接】ponzu Headless CMS with automatic JSON API. Featuring auto-HTTPS from Lets Encrypt, HTTP/2 Server Push, and flexible server framework written in Go. 项目地址: https://git…...

AI专著生成速达秘籍:高性价比工具剖析,助力快速创作

创新是学术专著所需的核心元素&#xff0c;也是写作的一道高门槛。一部合格的学术专著&#xff0c;不能仅仅是对已有研究成果的机械拼凑&#xff0c;而应当展示贯穿全书的独特见解、理论模型或研究方法。在浩如烟海的学术文献中&#xff0c;识别尚未探索的研究空白并不是一件容…...

# 发散创新:基于Python与Open3D的数字孪生可视化实时仿真系统构建在工业4.0和智能制造浪潮中,**

发散创新&#xff1a;基于Python与Open3D的数字孪生可视化实时仿真系统构建 在工业4.0和智能制造浪潮中&#xff0c;数字孪生&#xff08;Digital Twin&#xff09; 已成为连接物理世界与虚拟模型的核心技术之一。本文将围绕一个轻量级、高扩展性的数字孪生应用原型系统展开讲解…...

终极游戏画质优化指南:3步让所有显卡享受DLSS级性能提升

终极游戏画质优化指南&#xff1a;3步让所有显卡享受DLSS级性能提升 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为显卡性能…...