Java项目实战II基于SpringBoot的客户关系管理系统(开发文档+数据库+源码)

目录

一、前言

二、技术介绍

三、系统实现

四、核心代码

五、源码获取


全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末

一、前言

在当今商业环境中,客户是企业生存和发展的核心资源。如何有效管理客户关系,提升客户满意度和忠诚度,已成为企业面临的重大挑战。为应对这一挑战,我们研发了一款基于SpringBoot的客户关系管理系统。

该系统集成了客户信息管理、销售跟踪、客户服务、数据分析与报告生成等核心功能,旨在为企业提供全方位、一站式的客户关系管理解决方案。借助SpringBoot框架的轻量级、高性能和易用性,我们实现了系统的快速部署和灵活扩展,确保企业能够高效、精准地管理客户关系,提升市场竞争力。

我们相信,这款客户关系管理系统的推出,将为企业提供一个更加智能、高效的客户关系管理平台,助力企业在激烈的市场竞争中脱颖而出,实现可持续发展。未来,我们将继续优化系统功能,引入更多创新技术,为企业创造更大的价值。

二、技术介绍

语言:Java

使用框架:Spring Boot

前端技术:JS、Vue 、css3

开发工具:IDEA/Eclipse

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:jdk1.8

Maven: apache-maven 3.8.1-bin

前端环境:Node.Js 12\14\16

三、系统实现

功能截图

管理员登录,通过填写用户名、密码、角色进行登录

主管管理,在主管管理页面中可以通过查看账号、姓名、性别、部门、职务、手机、邮箱、头像进行详情、修改或者删除

经理管理,在经理管理页面中可以通过查看账号、姓名、性别、部门、职务、手机、邮箱、头像进行详情、修改或者删除

员工管理,在员工管理页面中可以通过查看账号、姓名、性别、部门、职务、手机、邮箱、头像进行详情、修改或者删除

外出拜访申请管理,在外出拜访申请管理页面中可以查看客户名称、外出开始时间、外出结束时间、员工账号、审核回复、审核状态、是否审核等内容,并且根据需要对外出拜访申请管理进行详情、修改或删除等详细操作

客户资料管理,在客户资料管理页面中可以查看客户名称、销售顾问、客户来源、客户等级、客户所处阶段、最近联系时间、客户联系人、头像等内容,并且根据需要对客户资料管理进行详情、修改或删除等详细操作

客户投诉管理,在客户投诉管理页面中可以查看客户名称、投诉标题、投诉时间、审核回复、审核状态、审核等内容,并且根据需要对客户投诉管理进行详情、修改或删除等详细操作

四、核心代码

复制代码
package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

五、源码获取

感谢大家点赞、收藏、关注、评论 啦 、获取联系方式在个人简介绿泡泡

相关推荐
NCIN EXPE2 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台2 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
lUie INGA2 小时前
在2023idea中如何创建SpringBoot
java·spring boot·后端
极客on之路2 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家2 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE2 小时前
开启mysql的binlog日志
数据库·mysql
小糖学代码2 小时前
LLM系列:1.python入门:15.JSON 数据处理与操作
开发语言·python·json·aigc
yejqvow122 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
handler012 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
oLLI PILO2 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库