仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在:
【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客
全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码分析,读起来也不复杂~
谨慎:源代码中有一些注释是错误的,有的注释意思完全相反,有的注释对不上号,我在阅读过程中就顺手更新了,并且在我不会的地方添加了新的注释,所以在读源代码过程中一定要谨慎啊!
目录
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
具体的代码业务逻辑,在后面详细解释。