文末获取源码
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue.js 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:Java jdk8
Maven:apache-maven 3.8.1-bin
目录
一个企业实现办公自动化的程度是衡量其实现现代化管理的标准。办公自动化就是采用Internet技术,基于工作流的概念,使企业内部人员方便快捷地共享信息,高效协同工作。
OA办公管理系统主要功能模块包括管理员、职员用户、管理层用户、通知公告、职员考勤、管理层考勤、职员任务管理、管理层任务管理、职员OA审批、管理员OA审批、笔记心得等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用SringBoot框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对OA办公管理系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现OA办公管理系统和部署运行使用它。
数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。展示系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。
概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图:
- @RequestMapping(value = "/del")
-
- @Transactional
-
- public Map
del(HttpServletRequest request) { -
- service.delete(service.readQuery(request), service.readConfig(request));
-
- return success(1);
-
- }
- @PostMapping("/add")
-
- @Transactional
-
- public Map<String, Object> add(HttpServletRequest request) throws IOException {
-
- service.insert(service.readBody(request.getReader()));
-
- return success(1);
-
- }
-
- @Transactional
-
- public Map<String, Object> addMap(Map<String,Object> map){
-
- service.insert(map);
-
- return success(1);
-
- }
- /**
-
- * 登录
- * @param data
- * @param httpServletRequest
- * @return
- */
- @PostMapping("login")
-
- public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
-
- log.info("[执行登录接口]");
-
- 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, "账号或密码不能为空");
-
- }
-
- if (resultList == null || password == null) {
-
- return error(30000, "账号或密码不能为空");
-
- }
-
- //判断是否有这个用户
-
- 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);
-
- //查询用户审核状态
-
- 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,"该用户审核未通过");
-
- }
-
- }
-
- //查询用户状态
-
- if (byUsername.getState()!=1){
-
- return error(30000,"用户非可用状态,不能登录");
-
- }
-
- String md5password = service.encryption(password);
-
- if (byUsername.getPassword().equals(md5password)) {
-
- // 存储Token到数据库
-
- 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, "账号或密码不正确");
-
- }
-
- }
-
- 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;
-
- }