前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >好好编程-物流项目17【客户管理-新增客户】

好好编程-物流项目17【客户管理-新增客户】

作者头像
用户4919348
发布2019-04-02 10:49:20
7150
发布2019-04-02 10:49:20
举报
文章被收录于专栏:波波烤鸭波波烤鸭

客户管理

  本文来介绍下客户管理。不同角色对客户的操作不同,规则如下

序号

规则

1

业务员和操作员都可以手动录入客户的信息,并对客户信息进行管理

2

需要指定一个默认的货运区间,以后每次针对该客户下单,选择该货运区间作为默认的货运区间,同时也可以手动修改为其它的货运区间。

3

需要指定一个业务员,以后该客户的所有业务,都默认由该业务员进行处理。

4

业务员只能管理属于自己的客户。

5

操作员可以管理所有的客户。

6

管理员可以为客户重新指定新的业务员。

  创建对应的测试账号如下:

序号

账号

分配角色

1

ywy

业务员

2

ywy1

业务员

3

czy

操作员

4

admin

管理员

在这里插入图片描述
在这里插入图片描述

新增客户

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>
在这里插入图片描述
在这里插入图片描述

index.jsp中显示当前登录账号信息

在这里插入图片描述
在这里插入图片描述

简单测试: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);
	}
}
  1. 查询所有具有业务员角色的用户信息 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>
  1. 查询 常用区间的基础数据 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层处理

@Controller
@RequestMapping("/customer")
public class CustomerController {
	@Resource
	private ICustomerService customerService;

	@RequestMapping("/customerUpdate")
	public String customerUpdate(Integer id,Model model){
		customerService.getUpdateInfo(id, model);
		return "customer/customerUpdate";
	}
}

3.页面处理

添加页面效果

在这里插入图片描述
在这里插入图片描述

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>&nbsp;男 
					<input type="radio" name="cSex" value="1">&nbsp;女
				</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>&nbsp;</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";
}

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加成功

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 客户管理
    • 新增客户
      • 1.控制操作权限
      • 2.服务器逻辑
      • 3.页面处理
      • 4.保存数据
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档