最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 實戰(zhàn)項目之CRM客戶管理系統(tǒng)的實現(xiàn)流程

 更新時間:2021年11月15日 14:59:27   作者:qq_1334611189  
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)一個CRM客戶管理系統(tǒng),大家可以在過程中查缺補漏,提升水平

一、項目簡述

功能包括: 用戶管理,系統(tǒng)管理,客戶管理,客戶服務,客戶關懷, 銷售機會,統(tǒng)計管理等等。

二、項目運行

環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

項目技術: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

員工操作:

/**
 * @author 員工操作
 */
@RestController
@RequestMapping("/employee")
@CrossOrigin
@Slf4j
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
    @Autowired
    private DepartmentService departmentService;
    @Autowired
    private JobService jobService;
    @Autowired
    private EduLevelMapper eduLevelMapper;
    @Autowired
    private EmployeeMapper employeeMapper;
    /**
     * 搜索接口
     */
    @GetMapping("/search")
    public Result search(@RequestParam(name = "name", required = false,defaultValue = "") String name,
                         @RequestParam(name = "current", required = false, defaultValue = "1") Integer current,
                         @RequestParam(name = "size", required = false, defaultValue = "10") Integer size) {
        return employeeService.list(current, size, name);
    }
 
    /**
     * 分頁查詢接口
     *
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/list")
    public Result list(@RequestParam(name = "current", required = false, defaultValue = "1") Integer current,
                       @RequestParam(name = "size", required = false, defaultValue = "10") Integer size) {
        return employeeService.list(current, size, null);
    }
 
    /**
     * 根據(jù)id獲取員工具體信息
     * @param id
     * @return
     */
    @GetMapping("/getUserById")
    public EmployeeDTO getUserAllInfoById(@RequestParam(name = "id") Integer id) {
        return employeeService.getUserById(id);
    }
 
    /**
     * 根據(jù)員工獲取信息
     * @param id
     * @return
     */
    @GetMapping("/getEmployeeById")
    public Employee getUserById(@RequestParam(name = "id") Integer id) {
        return employeeMapper.selectById(id);
    }
    /**
     * 增加員工接口
     *
     * @param employee
     * @return
     */
    @PostMapping("/add")
    public Map<String, Object> addUser(@RequestBody Employee employee) {
        log.info(employee.toString());
        return employeeService.add(employee);
    }
 
    /**
     * 更新用戶
     * @param employee
     * @return
     */
    @PostMapping("/update")
    public Map<String, Object> updateUser(@RequestBody Employee employee) {
        log.info(employee.toString());
        return employeeService.update(employee);
    }
 
    /**
     * 刪除用戶
     * @param id
     * @return
     */
    @GetMapping("/delete")
    public Result deleteEmployeeById(@RequestParam(name = "id") Integer id) {
        return employeeService.deleteEmployeeById(id);
    }
 
    /**
     * 辭退員工
     *
     * @param id
     * @return
     */
    @GetMapping("/dismiss")
    public Map<String, Object> dismissEmployeeById(@RequestParam(name = "id") Integer id) {
        return employeeService.dismissEmployeeById(id);
    }
 
    /**
     * 得到所以工作,部門,學歷信息
     *
     * @return
     */
    @GetMapping("/otherInfo")
    public Result getAllOtherInfo() {
        Map<String, Object> info = new HashMap<>();
        info.put("departments", departmentService.selectAll());
        info.put("jobs", jobService.selectAll());
        info.put("eduLevels", eduLevelMapper.selectList(null));
        return Result.success(info);
    }
 
    @GetMapping("/map")
    public Result getMap() {
        return employeeService.getMap();
    }
}

人事管理相關接口:

/**
 * 人事管理相關接口
 */
@RestController
@CrossOrigin
@RequestMapping("/personnel")
public class PersonnelController {
    @Autowired
    private PersonnelService personnelService;
 
    /**
     * 所以人事記錄接口
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/list")
    public Result list(@RequestParam(name = "current", required = false, defaultValue = "1") Integer current,
                       @RequestParam(name = "size", required = false, defaultValue = "10") Integer size) {
        return personnelService.list(current, size);
    }
 
 
}

服務端:

/**
 * websocket 服務端
 * 注意: websocket 不能被代理,還有下面幾個注解修飾的方法必須是public的
 */
 
@Component
@ServerEndpoint("/websocket/login")
@Slf4j
public class WebSocketServer {
//    static Log log = LogFactory.get(WebSocketServer.class);
    /**
     * 記錄連接數(shù)量
     */
    private static int onlineCount = 0;
    /**
     * juc中的線程安全容器
     */
    private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<>();
    /**
     * 存放websocket 中的會話
     */
    private Session session;
 
    /**
     * 連接建立成功調用的方法
     */
    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        webSocketSet.add(this);
        addOnlineCount();
        log.info("新增一個websocket連接,現(xiàn)在連接數(shù)" + getOnlineCount());
    }
 
    /**
     * websocket 連接斷開調用的方法
     */
    @OnClose
    public void onClose() {
        webSocketSet.remove(this);
        subOnlineCount();
        log.info("斷開websocket一個連接,現(xiàn)在連接數(shù):" + getOnlineCount());
    }
 
    /**
     * 收到消息調用此方法
     *
     * @param message
     * @param session
     */
    @OnMessage
    public void onMessage(String message, Session session) {
        log.info("websocket 收到消息了: " + message);
        try {
            sendInfo("hello, too!!!", "text");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 發(fā)生錯誤調用的方法
     *
     * @param session
     * @param throwable
     */
    @OnError
    public void onError(Session session, Throwable throwable) {
        log.error("發(fā)送錯誤,  ");
        throwable.printStackTrace();
    }
 
    /**
     * 實現(xiàn)主動推送消息到客戶端
     */
    public void sendMessage(String message) throws IOException {
        if (session != null) {
            this.session.getBasicRemote().sendText(message);
        } else {
            log.info("session為空");
        }
    }
 
    public static void sendInfo(Object message, String type) throws IOException {
        log.info("推送消息到窗口,推送內容:" + message);
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("type", type);
        resultMap.put("message", message);
        JSONObject jsonObject = JSONUtil.parseObj(resultMap);
        for (WebSocketServer item : webSocketSet) {
            try {
                //這里可以設定只推送給這個sid的,為null則全部推送
                item.sendMessage(jsonObject.toString());
            } catch (IOException e) {
                continue;
            }
        }
    }
 
    public static synchronized int getOnlineCount() {
        return onlineCount;
    }
 
    public static synchronized void addOnlineCount() {
        WebSocketServer.onlineCount++;
    }
 
    public static synchronized void subOnlineCount() {
        WebSocketServer.onlineCount--;
    }
}

以上就是Java 實戰(zhàn)項目之CRM客戶管理系統(tǒng)的實現(xiàn)流程的詳細內容,更多關于Java CRM客戶管理系統(tǒng)的資料請關注腳本之家其它相關文章!

相關文章

  • MyBatisPlus的autoResultMap生成策略實現(xiàn)

    MyBatisPlus的autoResultMap生成策略實現(xiàn)

    本文主要介紹了MyBatisPlus的autoResultMap生成策略實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • Java中&&與?表達式結合時出現(xiàn)的坑

    Java中&&與?表達式結合時出現(xiàn)的坑

    這篇文章主要給大家介紹了關于Java中&&與?表達式結合時出現(xiàn)的坑的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02
  • java實現(xiàn)短地址服務的方法(附代碼)

    java實現(xiàn)短地址服務的方法(附代碼)

    大多數(shù)情況下URL太長,字符多,不便于發(fā)布復制和存儲,本文就介紹了通過java實現(xiàn)短地址服務,減少了許多使用太長URL帶來的不便,需要的朋友可以參考下
    2015-07-07
  • mybatis如何使用注解實現(xiàn)一對多關聯(lián)查詢

    mybatis如何使用注解實現(xiàn)一對多關聯(lián)查詢

    這篇文章主要介紹了mybatis如何使用注解實現(xiàn)一對多關聯(lián)查詢的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringCloud微服務熔斷器使用詳解

    SpringCloud微服務熔斷器使用詳解

    這篇文章主要介紹了Spring Cloud Hyxtrix的基本使用,它是Spring Cloud中集成的一個組件,在整個生態(tài)中主要為我們提供服務隔離,服務熔斷,服務降級功能,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Spring獲取管理對象常用方法詳解

    Spring獲取管理對象常用方法詳解

    這篇文章主要介紹了Spring獲取管理對象常用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • JavaCV簡介與環(huán)境搭建詳細步驟

    JavaCV簡介與環(huán)境搭建詳細步驟

    JavaCV是一個開源的Java接口,它為幾個著名的計算機視覺庫(如OpenCV、FFmpeg)提供了Java封裝,這篇文章主要給大家介紹了關于JavaCV簡介與環(huán)境搭建的相關資料,需要的朋友可以參考下
    2024-04-04
  • Java?Lambda表達式語法及用法示例

    Java?Lambda表達式語法及用法示例

    這篇文章主要給大家介紹了關于Java?Lambda表達式語法及用法的相關資料,lambda表達式是JAVA8中提供的一種新的特性,它支持Java也能進行簡單的"函數(shù)式編程",文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • spring?cloud?使用oauth2?問題匯總

    spring?cloud?使用oauth2?問題匯總

    這篇文章主要介紹了spring?cloud?使用oauth2?問題匯總,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • java并發(fā)編程之ThreadLocal詳解

    java并發(fā)編程之ThreadLocal詳解

    在鎖的使用中會導致運行效率降低,ThreadLocal的使用徹底避免對共享資源的競爭,同時又可以不影響效率。本文詳細講解了ThreadLocal,需要了解的小伙伴可以看一看這篇文章
    2021-08-08

最新評論

和田市| 临夏县| 绥芬河市| 微山县| 平遥县| 三台县| 固原市| 颍上县| 连平县| 冕宁县| 屯留县| 正定县| 随州市| 北流市| 安岳县| 井研县| 昂仁县| 卓尼县| 老河口市| 湖北省| 北海市| 增城市| 德保县| 望江县| 象山县| 平泉县| 丰镇市| 哈巴河县| 阿图什市| 洛宁县| 东丰县| 巴马| 会理县| 新乡县| 商南县| 齐河县| 闻喜县| 广东省| 女性| 花垣县| 佛教|