【springmvc+mybatis项目实战】杰信商贸-15.细粒度的权限控制+业务上报取消

简介:
上一篇总结我们完成了购销合同的增删改查业务,这一篇我们首先完成权限控制以及业务的上报取消的设置功能。

先说我们的权限控制
1.细粒度的权限控制
a)日常权限框架:
基于角色权限,用户、角色、权限(URL、主菜单、左侧菜单、按钮)

b)数据权限:
纵向的数据权限过滤:对数据进行过滤
1)本人(专责):登录后只能看到自己的信息
Where条件 create_by = #{当前登录者id}
2)部门(集团公司):登录后登录人是经理级别
A.只能看本部门
Where条件 create_dept=#{当前登录者所在的部门}

B.只能看到本部门和直属下属的数据
总经理-财务部-社保组
Where条件  create_dept=#{当前登录者所在的部门}
And create_dept like #{当前登录者所在部门}???

C.看到所有下属的数据
财务副总-财务部-社保组
Where条件 create_dept like #{当前登录者所在部门id}%


c)部门表的编码有业务规则
001总部
001004 财务部
001005 软件部
001004001 社保组
001004002 工资组
001005001 杰信组
编码3位为一层

d)跨部门跨人员权限控制(特殊的情况,大型企业)
举例:副总(分管),分管领导业务交叉
如图4.1-跨部门跨人员权限控制.png
解决方案:单独加表实现
Where条件 create_dept in (当前登录者配置的管理的部门集合) 
Or
Create_by in (当前登录者配置的管理的人员集合)

2.业务:购销合同的上报取消
流程
上报:当销售人员录入合同后,确认无误后,点击“提交”;提交之前的信息都为草稿,草稿状态时下一个流程的人看不到这个记录,当提交后,状态改为1,这时下一个流程的报运人员就可以看到,操作报运的信息。

取消:当提交后,发现信息少了,回退,点击“取消”。如果报运人员没有操作,可以回退;当报运人员已经开始操作并有了记录,这时不能回退,走“补录”流程。

关于状态的修改,我们的Mapper中已经有了状态修改的配置语句:
<!-- 修改状态 -->
<update id="updateState" parameterType="map">
	update contract_c set state=#{state}
	where CONTRACT_ID in
	<foreach collection="ids" item="id" open="(" close=")" separator=",">
		#{id}
	</foreach>
</update>

然后我们看Dao层,我们继承了BaseDao以及BaseDaoImpl,我们在ContractDao层中加入了修改状态的方法
package cn.hpu.jk.dao.impl;

import java.util.Map;

import org.springframework.stereotype.Repository;

import cn.hpu.jk.dao.ContractDao;
import cn.hpu.jk.domain.Contract;


@Repository //为了包扫描的时候这个Dao被扫描到
public class ContractDaoImpl extends BaseDaoImpl<Contract> implements ContractDao{
	
	public ContractDaoImpl(){
		//设置命名空间
		super.setNs("cn.hpu.jk.mapper.ContractMapper");
	}


	@Override
	public void updateState(Map map) {
		super.getSqlSession().update(super.getNs()+".updateState", map);
	}
}

然后看Service层,我们之前已经在Service层写好了“上报”以及“取消”的方法以及方法的实现:
@Override
public void submit(Serializable[] ids) {
	//默认刚建完的是草稿,建完之后确定没问题就上报
	//0草稿 1已上报
	 Map map=new HashMap();
	 map.put("state",1);//1已上报
	 map.put("ids", ids);
	 
	 contractDao.updateState(map);
}


@Override
public void cancel(Serializable[] ids) {
	 Map map=new HashMap();
	 map.put("state",0);//0
	 map.put("ids", ids);
	 
	 contractDao.updateState(map);
}

下面我们直接来写Controller层,在ContractController中添加下面的方法:
//上报
@RequestMapping("/cargo/contract/submit.action")
public String submit(String[] id){
	contractService.submit(id);
	
	return "redirect:/cargo/contract/list.action";
}


//取消
@RequestMapping("/cargo/contract/cancel.action")
public String cancel(String[] id){
	contractService.cancel(id);
	
	return "redirect:/cargo/contract/list.action";
}

我们的购销合同列表中已经加入“上报”和“取消”的按钮:
<li id="new"><a href="#" onclick="formSubmit('submit.action','_self');this.blur();">上报</a></li>
<li id="new"><a href="#" onclick="formSubmit('cancel.action','_self');this.blur();">取消</a></li>

重启服务器我们来测试一下
点击上报,发现此条数据由“草稿”改为“已上报”

上报结果


同理反过来也是可以的


上报取消功能完成。
转载请注明出处:http://blog.csdn.net/acmman/article/details/48498037
相关文章
|
1月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
57 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
123 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
3月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
3月前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
|
3月前
|
JSON 前端开发 Java
Spring MVC返回JSON数据
综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。
167 4
|
3月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
122 3
下一篇
无影云桌面