基于javaweb+mysql的springboot客户管理系统(java+springboot+jsp+layui+jq+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot客户管理系统(java+springboot+jsp+layui+jq+mysql)
项目介绍
本项目为后管系统,主要功能包括:
登录、修改密码、客户模块、充值模块、消费模块、对账单模块等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
-
后端:SpringBoot+Mybatis
-
前端:JSP+LayUI+jQuery
使用说明
-
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
-
使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
- 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 修改logback-spring.xml文件中,第16行 5. 运行项目,输入http://localhost:8081/ 登录
*/
@Operation(name="后台查找其他客户经理角色")
@RequiresAuthentication
@RequestMapping("/findOthersManager")
@ResponseBody
public Map<String, Object> findOthersManager(HttpServletRequest request){
Map<String, Object> map = new HashMap<String, Object>(16);
boolean success = false;
//获取当前登录用户
User user = (User)request.getSession().getAttribute("user");
//创建用户模块
UserExample userExample = new UserExample();
maps.put("code", 0);
//账号被锁定
} catch(LockedAccountException e){
maps.put("code",200);
maps.put("msg","账号已被锁定,请联系管理员进行处理!");
//不存在的账号
} catch(UnknownAccountException e) {
maps.put("code",200);
maps.put("msg","账号或密码错误!");
//密码错误
@RequiresAuthentication
@RequestMapping("/findOthersManager")
@ResponseBody
public Map<String, Object> findOthersManager(HttpServletRequest request){
Map<String, Object> map = new HashMap<String, Object>(16);
boolean success = false;
//获取当前登录用户
User user = (User)request.getSession().getAttribute("user");
//创建用户模块
UserExample userExample = new UserExample();
user = (User)session.getAttribute("user");
return user;
/**
* 描述:分页查询客户
* @version 1.0
* @param page 可选参数,查询的页数,默认值 1
* @param limit 可选参数,分页的大小,默认值 10
* @param customer 可选参数,查询的条件
if(customerService.insertSelective(customer,linkman)) {
map.put("msg", "添加成功");
map.put("success", true);
}else {
map.put("msg", "添加失败");
map.put("success", false);
return map;
@RequiresPermissions("7009")
@Operation(name="检测客户名称是否存在")
@RequestMapping("checkname")
@ResponseBody
public boolean checkCustomerName(String name){
CustomerExample example = new CustomerExample();
* @exception Nothing
* @since 1.8
*/
@Operation(name="注销")
@RequestMapping("/logout")
public ModelAndView logout(HttpServletRequest request) {
ModelAndView view = new ModelAndView();
//获取shiro中的用户
Subject subject = SecurityUtils.getSubject();
//获取用户账号信息
String account = (String) subject.getPrincipal();
if(account != null) {
return maps;
//2.判断用户账号密码
Subject subject = SecurityUtils.getSubject();
System.err.println("==============================" +subject.isAuthenticated());
//判断用户是否已经登陆
if(!subject.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(),user.getPassword());
try {
subject.login(token);
//验证成功
//登陆成功后的用户账号信息
String account = (String)subject.getPrincipal();
//新创建对象用来更新user的最后一次登录时间
User updateUser = new User();
updateUser.setId(loginUser.getId());
updateUser.setLastLoginTime(now);
userService.edit(updateUser);
request.getSession().setAttribute("user", loginUser);
logger.info("登陆的用户信息:" + loginUser.toString());
request.getSession().setAttribute("user", loginUser);
maps.put("code", 0);
//账号被锁定
} catch(LockedAccountException e){
@Operation(name="分页查询客户")
@RequestMapping("list")
@ResponseBody
public Map<String, Object> listCustomer(Integer page,Integer limit,Customer customer,String findtype,HttpServletRequest request){
Map<String, Object> map = new HashMap<String,Object>(16);
//获取用户
user = this.getUser(request);
//检验用户正确性
if(user == null || user.getId() == null) {
map.put("code", -1);
map.put("msg", "用户不存在,无法执行操作.");
map.put("success", success);
map.put("code", 0);
return map;
/**
* 描述:检查用户邮箱是否可用
* @version 1.0
* @param email
* @return Map<String,Object>
* @exception Nothing
* @since 1.8
example.setLimit(limit);
Long offset = new Long((page-1)*limit);
example.setOffset(offset);
//设置管理者ID
criteria.andManagerIdEqualTo(user.getId());
//只查询未删除的客户
criteria.andDeleteStatusEqualTo(0);
System.out.println(customer);
//检测属性是否存在,存在则进行条件查询
if(customer != null) {
if(customer.getName() != null) {
criteria.andNameLike("%" + customer.getName() + "%");
System.err.println("==============================" +subject.isAuthenticated());
//判断用户是否已经登陆
if(!subject.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(),user.getPassword());
try {
subject.login(token);
//验证成功
//登陆成功后的用户账号信息
String account = (String)subject.getPrincipal();
//根据用户账号,查询用户,并保存到session域中
User loginUser = userService.findByAccount(account);
LocalDateTime now = LocalDateTime.now();
//如果上次登陆的时间为空,则说明这次是首次登陆,前台应该跳转到修改密码界面
Map<String, Object> map = new HashMap<String, Object>(16);
boolean success = false;
String msg = "";
User user = userService.findById(id);
if(user != null){
user.setPassword(null);
user.setSalt(null);
success = true;
}else{
msg = "读取用户数据出错,请稍后再试!";
map.put("success", success);
map.put("user", user);
map.put("msg",msg);
}else {
maps.put("code", 0);
return maps;
/**
* 描述:
* @version 1.0
* @param request request请求
* @return ModelAndView
* @exception Nothing
if(customer.getCredit() != null && !"".equals(customer.getCredit())) {
criteria.andCreditEqualTo(customer.getCredit());
if(customer.getMaturity() != null && !"".equals(customer.getMaturity())) {
criteria.andMaturityEqualTo(customer.getMaturity());
Long count = customerService.countByCustomerExample(example);
List<Customer> customers = customerService.selectByCustomerExample(example);
map.put("data", customers);
map.put("count", count);
map.put("code", 0);
return map;
List<Customer> customers = customerService.selectByCustomerExample(example);
map.put("data", customers);
map.put("count", count);
map.put("code", 0);
return map;
/**
* 描述:添加一个客户
* @version 1.0
* @param customer 客户信息
* @param linkman 联系人信息
//检测客户名是否存在
if(customerName == null || "".equals(customerName)) {
map.put("msg", "用户名称参数不能为空");
map.put("success", false);
return map;
//检测联系人姓名是否存在
if(linkmanName == null || "".equals(linkmanName)) {
map.put("msg", "联系人名称参数不能为空");
map.put("success", false);
return map;
//客户所属者默认为创建者
customer.setManagerId(user.getId());
return map;
@RequiresPermissions("7009")
@Operation(name="检测客户名称是否存在")
@RequestMapping("checkname")
@ResponseBody
public boolean checkCustomerName(String name){
CustomerExample example = new CustomerExample();
example.createCriteria().andNameEqualTo(name);
List<Customer> list = customerService.selectByCustomerExample(example);
if(list.size()>0) {
return true;
return false;
@RequiresPermissions("5003")
@Operation(name="更新客户信息")