Java项目:社区养老医疗综合服务(java+SpringBoot+HTML+bootstrap+zTree+Mysql)
本项目分为管理员、医生、病人三种角色,管理员的功能包含如下:个人信息:个人资料、修改密码系统管理:用户管理、角色管理、部门管理、菜单管理、字典管理药物信息管理居民健康信息居民就诊历史我的预约信息居民医保信息医生的功能包含如下:个人信息:个人资料、修改密码药物信息管理居民健康信息居民就诊历史我的预约信息居民医保信息病人的功能包含如下:个人信息:个人资料、修改密码居民医保信息居民健康信息居民就诊历史我
源码获取:俺的博客首页 "资源" 里下载!
项目介绍
本项目分为管理员、医生、病人三种角色,
管理员的功能包含如下:
个人信息:个人资料、修改密码
系统管理:用户管理、角色管理、部门管理、菜单管理、字典管理
药物信息管理
居民健康信息
居民就诊历史
我的预约信息
居民医保信息
医生的功能包含如下:
个人信息:个人资料、修改密码
药物信息管理
居民健康信息
居民就诊历史
我的预约信息
居民医保信息
病人的功能包含如下:
个人信息:个人资料、修改密码
居民医保信息
居民健康信息
居民就诊历史
我的预约信息
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7或8.0版本;
6.是否Maven项目:是;
技术栈
1. 后端:SpringBoot+mybatis-plus
2. 前端:HTML+CSS+javascript+jQuery+bootstrap+ztree
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8080/ 登录
管理员账号/密码:admin/111111
医生账号/密码:doctor/111111
病人账号/密码:doctor/111111
病人控制器:
/**
* 病人控制器
*/
@Controller
@RequestMapping("/info")
public class InfoController extends BaseController {
private String PREFIX = "/user/info/";
@Autowired
private IInfoService infoService;
/**
* 跳转到病人首页
*/
@RequestMapping("")
public String index() {
return PREFIX + "info.html";
}
/**
* 跳转到添加病人
*/
@RequestMapping("/info_add")
public String infoAdd() {
return PREFIX + "info_add.html";
}
/**
* 跳转到修改病人
*/
@RequestMapping("/info_update/{infoId}")
public String infoUpdate(@PathVariable Integer infoId, Model model) {
Info info = infoService.selectById(infoId);
model.addAttribute("item",info);
LogObjectHolder.me().set(info);
return PREFIX + "info_edit.html";
}
/**
* 获取病人列表
*/
@RequestMapping(value = "/list")
@ResponseBody
public Object list(String condition) {
return infoService.selectList(null);
}
/**
* 新增病人
*/
@RequestMapping(value = "/add")
@ResponseBody
public Object add(Info info) {
infoService.insert(info);
return SUCCESS_TIP;
}
/**
* 删除病人
*/
@RequestMapping(value = "/delete")
@ResponseBody
public Object delete(@RequestParam Integer infoId) {
infoService.deleteById(infoId);
return SUCCESS_TIP;
}
/**
* 修改病人
*/
@RequestMapping(value = "/update")
@ResponseBody
public Object update(Info info) {
infoService.updateById(info);
return SUCCESS_TIP;
}
/**
* 病人详情
*/
@RequestMapping(value = "/detail/{infoId}")
@ResponseBody
public Object detail(@PathVariable("infoId") Integer infoId) {
return infoService.selectById(infoId);
}
}
角色控制器:
/**
* 角色控制器
*/
@Controller
@RequestMapping("/role")
public class RoleController extends BaseController {
private static String PREFIX = "/system/role";
@Autowired
private IUserService userService;
@Autowired
private IRoleService roleService;
/**
* 跳转到角色列表页面
*/
@RequestMapping("")
public String index() {
return PREFIX + "/role.html";
}
/**
* 跳转到添加角色
*/
@RequestMapping(value = "/role_add")
public String roleAdd() {
return PREFIX + "/role_add.html";
}
/**
* 跳转到修改角色
*/
@Permission
@RequestMapping(value = "/role_edit/{roleId}")
public String roleEdit(@PathVariable Integer roleId, Model model) {
if (ToolUtil.isEmpty(roleId)) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
Role role = this.roleService.selectById(roleId);
model.addAttribute(role);
model.addAttribute("pName", ConstantFactory.me().getSingleRoleName(role.getPid()));
model.addAttribute("deptName", ConstantFactory.me().getDeptName(role.getDeptid()));
LogObjectHolder.me().set(role);
return PREFIX + "/role_edit.html";
}
/**
* 跳转到角色分配
*/
@Permission
@RequestMapping(value = "/role_assign/{roleId}")
public String roleAssign(@PathVariable("roleId") Integer roleId, Model model) {
if (ToolUtil.isEmpty(roleId)) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
model.addAttribute("roleId", roleId);
model.addAttribute("roleName", ConstantFactory.me().getSingleRoleName(roleId));
return PREFIX + "/role_assign.html";
}
/**
* 获取角色列表
*/
@Permission
@RequestMapping(value = "/list")
@ResponseBody
public Object list(@RequestParam(required = false) String roleName) {
List<Map<String, Object>> roles = this.roleService.selectRoles(super.getPara("roleName"));
return super.warpObject(new RoleWarpper(roles));
}
/**
* 角色新增
*/
@RequestMapping(value = "/add")
@BussinessLog(value = "添加角色", key = "name", dict = RoleDict.class)
@Permission(Const.ADMIN_NAME)
@ResponseBody
public ResponseData add(@Valid Role role, BindingResult result) {
if (result.hasErrors()) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
role.setId(null);
this.roleService.insert(role);
return SUCCESS_TIP;
}
/**
* 角色修改
*/
@RequestMapping(value = "/edit")
@BussinessLog(value = "修改角色", key = "name", dict = RoleDict.class)
@Permission(Const.ADMIN_NAME)
@ResponseBody
public ResponseData edit(@Valid Role role, BindingResult result) {
if (result.hasErrors()) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
this.roleService.updateById(role);
//删除缓存
CacheUtil.removeAll(Cache.CONSTANT);
return SUCCESS_TIP;
}
/**
* 删除角色
*/
@RequestMapping(value = "/remove")
@BussinessLog(value = "删除角色", key = "roleId", dict = RoleDict.class)
@Permission(Const.ADMIN_NAME)
@ResponseBody
public ResponseData remove(@RequestParam Integer roleId) {
if (ToolUtil.isEmpty(roleId)) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
//不能删除超级管理员角色
if (roleId.equals(Const.ADMIN_ROLE_ID)) {
throw new ServiceException(BizExceptionEnum.CANT_DELETE_ADMIN);
}
//缓存被删除的角色名称
LogObjectHolder.me().set(ConstantFactory.me().getSingleRoleName(roleId));
this.roleService.delRoleById(roleId);
//删除缓存
CacheUtil.removeAll(Cache.CONSTANT);
return SUCCESS_TIP;
}
/**
* 查看角色
*/
@RequestMapping(value = "/view/{roleId}")
@ResponseBody
public ResponseData view(@PathVariable Integer roleId) {
if (ToolUtil.isEmpty(roleId)) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
this.roleService.selectById(roleId);
return SUCCESS_TIP;
}
/**
* 配置权限
*/
@RequestMapping("/setAuthority")
@BussinessLog(value = "配置权限", key = "roleId,ids", dict = RoleDict.class)
@Permission(Const.ADMIN_NAME)
@ResponseBody
public ResponseData setAuthority(@RequestParam("roleId") Integer roleId, @RequestParam("ids") String ids) {
if (ToolUtil.isOneEmpty(roleId)) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
}
this.roleService.setAuthority(roleId, ids);
return SUCCESS_TIP;
}
/**
* 获取角色列表
*/
@RequestMapping(value = "/roleTreeList")
@ResponseBody
public List<ZTreeNode> roleTreeList() {
List<ZTreeNode> roleTreeList = this.roleService.roleTreeList();
roleTreeList.add(ZTreeNode.createParent());
return roleTreeList;
}
/**
* 获取角色列表
*/
@RequestMapping(value = "/roleTreeListByUserId/{userId}")
@ResponseBody
public List<ZTreeNode> roleTreeListByUserId(@PathVariable Integer userId) {
User theUser = this.userService.selectById(userId);
String roleid = theUser.getRoleid();
if (ToolUtil.isEmpty(roleid)) {
return this.roleService.roleTreeList();
} else {
String[] strArray = roleid.split(",");
return this.roleService.roleTreeListByRoleId(strArray);
}
}
}
登录控制器:
/**
* 登录控制器
*/
@Controller
public class LoginController extends BaseController {
@Autowired
private IMenuService menuService;
@Autowired
private IUserService userService;
/**
* 跳转到主页
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(Model model) {
//获取菜单列表
List<Integer> roleList = ShiroKit.getUser().getRoleList();
if (roleList == null || roleList.size() == 0) {
ShiroKit.getSubject().logout();
model.addAttribute("tips", "该用户没有角色,无法登陆");
return "/login.html";
}
List<MenuNode> menus = menuService.getMenusByRoleIds(roleList);
List<MenuNode> titles = MenuNode.buildTitle(menus);
titles = ApiMenuFilter.build(titles);
model.addAttribute("titles", titles);
//获取用户头像
Integer id = ShiroKit.getUser().getId();
User user = userService.selectById(id);
String avatar = user.getAvatar();
model.addAttribute("avatar", avatar);
return "/index.html";
}
/**
* 跳转到登录页面
*/
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login() {
if (ShiroKit.isAuthenticated() || ShiroKit.getUser() != null) {
return REDIRECT + "/";
} else {
return "/login.html";
}
}
/**
* 点击登录执行的动作
*/
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginVali() {
String username = super.getPara("username").trim();
String password = super.getPara("password").trim();
String remember = super.getPara("remember");
//验证验证码是否正确
if (KaptchaUtil.getKaptchaOnOff()) {
String kaptcha = super.getPara("kaptcha").trim();
String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
if (ToolUtil.isEmpty(kaptcha) || !kaptcha.equalsIgnoreCase(code)) {
throw new InvalidKaptchaException();
}
}
Subject currentUser = ShiroKit.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password.toCharArray());
if ("on".equals(remember)) {
token.setRememberMe(true);
} else {
token.setRememberMe(false);
}
currentUser.login(token);
ShiroUser shiroUser = ShiroKit.getUser();
super.getSession().setAttribute("shiroUser", shiroUser);
super.getSession().setAttribute("username", shiroUser.getAccount());
LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp()));
ShiroKit.getSession().setAttribute("sessionFlag", true);
return REDIRECT + "/";
}
/**
* 退出登录
*/
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logOut() {
LogManager.me().executeLog(LogTaskFactory.exitLog(ShiroKit.getUser().getId(), getIp()));
ShiroKit.getSubject().logout();
deleteAllCookie();
return REDIRECT + "/login";
}
}
源码获取:俺的博客首页 "资源" 里下载!
更多推荐
所有评论(0)