Java tutorial
/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/ package com.kingen.service.account; import java.util.List; import java.util.Map; import org.activiti.engine.IdentityService; import org.activiti.engine.identity.UserQuery; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.shiro.SecurityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import com.google.common.collect.Maps; import com.kingen.aop.ServiceLogAnnotation; import com.kingen.bean.Menu; import com.kingen.bean.SysOrgMenu; import com.kingen.bean.User; import com.kingen.repository.account.MenuDao; import com.kingen.repository.account.UserDao; import com.kingen.service.CommonService; import com.kingen.util.BeanUtils; import com.kingen.util.Constants; import com.kingen.util.Digests; import com.kingen.util.Encodes; import com.kingen.util.Global; import com.kingen.util.Page; /** * ?. * */ // Spring Service Bean. @Component @Transactional public class AccountService extends CommonService<User, String> { public static final String HASH_ALGORITHM = "SHA-1"; public static final int HASH_INTERATIONS = 1024; private static final int SALT_SIZE = 8; private static Logger logger = LoggerFactory.getLogger(AccountService.class); @Autowired private UserDao userDao; @Autowired private MenuDao menuDao; @Transactional(readOnly = true) public User findUserByLoginName(String loginName) { return userDao.findByLoginName(loginName); } /** * ?Shiro?LoginName. */ private String getCurrentUserName() { User user = (User) SecurityUtils.getSubject().getPrincipal(); return user.getUsername(); } /** * ???salt?1024 sha-1 hash */ private void entryptPassword(User user) { byte[] salt = Digests.generateSalt(SALT_SIZE); user.setSalt(Encodes.encodeHex(salt)); byte[] hashPassword = Digests.sha1(user.getPassword().getBytes(), salt, HASH_INTERATIONS); user.setPassword(Encodes.encodeHex(hashPassword)); } /** * ? * @param user */ public void create(User user) { entryptPassword(user); userDao.save(user); } /** * * @param user */ public void update(User user) { userDao.update(user); } public void del(User u) { userDao.delete(u.getUserId()); } public void del(List<User> beanList) { if (!CollectionUtils.isEmpty(beanList)) { for (User user : beanList) { del(user); } } } public void updatePwd(User user) { entryptPassword(user); userDao.update(user); } public static void main(String[] a) { byte[] salt = Digests.generateSalt(SALT_SIZE); //logger.info("salt"+Encodes.encodeHex(salt)); byte[] hashPassword = Digests.sha1("321".getBytes(), Encodes.decodeHex("848c7f1e3c58ca09"), HASH_INTERATIONS); // String hashPassword = new SimpleHash("SHA-1", "321", ByteSource.Util.bytes( Encodes.decodeHex("848c7f1e3c58ca09")), HASH_INTERATIONS).toString(); logger.info("pwd " + Digests.encryptPassword("123", "8449a736b311440a")); // logger.info("pwd"+hashPassword); } /** * ?ehcache * @return */ @Cacheable(value = "sysCache") public List<Menu> findAllMenus() { return menuDao.find(); } public Page<User> getUsers(Page<User> page, User user) { Page<User> p = userDao.findUsers(page, user); return p; } public List<SysOrgMenu> findMenusBy(String orgId) { String hql = "from SysOrgMenu where id.orgId=:orgId"; Map<String, Object> paramter = Maps.newHashMap(); paramter.put("orgId", orgId); return menuDao.findme(hql, paramter); } @ServiceLogAnnotation(action = "?") public void saveUser(User data, String[] funidvalue, Boolean synToActiviti) throws Exception { if (data != null) { User u = userDao.findByUserid(data.getUserId());// if (u != null) { throw new Exception("???"); } else { entryptPassword(data); data.setStatus(Constants.UserStatusEnum.Active.getIndex());//? userDao.save(data); // ??Activiti Identify? if (synToActiviti) { UserQuery userQuery = identityService.createUserQuery(); List<org.activiti.engine.identity.User> activitiUsers = userQuery.userId(data.getUserId()) .list(); saveActivitiUser(data); } } } } @ServiceLogAnnotation(action = "") public void updateUser(User data, String[] funidvalue, Boolean synToActiviti) { User t = userDao.findByUserid(data.getUserId()); BeanUtils.copyNotNullProperties(data, t, new String[] { "password" });//???? update(t); // ??Activiti Identify? if (synToActiviti) { saveActivitiUser(t); } } public User one(User user) { return userDao.findByUserid(user.getUserId()); } public List<Menu> findMenuByuserId(String userIdString) { List<Menu> menus = menuDao.findMenusBy(userIdString); return menus; } /** * ?? * @param userIds * @param status */ @ServiceLogAnnotation(action = "?") public void updateUser(List<String> userIds, String status) { Assert.notEmpty(userIds, "ID?"); for (String id : userIds) { User t = userDao.findByUserid(id); t.setStatus(status); update(t); } } @ServiceLogAnnotation(action = "??") public void updateUsersPwd(List<String> userIds) { Assert.notEmpty(userIds, "ID?"); for (String id : userIds) { User t = userDao.findByUserid(id); t.setPassword(Global.getConfig("initialPwd"));//?? updatePwd(t); } } public void delThem(List<String> userIds, Boolean synToActiviti) { Assert.notEmpty(userIds, "ID?"); for (String id : userIds) { userDao.delete(id); if (synToActiviti) { // ?Activiti User,membership? identityService.deleteUser(id); } } } public void testException() throws Exception { throw new Exception("test"); } //? @Autowired protected IdentityService identityService; /** * / Activiti {@link org.activiti.engine.identity.User} * @param user , {@link User} */ //private ?? private void saveActivitiUser(User user) { org.activiti.engine.identity.User activitiUser = identityService.createUserQuery().userId(user.getUserId()) .singleResult(); if (activitiUser == null) { activitiUser = identityService.newUser(user.getUserId()); } activitiUser.setFirstName(user.getUsername()); activitiUser.setLastName(user.getUsername()); activitiUser.setEmail(""); activitiUser.setPassword(user.getPassword()); identityService.saveUser(activitiUser); logger.info("add activiti user: {}" + ToStringBuilder.reflectionToString(activitiUser)); } }