SpringBoot OA办公系统

SpringBoot OA办公系统

SpringBoot OA办公系统功能介绍

登录 首页面板 日程管理 个人便签 通讯录 请假记录 会议室管理 预约记录 员工管理 部门管理 角色管理 菜单管理 岗位管理 公告管理 工作时间管理 文件管理 流程审批管理 审批记录 日志管理 考勤记录 考勤统计

一个办公企业管理OA系统

使用技术

  • SpringBoot框架

  • Mysql数据库

  • activiti

  • shiro

  • thymeleaf(前端)

功能展示

SpringBoot OA办公系统_第1张图片
SpringBoot OA办公系统_第2张图片
SpringBoot OA办公系统_第3张图片

SpringBoot OA办公系统_第4张图片
SpringBoot OA办公系统_第5张图片
SpringBoot OA办公系统_第6张图片
SpringBoot OA办公系统_第7张图片
SpringBoot OA办公系统_第8张图片
SpringBoot OA办公系统_第9张图片

activiti.cf.xml配置文件



<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

		<property name="dataSource" ref="dataSource" />

		
		<property name="databaseSchemaUpdate" value="true" />

		
		<property name="jobExecutorActivate" value="false" />

		<property name="transactionManager" ref="transactionManager"/>

		
        <property name="activityFontName" value="宋体"/>
        <property name="labelFontName" value="宋体"/>
	bean>

	<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
		<property name="processEngineConfiguration" ref="processEngineConfiguration"/>
	bean>

	
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/oa"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/>
	bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    bean>
beans>
 

UserRealm权限代码

/**
 * 登录验证reaml
 */
@Component("uReaml")
public class UserRealm extends AuthorizingRealm{

    private final static Logger logger = LoggerFactory.getLogger(UserRealm.class);

    @Autowired
    IUserService loginService;


    /**
     *
     * @描述: 登陆认证
     *
     * @params:
     * @return:
     */
    protected AuthenticationInfo doGetAuthenticationInfo(
            AuthenticationToken authenticationToken) throws AuthenticationException
    {

        //拿到封装好账户密码的token
        UsernamePasswordToken u_pTaken = (UsernamePasswordToken) authenticationToken;
        String loginName = u_pTaken.getUsername();

        //用户校验
        User user = loginService.login(loginName);
        if (user == null)
        {
            throw new UnknownAccountException("用户不存在!");
        }

        String status = user.getStatus().toString();
        if (status.equals(CsEnum.user.USER_USER_BLOCKED.getValue()))
        {
            throw new LockedAccountException("用户被锁定!");
        }


        /**  用户存在密码交给 realm 比对
         * 1).principal: 认证的实体信息,可以使username 也可以是数据表对应的用户实体类对象
         * 2).credentials:  密码
         * 3).realmName: 当前reaml 对象的name. 丢奥用父类的getName() 方法即可
         **/


        /** 数据库的密码是进行过MD5盐值加密的,表单传过来的密码 进行md5加密后对比
         *hashAlgorithmName
         **/


        //加盐 计算盐值 保证每个加密后的 MD5 不一样
        ByteSource credentialsSalt = ByteSource.Util.bytes(user.getUid());
        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPwd(), credentialsSalt,
                                                                     this.getName());
        return info;
    }


    /**
     * 授权逻辑
     **/

    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection)
    {
        //1.从PrincipalCollection 中获取登陆用户的信息,获取登陆者的id
        User principal = (User) principalCollection.getPrimaryPrincipal();

        //2.利用当前用户的信息用户当前用户的角色或权限
        Set<String> roles = new HashSet<>();
        Set<String> menus = new HashSet<>();

        //从用户中取出权限
        Role role = principal.getRole();

        List<Permission> permissionList = role.getPermissionList();

        if (permissionList != null)
        {
            for (Permission p : permissionList)
            {
                if (p.getCode() != null && !p.getCode().equals(""))
                {
                    menus.add(p.getCode());
                }
            }
        }


        roles.add(role.getRoleName());
        logger.info("### 登录授权,用户=[{}],角色=[{}]", principal.getName(), role.getRoleName());


        //3.创建 SimpleAuthenticationInfo 对象,设置角色
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        info.setRoles(roles);
        info.setStringPermissions(menus);
        return info;

    }

    /**
     * 清理缓存权限
     */
    public void clearCachedAuthorizationInfo()
    {
        this.clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());
    }
}

运行

创建数据库, 然后修改数据库连接相关信息。

启动 Springboot 类的main方法

访问地址:http://localhost:8880/oa

管理员 账号:admin 密码:admin

领导角色演示账号/密码:manager/123456

员工角色演示账号/密码:employee/123456

你可能感兴趣的:(mysql,springboot,thymeleaf,spring,boot,thymeleaf)