Browse Source

角色管理 联调OK

Michael 8 years ago
parent
commit
18c7c14753

+ 2 - 0
src/main/java/com/goafanti/common/dao/RoleMapper.java

@@ -30,4 +30,6 @@ public interface RoleMapper {
 	List<RolePermissionBo> findRolePermissionsExceptAreaManager();
 	
 	List<Role> findRoles();
+	
+	List<RolePermissionBo> selectRolePList(String id);
 }

+ 12 - 2
src/main/java/com/goafanti/common/mapper/RoleMapper.xml

@@ -20,8 +20,9 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
   <insert id="insert" parameterType="com.goafanti.common.model.Role">
-    insert into role (id, role_name)
-    values (#{id,jdbcType=VARCHAR}, #{roleName,jdbcType=VARCHAR})
+    insert into role (id, role_name,creater,create_time)
+    values (#{id,jdbcType=VARCHAR}, #{roleName,jdbcType=VARCHAR},
+    		#{creater,jdbcType=VARCHAR},#{createTime,jdbcType=VARCHAR})
     ON DUPLICATE KEY UPDATE
 	role_name = values(role_name)
   </insert>
@@ -125,4 +126,13 @@
 		AND role_name=#{roleName,jdbcType=VARCHAR}
 		</if>
   </select>
+  
+  <select id="selectRolePList" resultType="com.goafanti.permission.bo.RolePermissionBo">
+  	select tr.id as rid, tr.role_name as rname, tr.role_type,tp.id as pid,tp.name as pname,tp.url
+    from role tr
+    left join role_permission trp on trp.rid=tr.id
+    left join permission tp on tp.id=trp.pid
+    where
+    tr.id=#{id,jdbcType=VARCHAR}
+  </select>
 </mapper>

+ 6 - 3
src/main/java/com/goafanti/common/model/Role.java

@@ -1,6 +1,7 @@
 package com.goafanti.common.model;
 
 import java.io.Serializable;
+import java.util.Date;
 
 public class Role extends BaseModel implements Serializable{
     /**
@@ -20,7 +21,7 @@ public class Role extends BaseModel implements Serializable{
     /**
      * 创建时间
      */
-    private String createTime;
+    private Date createTime;
 
 	public String getCreater() {
 		return creater;
@@ -30,11 +31,13 @@ public class Role extends BaseModel implements Serializable{
 		this.creater = creater;
 	}
 
-	public String getCreateTime() {
+
+
+	public Date getCreateTime() {
 		return createTime;
 	}
 
-	public void setCreateTime(String createTime) {
+	public void setCreateTime(Date createTime) {
 		this.createTime = createTime;
 	}
 

+ 6 - 3
src/main/java/com/goafanti/permission/bo/RoleBo.java

@@ -1,6 +1,7 @@
 package com.goafanti.permission.bo;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import com.goafanti.common.model.Permission;
@@ -18,7 +19,7 @@ public class RoleBo extends Role {
     /**
      * 创建时间
      */
-    private String createTime;
+    private Date createTime;
     
     private String roleName;
 
@@ -58,11 +59,13 @@ public class RoleBo extends Role {
 		this.creater = creater;
 	}
 
-	public String getCreateTime() {
+	
+
+	public Date getCreateTime() {
 		return createTime;
 	}
 
-	public void setCreateTime(String createTime) {
+	public void setCreateTime(Date createTime) {
 		this.createTime = createTime;
 	}
 

+ 78 - 2
src/main/java/com/goafanti/permission/controller/NewRoleApiController.java

@@ -1,11 +1,17 @@
 package com.goafanti.permission.controller;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.annotation.Resource;
 
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.controller.BaseApiController;
 import com.goafanti.common.model.Role;
@@ -13,7 +19,7 @@ import com.goafanti.permission.bo.RoleBo;
 import com.goafanti.permission.service.NewRoleService;
 
 @RestController
-@RequestMapping("open/api/admin/role")
+@RequestMapping("api/admin")
 public class NewRoleApiController extends BaseApiController{
 	@Resource
 	private NewRoleService newRoleService;
@@ -27,5 +33,75 @@ public class NewRoleApiController extends BaseApiController{
 		return res;
 	}
 	
-	
+	@RequestMapping(value = "/role/rolePermission", method = RequestMethod.POST)
+	public Result rolePermission(String id){
+		Result res = new Result();
+		res.setData(newRoleService.selectRolePList(id));
+		return res;
+	}
+	@RequestMapping(value = "/role", method = RequestMethod.POST)
+	public Result insertRole(String data) {
+		Result res = new Result();
+		JSONObject jo = (JSONObject) JSON.parse(data);
+		if (jo != null) {
+			JSONArray permissions = jo.getJSONArray("permissions");
+			List<String> permisionIds = new ArrayList<>();
+			for (int idx = 0; idx < permissions.size(); idx++) {
+				String pid = permissions.getString(idx);
+					permisionIds.add(pid);
+			}
+			Role records = jo.toJavaObject(Role.class);
+			res.setData(newRoleService.insert(records, permisionIds));
+		} else {
+			res.getError().add(buildError("", "参数格式不正确"));
+		}
+		return res;
+	}
+
+	@RequestMapping(value = "/role/delete", method = RequestMethod.POST)
+	public Result deleteRole(String data) {
+		Result res = new Result();
+		JSONArray ja = (JSONArray) JSON.parse(data);
+		if (ja != null && !ja.isEmpty()) {
+			List<String> records = new ArrayList<>();
+			for (int idx = 0; idx < ja.size(); idx++) {
+				String rid = ja.getString(idx);
+				if (rid != "1") {
+					records.add(rid);
+				}
+			}
+			res.setData(newRoleService.deleteByPrimaryKeys(records));
+		} else {
+			res.getError().add(buildError("", "参数格式不正确"));
+		}
+		return res;
+	}
+
+	@RequestMapping(value = "/role/bindpermission", method = RequestMethod.POST)
+	public Result bindPermission(String rid, String pid) {
+		Result res = new Result();
+		res.setData(newRoleService.bindPermission(rid, pid));
+		return res;
+	}
+
+	@RequestMapping(value = "/role/binduser", method = RequestMethod.POST)
+	public Result bindUser(String rid, String uid) {
+		Result res = new Result();
+		res.setData(newRoleService.bindUser(rid, uid));
+		return res;
+	}
+
+	@RequestMapping(value = "/role/unbindpermission", method = RequestMethod.POST)
+	public Result unbindPermission(String rid, String pid) {
+		Result res = new Result();
+		res.setData(newRoleService.bindPermission(rid, pid));
+		return res;
+	}
+
+	@RequestMapping(value = "/role/unbinduser", method = RequestMethod.POST)
+	public Result unbindUser(String rid, String uid) {
+		Result res = new Result();
+		res.setData(newRoleService.bindUser(rid, uid));
+		return res;
+	}
 }

+ 24 - 0
src/main/java/com/goafanti/permission/service/NewRoleService.java

@@ -2,10 +2,34 @@ package com.goafanti.permission.service;
 
 
 
+import java.util.List;
+import java.util.Set;
+
+import com.goafanti.common.model.Role;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.permission.bo.RoleBo;
+import com.goafanti.permission.bo.RolePermissionBo;
 
 public interface NewRoleService {
 	Pagination<RoleBo>findRoles(RoleBo role, Integer pageNo,
 			Integer pageSize);
+	
+	int insert(List<Role> records);
+
+	// 根据用户ID查询角色(role),放入到Authorization里。
+	Set<String> findRoleByUserId(String userId);
+
+	int deleteByPrimaryKeys(List<String> records);
+
+	int bindPermission(String roleId, String permissionId);
+
+	int unbindPermission(String roleId, String permissionId);
+
+	int bindUser(String roleId, String userId);
+
+	int unbindUser(String roleId, String userId);
+
+	int insert(Role record, List<String> permissions);
+	
+	List<RolePermissionBo> selectRolePList(String id);
 }

+ 88 - 1
src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java

@@ -1,7 +1,11 @@
 package com.goafanti.permission.service.impl;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -10,10 +14,15 @@ import com.goafanti.common.dao.RoleMapper;
 import com.goafanti.common.dao.RolePermissionMapper;
 import com.goafanti.common.dao.UserMapper;
 import com.goafanti.common.dao.UserRoleMapper;
+import com.goafanti.common.model.Role;
+import com.goafanti.common.model.RolePermission;
+import com.goafanti.common.model.UserRole;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.permission.bo.RoleBo;
+import com.goafanti.permission.bo.RolePermissionBo;
 import com.goafanti.permission.service.NewRoleService;
 @Service
 public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements NewRoleService {
@@ -29,7 +38,7 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 	public Pagination<RoleBo> findRoles(RoleBo role, Integer pageNo, Integer pageSize) {
 		Map<String,Object> params =disposeParams(role);
 		@SuppressWarnings("unchecked")
-		Pagination<RoleBo> p=(Pagination<RoleBo>)findPage("selectRoleList","selectRoleCount",params,pageNo,pageSize);
+		Pagination<RoleBo> p=(Pagination<RoleBo>)findPage("selectRoleList","selectRoleCount",params,pageNo,pageSize);		
 		return p;
 	}
 	private Map<String,Object> disposeParams(RoleBo role){
@@ -39,4 +48,82 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 		
 	}
 	
+	@Override
+	public Set<String> findRoleByUserId(String userId) {
+		return roleMapper.findRoleByUserId(userId);
+	}
+
+	
+
+	@Override
+	public int insert(List<Role> records) {
+		return roleMapper.insertBatch(records);
+	}
+
+	@Override
+	public int deleteByPrimaryKeys(List<String> records) {
+		rolePermissionMapper.deleteByRoleId(records);
+		userRoleMapper.deleteByRoleId(records);
+		List<String> data= userRoleMapper.findUserIdByRoleIds(records);
+		TokenManager.clearUserAuthByUserId(data.toArray(new String[]{}));
+		return roleMapper.deleteByPrimaryKeys(records);
+	}
+
+
+	@Override
+	public int bindPermission(String rid, String pid) {
+		TokenManager.clearUserAuthByUserId((String[]) userRoleMapper.findUserIdByRoleId(rid).toArray());
+		return rolePermissionMapper.insert(new RolePermission(rid, pid));
+	}
+
+	@Override
+	public int bindUser(String rid, String uid) {
+		TokenManager.clearUserAuthByUserId(new String[] { uid });
+		return userRoleMapper.insert(new UserRole(uid, rid));
+	}
+
+	@Override
+	public int unbindPermission(String roleId, String permissionId) {
+		Map<String, Object> params = new HashMap<>();
+		params.put("rid", roleId);
+		params.put("pid", permissionId);
+		TokenManager.clearUserAuthByUserId((String[]) userRoleMapper.findUserIdByRoleId(roleId).toArray());
+		return rolePermissionMapper.deleteByPrimaryKey(params);
+	}
+
+	@Override
+	public int unbindUser(String roleId, String userId) {
+		Map<String, Object> params = new HashMap<>();
+		params.put("rid", roleId);
+		params.put("uid", userId);
+		TokenManager.clearUserAuthByUserId(new String[] { userId });
+		return userRoleMapper.deleteByUserRole(params);
+	}
+
+	@Override
+	public int insert(Role record, List<String> permissions) {
+		Date now = new Date();
+		if (record.getId() != null) {
+			List<RolePermission> rps = new ArrayList<>();
+			rolePermissionMapper.deleteByRid(record.getId());
+			for (String pid : permissions) {
+				rps.add(new RolePermission(record.getId(), pid));
+			}
+			if (!rps.isEmpty()) {
+				rolePermissionMapper.insertBatch(rps);
+			}
+			List<String> ids = userRoleMapper.findUserIdByRoleId(record.getId());
+			TokenManager.clearUserAuthByUserId(ids.toArray(new String[ids.size()]));
+		}
+		record.getId();
+		record.setCreater("管理员");		
+		record.setCreateTime(now);
+		return roleMapper.insert(record);
+	}
+	@Override
+	public List<RolePermissionBo> selectRolePList(String id) {
+		List<RolePermissionBo> list=roleMapper.selectRolePList(id);
+		return list;
+	}
+	
 }