客户管理
本文来介绍下客户管理。不同角色对客户的操作不同,规则如下
创建对应的测试账号如下:
新增客户
1.控制操作权限
通过上面的规则理解我们发现,能够操作新增客户的角色有业务员和操作员,而管理员可以操作修改客户的业务员。这样能够看到“新增客户”菜单按钮的就只能是具有“业务员”和“操作员”角色的用户。所以如下设置。
left.jsp
<%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %> <shiro:hasAnyRoles name="业务员,操作员"> <li><cite></cite><a href="/customer/customerUpdate" target="rightFrame">新增客户</a><i></i></li> </shiro:hasAnyRoles>
简单测试:admin登录看不到"新增客户"菜单:ywy账号登录可以看到:
2.服务器逻辑
定义常量类
/** * 常量工具类 * @author 波波烤鸭 * * dengpbs@163.com */ public class Constant { public static final String ROLE_SALESMAN = "业务员"; public static final String ROLE_OPERATOR = "操作员"; public static final String ROLE_ADMIN = "管理员"; public static final String BASIC_COMMON_INTERVAL = "常用区间"; }
service层处理
ICustomerService定义
public interface ICustomerService { /** * 查询更新或者添加需要的信息 */ public void getUpdateInfo(Integer id,Model m); }
CustomerServiceImpl中实现
@Service public class CustomerServiceImpl implements ICustomerService { @Resource private CustomerMapper customerMapper; @Resource private IUserService userService; @Resource private IBasicService basicService; /** * 新增客户 * 查询 所有的角色是业务员的用户 * 查询 常用区间 基础数据 * 修改客户 * 查询 所有的角色是业务员的用户 * 查询 常用区间 基础数据 * 根据客户ID 查询详细信息 */ @Override public void getUpdateInfo(Integer id, Model m) { // 1.查询所有具有业务员角色的用户信息 List<User> users = userService.queryUserByRoleName(Constant.ROLE_SALESMAN); // 2.查询 常用区间的基础数据 List<BasicData> intervals = basicService.getBasicDataByParentName(Constant.BASIC_COMMON_INTERVAL); if(id!=null && id > 0){ // 查询更新需要的数据 Customer customer = customerMapper.selectByPrimaryKey(id); m.addAttribute("customer", customer); } m.addAttribute("users", users); m.addAttribute("intervals", intervals); } }
查询所有具有业务员角色的用户信息
IUserService接口
/** * 根据角色名称查询对应的用户信息 * @param roleName * @return */ public List<User> queryUserByRoleName(String roleName);
UserServiceImpl实现
@Override public List<User> queryUserByRoleName(String roleName) { return userMapper.queryUserByRoleName(roleName); }
UserMapper接口定义
List<User> queryUserByRoleName(String roleName);
UserMapper.xml中实现
<select id="queryUserByRoleName" resultMap="BaseResultMap"> select * from t_user where user_id in ( select user_id from t_user_role where role_id = ( select role_id from t_role where role_name = #{param1} ) ) </select>
查询 常用区间的基础数据
IBasicService定义
/** * 根据大类名称查询对应的小类 * @param parentName * @return */ public List<BasicData> getBasicDataByParentName(String parentName);
实现
/** * 根据大类名称 查询该大类所属的所有的小类 */ @Override public List<BasicData> getBasicDataByParentName(String basicCommonInterval) { return basicMapper.getBasicDataByParentName(basicCommonInterval); }
BasicDataMapper接口
List<BasicData> getBasicDataByParentName(String basicCommonInterval);
BasicDataMapper.xml
<select id="getBasicDataByParentName" resultMap="BaseResultMap"> select * from t_basicdata where parent_id in ( select base_id from t_basicdata where base_name = #{param1} ) </select>
controller层处理
添加页面效果
jsp页面内容:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <link href="/css/style.css" rel="stylesheet" type="text/css" /> <link href="/css/select.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/js/jquery.js"></script> <script type="text/javascript" src="/js/jquery.idTabs.min.js"></script> <script type="text/javascript" src="/js/select-ui.min.js"></script> <script type="text/javascript"> $(document).ready(function(e) { $(".select1").uedSelect({ width : 345 }); $(".select2").uedSelect({ width : 167 }); $(".select3").uedSelect({ width : 100 }); }); </script> </head> <body> <div class="place"> <span>位置:</span> <ul class="placeul"> <li><a href="/">首页</a></li> <li><a href="/user/query">客户管理</a></li> </ul> </div> <div class="formbody"> <div class="formtitle"> <span>新增客户信息</span> </div> <form action="/customer/saveOrUpdate"> <ul class="forminfo"> <li><label>客户姓名</label> <input name="customerName" type="text" class="dfinput" /> <i></i> </li> <li><label>客户电话</label> <input name="mobilePhone" type="text" class="dfinput" /> </li> <li><label>性别</label> <input type="radio" name="cSex" value="0" checked> 男 <input type="radio" name="cSex" value="1"> 女 </li> <li><label>电子邮箱</label> <input name="email" type="text" class="dfinput" /><i></i> </li> <li><label>通讯地址</label> <input name="address" type="text" class="dfinput" /><i></i> </li> <li><label>身份证号码</label> <input name="idCard" type="text" class="dfinput" /><i></i> </li> <li><label>业务员</label> <div class="vocation"> <select class="select1" name="userId"> <c:forEach items="${ users}" var="user"> <option value="${user.userId }" > ${user.realName } </option> </c:forEach> </select> </div> <i></i> </li> <li><label>常用区间</label> <div class="vocation"> <select class="select1" name="baseId"> <c:forEach items="${ intervals}" var="interval"> <option value="${interval.baseId }" > ${interval.baseName } </option> </c:forEach> </select> </div> <i></i> </li> <li><label>备注</label> <textarea name="remark" cols="" rows="" class="textinput"></textarea> </li> <li><label> </label> <input name="" type="submit" class="btn" value="确认保存" /></li> </ul> </form> </div> <div style="display: none"> <script src='http://v7.cnzz.com/stat.php?id=155540&web_id=155540' language='JavaScript' charset='gb2312'></script> </div> </body> </html>
4.保存数据
提交数据保存
service层
public void addCustomer(Customer customer);
service实现
@Override public void addCustomer(Customer customer) { customerMapper.insertSelective(customer); }
controller
@RequestMapping("/saveOrUpdate") public String saveOrUpdate(Customer customer) throws IOException{ if(customer.getCustomerId()!=null && !"".equals(customer.getCustomerId())){ // 更新 }else{ // 添加 customerService.addCustomer(customer); } return "success"; }
测试
在这里插入图片描述描述