From 4c3c758b899e654ae1c9f76fdf210941ec0a3102 Mon Sep 17 00:00:00 2001 From: Junling Bu Date: Mon, 7 Jan 2019 15:23:41 +0800 Subject: [PATCH] =?UTF-8?q?feat[litemall-admin,=20litemall-admin-api,=20li?= =?UTF-8?q?temall-db]:=20=E6=94=AF=E6=8C=81=E6=9D=83=E9=99=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotation/RequiresPermissionsDesc.java | 15 + .../admin/shiro/AdminAuthorizingRealm.java | 15 +- .../admin/util/AdminResponseCode.java | 3 +- .../litemall/admin/util/PermVo.java | 34 + .../litemall/admin/util/PermissionUtil.java | 92 ++ .../litemall/admin/web/AdminAdController.java | 6 + .../admin/web/AdminAdminController.java | 6 + .../admin/web/AdminAuthController.java | 20 +- .../admin/web/AdminBrandController.java | 6 + .../admin/web/AdminCategoryController.java | 6 + .../admin/web/AdminCollectController.java | 2 + .../admin/web/AdminCommentController.java | 3 + .../admin/web/AdminCouponController.java | 7 + .../admin/web/AdminDashbordController.java | 2 - .../admin/web/AdminFeedbackController.java | 2 + .../admin/web/AdminFootprintController.java | 2 + .../admin/web/AdminGoodsController.java | 7 + .../admin/web/AdminGrouponController.java | 8 +- .../admin/web/AdminHistoryController.java | 2 + .../admin/web/AdminIndexController.java | 3 + .../admin/web/AdminIssueController.java | 5 + .../admin/web/AdminKeywordController.java | 6 + .../admin/web/AdminOrderController.java | 9 +- .../admin/web/AdminRoleController.java | 223 +++ .../admin/web/AdminStatController.java | 4 + .../admin/web/AdminStorageController.java | 8 +- .../admin/web/AdminTopicController.java | 6 + .../admin/web/AdminUserController.java | 5 + .../litemall/admin/PermissionTest.java | 29 + litemall-admin/package.json | 1 + litemall-admin/src/api/role.js | 65 + litemall-admin/src/router/index.js | 12 + litemall-admin/src/utils/request.js | 20 +- litemall-admin/src/views/sys/admin.vue | 36 +- litemall-admin/src/views/sys/role.vue | 244 +++ .../mybatis-generator/generatorConfig.xml | 8 + .../db/dao/LitemallPermissionMapper.java | 159 ++ .../litemall/db/dao/LitemallRoleMapper.java | 159 ++ .../litemall/db/domain/LitemallAdmin.java | 41 +- .../db/domain/LitemallAdminExample.java | 180 ++- .../db/domain/LitemallPermission.java | 481 ++++++ .../db/domain/LitemallPermissionExample.java | 1218 +++++++++++++++ .../litemall/db/domain/LitemallRole.java | 518 +++++++ .../db/domain/LitemallRoleExample.java | 1360 +++++++++++++++++ .../db/service/LitemallAdminService.java | 2 +- .../db/service/LitemallPermissionService.java | 80 + .../db/service/LitemallRoleService.java | 104 ++ .../litemall/db/dao/LitemallAdminMapper.xml | 71 +- .../db/dao/LitemallPermissionMapper.xml | 421 +++++ .../litemall/db/dao/LitemallRoleMapper.xml | 438 ++++++ 50 files changed, 6119 insertions(+), 35 deletions(-) create mode 100644 litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/annotation/RequiresPermissionsDesc.java create mode 100644 litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermVo.java create mode 100644 litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermissionUtil.java create mode 100644 litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java create mode 100644 litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/PermissionTest.java create mode 100644 litemall-admin/src/api/role.js create mode 100644 litemall-admin/src/views/sys/role.vue create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallPermissionMapper.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallRoleMapper.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallPermission.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallPermissionExample.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallRole.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallRoleExample.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallPermissionService.java create mode 100644 litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallRoleService.java create mode 100644 litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallPermissionMapper.xml create mode 100644 litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallRoleMapper.xml diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/annotation/RequiresPermissionsDesc.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/annotation/RequiresPermissionsDesc.java new file mode 100644 index 00000000..a9c23e28 --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/annotation/RequiresPermissionsDesc.java @@ -0,0 +1,15 @@ +package org.linlinjava.litemall.admin.annotation; + +import org.apache.shiro.authz.annotation.RequiresPermissions; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface RequiresPermissionsDesc { + String[] menu(); + String button(); +} diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/shiro/AdminAuthorizingRealm.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/shiro/AdminAuthorizingRealm.java index 2731cf0f..0c1654bd 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/shiro/AdminAuthorizingRealm.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/shiro/AdminAuthorizingRealm.java @@ -10,6 +10,8 @@ import org.apache.shiro.subject.PrincipalCollection; import org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder; import org.linlinjava.litemall.db.domain.LitemallAdmin; import org.linlinjava.litemall.db.service.LitemallAdminService; +import org.linlinjava.litemall.db.service.LitemallPermissionService; +import org.linlinjava.litemall.db.service.LitemallRoleService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -17,12 +19,17 @@ import org.springframework.util.Assert; import org.springframework.util.StringUtils; import java.util.List; +import java.util.Set; public class AdminAuthorizingRealm extends AuthorizingRealm { private static final Logger log = LoggerFactory.getLogger(AdminAuthorizingRealm.class); @Autowired private LitemallAdminService adminService; + @Autowired + private LitemallRoleService roleService; + @Autowired + private LitemallPermissionService permissionService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { @@ -30,9 +37,13 @@ public class AdminAuthorizingRealm extends AuthorizingRealm { throw new AuthorizationException("PrincipalCollection method argument cannot be null."); } + LitemallAdmin admin = (LitemallAdmin) getAvailablePrincipal(principals); + Integer[] roleIds = admin.getRoleIds(); + Set roles = roleService.queryByIds(roleIds); + Set permissions = permissionService.queryByRoleIds(roleIds); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); - info.addRole("admin"); - info.addStringPermission("*"); + info.setRoles(roles); + info.setStringPermissions(permissions); return info; } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/AdminResponseCode.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/AdminResponseCode.java index 54387ffb..93f5eacc 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/AdminResponseCode.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/AdminResponseCode.java @@ -17,5 +17,6 @@ public class AdminResponseCode { public static final Integer USER_INVALID_MOBILE = 632; public static final Integer USER_NAME_EXIST = 633; public static final Integer USER_MOBILE_EXIST = 634; - + public static final Integer ROLE_NAME_EXIST = 640; + public static final Integer ROLE_SUPER_SUPERMISSION = 641; } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermVo.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermVo.java new file mode 100644 index 00000000..30ff416c --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermVo.java @@ -0,0 +1,34 @@ +package org.linlinjava.litemall.admin.util; + +import java.util.List; + +public class PermVo { + private String id; + private String label; + private List children; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + +} diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermissionUtil.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermissionUtil.java new file mode 100644 index 00000000..ab0b84c6 --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermissionUtil.java @@ -0,0 +1,92 @@ +package org.linlinjava.litemall.admin.util; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.reflect.MethodUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; +import org.springframework.context.ApplicationContext; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.stereotype.Controller; +import org.springframework.util.ClassUtils; + +import java.lang.reflect.Method; +import java.util.*; +import java.util.stream.Collectors; + +public class PermissionUtil { + + public static Map findPermissions(ApplicationContext context, String basicPackage) { + Map map = context.getBeansWithAnnotation(Controller.class); + Map permissions = new HashMap<>(); + for(Map.Entry entry : map.entrySet()){ + Object bean = entry.getValue(); + if(!StringUtils.contains(ClassUtils.getPackageName(bean.getClass()), basicPackage)){ + continue; + } + + Class clz = bean.getClass(); + Class controllerClz = clz.getSuperclass(); + List methods = MethodUtils.getMethodsListWithAnnotation(controllerClz, RequiresPermissions.class); + for(Method method : methods){ + RequiresPermissions requiresPermissions = AnnotationUtils.getAnnotation(method, RequiresPermissions.class); + RequiresPermissionsDesc requiresPermissionsDesc = AnnotationUtils.getAnnotation(method, RequiresPermissionsDesc.class); + if(requiresPermissions == null || requiresPermissionsDesc == null){ + continue; + } + permissions.put(requiresPermissions, requiresPermissionsDesc); + } + } + return permissions; + } + + public static List listPermissions(ApplicationContext context, String basicPackage) { + List root = new ArrayList<>(); + Map map = findPermissions(context, basicPackage); + for(Map.Entry entry : map.entrySet()) { + RequiresPermissions requiresPermissions = entry.getKey(); + RequiresPermissionsDesc requiresPermissionsDesc = entry.getValue(); + + String[] menus = requiresPermissionsDesc.menu(); + if(menus.length != 2){ + throw new RuntimeException("目前只支持两级菜单"); + } + String menu1 = menus[0]; + PermVo perm1 = null; + for(PermVo permVo : root){ + if(permVo.getLabel().equals(menu1)){ + perm1 = permVo; + break; + } + } + if(perm1 == null){ + perm1 = new PermVo(); + perm1.setId(menu1); + perm1.setLabel(menu1); + perm1.setChildren(new ArrayList<>()); + root.add(perm1); + } + String menu2 = menus[1]; + PermVo perm2 = null; + for(PermVo permVo : perm1.getChildren()){ + if(permVo.getLabel().equals(menu2)){ + perm2 = permVo; + break; + } + } + if(perm2 == null){ + perm2 = new PermVo(); + perm2.setId(menu2); + perm2.setLabel(menu2); + perm2.setChildren(new ArrayList<>()); + perm1.getChildren().add(perm2); + } + + PermVo leftPerm = new PermVo(); + leftPerm.setId(requiresPermissions.value()[0]); + leftPerm.setLabel(requiresPermissionsDesc.button()); + + perm2.getChildren().add(leftPerm); + } + return root; + } +} diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdController.java index 58f48d4a..b68bc058 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -28,6 +29,7 @@ public class AdminAdController { private LitemallAdService adService; @RequiresPermissions("admin:ad:list") + @RequiresPermissionsDesc(menu={"推广管理" , "广告管理"}, button="查询") @RequestMapping("/list") public Object list(String name, String content, @RequestParam(defaultValue = "1") Integer page, @@ -56,6 +58,7 @@ public class AdminAdController { } @RequiresPermissions("admin:ad:create") + @RequiresPermissionsDesc(menu={"推广管理" , "广告管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallAd ad) { Object error = validate(ad); @@ -67,6 +70,7 @@ public class AdminAdController { } @RequiresPermissions("admin:ad:read") + @RequiresPermissionsDesc(menu={"推广管理" , "广告管理"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallAd brand = adService.findById(id); @@ -74,6 +78,7 @@ public class AdminAdController { } @RequiresPermissions("admin:ad:update") + @RequiresPermissionsDesc(menu={"推广管理" , "广告管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallAd ad) { Object error = validate(ad); @@ -88,6 +93,7 @@ public class AdminAdController { } @RequiresPermissions("admin:ad:delete") + @RequiresPermissionsDesc(menu={"推广管理" , "广告管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallAd ad) { Integer id = ad.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdminController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdminController.java index a16abab4..d41881e0 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdminController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdminController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.RegexUtil; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder; @@ -32,6 +33,7 @@ public class AdminAdminController { private LitemallAdminService adminService; @RequiresPermissions("admin:admin:list") + @RequiresPermissionsDesc(menu={"系统管理" , "管理员管理"}, button="查询") @GetMapping("/list") public Object list(String username, @RequestParam(defaultValue = "1") Integer page, @@ -63,6 +65,7 @@ public class AdminAdminController { } @RequiresPermissions("admin:admin:create") + @RequiresPermissionsDesc(menu={"系统管理" , "管理员管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallAdmin admin) { Object error = validate(admin); @@ -85,6 +88,7 @@ public class AdminAdminController { } @RequiresPermissions("admin:admin:read") + @RequiresPermissionsDesc(menu={"系统管理" , "管理员管理"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallAdmin admin = adminService.findById(id); @@ -92,6 +96,7 @@ public class AdminAdminController { } @RequiresPermissions("admin:admin:update") + @RequiresPermissionsDesc(menu={"系统管理" , "管理员管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallAdmin admin) { Object error = validate(admin); @@ -117,6 +122,7 @@ public class AdminAdminController { } @RequiresPermissions("admin:admin:delete") + @RequiresPermissionsDesc(menu={"系统管理" , "管理员管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallAdmin admin) { Integer anotherAdminId = admin.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAuthController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAuthController.java index 461f5aea..666f2498 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAuthController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAuthController.java @@ -13,15 +13,14 @@ import org.linlinjava.litemall.core.util.JacksonUtil; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.domain.LitemallAdmin; import org.linlinjava.litemall.db.service.LitemallAdminService; +import org.linlinjava.litemall.db.service.LitemallPermissionService; +import org.linlinjava.litemall.db.service.LitemallRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static org.linlinjava.litemall.admin.util.AdminResponseCode.ADMIN_INVALID_ACCOUNT; @@ -33,6 +32,10 @@ public class AdminAuthController { @Autowired private LitemallAdminService adminService; + @Autowired + private LitemallRoleService roleService; + @Autowired + private LitemallPermissionService permissionService; /* * { username : value, password : value } @@ -82,12 +85,11 @@ public class AdminAuthController { data.put("name", admin.getUsername()); data.put("avatar", admin.getAvatar()); - // 目前roles不支持,这里简单设置admin - List roles = new ArrayList<>(); - roles.add("admin"); + Integer[] roleIds = admin.getRoleIds(); + Set roles = roleService.queryByIds(roleIds); + Set permissions = permissionService.queryByRoleIds(roleIds); data.put("roles", roles); - data.put("perms", "*"); - data.put("introduction", "admin introduction"); + data.put("perms", permissions); return ResponseUtil.ok(data); } diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminBrandController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminBrandController.java index 08abd37a..937fc8e7 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminBrandController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminBrandController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -29,6 +30,7 @@ public class AdminBrandController { private LitemallBrandService brandService; @RequiresPermissions("admin:brand:list") + @RequiresPermissionsDesc(menu={"商场管理" , "品牌管理"}, button="查询") @GetMapping("/list") public Object list(String id, String name, @RequestParam(defaultValue = "1") Integer page, @@ -63,6 +65,7 @@ public class AdminBrandController { } @RequiresPermissions("admin:brand:create") + @RequiresPermissionsDesc(menu={"商场管理" , "品牌管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallBrand brand) { Object error = validate(brand); @@ -74,6 +77,7 @@ public class AdminBrandController { } @RequiresPermissions("admin:brand:read") + @RequiresPermissionsDesc(menu={"商场管理" , "品牌管理"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallBrand brand = brandService.findById(id); @@ -81,6 +85,7 @@ public class AdminBrandController { } @RequiresPermissions("admin:brand:update") + @RequiresPermissionsDesc(menu={"商场管理" , "品牌管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallBrand brand) { Object error = validate(brand); @@ -94,6 +99,7 @@ public class AdminBrandController { } @RequiresPermissions("admin:brand:delete") + @RequiresPermissionsDesc(menu={"商场管理" , "品牌管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallBrand brand) { Integer id = brand.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCategoryController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCategoryController.java index 7a1e22ce..4a0374f0 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCategoryController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCategoryController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -29,6 +30,7 @@ public class AdminCategoryController { private LitemallCategoryService categoryService; @RequiresPermissions("admin:category:list") + @RequiresPermissionsDesc(menu={"商场管理" , "类目管理"}, button="查询") @GetMapping("/list") public Object list(String id, String name, @RequestParam(defaultValue = "1") Integer page, @@ -67,6 +69,7 @@ public class AdminCategoryController { } @RequiresPermissions("admin:category:create") + @RequiresPermissionsDesc(menu={"商场管理" , "类目管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallCategory category) { Object error = validate(category); @@ -78,6 +81,7 @@ public class AdminCategoryController { } @RequiresPermissions("admin:category:read") + @RequiresPermissionsDesc(menu={"商场管理" , "类目管理"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallCategory category = categoryService.findById(id); @@ -85,6 +89,7 @@ public class AdminCategoryController { } @RequiresPermissions("admin:category:update") + @RequiresPermissionsDesc(menu={"商场管理" , "类目管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallCategory category) { Object error = validate(category); @@ -99,6 +104,7 @@ public class AdminCategoryController { } @RequiresPermissions("admin:category:delete") + @RequiresPermissionsDesc(menu={"商场管理" , "类目管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallCategory category) { Integer id = category.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCollectController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCollectController.java index 5fe0a7d2..6bd69cd0 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCollectController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCollectController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -30,6 +31,7 @@ public class AdminCollectController { @RequiresPermissions("admin:collect:list") + @RequiresPermissionsDesc(menu={"用户管理" , "用户收藏"}, button="查询") @GetMapping("/list") public Object list(String userId, String valueId, @RequestParam(defaultValue = "1") Integer page, diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCommentController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCommentController.java index 3925e180..92f5f956 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCommentController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCommentController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -26,6 +27,7 @@ public class AdminCommentController { private LitemallCommentService commentService; @RequiresPermissions("admin:comment:list") + @RequiresPermissionsDesc(menu={"商品管理" , "评论管理"}, button="查询") @GetMapping("/list") public Object list(String userId, String valueId, @RequestParam(defaultValue = "1") Integer page, @@ -42,6 +44,7 @@ public class AdminCommentController { } @RequiresPermissions("admin:comment:delete") + @RequiresPermissionsDesc(menu={"商品管理" , "评论管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallComment comment) { Integer id = comment.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCouponController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCouponController.java index 93796817..d38bef20 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCouponController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCouponController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -33,6 +34,7 @@ public class AdminCouponController { private LitemallCouponUserService couponUserService; @RequiresPermissions("admin:coupon:list") + @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="查询") @GetMapping("/list") public Object list(String name, Short type, Short status, @RequestParam(defaultValue = "1") Integer page, @@ -49,6 +51,7 @@ public class AdminCouponController { } @RequiresPermissions("admin:coupon:list") + @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="查询") @GetMapping("/listuser") public Object listuser(Integer userId, Integer couponId, Short status, @RequestParam(defaultValue = "1") Integer page, @@ -73,6 +76,7 @@ public class AdminCouponController { } @RequiresPermissions("admin:coupon:create") + @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallCoupon coupon) { Object error = validate(coupon); @@ -91,6 +95,7 @@ public class AdminCouponController { } @RequiresPermissions("admin:coupon:read") + @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallCoupon coupon = couponService.findById(id); @@ -98,6 +103,7 @@ public class AdminCouponController { } @RequiresPermissions("admin:coupon:update") + @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallCoupon coupon) { Object error = validate(coupon); @@ -111,6 +117,7 @@ public class AdminCouponController { } @RequiresPermissions("admin:coupon:delete") + @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallCoupon coupon) { couponService.deleteById(coupon.getId()); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java index 50fe9218..ace32f99 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java @@ -2,7 +2,6 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authz.annotation.RequiresPermissions; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.service.LitemallGoodsProductService; import org.linlinjava.litemall.db.service.LitemallGoodsService; @@ -32,7 +31,6 @@ public class AdminDashbordController { @Autowired private LitemallOrderService orderService; - @RequiresPermissions("admin:dashboard:info") @GetMapping("") public Object info() { int userTotal = userService.count(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFeedbackController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFeedbackController.java index 70646796..febbf269 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFeedbackController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFeedbackController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -33,6 +34,7 @@ public class AdminFeedbackController { private LitemallFeedbackService feedbackService; @RequiresPermissions("admin:feedback:list") + @RequiresPermissionsDesc(menu={"用户管理" , "意见反馈"}, button="查询") @GetMapping("/list") public Object list(Integer userId, String username, @RequestParam(defaultValue = "1") Integer page, diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java index 62226e78..50f55765 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -29,6 +30,7 @@ public class AdminFootprintController { private LitemallFootprintService footprintService; @RequiresPermissions("admin:footprint:list") + @RequiresPermissionsDesc(menu={"用户管理" , "用户足迹"}, button="查询") @GetMapping("/list") public Object list(String userId, String goodsId, @RequestParam(defaultValue = "1") Integer page, diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java index 4b9e37f8..a4416716 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.admin.dao.GoodsAllinone; import org.linlinjava.litemall.admin.util.CatVo; import org.linlinjava.litemall.core.qcode.QCodeService; @@ -60,6 +61,7 @@ public class AdminGoodsController { private QCodeService qCodeService; @RequiresPermissions("admin:goods:list") + @RequiresPermissionsDesc(menu={"商品管理" , "商品列表"}, button="查询") @GetMapping("/list") public Object list(String goodsSn, String name, @RequestParam(defaultValue = "1") Integer page, @@ -162,6 +164,7 @@ public class AdminGoodsController { * 所以这里可能需要重新设计。 */ @RequiresPermissions("admin:goods:update") + @RequiresPermissionsDesc(menu={"商品管理" , "商品列表"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody GoodsAllinone goodsAllinone) { Object error = validate(goodsAllinone); @@ -234,6 +237,7 @@ public class AdminGoodsController { } @RequiresPermissions("admin:goods:delete") + @RequiresPermissionsDesc(menu={"商品管理" , "商品列表"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallGoods goods) { Integer id = goods.getId(); @@ -262,6 +266,7 @@ public class AdminGoodsController { } @RequiresPermissions("admin:goods:create") + @RequiresPermissionsDesc(menu={"商品管理" , "商品上架"}, button="上架") @PostMapping("/create") public Object create(@RequestBody GoodsAllinone goodsAllinone) { Object error = validate(goodsAllinone); @@ -325,6 +330,7 @@ public class AdminGoodsController { } @RequiresPermissions("admin:goods:list") + @RequiresPermissionsDesc(menu={"商品管理" , "商品列表"}, button="查询") @GetMapping("/catAndBrand") public Object list2() { // http://element-cn.eleme.io/#/zh-CN/component/cascader @@ -368,6 +374,7 @@ public class AdminGoodsController { } @RequiresPermissions("admin:goods:read") + @RequiresPermissionsDesc(menu={"商品管理" , "商品列表"}, button="编辑") @GetMapping("/detail") public Object detail(@NotNull Integer id) { LitemallGoods goods = goodsService.findById(id); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java index e03d79a9..db81996e 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -37,6 +38,7 @@ public class AdminGrouponController { private LitemallGrouponService grouponService; @RequiresPermissions("admin:groupon:read") + @RequiresPermissionsDesc(menu={"推广管理" , "团购管理"}, button="查询") @GetMapping("/listRecord") public Object listRecord(String grouponId, @RequestParam(defaultValue = "1") Integer page, @@ -72,7 +74,8 @@ public class AdminGrouponController { return ResponseUtil.ok(data); } - @RequiresPermissions("admin:groupon:delete") + @RequiresPermissions("admin:groupon:list") + @RequiresPermissionsDesc(menu={"推广管理" , "团购管理"}, button="查询") @GetMapping("/list") public Object list(String goodsId, @RequestParam(defaultValue = "1") Integer page, @@ -110,6 +113,7 @@ public class AdminGrouponController { } @RequiresPermissions("admin:groupon:update") + @RequiresPermissionsDesc(menu={"推广管理" , "团购管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallGrouponRules grouponRules) { Object error = validate(grouponRules); @@ -134,6 +138,7 @@ public class AdminGrouponController { } @RequiresPermissions("admin:groupon:create") + @RequiresPermissionsDesc(menu={"推广管理" , "团购管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallGrouponRules grouponRules) { Object error = validate(grouponRules); @@ -156,6 +161,7 @@ public class AdminGrouponController { } @RequiresPermissions("admin:groupon:delete") + @RequiresPermissionsDesc(menu={"推广管理" , "团购管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallGrouponRules grouponRules) { Integer id = grouponRules.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminHistoryController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminHistoryController.java index 65cd59bc..940cf740 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminHistoryController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminHistoryController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -27,6 +28,7 @@ public class AdminHistoryController { private LitemallSearchHistoryService searchHistoryService; @RequiresPermissions("admin:history:list") + @RequiresPermissionsDesc(menu={"用户管理" , "搜索历史"}, button="查询") @GetMapping("/list") public Object list(String userId, String keyword, @RequestParam(defaultValue = "1") Integer page, diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIndexController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIndexController.java index bbaed1e4..863411cd 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIndexController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIndexController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.*; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -48,12 +49,14 @@ public class AdminIndexController { } @RequiresPermissions("index:permission:read") + @RequiresPermissionsDesc(menu={"其他" , "权限测试"}, button="权限读") @RequestMapping("/read") public Object read() { return ResponseUtil.ok("hello world, this is admin service"); } @RequiresPermissions("index:permission:write") + @RequiresPermissionsDesc(menu={"其他" , "权限测试"}, button="权限写") @RequestMapping("/write") public Object write() { return ResponseUtil.ok("hello world, this is admin service"); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIssueController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIssueController.java index fcdafd12..54708b0b 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIssueController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIssueController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -28,6 +29,7 @@ public class AdminIssueController { private LitemallIssueService issueService; @RequiresPermissions("admin:issue:list") + @RequiresPermissionsDesc(menu={"商城管理" , "通用问题"}, button="查询") @GetMapping("/list") public Object list(String question, @RequestParam(defaultValue = "1") Integer page, @@ -56,6 +58,7 @@ public class AdminIssueController { } @RequiresPermissions("admin:issue:create") + @RequiresPermissionsDesc(menu={"商城管理" , "通用问题"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallIssue issue) { Object error = validate(issue); @@ -74,6 +77,7 @@ public class AdminIssueController { } @RequiresPermissions("admin:issue:update") + @RequiresPermissionsDesc(menu={"商城管理" , "通用问题"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallIssue issue) { Object error = validate(issue); @@ -88,6 +92,7 @@ public class AdminIssueController { } @RequiresPermissions("admin:issue:delete") + @RequiresPermissionsDesc(menu={"商城管理" , "通用问题"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallIssue issue) { Integer id = issue.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminKeywordController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminKeywordController.java index 7435cc29..eca48483 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminKeywordController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminKeywordController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -28,6 +29,7 @@ public class AdminKeywordController { private LitemallKeywordService keywordService; @RequiresPermissions("admin:keyword:list") + @RequiresPermissionsDesc(menu={"商城管理" , "关键词"}, button="查询") @GetMapping("/list") public Object list(String keyword, String url, @RequestParam(defaultValue = "1") Integer page, @@ -56,6 +58,7 @@ public class AdminKeywordController { } @RequiresPermissions("admin:keyword:create") + @RequiresPermissionsDesc(menu={"商城管理" , "关键词"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallKeyword keywords) { Object error = validate(keywords); @@ -67,6 +70,7 @@ public class AdminKeywordController { } @RequiresPermissions("admin:keyword:read") + @RequiresPermissionsDesc(menu={"商城管理" , "关键词"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallKeyword brand = keywordService.findById(id); @@ -74,6 +78,7 @@ public class AdminKeywordController { } @RequiresPermissions("admin:keyword:update") + @RequiresPermissionsDesc(menu={"商城管理" , "关键词"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallKeyword keywords) { Object error = validate(keywords); @@ -87,6 +92,7 @@ public class AdminKeywordController { } @RequiresPermissions("admin:keyword:delete") + @RequiresPermissionsDesc(menu={"商城管理" , "关键词"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallKeyword keyword) { Integer id = keyword.getId(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminOrderController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminOrderController.java index 843bfd9d..776299f8 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminOrderController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminOrderController.java @@ -7,6 +7,7 @@ import com.github.binarywang.wxpay.service.WxPayService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.notify.NotifyService; import org.linlinjava.litemall.core.notify.NotifyType; import org.linlinjava.litemall.core.util.JacksonUtil; @@ -62,6 +63,7 @@ public class AdminOrderController { private NotifyService notifyService; @RequiresPermissions("admin:order:list") + @RequiresPermissionsDesc(menu={"商城管理" , "订单管理"}, button="查询") @GetMapping("/list") public Object list(Integer userId, String orderSn, @RequestParam(required = false) List orderStatusArray, @@ -80,6 +82,7 @@ public class AdminOrderController { } @RequiresPermissions("admin:order:read") + @RequiresPermissionsDesc(menu={"商城管理" , "订单管理"}, button="详情") @GetMapping("/detail") public Object detail(@NotNull Integer id) { LitemallOrder order = orderService.findById(id); @@ -106,11 +109,11 @@ public class AdminOrderController { * 1. 管理员登录微信官方支付平台点击退款操作进行退款 * 2. 管理员登录litemall管理后台点击退款操作进行订单状态修改和商品库存回库 * - * @param adminId 管理员ID * @param body 订单信息,{ orderId:xxx } * @return 订单退款操作结果 */ @RequiresPermissions("admin:order:refund") + @RequiresPermissionsDesc(menu={"商城管理" , "订单管理"}, button="订单退款") @PostMapping("refund") public Object refund(@RequestBody String body) { Integer orderId = JacksonUtil.parseInteger(body, "orderId"); @@ -202,13 +205,13 @@ public class AdminOrderController { * 1. 检测当前订单是否能够发货 * 2. 设置订单发货状态 * - * @param adminId 管理员ID * @param body 订单信息,{ orderId:xxx, shipSn: xxx, shipChannel: xxx } * @return 订单操作结果 * 成功则 { errno: 0, errmsg: '成功' } * 失败则 { errno: XXX, errmsg: XXX } */ @RequiresPermissions("admin:order:ship") + @RequiresPermissionsDesc(menu={"商城管理" , "订单管理"}, button="订单发货") @PostMapping("ship") public Object ship(@RequestBody String body) { Integer orderId = JacksonUtil.parseInteger(body, "orderId"); @@ -248,13 +251,13 @@ public class AdminOrderController { /** * 回复订单商品 * - * @param adminId 管理员ID * @param body 订单信息,{ orderId:xxx } * @return 订单操作结果 * 成功则 { errno: 0, errmsg: '成功' } * 失败则 { errno: XXX, errmsg: XXX } */ @RequiresPermissions("admin:order:reply") + @RequiresPermissionsDesc(menu={"商城管理" , "订单管理"}, button="订单商品回复") @PostMapping("reply") public Object reply(@RequestBody String body) { Integer commentId = JacksonUtil.parseInteger(body, "commentId"); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java new file mode 100644 index 00000000..d882dcf5 --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java @@ -0,0 +1,223 @@ +package org.linlinjava.litemall.admin.web; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.apache.shiro.subject.Subject; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; +import org.linlinjava.litemall.admin.util.AdminResponseCode; +import org.linlinjava.litemall.admin.util.PermVo; +import org.linlinjava.litemall.admin.util.PermissionUtil; +import org.linlinjava.litemall.core.util.JacksonUtil; +import org.linlinjava.litemall.core.util.ResponseUtil; +import org.linlinjava.litemall.core.validator.Order; +import org.linlinjava.litemall.core.validator.Sort; +import org.linlinjava.litemall.db.domain.LitemallAdmin; +import org.linlinjava.litemall.db.domain.LitemallBrand; +import org.linlinjava.litemall.db.domain.LitemallPermission; +import org.linlinjava.litemall.db.domain.LitemallRole; +import org.linlinjava.litemall.db.service.LitemallPermissionService; +import org.linlinjava.litemall.db.service.LitemallRoleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; +import java.util.*; + +import static org.linlinjava.litemall.admin.util.AdminResponseCode.ROLE_NAME_EXIST; + +@RestController +@RequestMapping("/admin/role") +@Validated +public class AdminRoleController { + private final Log logger = LogFactory.getLog(AdminRoleController.class); + + @Autowired + private LitemallRoleService roleService; + @Autowired + private LitemallPermissionService permissionService; + + @RequiresPermissions("admin:role:list") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="查询") + @GetMapping("/list") + public Object list(String name, + @RequestParam(defaultValue = "1") Integer page, + @RequestParam(defaultValue = "10") Integer limit, + @Sort @RequestParam(defaultValue = "add_time") String sort, + @Order @RequestParam(defaultValue = "desc") String order) { + List roleList = roleService.querySelective(name, page, limit, sort, order); + int total = roleService.countSelective(name, page, limit, sort, order); + Map data = new HashMap<>(); + data.put("total", total); + data.put("items", roleList); + + return ResponseUtil.ok(data); + } + + @RequiresPermissions("admin:role:list") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="查询") + @GetMapping("/options") + public Object options(){ + List roleList = roleService.queryAll(); + + List> options = new ArrayList<>(roleList.size()); + for (LitemallRole role : roleList) { + Map option = new HashMap<>(2); + option.put("value", role.getId()); + option.put("label", role.getName()); + options.add(option); + } + + return ResponseUtil.ok(options); + } + + @RequiresPermissions("admin:role:read") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="详情") + @GetMapping("/read") + public Object read(@NotNull Integer id) { + LitemallRole role = roleService.findById(id); + return ResponseUtil.ok(role); + } + + + private Object validate(LitemallRole role) { + String name = role.getName(); + if (StringUtils.isEmpty(name)) { + return ResponseUtil.badArgument(); + } + + return null; + } + + @RequiresPermissions("admin:role:create") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="添加") + @PostMapping("/create") + public Object create(@RequestBody LitemallRole role) { + Object error = validate(role); + if (error != null) { + return error; + } + + if (roleService.checkExist(role.getName())){ + return ResponseUtil.fail(ROLE_NAME_EXIST, "角色已经存在"); + } + + roleService.add(role); + + return ResponseUtil.ok(role); + } + + @RequiresPermissions("admin:role:update") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="编辑") + @PostMapping("/update") + public Object update(@RequestBody LitemallRole role) { + Object error = validate(role); + if (error != null) { + return error; + } + + roleService.updateById(role); + return ResponseUtil.ok(); + } + + @RequiresPermissions("admin:role:delete") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="删除") + @PostMapping("/delete") + public Object delete(@RequestBody LitemallRole role) { + Integer id = role.getId(); + if (id == null) { + return ResponseUtil.badArgument(); + } + roleService.deleteById(id); + return ResponseUtil.ok(); + } + + + @Autowired + private ApplicationContext context; + private List systemPermissions = null; + private List getSystemPermissions(){ + final String basicPackage = "org.linlinjava.litemall.admin"; + if(systemPermissions == null){ + systemPermissions = PermissionUtil.listPermissions(context, basicPackage); + } + return systemPermissions; + } + + private Set getSystemPermissionsString(){ + getSystemPermissions(); + + Set permissions = new HashSet(); + for(PermVo permVo : systemPermissions){ + permissions.add(permVo.getId()); + } + return permissions; + } + + private Set getAssignedPermissions(Integer roleId){ + // 这里需要注意的是,如果存在超级权限*,那么这里需要转化成当前所有系统权限。 + // 之所以这么做,是因为前端不能识别超级权限,所以这里需要转换一下。 + Set assignedPermissions = null; + if(permissionService.checkSuperPermission(roleId)){ + assignedPermissions = getSystemPermissionsString(); + } + else{ + assignedPermissions = permissionService.queryByRoleId(roleId); + } + + return assignedPermissions; + } + + /** + * 管理员的权限情况 + * + * @return 系统所有权限列表和管理员已分配权限 + */ + @RequiresPermissions("admin:role:permission") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="授权") + @GetMapping("/permissions") + public Object getPermissions(Integer roleId) { + List systemPermissions = getSystemPermissions(); + Set assignedPermissions = getAssignedPermissions(roleId); + + Map data = new HashMap<>(); + data.put("systemPermissions", systemPermissions); + data.put("assignedPermissions", assignedPermissions); + return ResponseUtil.ok(data); + } + + + /** + * 更新管理员的权限 + * + * @param body + * @return + */ + @RequiresPermissions("admin:role:permission") + @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="授权") + @PostMapping("/permissions") + public Object updatePermissions(@RequestBody String body) { + Integer roleId = JacksonUtil.parseInteger(body, "roleId"); + List permissions = JacksonUtil.parseStringList(body, "permissions"); + + // 如果修改的角色是超级权限,则拒绝修改。 + if(permissionService.checkSuperPermission(roleId)){ + return ResponseUtil.fail(AdminResponseCode.ROLE_SUPER_SUPERMISSION, "当前角色的超级权限不能变更"); + } + + // 先删除旧的权限,再更新新的权限 + permissionService.deleteByRoleId(roleId); + for(String permission : permissions){ + LitemallPermission litemallPermission = new LitemallPermission(); + litemallPermission.setRoleId(roleId); + litemallPermission.setPermission(permission); + permissionService.add(litemallPermission); + } + return ResponseUtil.ok(); + } + +} diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStatController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStatController.java index 9d7e2aa8..a0832005 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStatController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStatController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.admin.util.StatVo; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.service.StatService; @@ -25,6 +26,7 @@ public class AdminStatController { private StatService statService; @RequiresPermissions("admin:stat:user") + @RequiresPermissionsDesc(menu={"统计管理" , "用户统计"}, button="查询") @GetMapping("/user") public Object statUser() { List rows = statService.statUser(); @@ -36,6 +38,7 @@ public class AdminStatController { } @RequiresPermissions("admin:stat:order") + @RequiresPermissionsDesc(menu={"统计管理" , "订单统计"}, button="查询") @GetMapping("/order") public Object statOrder() { List rows = statService.statOrder(); @@ -48,6 +51,7 @@ public class AdminStatController { } @RequiresPermissions("admin:stat:goods") + @RequiresPermissionsDesc(menu={"统计管理" , "商品统计"}, button="查询") @GetMapping("/goods") public Object statGoods() { List rows = statService.statGoods(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java index b8f1e95f..303cd07c 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.storage.StorageService; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; @@ -33,6 +34,7 @@ public class AdminStorageController { private LitemallStorageService litemallStorageService; @RequiresPermissions("admin:storage:list") + @RequiresPermissionsDesc(menu={"系统管理" , "对象存储"}, button="查询") @GetMapping("/list") public Object list(String key, String name, @RequestParam(defaultValue = "1") Integer page, @@ -49,6 +51,7 @@ public class AdminStorageController { } @RequiresPermissions("admin:storage:create") + @RequiresPermissionsDesc(menu={"系统管理" , "对象存储"}, button="上传") @PostMapping("/create") public Object create(@RequestParam("file") MultipartFile file) throws IOException { String originalFilename = file.getOriginalFilename(); @@ -59,6 +62,7 @@ public class AdminStorageController { } @RequiresPermissions("admin:storage:read") + @RequiresPermissionsDesc(menu={"系统管理" , "对象存储"}, button="详情") @PostMapping("/read") public Object read(@NotNull Integer id) { LitemallStorage storageInfo = litemallStorageService.findById(id); @@ -68,7 +72,8 @@ public class AdminStorageController { return ResponseUtil.ok(storageInfo); } - @RequiresPermissions("admin:storage:delete") + @RequiresPermissions("admin:storage:update") + @RequiresPermissionsDesc(menu={"系统管理" , "对象存储"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallStorage litemallStorage) { if (litemallStorageService.update(litemallStorage) == 0) { @@ -78,6 +83,7 @@ public class AdminStorageController { } @RequiresPermissions("admin:storage:delete") + @RequiresPermissionsDesc(menu={"系统管理" , "对象存储"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallStorage litemallStorage) { String key = litemallStorage.getKey(); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java index daa3804b..31142c32 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; @@ -29,6 +30,7 @@ public class AdminTopicController { private LitemallTopicService topicService; @RequiresPermissions("admin:topic:list") + @RequiresPermissionsDesc(menu={"推广管理" , "专题管理"}, button="查询") @GetMapping("/list") public Object list(String title, String subtitle, @RequestParam(defaultValue = "1") Integer page, @@ -61,6 +63,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:create") + @RequiresPermissionsDesc(menu={"推广管理" , "专题管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallTopic topic) { Object error = validate(topic); @@ -72,6 +75,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:read") + @RequiresPermissionsDesc(menu={"推广管理" , "专题管理"}, button="详情") @GetMapping("/read") public Object read(@NotNull Integer id) { LitemallTopic topic = topicService.findById(id); @@ -79,6 +83,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:update") + @RequiresPermissionsDesc(menu={"推广管理" , "专题管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallTopic topic) { Object error = validate(topic); @@ -92,6 +97,7 @@ public class AdminTopicController { } @RequiresPermissions("admin:topic:delete") + @RequiresPermissionsDesc(menu={"推广管理" , "专题管理"}, button="删除") @PostMapping("/delete") public Object delete(@RequestBody LitemallTopic topic) { topicService.deleteById(topic.getId()); diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java index 015fd567..2a0eeb19 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java @@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin.web; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.core.util.RegexUtil; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder; @@ -32,6 +33,7 @@ public class AdminUserController { private LitemallUserService userService; @RequiresPermissions("admin:user:list") + @RequiresPermissionsDesc(menu={"用户管理" , "会员管理"}, button="查询") @GetMapping("/list") public Object list(String username, String mobile, @RequestParam(defaultValue = "1") Integer page, @@ -48,6 +50,7 @@ public class AdminUserController { } @RequiresPermissions("admin:user:list") + @RequiresPermissionsDesc(menu={"用户管理" , "会员管理"}, button="查询") @GetMapping("/username") public Object username(@NotEmpty String username) { int total = userService.countSeletive(username, null, null, null, null, null); @@ -80,6 +83,7 @@ public class AdminUserController { } @RequiresPermissions("admin:user:create") + @RequiresPermissionsDesc(menu={"用户管理" , "会员管理"}, button="添加") @PostMapping("/create") public Object create(@RequestBody LitemallUser user) { Object error = validate(user); @@ -110,6 +114,7 @@ public class AdminUserController { } @RequiresPermissions("admin:user:update") + @RequiresPermissionsDesc(menu={"用户管理" , "会员管理"}, button="编辑") @PostMapping("/update") public Object update(@RequestBody LitemallUser user) { Object error = validate(user); diff --git a/litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/PermissionTest.java b/litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/PermissionTest.java new file mode 100644 index 00000000..fe58d75d --- /dev/null +++ b/litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/PermissionTest.java @@ -0,0 +1,29 @@ +package org.linlinjava.litemall.admin; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.linlinjava.litemall.admin.util.PermVo; +import org.linlinjava.litemall.admin.util.PermissionUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import java.util.List; + +@WebAppConfiguration +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest +public class PermissionTest { + + @Autowired + private ApplicationContext context; + + @Test + public void test() { + final String basicPackage = "org.linlinjava.litemall.admin"; + List permVoList = PermissionUtil.listPermissions(context, basicPackage); + permVoList.stream().forEach(System.out::println); + } +} diff --git a/litemall-admin/package.json b/litemall-admin/package.json index 2c587933..122abdf1 100644 --- a/litemall-admin/package.json +++ b/litemall-admin/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@tinymce/tinymce-vue": "1.1.0", + "@riophae/vue-treeselect": "0.0.37", "v-charts": "1.19.0", "axios": "0.18.0", "clipboard": "1.7.1", diff --git a/litemall-admin/src/api/role.js b/litemall-admin/src/api/role.js new file mode 100644 index 00000000..d2519bcf --- /dev/null +++ b/litemall-admin/src/api/role.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +export function listRole(query) { + return request({ + url: '/role/list', + method: 'get', + params: query + }) +} + +export function createRole(data) { + return request({ + url: '/role/create', + method: 'post', + data + }) +} + +export function readRole(data) { + return request({ + url: '/role/read', + method: 'get', + data + }) +} + +export function updateRole(data) { + return request({ + url: '/role/update', + method: 'post', + data + }) +} + +export function deleteRole(data) { + return request({ + url: '/role/delete', + method: 'post', + data + }) +} + +export function getPermission(query) { + return request({ + url: '/role/permissions', + method: 'get', + params: query + }) +} + +export function updatePermission(data) { + return request({ + url: '/role/permissions', + method: 'post', + data + }) +} + +export function roleOptions(query) { + return request({ + url: '/role/options', + method: 'get', + params: query + }) +} diff --git a/litemall-admin/src/router/index.js b/litemall-admin/src/router/index.js index 379b5410..8112674b 100644 --- a/litemall-admin/src/router/index.js +++ b/litemall-admin/src/router/index.js @@ -279,6 +279,12 @@ export const asyncRouterMap = [ name: 'admin', meta: { title: '管理员', noCache: true } }, + { + path: 'role', + component: () => import('@/views/sys/role'), + name: 'role', + meta: { title: '角色管理', noCache: true } + }, { path: 'os', component: () => import('@/views/sys/os'), @@ -363,6 +369,12 @@ export const asyncRouterMap = [ component: Layout, redirect: 'noredirect', children: [ + { + path: 'my', + component: () => import('@/views/profile/my'), + name: 'my', + meta: { title: '个人信息', noCache: true } + }, { path: 'password', component: () => import('@/views/profile/password'), diff --git a/litemall-admin/src/utils/request.js b/litemall-admin/src/utils/request.js index 8d5ba463..6da07211 100644 --- a/litemall-admin/src/utils/request.js +++ b/litemall-admin/src/utils/request.js @@ -32,7 +32,7 @@ service.interceptors.response.use( const res = response.data if (res.errno === 501) { - MessageBox.alert('系统未登录,请重新登录', '未登录', { + MessageBox.alert('系统未登录,请重新登录', '错误', { confirmButtonText: '确定', type: 'error' }).then(() => { @@ -53,6 +53,24 @@ service.interceptors.response.use( type: 'error' }) return Promise.reject('error') + } else if (res.errno === 504) { + MessageBox.alert('更新数据已经失效,请刷新页面重新操作', '警告', { + confirmButtonText: '确定', + type: 'error' + }) + return Promise.reject('error') + } else if (res.errno === 505) { + MessageBox.alert('更新失败,请再尝试一次', '警告', { + confirmButtonText: '确定', + type: 'error' + }) + return Promise.reject('error') + } else if (res.errno === 506) { + MessageBox.alert('没有操作权限,请联系管理员授权', '错误', { + confirmButtonText: '确定', + type: 'error' + }) + return Promise.reject('error') } else if (res.errno !== 0) { // 非5xx的错误属于业务错误,留给具体页面处理 return Promise.reject(response) diff --git a/litemall-admin/src/views/sys/admin.vue b/litemall-admin/src/views/sys/admin.vue index 955e465e..68c292a0 100644 --- a/litemall-admin/src/views/sys/admin.vue +++ b/litemall-admin/src/views/sys/admin.vue @@ -21,6 +21,12 @@ + + + +