SpringBoot+Vue实现前后端分离OA办公管理系统
文末獲取源碼
開發(fā)語言:Java
使用框架:spring boot
前端技術(shù):JavaScript、Vue.js 、css3
開發(fā)工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
數(shù)據(jù)庫(kù):MySQL 5.7/8.0
數(shù)據(jù)庫(kù)管理工具:phpstudy/Navicat
JDK版本:Java jdk8
Maven:apache-maven 3.8.1-bin
目錄
一、前言介紹
二、數(shù)據(jù)庫(kù)設(shè)計(jì)
2.1考勤統(tǒng)計(jì)E-R圖
2.2職員OA審批E-R圖
三、管理員功能模塊?
3.1系統(tǒng)登陸頁(yè)面
3.2職員用戶添加模塊
3.3職員考勤模塊
3.4職員任務(wù)管理模塊
3.5職員OA審批模塊
四、職員用戶模塊?
4.1通知公告模塊
4.2職員考勤模塊
五、部分核心代碼
5.1用戶管理關(guān)鍵代碼
5.2考勤信息管理關(guān)鍵代碼
5.3登錄關(guān)鍵代碼
一、前言介紹
一個(gè)企業(yè)實(shí)現(xiàn)辦公自動(dòng)化的程度是衡量其實(shí)現(xiàn)現(xiàn)代化管理的標(biāo)準(zhǔn)。辦公自動(dòng)化就是采用Internet技術(shù),基于工作流的概念,使企業(yè)內(nèi)部人員方便快捷地共享信息,高效協(xié)同工作。
OA辦公管理系統(tǒng)主要功能模塊包括管理員、職員用戶、管理層用戶、通知公告、職員考勤、管理層考勤、職員任務(wù)管理、管理層任務(wù)管理、職員OA審批、管理員OA審批、筆記心得等,采取面對(duì)對(duì)象的開發(fā)模式進(jìn)行軟件的開發(fā)和硬體的架設(shè),能很好的滿足實(shí)際使用的需求,完善了對(duì)應(yīng)的軟體架設(shè)以及程序編碼的工作,采取MySQL作為后臺(tái)數(shù)據(jù)的主要存儲(chǔ)單元,采用SringBoot框架、Java技術(shù)、Ajax技術(shù)進(jìn)行業(yè)務(wù)系統(tǒng)的編碼及其開發(fā),實(shí)現(xiàn)了本系統(tǒng)的全部功能。本次報(bào)告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎(chǔ)。針對(duì)OA辦公管理系統(tǒng)的各項(xiàng)需求以及技術(shù)問題進(jìn)行分析,證明了系統(tǒng)的必要性和技術(shù)可行性,然后對(duì)設(shè)計(jì)系統(tǒng)需要使用的技術(shù)軟件以及設(shè)計(jì)思想做了基本的介紹,最后來實(shí)現(xiàn)OA辦公管理系統(tǒng)和部署運(yùn)行使用它。
二、數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是整個(gè)軟件編程中最重要的一個(gè)步驟,對(duì)于數(shù)據(jù)庫(kù)問題主要是判定數(shù)據(jù)庫(kù)的數(shù)量和結(jié)構(gòu)公式的創(chuàng)建。展示系統(tǒng)使用的是Mysql進(jìn)行對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理,進(jìn)行保證數(shù)據(jù)的安全性、穩(wěn)定性等。
概念模型的設(shè)計(jì)是為了抽象真實(shí)世界的信息,并對(duì)信息世界進(jìn)行建模。它是數(shù)據(jù)庫(kù)設(shè)計(jì)的強(qiáng)大工具。數(shù)據(jù)庫(kù)概念模型設(shè)計(jì)可以通過E-R圖描述現(xiàn)實(shí)世界的概念模型。系統(tǒng)的E-R圖顯示了系統(tǒng)中實(shí)體之間的鏈接。而且Mysql數(shù)據(jù)庫(kù)是自我保護(hù)能力比較強(qiáng)的數(shù)據(jù)庫(kù),下圖主要是對(duì)數(shù)據(jù)庫(kù)實(shí)體的E-R圖:
2.1考勤統(tǒng)計(jì)E-R圖
2.2職員OA審批E-R圖
三、管理員功能模塊?
3.1系統(tǒng)登陸頁(yè)面
3.2職員用戶添加模塊
3.3職員考勤模塊
3.4職員任務(wù)管理模塊
3.5職員OA審批模塊
四、職員用戶模塊?
4.1通知公告模塊
4.2職員考勤模塊
五、部分核心代碼
5.1用戶管理關(guān)鍵代碼
@RequestMapping(value = "/del")@Transactionalpublic Map<String, Object> del(HttpServletRequest request) {service.delete(service.readQuery(request), service.readConfig(request));return success(1);}5.2考勤信息管理關(guān)鍵代碼
@PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {service.insert(service.readBody(request.getReader()));return success(1);}@Transactionalpublic Map<String, Object> addMap(Map<String,Object> map){service.insert(map);return success(1);}5.3登錄關(guān)鍵代碼
/*** 登錄* @param data* @param httpServletRequest* @return*/@PostMapping("login")public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {log.info("[執(zhí)行登錄接口]");String username = data.get("username");String email = data.get("email");String phone = data.get("phone");String password = data.get("password");List resultList = null;QueryWrapper wrapper = new QueryWrapper<User>();Map<String, String> map = new HashMap<>();if(username != null && "".equals(username) == false){map.put("username", username);resultList = service.selectBaseList(service.select(map, new HashMap<>()));}else if(email != null && "".equals(email) == false){map.put("email", email);resultList = service.selectBaseList(service.select(map, new HashMap<>()));}else if(phone != null && "".equals(phone) == false){map.put("phone", phone);resultList = service.selectBaseList(service.select(map, new HashMap<>()));}else{return error(30000, "賬號(hào)或密碼不能為空");}if (resultList == null || password == null) {return error(30000, "賬號(hào)或密碼不能為空");}//判斷是否有這個(gè)用戶if (resultList.size()<=0){return error(30000,"用戶不存在");}User byUsername = (User) resultList.get(0);Map<String, String> groupMap = new HashMap<>();groupMap.put("name",byUsername.getUserGroup());List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));if (groupList.size()<1){return error(30000,"用戶組不存在");}UserGroup userGroup = (UserGroup) groupList.get(0);//查詢用戶審核狀態(tài)if (!StringUtils.isEmpty(userGroup.getSourceTable())){String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());if (res==null){return error(30000,"用戶不存在");}if (!res.equals("已通過")){return error(30000,"該用戶審核未通過");}}//查詢用戶狀態(tài)if (byUsername.getState()!=1){return error(30000,"用戶非可用狀態(tài),不能登錄");}String md5password = service.encryption(password);if (byUsername.getPassword().equals(md5password)) {// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)AccessToken accessToken = new AccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);// 返回用戶信息JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token", accessToken.getToken());JSONObject ret = new JSONObject();ret.put("obj",user);return success(ret);} else {return error(30000, "賬號(hào)或密碼不正確");}}public String select(Map<String,String> query,Map<String,String> config){StringBuffer sql = new StringBuffer("select ");sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");}if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");}if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);}log.info("[{}] - 查詢操作,sql: {}",table,sql);return sql.toString();}public List selectBaseList(String select) {List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);List<E> list = new ArrayList<>();for (Map<String,Object> map:mapList) {list.add(JSON.parseObject(JSON.toJSONString(map),eClass));}return list;}總結(jié)
以上是生活随笔為你收集整理的SpringBoot+Vue实现前后端分离OA办公管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《变量:大国的腾挪》摘记
- 下一篇: ABCD类网络地址