浏览代码

Merge branch 'master' of http://62.234.61.92:3000/wjm/mec-cloud_IntelligentManufacturing_CRM

lph 1 年之前
父节点
当前提交
0e7957d7d8

+ 37 - 3
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysLoginController.java

@@ -5,6 +5,7 @@ import java.util.Set;
 
 import com.zkqy.common.core.domain.entity.DataSource;
 import com.zkqy.common.core.domain.entity.SysTenant;
+import com.zkqy.framework.web.service.TokenService;
 import com.zkqy.system.service.IDataSourceService;
 import com.zkqy.system.service.impl.SysTenantServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -50,6 +51,8 @@ public class SysLoginController {
 
     @Resource
     private IDataSourceService dataSourceService;
+    @Resource
+    private TokenService tokenService;
 
     /**
      * 数据引擎切换数据源接口地址
@@ -74,11 +77,41 @@ public class SysLoginController {
 
     /**
      * 登录方法
+     *
      * @param loginBody 登录信息
      * @return 结果
      */
     @PostMapping("/login")
-    public AjaxResult login(@Valid @RequestBody LoginBody loginBody,BindingResult bindingResult) {
+    public AjaxResult login(@Valid @RequestBody LoginBody loginBody, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
+        }
+        // 校验租户状态?生成token
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌
+        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+                loginBody.getUuid());
+        if (tokenService.getLoginUserIsAdminByToken(token)) {
+            return AjaxResult.error("用户不存在!");
+        }
+        // 校验租户是否过期
+        String checkTenantExpirationTimeMsg = loginService.checkTenantExpirationTime(loginBody);
+        if (!checkTenantExpirationTimeMsg.isEmpty()) {
+            return AjaxResult.error(checkTenantExpirationTimeMsg);
+        }
+        ajax.put(Constants.TOKEN, token);
+        return ajax;
+    }
+
+
+    /**
+     * 登录方法
+     *
+     * @param loginBody 登录信息
+     * @return 结果
+     */
+    @PostMapping("/loginadmin")
+    public AjaxResult loginadmin(@Valid @RequestBody LoginBody loginBody, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
         }
@@ -88,14 +121,15 @@ public class SysLoginController {
         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
                 loginBody.getUuid());
         // 校验租户是否过期
-        String  checkTenantExpirationTimeMsg= loginService.checkTenantExpirationTime(loginBody);
-        if(!checkTenantExpirationTimeMsg.isEmpty()){
+        String checkTenantExpirationTimeMsg = loginService.checkTenantExpirationTime(loginBody);
+        if (!checkTenantExpirationTimeMsg.isEmpty()) {
             return AjaxResult.error(checkTenantExpirationTimeMsg);
         }
         ajax.put(Constants.TOKEN, token);
         return ajax;
     }
 
+
     /**
      * 获取用户信息
      *

+ 22 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/SecurityUtils.java

@@ -115,10 +115,20 @@ public class SecurityUtils {
         return userId != null && 1L == userId;
     }
 
+    /**
+     * 是否为租户管理员
+     * @param userType 用户类型
+     * @param tenantId 租户ID
+     * @return
+     */
     public static boolean isTenantAdmin(String userType, Long tenantId) {
         return tenantId != null && "01".equals(userType);
     }
 
+    /**
+     * 是否登录用户租户管理员
+     * @return
+     */
     public static boolean isLoginUserTenantAdmin() {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         if (loginUser == null) {
@@ -137,4 +147,16 @@ public class SecurityUtils {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         return loginUser.getUser().getTenant().getDataSource();
     }
+
+    /**
+     * 是否租户
+     */
+    public static boolean isTenant(){
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        if(loginUser == null || loginUser.getTenantId() == null){
+            return false;
+        }else {
+            return true;
+        }
+    }
 }

+ 23 - 0
zkqy-framework/src/main/java/com/zkqy/framework/web/service/TokenService.java

@@ -5,6 +5,7 @@ import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import javax.servlet.http.HttpServletRequest;
 
+import com.zkqy.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -77,6 +78,28 @@ public class TokenService {
         return null;
     }
 
+    /**
+     * 验证当前用户是否为admin
+     *
+     * @return 用户信息
+     */
+    public boolean getLoginUserIsAdminByToken(String token) {
+        if (StringUtils.isNotEmpty(token)) {
+            try {
+                String uuid = "";
+                Claims claims = parseToken(token);
+                // 解析对应的权限以及用户信息
+                uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
+                String userKey = getTokenKey(uuid);
+                LoginUser user = redisCache.getCacheObject(userKey);
+                return SecurityUtils.isAdmin(user.getUserId());
+            } catch (Exception e) {
+                System.out.println(e);
+            }
+        }
+        return false;
+    }
+
     /**
      * 设置用户身份信息
      */

+ 2 - 2
zkqy-system/src/main/java/com/zkqy/system/mapper/SysRoleMapper.java

@@ -64,7 +64,7 @@ public interface SysRoleMapper {
      * @param roleName 角色名称
      * @return 角色信息
      */
-    public SysRole checkRoleNameUnique(@Param("roleName") String roleName, @Param("tenantId") String tenantId);
+    public SysRole checkRoleNameUnique(@Param("roleName") String roleName, @Param("tenantId") Long tenantId);
 
     /**
      * 校验角色权限是否唯一
@@ -72,7 +72,7 @@ public interface SysRoleMapper {
      * @param roleKey 角色权限
      * @return 角色信息
      */
-    public SysRole checkRoleKeyUnique(@Param("roleKey") String roleKey, @Param("tenantId") String tenantId);
+    public SysRole checkRoleKeyUnique(@Param("roleKey") String roleKey, @Param("tenantId") Long tenantId);
 
     /**
      * 修改角色信息

+ 13 - 2
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysRoleServiceImpl.java

@@ -149,7 +149,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
     @Override
     public boolean checkRoleNameUnique(SysRole role) {
         Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName(), role.getTenantId().toString());
+        SysRole info = new SysRole();
+        if(SecurityUtils.isTenant()){
+            info = roleMapper.checkRoleNameUnique(role.getRoleName(), role.getTenantId());
+        }else {
+            info = roleMapper.checkRoleNameUnique(role.getRoleName(), 0L);
+        }
         if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
@@ -165,7 +170,13 @@ public class SysRoleServiceImpl implements ISysRoleService {
     @Override
     public boolean checkRoleKeyUnique(SysRole role) {
         Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey(), role.getTenantId().toString());
+        SysRole info = new SysRole();
+        if(SecurityUtils.isTenant()){
+            info = roleMapper.checkRoleKeyUnique(role.getRoleKey(), role.getTenantId());
+        }else {
+            info = roleMapper.checkRoleKeyUnique(role.getRoleKey(), 0L);
+        }
+
         if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }

+ 1 - 1
zkqy-system/src/main/resources/mapper/system/SysBpmNodeScriptMapper.xml

@@ -104,7 +104,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectSysBpmNodeScriptByScriptKey" parameterType="String" resultMap="SysBpmNodeScriptResult">
         <include refid="selectSysBpmNodeScriptVo"/>
-        where script_key = #{scriptKey}
+        where script_key = #{scriptKey} and del_flag = '0'
     </select>
 
     <select id="selectSysBpmNodeScriptByScriptKeys"  resultMap="SysBpmNodeScriptResult">

+ 16 - 2
zkqy-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -97,12 +97,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	
 	<select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
-		 where r.role_name=#{roleName} and r.del_flag = '0' and r.tenant_id = #{tenantId} limit 1
+		 where r.role_name=#{roleName} and r.del_flag = '0'
+		 <if test="tenantId != 0">
+			 and r.tenant_id = #{tenantId}
+		 </if>
+		<if test="tenantId == 0">
+			and r.tenant_id is null
+		</if>
+		limit 1
 	</select>
 	
 	<select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
-		 where r.role_key=#{roleKey} and r.del_flag = '0' and r.tenant_id = #{tenantId} limit 1
+		 where r.role_key=#{roleKey} and r.del_flag = '0'
+		<if test="tenantId != 0">
+			and r.tenant_id = #{tenantId}
+		</if>
+		<if test="tenantId == 0">
+			and r.tenant_id is null
+		</if>
+		limit 1
 	</select>
 
 	<select id="selectUserRoleKeyByUserId" parameterType="long" resultType="string">