ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于SSM+Layui实现医院预约挂号系统

2021-12-11 22:00:53  阅读:154  来源: 互联网

标签:return Layui List resultUtil SSM 挂号 Override import public


 项目编号:BS-YL-010

基于SSM的医院在线预约挂号平台。前端使用layui框架。分为管理员、医生、患者三个角色,功能完善。适合练习java web开发,也可以用作课程设计和毕业设计。

运行环境

jdk8+tomcat9+mysql+IntelliJ IDEA+maven

项目技术(必填)

spring+spring mvc+mybatis+layui+jquery

下面展示一下系统的部分功能:

管理员登陆

我的面板: 主要包含个人信息查看、修改密码、登陆日志

医生管理

患者管理

公告管理

科室管理

用户注册

患者登陆

查看我的预约

患者信息管理

预约医师

医生登陆

查看预约患者

接诊管理

添加诊断病历

病历管理

个人信息管理

查看医院公告

package com.zhang.hospital.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhang.hospital.dao.AdminDao;
import com.zhang.hospital.dao.MenuDao;
import com.zhang.hospital.dao.RoleDao;
import com.zhang.hospital.dao.RoleMenuDao;
import com.zhang.hospital.entity.*;
import com.zhang.hospital.util.EncryptUtil;
import com.zhang.hospital.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.text.ParseException;
import java.util.*;

@Service
@Transactional
public class AdminServiceImpl implements AdminService
{
    @Autowired
    private AdminDao adminDao;
    @Autowired
    private RoleMenuDao roleMenuDao;
    @Autowired
    private MenuDao menuDao;
    @Autowired
    private RoleDao roleDao;

    //登录
    @Override
    public Admin login(String username, String password) {
        return adminDao.login(username,password);
    }

    //记录登录记录
    @Override
    public void insAdminLog(String username, String loginIp, Date loginTime,Date logoutTime,Integer isSafeExit)
    {
        adminDao.insAdminLog(username,loginIp,loginTime,logoutTime,isSafeExit);

    }

    //根据id查询admin
    @Override
    public Admin getAdminById(Integer id) {
        return adminDao.getAdminById(id);
    }


    //*******Menu相关的一些***//
    @Override
    public List<Menu> getMenus(Admin admin) {

        List<Menu> menuList=new ArrayList<>();
        Long roleId=admin.getRoleId();
        List<RoleMenu> roleMenus=roleMenuDao.selMenusByRoleId(roleId);
        //rolemenu里面就是一个中间表 将两个字段 roleId、 menuId 关联起来
        if(roleMenus!=null&&roleMenus.size()>0)
        {
            List<Menu> noChildrenMenus=new ArrayList<>();
            for(int i=0;i<roleMenus.size();i++)
            {
                Menu menu=menuDao.getMenuById(roleMenus.get(i).getMenuId()); //获取rolemenu中的menuId
                noChildrenMenus.add(menu); //就是根据这个登陆者的roleid 所拥有的菜单取出来
            }
            for(int i=0;i<noChildrenMenus.size();i++)
            {
                if(noChildrenMenus.get(i).getParentId()==0)
                    //说明这个菜单是一级菜单 没有上一级菜单
                    //如果这里不为0 表示这个菜单是二级菜单 或者三级菜单 ParentId对应了属于哪个上级菜单
                {
                    Menu menu=new Menu();
                    menu=noChildrenMenus.get(i); //把这个一级菜单取出来
                    List<Menu> menus=new ArrayList<>();
                    for(int j=0;j<noChildrenMenus.size();j++) //把所有菜单过一遍
                    {
                        //如果有菜单属于这个一级菜单
                        if(noChildrenMenus.get(j).getParentId()==noChildrenMenus.get(i).getMenuId())
                        {
                            Menu menu2=new Menu();
                            menu2=noChildrenMenus.get(j);//取出这个二级菜单
                            menus.add(menu2);
                        }
                    }
                    menu.setChildren(menus); //存放了属于这个一级菜单的所有二级菜单
                    menuList.add(menu);//存放了所有的一级菜单和其对应的所有二级菜单
                }
            }

        }
        //下面是根据menu的sorting进行排序 升序排列 这样左侧菜单就会按照升序排列
        Collections.sort(menuList, new Comparator<Menu>() {
            @Override
            public int compare(Menu o1, Menu o2) {

                return o1.getSorting().compareTo(o2.getSorting());
            }
        });
        return menuList;
    }

    @Override
    public ResultUtil getAdminList(Integer page, Integer limit)
    {
        //mybatis分页插件
        PageHelper.startPage(page,limit); //默认传过来的是1 和10
        //在需要进行分页的Mybatis方法前调用PageHelper.startPage静态方法即可,
        // 紧跟在这个方法后的第一个Mybatis查询方法会被进行分页。
        List<Admin> admins=adminDao.getAdminsList();
        //底层的sql语句是select * from admin  order by id
        //这里因为是sqlserver2012的新特性 分页查询的时候 必须要加上 order by
        //  前面有startPage 自动加上了分页查询的语句
        // Tomcat Localhost Log 会输出错误信息

        for(Admin admin:admins)
        {
            List<Role> roles=roleDao.selRoles();//取出所有的角色
            for(Role role:roles)
            {
                if(role.getRoleId()==admin.getRoleId())
                {
                    admin.setRoleName(role.getRoleName());
                    //这里查出管理员中的roleID然后设置下roleName
                }
            }
        }

        PageInfo<Admin> pageInfo=new PageInfo<Admin>(admins);
        ResultUtil resultUtil=new ResultUtil();
        resultUtil.setCode(0);//前段接收为0 代表成功
        resultUtil.setCount(pageInfo.getTotal());//代表数据库中总条数
        resultUtil.setData(pageInfo.getList()); //根据上面startPage设置的第几页 每页多少条 查询出的数据
        return resultUtil;
    }

    @Override
    public List<Role> getRoles() {
        return roleDao.selRoles();
    }

    @Override
    public ResultUtil getRoles(Integer page, Integer limit) {
        PageHelper.startPage(page,limit);
        List<Role> roles=roleDao.selRoles();
        PageInfo<Role> pageInfo=new PageInfo<Role>(roles);
        ResultUtil resultUtil=new ResultUtil();
        resultUtil.setCode(0);
        resultUtil.setCount(pageInfo.getTotal());
        resultUtil.setData(pageInfo.getList());
        return resultUtil;
    }

    @Override
    public void updAdmin(Admin admin)
    {
        adminDao.updAdmin(admin);
    }

    @Override
    public void delAdminById(Long id) {
        adminDao.delAdminById(id);
    }

    @Override
    public Admin getAdminByUsername(String username) {
        return adminDao.getAdminByUsername(username);
    }

    @Override
    public void insAdmin(Admin admin) {
        admin.setPassword(EncryptUtil.encrypt(admin.getPassword()));//加密
        adminDao.insAdmin(admin);
    }

    @Override
    public void delRole(Long roleId) {
        roleDao.delRole(roleId);
    }

    @Override
    public Role getRoleById(Long roleId) {
        return roleDao.getRoleById(roleId);
    }

    //根据角色展示菜单
    @Override
    public List<Menu> getXtreeData(Long roleId) {
        List<Menu> allMenus=menuDao.getAllMenus(); //获得所有的菜单
        if(!roleId.equals(Long.valueOf("-1")))//不是-1
        {
            List<RoleMenu> roleMenus=roleMenuDao.selMenusByRoleId(roleId); //选出此角色对应的菜单
            for(Menu menu:allMenus) //遍历所有菜单
            {
                for(RoleMenu roleMenu:roleMenus)
                {
                    if(roleMenu.getMenuId()==menu.getMenuId())
                    {
                        menu.setChecked("true"); //将所有菜单中 此角色有的菜单
                        // 设置为true状态 前面权限树,会体现出选中状态
                        //ztree会检查返回的数据中有没有 checked 属性 如果为true就会把这个节点设为选中状态
                    }
                }
            }
        }
        return allMenus;
    }

    @Override
    public Role getRoleByRoleName(String roleName) {
        return roleDao.getRoleByRoleName(roleName);
    }

    @Override
    public void updRole(Role role, String m) {
     roleDao.updateByKey(role);
     roleMenuDao.deleteMenusByRoleId(role.getRoleId()); //把roleId对应的菜单都删除
        if(m!=null&&m.length()!=0)
        {
            String [] result=m.split(",");
            //重新赋予权限
            if(result!=null&&result.length>0)
            {
                for(int i=0;i<result.length;i++)
                {
                    RoleMenu roleMenu=new RoleMenu();
                    roleMenu.setMenuId(Long.parseLong(result[i]));
                    roleMenu.setRoleId(role.getRoleId());
                    //插入一条数据
                    roleMenuDao.insert(roleMenu);
                }
            }
        }
    }

    @Override
    public void insRole(Role role, String m) {
        roleDao.insertRole(role); //插入一条新数据
        Role role2=roleDao.selectRoleByRoleName(role.getRoleName()); //把新插入的读出来
        if(m!=null&&m.length()!=0)
        {
            String [] result=m.split(",");
            if(result!=null&&result.length>0)
            {
                for(int i=0;i<result.length;i++)
                {
                    RoleMenu roleMenu=new RoleMenu();
                    roleMenu.setMenuId(Long.parseLong(result[i]));
                    roleMenu.setRoleId(role2.getRoleId());
                    roleMenuDao.insert(roleMenu);
                }
            }
        }

    }

    @Override
    public List<Menu> getAllMenus() {
        return menuDao.getAllMenus();
    }

    @Override
    public void updMenuSortingById(Menu menu) {
        Menu menu1=menuDao.getMenuById(menu.getMenuId()); //更新对象之前 先读出来
        menu1.setSorting(menu.getSorting()); //设置新的排序
        menuDao.updateMenuByKey(menu1); //更新
    }

    @Override
    public Menu getMenuById(Long menuId) {
        return menuDao.getMenuById(menuId);
    }

    @Override
    public List<Menu> checkNameSameLevel(Menu menus) {
        return menuDao.checkNameSameLevel(menus);
    }

    @Override
    public void insMenu(Menu menus) {
        menuDao.insMenu(menus);
    }

    @Override
    public void updMenu(Menu menus) {
        menuDao.updateMenu(menus);
    }

    @Override
    public List<Menu> getMenusByParentId(Long menuId) {
        return menuDao.getMenuByParentId(menuId);
    }

    @Override
    public void delMenuById(Long menuId) {
        menuDao.delMenuById(menuId);
        roleMenuDao.deleteMenuByMenuId(menuId);
    }

    @Override
    public List<RoleMenu> getRoleMenuByMenuId(Long menuId) {
        return roleMenuDao.getRoleMenuByMenuId(menuId);
    }

    @Override
    public AdminLog getAdminLogByUsername(String username) {
        return adminDao.getAdminLogByUsername(username);
    }

    @Override
    public void updateAdminLog(AdminLog adminLog) {
        adminDao.updateAdminLog(adminLog);
    }

    @Override
    public AdminLog getAdminLogByLoginTime(Date loginTime) {
        return adminDao.getAdminLogByLoginTime(loginTime);
    }

    @Override
    public ResultUtil getAdminLogList(Integer page, Integer limit) throws ParseException {
        List<AdminLog> adminLogList=new ArrayList<>();
        //带分页的查询 sql server 中 select 语句必须有 order by
        PageHelper.startPage(page,limit);
        List<AdminLog> adminLogs=adminDao.getAdminLogsList();
        PageInfo<AdminLog> pageInfo=new PageInfo<>(adminLogs);
        ResultUtil resultUtil=new ResultUtil();
        resultUtil.setCode(0);
        resultUtil.setCount(pageInfo.getTotal()-1); //不显示最后一条数据
        //不显示最后一条登陆信息 因为是正在登陆
        adminLogList.addAll(pageInfo.getList().subList(0,pageInfo.getList().size()-1));
        resultUtil.setData(adminLogList);
        return resultUtil;
    }
}
package com.zhang.hospital.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhang.hospital.dao.MenuDao;
import com.zhang.hospital.dao.RoleMenuDao;
import com.zhang.hospital.dao.UserDao;
import com.zhang.hospital.entity.*;
import com.zhang.hospital.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@Service
@Transactional

public class UserServiceImpl implements UserService
{

    @Autowired
    private UserDao userDao;

    @Autowired
    private RoleMenuDao roleMenuDao;
    @Autowired
    private MenuDao menuDao;

    @Override
    public void insUser(User user) {
        userDao.insUser(user);
    }

    @Override
    public User login(String username, String password) {
        return userDao.login(username,password);
    }

    @Override
    public List<Menu> getMenus(User user1)
    {
        List<Menu> menuList=new ArrayList<>();
        Long roleId=user1.getRoleId();
        List<RoleMenu> roleMenus=roleMenuDao.selMenusByRoleId(roleId);
        //rolemenu是一个中间表 两个字段 roleId menuId 关联起来
        if(roleMenus!=null&&roleMenus.size()>0)
        {
            List<Menu> noChildrenMenus=new ArrayList<>();
            for(int i=0;i<roleMenus.size();i++)
            {
                Menu menu=menuDao.getMenuById(roleMenus.get(i).getMenuId()); //获取rolemenu中的menuId
                noChildrenMenus.add(menu); //根据登陆者的roleid 所拥有的菜单取出来
            }
            for(int i=0;i<noChildrenMenus.size();i++)
            {
                if(noChildrenMenus.get(i).getParentId()==0)
                //说明这个菜单是一级菜单 没有上一级菜单
                //如果这里不为0 表示这个菜单是二级菜单 或者三级菜单 ParentId对应了属于哪个上级菜单
                {
                    Menu menu=new Menu();
                    menu=noChildrenMenus.get(i); //把这个一级菜单取出来
                    List<Menu> menus=new ArrayList<>();
                    for(int j=0;j<noChildrenMenus.size();j++) //把所有菜单过一遍
                    {
                        //如果有菜单属于这个一级菜单
                        if(noChildrenMenus.get(j).getParentId()==noChildrenMenus.get(i).getMenuId())
                        {
                            Menu menu2=new Menu();
                            menu2=noChildrenMenus.get(j);//取出这个二级菜单
                            menus.add(menu2);
                        }
                    }
                    menu.setChildren(menus); //存放了属于这个一级菜单的所有二级菜单
                    menuList.add(menu);//存放了所有的一级菜单和其对应的所有二级菜单
                }
            }

        }
        //下面是根据menu的sorting进行排序 升序排列 这样左侧菜单就会按照升序排列
        Collections.sort(menuList, new Comparator<Menu>() {
            @Override
            public int compare(Menu o1, Menu o2) {

                return o1.getSorting().compareTo(o2.getSorting());
            }
        });

        return menuList;
    }

    @Override
    public User getUserById(Integer user_id) {
        return userDao.getUserById(user_id);
    }

    @Override
    public ResultUtil updateUser(User user) {
        userDao.updateUser(user);
        return ResultUtil.ok();
    }

    @Override
    public User getUsertByUserName(String username) {
        return userDao.getUserByUserName(username);
    }

    @Override
    public ResultUtil getAllUserList(Integer page, Integer limit, UserSearch search) {
        PageHelper.startPage(page,limit);
        List<User> users=userDao.getAllUserList(search);
        PageInfo<User> pageInfo=new PageInfo<>(users);
        ResultUtil resultUtil=new ResultUtil();
        resultUtil.setCode(0);
        resultUtil.setCount(pageInfo.getTotal());
        resultUtil.setData(pageInfo.getList());
        return resultUtil;
    }

    @Override
    public ResultUtil updateUserStatusById(int user_id, int status) {
         userDao.updateUserStatusById(user_id,status);
         return ResultUtil.ok();
    }

    @Override
    public ResultUtil deleteUserById(int user_id) {
        userDao.deleteUserById(user_id);
        return ResultUtil.ok();
    }

}

标签:return,Layui,List,resultUtil,SSM,挂号,Override,import,public
来源: https://blog.csdn.net/znzbs/article/details/121880131

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有