复习
List<Employee> selectByRoleSn(String... sn); 可变参数,可以直接传多个字符串,不用new出一个数组
@DataFormatTime注解:
不能直接取日期对象,需要设置格式化提交请求,传的参数带有日期类型的参数,需要在后台贴DataFormatTime注解,贴在controller接收日期的形参上-
回显表单name为对象.字段的,选择器选择需要加引号
mapper报错注释问题(如mapper文件中没有写入参数类型parameterType):
- 首先检查自己的mapper.xml文件中是否存在注释?xml文件中的注释不能是 /**/,要不然就会报出上面的错误信息,只能以<!开头,和 > 结尾
- 其次就是检查自己的sql语句是否写的有问题或者映射的实体类属性是否与sql查询的字段一致
一、客户管理需求
潜在客户页面
人员关系
客户状态status
- 潜在客户0(还没购买产品) 添加客户时,默认设置为潜在客户的状态
- 正式客户1(已经购买产品)
- 开发失败客户2(已经没有意向购买的客户)
- 流失客户3(已经购买产品,但是需要退货退款)
- 客户池状态4
对于处理客户池的客户有两种方法:
1.吸纳:其实就是自行领取,如果你觉得你有能力跟进该客户,可吸纳到自己名下,变公有为私有,领取的客户将会出现在自己的客户列表里面,客户池里不会再显示这条数据
2.移交:其实就是分配功能,是管理员或者经理才能使用的功能,可直接安排分配给指定人员进行跟进,效果和吸纳一样
1. 潜在客户页面只查询状态为潜在客户的数据
设置查询条件为潜在客户:
qo.setStatus(Customer.STATUS_COMMON);
2. 潜在客户页面按照录入时间倒序排序
PageHelper分页插件传入orderBy参数:
PageHelper.startPage(qo.getCurrentPage(),qo.getPageSize(),"input_time desc"); //对下一句sql进行自动分页
3. 普通销售员登录进来只能看到自己的客户,看不到别人的客户,管理员或者市场经理才可以看所有
// 角色判断,普通销售员登录进来只能看到自己的客户,看不到别人的客户,管理员或者市场经理才可以看
Subject subject = SecurityUtils.getSubject();
// 排除管理员和市场经理
if(!(subject.hasRole("ADMIN") || subject.hasRole("Market_Manager"))) {
// 获取到当前用户
Employee employee = (Employee) subject.getPrincipal();
// 根据当前员工id查询所有跟进的客户
qo.setSellerId(employee.getId());
}
4. 销售人员下拉框,只有管理员或者市场经理才可以使用
<#-- 销售人员下拉框,只有管理员或者市场经理才可以使用 -->
<@shiro.hasAnyRoles name="ADMIN,Market_Manager">
...
</@shiro.hasAnyRoles>
5. 销售人员下拉框,只查询带有市场专员和市场经理角色的员工
// 3.销售人员下拉框,根据角色编码查询拥有该角色的员工 "Market_Manager", "Market"
List<Employee> sellers = employeeService.selectByRoleSn("Market", "Market_Manager");
model.addAttribute("sellers", sellers);
其他注意事项
以下4个字段,由后台自动去设置,不在模态框中操作,添加时需自动设置,编辑时注解丢失问题
添加一一个客户,销售人员,录入人就是当前登录用户,录入时间,设置为当前时间new Date ( )
销售人员private Employee seller;
录入人private Employee inputUser ;
录入时间private Date inputTime;
状态private Integer status = STATUS_ COMMON;