源码获取:博客首页 "资源" 里下载!
项目介绍
本项目分为管理员与游客两种角色,
超级管理员角色包含以下功能:
管理员登录,借还管理,资产添加,资产总览,借还报表,用户管理,角色管理,权限管理,资源类型,网点管理等功能。
游客角色包含以下功能:
游客首页-广告页等功能。
PS:左上角WEB控制台点击进去管理页面,需要注意的是,管理员可以在后台添加无数个角色和权限,所以这个不是一个单角色的系统。
环境需要
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版本;
6.是否Maven项目:是;
技术栈
1. 后端:springboot, mybatis, shiro
2. 前端:HTML+CSS+JavaScript+VUE
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config/application.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入http://localhost:8080/ 登录
管理员账号/密码:admin/123456
组织机构控制器:
/**
* 组织机构控制器
*/
@Controller
@RequestMapping("/organization")
public class OrgController {
@Autowired
private OrganizationService organizationService;
/**
* 根据条件动态查询组织,数据加载到表格
*/
@PostMapping("/list")
public String listOrganizationByLevel(Organization example, ModelMap map){
List<Organization> list = organizationService.listOrganizationByExample(example);
int sublevel = example.getOrgLevel();
map.put("dtoList",list);
String pageName = null;
switch (sublevel) { //根据参数确定返回页面目标
case 1: pageName= "friDepartments" ;break;
case 2: pageName= "secDepartments" ;break;
case 3: pageName= "macAddress" ;break;
}
return pageName+"::table-refresh";
}
/**
* 根据条件动态查询子级组织
*/
@PostMapping("/sub/list")
@ResponseBody
public List listOrganization(Organization example){
List<Organization> list = organizationService.listOrganizationByExample(example);
return list;
}
/**
* 根据一级部门和二级部门id查询物理位置
*/
@PostMapping("/macAddress/list")
public String listMacaddress(String fristId,String secondId,ModelMap map){
List<Organization> list = organizationService.listMacaddressByRootID(fristId,secondId);
map.put("dtoList",list);
return "macAddress::table-refresh";
}
/**
* 添加组织
* @param organization
* @return
*/
@PostMapping
@ResponseBody
public int addOrganization(Organization organization){
return organizationService.insertOrganization(organization);
}
/**
* 删除组织
* @param orgId
* @return
*/
@DeleteMapping("/{orgId}")
@ResponseBody
public int delteOrganizationByid(@PathVariable("orgId") String orgId){
return organizationService.deleteOrganizationById(orgId);
}
/**
* 修改组织名称
* @param organization
* @return
*/
@PutMapping
@ResponseBody
public int updateDeviceType(Organization organization){
return organizationService.updateOrganizationName(organization);
}
/**
* 获取组织树
* @return
*/
@GetMapping("/tree")
@ResponseBody
public OrganizationDTO getOrganizationTree(){
return organizationService.getOrgTree();
}
}
账户管理控制层:
@Controller
@RequestMapping("/account")
public class AccountController {
//自动注入服务类
@Autowired
private AccountService accountService;
/**
* 管理员账户信息
* @return
*/
@GetMapping("/admins")
public String listAdmins(ModelMap map){
List<AccountDTO> adminList = accountService.listAccountByLevel(2);
List<AccountDTO> superAdminList = accountService.listAccountByLevel(1);
adminList.addAll(superAdminList);
map.put("adminsList", adminList);
return "system::table-refresh";
}
/**
* 获取所有账户信息
* @param map
* @return
*/
@GetMapping("/list")
public String listAccounts(ModelMap map){
List<AccountDTO> accountList = accountService.listAccount();
map.put("accountDTOList", accountList);
return "account::table-refresh";
}
/**
* 通过用户名称搜索用户
* @param map
* @param userName
* @return
*/
@GetMapping("/list/{userName}")
public String listAccountsByUserName(ModelMap map,@PathVariable("userName")String userName){
List<AccountDTO> accountList = accountService.listAccountByName(userName);
map.put("accountDTOList", accountList);
return "account::table-refresh";
}
/**
* 添加管理员页面
* @param map
* @return
*/
@GetMapping("/users")
public String listUsers(ModelMap map){
List<AccountDTO> accountList = accountService.listAccountByLevel(3);
map.put("usersDTOList", accountList);
return "system::list-refresh";
}
/**
* 获取设备使用人信息
* @param map
* @param devId
* @return
*/
@GetMapping("/ownerList")
public String getOwnerList(ModelMap map, String devId){
Map resMap = accountService.listOwenrByDevId(devId);
map.put("ownerMap", resMap);
return "allotDevice::list-refresh";
}
/**
* 添加账户
* @param account
* @return
*/
@PostMapping
@ResponseBody
public int addAccount(Account account){
return accountService.addAccount(account);
}
/**
* 根据uuid删除账户
* @param uuid
* @return
*/
@DeleteMapping("/{uuid}")
@ResponseBody
public int deleteAccount(@PathVariable("uuid")String uuid){
return accountService.deleteAccountById(uuid);
}
/**
* 修改账户密码
* @param uuid
* @param password
* @return
*/
@PutMapping("/password")
@ResponseBody
public int updatePassword(String uuid, String password){
return accountService.updatePasswordByid(uuid,password);
}
/**
* 修改账户状态
* @param uuid
* @param status
* @return
*/
@PutMapping("/status")
@ResponseBody
public int updateStatus(String uuid,int status){
return accountService.updateStatusByid(uuid,status);
}
/**
* 更改管理员
* @return
*/
@PutMapping("/admins")
@ResponseBody
public int updateDevOwner(HttpServletRequest request){
String[] groups = request.getParameter("groups").split(",");
int level = Integer.parseInt(request.getParameter("level"));
return accountService.updateAccountLevel(level,groups);
};
}
登录控制层:
@Controller
public class LoginController {
@RequestMapping("/login")
public String login(HttpServletRequest request, Model mv) {
String e = (String) request.getAttribute("shiroLoginFailure");
if (e != null) {
if (e.contains("org.apache.shiro.authc.UnknownAccountException")) {
mv.addAttribute("msg", "账号不存在");
} else if (e.contains("org.apache.shiro.authc.IncorrectCredentialsException")) {
mv.addAttribute("msg", "密码错误");
} else if (e.contains("org.apache.shiro.authc.LockedAccountException")) {
mv.addAttribute("msg", "账户已停用");
}
}
return "login";
}
}
源码获取:博客首页 "资源" 里下载!