Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

‘linchangsheng’ 1 kuukausi sitten
vanhempi
commit
59ca6b93d5

+ 56 - 56
src/main/java/com/gree/mall/manager/config/aop/OnlyReadAspect.java

@@ -1,57 +1,57 @@
-package com.gree.mall.manager.config.aop;
-
-import com.aliyuncs.utils.StringUtils;
-import com.gree.mall.manager.bean.admin.AdminUserCom;
-import com.gree.mall.manager.exception.RemoteServiceException;
-import com.gree.mall.manager.logic.common.CommonLogic;
-import com.gree.mall.manager.utils.CommonUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.aopalliance.intercept.Joinpoint;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-
-@Aspect
-@Component
-@Slf4j
-@Order(2)
-public class OnlyReadAspect {
-
-    @Autowired
-    CommonLogic commonLogic;
-
-    @Pointcut("@annotation(org.springframework.web.bind.annotation.PostMapping)")
-    public void auth() {}
-
-    @Before("auth()")
-    public void doBefore(JoinPoint joinPoint){
-        start(joinPoint);
-    }
-
-
-    private void start(JoinPoint joinPoint){
-        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = attributes.getRequest();
-        String requestURI = request.getRequestURI();
-        if(requestURI.indexOf("/admin/") >= 0 || requestURI.equals("/common/upload") || requestURI.contains("/wx/callback")){
-            return;
-        }
-        String userId = CommonUtils.getUserId(request);
-        if(StringUtils.isEmpty(userId)){
-            return;
-        }
-        AdminUserCom adminUser = commonLogic.getAdminUser(request);
-//        if((adminUser.getOnlyRead() || adminUser.getType() == 2)){
-//            throw new RemoteServiceException("运营账号暂无权限操作");
+//package com.gree.mall.manager.config.aop;
+//
+//import com.aliyuncs.utils.StringUtils;
+//import com.gree.mall.manager.bean.admin.AdminUserCom;
+//import com.gree.mall.manager.exception.RemoteServiceException;
+//import com.gree.mall.manager.logic.common.CommonLogic;
+//import com.gree.mall.manager.utils.CommonUtils;
+//import lombok.extern.slf4j.Slf4j;
+//import org.aopalliance.intercept.Joinpoint;
+//import org.aspectj.lang.JoinPoint;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.aspectj.lang.annotation.Before;
+//import org.aspectj.lang.annotation.Pointcut;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.core.annotation.Order;
+//import org.springframework.stereotype.Component;
+//import org.springframework.web.context.request.RequestContextHolder;
+//import org.springframework.web.context.request.ServletRequestAttributes;
+//
+//import javax.servlet.http.HttpServletRequest;
+//
+//@Aspect
+//@Component
+//@Slf4j
+//@Order(2)
+//public class OnlyReadAspect {
+//
+//    @Autowired
+//    CommonLogic commonLogic;
+//
+//    @Pointcut("@annotation(org.springframework.web.bind.annotation.PostMapping)")
+//    public void auth() {}
+//
+//    @Before("auth()")
+//    public void doBefore(JoinPoint joinPoint){
+//        start(joinPoint);
+//    }
+//
+//
+//    private void start(JoinPoint joinPoint){
+//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+//        HttpServletRequest request = attributes.getRequest();
+//        String requestURI = request.getRequestURI();
+//        if(requestURI.indexOf("/admin/") >= 0 || requestURI.equals("/common/upload") || requestURI.contains("/wx/callback")){
+//            return;
 //        }
-    }
-
-}
+//        String userId = CommonUtils.getUserId(request);
+//        if(StringUtils.isEmpty(userId)){
+//            return;
+//        }
+//        AdminUserCom adminUser = commonLogic.getAdminUser(request);
+////        if((adminUser.getOnlyRead() || adminUser.getType() == 2)){
+////            throw new RemoteServiceException("运营账号暂无权限操作");
+////        }
+//    }
+//
+//}

+ 29 - 1
src/main/java/com/gree/mall/manager/logic/admin/AdminRoleLogic.java

@@ -47,7 +47,7 @@ public class AdminRoleLogic {
                 .eq(StringUtils.isNotBlank(adminCompanyId), AdminRole::getCompanyId, adminCompanyId)
                 .eq(Objects.nonNull(type), AdminRole::getType, type)
                 .in(CollectionUtils.isNotEmpty(companyIds), AdminRole::getCompanyId, companyIds)
-                .eq(userType > 0, AdminRole::getType, userType)
+                .ge(userType > 0, AdminRole::getType, userType)
                 .orderByAsc(AdminRole::getType)
                 .page(new Page<>(pageNo, pageSize));
     }
@@ -76,6 +76,22 @@ public class AdminRoleLogic {
             throw new RemoteServiceException("适用机构参数异常");
         }
 
+        if (StringUtils.isBlank(adminRole.getName())) {
+            throw new RemoteServiceException("角色名称不能为空");
+        }
+
+        if (StringUtils.isBlank(adminRole.getCompanyId()) && adminUser.getType() > 0) {
+            adminRole.setCompanyId(adminUser.getCompanyId())
+                    .setCompanyName(adminUser.getCompanyName());
+        }
+
+        if (adminRoleService.lambdaQuery()
+                .eq(AdminRole::getCompanyId, adminRole.getCompanyId())
+                .eq(AdminRole::getName, StringUtils.trim(adminRole.getName()))
+                .count() > 0) {
+            throw new RemoteServiceException("同商户的角色名称已重复");
+        }
+
         if (StringUtils.isNotBlank(adminRole.getParentRoleId())) {
             final AdminRole parentRole = adminRoleService.getById(adminRole.getParentRoleId());
             adminRole.setParentRoleName(parentRole.getName());
@@ -96,6 +112,18 @@ public class AdminRoleLogic {
     public void update(AdminRole adminRole) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
 
+        if (StringUtils.isBlank(adminRole.getName())) {
+            throw new RemoteServiceException("角色名称不能为空");
+        }
+
+        if (adminRoleService.lambdaQuery()
+                .eq(AdminRole::getCompanyId, adminRole.getCompanyId())
+                .eq(AdminRole::getName, StringUtils.trim(adminRole.getName()))
+                .ne(AdminRole::getAdminRoleId, adminRole.getAdminRoleId())
+                .count() > 0) {
+            throw new RemoteServiceException("同商户的角色名称已重复");
+        }
+
         final AdminRole oldData = adminRoleService.getById(adminRole.getAdminRoleId());
         // 父级角色id不为空查询父级角色名填充
         if (StringUtils.isNotBlank(adminRole.getParentRoleId())) {

+ 46 - 1
src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java

@@ -212,6 +212,13 @@ public class AdminUserLogic {
                 && curLoginAmin.getUserName().equals("admin")) {
             throw new RemoteServiceException("不允许修改账号");
         }
+
+        if (curLoginAmin.getType() == 0 && adminUser.getType() != 0) {
+            if (StringUtils.isBlank(adminUser.getCompanyId()) || StringUtils.isBlank(adminUser.getCompanyName()) ) {
+                throw new RemoteServiceException("管理员创建“非平台账号”账号,必须指定所属公司");
+            }
+        }
+
         // 检查账号类型
         if (curLoginAmin.getType() == 2 || curLoginAmin.getType() == 4) {
             // 如果创建人账号是商家, 所建账号为“商家类型”
@@ -225,6 +232,8 @@ public class AdminUserLogic {
             if (curLoginAmin.getType() == 4 && !adminUser.getType().equals(curLoginAmin.getType())) {
                 throw new RemoteServiceException("操作者账号类型为“商家账号”, 只能操作选择“商家账号”");
             }
+            adminUser.setCompanyId(curLoginAmin.getCompanyId());
+            adminUser.setCompanyName(curLoginAmin.getCompanyName());
         } else if (curLoginAmin.getType() == 1 || curLoginAmin.getType() == 3) {
             // 如果创建人账号是商户, 所建账号为“商户类型”或“商家类型”
             if (adminUser.getType() == 0) {
@@ -234,7 +243,10 @@ public class AdminUserLogic {
             if (CollectionUtil.isEmpty(adminUser.getDeptList()) && CollectionUtil.isEmpty(adminUser.getPermissions())) {
                 throw new RemoteServiceException("账号类型为“商户账号”, 请选择至少1个部门或者1个商家");
             }
+            adminUser.setCompanyId(curLoginAmin.getCompanyId());
+            adminUser.setCompanyName(curLoginAmin.getCompanyName());
         }
+
         // 检查角色
         AdminRole addUserRole;
         if (StringUtils.isEmpty(adminUser.getRoleId()) ||
@@ -352,6 +364,8 @@ public class AdminUserLogic {
                 .eq(AdminUserPermissionsRela::getAdminUserId, adminUser.getAdminUserId())
                 .list();
 
+        Set<String> deptIdList = new HashSet<>();
+
         // 商家id集合
         Set<String> websitIdList = permissionsRelaList.stream()
                 .filter(v -> !v.getIsDept())
@@ -374,18 +388,32 @@ public class AdminUserLogic {
                         .map(AdminDeptWebsit::getWebsitId)
                         .collect(Collectors.toList());
                 websitIdList.addAll(websitIds);
+
+                // 遍历部门递归找出子部门
+                this.querySubDeptId(deptId, deptIdList);
+                deptIdList.add(deptId);
             }
         }
 
         // 根据商家id集合查找有关联的账号
-        final List<AdminUserPermissionsRela> adminUserPermissionsRelaList = adminUserPermissionsRelaService.lambdaQuery()
+        List<AdminUserPermissionsRela> adminUserPermissionsRelaList = adminUserPermissionsRelaService.lambdaQuery()
                 .select(AdminUserPermissionsRela::getAdminUserId)
                 .in(AdminUserPermissionsRela::getAdminUserPermissionsId, websitIdList)
                 .groupBy(AdminUserPermissionsRela::getAdminUserId)
                 .list();
 
+        if (CollectionUtil.isNotEmpty(deptIdList)) {
+            final List<AdminUserPermissionsRela> relaDeptList = adminUserPermissionsRelaService.lambdaQuery()
+                    .select(AdminUserPermissionsRela::getAdminUserId)
+                    .in(AdminUserPermissionsRela::getAdminUserPermissionsId, deptIdList)
+                    .groupBy(AdminUserPermissionsRela::getAdminUserId)
+                    .list();
+            adminUserPermissionsRelaList.addAll(relaDeptList);
+        }
+
         List<String> queryAdminUserIdList = adminUserPermissionsRelaList.stream()
                 .map(AdminUserPermissionsRela::getAdminUserId)
+                .distinct()
 //                .filter(v -> !v.equals(adminUser.getAdminUserId()))
                 .collect(Collectors.toList());
 
@@ -426,6 +454,23 @@ public class AdminUserLogic {
         adminUserIdList.addAll(queryAdminUserIdList);
     }
 
+    private void querySubDeptId(String deptId, Set<String> deptIdList) {
+        final List<AdminDept> deptList = adminDeptService.lambdaQuery()
+                .select(AdminDept::getAdminDeptId)
+                .eq(AdminDept::getPId, deptId)
+                .list();
+
+        if (CollectionUtil.isEmpty(deptIdList)) {
+            return;
+        }
+
+        for (AdminDept adminDept : deptList) {
+            this.querySubDeptId(adminDept.getAdminDeptId(), deptIdList);
+        }
+
+        deptIdList.addAll(deptList.stream().map(AdminDept::getAdminDeptId).collect(Collectors.toSet()));
+    }
+
     private void clearNotCanSeeAdminUserId(Map<Integer, List<AdminUser>> userTypeMap, int type, List<String> queryAdminUserIdList) {
         final List<String> adminUsers = userTypeMap.get(type).stream().map(AdminUser::getAdminUserId).collect(Collectors.toList());
         final List<String> userIdList = queryAdminUserIdList.stream()

+ 8 - 8
src/main/java/com/gree/mall/manager/logic/ums/SupplementRecordLogic.java

@@ -32,14 +32,14 @@ import java.util.Objects;
 @RequiredArgsConstructor
 public class SupplementRecordLogic {
 
-    CommonMapper commonMapper;
-    UmsSupplementRecordService umsSupplementRecordService;
-    UmsRegionCodeService umsRegionCodeService;
-    OrderDetailService orderDetailService;
-    CommonLogic commonLogic;
-    AdminCompanyWechatService adminCompanyWechatService;
-    OrderInfoService orderInfoService;
-    AdminWebsitService adminWebsitService;
+    private final CommonMapper commonMapper;
+    private final UmsSupplementRecordService umsSupplementRecordService;
+    private final UmsRegionCodeService umsRegionCodeService;
+    private final OrderDetailService orderDetailService;
+    private final CommonLogic commonLogic;
+    private final AdminCompanyWechatService adminCompanyWechatService;
+    private final OrderInfoService orderInfoService;
+    private final AdminWebsitService adminWebsitService;
 
     @Transactional(rollbackFor = Exception.class)
     public String generateSupplementRecord(String orderId) {