From 07075b5e71cb6cf2ca9cb9def57be92c5280378d Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Thu, 04 Jan 2018 15:58:09 +0800
Subject: [PATCH] 账户管理

---
 src/main/java/com/moral/service/impl/AccountServiceImpl.java      |   18 ++++++
 src/main/java/com/moral/service/impl/AuthUserServiceImpl.java     |   66 ++++++++++++++-------
 src/main/java/com/moral/service/OrganizationService.java          |    3 +
 src/main/java/com/moral/controller/OrganizationController.java    |   10 +++
 src/main/java/com/moral/common/aop/ControllerAOP.java             |   34 +++++------
 src/main/java/com/moral/common/bean/ResultBean.java               |    8 --
 src/main/java/com/moral/controller/AccountController.java         |    7 ++
 src/main/java/com/moral/service/impl/OrganizationServiceImpl.java |   13 ++++
 src/main/java/com/moral/entity/Account.java                       |    2 
 src/main/java/com/moral/service/AccountService.java               |    2 
 10 files changed, 116 insertions(+), 47 deletions(-)

diff --git a/src/main/java/com/moral/common/aop/ControllerAOP.java b/src/main/java/com/moral/common/aop/ControllerAOP.java
index 8c90a0b..1b6072d 100644
--- a/src/main/java/com/moral/common/aop/ControllerAOP.java
+++ b/src/main/java/com/moral/common/aop/ControllerAOP.java
@@ -52,29 +52,27 @@
 		Object target = pjp.getTarget();
 		Method currentMethod = target.getClass().getMethod(msig.getName(), msig.getParameterTypes());
 		Type type = currentMethod.getGenericReturnType();
-		String message = "";
+		String message = e.getMessage();
 		if (e instanceof BusinessException) {
-			message = e.getLocalizedMessage();
 		} else if (e instanceof ValidateException) {
-			message = e.getLocalizedMessage();
 		} else {
-			log.error(pjp.getSignature() + " error ", e);
-			message = e.toString();
+			log.error(pjp.getSignature() + " error: " + e.toString(), e);
 		}
-
 		if (type instanceof ParameterizedType) {
-			Type rawType = ((ParameterizedType) type).getRawType();
-			if (rawType == AppData.class) {
-				return new AppData(message,AppData.FAIL);
-			} else if (rawType == ResultBean.class) {
-				return new ResultBean(message,ResultBean.FAIL);
-			} else if (rawType == Map.class) {
-				Map<String, Object> resultMap = new HashMap<String, Object>();
-				resultMap.put("msg", message);
-				return resultMap;
-			}
+			type = ((ParameterizedType) type).getRawType();
 		}
-		return null;
-
+		if (type == AppData.class) {
+			return new AppData(message, AppData.FAIL);
+		} else if (type == ResultBean.class) {
+			return new ResultBean(e);
+		} else if (type == Map.class) {
+			Map<String, Object> resultMap = new HashMap<String, Object>();
+			resultMap.put("msg", message);
+			return resultMap;
+		} else if (type == Void.TYPE) {
+			return null;
+		} else {
+			return type.getClass().newInstance();
+		}
 	}
 }
diff --git a/src/main/java/com/moral/common/bean/ResultBean.java b/src/main/java/com/moral/common/bean/ResultBean.java
index 17e19e4..1e95aed 100644
--- a/src/main/java/com/moral/common/bean/ResultBean.java
+++ b/src/main/java/com/moral/common/bean/ResultBean.java
@@ -17,24 +17,20 @@
 	private T data;
 
 	public ResultBean() {
-		super();
-		this.message = "success";
-		this.code = SUCCESS;
 	}
 
 	public ResultBean(Throwable e) {
-		super();
 		this.message = e.toString();
 		this.code = FAIL;
 	}
 
 	public ResultBean(T data) {
-		this();
+		this.message = "success";
+		this.code = SUCCESS;
 		this.data = data;
 	}
 
 	public ResultBean(String message, int code) {
-		super();
 		this.message = message;
 		this.code = code;
 	}
diff --git a/src/main/java/com/moral/controller/AccountController.java b/src/main/java/com/moral/controller/AccountController.java
index a535963..3799f3d 100644
--- a/src/main/java/com/moral/controller/AccountController.java
+++ b/src/main/java/com/moral/controller/AccountController.java
@@ -9,6 +9,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -44,4 +45,10 @@
     	Integer result = accountService.deleteAccountsByLogic(ids);
     	return new ResultBean<Integer>(result);
     }
+
+    @GetMapping("{accountName}")
+    public ResultBean<Integer> getAccountCountByAccountName(@PathVariable("accountName") String accountName) {
+    	Integer result = accountService.getAccountCountByAccountName(accountName);
+        return new ResultBean<Integer>(result);
+    }
 }
diff --git a/src/main/java/com/moral/controller/OrganizationController.java b/src/main/java/com/moral/controller/OrganizationController.java
index 10fec6e..bfeae2d 100644
--- a/src/main/java/com/moral/controller/OrganizationController.java
+++ b/src/main/java/com/moral/controller/OrganizationController.java
@@ -5,6 +5,9 @@
 import com.moral.entity.Organization;
 import com.moral.service.OrganizationService;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
 import javax.annotation.Resource;
 
 @RestController
@@ -28,4 +31,11 @@
         ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
         return resultBean;
     }
+    
+    @GetMapping("list/{name}")
+	public ResultBean<List<Organization>> getOrganizationsByName(@PathVariable("name") String name) {
+		List<Organization> organizations = organizationService.getOrganizationsByName(name);
+		return new ResultBean<List<Organization>>(organizations);
+	}
+
 }
diff --git a/src/main/java/com/moral/entity/Account.java b/src/main/java/com/moral/entity/Account.java
index 935a924..bc31017 100644
--- a/src/main/java/com/moral/entity/Account.java
+++ b/src/main/java/com/moral/entity/Account.java
@@ -68,5 +68,7 @@
 	 * @mbggenerated  Thu Dec 07 16:17:21 CST 2017
 	 */
 	private Date expireTime;
+	
+	private Organization organization;
 
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/AccountService.java b/src/main/java/com/moral/service/AccountService.java
index e0ebbb5..c82b183 100644
--- a/src/main/java/com/moral/service/AccountService.java
+++ b/src/main/java/com/moral/service/AccountService.java
@@ -20,4 +20,6 @@
 
 	Integer deleteAccountsByLogic(List<Integer> ids);
 
+	Integer getAccountCountByAccountName(String accountName);
+
 }
diff --git a/src/main/java/com/moral/service/OrganizationService.java b/src/main/java/com/moral/service/OrganizationService.java
index b41561b..4a243d9 100644
--- a/src/main/java/com/moral/service/OrganizationService.java
+++ b/src/main/java/com/moral/service/OrganizationService.java
@@ -18,4 +18,7 @@
 	public void addOrModify(Organization organization);
 
 	public void deleteByIds(Integer... ids);
+	
+	List<Organization> getOrganizationsByName(String name);
+
 }
diff --git a/src/main/java/com/moral/service/impl/AccountServiceImpl.java b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
index 53cfd53..08c3f0c 100644
--- a/src/main/java/com/moral/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
@@ -26,7 +26,9 @@
 import com.moral.common.util.Crypto;
 import com.moral.common.util.ResourceUtil;
 import com.moral.entity.Account;
+import com.moral.entity.Organization;
 import com.moral.mapper.AccountMapper;
+import com.moral.mapper.OrganizationMapper;
 import com.moral.service.AccountService;
 import com.moral.service.OrganizationService;
 
@@ -42,6 +44,9 @@
 	@Resource
 	private OrganizationService organizationService;
 
+	@Resource
+	private OrganizationMapper organizationMapper;
+	
 	@Override
 	public Map<String, Object> screenLogin(Map<String, Object> parameters) {
 		Map<String, Object> result = new HashMap<String, Object>();
@@ -109,6 +114,12 @@
 		}
 		PageHelper.startPage(Integer.valueOf((String) parameters.get("pageIndex")), Integer.valueOf((String) parameters.get("pageSize")));
 		List<Account> accounts = accountMapper.selectByExample(example);
+		for (Account account : accounts) {
+			if (!ObjectUtils.isEmpty(account.getOrganizationId())) {
+				Organization organization = organizationMapper.selectByPrimaryKey(account.getOrganizationId());
+				account.setOrganization(organization);
+			}
+		}
 		return new PageBean<Account>(accounts);
 	}
 
@@ -135,4 +146,11 @@
 		return accountMapper.updateByExampleSelective(account, example);
 	}
 
+	@Override
+	public Integer getAccountCountByAccountName(String accountName) {
+		Account account = new Account();
+		account.setAccountName(accountName);
+		return accountMapper.selectCount(account);
+	}
+
 }
diff --git a/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java b/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java
index 9f37169..cac5f0f 100644
--- a/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java
@@ -1,38 +1,58 @@
 package com.moral.service.impl;
 
-import com.moral.entity.auth.AuthRole;
-import com.moral.entity.auth.AuthUser;
-//import com.moral.service.UserService;
-import org.springframework.beans.factory.annotation.Autowired;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
+import com.moral.common.util.RedisUtil;
+import com.moral.entity.Account;
+import com.moral.entity.OperateUser;
+import com.moral.mapper.AccountMapper;
+import com.moral.service.AccountService;
+import com.moral.service.OperateUserService;
 
 @Service
 public class AuthUserServiceImpl implements UserDetailsService {
 
-//    @Autowired
-//    private UserService userService;
+	@Resource
+	private AccountMapper accountMapper;
 
-    @Override
-    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
-//        AuthUser user = userService.findByUsername(username);
-        AuthUser user = null;
-        if(user == null){
-            throw new UsernameNotFoundException("������������"+ username + "������������");
-        }
-        Collection<SimpleGrantedAuthority> collection = new HashSet<SimpleGrantedAuthority>();
-        Iterator<AuthRole> iterator =  user.getList().iterator();
-        while (iterator.hasNext()){
-            collection.add(new SimpleGrantedAuthority(iterator.next().getRole_name()));
-        }
+	@Resource
+	private AccountService accountService;
 
-        return new org.springframework.security.core.userdetails.User(username, user.getPassword(), collection);
-    }
+	@Resource
+	private OperateUserService operateUserService;
+
+	@Resource
+	private RedisTemplate<String, String> redisTemplate;
+
+	@Override
+	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+		String type = RedisUtil.get(redisTemplate, "token_" + username), password;
+		Collection<SimpleGrantedAuthority> collection = new HashSet<SimpleGrantedAuthority>();
+		if ("screen".equals(type)) {
+			Account account = accountService.getAccountByAccountName(username);
+			password = account.getPassword();
+			List<Map<String, Object>> roleNames = accountMapper.getRoleNameByAccountId(account.getId());
+			for (Map<String, Object> roleName : roleNames) {
+				collection.add(new SimpleGrantedAuthority((String) roleName.get("role_name")));
+			}
+		} else {
+			OperateUser operateUser = operateUserService.getOperateUserByMobile(username);
+			password = operateUser.getPassword();
+			collection.add((new SimpleGrantedAuthority("ROLE_MOBILE")));
+		}
+		return new User(username, password, collection);
+	}
 }
diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index 4afe161..fc181d0 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -1,6 +1,7 @@
 package com.moral.service.impl;
 
 import com.github.pagehelper.PageHelper;
+import com.moral.common.bean.Constants;
 import com.moral.common.bean.PageBean;
 import com.moral.common.util.ExampleUtil;
 import com.moral.common.util.ValidateUtil;
@@ -12,6 +13,7 @@
 import com.moral.service.OrganizationService;
 import org.springframework.stereotype.Service;
 import tk.mybatis.mapper.entity.Example;
+import tk.mybatis.mapper.entity.Example.Criteria;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -99,4 +101,15 @@
 
 		}
 	}
+	
+	@Override
+	public List<Organization> getOrganizationsByName(String name) {
+		Example example = new Example(Organization.class);
+		Criteria criteria = example.createCriteria();
+		criteria.andLike("name", "%" + name + "%");
+		criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+		List<Organization> organizations = organizationMapper.selectByExample(example);
+		return organizations;
+	}
+
 }

--
Gitblit v1.8.0