diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/Clerk.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/Clerk.java index 4f900f967..4e12e56b7 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/Clerk.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/Clerk.java @@ -6,6 +6,7 @@ import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -21,6 +22,7 @@ import lombok.NoArgsConstructor; @TableName("li_clerk") @ApiModel(value = "店员") @NoArgsConstructor +@AllArgsConstructor public class Clerk extends BaseEntity { private static final long serialVersionUID = 1L; @@ -56,7 +58,7 @@ public class Clerk extends BaseEntity { * @param clerkAddDTO */ public Clerk(ClerkAddDTO clerkAddDTO) { - if (!clerkAddDTO.getRoles().isEmpty()) { + if (clerkAddDTO.getRoles()!=null && !clerkAddDTO.getRoles().isEmpty()) { this.roleIds = CharSequenceUtil.join(",", clerkAddDTO.getRoles()); } this.memberId = clerkAddDTO.getMemberId(); diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/StoreClerkRole.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/StoreClerkRole.java index 4f658d5dc..c268ae88e 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/StoreClerkRole.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/StoreClerkRole.java @@ -4,7 +4,10 @@ import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 用户角色 @@ -15,6 +18,8 @@ import lombok.Data; @Data @TableName("li_clerk_role") @ApiModel(value = "用户角色") +@Builder +@NoArgsConstructor public class StoreClerkRole extends BaseIdEntity { @ApiModelProperty(value = "店员唯一id") @@ -32,3 +37,4 @@ public class StoreClerkRole extends BaseIdEntity { } } + diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/ClerkMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/ClerkMapper.java index ca51b1e60..4ea0539d5 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/ClerkMapper.java +++ b/framework/src/main/java/cn/lili/modules/member/mapper/ClerkMapper.java @@ -27,8 +27,8 @@ public interface ClerkMapper extends BaseMapper { * @param ew 店铺ID * @return */ - @Select("select li_clerk.*,m.id from li_clerk inner join li_member as m on li_clerk.member_id = m.id ${ew.customSqlSegment}") - IPage selectClerkPage(Page page, @Param(Constants.WRAPPER) QueryWrapper ew); + @Select("select li_clerk.*,m.id,m.mobile as mobile from li_clerk inner join li_member as m on li_clerk.member_id = m.id ${ew.customSqlSegment}") + IPage selectClerkPage(Page page, @Param(Constants.WRAPPER) QueryWrapper ew); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/StoreMenuMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/StoreMenuMapper.java index 3b644df33..10417ad25 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/StoreMenuMapper.java +++ b/framework/src/main/java/cn/lili/modules/member/mapper/StoreMenuMapper.java @@ -25,7 +25,7 @@ public interface StoreMenuMapper extends BaseMapper { */ @Select("SELECT menu.* FROM li_store_menu AS menu WHERE menu.id IN (" + "SELECT rm.menu_id FROM li_store_menu_role AS rm WHERE rm.role_id IN (" + - "SELECT ur.role_id FROM li_clerk_role AS ur WHERE ur.user_id=#{userId}) OR rm.role_id IN (" + + "SELECT ur.role_id FROM li_clerk_role AS ur WHERE ur.clerk_id=#{userId}) OR rm.role_id IN (" + "SELECT dr.role_id FROM li_store_department_role AS dr WHERE dr.id=(" + "SELECT department_id FROM li_clerk AS au WHERE au.id = #{userId})))") List findByUserId(String userId); diff --git a/framework/src/main/java/cn/lili/modules/member/service/StoreMenuRoleService.java b/framework/src/main/java/cn/lili/modules/member/service/StoreMenuRoleService.java index d179a5b67..98aa9e6f8 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/StoreMenuRoleService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/StoreMenuRoleService.java @@ -26,10 +26,10 @@ public interface StoreMenuRoleService extends IService { /** * 根据角色集合获取拥有的菜单具体权限 * - * @param userId + * @param clerkId * @return */ - List findAllMenu(String userId); + List findAllMenu(String clerkId,String memberId); /** diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java index 9edc97fd2..609654f4b 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java @@ -9,16 +9,14 @@ import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.dos.StoreClerkRole; import cn.lili.modules.member.entity.dos.StoreRole; import cn.lili.modules.member.entity.dto.ClerkAddDTO; import cn.lili.modules.member.entity.dto.ClerkEditDTO; import cn.lili.modules.member.entity.dto.ClerkQueryDTO; import cn.lili.modules.member.entity.vo.ClerkVO; import cn.lili.modules.member.mapper.ClerkMapper; -import cn.lili.modules.member.service.ClerkService; -import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.member.service.StoreDepartmentService; -import cn.lili.modules.member.service.StoreRoleService; +import cn.lili.modules.member.service.*; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -52,7 +50,7 @@ public class ClerkServiceImpl extends ServiceImpl implements @Autowired private MemberService memberService; @Autowired - private ClerkMapper clerkMapper; + private StoreClerkRoleService storeClerkRoleService; @Override public IPage clerkForPage(PageVO page, ClerkQueryDTO clerkQueryDTO) { @@ -62,17 +60,9 @@ public class ClerkServiceImpl extends ServiceImpl implements clerkVOQueryWrapper.eq(StringUtils.isNotEmpty(clerkQueryDTO.getDepartmentId()), "li_clerk.department_id", clerkQueryDTO.getDepartmentId()); clerkVOQueryWrapper.like(StringUtils.isNotEmpty(clerkQueryDTO.getClerkName()), "li_clerk.clerk_name", clerkQueryDTO.getClerkName()); clerkVOQueryWrapper.like(StringUtils.isNotEmpty(clerkQueryDTO.getMobile()), "m.mobile", clerkQueryDTO.getMobile()); - IPage clerkPage = this.clerkMapper.selectClerkPage(PageUtil.initPage(page), clerkVOQueryWrapper); + IPage clerkPage = this.baseMapper.selectClerkPage(PageUtil.initPage(page), clerkVOQueryWrapper); - List result = new ArrayList<>(); - clerkPage.getRecords().forEach(clerk -> { - ClerkVO clerkVO = new ClerkVO(clerk); - result.add(clerkVO); - }); - - Page pageResult = new Page(clerkPage.getCurrent(), clerkPage.getSize(), clerkPage.getTotal()); - pageResult.setRecords(result); - return pageResult; + return clerkPage; /*Page clerkPage = page(initPage, initWrapper); @@ -166,9 +156,9 @@ public class ClerkServiceImpl extends ServiceImpl implements if (!clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } - if(clerkEditDTO.getIsSuper()){ + if (clerkEditDTO.getIsSuper()) { clerk.setRoleIds(""); - }else{ + } else { //角色赋值 if (!clerkEditDTO.getRoles().isEmpty()) { clerk.setRoleIds(CharSequenceUtil.join(",", clerkEditDTO.getRoles())); @@ -216,7 +206,20 @@ public class ClerkServiceImpl extends ServiceImpl implements throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } } + this.save(clerk); + + //判断用户角色权限不为超级会员且权限路径不为空 + if(clerkAddDTO.getIsSuper()==false && clerkAddDTO.getRoles()!=null){ + //添加店员用户角色 + List storeClerkRoleList = new ArrayList<>(); + + clerkAddDTO.getRoles().stream().forEach(a -> { + storeClerkRoleList.add(StoreClerkRole.builder().clerkId(clerk.getId()).roleId(a).build()); + }); + storeClerkRoleService.saveBatch(storeClerkRoleList); + } + return clerk; } @@ -230,7 +233,7 @@ public class ClerkServiceImpl extends ServiceImpl implements QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); queryWrapper.in("id", ids); - List clerks = this.clerkMapper.selectList(queryWrapper); + List clerks = this.baseMapper.selectList(queryWrapper); //校验要重置的店员是否是当前店铺的店员 if (clerks.size() != ids.size()) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); @@ -253,7 +256,7 @@ public class ClerkServiceImpl extends ServiceImpl implements QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); queryWrapper.in("id", ids); - List clerks = this.clerkMapper.selectList(queryWrapper); + List clerks = this.baseMapper.selectList(queryWrapper); if (clerks.size() > 0) { //校验要重置的店员是否是当前店铺的店员 if (clerks.size() != ids.size()) { diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 6be96ee37..1b69a118a 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -426,10 +426,10 @@ public class MemberServiceImpl extends ServiceImpl impleme * @param mobilePhone 手机号 * @return 会员 */ - private Long findMember(String mobilePhone, String userName) { + private Long findMember(String userName,String mobilePhone) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("mobile", mobilePhone) - .or().eq("username", userName); + .eq("username", userName); return this.baseMapper.selectCount(queryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java index 5b876517f..28e7debd6 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuRoleServiceImpl.java @@ -53,11 +53,11 @@ public class StoreMenuRoleServiceImpl extends ServiceImpl findAllMenu(String userId) { - String cacheKey = CachePrefix.STORE_USER_MENU.getPrefix() + userId; + public List findAllMenu(String clerkId,String memberId) { + String cacheKey = CachePrefix.STORE_USER_MENU.getPrefix() + memberId; List menuList = (List) cache.get(cacheKey); - if (menuList == null) { - menuList = storeMenuMapper.getUserRoleMenu(userId); + if (menuList == null || menuList.isEmpty()) { + menuList = storeMenuMapper.getUserRoleMenu(clerkId); cache.put(cacheKey, menuList); } return menuList; diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java index ef7573443..c5e0fafc0 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreMenuServiceImpl.java @@ -8,14 +8,17 @@ import cn.lili.common.exception.ServiceException; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.SearchVO; +import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.StoreMenu; import cn.lili.modules.member.entity.dos.StoreMenuRole; import cn.lili.modules.member.entity.vo.StoreMenuVO; import cn.lili.modules.member.mapper.StoreMenuMapper; +import cn.lili.modules.member.service.ClerkService; import cn.lili.modules.member.service.StoreMenuRoleService; import cn.lili.modules.member.service.StoreMenuService; import cn.lili.modules.permission.entity.dto.MenuSearchParams; import cn.lili.mybatis.util.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -42,6 +45,12 @@ public class StoreMenuServiceImpl extends ServiceImpl> cache; + /** + * 店员 + */ + @Autowired + private ClerkService clerkService; + @Override public void deleteIds(List ids) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -60,7 +69,10 @@ public class StoreMenuServiceImpl extends ServiceImpl userMenus = this.baseMapper.findByUserId(authUser.getId()); + //获取当前登录用户的店员信息 + Clerk clerk = clerkService.getOne(new LambdaQueryWrapper().eq(Clerk::getMemberId, authUser.getId())); + //获取当前店员角色的菜单列表 + List userMenus = this.baseMapper.findByUserId(clerk.getId()); return this.tree(userMenus); } diff --git a/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java b/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java index edc8e82c1..930960216 100644 --- a/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java @@ -60,9 +60,10 @@ public class StoreTokenGenerate extends AbstractTokenGenerate { if (!clerk.getStatus()) { throw new ServiceException(ResultCode.CLERK_DISABLED_ERROR); } - List storeUserMenuVOS = storeMenuRoleService.findAllMenu(clerk.getId()); + //获取当前用户权限 + List storeUserMenuVOS = storeMenuRoleService.findAllMenu(clerk.getId(),member.getId()); //缓存权限列表 - cache.put(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE) + clerk.getId(), this.permissionList(storeUserMenuVOS)); + cache.put(CachePrefix.PERMISSION_LIST.getPrefix(UserEnums.STORE) + member.getId(), this.permissionList(storeUserMenuVOS)); //查询店铺信息 Store store = storeService.getById(clerk.getStoreId()); if (store == null) { @@ -136,6 +137,21 @@ public class StoreTokenGenerate extends AbstractTokenGenerate { * @param queryPermissions 查询权限 */ void initPermission(List superPermissions, List queryPermissions) { + //菜单管理 + superPermissions.add("/store/menu*"); + //退出权限 + superPermissions.add("/store/passport/login/logout*"); + + + + + //店铺设置 + queryPermissions.add("/store/settings/storeSettings*"); + //文章接口 + queryPermissions.add("/store/other/article*"); + //首页统计 + queryPermissions.add("/store/statistics/index*"); + } diff --git a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java index 7acb4d51b..484b38a53 100644 --- a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java @@ -109,19 +109,24 @@ public class ManagerTokenGenerate extends AbstractTokenGenerate { * @param queryPermissions 查询权限 */ void initPermission(List superPermissions, List queryPermissions) { - //用户信息维护 - superPermissions.add("/manager/user/info*"); - superPermissions.add("/manager/user/edit*"); - superPermissions.add("/manager/user/editPassword*"); + //TODO 用户信息维护--操作权限 + //获取当前登录用户 + superPermissions.add("/manager/passport/user/info*"); + //修改用户资料 + superPermissions.add("/manager/passport/user/edit*"); + //修改密码 + superPermissions.add("/manager/passport/user/editPassword*"); + //退出 + superPermissions.add("/manager/passport/user/logout*"); //统计查看权限 queryPermissions.add("/manager/statistics*"); //菜单查看权限 - queryPermissions.add("/manager/menu*"); + queryPermissions.add("/manager/permission/menu*"); //商品分类查看权限 queryPermissions.add("/manager/goods/category*"); //查看地区接口 - queryPermissions.add("/manager/region*"); + queryPermissions.add("/manager/setting/region*"); } diff --git a/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java b/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java index 6c7c478b4..e848ad804 100644 --- a/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java @@ -75,7 +75,7 @@ public class MenuManagerController { return ResultUtil.data(menuService.tree()); } - @ApiOperation(value = "获取所有菜单") + @ApiOperation(value = "获取所有菜单--根据当前用户角色") @GetMapping("/memberMenu") public ResultMessage> memberMenu() { return ResultUtil.data(menuService.findUserTree()); diff --git a/seller-api/src/main/java/cn/lili/controller/permission/StoreMenuController.java b/seller-api/src/main/java/cn/lili/controller/permission/StoreMenuController.java index bc4ee683b..859ea92dd 100644 --- a/seller-api/src/main/java/cn/lili/controller/permission/StoreMenuController.java +++ b/seller-api/src/main/java/cn/lili/controller/permission/StoreMenuController.java @@ -41,7 +41,7 @@ public class StoreMenuController { return ResultUtil.data(storeMenuService.tree()); } - @ApiOperation(value = "获取所有菜单") + @ApiOperation(value = "获取所有菜单---根据当前用户角色") @GetMapping("/memberMenu") public ResultMessage> memberMenu() { return ResultUtil.data(storeMenuService.findUserTree()); diff --git a/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java b/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java index 5444a4fc1..d4459ed11 100755 --- a/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java +++ b/seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java @@ -129,8 +129,8 @@ public class StoreAuthenticationFilter extends BasicAuthenticationFilter { //获取数据(GET 请求)权限 if (request.getMethod().equals(RequestMethod.GET.name())) { //如果用户的超级权限和查阅权限都不包含当前请求的api - if (match(permission.get(PermissionEnum.SUPER.name()), requestUrl) || - match(permission.get(PermissionEnum.QUERY.name()), requestUrl)) { + if (match(permission.get(PermissionEnum.SUPER.name()), requestUrl) + ||match(permission.get(PermissionEnum.QUERY.name()), requestUrl)) { } else { ResponseUtil.output(response, ResponseUtil.resultMap(false, 400, "权限不足")); log.error("当前请求路径:{},所拥有权限:{}", requestUrl, JSONUtil.toJsonStr(permission));