Browse Source

多组织

chenc 4 years ago
parent
commit
1de770ba23

+ 1 - 0
src/main/java/org/jeecg/config/ShiroConfig.java

@@ -48,6 +48,7 @@ public class ShiroConfig {
 		Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
 		// 配置不会被拦截的链接 顺序判断
 		filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
+		filterChainDefinitionMap.put("/sys/login2", "anon"); //登录接口排除
 		filterChainDefinitionMap.put("/auth/2step-code", "anon");//登录验证码
 		filterChainDefinitionMap.put("/test/jeecgDemo/**", "anon"); //测试接口
 		filterChainDefinitionMap.put("/test/jeecgOrderMain/**", "anon"); //测试接口

+ 45 - 4
src/main/java/org/jeecg/modules/ngalain/controller/NgAlainController.java

@@ -8,21 +8,27 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.util.SpringContextUtils;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.basedata.entity.FdPersonnel;
+import org.jeecg.modules.basedata.service.IFdPersonnelService;
 import org.jeecg.modules.ngalain.service.NgAlainService;
+import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysDict;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.SysUserRole;
 import org.jeecg.modules.system.model.SysDictTree;
+import org.jeecg.modules.system.service.ISysDepartService;
 import org.jeecg.modules.system.service.ISysDictService;
 import org.jeecg.modules.system.service.ISysUserRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -39,11 +45,17 @@ public class NgAlainController {
     @Autowired
     private ISysUserRoleService sysUserRoleService;
 
+    @Autowired
+    private IFdPersonnelService iFdPersonnelService;
+
+    @Autowired
+    private ISysDepartService iSysDepartService;
+
     @RequestMapping(value = "/getAppData")
     @ResponseBody
     @ApiOperation(value = "登陆之后获取菜单/用户/app信息" ,httpMethod = "POST",notes = "登陆之后获取菜单/用户/app信息", produces = "application/json")
-    public Result<JSONObject> getAppData(HttpServletRequest request) throws Exception {
-       String token=request.getHeader("X-Access-Token");
+    public Result<JSONObject> getAppData(HttpServletRequest request,String orgId) throws Exception {
+        String token=request.getHeader("X-Access-Token");
         JSONObject j = new JSONObject();
         SysUser user = (SysUser) SecurityUtils.getSubject().getPrincipal();
         JSONObject userObjcet = new JSONObject();
@@ -53,6 +65,33 @@ public class NgAlainController {
         userObjcet.put("email", user.getEmail());
         userObjcet.put("token", token);
         userObjcet.put("personnelId", user.getPersonnelId());
+        List<SysDepart> sysDeparts=iSysDepartService.getByType("1");
+        //判断组织id是否为空
+        if(StringUtils.isNotBlank(orgId)&&!orgId.equals("null")){
+            //不为空则不变
+//            FdPersonnel fdPersonnel=iFdPersonnelService.getById(user.getPersonnelId());
+            userObjcet.put("pkOrg", orgId);
+        }else{
+            //为空
+            //如果关联了人员根据人员组织
+            if(StringUtils.isNotBlank(user.getPersonnelId())&&!user.getPersonnelId().equals("123")){
+                FdPersonnel fdPersonnel=iFdPersonnelService.getById(user.getPersonnelId());
+                orgId=fdPersonnel.getPkOrg();
+                userObjcet.put("pkOrg", orgId);
+            }else{
+                //如果没有关联默认公司 admin
+
+                orgId=sysDeparts.get(0).getPkOrg();
+                userObjcet.put("pkOrg", orgId);
+            }
+        }
+
+        for(SysDepart sysDepart:sysDeparts){
+            if(sysDepart.getId().equals(orgId)){
+                userObjcet.put("pkOrgName", sysDepart.getDepartName());
+            }
+        }
+
         userObjcet.put("realname",user.getRealname());
         //获取当前角色id
         List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
@@ -63,13 +102,15 @@ public class NgAlainController {
         }
 
         j.put("user", userObjcet);
-        j.put("menu",ngAlainService.getMenu(user.getUsername()));
+//        j.put("menu",ngAlainService.getMenu(user.getUsername()));
+        j.put("menu",ngAlainService.getMenuByOrg(user.getUsername(),orgId));
         JSONObject app = new JSONObject();
         app.put("name", "jeecg-boot-angular");
         app.put("description", "jeecg+ng-alain整合版本");
         j.put("app", app);
         //获取用户权限标识
-        j.put("perms",ngAlainService.queryPermsByUser(user.getUsername()));
+//        j.put("perms",ngAlainService.queryPermsByUser(user.getUsername()));
+        j.put("perms",ngAlainService.queryPermsByUserAndPkorg(user.getUsername(),orgId));
         Result<JSONObject> result = new Result<JSONObject>();
         result.setSuccess(true);
         result.setResult(j);

+ 4 - 0
src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java

@@ -10,4 +10,8 @@ public interface NgAlainService {
     public List<String> queryPermsByUser(String id) throws Exception;
     public JSONArray getJeecgMenu(String id) throws Exception;
     public List<Map<String, String>> getDictByTable(String table, String key, String value);
+
+    //根据组织公司id获取信息
+    public JSONArray getMenuByOrg(String id,String pkOrg) throws Exception;
+    public List<String> queryPermsByUserAndPkorg(String id,String pkOrg) throws Exception;
 }

+ 24 - 0
src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java

@@ -34,6 +34,12 @@ public class NgAlainServiceImpl implements NgAlainService {
     public List<String> queryPermsByUser(String id) throws Exception {
         return sysPermissionService.queryPermsByUser(id);
     }
+
+    @Override
+    public List<String> queryPermsByUserAndPkorg(String id,String pkOrg) throws Exception {
+        return sysPermissionService.queryPermsByUserAndPkOrg(id,pkOrg);
+    }
+
     @Override
     public JSONArray getJeecgMenu(String id) throws Exception {
         List<SysPermission> metaList = sysPermissionService.queryByUser(id);
@@ -57,6 +63,24 @@ public class NgAlainServiceImpl implements NgAlainService {
         return this.mapper.getDictByTable(table,key,value);
     }
 
+    @Override
+    public JSONArray getMenuByOrg(String id,String pkOrg) throws Exception {
+        List<SysPermission> metaList = sysPermissionService.queryByUserByOrg(id,pkOrg);
+        JSONArray jsonArray = new JSONArray();
+        getPermissionJsonArray(jsonArray, metaList, null);
+        JSONArray menulist= parseNgAlain(jsonArray);
+        JSONObject jeecgMenu = new JSONObject();
+        SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
+        jeecgMenu.put("text", sysUser.getUsername()+","+DateUtils.getTimeTag()+"好!");
+        jeecgMenu.put("group",false);
+        jeecgMenu.put("hideInBreadcrumb", true);
+        jeecgMenu.put("shortcut", true);
+        jeecgMenu.put("children", menulist);
+        JSONArray jeecgMenuList=new JSONArray();
+        jeecgMenuList.add(jeecgMenu);
+        return jeecgMenuList;
+    }
+
     private JSONArray parseNgAlain(JSONArray jsonArray) {
         JSONArray menulist=new JSONArray();
         for (Object object : jsonArray) {

+ 42 - 0
src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -105,6 +105,48 @@ public class LoginController {
 		}
 		return result;
 	}
+
+
+	@RequestMapping(value = "/login2", method = RequestMethod.POST)
+	@ApiOperation("登录接口")
+	public Result<JSONObject> login2(@RequestBody SysLoginModel sysLoginModel) {
+		Result<JSONObject> result = new Result<JSONObject>();
+		String username = sysLoginModel.getUsername();
+		String password = sysLoginModel.getPassword();
+		String passwordNotencryption = sysLoginModel.getPasswordNotencryption();//无加密
+		SysUser sysUser = sysUserService.getUserByNameAndPkOrg(username,sysLoginModel.getPkOrg());
+
+//		if(sysUser==null) {
+//			result.error500("该用户不存在");
+//			sysBaseAPI.addLog("登录失败,用户名:"+username+"不存在!", CommonConstant.LOG_TYPE_1, null);
+//			return result;
+//		}else {
+//			//密码验证
+//			String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
+//			String syspassword = sysUser.getPassword();
+//			if(!syspassword.equals(userpassword)) {
+//				result.error500("用户名或密码错误");
+//				return result;
+//			}
+
+
+			//生成token
+//			String token = JwtUtil.sign(username, syspassword);
+			String token = JwtUtil.sign(username, sysUser.getPassword());
+			redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
+			//设置超时时间
+			redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME/1000);
+
+			JSONObject obj = new JSONObject();
+			obj.put("token", token);
+			obj.put("userInfo", sysUser);
+			obj.put("timeTag", DateUtils.getTimeTag());
+			result.setResult(obj);
+			result.success("登录成功");
+			sysBaseAPI.addLog("用户名: "+username+",登录成功!", CommonConstant.LOG_TYPE_1, null);
+//		}
+		return result;
+	}
 	
 	/**
 	 * 退出登录

+ 10 - 1
src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java

@@ -30,7 +30,11 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> {
 	  *   根据用户查询用户权限
 	 */
 	public List<SysPermission> queryByUser(@Param("username") String username);
-	
+
+	/**
+	 *   根据用户以及角色查询用户权限
+	 */
+	public List<SysPermission> queryByUserByPkOrg(@Param("username") String username,@Param("pkOrg") String pkOrg);
 	/**
 	 *   修改菜单状态字段: 是否子节点
 	 */
@@ -45,4 +49,9 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> {
 	 *   根据用户查询用户权限标识
 	 */
 	public List<String> queryPermsByUser(@Param("username") String username);
+
+	/**
+	 *   根据用户、组织id查询用户权限标识
+	 */
+	public List<String> queryPermsByUserAndPkOrg(@Param("username") String username,@Param("pkOrg") String pkOrg);
 }

+ 10 - 0
src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -27,6 +27,16 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	 */
 	public SysUser getUserByName(@Param("username") String username);
 
+	/**
+	* @Author chenchuang
+	* @Description //TODO 通过账号和组织查询
+	* @Date 2021/2/24 18:40
+	* @Param [username, pkOrg]
+	* @return org.jeecg.modules.system.entity.SysUser
+	*/
+	public SysUser getUserByNameAndPkOrg(@Param("username") String username,@Param("pkOrg")String pkOrg);
+
+
 	/**
 	 * @Author gurui
 	 * @Description //TODO 根据用户名查询真实名称

+ 1 - 0
src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml

@@ -95,6 +95,7 @@
 
 	<select id="getByType" resultType="org.jeecg.modules.system.entity.SysDepart">
 		select * from sys_depart where org_type=#{id} and parent_id <![CDATA[ <> ]]> 'fe33687fb0a645ccb71a2873460a3d7d'
+		ORDER BY depart_order
 	</select>
 
 	<select id="getByOrgId" resultType="org.jeecg.modules.system.entity.SysDepart">

+ 34 - 0
src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml

@@ -52,6 +52,23 @@
 		   order by p.sort_no ASC
 	</select>
 
+	<select id="queryByUserByPkOrg" parameterType="Object"  resultMap="SysPermission">
+		SELECT p.*
+		FROM  sys_permission p
+		WHERE exists(
+		select a.id from sys_role_permission a
+		join sys_role b on a.role_id = b.id
+		join sys_user_role c on c.role_id = b.id
+		join sys_user d on d.id = c.user_id
+		where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR}
+		<if test="pkOrg !=null and pkOrg!=''">
+			AND b.pk_org = #{pkOrg,jdbcType=VARCHAR}
+		</if>
+		)
+		and p.del_flag = 0
+		order by p.sort_no ASC
+	</select>
+
 	<select id="queryPermsByUser" parameterType="Object"  resultType="String">
 		   SELECT p.perms
 		   FROM  sys_permission p
@@ -65,6 +82,23 @@
 		   and p.perms is not null and p.del_flag = 0
 		   order by p.sort_no ASC
 	</select>
+
+	<select id="queryPermsByUserAndPkOrg" parameterType="Object"  resultType="String">
+		SELECT p.perms
+		FROM  sys_permission p
+		WHERE exists(
+		select a.id from sys_role_permission a
+		join sys_role b on a.role_id = b.id
+		join sys_user_role c on c.role_id = b.id
+		join sys_user d on d.id = c.user_id
+		where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR}
+		<if test="pkOrg !=null and pkOrg!=''">
+			AND b.pk_org = #{pkOrg,jdbcType=VARCHAR}
+		</if>
+		)
+		and p.perms is not null and p.del_flag = 0
+		order by p.sort_no ASC
+	</select>
 	
 
 </mapper>

+ 5 - 0
src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml

@@ -32,6 +32,11 @@
 		select * from  sys_user  where username = #{username}
 	</select>
 
+	<!-- 根据用户名、组织id查询 -->
+	<select id="getUserByNameAndPkOrg" resultType="org.jeecg.modules.system.entity.SysUser">
+		select * from  sys_user  where username = #{username} and pk_org=#{pkOrg}
+	</select>
+
 	<!-- 根据用户名查询 -->
 	<select id="queryRealNameByUsername" resultType="org.jeecg.modules.system.entity.SysUser">
 		SELECT

+ 9 - 0
src/main/java/org/jeecg/modules/system/model/SysLoginModel.java

@@ -9,6 +9,7 @@ public class SysLoginModel {
     private String username;
     private String password;
     private String passwordNotencryption;
+    private String pkOrg;
     //验证码
     private String captcha;
 
@@ -43,4 +44,12 @@ public class SysLoginModel {
     public void setPasswordNotencryption(String passwordNotencryption) {
         this.passwordNotencryption = passwordNotencryption;
     }
+
+    public String getPkOrg() {
+        return pkOrg;
+    }
+
+    public void setPkOrg(String pkOrg) {
+        this.pkOrg = pkOrg;
+    }
 }

+ 3 - 0
src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java

@@ -31,9 +31,12 @@ public interface ISysPermissionService extends IService<SysPermission> {
 	public void editPermission(SysPermission sysPermission) throws JeecgBootException;
 	
 	public List<SysPermission> queryByUser(String username);
+	public List<SysPermission> queryByUserByOrg(String username,String pkOrg);
 
 	public List<String> queryPermsByUser(String username);
 
+	public List<String> queryPermsByUserAndPkOrg(String username,String pkOrg);
+
 	/**
 	 * 根据permissionId删除其关联的SysPermissionDataRule表中的数据
 	 * 

+ 3 - 1
src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -20,7 +20,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2018-12-20
  */
 public interface ISysUserService extends IService<SysUser> {
-	
+
+	public SysUser getUserByNameAndPkOrg(String username,String pkOrg);
+
 	public SysUser getUserByName(String username);
 	
 	/**

+ 10 - 0
src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java

@@ -178,11 +178,21 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S
 		return this.sysPermissionMapper.queryByUser(username);
 	}
 
+	@Override
+	public List<SysPermission> queryByUserByOrg(String username,String pkOrg) {
+		return this.sysPermissionMapper.queryByUserByPkOrg(username,pkOrg);
+	}
+
 	@Override
 	public List<String> queryPermsByUser(String username) {
 		return this.sysPermissionMapper.queryPermsByUser(username);
 	}
 
+	@Override
+	public List<String> queryPermsByUserAndPkOrg(String username,String pkOrg) {
+		return this.sysPermissionMapper.queryPermsByUserAndPkOrg(username,pkOrg);
+	}
+
 	/**
 	 * 根据permissionId删除其关联的SysPermissionDataRule表中的数据
 	 */

+ 6 - 1
src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -40,7 +40,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	
 	@Autowired
 	private SysDepartMapper sysDepartMapper;
-	
+
+	@Override
+	public SysUser getUserByNameAndPkOrg(String username, String pkOrg) {
+		return userMapper.getUserByNameAndPkOrg(username,pkOrg);
+	}
+
 	@Override
 	public SysUser getUserByName(String username) {
 		return userMapper.getUserByName(username);