【Lilishop商城】No3-4.模块详细设计,店铺店员(店铺店员、店铺部门、店铺角色)的详细设计

news2024/9/24 21:24:13

  仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在:

【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客


全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码分析,读起来也不复杂~

谨慎:源代码中有一些注释是错误的,有的注释意思完全相反,有的注释对不上号,我在阅读过程中就顺手更新了,并且在我不会的地方添加了新的注释,所以在读源代码过程中一定要谨慎啊!

目录

A1.店铺店员

B1.S端(属于显式操作) 

C1.店员

C2.部门

C3.角色

C4.菜单

C5.部门-角色

C6.角色-菜单

B2.店员用户权限(属于业务) 


A1.店铺店员

店铺会绑定一个会员做店主,店铺可以通过手机号码选择多个会员做店员,但是会员在S端只能作为一位店主或者一位店员,也就是只能属于一个店铺。

li_member 会员表里面会存储当前会员开通的店铺信息;

li_clerk 店员表里面会存储店铺添加的会员;且店员在这张表里面一定是唯一的;

li_store 店铺表里面会存储店主的会员信息;

这样存储在使用上会更方便;因为会员与店铺之间的绑定不会轻易改变

B1.S端(属于显式操作) 

店员的权限管理和运营的类似,也是店员(即用户)、部门、角色,只是S端的菜单权限直接由运营端管理(目前是米有管理接口),而且最重要的是店员、部门、角色,及角色-菜单关联都会再关联一个店铺id。

店员、部门、角色都有对应的操作页面,所以一定会有对应的接口controller。

部门-角色、角色-菜单是关联表,是分别属于部门、角色页面的相关操作的。在部门页面,将部门的编辑和部门-角色的编辑分开编辑的哦,所以这里就将关联表也抽成一个controller了

C1.店员

店员这里也是增查改删,店员添加这里会和B端会员申请店铺入驻关联,也就是说添加店员时会进行判断的。如果该会员已经有店铺或者已经是其他店铺的店员就不可添加为店员(以手机号码为判断)

1.店铺店主添加无店铺、非店员的会员为店员成功后:在S端该店员不可再被其他店铺添加为店员,在B端申请店铺入驻后在M端审核将不能通过(也可以入驻时就提示不能申请)

2.无店铺、非店员的会员申请店铺入驻审核中或者审核不通过后:在S端该会员可以被其他店铺添加为店员,或者在B端可以继续申请店铺入驻后,但是二者互斥,最终只会成功一个。

3.无店铺、非店员的会员申请店铺入驻审核通过后:在S端该会员不可再被其他店铺添加为店员,在B端也不能再申请店铺入驻

  • 分页获取店员列表、获取店员详细、检测手机号码有效性、添加店员、修改店员、禁/启 用 店员、删除店员、重置密码

 因为店员-角色关联是跟着店员一同增改的,并且也没有单独获取的关联信息的操作,所以没有用户-角色关联表接口controller,会有关联的service~

C2.部门

这儿的逻辑和运营的类似

  • 获取树状结构、新增部门、更新部门、删除部门、查看部门详情
  • 查看部门拥有的角色、更新部门角色(见部门-角色)

C3.角色

  • 添加角色、分页查询店铺角色、编辑店铺角色、批量删除店铺角色
  • 查看某角色拥有的菜单、保存角色菜单(见角色-菜单)

C4.菜单

只需要查看就可以,当然如果需要动态管理,就可以在运营M端添加这个接口。

  • 获取所有菜单、获取所有菜单---根据当前用户角色

   

C5.部门-角色

这里是关联表,更新时记得将现有的清除然后再新增~ 

  • 查看部门拥有的角色、更新部门角色

C6.角色-菜单

这里是关联表,更新时记得将现有的清除然后再新增~ 

  •  查看某角色拥有的菜单、保存角色菜单(见角色-菜单)

B2.店员用户权限(属于业务) 

这儿不是接口,是说一下业务逻辑。

现在不是有三个端嘛,除B端外都有登录鉴权的(B端也可以添加的)。而认证鉴权就有只在登录时认证、携带token时鉴权,这两点。

因为用户实体不同,一个是会员Member,一个是运营用户AdminUser,为了M端、S端能够使用统一的认证鉴权工具(TokenUtil、AuthenticationFilter),我们使用统一的逻辑:登录时缓存用户登录信息和权限列表,携带token访问时被filter拦截从缓冲中拿到用户信息和权限列表封装成UsernamePasswordAuthenticationToken。这样就可以统一使用啦。

可以看下面几个类,以店铺端登录为例:

//以店铺端登录为例

//店铺登录接口
cn.lili.controller.passport.StorePassportController#userLogin()
//店铺登录业务方法
cn.lili.modules.member.serviceimpl.MemberServiceImpl#usernameStoreLogin()
//店铺生成token方法,在这个里面缓存权限
cn.lili.modules.member.token.StoreTokenGenerate#createToken()


//工具类tokenutil,在这里缓存token
cn.lili.common.security.token.TokenUtil#createToken()


//店铺security过滤器,在这个里面获取缓存中的token和权限进行处理~
cn.lili.security.StoreAuthenticationFilter

具体的代码业务逻辑,在后面详细解释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

exfat文件系统

DBR: DBR偏移量 字段长度(字节) 说明 0x40 - 0x47 8 分区的起始扇区号(隐藏扇区数) 0x48 - 0x4F 8 分区总扇区数 0x50 - 0x53 4 FAT表起始扇区号(从DBR到FAT表的扇区个数) 0x54 - 0x57 4…

【Redis】持久化操作

一、RDB(Redis Database) 1、持久化 redis一般是将数据写到内存中,但也可以将数据写到磁盘中,这个过程称之为持久化 2、什么是RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘中 3、RDB是如何执行备份操作的 redis会单独创建(fork)一个子进程进行…

FPGA 20个例程篇:18.SD卡存放音频WAV播放(下)

第七章 实战项目提升,完善简历 18.SD卡存放音频WAV播放(下) 进一步地我们再结合图1的示意图来分析wav_play模块的时序逻辑设计,大家可以清楚地看到WM8731在Right justified和主从时钟模式下,是先发左声道后发右声道数…

【LeetCode】专题一 二叉树层序遍历

二叉树层序遍历 在本文中,我将会选取LeetCode上二叉树层序遍历的多道例题,并给出解答,通过多道题我们就可以发现,二叉树的层序遍历并不复杂,并且有着共通点。 102. 二叉树的层序遍历 给你二叉树的根节点 root &…

【Labivew】简易计算器

🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

Secure CRT远程连接很快断线问题

问题描述 我们使用Secure CRT连接远程主机时可能会遇到几分钟没操作就无法操作了,需要断开重新连接,非常的麻烦,假如客户端或者服务端能够在快要超时的时候给对方发送一个心跳,得到对方响应就重置下超时时间,这样就能…

arm架构 --- 中断

ARM的异常 终止程序的正常执行过程而不得不去完成的一些特殊工作 中断是异常的一种,包括外部硬件产生的异常和芯片内部硬件产生的内部中断。 ARM有七种处理器模式,其中用户模式和系统模式之外的5钟处理器模式叫做异常模式,用户模式之外的6…

osgEarth示例分析——osgearth_terrainprofile

前言 osgearth_terrainprofile示例,涉及到一个新的类 TerrainProfileCalculator(地形轮廓计算器类),用来计算两个点连线之间的地形数据。左下角会根据点击的起点和终点进行计算,并更新显示地形信息。 效果 拖动地球,到某一个视…

[附源码]Python计算机毕业设计SSM基于的智慧校园安防综合管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

软件安全测试-Web安全测试详解-XSS攻击

目录 1. XSS攻击 1.1 XSS攻击原理 1.2 XSS能做什么 1.3 XSS三种类型 1.4 XSS三种途径 1.5 XSS测试方法 1.5.1 查看代码 1.5.2 准备测试脚本 1.5.3 自动化测试XSS漏洞 1.5.4 XSS注入常用语句 1.6 XSS漏洞防范h3 1.6.1 对输入和URL参数进行过滤(白名单和黑名单) 1.6.…

tensorflow入门(一) 计算图、张量、会话的概念

1、计算图 计算图是tensorflow中最基本的一个概念,tensorflow中的所有计算都被转化成计算图上的节点。tensorflow的名字已经说明了它最重要的两个概念------tensor和flow。张量这个概念在数学或者物理学中可以有不同的解释,在tensorflow中,张…

基于tensorflow的深层神经网络(三)如何用tensorflow优化神经网络

1、神经网络优化算法 梯度下降算法主要用户优化单个参数的取值,而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法,它可以根据定义…

红黑树的插入过程

一棵红黑树是一种特殊的二叉查找树,具有以下性质: 每个节点要么是红色,要么是黑色。根节点是黑色。每个叶子节点(NIL)是黑色。如果一个节点是红色的,那么它的两个儿子都是黑色的。从任意一个节点到其每个叶…

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

在我们之前章节已经提供过了抽屉栏和菜单伸展栏: 63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-CSDN博客_qml侧边栏68.qt quick-qml多级折叠下拉导航菜单 支持动态添加/卸载 支持qml/widget加载等_诺谦的博客-CSDN博客_qml下拉菜单 由…

三维家发生工商变更:注册资本减少46%,美凯龙、阿里等股东退出

近日,云工业软件服务商广东三维家信息科技有限公司(下称“三维家”)发生工商变更,注册资本由16.9254亿元变更为9亿元,同比减少46.83%。同时,包括红星美凯龙、阿里巴巴等多名股东退出,变更时间为…

01.Spring源码整体脉络介绍及源码编译——四

IOC是核心 IOC 容器加载过程【重要】:所有模块都依赖IOC,aop,循环依赖都依赖IOC IOC控制反转,控制理念,来解决层与层之间的耦合。DI注入实现 怎么讲Bean交给IOC容器来管理 配置类xml,注解 加载spring上下…

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy(附源码、数据库)

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts…

【Java基础篇】基础知识易错集锦(二)

我们同样用几道例题来回顾相对应的基础知识; 解析: 首先我呢区分一下实例变量和局部变量; 局部变量:定义在方法内部的变量;实例变量:定义在类中但在任何方法之外,你也可以理解为全局变量&…

16.C预处理器和C库

文章目录C预处理器和C库16.1翻译程序的第一步16.2明示常量:#define16.3在#define中使用参数16.3.1用宏参数创建字符串:#运算符16.3.2预处理器黏合剂:##运算符16.3.3变参宏:...和__VA_ARGS__16.4宏和函数的选择16.5文件包含&#x…

NCTF2022 calc题目复现

calc(环境变量注入getshell) 经典计算器题目,看着有点眼熟,没错,就是buu三月赛的一道题目。由于那时候web可能都算不上入门,所以也就没有复现。比赛时就网上看了看三月赛的wp,但是没有什么用&a…