java毕业项目:基于SSM的医院在线预约挂号系统1020

项目描述

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

运行环境

jdk8+tomcat8+mysql+IntelliJ IDEA+maven

项目技术

spring+spring mvc+mybatis+layui+jquery

项目截图

管理端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述医生端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
患者端
在这里插入图片描述
在这里插入图片描述

部分代码


@Controller
@RequestMapping("/admin")
public class AdminController {
    @Autowired
    private AdminService adminService;

    @Autowired
    private UserService userService;
    @Autowired
    private DoctorService doctorService;
    @Autowired
    private DepartService departService;


    @RequestMapping("/login")
    @ResponseBody
    public ResultUtil login(String username, String password, HttpServletRequest request, HttpSession session)
            throws ParseException {
        Admin admin = adminService.login(username, EncryptUtil.encrypt(password));
        if (admin != null) {
            session.setAttribute("user", admin); //在拦截器中使用
            session.setAttribute("admin", admin); //在main.jsp中需要admin
            session.setAttribute("usertype", "1");//代表是管理员登录
            // 还有修改密码.jsp等都可以直接取出admin
            String loginIp = request.getHeader("x-forwarded-for");
            if (loginIp == null || loginIp.length() == 0 || "unknown".equalsIgnoreCase(loginIp)) {
                loginIp = request.getHeader("Proxy-Client-IP");//获取代理的IP
            }
            if (loginIp == null || loginIp.length() == 0 || "unknown".equalsIgnoreCase(loginIp)) {
                loginIp = request.getHeader("WL-Proxy-Client-IP");//获取代理的IP
            }
            if (loginIp == null || loginIp.length() == 0 || "unknown".equalsIgnoreCase(loginIp)) {
                loginIp = request.getRemoteAddr();
            }

            Date date = new Date();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String nowTime = simpleDateFormat.format(date);
            Date loginTime = simpleDateFormat.parse(nowTime);

            Date logoutTime = loginTime;

            Integer isSafeExit = 0;

            adminService.insAdminLog(username, loginIp, loginTime, logoutTime, isSafeExit);

            session.setAttribute("adminloginTime", loginTime); //点击退出的时候用的到

            return ResultUtil.ok(admin.getId());
        } else
            return ResultUtil.error();
    }


    //获取所有的登录日志
    @RequestMapping("/getAdminLogList")
    @ResponseBody
    public ResultUtil getAdminLogList(Integer page, Integer limit, HttpSession session)
            throws ParseException {

        return adminService.getAdminLogList(page, limit);
    }


    @RequestMapping("/userList")
    public String userList() {
        return "/jsp/admin/userList";
    }

    @RequestMapping("/getAllUserList")
    @ResponseBody
    public ResultUtil getAllUserList(Integer page, Integer limit, UserSearch search) {
        return userService.getAllUserList(page, limit, search);
    }


    @RequestMapping("/doctorList")
    public String doctorList(HttpSession session) {
        List<Depart> departs = departService.getAllDeparts();
        session.setAttribute("departs", departs);
        return "/jsp/admin/doctorList";
    }

    @RequestMapping("/getAllDoctorList")
    @ResponseBody
    public ResultUtil getAllDoctorList(Integer page, Integer limit, DoctorSearch search) {

        return doctorService.getAllDoctorList(page, limit, search);
    }


    @RequestMapping("/deleteDoctorById")
    @ResponseBody
    public ResultUtil deleteDoctorById(int doctor_id) {
        return doctorService.deleteDoctorById(doctor_id);
    }

    @RequestMapping("/deleteUserById")
    @ResponseBody
    public ResultUtil deleteUserById(int user_id) {
        return userService.deleteUserById(user_id);
    }


    @RequestMapping("/editUser/{user_id}")
    public String editStudent(@PathVariable("user_id") int user_id, HttpSession session) {
        User user = userService.getUserById(user_id);
        session.setAttribute("hospital_user", user);
        return "/jsp/user/editUser";
    }


    @RequestMapping("/editDoctor/{doctor_id}")
    public String editDoctor(@PathVariable("doctor_id") int doctor_id, HttpSession session) {

        Doctor doctor = doctorService.getDoctorById(doctor_id);

        session.setAttribute("hospital_user", doctor);
        return "/jsp/admin/editDoctor";
    }

    /********Role相关*******/
    //获取角色列表 带分页
    @RequestMapping("/getRoleList")
    @ResponseBody
    public ResultUtil getRoleList(Integer page, Integer limit) {
        return adminService.getRoles(page, limit);
    }

    //删除一个角色
    @RequestMapping("/delRole/{roleId}")
    @ResponseBody
    public ResultUtil delRole(@PathVariable("roleId") Long roleId) {
        adminService.delRole(roleId);
        return ResultUtil.ok();

    }

    //得到指定角色权限树
    // 注解RequestMapping中produces属性可以设置返回数据的类型以及编码,可以是json
    @RequestMapping(value = "/xtreedata", produces = {"text/json;charset=UTF-8"})
    @ResponseBody
    public String xtreeData(@RequestParam(value = "roleId", defaultValue = "-1") Long roleId) {

        return GsonUtil.entityToJson(adminService.getXtreeData(roleId));
    }

    // 检查角色是否唯一
    @RequestMapping("/checkRoleName/{roleName}/{roleId}")
    @ResponseBody
    public ResultUtil checkRoleName(@PathVariable("roleName") String roleName,
                                    @PathVariable("roleId") Long roleId) {
        Role role = adminService.getRoleByRoleName(roleName);
        if (role == null)
        {
            return new ResultUtil(0);
        } else if (role.getRoleId() == roleId) //已经有这个角色名 并且就是这个id 也可以
        {
            return new ResultUtil(0);
        } else  //此角色名已存在 别的roleId
        {
            return new ResultUtil(500, "已经存在此角色名");
        }
    }

    // 检查角色是否唯一 添加新角色的时候用这个函数
    @RequestMapping("/checkAddRoleName/{roleName}")
    @ResponseBody
    public ResultUtil checkRoleName(@PathVariable("roleName") String roleName) {
        Role role = adminService.getRoleByRoleName(roleName);
        if (role == null)//没有这个角色名 可以
        {
            return new ResultUtil(0);
        } else  //此角色名已存在
        {
            return new ResultUtil(500, "已经存在此角色名");
        }
    }

    //更新角色
    @RequestMapping("/updateRole")
    @ResponseBody
    public void updateRole(Role role, String m) {
        // System.out.println(role);
        // System.out.println(m);
        adminService.updRole(role, m);
    }

    //添加角色
    @RequestMapping("/insRole")
    @ResponseBody
    public ResultUtil insertRole(Role role, String m) {

        adminService.insRole(role, m);
        return ResultUtil.ok();

    }


    /*******管理员相关******/
    //查看管理员的个人信息
    @RequestMapping("/personalDate")
    public String personalDate(HttpSession session) {
        Admin admin = (Admin) session.getAttribute("admin");
        Admin admin1 = adminService.getAdminById(admin.getId());
        session.setAttribute("admin1", admin1);
        return "/jsp/admin/personalInfo";
    }


    @RequestMapping("/getAdminList")
    @ResponseBody
    //获取所有管理员列表 带分页
    public ResultUtil getAdminList(Integer page, Integer limit) {
        // Tomcat Localhost Log 会输出错误信息 如果下面的sql语句有问题
        ResultUtil admins = adminService.getAdminList(page, limit);
        return admins;
    }
    //获取管理员对应的菜单 用于加载后台首页
    @RequestMapping("/getMenus")
    @ResponseBody
    public List<Menu> getMenus(HttpSession session) {
        List<Menu> menus = null;
        Admin admin = (Admin) session.getAttribute("admin");
        Admin admin1 = adminService.getAdminById(admin.getId());
        if (admin1 != null) {
            menus = adminService.getMenus(admin1);
        }
        return menus;
    }

    //编辑管理员
    @RequestMapping("/editAdmin/{id}")
    public String editAdmin(HttpServletRequest request, @PathVariable("id") int id) {
        Admin admin = adminService.getAdminById(id);
        List<Role> roles = adminService.getRoles();
        request.setAttribute("admin", admin);
        request.setAttribute("roles", roles);
        return "/jsp/admin/editAdmin";
    }

    //更新管理员
    @RequestMapping("/updateAdmin")
    @ResponseBody
    public ResultUtil updateAdmin(Admin admin) {
        try {
            adminService.updAdmin(admin);
            return ResultUtil.ok();
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error();
        }
    }


    //更新管理员
    @RequestMapping("/updAdmin")
    @ResponseBody
    public ResultUtil updAdmin(Admin admin)
    {
        if (admin != null && admin.getId() == 1) {
            return ResultUtil.error("不允许修改");
        }
        try
        {
            //如果sql执行失败 会有捕获异常输出
            adminService.updAdmin(admin);
            return ResultUtil.ok();
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error();
        }

    }

    //修改密码
    @RequestMapping("/changeAdminPassword")
    @ResponseBody
    public ResultUtil changeAdminPassword(String oldPassword, String newPassword1, String username) {

        Admin admin = adminService.getAdminByUsername(username);
        if (admin != null) {
            if (admin.getPassword().equals(EncryptUtil.encrypt(oldPassword))) {
                admin.setPassword(EncryptUtil.encrypt(newPassword1));
                adminService.updAdmin(admin);
                return ResultUtil.ok();
            } else {
                return ResultUtil.error("旧密码错误,请重新填写");
            }
        }
        return ResultUtil.error("请求出错!!");
    }


    //删除一个管理员
    @RequestMapping("/delAdminById/{id}")
    @ResponseBody
    public ResultUtil delAdminById(@PathVariable("id") Long id) {
        if (id == 1) {
            return ResultUtil.error();
        }
        try {
            adminService.delAdminById(id);
            return ResultUtil.ok();
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error();
        }
    }

    //检查是否已经存在此用户名
    @RequestMapping("/checkAdminName/{username}")
    @ResponseBody
    public ResultUtil checkAdminName(@PathVariable("username") String username) {
        Admin admin = adminService.getAdminByUsername(username);
        if (admin != null) {
            return new ResultUtil(500, "管理员已存在!");
        }
        return new ResultUtil(0);
    }

    //添加新管理员
    @RequestMapping("/insAdmin")
    @ResponseBody
    public ResultUtil insAdmin(Admin admin) {
        adminService.insAdmin(admin);
        return ResultUtil.ok();
    }

    /****菜单相关******/
    //获取所有菜单
    @RequestMapping("/menuData")
    @ResponseBody
    public ResultUtil menuData() {
        List<Menu> list = adminService.getAllMenus();
        ResultUtil resultUtil = new ResultUtil();
        resultUtil.setCode(0);
        resultUtil.setCount(list.size() + 0L);
        resultUtil.setData(list);
        return resultUtil;
    }


    @RequestMapping("/updMenuSortingById")
    @ResponseBody
    public ResultUtil updMenuSortingById(Long menuId, String sorting) {
        Menu menu = new Menu();
        menu.setMenuId(menuId);
        Long sortingL;
        try {
            sortingL = Long.parseLong(sorting); //将字符串变成Long
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error("修改失败,只允许输入整数");
        }
        menu.setSorting(sortingL);
        adminService.updMenuSortingById(menu);
        return ResultUtil.ok();
    }

    @RequestMapping("/toSaveMenu/{menuId}/{menuLevel}")
    public String toSaveMenu(@PathVariable("menuId") Long menuId,
                             @PathVariable("menuLevel") Long menuLevel, Model model) {
        if (menuId != null && menuId != 1) {
            Menu menus = new Menu();
            menus.setMenuId(menuId);
            model.addAttribute("menuLevel", menuLevel);
            model.addAttribute("menu", menus);
            model.addAttribute("flag", "1");
            return "/jsp/menu/menuForm";
        } else {
            model.addAttribute("msg", "不允许操作!");
            return "/jsp/active";
        }

    }


    @RequestMapping("/toEditMenu/{menuId}")
    public String toEditMenu(@PathVariable("menuId") Long menuId, Model model) {
        if (menuId != null && menuId != 1) {
            Menu menus = adminService.getMenuById(menuId);
            model.addAttribute("menu", menus);
            return "/jsp/menu/menuForm";
        } else {
            model.addAttribute("msg", "不允许操作");
            return "/jsp/active";
        }
    }


    @RequestMapping("/menuForm")
    @ResponseBody
    public ResultUtil menuForm(Menu menus, String flag) {
        if (StringUtils.isBlank(flag))
        {
            menus.setSpread("false");
            adminService.updMenu(menus);
            return ResultUtil.ok("修改成功");
        } else if (menus.getMenuId() != 1)
        {

            menus.setParentId(menus.getMenuId()); //menuId parentId设成一样 情况1: 0,0  情况2: 2,2  情况3:111,111
            Menu m = adminService.getMenuById(menus.getMenuId());// 情况1 m为空 情况2 读出菜单 我的面板 情况3读出菜单 测试菜单
            if (m != null && m.getParentId() != 0)//这就是 选中第三级菜单复选框或者选中第二级菜单复选框的情况
            {
                Menu m1 = adminService.getMenuById(m.getParentId()); //获取第二级菜单或者第三级菜单的上级菜单
                if (m1 != null && m1.getParentId() != 0)//说明是情况3
                {
                    return ResultUtil.error("此菜单不允许添加子菜单");  //固定最多三级菜单
                }

            }
            List<Menu> data = adminService.checkNameSameLevel(menus); // sql为select * from menu parentId = #{parentId} and name = #{name}
            //就是判断顶级菜单 二级菜单下有没有重名的菜单
            if (data.size() > 0) {
                return ResultUtil.error("同级菜单名称不能相同");
            }
            menus.setMenuId(null);
            menus.setSpread("false"); //默认不展开
            adminService.insMenu(menus);
            return ResultUtil.ok("添加成功");
        } else {
            return ResultUtil.error("此菜单不允许操作");
        }
    }

    @RequestMapping("/delMenuById/{menuId}")
    @ResponseBody
    public ResultUtil delMenuById(@PathVariable("menuId") Long menuId) {
        try {
            if (menuId == 1) {
                return ResultUtil.error("此菜单不允许删除!");
            }
            List<Menu> data = adminService.getMenusByParentId(menuId);
            if (data != null && data.size() > 0) {
                return ResultUtil.error("包含子菜单,不允许删除!");
            }
            List<RoleMenu> roleMenus = adminService.getRoleMenuByMenuId(menuId);
            if (roleMenus != null && roleMenus.size() > 1) {
                return ResultUtil.error("此菜单已经分配给此登录角色,请先解除绑定,再尝试删除");
            }
            adminService.delMenuById(menuId);
            return ResultUtil.ok("删除成功");
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.error("数据库sql有误查看Log输出");
        }
    }


    /********页面跳转*******/
    @RequestMapping("/logOut")
    public ModelAndView loginout(ModelAndView modelAndView, HttpSession session)
            throws ParseException {
        Date loginTime = (Date) session.getAttribute("adminloginTime");
        AdminLog adminLog = adminService.getAdminLogByLoginTime(loginTime);

        adminLog.setIsSafeExit(1);

        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String nowTime = simpleDateFormat.format(date);
        Date logoutTime = simpleDateFormat.parse(nowTime);

        adminLog.setLogoutTime(logoutTime);

        adminService.updateAdminLog(adminLog);

        session.invalidate();
        modelAndView.setViewName("redirect:/index.jsp");
        return modelAndView;
    }

    @RequestMapping("/allmain")
    public String index() {
        return "redirect:/admin/toallmain";
    }

    @RequestMapping("/toallmain")
    public String toallmain(ModelAndView modelAndView) {
        return "/jsp/allmain";
    }

    @RequestMapping("/main")
    public String getMain() {
        return "/jsp/main";
    }

    @RequestMapping("/adminList")
    public String adminList() {
        return "/jsp/admin/adminList";
    }

    @RequestMapping("/addAdmin")
    public String addAdmin(HttpSession session) {
        List<Role> roles = adminService.getRoles();
        session.setAttribute("roles", roles);
        return "/jsp/admin/addAdmin";
    }

    @RequestMapping("/roleList")
    public String roleList() {
        return "/jsp/role/roleList";
    }

    @RequestMapping("/editRole")
    public String editRole(Role role, Model model) {
        role = adminService.getRoleById(role.getRoleId());
        model.addAttribute("role", role);
        return "/jsp/role/editRole";
    }

部分表

DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user`  (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gender` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `birthday` datetime NULL DEFAULT NULL,
  `phone` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `note` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `status` int(11) NULL DEFAULT NULL,
  `levelId` int(11) NULL DEFAULT NULL,
  `createTime` datetime NULL DEFAULT NULL,
  `roleId` bigint(20) NULL DEFAULT NULL,
  `photo_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `realname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 49 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for tb_reservation
-- ----------------------------
DROP TABLE IF EXISTS `tb_reservation`;
CREATE TABLE `tb_reservation`  (
  `res_id` int(11) NOT NULL AUTO_INCREMENT,
  `status` int(11) NOT NULL,
  `order_time` datetime NULL DEFAULT NULL,
  `create_time` datetime NULL DEFAULT NULL,
  `res_user_id` int(11) NOT NULL,
  `res_doc_id` int(11) NOT NULL,
  PRIMARY KEY (`res_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for tb_promotion
-- ----------------------------
DROP TABLE IF EXISTS `tb_promotion`;
CREATE TABLE `tb_promotion`  (
  `promotion_id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `pub_date` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`promotion_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for tb_note
-- ----------------------------
DROP TABLE IF EXISTS `tb_note`;
CREATE TABLE `tb_note`  (
  `note_id` int(11) NOT NULL AUTO_INCREMENT,
  `create_time` datetime NULL DEFAULT NULL,
  `realname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `gender` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `birthday` datetime NULL DEFAULT NULL,
  `note_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `note_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `user_id` int(11) NOT NULL,
  `doctor_id` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`note_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for tb_doctor
-- ----------------------------
DROP TABLE IF EXISTS `tb_doctor`;
CREATE TABLE `tb_doctor`  (
  `doctor_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gender` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `birthday` datetime NULL DEFAULT NULL,
  `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `roleId` bigint(20) NULL DEFAULT NULL,
  `rank` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `photo_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `createTime` datetime NULL DEFAULT NULL,
  `depart_id` int(11) NULL DEFAULT NULL,
  `realname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`doctor_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for tb_depart
-- ----------------------------
DROP TABLE IF EXISTS `tb_depart`;
CREATE TABLE `tb_depart`  (
  `depart_id` int(11) NOT NULL AUTO_INCREMENT,
  `depart_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`depart_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for rolemenu
-- ----------------------------
DROP TABLE IF EXISTS `rolemenu`;
CREATE TABLE `rolemenu`  (
  `roleId` bigint(20) NULL DEFAULT NULL,
  `menuId` bigint(20) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (
  `roleId` bigint(20) NOT NULL AUTO_INCREMENT,
  `roleName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `roleRemark` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`roleId`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for menu
-- ----------------------------
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu`  (
  `menuId` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `icon` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `href` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `perms` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `spread` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `parentId` bigint(20) NULL DEFAULT NULL,
  `sorting` bigint(20) NULL DEFAULT NULL,
  PRIMARY KEY (`menuId`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 67 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for adminlog
-- ----------------------------
DROP TABLE IF EXISTS `adminlog`;
CREATE TABLE `adminlog`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `adminUsername` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `loginIp` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `loginTime` datetime NULL DEFAULT NULL,
  `logoutTime` datetime NULL DEFAULT NULL,
  `isSafeExit` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 881 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;


源码地址

添加博客名QQ获取

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_2537071370

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值