Browse Source

Merge remote-tracking branch 'origin/master' into test

Michael 8 years ago
parent
commit
996a748223

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

@@ -28,4 +28,8 @@ public interface RoleMapper {
 	int deleteByPrimaryKeys(List<String> records);
 
 	List<RolePermissionBo> findRolePermissionsExceptAreaManager();
+	
+	List<Role> findRoles();
+	
+	List<RolePermissionBo> selectRolePList(String id);
 }

+ 35 - 3
src/main/java/com/goafanti/common/mapper/RoleMapper.xml

@@ -7,7 +7,7 @@
     <result column="role_type" jdbcType="INTEGER" property="roleType" />
   </resultMap>
   <sql id="Base_Column_List">
-    id, role_name, role_type
+    id, role_name, role_type ,creater,create_time as createTime
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
     select 
@@ -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>
@@ -103,4 +104,35 @@
 	  #{item,jdbcType=VARCHAR}  
     </foreach>
   </delete>
+ <!-- ******************************************************************** --> 
+  <select id="selectRoleList" resultType="com.goafanti.permission.bo.RoleBo">
+    select id,role_name as roleName,role_type as roleType,creater,create_time as createTime
+    from role 
+    where role_type <![CDATA[ < ]]> 999999
+    <if test="roleName !=null">
+		AND role_name=#{roleName,jdbcType=VARCHAR}
+	</if>
+	<if test="page_sql != null">
+    		${page_sql}
+	</if>
+  </select>
+  <select id="selectRoleCount" resultType="java.lang.Integer">
+  	select
+		count(0)
+		from role
+		where
+		1=1
+		<if test="roleName !=null">
+		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>

+ 28 - 1
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{
     /**
@@ -13,8 +14,34 @@ public class Role extends BaseModel implements Serializable{
 
     private Integer roleType;
 
+    /**
+     * 创建人
+     */
+    private String creater;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+	public String getCreater() {
+		return creater;
+	}
+
+	public void setCreater(String creater) {
+		this.creater = creater;
+	}
+
+
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
 
-    public String getRoleName() {
+	public String getRoleName() {
         return roleName;
     }
 

+ 68 - 0
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;
@@ -10,6 +11,73 @@ public class RoleBo extends Role {
 	private static final long	serialVersionUID	= 1L;
 
 	List<Permission>			permissions			= new ArrayList<>();
+	
+	/**
+     * 创建人
+     */
+    private String creater;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    
+    private String roleName;
+
+    private Integer roleType;
+    
+    private String id;
+    
+    private String createTimez;
+
+	public String getCreateTimez() {
+		return createTimez;
+	}
+
+	public void setCreateTimez(String createTimez) {
+		this.createTimez = createTimez;
+	}
+
+	public String getRoleName() {
+		return roleName;
+	}
+
+	public void setRoleName(String roleName) {
+		this.roleName = roleName;
+	}
+
+	public Integer getRoleType() {
+		return roleType;
+	}
+
+	public void setRoleType(Integer roleType) {
+		this.roleType = roleType;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getCreater() {
+		return creater;
+	}
+
+	public void setCreater(String creater) {
+		this.creater = creater;
+	}
+
+	
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
 
 	public List<Permission> getPermissions() {
 		return permissions;

+ 23 - 0
src/main/java/com/goafanti/permission/bo/RolePermissionBo.java

@@ -32,7 +32,30 @@ public class RolePermissionBo {
      * 权限接口地址
      */
     private String url;
+    /**
+     * 创建人
+     */
+    private String creater;
+    /**
+     * 创建时间
+     */
+    private String createTime;
+
+	public String getCreater() {
+		return creater;
+	}
 
+	public void setCreater(String creater) {
+		this.creater = creater;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
 	public String getRname() {
 		return rname;
 	}

+ 107 - 0
src/main/java/com/goafanti/permission/controller/NewRoleApiController.java

@@ -0,0 +1,107 @@
+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;
+import com.goafanti.permission.bo.RoleBo;
+import com.goafanti.permission.service.NewRoleService;
+
+@RestController
+@RequestMapping("open/api/admin")
+public class NewRoleApiController extends BaseApiController{
+	@Resource
+	private NewRoleService newRoleService;
+	
+	
+	@RequestMapping(value = "/roles", method = RequestMethod.POST)
+	public Result roles(RoleBo role, Integer pageNo,
+			Integer pageSize) {
+		Result res = new Result();
+		res.setData(newRoleService.findRoles(role,pageNo,pageSize));
+		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;
+	}
+}

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

@@ -0,0 +1,35 @@
+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);
+}

+ 136 - 0
src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java

@@ -0,0 +1,136 @@
+package com.goafanti.permission.service.impl;
+
+import java.text.SimpleDateFormat;
+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;
+
+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 {
+	@Autowired
+	RoleMapper				roleMapper;
+	@Autowired
+	UserMapper				userMapper;
+	@Autowired
+	UserRoleMapper			userRoleMapper;
+	@Autowired
+	RolePermissionMapper	rolePermissionMapper;
+	@Override
+	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);		
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+		@SuppressWarnings("unchecked")
+		List<RoleBo> list=(List<RoleBo>)p.getList();
+		for(RoleBo i:list){
+			i.setCreateTimez(sdf.format(i.getCreateTime()));
+		}
+		return p;
+	}
+	private Map<String,Object> disposeParams(RoleBo role){
+		Map<String,Object> params = new HashMap<String, Object>();			
+		if(StringUtils.isNotBlank(role.getRoleName())) params.put("roleName", role.getRoleName());		
+		return params;
+		
+	}
+	
+	@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;
+	}
+	
+}