Browse Source

no message

FengChaoYu 7 months ago
parent
commit
0874f2a98d

+ 15 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/user/RoleTypeBean.java

@@ -0,0 +1,15 @@
+package com.gree.mall.manager.bean.user;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel
+@Data
+public class RoleTypeBean {
+
+    @ApiModelProperty(value = "编码 0:网点 1:企业 2:平台")
+    private Integer code;
+    @ApiModelProperty(value = "名称")
+    private String name;
+}

+ 9 - 4
mall-server-api/src/main/java/com/gree/mall/manager/controller/admin/AdminRoleController.java

@@ -1,22 +1,20 @@
 package com.gree.mall.manager.controller.admin;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.bean.user.RoleTypeBean;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.admin.AdminRoleLogic;
 import com.gree.mall.manager.plus.entity.AdminRole;
-import com.gree.mall.manager.plus.entity.AdminUser;
-import com.gree.mall.manager.plus.service.AdminRoleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 @Slf4j
 @RestController
@@ -74,4 +72,11 @@ public class AdminRoleController {
         return ResponseHelper.success();
     }
 
+    @PostMapping("/get/role/type")
+    @ApiOperation(value = "获取角色类型")
+    public ResponseHelper<List<RoleTypeBean>> getRoleType() throws RemoteServiceException {
+        List<RoleTypeBean> list = adminRoleLogic.getRoleType();
+        return ResponseHelper.success(list);
+    }
+
 }

+ 63 - 10
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminRoleLogic.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.user.RoleTypeBean;
 import com.gree.mall.manager.enums.RoleTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
@@ -18,8 +19,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 @Service
 public class AdminRoleLogic {
@@ -42,19 +44,19 @@ public class AdminRoleLogic {
 
         List<String> companyWechatIds = adminUser.getCompanyWechatIds();
 
-        final AdminRole role = adminRoleService.getById(adminUser.getRoleId());
-        Integer type = role.getType();
+        Integer type = adminUser.getType();
 
-        if("admin".equals(adminUser.getUserName())){
-            type = RoleTypeEnum.ADMIN.getCode();
-        } else if ("企业负责人".equals(role.getName())) {
-            type = RoleTypeEnum.ADMIN.getCode();
+        Integer level = null;
+        if (adminUser.getType() == 0 && adminUser.getIsMaster()) {
+            final AdminRole adminRole = adminRoleService.getById(adminUser.getRoleId());
+            level = adminRole.getLevel();
         }
 
         Page<AdminRole> rolePage = adminRoleService.lambdaQuery()
                 .like(StringUtils.isNotBlank(companyWechatName), AdminRole::getCompanyName, companyWechatName)
                 .le(AdminRole::getType, type)
                 .in(CollectionUtils.isNotEmpty(companyWechatIds), AdminRole::getCompanyWechatId, companyWechatIds)
+                .eq(Objects.nonNull(level), AdminRole::getLevel, level)
                 .orderByDesc(AdminRole::getType)
                 .page(new Page<>(pageNo, pageSize));
 
@@ -65,14 +67,26 @@ public class AdminRoleLogic {
      * 新增角色
      */
     public void add(HttpServletRequest request, AdminRole adminRole) {
-
         //默认部门角色
         adminRole.setType(RoleTypeEnum.WEBSIT.getCode());
-
         AdminUserCom adminUser = commonLogic.getAdminUser(request);
+
+        if (adminUser.getType() == 1
+                && Objects.nonNull(adminRole.getLevel())
+                && adminRole.getLevel() != 0) {
+            final Integer count = adminRoleService.lambdaQuery()
+                    .eq(AdminRole::getCompanyWechatId, adminUser.getCompanyWechatId())
+                    .eq(AdminRole::getType, 1)
+                    .eq(AdminRole::getLevel, adminRole.getLevel())
+                    .count();
+            if (count > 0) {
+                throw new RemoteServiceException("已存在同级别的角色不能再添加");
+            }
+        }
+
+
         adminRole.setCompanyWechatId(adminUser.getCompanyWechatId());
         adminRole.setCompanyName(adminUser.getCompanyName());
-        adminRole.setCreateTime(new Date());
         adminRoleService.save(adminRole);
     }
 
@@ -81,6 +95,20 @@ public class AdminRoleLogic {
      */
     @Transactional
     public void update(AdminRole adminRole) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (adminUser.getType() == 1
+                && Objects.nonNull(adminRole.getLevel())
+                && adminRole.getLevel() != 0) {
+            final Integer count = adminRoleService.lambdaQuery()
+                    .eq(AdminRole::getCompanyWechatId, adminUser.getCompanyWechatId())
+                    .eq(AdminRole::getType, 1)
+                    .eq(AdminRole::getLevel, adminRole.getLevel())
+                    .ne(AdminRole::getAdminRoleId, adminRole.getAdminRoleId())
+                    .count();
+            if (count > 0) {
+                throw new RemoteServiceException("已存在同级别的角色不能再添加");
+            }
+        }
         adminRoleService.updateById(adminRole);
 
         if (adminRole.getName() != null) {
@@ -93,6 +121,10 @@ public class AdminRoleLogic {
      * 删除角色
      */
     public void delete(String adminRoleId) throws RemoteServiceException {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (adminUser.getType() == 0) {
+            throw new RemoteServiceException("网点账号不能删除角色");
+        }
         //不允许删除使用该角色的帐号
         Integer count = adminUserService.lambdaQuery().eq(AdminUser::getRoleId, adminRoleId).count();
         if (count > 0) {
@@ -109,4 +141,25 @@ public class AdminRoleLogic {
     }
 
 
+    public List<RoleTypeBean> getRoleType() {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        List<RoleTypeBean> list = new ArrayList<>();
+        if (adminUser.getType() == 0) {
+            RoleTypeBean bean = new RoleTypeBean();
+            bean.setCode(2);
+            bean.setName("平台");
+            list.add(bean);
+        }
+        RoleTypeBean bean2 = new RoleTypeBean();
+        bean2.setCode(1);
+        bean2.setName("平台");
+        list.add(bean2);
+
+        RoleTypeBean bean3 = new RoleTypeBean();
+        bean3.setCode(0);
+        bean3.setName("网点");
+        list.add(bean3);
+
+        return list;
+    }
 }

+ 13 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminWebsitLogic.java

@@ -86,6 +86,8 @@ public class AdminWebsitLogic {
     AdminWebsitBakService adminWebsitBakService;
     @Autowired
     SysDictCompanyService sysDictCompanyService;
+    @Autowired
+    AdminRoleService adminRoleService;
 
     /**
      * 区域列表
@@ -272,11 +274,21 @@ public class AdminWebsitLogic {
     private void addAdminUser(AdminWebsitNewBean adminWebsit) {
         AdminUserAddReqBean adminUser = new AdminUserAddReqBean();
 
+        final AdminRole adminRole = adminRoleService.lambdaQuery()
+                .eq(AdminRole::getCompanyWechatId, adminWebsit.getCompanyWechatId())
+                .eq(AdminRole::getLevel, adminWebsit.getLevel())
+                .last("limit 1")
+                .one();
+
+        if (Objects.isNull(adminRole)) {
+            throw new RemoteServiceException("创建主账号失败, 未找到等级的角色");
+        }
+
         adminUser.setCompanyWechatId(adminWebsit.getCompanyWechatId())
                 .setCompanyName(adminWebsit.getCompanyWechatName())
                 .setUserName(adminWebsit.getWebsitId() + "01")
                 .setNickName(adminWebsit.getName())
-                .setRoleId(adminWebsit.getLevel() == 1 ? "1848204380641746945" : "1848204380641746946")
+                .setRoleId(adminRole.getAdminRoleId())
                 .setPassword(adminWebsit.getLegalMobile())
                 .setPubNotice(true)
                 .setIsVender(false)