EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建

数据库设计

创建数据库 字符集 utf8 排序规则 utf8_bin

EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建_第1张图片
创建数据库

表名 eoa_user 描述:用户基本信息表
序号 字段名 字段类型 备注
1 id int(11) id 主 无意义
2 username varchar(30) 用户名
3 password varchar(80) 用户密码
4 regtime timestamp 注册时间
5 email varchar(50) 邮箱地址
6 address varchar(255) 地址
7 headImg varchar(255) 用户头像
CREATE TABLE `eoa_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id,主键,无意义',
  `username` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '用户名',
  `password` varchar(80) COLLATE utf8_bin NOT NULL COMMENT '用户密码',
  `regtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '注册时间',
  `email` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '邮箱地址',
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '地址',
  `headImg` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户头像',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_role 描述: 用户角色表
序号 字段名 字段类型 备注
1 id int(11) id 主键 无意义
2 roleName varchar(30) role角色名称
3 roleDesc varchar(50) role角色描述
CREATE TABLE `eoa_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `roleName` varchar(30) COLLATE utf8_bin NOT NULL COMMENT 'role角色名称',
  `roleDesc` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'role角色描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_user_role 描述: 用户和角色关联表
序号 字段名 字段类型 备注
1 userId int(11) 用户id
2 roleId int(11) 角色id
CREATE TABLE `eoa_user_role` (
  `userId` int(11) DEFAULT NULL COMMENT '用户id',
  `roleId` int(11) DEFAULT NULL COMMENT '角色id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_usersendemail 描述:用户发送的邮件表
序号 字段名 字段类型 备注
1 id int(11) id 主键 无意义
2 userSendMessage text 需要发送的内容
3 sendTime timestamp 需要发送的时间
4 isSended int(11) 是否已经发送(0[N] 1[Y])
CREATE TABLE `eoa_usersendemail` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `userSendMessage` text COLLATE utf8_bin NOT NULL COMMENT '需要发送的内容',
  `sendTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '需要发送的时间',
  `isSended` int(11) NOT NULL COMMENT '是否已经发送 0[N] 1[Y]',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
表名 eoa_user_usersendemail描述:用户id和用户发送的邮件表id关联表
序号 字段名 字段类型 备注
1 userId int(11) 需要发送的用户id
2 userSendEmailId int(11) 需要发送的邮件id
CREATE TABLE `eoa_user_usersendemail` (
  `userId` int(11) NOT NULL COMMENT '需要发送的用户id',
  `userSendEmailId` int(11) NOT NULL COMMENT '需要发送的邮件id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_adminsendemail 描述:管理员发送邮件 adminId 就是用户 id 可以根据角色表查询是哪个权限和具体的操作者
序号 字段名 字段类型 备注
1 id int(11) id 主键 无意义
2 userId int(11) 给指定用户发送邮件 为[0] 就是群发
3 adminSendEmail text 需要发送的内容
4 adminId int(11) 哪位管理员发的
5 sendTime timestamp 发送的时间
CREATE TABLE `eoa_adminsendemail` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `userId` int(11) DEFAULT NULL COMMENT '给指定用户发送邮件 为[0] 就是群发',
  `adminSendEmail` text COLLATE utf8_bin NOT NULL COMMENT '需要发送的内容',
  `adminId` int(11) NOT NULL COMMENT '哪位管理员发的',
  `sendTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '发送的时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_maintenance_record 描述: 报障平台的数据导入导出
序号 字段名 字段类型 备注
1 id int(11) 主键 唯一 无意义
2 userId int(11) 维护人员id
3 recordTime timestamp 维护的时间
4 recordArea varchar(255) 维护信息
5 recordInfo varchar(255) 维护信息
6 replaceEquipment varchar(255) 更换器材
7 remarks varchar(255) 备注
CREATE TABLE `eoa_maintenance_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 唯一 无意义',
  `userId` int(11) DEFAULT NULL COMMENT '维护人员id',
  `recordTime` timestamp NULL DEFAULT NULL COMMENT '维护的时间',
  `recordArea` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '维护地点',
  `recordInfo` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '维护信息',
  `replaceEquipment` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '更换器材',
  `remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_user_leave_message 描述: 用户留言信息
序号 字段名 字段类型 备注
1 id int(11) 主键 唯一 无意义
2 theme varchar(255) 留言主题
3 userId int(11) '留言人
4 messageContent varchar(255) 留言内容
CREATE TABLE `eoa_user_leave_message` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `theme` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '留言主题',
  `userId` int(11) NOT NULL COMMENT '留言人',
  `messageContent` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '留言内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_log 描述: 用户浏览界面的日志记录
序号 字段名 字段类型 备注
1 id int(11) 无意义,主键id
2 visitTime timestamp 访问时间
3 userId int(11)) 操作者id
4 ip varchar(50) 操作者访问的 ip 地址
5 url varchar(500) 访问资源 url
6 executionTime int(11) 执行时长 毫秒
7 method varchar(500) 访问的方法
CREATE TABLE `eoa_log` (
  `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '无意义,主键id',
  `visitTime` timestamp NULL DEFAULT NULL COMMENT '访问时间',
  `userId` int(11) DEFAULT NULL COMMENT '操作者id',
  `ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '操作者访问的 ip 地址',
  `url` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '访问资源 url',
  `executionTime` int(11) DEFAULT NULL COMMENT '执行时长 毫秒',
  `method` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '访问的方法',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=244 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

暂时的数据表就以上述的九张表为基础

EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建_第2张图片
九张表

SSM配置搭建

因为需要进行POI导入导出,以及文件上传 所以此处再次在父工程导入新的依赖

        
        
            commons-fileupload
            commons-fileupload
            1.3.1
        
        
            commons-io
            commons-io
            2.5
        
        
        
        
            org.apache.poi
            poi
            3.17
        
        
            org.apache.poi
            poi-ooxml
            3.17
        
        
书写 domain 模块 JavaBean

PS:因为之前的模块依赖是

我的依赖规则  
dao 模块 依赖 domain 模块
service 模块 依赖 dao 模块 依赖 utils 模块 依赖 exception 模块
web 模块依赖 service

但是因为JavaBean的格式转换需要使用到 utils 模块 所以需要更改依赖 现在修改之后的依赖是

domain 模块 依赖 utils 模块 
dao 模块 依赖 domain 模块
service 模块 依赖 dao 模块 依赖 exception 模块
web 模块依赖 service
utils模块中的时间格式转换代码
package cn.icanci.easyoa.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.utils
 * @Date: Created in 2020/2/9 17:00
 * @ClassAction: 时间转换 由String转换到Date
 */
public class String2Date {
    public static Date string2Date(String timeStr,String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        try {
            return sdf.parse(timeStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}
package cn.icanci.easyoa.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.utils
 * @Date: Created in 2020/2/9 16:58
 * @ClassAction: 时间转换 由时间转换到String
 */
public class Date2String {
    public static String data2String(Date data, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(data);
    }
}

单元测试

package cn.icnaci.easyoa.test;

import cn.icanci.easyoa.utils.Date2String;
import cn.icanci.easyoa.utils.String2Date;
import org.junit.Test;

import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icnaci.easyoa.test
 * @Date: Created in 2020/2/9 17:18
 * @ClassAction: 测试时间和字符串的转换
 */
public class DateAndStringFormatTest {
    @Test
    public void testDateAndStringFormat(){
        String string = Date2String.data2String(new Date(), "yyyy-MM-dd HH:mm:ss");
        System.out.println(string);
        Date date = String2Date.string2Date(string, "yyyy-MM-dd HH:mm:ss");
        System.out.println(date);
    }

}

测试通过

2020-02-09 17:20:42
Sun Feb 09 17:20:42 CST 2020
修改之后继续 User的JavaBean Lombok插件不了解的可以看一下 @简单粗暴节省JavaBean代码Lombok插件
package cn.icanci.easyoa.domain;

import cn.icanci.easyoa.utils.Date2String;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.domain
 * @Date: Created in 2020/2/9 16:51
 * @ClassAction: 数据表 eoa_user 对应的javaBean
 */

@Data
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id 主键 无意义
     */
    private Integer id;
    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 注册时间
     */
    private Date regtime;

    /**
     * 时间转化 为字符串
     */
    private String regtimeDesc;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 地址
     */
    private String address;
    /**
     * 头像地址
     */
    private String headImg;

    public String getRegtimeDesc() {
        return Date2String.data2String(this.regtime,"yyyy-MM-dd HH:mm:ss");
    }
}

因为JavaBean的代码比较简单 其他的不再书写 全部JavaBean如下 关联表不需要创建

EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建_第3张图片
JavaBean

编写好JavaBean之后,开始编写Dao 和 Service 模块 现在以 IUserDao 为例 其他的 Dao 以及Service很类似 这里使用注解的方式实现增删改查
package cn.icanci.esayoa.dao;

import cn.icanci.easyoa.domain.User;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.esayoa.dao
 * @Date: Created in 2020/2/9 17:54
 * @ClassAction: User 的CRUD
 */
public interface IUserDao {
    /**
     * 保存一个用户
     * @param user 需要保存的用户对象
     */
    void save(User user);

    /**
     * 根据用户id删除id,或者是拉黑
     * @param userId 需要删除的 用户id
     */
    void delete(Integer userId);

    /**
     * 根据用户修改信息
     * @param user 需要修改的用户对象信息
     */
    void update(User user);

    /**
     * 根据用户id查询用户的信息
     * @param userId 需要查询的用户id
     * @return 如果查到了 返回一个 User 对象
     */
    User findOne(Integer userId);
}
package cn.icanci.easyoa.service;

import cn.icanci.easyoa.domain.User;
import org.apache.ibatis.annotations.Insert;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.service
 * @Date: Created in 2020/2/9 18:18
 * @ClassAction: IUserService User的业务层接口
 */
public interface IUserService {
    /**
     * 保存一个用户
     * @param user 需要保存的用户对象
     */
    @Insert("insert into ")
    void save(User user);

    /**
     * 根据用户id删除id,或者是拉黑
     * @param userId 需要删除的 用户id
     */
    void delete(Integer userId);

    /**
     * 根据用户修改信息
     * @param user 需要修改的用户对象信息
     */
    void update(User user);

    /**
     * 根据用户id查询用户的信息
     * @param userId 需要查询的用户id
     * @return 如果查到了 返回一个 User 对象
     */
    User findOne(Integer userId);
}
package cn.icanci.easyoa.service.impl;

import cn.icanci.easyoa.domain.User;
import cn.icanci.easyoa.service.IUserService;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.service.impl
 * @Date: Created in 2020/2/9 18:19
 * @ClassAction:  User 的业务层实现
 */
public class UserServiceImpl implements IUserService {
    @Override
    public void save(User user) {

    }

    @Override
    public void delete(Integer userId) {

    }

    @Override
    public void update(User user) {

    }

    @Override
    public User findOne(Integer userId) {
        return null;
    }
}

具体逻辑代码还没有书写 现在先写一下配置文件
配置log4j.properties的信息

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=E:/AllLogs/idea2019/maven/oasyoa/log.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

在web模块中创建applicationContext.xml的配置文件 编写具体的配置信息




    
    
    
    
    
    
    

    
    
    
    
    
        
        
        
        
    
    
    
        
        
        
            
                
                
                    
                        
                            mysql
                            true
                        
                    
                
            
        
    
    
    
        
    
    
    
    
    
        
    
    

这里有个坑 也就是配置dao接口的时候,如果只配置了注解扫描而没有配置扫描注解驱动 dao模块的接口就扫描不出来

配置db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/easyoa
jdbc.username=root
jdbc.password=ok
配置spring-mvc.xml



    
    

    
    
        
        
        
        
    
    
    
    
    
    
    
    
    

配置web.xml


    
    
        contextConfigLocation
        classpath*:applicationContext.xml,classpath*:spring-mvc.xml
    
    
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
        org.springframework.web.context.request.RequestContextListener
    
    
    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        
        1
    
    
        dispatcherServlet
        *.do
    
    
    
    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        characterEncodingFilter
        /*
    
    

    
    
    
    
        404
        /error/404.jsp
    
    
        403
        /error/403.jsp
    
    
        500
        /error/500.jsp
    
    
    
    
        index.html
        index.htm
        index.jsp
        default.html
        default.htm
        default.jsp
    
    

配置好之后开始书写 dao 模块 service 模块 此处比较基础 就不上代码 然后提交到SVN
EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建_第4张图片
dao模块和service模块
确认提交之后,到本地SVN仓库检查 或者浏览器登陆SVN查询
EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建_第5张图片
确认提交之后检查

EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建_第6张图片
浏览器查询

今天跳坑很多 明天完成基本操作 crud的操作

你可能感兴趣的:(EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建)