package org.fkit.oa.identity.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.servlet.http.HttpSession;
import org.fkit.common.util.CommonContants;
import org.fkit.common.util.pager.PageModel;
import org.fkit.oa.identity.domain.Dept;
import org.fkit.oa.identity.domain.Module;
import org.fkit.oa.identity.domain.Popedom;
import org.fkit.oa.identity.domain.Role;
import org.fkit.oa.identity.domain.User;
import org.fkit.oa.identity.dto.UserModule;
import org.fkit.oa.identity.repository.DeptRepository;
import org.fkit.oa.identity.repository.JobRepository;
import org.fkit.oa.identity.repository.ModuleRepository;
import org.fkit.oa.identity.repository.PopedomRepository;
import org.fkit.oa.identity.repository.RoleRepository;
import org.fkit.oa.identity.repository.UserRepository;
import org.fkit.oa.identity.service.IdentityService;
import org.fkit.oa.identity.vo.TreeData;
import org.fkit.oa.util.OaContants;
import org.fkit.oa.util.OaException;
import org.fkit.oa.util.UserHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
//import org.fkjava.common.Repository.GeneratorRepository;
/**
* @author xlei
* @Email dlei0006@163.com
* @QQ 251425887
* @Tel 18665616520
* @Date 2017年1月14日上午9:39:25
* @From http://www.fkjava.org
* 系统管理的业务层实现类
*/
@Service("identityService") // 配置业务层的bean
//@Transactional(readOnly=false,rollbackFor=java.lang.RuntimeException.class)
@Transactional(readOnly=true)
public class IdentityServiceImpl implements IdentityService {
// session
/** 定义Repository对象 */
@Autowired // bytype
@Qualifier("deptRepository") // byName
private DeptRepository deptRepository;
@Autowired // bytype
@Qualifier("jobRepository") // byName
private JobRepository jobRepository;
@Autowired // bytype
@Qualifier("userRepository") // byName
private UserRepository userRepository;
@Autowired // bytype
@Qualifier("moduleRepository") // byName
private ModuleRepository moduleRepository;
@Autowired // bytype
@Qualifier("roleRepository") // byName
private RoleRepository roleRepository;
@Autowired // bytype
@Qualifier("popedomRepository") // byName
private PopedomRepository popedomRepository;
@Transactional(readOnly=true)
@Override
public List<Dept> getAllDepts(){
try {
List<Dept> depts = deptRepository.findAll();
// 取延迟加载的属性 ,会话此时并没有关闭
for(Dept dept : depts){
if(dept.getCreater()!=null)dept.getCreater().getName();
if(dept.getModifier()!=null)dept.getModifier().getName();
}
return depts;
} catch (Exception e) {
throw new OaException("查询部门失败了", e);
}
}
@Override
public Map<String , Object> login(Map<String, Object> params) {
Map<String , Object> result = new HashMap<>();
try {
/** 处理登录的业务逻辑 */
/** 1.参数非空校验 */
String userId = (String) params.get("userId");
String passWord = (String) params.get("passWord");
String vcode = (String) params.get("vcode");
HttpSession session = (HttpSession) params.get("session");
// userId!=null&&!userId.equals("")
if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(passWord)
|| StringUtils.isEmpty(vcode) ){
/** 参数有为空的 */
result.put("status", 0);
result.put("tip", "参数有为空的");
}else{
/** 参数不为空 */
/** 校验验证码是否正确
* 获取session中当前用户对应的验证码
* */
String sysCode = (String) session.getAttribute(CommonContants.VERIFY_SESSION);
if(vcode.equalsIgnoreCase(sysCode)){
/** 验证码正确了 */
/** 根据登录的用户名去查询用户: 判断登录名是否存在 */
User user = getUserById(userId);
if(user!=null){
/** 登录名存在 */
/** 判断密码 */
if(user.getPassWord().equals(passWord)){
/** 判断用户是否已经被激活了 */
if(user.getStatus() == 1){
/** 登录成功 */
/** 1.把登录成功的用户放入当前用户的session会话中 */
session.setAttribute(OaContants.USER_SESSION, user);
System.out.println("设置用户 ---------------->:" + user);
result.put("status",1);
result.put("tip", "登录成功");
/** 把登录成功的用户存入到UserHolder*/
UserHolder.addCurrentUser(user);
/** 2.当用户一登录进入系统的时候,就应该立即去查询该用户所拥有
的全部操作权限 --> 存入到当前用户的Session会话中 */
Map<String,List<String>> userAllOperasPopedomUrls = getUserAllOperasPopedomUrls();
session.setAttribute(OaContants.USER_ALL_OPERAS_POPEDOM_URLS, userAllOperasPopedomUrls);
}else{
result.put("status",5);
result.put("tip", "您的账号未被激活,请联系管理员激活!");
}
}else{
/** 密码错误 */
result.put("status", 2);
result.put("tip", "密码错误了");
}
}else{
/** 登录名不存在 */
result.put("status", 3);
result.put("tip", "没有该账户");
}
}else{
/** 验证码不正确 */
result.put("status", 4);
result.put("tip", "验证码不正确");
}
}
return result;
} catch (Exception e) {
throw new OaException("异步登录业务层抛出异常了", e);
}
}
private Map<String, List<String>> getUserAllOperasPopedomUrls() {
try {
/** 查询用户所拥有的所有操作权限编号
* */
List<String> userAllPopedomOperasCodes = popedomRepository.getUserPopedomOperasCodes(UserHolder.getCurrentUser().getUserId());
if(userAllPopedomOperasCodes!=null && userAllPopedomOperasCodes.size()>0 ){
Map<String, List<String>> userAllOperasPopedomUrls = new HashMap<>();
String moduleUrl = "" ;
List<String> moduleOperaUrls = null;
for(String operaCode : userAllPopedomOperasCodes){
/** 先得到模块的编号 */
String parentModuleCode = operaCode.substring(0, operaCode.length() - OaContants.CODE_LEN);
/** 父模块地址 */
moduleUrl = getModuleByCode(parentModuleCode).getUrl();
/** 判断map集合中是否已经存在该父模块地址 */
if(!userAllOperasPopedomUrls.containsKey(moduleUrl)){
moduleOperaUrls = new ArrayList<String>();
userAllOperasPopedomUrls.put(moduleUrl, moduleOperaUrls);
}
moduleOperaUrls.add(getModuleByCode(operaCode).getUrl());
}
return userAllOperasPopedomUrls;
}
return null;
} catch (Exception e) {
throw new OaException("登录查询用户的操作权限出现异常", e);
}
}
public User getUserById(String userId) {
try {
User user = userRepository.findById(userId).get();
if(user != null){
// 获取延迟加载的属性
if(user.getDept()!=null)user.getD
没有合适的资源?快使用搜索试试~ 我知道了~
疯狂SpringBoot2配套代码
共1661个文件
png:304个
jpg:260个
class:182个
5星 · 超过95%的资源 需积分: 10 23 下载量 39 浏览量
2018-07-07
10:19:31
上传
评论 1
收藏 16.42MB ZIP 举报
温馨提示
疯狂软件SpringBoot2配套资源,疯狂软件SpringBoot2配套资源,疯狂软件SpringBoot2配套资源
资源推荐
资源详情
资源评论
收起资源包目录
疯狂SpringBoot2配套代码 (1661个子文件)
IdentityServiceImpl.class 25KB
User.class 6KB
AppSecurityConfigurer.class 6KB
AppSecurityConfigurer.class 6KB
AppSecurityConfigurer.class 6KB
AppSecurityConfigurer.class 6KB
FileUploadController.class 6KB
ShcoolService.class 6KB
PagerTag.class 5KB
UserController.class 5KB
StudentController.class 5KB
RoleController.class 5KB
IdentityServiceImpl$1.class 4KB
VerifyAction.class 4KB
ShcoolService$2.class 4KB
ModuleController.class 4KB
UserRepository.class 4KB
StudentControllerTest.class 4KB
AppController.class 4KB
AppController.class 4KB
AppController.class 4KB
AppController.class 4KB
SchoolService.class 4KB
AppAuthenticationSuccessHandler.class 4KB
AppAuthenticationSuccessHandler.class 4KB
AppAuthenticationSuccessHandler.class 4KB
AppAuthenticationSuccessHandler.class 4KB
Role.class 4KB
PopedomInterceptor.class 4KB
StudentController.class 3KB
ArticleController.class 3KB
Dept.class 3KB
PopedomController.class 3KB
IdentityServiceImpl$2.class 3KB
IdentityServiceImpl$3.class 3KB
IdentityServiceImpl$4.class 3KB
ShcoolService.class 3KB
ThymeleafController.class 3KB
IdentityService.class 3KB
Module.class 3KB
Popedom.class 3KB
UserRepository.class 3KB
FKUser.class 3KB
Article.class 3KB
StudentController.class 3KB
ShcoolService$3.class 3KB
Student.class 3KB
Student.class 2KB
Student.class 2KB
StudentController.class 2KB
UserService.class 2KB
UserService.class 2KB
UserService.class 2KB
Book.class 2KB
LoginInterceptor.class 2KB
BookController.class 2KB
DeptController.class 2KB
UserController.class 2KB
UserController.class 2KB
UserController.class 2KB
FKUser.class 2KB
ShcoolService$1.class 2KB
FKUser.class 2KB
Book.class 2KB
Book.class 2KB
UserService.class 2KB
StudentService.class 2KB
InterceptorConfig.class 2KB
Clazz.class 2KB
Clazz.class 2KB
StudentController.class 2KB
LoginController.class 2KB
Clazz.class 2KB
Student.class 2KB
RequestController.class 2KB
IndexController.class 2KB
UserRepository.class 2KB
UserRepository$1.class 2KB
GlobalExceptionHandler.class 2KB
PageData.class 2KB
StudentRepository.class 2KB
UserRepository$1.class 2KB
User.class 2KB
Student.class 2KB
UserService.class 2KB
UserService.class 2KB
PopedomRepository.class 2KB
FKRole.class 2KB
LoginController.class 1KB
PageModel.class 1KB
SchoolService.class 1KB
BaseController.class 1KB
ArticleService.class 1KB
TestController.class 1KB
StudentServiceTest.class 1KB
ModuleRepository.class 1KB
Job.class 1KB
User.class 1KB
User.class 1KB
FKRole.class 1KB
共 1661 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17
资源评论
- greatsoftware2018-08-15已经下载并运行测试过,完整且可运行。 Spring Boot 2.0.0版本,表示层采用JSP,数据访问层采用Spring Data JPA框架。 部署时需要先使用sql脚本创建数据库,然后启动项目自动创建表结构和添加示例数据,最后本地运行url地址为:http://localhost:8080/oa/,注意有二级目录oa。
霸道流氓气质
- 粉丝: 1w+
- 资源: 589
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功