运行环境:jdk1.8、tomcat7.0/8.5、Mysql5.7/5.1、Maven3.6/3.5、 eclipse/STS
功能简介:计划进度、设备管理、工艺监控、物料监控、质量监控、人员监控等
用户信息服务:
public class UserRealm extends AuthorizingRealm {
@Autowired
private AccountDao accountDao;
/**
* 授权
* @param principalCollection
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
//利用登录用户的信息查询当前用户的角色
Set<String> roles = new HashSet<>();
String principal = (String) principalCollection.getPrimaryPrincipal();
String role = accountDao.getAccountDTOById(principal).getRoleName();
roles.add(role);
//创建SimpleAuthioriticationInfo 并设置reles属性
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles);
return info;
}
/**
* 登录
* @param authenticationToken
* @return
* @throws AuthenticationException
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
//获取输入的账号
String userId = (String) authenticationToken.getPrincipal();
//获取密码
//String password = (String) authenticationToken.getCredentials();
//根据账号查询数据库,如果查不到就认为账号不正确,返回null
Account user = accountDao.getAccountById(userId);
//判断账户是否存在
if(null != user){
//判断账户状态
if(user.getUserStatus()==0){ //status为0 代表停用
throw new LockedAccountException() ;
}
//交由shiro判断,是否与用户输入的匹配
return new SimpleAuthenticationInfo(user.getUserId(),user.getPassword(),getName());
}
else
return null;
}
}
组织机构控制器:
/**
* 组织机构控制器
*/
@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
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";
}
}